Frontmatter
| id | 9313 |
| title | Header Canvas: Fix layout syncing on mobile and dynamic item sizing |
| state | Closed |
| labels | bugai |
| assignees | tobiu |
| createdAt | Feb 26, 2026, 5:16 PM |
| updatedAt | Feb 26, 2026, 8:29 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9313 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | null |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Feb 26, 2026, 8:29 PM |
Header Canvas: Fix layout syncing on mobile and dynamic item sizing
tobiu assigned to @tobiu on Feb 26, 2026, 5:16 PM

tobiu
Feb 26, 2026, 8:29 PM
Input from Gemini 3.1 Pro:
✦ I have pushed the patch to
dev. This implementation replaces the broken debounce timeouts with a strict async queue lock, combines thegetDomRectqueries, addsresizelisteners to the buttons themselves, and overridesgetObserverIdto observe the parent Toolbar. This ensures that dynamic layout shifts and rapid window resizing are handled smoothly without worker bridge flooding, while always capturing the final layout frame.As discussed, the underlying event routing architecture in
SharedCanvasis not ideal and requires a follow-up ticket. I am closing this ticket as the immediate regression is resolved.
tobiu closed this issue on Feb 26, 2026, 8:29 PM
tobiu cross-referenced by #9314 on Feb 26, 2026, 8:31 PM
The header canvas currently relies heavily on the overall toolbar size to update its visual capture state. This leads to issues:
We need to analyze how we are observing the toolbar and its items to ensure the canvas correctly updates its 'holes' behind the buttons when internal sizes change.