Skip to content

refactor(widget): decouple from gg/scene with SceneCache interface (ADR-036) - #210

Merged
kolkov merged 1 commit into
mainfrom
refactor/scene-cache-interface
Aug 6, 2026
Merged

refactor(widget): decouple from gg/scene with SceneCache interface (ADR-036)#210
kolkov merged 1 commit into
mainfrom
refactor/scene-cache-interface

Conversation

@kolkov

@kolkov kolkov commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Summary

  • SceneCache interface replaces *scene.Scene in widget package — third-party widget authors no longer compile gg/wgpu/naga
  • Before: import widget+geometry+event → 124 packages (18 gogpu, including all of gg)
  • After: import widget+geometry+event → 71 packages (4 gogpu, zero gg)
  • SceneFactory registration pattern follows existing SceneRecorder DI
  • deps: gg v0.50.12, gogpu v0.50.0 (per-pixel alpha, window API, outgoing DnD), wgpu v0.30.36

Details

ADR-036 Phase 1. widget/ used only 2 operations from scene.Scene: NewScene() and Reset(). Everything else was opaque pass-through. Replaced with:

  • widget.SceneCache interface (Reset(), IsEmpty())
  • widget.SceneFactory + widget.RegisterSceneFactory() + widget.NewSceneCache()
  • Type assertions in rendering layer where concrete *scene.Scene needed

92 files changed (mostly test mock signature updates). Zero behavior change.

Test plan

  • grep "gogpu/gg" widget/*.go | grep -v _test = zero results
  • go build ./...
  • go test ./... -count=1 (61 packages, 0 fail)
  • golangci-lint run --timeout=5m (0 issues)
  • Baseline measured: 124→71 packages, 18→4 gogpu deps

…DR-036)

Replace *scene.Scene with SceneCache interface in widget package.
Third-party imports compile 71 packages instead of 124 (zero gg deps).
SceneFactory registration follows existing SceneRecorder DI pattern.

deps: gg v0.50.12, gogpu v0.50.0, wgpu v0.30.36
@codecov

codecov Bot commented Aug 6, 2026

Copy link
Copy Markdown

@kolkov
kolkov merged commit d5b1490 into main Aug 6, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant