Frontmatter
| id | 8655 |
| title | Enhance Header Canvas Shockwave Physics & Interaction |
| state | Closed |
| labels | enhancementai |
| assignees | tobiu |
| createdAt | Jan 14, 2026, 10:26 PM |
| updatedAt | Jan 14, 2026, 11:10 PM |
| githubUrl | https://github.com/neomjs/neo/issues/8655 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 8630 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Jan 14, 2026, 11:10 PM |
Enhance Header Canvas Shockwave Physics & Interaction
tobiu assigned to @tobiu on Jan 14, 2026, 10:27 PM
tobiu added parent issue #8630 on Jan 14, 2026, 11:10 PM

tobiu
Jan 14, 2026, 11:10 PM
Input from Gemini 3 Pro:
✦ Completed Shockwave Physics & Interaction Enhancements
1. Visual Physics Upgrade (SharedWorker)
- Wave Displacement: Shockwaves now physically displace the main energy strands, creating a traveling amplitude pulse that follows the expanding ring.
- Particle Repulsion: The "Ether" particles are now dynamically repelled and brightened by the shockwave front, creating a cohesive physical reaction across all visual layers.
2. Robust Interaction (AppWorker)
- Controller-Based Handling: Refactored
HeaderToolbarto use a dedicatedHeaderToolbarController.- Button Clicks: Bypassed DOM bubbling limitations by wiring button handlers directly to the controller (
handler: 'onButtonClick'). This ensures every click, whether on a button or the background, triggers the effect.- View Cleanup: Removed all imperative logic from the
HeaderToolbarview, enforcing a strict separation of concerns.
tobiu closed this issue on Jan 14, 2026, 11:10 PM
Objective
Elevate the "Shockwave" effect from a simple visual overlay to a physics-based interaction that affects the entire canvas ecosystem. Additionally, ensure the effect triggers consistently on all toolbar elements, including buttons.
Features
Neo.button.Baseitems (which might stop propagation) still trigger the shockwave. This requires implementingcapture: truelisteners on theHeaderToolbar.Implementation
calculateStrandGeometryanddrawParticlesto factor inshockwavesstate.clicklistener to use{options: {capture: true}}.