Releases: gogpu/ui
Releases · gogpu/ui
Release list
v0.1.44
Changed
- deps: gg v0.50.3 → v0.50.4 (composite hardening), x/image v0.44.0, x/text v0.40.0
Documentation
- ARCHITECTURE.md comprehensive refresh: 26 widgets, 4 design systems (70 painters), per-widget layout caching (ADR-032), removed Engine references
v0.1.43
Changed
- deps: gg v0.50.2 → v0.50.3, gogpu v0.43.4 → v0.44.1, wgpu v0.30.9 → v0.30.10
- gogpu v0.44.1: Multi-backend auto-selection (old GPUs without Vulkan get DX12/GLES instead of software), macOS live resize fix
- gg v0.50.3: TT hinter improvements
v0.1.42
Added
- Layout cache activation (ADR-032 Phase 2b, #160, @TimLai666) — per-widget layout caching via
widget.LayoutChild. Layout cost: O(total nodes) → O(affected subtree). 32 sites converted across 23 files. - Animation tick before layout (ADR-032 GAP-3, #164) —
AnimationTickerinterface. Collapsible and Transition animations tick BEFORE layout (FlutterhandleBeginFrame→handleDrawFramepattern). Layout is a pure function, required for RelayoutBoundary (Phase 5).
Removed
internal/layout/Engine(ADR-032 CACHE-030, #163) — -769 lines of dead code. Layout caching fully handled bywidget.LayoutChild.
Changed
- deps: gg v0.50.1 → v0.50.2, gogpu v0.43.1 → v0.43.4, wgpu v0.30.8 → v0.30.9
v0.1.41
Fixed
- Collapsible animation glitch on Wayland (#152) — two fixes: (1) force final redraw after animation completes so render loop doesn't go idle with stale content; (2) send full-window
wl_surface.damage_bufferon root repaint so Wayland compositors update the entire display. Confirmed fixed by @porjo.
Changed
- Event-driven rendering by default (ADR-035) — removed
WithContinuousRender(false)boilerplate from all examples. gogpu v0.43.0+ defaults to event-driven. - deps: gg v0.49.2 → v0.50.1, gogpu v0.42.11 → v0.43.1, wgpu v0.30.7 → v0.30.8
v0.1.40
Changed
- Event-driven rendering by default (ADR-035) — removed
WithContinuousRender(false)from all examples and documentation. No longer needed since gogpu v0.43.0 defaults to event-driven rendering (winit 0.29 pattern). - deps: gg v0.49.2 → v0.49.3, gogpu v0.42.11 → v0.43.0
v0.1.39
Changed
- deps: gg v0.49.0 → v0.49.2, gogpu v0.42.8 → v0.42.11, wgpu v0.30.5 → v0.30.7, gputypes v0.5.0 → v0.5.1
- gg v0.49.2: Software Vulkan (llvmpipe/SwiftShader/WARP) offscreen boundary textures now work (ADR-046).
softwareModeno longer disables GPU — software adapters treated as full GPU implementations per enterprise pattern. MSAA runtime fallback 4x→1x. - gogpu v0.42.11: Wayland frame callback gating (ADR-049), golden tests + RenderToImage.
- wgpu v0.30.7: Software backend format-aware copy + GLES LockOSThread fix.
- gputypes v0.5.1:
BlockCopySize()for format-aware buffer sizing.
- gg v0.49.2: Software Vulkan (llvmpipe/SwiftShader/WARP) offscreen boundary textures now work (ADR-046).
v0.1.38
Added
- Layout invalidation wiring (#151, @TimLai666) — ADR-032 Phase 2a:
BindToSchedulerLayoutfor layout-affecting signals,MarkNeedsLayout()in event handlers. 11 signal bindings + 9 event handlers converted. Invalidation infrastructure ready for cache activation (Phase 2b).
Full changelog: https://github.com/gogpu/ui/blob/main/CHANGELOG.md
v0.1.37
Added
- Painter/Widget behavior separation (ADR-034) — enterprise refactor moving ALL behavioral logic from theme painters to core widgets. Painters are now draw-only. Enables community theme authoring.
- LayoutMetrics — 7 widgets define optional interface for theme-controlled spatial metrics (height, padding, fontSize, radius). 35 compile-time checked implementations.
- ThemeBundle (
theme.Bundle) — packages all painters for complete theme installation. - Gallery: 8 themes — Fluent and Cupertino added to theme switcher.
- internal/textmetrics — shared MeasureText-based text measurement.
Fixed
- DevTools cursor wrong position (#126) — cursor now uses widget-computed CursorRect via MeasureText across all themes.
- Cursor height — 2px caretHeightOffset (Flutter pattern).
Changed (breaking, v0.x)
- TextField PaintState expanded with pre-computed fields, pointer receiver
- titlebar:
DrawX→PaintXmethods - linechart: Bounds moved into PaintState
- progressbar:
ProgressBarColorScheme→ColorScheme
Dependencies
- gg v0.48.16 → v0.49.0
- gogpu v0.42.6 → v0.42.8
- wgpu v0.30.3 → v0.30.5
Full changelog: https://github.com/gogpu/ui/blob/main/CHANGELOG.md
v0.1.36
Added
- Layout cache infrastructure (#143, @TimLai666) — ADR-032 Phase 1: per-node constraint cache on WidgetBase,
widget.LayoutChild()helper,MarkNeedsLayout()with idempotency guard,GOGPU_DEBUG_LAYOUT=1debug verifier. Purely additive — inert until Phase 2. - Gallery: "Show Dialog" button — interactive trigger opens modal overlay.
Fixed
- Radio group stale selection pixels (#145) — invalidate both newly-selected and previously-selected items on selection change. Expanded invalidation rect for focus ring area. Affects all damage-aware compositors.
- Inconsistent glyph weights in ListView (#148) — snap RepaintBoundary blit positions to integer device pixels (Flutter
ComputeIntegralTransCTMpattern). - Collapsible content bleeding (#147) — update clip rect for invisible boundaries, add visibility check in compositor blit path, skip zero-area clips.
- Spinner arc artifact — align damage rect rounding with blit position to eliminate 1px stale arc fragments.
Dependencies
- gg v0.48.13 → v0.48.16
- gogpu v0.42.1 → v0.42.6
- wgpu v0.30.2 → v0.30.3
Full changelog: https://github.com/gogpu/ui/blob/main/CHANGELOG.md
v0.1.35
Added
- Badge widget (#138, @TimLai666) — notification badge (count/dot), signal bindings, 99.3% coverage
- Chip widget (#139, @TimLai666) — action/filter chip (M3 spec), two-way signal write-back, 99.0% coverage
- Badge + Chip design system painters — M3, DevTools, Fluent, Cupertino (86 tests)
Performance
- Layout pool (#140, @TimLai666) —
sync.Poolfor flex/grid/stack: 0 allocs/op - ListView per-item decorator — hover dirties only 1 item (Flutter/Android/Qt pattern)
- ListView scroll recycling — reuse overlapping decorators (RecyclerView pattern)
Fixed
- Debug overlay fade — cyan + green auto-fade 400ms without mouse movement
- ListView root re-record on hover — removed legacy
invalidateItemRect
Dependencies
- gg v0.48.13, gogpu v0.42.1, wgpu v0.30.2, x/image v0.43.0