Skip to content

feat(desktop): add experiment-gated Workstream Board - #6184

Draft
loganj wants to merge 5 commits into
mainfrom
workstream-board/01-canvas-cards
Draft

feat(desktop): add experiment-gated Workstream Board#6184
loganj wants to merge 5 commits into
mainfrom
workstream-board/01-canvas-cards

Conversation

@loganj

@loganj loganj commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

🤖

Summary

People coordinating several workstreams in Buzz have to open channels one by one to understand what is underway and who owns it. This adds the first slice of a Workstream Board in Desktop: one place to scan joined workstream channels and open the canonical channel behind any card.

This is PR 1 of a four-PR Workstream Board stack. It is an experiment, off by default, and must be enabled from Settings → Experiments before its sidebar destination appears.

What changes

  • Discovers joined, non-archived channels whose names begin with loganj-ws-; visible but unjoined channels and unrelated channels stay off the board.
  • Reads a small versioned card block from each matching channel's canvas and renders its synopsis, orchestrator, and assignees. Missing or malformed card data degrades only that card.
  • Opens the existing canonical channel when a card is selected rather than creating a second conversation surface.
  • Adds loading, empty, error, responsive-grid, keyboard-focus, and sidebar navigation states for the board route.

Later PRs in the stack add live agent-working state, pull-request status, and waiting-on/sorting behavior. Those signals are intentionally outside this tracer bullet.

Related issue

None found. This is an experiment-gated product spike.

Testing

  • Fresh Blox stack-tip verification at 2892e4aa74fe6f1761550108fdda10e5164c0185, which includes the current foundation head f45289db0c8f729a4f24b633f964a1b0163ac3ce: Desktop 5,143/5,143, Workstream Board 52/52, presence reconciler 12/12, pnpm typecheck passed, and pnpm check completed with zero errors.
  • Relay-backed Playwright capture: 1 passed (19.6s). It continuously demonstrates the board absent while disabled, enabling the experiment, rendering one joined workstream from relay-backed channel/canvas data, and opening its canonical channel. The test also excludes an unjoined matching channel and a joined non-matching channel.
  • The capture workstation used a local, uncommitted browser-bridge adjustment only to let the web test query canvas data from its disposable relay. Independent fresh-head verification confirmed that adjustment is absent from this branch.
  • Member-only discovery, archived-channel exclusion, card parsing, and view-model fallbacks have unit coverage.

Acceptance gates

  • Board route and sidebar entry are experiment-gated off by default.
  • Discovery uses joined channels from a relay and applies exact-prefix, membership, and archive filtering.
  • Cards render the agreed canvas convention and degrade locally on invalid data.
  • Selecting a card opens the canonical channel.
  • Continuous relay-backed demo captured before PR creation.
  • Independent Royal verification passed at the exact PR head with zero findings.
  • Required CI checks are green.
  • Maintainer review is complete.

Demo

The qualifying evidence is one uninterrupted 19.44-second capture (SHA-256 f826b6ee4237c761dec4da55db9bc13bc898a4bbc77dd9a8f6f8d5ae413d171b), attached here as an animated GIF with the original MP4 linked below:

Continuous relay-backed demo: board absent while disabled, experiment enabled, populated card rendered, canonical channel opened

Original MP4 (full quality)

Sampled frames from the same capture:

Experiment off Experiment enabled
Experiments page with Workstream Board disabled Workstream Board destination visible after enabling the experiment
Relay-backed board Canonical channel
Board showing one populated joined workstream card Canonical workstream channel opened from the card

@loganj
loganj marked this pull request as ready for review August 18, 2026 19:05
@loganj
loganj requested a review from a team as a code owner August 18, 2026 19:05
@loganj
loganj marked this pull request as draft August 18, 2026 19:21
@loganj
loganj force-pushed the workstream-board/01-canvas-cards branch 3 times, most recently from f45289d to 4820be0 Compare August 20, 2026 00:02
loganj and others added 5 commits August 20, 2026 14:57
Adds the workstreamBoard preview flag, a /workstreams route, and a gated
sidebar destination that surface live loganj-ws-* channel canvases as
minimal cards (channel name, synopsis, orchestrator, assignees). Card
data comes from a single versioned buzz-workstream-card fenced JSON
block per canvas; parse failures (missing block, invalid JSON,
duplicate blocks, unknown version, invalid/missing fields) degrade
only that card to channel metadata plus an inline unavailable state.

Discovery reuses useChannelsQuery with a plain name-prefix filter and
no creator/membership filter; per-card data reuses useCanvasQuery.
Split AppSidebarProps out into the existing AppSidebar.types.ts
companion file to keep AppSidebar.tsx under the repo's 1000-line
file-size ratchet after adding the new sidebar wiring.

Scope is limited to bullet 1 of the Workstream Board spike: no
liveness, PR status, waiting-on resolution, or sorting.

Signed-off-by: loganj <loganj@squareup.com>
Co-authored-by: Claude Code <noreply@anthropic.com>
sq agents review flagged that the prefix-only discovery filter let an
archived loganj-ws-* channel keep appearing as an active board card.
Every other active-channel surface in this codebase (sidebar, search,
channel browser, agent autocomplete) excludes archivedAt !== null, so
apply the same rule here.

The review's second finding — one relay canvas query per rendered card
via useCanvasQuery — is the contract's specified design ("per matching
channel canvas fetch via existing canvas query/API paths") for this
bullet; batching/limiting canvas fetches is left for a later slice
rather than implemented as an unscoped addition here.

Signed-off-by: loganj <loganj@squareup.com>
Co-authored-by: Claude Code <noreply@anthropic.com>
Signed-off-by: loganj <loganj@squareup.com>
Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: loganj <loganj@squareup.com>
Signed-off-by: loganj <loganj@squareup.com>
@loganj
loganj force-pushed the workstream-board/01-canvas-cards branch from 4820be0 to ab58a51 Compare August 20, 2026 15:13
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