Skip to content

Tags: gogpu/ui

Tags

v0.1.47

Toggle v0.1.47's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore(deps): update gg v0.50.7, gogpu v0.44.9, wgpu v0.30.22 (#271) (#…

…188)

- wgpu v0.30.22: Metal MSAA storage mode fix (Intel Mac crash)
- gg v0.50.7: variable font gvar fix under transforms
- gogpu v0.44.9: deps cascade

v0.1.46

Toggle v0.1.46's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: widget lifecycle correctness sweep (#171, #173, #174, #175, #181, 

…#182) (#186)

* fix(listview): unmount evicted decorators + mount row content (#173, #174)

Evicted decorators were overwritten without UnmountTree, leaking GPU
scenes and signal bindings. New decorators from Content[C].Render were
never mounted, so child signal bindings were dead.

Changes:
- cleanupWidget helper calls UnmountTree on evicted widgets
- fullRebuild/incrementalUpdate unmount old widgets before replacement
- clear() unmounts all widgets before zeroing
- buildDecorator calls MountTree after creation when ctx is available
- cache.update() now accepts widget.Context (passed from Draw)

* fix(gridview): unmount evicted cells + mount after Content[C].Render (#181)

Cell widgets from Content[C].Render were never mounted (signal bindings
dead) and never unmounted on eviction (scene/binding leak).

Changes:
- cellCache.update unmounts old widgets before rebuilding
- cellCache.clear unmounts all widgets
- New cells are mounted with MountTree when ctx is available
- cellCache.update accepts widget.Context parameter

* fix(overlay): wire MountTree/UnmountTree into push/pop lifecycle (#171)

Overlay containers were pushed/popped without mount/unmount calls,
leaking signal bindings and goroutines in content widgets.

Changes:
- PushOverlay calls MountTree on the container after pushing
- PopOverlay calls UnmountTree on the popped container
- RemoveOverlay unmounts the target and all overlays above it
  (matching overlay.Stack.Remove stack semantics)

* fix(app): add Window.Close teardown — stop pumper, unmount trees (#175)

Window had no Close method, so the animation pumper goroutine leaked
on window close, and widget trees were never unmounted.

Changes:
- Window.Close() stops animPumper, unmounts all overlays, unmounts root
- desktop.Run OnClose callback calls Window.Close before releasing GPU
- Close is idempotent (safe to call multiple times)

* fix(linechart): route invalidation through scheduler for goroutine safety (#182)

PushValue, AddSeries, ClearSeries called SetNeedsRedraw directly from
arbitrary goroutines. SetNeedsRedraw propagates upward through the
parent chain which is not thread-safe.

Changes:
- Add scheduler field, stored during Mount, cleared during Unmount
- requestRedraw helper routes through scheduler.MarkDirty when
  available, falls back to direct SetNeedsRedraw for unmounted usage
- Replace all SetNeedsRedraw(true) calls with requestRedraw()

* test(lifecycle): 28 regression tests + docs for v0.1.46

- listview lifecycle_test.go: mount/unmount on scroll, eviction, clear
- gridview lifecycle_test.go: cell mount/unmount, update, invalidate
- overlay_lifecycle_test.go: push/pop lifecycle, signal bindings
- window_close_test.go: close idempotency, unmount, stop pumper
- linechart safety_test.go: concurrent PushValue, scheduler routing
- CHANGELOG v0.1.46, ROADMAP version update

v0.1.45

Toggle v0.1.45's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore(deps): update ecosystem deps + docs refresh for v0.1.45 (#185)

- gg v0.50.4 → v0.50.6 (unified draw queue ADR-051/052, three-tier clip ADR-052)
- gogpu v0.44.1 → v0.44.8 (Wayland fractional scale, frame lifecycle)
- wgpu v0.30.10 → v0.30.21 (software backend fixes, WriteTexture, blit optimization)
- signals v0.1.0 → v0.1.1
- README: 26 widgets, 70 painters, backend selection, Android, software optimization
- ROADMAP: unified pipeline, 4-tier software optimization roadmap, Android
- CHANGELOG: software optimization roadmap with gg CPU rasterization tier
- ARCHITECTURE: deps update

v0.1.44

Toggle v0.1.44's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore(deps): update gg v0.50.4 + ARCHITECTURE.md refresh (#168)

- gg v0.50.3 → v0.50.4 (composite hardening)
- x/image v0.43.0 → v0.44.0, x/text v0.39.0 → v0.40.0
- ARCHITECTURE.md: 26 widgets, 4 design systems (70 painters),
  DevTools theme, per-widget layout caching (ADR-032),
  removed Engine references (CACHE-030)

v0.1.43

Toggle v0.1.43's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore(deps): update gg v0.50.3, gogpu v0.44.1, wgpu v0.30.10 (#167)

gg v0.50.3: TT hinter improvements.
gogpu v0.44.1: multi-backend auto-selection (DX12/GLES fallback for
old GPUs), macOS live resize fix.
wgpu v0.30.10: supporting changes.

v0.1.42

Toggle v0.1.42's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
docs: CHANGELOG v0.1.42, ROADMAP + README updates (#165)

CHANGELOG: add v0.1.41 (was missing), v0.1.42 with layout cache,
GAP-3, Engine removal, deps.
ROADMAP: version 0.1.42, LOC 207K, 24 widgets, Badge/Chip done,
layout cache + GAP-3 in completed features.
README: LOC 198K→207K, tests 7300→7500.

v0.1.41

Toggle v0.1.41's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix(collapsible): final animation frame + full damage on root repaint (

…#152) (#157)

Two fixes for collapsible visual glitch on Wayland (Mutter):

1. tickAnimation: detect animation completion and force one final redraw.
   Previously, when animation finished, HasActive()=false → early return →
   no SetNeedsRedraw → render loop went idle with stale content.

2. SetPresentDamage: send full-window damage when root texture changed.
   Previously, wl_surface.damage_buffer used widget-level dirty rects
   (current bounds after layout shrink). Vacated area not covered →
   Wayland compositor didn't update those pixels on physical display.

Confirmed fixed by @porjo (Intel Iris Plus ICL GT2, Fedora 44, GNOME/Mutter).

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

Toggle v0.1.40's commit message
chore(deps): update gg v0.49.3, gogpu v0.43.0 + remove WithContinuous…

…Render boilerplate (ADR-035)

gogpu v0.43.0: event-driven rendering by default (winit 0.29 pattern).
ContinuousRender: true → false in DefaultConfig. Safe-by-default.

Remove WithContinuousRender(false) from all 6 examples and docs — no longer
needed. Enterprise research (ADR-035): 8/8 UI frameworks (Flutter, Qt, GTK4,
SwiftUI, Compose, Iced, Gio, Chromium) enforce event-driven at entry point.

gg v0.49.3: IsSoftwareAdapter public API.

Verified: damage blit works correctly on llvmpipe — no fix needed.

v0.1.39

Toggle v0.1.39's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore(deps): update gg v0.49.2, gogpu v0.42.11, wgpu v0.30.7, gputype…

…s v0.5.1 (#154)

gg v0.49.2: Software Vulkan (llvmpipe/SwiftShader/WARP) offscreen boundary
textures now work — softwareMode no longer disables GPU (ADR-046).
MSAA runtime fallback 4x→1x. Error logging in CreateOffscreenTexture.

gogpu v0.42.11: golden tests + RenderToImage, Wayland frame callback (ADR-049).
wgpu v0.30.7: Software backend format-aware copy + GLES LockOSThread fix.
gputypes v0.5.1: BlockCopySize() for format-aware buffer sizing.

v0.1.38

Toggle v0.1.38's commit message
docs: CHANGELOG v0.1.38