openpencil/src/components
Danila Poyarkov 2a86ea5ce5 Add renderer profiler with HUD overlay, GPU timing, and phase instrumentation
Profiler modules in packages/core/src/profiler/:
- FrameStats: rolling 120-frame buffer tracking FPS, CPU/GPU times, node counts
- GpuTimer: EXT_disjoint_timer_query_webgl2 wrapper for GPU-side timing
- DrawCallCounter: WebGL context proxy counting draw calls per frame
- PhaseTimer: Chrome DevTools Performance panel custom tracks via User Timing API
- HudRenderer: in-canvas overlay with stats text and frame time bar graph
- CaptureStack: per-node profiling with speedscope JSON export
- RenderProfiler: orchestrates all layers with zero cost when disabled

Integration:
- SkiaRenderer.render() instrumented with phase markers for scene, picture
  recording/replay, section titles, component labels, selection, rulers, flush
- Node counting and viewport culling tracking in renderNode()
- WebGL2 context passed through for GPU timer and draw call counter
- Shift+P keyboard shortcut to toggle HUD overlay
- toggleProfiler() added to editor store
2026-03-04 14:13:17 +03:00
..
chat Fix case-sensitive filename: ApiKeySetup.vue → APIKeySetup.vue 2026-03-01 16:29:54 +03:00
properties Always show visibility toggle on fill, stroke, and effect rows 2026-03-04 09:56:16 +03:00
AppMenu.vue Add renderer profiler with HUD overlay, GPU timing, and phase instrumentation 2026-03-04 14:13:17 +03:00
AppSelect.vue Replace native <select> with reka-ui AppSelect component 2026-03-02 21:33:04 +03:00
AppToast.vue Fix pasteID int overflow and make error toasts copyable 2026-03-02 18:55:49 +03:00
CanvasContextMenu.vue Add context menu to layers panel 2026-03-02 19:45:09 +03:00
ChatPanel.vue Center empty chat placeholder text 2026-03-01 21:15:32 +03:00
CodePanel.vue Unify tool definitions: define once, adapt for AI/CLI/MCP 2026-03-01 15:02:05 +03:00
CollabPanel.vue Always show local user avatar in collab header 2026-03-01 21:12:22 +03:00
ColorInput.vue Extract ColorInput component, fix alpha slider checkerboard 2026-03-01 02:18:23 +03:00
ColorPicker.vue Collab UI polish, vue-router, extract HsvColorArea 2026-03-01 17:15:08 +03:00
DesignPanel.vue Fix scrollbar: use utility class instead of global selector 2026-03-04 09:35:30 +03:00
EditorCanvas.vue Reuse GL context on panel resize 2026-03-03 12:48:51 +03:00
FillPicker.vue P2P collaboration: cursors, follow mode, cleanup 2026-03-01 18:11:07 +03:00
FontPicker.vue Fix effects rendering: shadows, blur, spread (#24) 2026-03-03 09:53:39 +03:00
HsvColorArea.vue P2P collaboration: cursors, follow mode, cleanup 2026-03-01 18:11:07 +03:00
LayersPanel.vue Fix scrollbar: use utility class instead of global selector 2026-03-04 09:35:30 +03:00
NodeContextMenuContent.vue Add context menu to layers panel 2026-03-02 19:45:09 +03:00
PagesPanel.vue Fix scrollbar: use utility class instead of global selector 2026-03-04 09:35:30 +03:00
PropertiesPanel.vue Replace store thunks with a late-binding proxy 2026-03-02 18:36:27 +03:00
SafariBanner.vue Collab UI polish, vue-router, extract HsvColorArea 2026-03-01 17:15:08 +03:00
ScrubInput.vue Multi-selection properties panel with tests 2026-03-03 20:35:51 +03:00
TabBar.vue Use reka-ui Tabs for tab bar accessibility 2026-03-02 18:36:27 +03:00
Toolbar.vue Replace relative imports with @/ alias 2026-02-28 23:08:45 +03:00
VariablesDialog.vue Add undo/redo for all variable operations 2026-03-01 02:38:31 +03:00