Started from merged PR #185, origin/main revision d2724f0, on September 21,
[4.12.0,5.0.0).
Verification uses the exact 4.12 bundles pinned by the Eclipse 2026-09 target.
The upper bound is a compatibility boundary, not a claim that every future
Mylyn 4.x release has been tested.TasksUi.getTaskActivityManager() replaces internal access in the
content provider and workweek view. Task icons delegate to the public
TaskElementLabelProvider rather than a copied implementation importing
internal category and connector classes. IRepositoryQuery replaces the
concrete internal query type. The model’s Project class no longer imports
an internal type solely for documentation.local-<UUID> repository identity format is unchanged and now
defined by Timekeeper rather than an internal Mylyn constant.Reviewed the source bundles actually selected by the target:
org.eclipse.mylyn.tasks.core.source/4.12.0.v20260826-1729 and
org.eclipse.mylyn.tasks.ui.source/4.12.0.v20260721-0835.
| Boundary | Retained internal dependency | Reason |
|---|---|---|
TimekeeperPlugin project grouping |
AbstractTask, AbstractTaskContainer |
Public ITask/ITaskContainer expose no parent-container enumeration. The entry point now accepts ITask and checks the concrete type. |
Task project association |
AbstractTask, AbstractTaskCategory, AbstractTaskContainer |
Category membership and parent enumeration still require internal types. Query detection now uses public IRepositoryQuery. |
WorkWeekView task-list changes |
TasksUiPlugin.getTaskList(), ITaskListChangeListener, TaskContainerDelta |
Public TasksUi/IRepositoryModel do not expose a task-list change subscription. Activation subscriptions use the public API. |
| Synthetic tests only | LocalTask, TaskCategory, TaskList, associated abstract types |
Construct and delete local fixtures without contacting a task server. |
These are explicit compatibility boundaries to recheck on future Mylyn upgrades,
not evidence that internal APIs are supported contracts. No internal Mylyn imports
remain in the title/time label providers, week content provider or Project.
Task and Project model types.
The old ITask/String checks left their daily totals blank.Clean source-copy build on macOS 27.0/aarch64, Temurin 21.0.12.1, Maven 3.9.16:
mvn -B -ntp clean verify -Dtycho.localArtifacts=ignore
The local command used an empty temporary Maven settings file to exclude unrelated private repositories. No tests were disabled or skipped through build flags. The normal dependency cache was retained; IDE output and local classpath changes were not copied into the test checkout.
Local evidence: /private/tmp/timekeeper-mylyn-3.log and reports under
/private/tmp/timekeeper-mylyn.WUttZ3/. Temporary evidence may be removed by the OS.
Addressed Copilot’s review comment
by capturing the viewer’s display during inputChanged on the UI thread.
Database notification threads now only read that published display reference and
queue work; all viewer/control access happens inside the UI callback. Provider
disposal clears the reference, queued callbacks recheck disposal, and a display
shutdown while scheduling is ignored only for SWT.ERROR_DEVICE_DISPOSED.
Three synthetic regression tests cover a normal background notification and notifications queued before or delivered after control/provider disposal. The test viewer rejects off-UI-thread access. Disposal tests hold the UI thread until the background notification is queued, making their ordering deterministic. All three tests fail against the original provider due to background viewer access and pass with the fix. The full fixed-source reactor passes with 4 database/report tests and 7 UI tests passing; the existing CSV-export test remains ignored. No personal database is used.
Local evidence: /private/tmp/timekeeper-review.log (passing fixed build),
/private/tmp/timekeeper-review-before.log (expected regression failures), and
the isolated source copy at /private/tmp/timekeeper-review.J6mERX/.
This is not a release-readiness or data-migration sign-off. Existing databases, labels, import/export and restart remain step 4/5 work. The old manual-edit UI test remains inactive. Remote Bugzilla/JIRA/GitHub repositories and category reassignment have not been exercised against live connectors.
The test runtime still reports missing theme/Cocoa menu contributions and Mylyn’s
CommonColors shutdown Invalid thread access error, as recorded before this
step. No new Timekeeper event-loop exception appeared in the successful run.
Clean installed-IDE verification remains necessary; these harness errors are not
hidden by the passing test count. The site POM change received from origin also
produces an additionalFileSets unknown-parameter warning; it was preserved for
the release-packaging review rather than silently reverted.