- v1 mirror for rev-39 tag drill-down + tag rename (close named v1 parity gap)Rev 39 shipped the cross-entity tag drill-down + admin-only tag rename/merge as dashboard-only routes. The rev-39 next sprint focus explicitly named 'mirroring them onto the v1 surface is the natural pre-MCP-server step.' Rev 40 closes that gap with two new bearer-auth endpoints โ GET /api/v1/workspace/tag-search?tag=โฆ&limit=25 and POST /api/v1/workspace/tags/rename โ that delegate to the same getTagDrillDown() and renameWorkspaceTag() helpers the dashboard uses. The MCP server's tag-drill-down + tag-consolidation tooling now needs no custom bridge code. Indexed in the /api/v1 self-describing endpoint list.
- Per-task activity timeline (close named rev-38 candidate)Rev 12 surfaced the per-task work log; the rev-21 activity log filter chips + rev-38 keyword search could be scoped to a single task โ the rev-38 running state explicitly named 'per-task activity log scope' as a rev-40+ candidate. Rev 40 ships it. New TaskTimeline client component mounts alongside the existing rev-12 TaskWorkLog button on every active-work card; tap 'Timeline' to see a unified, timestamp-sorted list of every event that touched this task: creation, AI cycles (workLog), operator notes (rev 14), comments (rev 26), and recent workspace activity log entries that mention the task. Per-kind filter chips with counts (All / AI cycle / Operator / Comment / Activity). Each row is colour-tinted by kind (matching the rev-35 activity log glyph palette). Pure derived state โ no schema change. New endpoint GET /api/tasks/:id/timeline?limit=80 (viewer+ auth). Operators debugging a single task no longer have to triangulate across three surfaces; the answer to 'what did the desk and the team do on this one task' is one tap away.
- Workspace JSON import (companion to rev-6 export)Rev 6 shipped the workspace JSON export but the only way to act on the file was to parse it manually or restore from a database backup. Rev 40 closes the loop with an admin-only POST /api/workspace/import endpoint that appends memory entries, signals, and sources from a prior export onto the current workspace. Tasks, outputs, runs, and activity are deliberately not imported (they reference internal IDs โ parentArtifactId, blockedByTaskIds, sourceSignalIds โ that don't cross workspaces; if an operator needs that level of restoration, a database backup is the right tool). Per-category checkbox picker. Caps at 500 memory + 500 signals + 50 sources per call. Source state-bearing config keys (failureCount, seenGuids, lastError, etc.) are stripped on import โ only the recipe carries over. UI mounted in the integrations panel beside the existing JSON / activity-CSV / outputs-CSV exports. Operators can now restore from accidental bulk-deletes (rev 34 added memory bulk delete; rev 22 added signal bulk delete; rev 33 added signal bulk delete; rev 36 added source bulk delete โ all four delete surfaces now have a recovery path).
- Source URL preview v1 mirror (close rev-38 v1 surface gap)Rev 38 shipped POST /api/sources/preview as a dashboard-only synchronous feed validator. Rev 40 mirrors it as POST /api/v1/sources/preview (bearer-auth, same shape) so an MCP host or any bearer-auth integration can validate a feed URL before issuing the create call. Pairs with the rev-13 v1 source create endpoint to close the 'create-time validation' loop on the v1 surface. The MCP server's source-onboarding tool now has nothing left to design โ every dashboard primitive in the source-add flow has a v1 equivalent.
- Visual polish โ task timeline accent strip, slower pin pulse, tag chip hoverThe new TaskTimeline panel uses per-kind left-border accents (brand-color for AI cycle, amber for operator notes, purple for comments, neutral for activity, green for created) so the eye scans timeline entries by event type without reading every meta line. The rev-23 pinned-task pulse animation slowed from 2.4s โ 3.2s so the indicator reads as ambient state rather than urgency on workspaces with many pinned items. Rev-39 tag manager chips lift 1px on hover with a 140ms transition for a tactile click affordance. Cumulative micro-polish โ every rev 22+ has carried one.