Frontmatter
| id | 8948 |
| title | Epic: Dynamic Worker Architecture & Import Protocol |
| state | Closed |
| labels | epicdeveloper-experienceaiarchitecture |
| assignees | tobiu |
| createdAt | Feb 2, 2026, 2:59 PM |
| updatedAt | Feb 2, 2026, 11:54 PM |
| githubUrl | https://github.com/neomjs/neo/issues/8948 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | null |
| subIssues | 8949 Feat: `Manager.startWorker` Remote Method 8950 Refactor: Move `loadModule` to `Neo.worker.Base` 8951 Feat: Smart Initialization for SparklineComponent 8952 Bug: Dynamic Worker Start triggers Double App Init & Canvas Race Condition 8953 Feat: Optional Canvas Worker Entry Point (`useCanvasWorkerStartingPoint`) 8954 Feat: Generic Sparkline Component & Grid Column 8955 Feat: Migrate Sparkline Renderer to `src/canvas` & Enforce Defaults |
| subIssuesCompleted | 7 |
| subIssuesTotal | 7 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Feb 2, 2026, 11:54 PM |
Epic: Dynamic Worker Architecture & Import Protocol
tobiu added sub-issue #8949 on Feb 2, 2026, 3:00 PM
tobiu added sub-issue #8950 on Feb 2, 2026, 3:00 PM
tobiu added sub-issue #8951 on Feb 2, 2026, 3:01 PM
tobiu assigned to @tobiu on Feb 2, 2026, 3:29 PM
tobiu added sub-issue #8952 on Feb 2, 2026, 10:31 PM
tobiu cross-referenced by #8952 on Feb 2, 2026, 10:39 PM
tobiu added sub-issue #8953 on Feb 2, 2026, 10:50 PM
tobiu added sub-issue #8954 on Feb 2, 2026, 11:39 PM
tobiu added sub-issue #8955 on Feb 2, 2026, 11:54 PM

tobiu
Feb 2, 2026, 11:54 PM
Input from Gemini 3 Pro:
✦ I have successfully completed the Dynamic Worker Architecture & Import Protocol epic.
Achievements:
- Dynamic Worker Orchestration: Implemented
Neo.worker.Manager.startWorker(#8949) to allow on-demand spawning of workers (e.g., 'canvas') from the main thread.- Protocol Standardization: Centralized module loading in
Neo.worker.Base(#8950), enabling any worker to dynamically import scripts.- Zero-Config Components: Created
Neo.component.Sparkline(#8954) andNeo.canvas.Sparkline(#8955) as a fully autonomous pair. The component orchestrates the worker start, module load, and renderer registration automatically.- Grid Integration: Delivered
Neo.grid.column.Sparklinefor seamless usage in data grids.- Robustness: Solved race conditions (#8952) and made the canvas worker entry point optional (#8953), ensuring existing apps remain stable while new features are "opt-in".
Outcome: Developers can now simply use
{type: 'sparkline', dataField: '...'}in a grid column, and the framework handles the entire multi-threaded complexity (starting the worker, loading the renderer, syncing state) transparently. This significantly improves the Developer Experience (DX) for advanced visualizations.
tobiu closed this issue on Feb 2, 2026, 11:54 PM
tobiu cross-referenced by #8930 on Feb 3, 2026, 12:03 AM
This epic covers the implementation of a "Dynamic Import Protocol" and "Auto-Initializing Workers" to significantly improve the Developer Experience (DX) for worker-based components (like
Sparkline,Canvas).Goal: Enable developers to drop in advanced, worker-backed components without requiring manual configuration (
useCanvasWorker: true) or boilerplate code (canvas.mjs).Strategy:
Neo.worker.Manager) will expose a method to start workers (e.g., 'canvas') dynamically if they are not already running.Neo.worker.Baseclass will expose aloadModulemethod, allowing any worker to import scripts (renderers) at runtime.Roadmap:
Manager.startWorker: Implement the main thread logic to spawn workers on demand.worker.Base.loadModule: Centralize module loading logic in the base worker class.SparklineComponent(as a PoC) to auto-initialize its environment.Neo.grid.column.Sparklinethat wraps this logic for easy grid integration.