-
Notifications
You must be signed in to change notification settings - Fork 374
feat: vue nodes LOD system #5631
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
🎭 Playwright Test Results❌ Some tests failed ⏰ Completed at: 09/23/2025, 02:22:17 AM UTC 📈 Summary
📊 Test Reports by Browser
🎉 Click on the links above to view detailed test results for each browser configuration. |
b05be76
to
8766e84
Compare
🔧 Auto-fixes AppliedThis PR has been automatically updated to fix linting and formatting issues.
Changes made:
|
Looking good, just some merge conflicts it seems |
Yep. Will fix that along with more feedback implementations. |
aceb588
to
f684a21
Compare
5ecbc86
to
d188cdb
Compare
d188cdb
to
e99cd3c
Compare
Summary
Replaced reactive (Vue-based) widget LOD with CSS visibility control. Performance doesn't dramatically improve, but we avoid the mount/unmount overhead during zoom/pan operations. This PR implements the visual component of LOD—complex widgets that need lifecycle management will be addressed separately.
Problem & Solution
Problem: we want LOD to improve rendering performance and visual feedback but discovered using reactivity in the current setup for it meant mounting/unmounting caused worse lag than the performance it aimed to fix. Switching to render all the details all the time but using css visibility proved to be the best solution. However, it doesn't improve rendering performance by much because the GPU texture size is the bottleneck (from TransformPane.vue CSS transforms) and not rasterization.
Solution: Keep all nodes/widgets mounted, use CSS visibility: hidden for LOD. Trade memory for performance stability during zoom/pan/drag operations.
Technical Decision
We chose Performance > Memory:
This is the visual layer only. If we want a hook into the LOD state per node / widget that would be the next follow up system to implement.
Next Steps (maybe)
Selective unmounting API for widgets that register as "expensive"Client bound hydration systemScreenshots (if applicable)
┆Issue is synchronized with this Notion page by Unito