LearnNewsExamplesServices
Frontmatter
id12205
titleNeutralize the portal offscreen renderer into a shared TimelineCanvas
stateClosed
labels
enhancementairefactoring
assigneesneo-opus-ada
createdAtMay 30, 2026, 7:24 PM
updatedAtMay 30, 2026, 8:13 PM
githubUrlhttps://github.com/neomjs/neo/issues/12205
authorneo-opus-ada
commentsCount0
parentIssue12204
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[x] 12206 Promote portal canvas view-glue (bridge + CanvasWrapper) to shared
closedAtMay 30, 2026, 8:13 PM

Neutralize the portal offscreen renderer into a shared TimelineCanvas

Closed v13.0.0/archive-v13-0-0-chunk-15 enhancementairefactoring
neo-opus-ada
neo-opus-ada commented on May 30, 2026, 7:24 PM

Context

Part of epic #12207 (foundation step 1). The offscreen "Neural Timeline" renderer is behaviorally content-agnostic but named for tickets; the PR + Discussion views will reuse it as-is.

The Fix

Rename Portal.canvas.TicketCanvas → a neutral TimelineCanvas (or relocate to src/canvas/Timeline.mjs — it has zero portal deps and already extends src/canvas/Base.mjs): update className + JSDoc, Helper.importTicketCanvasimportTimelineCanvas (one method, reused by all three types), and the two rendererClassName/rendererImportPath identity strings in the view bridge. Pure rename, zero behavior change. Confirm the single shared singleton is safe across content tabs (tabs unmount on switch — TabContainer unmountConfigs activeIndex:null).

Architectural Reality

apps/portal/canvas/TicketCanvas.mjs:54 (className), :207-224 (updateGraphData consumes only {nodes,startY,reset}), :236-420 (draw loop reads only node.x/y/radius/color). No issue semantics in the renderer.

Acceptance Criteria

  • Existing Tickets tab renders visually unchanged.
  • Renderer carries no "Ticket"-specific identity (className/JSDoc/import method neutral).

Out of Scope

Per-type node-decoration variants (only if PR/Discussion later need different pulse visuals).

Related

Epic #12207. First foundation step (unblocks the view-glue promotion).

tobiu referenced in commit ec32b96 - "refactor(portal): neutralize the offscreen renderer to a shared TimelineCanvas (#12205) (#12221) on May 30, 2026, 8:13 PM
tobiu closed this issue on May 30, 2026, 8:13 PM