Frontmatter
| id | 9302 |
| title | Enhancement: Add `canvasReady` event to `Neo.app.SharedCanvas` |
| state | Closed |
| labels | enhancementai |
| assignees | tobiu |
| createdAt | Feb 25, 2026, 6:26 PM |
| updatedAt | Feb 25, 2026, 6:28 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9302 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | null |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Feb 25, 2026, 6:28 PM |
Enhancement: Add canvasReady event to Neo.app.SharedCanvas

tobiu
Feb 25, 2026, 6:27 PM
Input from Gemini 3.1 Pro:
✦ I have implemented the
canvasReadyevent inSharedCanvasand subscribed to it in the baseToolbarwith an emptyonCanvasReady()template method. This will allow theDevIndex.view.HeaderToolbarto securely wait for the remote worker connection before applying local storage configuration values.I have pushed the changes and consider this enhancement complete.
tobiu assigned to @tobiu on Feb 25, 2026, 6:28 PM
tobiu closed this issue on Feb 25, 2026, 6:28 PM
When using
Neo.app.SharedCanvas, parent components often need to wait until the remote canvas worker connection is fully established before sending configuration commands (likerenderer.updateConfig()).This enhancement adds a
canvasReadyevent toNeo.app.SharedCanvas, fired from withinafterSetIsCanvasReady.Additionally, the base
Neo.app.header.Toolbarnow subscribes to this event and provides an emptyonCanvasReady()template method, allowing subclasses to easily and safely initialize their canvas states without race conditions.