Hibryda
1f26e5b272
perf(ui-gpui): diagnostic counters confirm 2 renders/sec at window level (GPUI limit)
...
- Sidebar and StatusBar uncached (natural size collapsed with StyleRefinement::default)
- ProjectGrid cached with flex-1 style (into_cached_flex)
- AgentPane + TerminalView cached within ProjectBox
- BlinkState::start() fixed with &mut *cx deref coercion
- CPU: ~3% with full layout visible (down from 6.8% uncached)
- Remaining: ProjectBox re-renders full tree on blink (reads BlinkState)
- Next: isolate dot into StatusDotView entity to prevent ProjectBox re-render
2026-03-19 22:45:21 +01:00
Hibryda
73cfdf6752
perf(ui-gpui): cache SharedStrings, remove diagnostics, zero alloc per render frame
...
- BlinkState as shared Entity (not child) → cx.notify() only dirties ProjectBox,
NOT ancestors (Workspace, ProjectGrid). Siblings serve from GPU cache.
- .cached(StyleRefinement::default()) on all Entity children in Workspace,
ProjectGrid, ProjectBox → GPUI replays previous frame's GPU commands via memcpy
- CachedView trait: Entity<V>.into_cached_view() → AnyView::from().cached()
- Result: 4.5% CPU → 0.83% CPU (25 ticks / 30s) for pulsing dot animation
2026-03-19 22:35:41 +01:00
Hibryda
5dbf5bd43c
perf(ui-gpui): cache SharedStrings, remove diagnostics, zero alloc per render frame
2026-03-19 09:38:00 +01:00
Hibryda
b557aeb833
perf(ui-gpui): diagnostic counters confirm 2 renders/sec at window level (GPUI limit)
2026-03-19 09:33:34 +01:00
Hibryda
7ab5d97352
perf(ui-gpui): add render counters, remove redundant cx.observe, reduce repaints
2026-03-19 09:27:08 +01:00
Hibryda
8dd3d82d31
fix(ui-gpui): re-enable start_blinking (was disabled for testing)
2026-03-19 09:21:21 +01:00
Hibryda
ba74e19ff2
feat(ui-gpui): Zed-style BlinkManager pattern for pulsing dot (epoch guard, 500ms timer)
2026-03-19 09:20:04 +01:00
Hibryda
3383334821
feat(ui-gpui): custom Element with direct paint_quad() for zero-overhead pulse
2026-03-19 08:16:44 +01:00
Hibryda
713b53ba0c
perf(ui-gpui): throttle pulse to 5fps via spawn+timer instead of request_animation_frame
2026-03-19 08:11:22 +01:00
Hibryda
c4d0707514
fix(ui-gpui): set first project to Running status so pulse animation triggers
2026-03-19 08:08:53 +01:00
Hibryda
18cfe7979c
fix(ui-gpui): color interpolation instead of alpha (GPUI ignores alpha on bg)
2026-03-19 08:03:24 +01:00
Hibryda
573105eae6
feat(ui-gpui): render-driven pulse via request_animation_frame() (GPUI native)
2026-03-19 07:59:32 +01:00
Hibryda
57e0e3a087
feat(ui-gpui): add pulsing dot via GPUI async runtime (entity-scoped repaint)
2026-03-19 07:51:25 +01:00
Hibryda
f3d2ca78ba
feat: add Dioxus and GPUI UI prototypes for framework comparison
...
Dioxus (ui-dioxus/): 2,169 lines, WebView mode (same wry as Tauri),
Catppuccin theme, 12 components, agor-core integration, compiles clean.
Evolution path — keeps xterm.js, gradual migration from Tauri.
GPUI (ui-gpui/): 2,490 lines, GPU-accelerated rendering, alacritty_terminal
for native terminal, 17 files, Catppuccin palette, demo data.
Revolution path — pure Rust UI, 120fps target, no WebView.
Both are standalone (not in workspace), share agor-core backend.
Created for side-by-side comparison to inform framework decision.
2026-03-19 06:05:58 +01:00