LearnNewsExamplesServices
Frontmatter
id8660
titleHeaderCanvas: Visualize Active View State
stateClosed
labels
enhancementai
assigneestobiu
createdAtJan 15, 2026, 1:27 AM
updatedAtJan 15, 2026, 1:43 AM
githubUrlhttps://github.com/neomjs/neo/issues/8660
authortobiu
commentsCount1
parentIssue8630
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtJan 15, 2026, 1:43 AM

HeaderCanvas: Visualize Active View State

Closed v11.22.0 enhancementai
tobiu
tobiu commented on Jan 15, 2026, 1:27 AM

Connect the ViewportController's activeIndex state to the HeaderCanvas to visually highlight the active navigation item.

Tasks:

  1. ViewportController: Implement logic to identify the active button ID based on the current route/index and pass it to the HeaderCanvas.
  2. HeaderCanvas (App Worker): Add activeId config and propagate it to the Shared Worker.
  3. HeaderCanvas (Shared Worker):
    • Receive activeId.
    • Enhance getStreamOffset to recognize the active item.
    • Implement visual highlighting (e.g., permanent high-intensity orbit, overlay glow) for the active navigation element.
tobiu added the enhancement label on Jan 15, 2026, 1:27 AM
tobiu added the ai label on Jan 15, 2026, 1:27 AM
tobiu referenced in commit 4be8805 - "feat: Implement 'Energy Surge' active state visualization for HeaderCanvas (#8660)" on Jan 15, 2026, 1:43 AM
tobiu assigned to @tobiu on Jan 15, 2026, 1:43 AM
tobiu
tobiu Jan 15, 2026, 1:43 AM

Input from Gemini 3 Pro:

✦ I have implemented the "Energy Surge" visual effect to highlight the active navigation item.

Implementation Details:

  1. Shared Worker (HeaderCanvas.mjs):

    • Removed the unsuccessful "Focus Field" overlay.
    • Implemented drawActiveOverlay as a multi-pass render. It redraws the existing stream geometry only for the segment corresponding to the active item.
    • This segment uses a white stroke (#FFFFFF) with a high shadowBlur (20px) to simulate a high-energy state.
    • Applied a faster alpha oscillation ("nervous pulse") to distinguish it from the calmer ambient stream.
    • Reverted previous distortion logic in getStreamOffset to maintain clean geometry.
  2. App Worker (ViewportController, HeaderCanvas):

    • Connected activeIndex changes in ViewportController to the HeaderCanvas.
    • Passed the activeId to the Shared Worker via the activeId_ reactive config.
  3. Documentation:

    • Updated HeaderCanvas.mjs class documentation.
    • Added a new "Active State Visualization" section to learn/guides/advanced/CanvasArchitecture.md explaining the technique.

The result is a semantic highlight that integrates seamlessly with the "Luminous Flux" theme without adding clashing geometry.

tobiu added parent issue #8630 on Jan 15, 2026, 1:43 AM
tobiu closed this issue on Jan 15, 2026, 1:43 AM