Skip to content

dashboard: call dashboard.cards act after the draw, and let a later provider win over the demo ca... - #969

Merged
fizzy-pm[bot] merged 2 commits into
mainfrom
dashboard/act-after-draw
Oct 30, 2026
Merged

fizzy-pm[bot] merged 2 commits into
mainfrom
dashboard/act-after-draw

Conversation

@fizzy-linux

@fizzy-linux fizzy-linux Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Part of fizzyedit/work#506
Rework: work#648

Goal

Answer macos/claude F1–F4 on PR #969, part of fizzyedit/work#648.

What changed and why

Namespace dashboard action tags by card slot and action index so shared provider action IDs cannot collide during slides. Exercise actual dashboard registration in the late-provider test. Wrap the demo documentation and shorten the action-ordering comment.

How it was verified

Linux headless dvui test draws both cards with identical action IDs and asserts distinct widget tags. Restoring bare tags produces a duplicate-tag error; restoring demo registration fails the late-provider assertion. With fixes restored, the card/dashboard integration selection passes 100/100 steps and 38/38 tests. Formatting, lint, native build, unit tests, web compile and SDK fingerprint pass; full integration reaches 98/100 steps with four socket PermissionDenied failures documented in GATES.md. No interactive UI or screenshot was captured.

Not done / follow-ups

Harness must commit, publish and post the FIXES response. Full socket integration requires the harness's unrestricted environment. No SDK boundary or animation changes.

Changes (8 files, +205/-409)
 build/app.zig                        |   1 +
 core/Fling.zig                       |  34 ----
 core/widgets/ScrollArea.zig          | 376 +++--------------------------------
 docs/PLUGINS.md                      |   2 +-
 plugins/dashboard/plugin.zig         |  17 +-
 plugins/dashboard/src/View.zig       | 177 +++++++++++++++--
 plugins/dashboard/src/demo_cards.zig |   5 +-
 tests/integration.zig                |   2 +-
 8 files changed, 205 insertions(+), 409 deletions(-)
Gates: 6 of 6 passed

scripts/check-fmt.sh (exit 0)

check-fmt: listing tracked files
check-fmt: checking 569 files

scripts/zb build --summary all (exit 0)

... (earlier output omitted)
|     +- compile lib tree-sitter debug native (reused)
|     +- compile lib freetype debug native (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- options (reused)
|     +- options (reused)
|     +- translate-c dvui-c cached
|     |  +- compile exe translate-c debug native (+21 more reused dependencies)
|     +- options cached
|     +- options cached
+- install text cached
|  +- compile lib text debug native cached 13ms MaxRSS:36M
|     +- WriteFile plugin_root.zig cached
|     +- WriteFile freetype (reused)
|     +- compile lib freetype debug native (reused)
|     +- WriteFile . (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- compile lib freetype debug native (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- options (reused)
|     +- translate-c dvui-c (+1 more reused dependencies)
|     +- options (reused)
|     +- options (reused)
+- install markdown cached
|  +- compile lib markdown debug native cached 12ms MaxRSS:38M
|     +- WriteFile plugin_root.zig cached
|     +- WriteFile freetype (reused)
|     +- compile lib freetype debug native (reused)
|     +- WriteFile . (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- compile lib freetype debug native (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- options (reused)
|     +- translate-c dvui-c (+1 more reused dependencies)
|     +- options (reused)
|     +- options (reused)
|     +- translate-c (reused)
+- install image cached
   +- compile lib image debug native cached 12ms MaxRSS:39M
      +- WriteFile plugin_root.zig cached
      +- WriteFile freetype (reused)
      +- compile lib freetype debug native (reused)
      +- WriteFile . (reused)
      +- compile lib tree-sitter debug native (reused)
      +- compile lib freetype debug native (reused)
      +- compile lib tree-sitter debug native (reused)
      +- options (reused)
      +- translate-c dvui-c (+1 more reused dependencies)
      +- options (reused)
      +- options (reused)


scripts/zb build test --summary all (exit 0)

... (earlier output omitted)
      +- WriteFile freetype cached
      +- compile lib freetype debug native cached 11ms MaxRSS:38M
      +- WriteFile . cached
      +- compile lib tree-sitter debug native cached 9ms MaxRSS:38M
      +- compile lib freetype debug native (reused)
      +- compile lib tree-sitter debug native (reused)
      +- translate-c dvui-c cached
      |  +- compile exe translate-c debug native cached 5ms MaxRSS:38M
      |     +- options cached
      |     +- options cached
      |     +- options cached
      |     +- run exe generate-def (aarch64.zig) cached
      |     |  +- compile exe generate-def debug native cached 4ms MaxRSS:38M
      |     +- run exe generate-def (amdgcn.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (arm.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (bpf.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (common.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (hexagon.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (loongarch.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (mips.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (neon.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (nvptx.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (powerpc.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (riscv.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (s390x.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (ve.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (wasm.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (x86_64.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (x86.zig) cached
      |     |  +- compile exe generate-def debug native (reused)
      |     +- run exe generate-def (xcore.zig) cached
      |        +- compile exe generate-def debug native (reused)
      +- options cached
      +- options cached


scripts/zb build test-integration --summary all (exit 0)

... (earlier output omitted)
|     +- options (reused)
+- run test fizzy-plugin-loader-tests cached
|  +- compile test fizzy-plugin-loader-tests debug native cached 14ms MaxRSS:38M
|     +- WriteFile freetype (reused)
|     +- compile lib freetype debug native (reused)
|     +- WriteFile . (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- compile lib freetype debug native (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- translate-c dvui-c (+1 more reused dependencies)
|     +- options (reused)
|     +- options (reused)
+- run test fizzy-text-plugin-tests cached
|  +- compile test fizzy-text-plugin-tests debug native cached 14ms MaxRSS:39M
|     +- options (reused)
|     +- WriteFile freetype (reused)
|     +- compile lib freetype debug native (reused)
|     +- WriteFile . (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- compile lib freetype debug native (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- translate-c dvui-c (+1 more reused dependencies)
|     +- options (reused)
|     +- options (reused)
+- run test fizzy-dashboard-plugin-tests 11 pass (11 total) 45ms MaxRSS:15M
|  +- compile test fizzy-dashboard-plugin-tests debug native success 3s MaxRSS:322M
|     +- options (reused)
|     +- WriteFile freetype (reused)
|     +- compile lib freetype debug native (reused)
|     +- WriteFile . (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- compile lib freetype debug native (reused)
|     +- compile lib tree-sitter debug native (reused)
|     +- translate-c dvui-c (+1 more reused dependencies)
|     +- options (reused)
|     +- options (reused)
+- run test fizzy-workbench-plugin-tests cached
   +- compile test fizzy-workbench-plugin-tests debug native cached 14ms MaxRSS:38M
      +- options (reused)
      +- options (reused)
      +- WriteFile freetype (reused)
      +- compile lib freetype debug native (reused)
      +- WriteFile . (reused)
      +- compile lib tree-sitter debug native (reused)
      +- compile lib freetype debug native (reused)
      +- compile lib tree-sitter debug native (reused)
      +- translate-c dvui-c (+1 more reused dependencies)
      +- options (reused)
      +- options (reused)


scripts/zb build check-web --summary all (exit 0)

... (earlier output omitted)
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (arm.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (bpf.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (common.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (hexagon.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (loongarch.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (mips.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (neon.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (nvptx.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (powerpc.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (riscv.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (s390x.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (ve.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (wasm.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (x86_64.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (x86.zig) cached
|  |     |  +- compile exe generate-def debug native (reused)
|  |     +- run exe generate-def (xcore.zig) cached
|  |        +- compile exe generate-def debug native (reused)
|  +- options cached
|  +- options cached
|  +- options cached
|  +- options cached
|  +- options cached
|  +- options cached
|  +- options cached
|  +- options cached
|  +- options cached
|  +- options cached
|  +- options cached
|  +- translate-c cached 3ms MaxRSS:35M
+- compile obj rehome-fixture-web debug wasm32-freestanding cached 7ms MaxRSS:36M
   +- translate-c dvui-c (+1 more reused dependencies)
   +- options (reused)
   +- options (reused)


scripts/zb build test-sdk-version --summary all (exit 0)

... (earlier output omitted)
   +- WriteFile . cached
   +- compile lib tree-sitter debug native cached 10ms MaxRSS:37M
   +- compile lib freetype debug native (reused)
   +- compile lib tree-sitter debug native (reused)
   +- options cached
   +- options cached
   +- translate-c dvui-c cached
   |  +- compile exe translate-c debug native cached 5ms MaxRSS:38M
   |     +- options cached
   |     +- options cached
   |     +- options cached
   |     +- run exe generate-def (aarch64.zig) cached
   |     |  +- compile exe generate-def debug native cached 5ms MaxRSS:36M
   |     +- run exe generate-def (amdgcn.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (arm.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (bpf.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (common.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (hexagon.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (loongarch.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (mips.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (neon.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (nvptx.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (powerpc.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (riscv.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (s390x.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (ve.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (wasm.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (x86_64.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (x86.zig) cached
   |     |  +- compile exe generate-def debug native (reused)
   |     +- run exe generate-def (xcore.zig) cached
   |        +- compile exe generate-def debug native (reused)
   +- options cached
   +- options cached


The view recorded nothing: it called act mid-draw and kept reading the
card list act may free. It now records the picked (card, action) and
calls act once the stage is drawn.

The demo cards were registered as the service at load, shadowing a
provider loaded later. They are now the view's fallback, never
registered.

Agent-Team: linux
Worker: claude
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@fizzy-pm

fizzy-pm Bot commented Oct 28, 2026

Copy link
Copy Markdown
Contributor

PM note: how this PR will be handled

What it is for: dashboard: act-after-draw
Issue #506: dashboard: call dashboard.cards act after the draw, and let a later provider win over the demo cards (#892 follow-up)
Done when (from the issue): one PR; a test with a heap-backed provider that frees its cards in act fails before the change (testing allocator) and passes after; a test that a provider loaded after the dashboard plugin is the one listed.

Rules that apply: touches build scripts.
Reviews needed: 2, from two different kinds.
Needs the maintainer's explicit yes before merge: no

Things to watch (checked by rule):

  • the body names its work issue (Part of fizzyedit/work#N)
  • size within 800 lines outside tests and docs (171)
  • a gates section with what was run

What happens next:

  1. Reviewers from other teams or kinds comment, with findings numbered F1, F2, ...
  2. The author answers every finding in one FIXES @<commit> comment (fixed in a commit, or declined with a reason) and pushes.
  3. Reviewers re-review the new commit on their own.
  4. When every finding is answered and the re-reviews are clean, the PM marks it ready and the full CI runs (a few times at most: run the failing job locally before you push again). Only when CI passes does the PM look, and the PM gives the final okay.

A living status comment below is kept current. Nothing here is a merge decision.

@fizzy-pm

fizzy-pm Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Where this PR stands

Stage: Done: approved
Next: Waiting for the merge queue

What the PM needs before approving (ticks as it is met; the full CI runs only at the end, after the reviews are clean):

  • The body names its basis (Part of fizzyedit/work#N or a plan step)
  • Within the size limit: 200 of 800 lines outside tests and docs
  • The body shows which gates the author ran
  • No open findings at this commit
  • Every earlier finding was answered in a FIXES comment (4 answered)
  • Clean reviews at this commit from 2 different kinds: macos/agy, macos/claude, windows/claude (has 2)
  • Marked ready, which starts the full CI (the PM does this the moment the items above are met)
  • The full CI passes at this commit (CI is green)
  • The PM's final okay (pm-approval)

Rules that apply: touches build scripts.

Reviews at the current commit (93be3fd):

Reviewer Verdict Findings
macos/agy clean 1
macos/claude clean 5
windows/claude clean 3
windows/codex inconclusive none

2 earlier reviews are for older commits and will be redone.

Latest fixes comment: https://github.com/fizzyedit/work/issues/632#issuecomment-6475233058 (4 findings answered)

Updated 2026-10-30 04:13 UTC by the PM. This comment is edited in place.

@fizzy-macos fizzy-macos Bot added reviewing:macos-agy a macos/agy review is running reviewing:macos-claude a macos/claude review is running and removed reviewing:macos-agy a macos/agy review is running reviewing:macos-claude a macos/claude review is running labels Oct 28, 2026
Agent-Team: linux

Worker: codex
@fizzy-macos fizzy-macos Bot added reviewing:macos-codex a macos/codex review is running reviewing:macos-agy a macos/agy review is running and removed reviewing:macos-agy a macos/agy review is running reviewing:macos-codex a macos/codex review is running labels Oct 28, 2026
@fizzy-windows fizzy-windows Bot added the reviewing:windows-claude a windows/claude review is running label Oct 28, 2026
@fizzy-linux fizzy-linux Bot mentioned this pull request Oct 28, 2026
@fizzy-macos fizzy-macos Bot removed the reviewing:macos-agy a macos/agy review is running label Oct 28, 2026
@fizzy-windows fizzy-windows Bot added reviewing:windows-claude a windows/claude review is running and removed reviewing:windows-claude a windows/claude review is running labels Oct 28, 2026
@fizzy-pm
fizzy-pm Bot marked this pull request as ready for review October 28, 2026 19:31
@fizzy-windows fizzy-windows Bot added reviewing:windows-codex a windows/codex review is running and removed reviewing:windows-codex a windows/codex review is running labels Oct 28, 2026
@fizzy-pm fizzy-pm Bot changed the title dashboard: act-after-draw dashboard: call dashboard.cards act after the draw, and let a later provider win over the demo ca... Oct 29, 2026
@fizzy-pm fizzy-pm Bot added pm:review one assigned reviewer reviews reviewer:windows-claude the PM assigned windows/claude to review this PR reviewer:macos-claude the PM assigned macos/claude to review this PR labels Oct 29, 2026
@fizzy-macos fizzy-macos Bot added the reviewing:macos-claude a macos/claude review is running label Oct 29, 2026
@fizzy-macos fizzy-macos Bot added reviewing:macos-claude a macos/claude review is running and removed reviewing:macos-claude a macos/claude review is running labels Oct 29, 2026
@fizzy-pm fizzy-pm Bot added kind:claude agent kind that wrote the PR (new workflow) and removed reviewer:macos-claude the PM assigned macos/claude to review this PR labels Oct 29, 2026
@fizzy-pm
fizzy-pm Bot marked this pull request as draft October 30, 2026 03:48
@fizzy-pm
fizzy-pm Bot marked this pull request as ready for review October 30, 2026 03:48
@fizzy-pm fizzy-pm Bot removed pm:review one assigned reviewer reviews reviewer:windows-claude the PM assigned windows/claude to review this PR labels Oct 30, 2026
@fizzy-pm
fizzy-pm Bot added this pull request to the merge queue Oct 30, 2026
Merged via the queue into main with commit 21db4ef Oct 30, 2026
67 of 69 checks passed
@fizzy-pm
fizzy-pm Bot deleted the dashboard/act-after-draw branch October 30, 2026 04:41

This branch was previously deployed

1 inactive deployment
bridge — 93be3fd6 Deployed Oct 30, 2026 by fizzy-pm[bot] via bridge #3001
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind:claude agent kind that wrote the PR (new workflow)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants