Skip to content

Tags: gogpu/ui

Tags

v0.1.53

Toggle v0.1.53's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore: bump version to v0.1.53 (#224)

v0.1.52

Toggle v0.1.52's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: pluggable DebugOverlay system (ADR-066) + deps cascade (ADR-067)

* feat: migrate dirty widget overlay to pluggable DebugOverlay system (ADR-066)

- dirtyWidgetDebugOverlay implements gpucontext.DebugOverlay
- Registers with gogpu compositor via RegisterDebugOverlay
- Removed inline overlay rendering from desktop.draw()
- GOGPU_DEBUG_DIRTY=overlay (was =1, pre-v1.0 clean cut)
- Self-sustaining render loop via Draw() return value

Part of: gogpu#437

* docs: GOGPU_DEBUG_DAMAGE=1 → =overlay, GOGPU_DEBUG_DIRTY=1 → =overlay

* fix: remove strings import, simplify GOGPU_DEBUG_DAMAGE check

* chore(deps): cascade update gg v0.51.0, gogpu v0.51.0, gpucontext v0.26.0, wgpu v0.31.0

ADR-065/066 damage source registration + pluggable debug overlay system.
CHANGELOG updated for v0.1.52.

* chore(deps): cascade update gg v0.52.0, gogpu v0.52.0, gpucontext v0.27.0 (ADR-067)

v0.1.51

Toggle v0.1.51's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore: prepare release v0.1.51 (#216)

v0.1.50

Toggle v0.1.50's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore: prepare release v0.1.50 (#206)

v0.1.49

Toggle v0.1.49's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore: prepare release v0.1.49 (#202)

v0.1.48

Toggle v0.1.48's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: Viewport3D widget, OS file DnD bridge, Wave 2 fixes (#150, #177, 

…#178, #180, #189) (#192)

* feat(dnd): OS file drop bridge with KindFile constant (#189)

Add OS file drag-and-drop support bridging gogpu platform events into the
ui dnd system:

- dnd/file.go: KindFile constant and FilePayload type for OS file drops
- dnd/manager.go: DropExternal() delivers atomic external drops to targets
- app/window.go: DndManager() getter with lazy initialization
- desktop/desktop.go: OnDragDrop bridge from gogpu App to dnd.Manager
- Bump gogpu dependency to v0.45.0 for OnDragDrop API

* feat(compositor): ExternalTextureLayer for external GPU content

Add ExternalTextureLayer to the compositor Layer Tree for blitting
pre-rendered GPU textures from external producers (3D viewports, video
players, custom shaders). Flutter TextureLayer pattern.

- compositor/external_texture_layer.go: leaf layer holding TextureView
- compositor/external_texture_layer_test.go: interface compliance tests
- desktop/desktop.go: compositeFromTreeRecursive handles the new layer type

* feat(viewport3d): GPU viewport widget — Flutter Texture pattern (#150)

Add Viewport3D widget that owns an offscreen GPU texture for external
rendering (3D scenes, video, custom shaders). Flutter Texture pattern:
external producer renders into texture, compositor blits it.

- core/viewport3d/: Widget, functional options (Size, OnRender, Continuous)
- widget/context.go: GPUTextureProvider interface for texture creation
- Deferred texture init (first Draw, not Mount) for headless safety
- RepaintBoundary for compositor isolation
- Lifecycle.Unmount releases GPU texture
- 14 tests covering layout, rendering modes, lifecycle, accessibility

* style(viewport3d): gofmt alignment fix

* chore(deps): update gogpu v0.45.1 (full DnD) + CHANGELOG v0.1.48

- gogpu v0.45.0 → v0.45.1: complete OS drag-and-drop on all 4 platforms
- CHANGELOG: full v0.1.48 scope (Viewport3D, DnD bridge, Wave 2 fixes, deps)

* docs(examples): add filedrop and viewport3d examples

- filedrop: OS file drag-and-drop via dnd.Manager + reactive signal list
- viewport3d: GPU viewport widget in standard layout with controls

* docs: add filedrop + viewport3d examples to README

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)