Skip to content

feat(desktop): add signed channel panel surface - #4102

Draft
tcballard wants to merge 2 commits into
block:mainfrom
tcballard:tcballard/signed-extension-panel-renderer
Draft

feat(desktop): add signed channel panel surface#4102
tcballard wants to merge 2 commits into
block:mainfrom
tcballard:tcballard/signed-extension-panel-renderer

Conversation

@tcballard

Copy link
Copy Markdown

User-visible problem

Issue #3863 needs a native, discoverable channel surface for signed workflow/project projections. Without a panel affordance, the signed workspace remains implicit in the timeline and is harder to inspect and audit.

What this implements

This follow-up is intentionally stacked on #3882 (feat(protocol): define signed channel panel manifest).

  • Adds a Panel affordance to the channel header/compact actions and persists its open state as the existing URL-backed panel=1 flag.
  • Reuses the existing auxiliary-panel shell for split and standalone layouts.
  • Adds a transport-neutral, read-only signed-channel panel renderer with the six contract states: loading, empty, ready, stale, unavailable, and invalid.
  • Renders channel context, semantic status, timestamps, sections/fields, provenance, source-event actions, and safe external HTTPS links.
  • Wires the empty state today: “No panel published — This channel has no signed panel projection yet. Source events remain available in the channel timeline.” The transport adapter remains deliberately deferred until maintainers decide whether the first projection should compose existing signed events or introduce a new signed manifest kind.

Existing path reused

The implementation reuses AuxiliaryPanel, RightAuxiliaryPane, AuxiliaryPanelHeader, AuxiliaryPanelBody, the existing channel history-state helper, and the existing channel panel lifecycle. It adds no HTTP endpoint, relay API, or new event kind.

Tests and validation

  • pnpm typecheck
  • pnpm exec biome check ... on changed files
  • CHECK_FILE_SIZES_BASE=d88313f3 pnpm check
  • pnpm build:e2e
  • pnpm exec playwright test tests/e2e/signed-channel-panel.spec.ts --project=smoke (1 passed)
  • just fmt-check
  • just clippy
  • just test-unit
  • Desktop tests/build and Tauri compilation completed in the integrated gate; the long Tauri test suite was stopped after the shared local clone reported a truncated Git pack, then the work was recovered and revalidated in a clean clone.

A screenshot of the empty panel state will be attached in a follow-up PR comment. Desktop UI changed; no mobile UI changed.

Deferred work

Command-palette autocomplete remains separate/deferred. The transport adapter and projection-specific source mapping should follow the maintainer decision on #3882.

No OEXL-specific code, matching, payments, outcome contracts, ledger state, settlement semantics, or marketplace protocol was added. Buzz remains responsible only for channel presentation and auditability.

tcballard and others added 2 commits July 31, 2026 09:57
Defines the generic, bounded, channel-scoped manifest contract for the first block#3863 design slice. Transport kind selection remains deferred for maintainer review.

Signed-off-by: Tom Ballard <tom@armytage.co>
Signed-off-by: Tom Ballard <tom@armytage.co>
tcballard added a commit to tcballard/buzz that referenced this pull request Aug 1, 2026

Copy link
Copy Markdown
Author

Screenshot

Empty signed channel panel state (Desktop):

signed-channel-panel

This PR changes Desktop UI only; no mobile UI changed.

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