Skip to content

Add optional channel templates, teams and personal group defaults - #181

Merged
wesbillman merged 3 commits into
mainfrom
brain/channel-templates
Sep 23, 2026
Merged

wesbillman merged 3 commits into
mainfrom
brain/channel-templates

Conversation

@wesbillman

@wesbillman wesbillman commented Sep 23, 2026 •

Copy link
Copy Markdown
Collaborator

Opened by Brain on Wes’s behalf, at his request.

Summary

  • Add optional Templates & teams, off by default. Reuse the existing new-channel buttons; manage recipes and personal groups in Settings. Recipes combine multiple reusable teams, individual agents and starting Canvas. Group defaults seed new intent only; moving channels never rewrites membership or Canvas.
  • Put the Canvas editor and Save as template in channel settings. Save-as copies the saved Canvas and eligible agent identities, disclosing incomplete inventory rather than inventing a linked team.
  • Unify native/legacy agent choices under the session-owned projection, so native-only/stopped agents appear consistently without making a partially available inventory count as complete inference evidence.

Ownership and safety

  • The optional plugin owns recipe UI. Channels owns form/placement UI. Two small Cordis contribution slots revoke stale callbacks by registration and mounted lifetime.
  • The existing session owns accepted setup, Canvas, private catalogs and recovery; the existing outbox owns all delivery. No new socket, signer, runner or retry loop. The broker prepares encrypted private kind-30078 catalog bytes before normal outbox signing/publication.
  • Creation is ordered: channel → starting Canvas → verified agent membership → personal group. No welcome-message side effect. Frozen accepted intent survives provider replacement/disable, changed catalogs and restart. Unknown delivery is distinct from terminal rejection; membership acceptance is not treated as verified membership.
  • Canvas drafts retain their original revision, including empty edits. Stale/StrictMode completions are fenced; conflicting edits require reconciliation. Relay revision preflight is not atomic CAS, so it cannot eliminate every concurrent-writer race.
  • Original Buzz preferences are untouched. Copying visible original groups is an explicit draft action; no implicit migration or fresh-agent provisioning.

Architecture details: plugin ownership, shared agent selection. Independent bounded source review covered the ownership/recovery boundaries; it is not runtime certification.

Validation

Current repair head: 355642ad791b843b852cc208358ec713e5f2f0a6.

  • Hosted CI at e0bf6bee narrowed both browser-engine failures to mentions.spec.mjs:329: the removed-member send entered an unnecessary asynchronous composer lock. The helper's managed-only guard now runs at its sole caller before setSending/await; refreshed enrollment and session membership checks remain intact.
  • Strengthened the existing real-session composer regression to assert immediate rejection without a disabled interval, including a mixed removed-person/native-agent send. Both cases failed on the old production code and pass with this repair. All 73 tests in the composer file passed; browser assertions and fixtures were not changed.
  • At the repair head, normal pre-commit and pre-push hooks passed: TypeScript, 233 Vitest files / 2,443 tests, design types and design-system guards. Hosted DCO passed. New hosted CI is running; browser resolution is not yet verified. No local server, desktop or agents launched.

Initial preflight head: 993f5953f0b7eaf307e3dd3803aa294497272c38, based on a47ddaf452e605a59056476d2091146e1f3902e8.

  • Normal pre-commit: formatting/lint, icon boundary and secret scan passed; hooks were not bypassed.
  • Normal pre-push: TypeScript, 233 Vitest files / 2,438 tests, design types and design-system guards passed. This includes real create-dialog → session/outbox wiring, app plugin enable/disable composition, accepted team retention, encrypted-host admission, held outbox hydration, and Canvas stale-read/StrictMode regressions.
  • Initial gate failures were repaired, not suppressed: archive evidence now reloads after discovery invalidates it; fixtures retain stable store/session identities and supply the new registered services. A gated discovery-after-archive regression covers the lifecycle failure.
  • Rust file formatting check passed. Rust tests/Clippy, full frontend build, Node tool integration, Chromium/WebKit journeys and browser measurements are left to hosted CI.
  • Browser cases added/removed: 0. New behavior matrices use actual React mounts and real session/outbox with controlled transports in Vitest; no browser geometry/native-paint claim.
  • Wes exercised the evolving desktop UI. Final packaged/native, cross-window/live-relay recovery and comprehensive desktop acceptance remain unverified. No app/server was launched during finalization, per his instruction. Draft until broader checks and review clear.

Try it

Use the existing brain/channel-templates worktree, run just desktop, enable Templates & teams under Settings → Plugins, then manage recipes under Settings → Messages. Test blank/template/group-default creation, Calvin selection, plugin disable/re-enable, and Canvas save/conflict recovery.

Originating Buzz channel: cc91c278-816b-46af-8445-ab6d5a143ac4
Discussion root: da31c66b145025929eba4a02eb8cdac574a890b32cda02e50f0ac1ddadd0f987

…ent choices

Signed-off-by: Brain <1a02c72794dcd0f07058a353bc3a81f4028b8c77c92c87fce6d5c8b85970a20b@buzz.block.builderlab.xyz>
@wesbillman
wesbillman marked this pull request as ready for review September 23, 2026 22:21
@wesbillman
wesbillman requested review from a team and comp615 as code owners September 23, 2026 22:21
@wesbillman

Copy link
Copy Markdown
Collaborator Author
Screenshot 2026-09-23 at 3 43 55 PM Screenshot 2026-09-23 at 3 44 24 PM Screenshot 2026-09-23 at 3 44 33 PM Screenshot 2026-09-23 at 3 47 56 PM Screenshot 2026-09-23 at 3 48 00 PM Screenshot 2026-09-23 at 3 48 05 PM

Brain added 2 commits September 23, 2026 16:29
…oices

Signed-off-by: Brain <1a02c72794dcd0f07058a353bc3a81f4028b8c77c92c87fce6d5c8b85970a20b@buzz.block.builderlab.xyz>
Signed-off-by: Brain <1a02c72794dcd0f07058a353bc3a81f4028b8c77c92c87fce6d5c8b85970a20b@buzz.block.builderlab.xyz>
@wesbillman
wesbillman merged commit a9f68a4 into main Sep 23, 2026
12 checks passed
@wesbillman
wesbillman deleted the brain/channel-templates branch September 23, 2026 23:13
morgmart pushed a commit that referenced this pull request Sep 23, 2026
* origin/main:
  Add optional channel templates, teams and personal group defaults (#181)

Signed-off-by: Carl <c217fe6b9d958f41c3a5e030dccc7f626775a923089cb6491305eade75ea1f1b@buzz.block.builderlab.xyz>
zrmarley added a commit that referenced this pull request Sep 24, 2026
…o-player-polish

* origin/main: (38 commits)
  Fix diff content fallback, keyboard scrolling and edit selection (#205)
  Standardize form controls and field feedback across Buzz (#174)
  Keep image review downloads and external opens distinct (#144)
  Verify media review comments (#166)
  Follow system appearance (#210)
  Add rich composer formatting and spoiler rendering (#203)
  feat: show roster-backed channels and managed instances in profiles (#188)
  Add new direct message flow (#156)
  Remove Home, start in Messages, and keep Channels enabled (#194)
  fix: restore avatar presence controls and active-input sensing (#198)
  Add legacy diff messages with inline and expanded viewing (#202)
  Edit the latest own message with Up in the existing composer (#192)
  Add complete reaction toggles to the message menu (#185)
  feat: add persistent community navigation rail (#191)
  test: add margin to warm-switch performance gate (#195)
  Add composer attachments and compatible media preparation (#183)
  Add reply and copying to the shared message menu (#182)
  fix: avoid idle workspace re-renders from activity and label churn (#186)
  feat: add devtools trace capture to web profiling (#180)
  Add optional channel templates, teams and personal group defaults (#181)
  ...

Signed-off-by: Zach Marley <zmarley@squareup.com>
zrmarley added a commit that referenced this pull request Sep 24, 2026
…-content-compat

* origin/main: (38 commits)
  Fix diff content fallback, keyboard scrolling and edit selection (#205)
  Standardize form controls and field feedback across Buzz (#174)
  Keep image review downloads and external opens distinct (#144)
  Verify media review comments (#166)
  Follow system appearance (#210)
  Add rich composer formatting and spoiler rendering (#203)
  feat: show roster-backed channels and managed instances in profiles (#188)
  Add new direct message flow (#156)
  Remove Home, start in Messages, and keep Channels enabled (#194)
  fix: restore avatar presence controls and active-input sensing (#198)
  Add legacy diff messages with inline and expanded viewing (#202)
  Edit the latest own message with Up in the existing composer (#192)
  Add complete reaction toggles to the message menu (#185)
  feat: add persistent community navigation rail (#191)
  test: add margin to warm-switch performance gate (#195)
  Add composer attachments and compatible media preparation (#183)
  Add reply and copying to the shared message menu (#182)
  fix: avoid idle workspace re-renders from activity and label churn (#186)
  feat: add devtools trace capture to web profiling (#180)
  Add optional channel templates, teams and personal group defaults (#181)
  ...

Signed-off-by: Zach Marley <zmarley@squareup.com>

# Conflicts:
#	docs/channels.md
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