Repository navigation
Show documents someone else creates in the sidebar without a reload - #739
Merged
Merged
Conversation
A document a teammate created showed in another person's Projects sidebar only after they reloaded, or up to a minute later. Renames, archives, restores and deletions by someone else were just as late. The sidebar socket now carries `sidebar:catalogue`. When a document is created, renamed, archived, restored or permanently deleted, by a person, the Planner's drafted title, a question opened as a page, or `create_document` over MCP, the server publishes it to the repository's topic, which every sidebar watching that repository already subscribes to. The frame names the repository and the document but no title, so a socket learns nothing it couldn't read: the client reads that repository's documents again through the usual access check, once a burst of changes has been quiet for 250 ms. - packages/protocol: Sidebar.Catalogue. - server: announceCatalogue, called from announceChannel (rename, archive, restore, question pages, Planner titles), the create route and MCP create_document (new onChannelCreated hooks), and permanent deletion. - web: useSidebarDecisions passes the frame on; SidebarDecisionCounts refreshes the project it names. - AGENTS.md and docs/channels.md describe it. Assistant-model: Claude Opus 5.5 (fast) Assistant-workflow: inline Assistant-verification: Chromium E2E passed: e2e/sidebar-decision-counts.e2e.ts and e2e/document-creation.e2e.ts (28 pass); the new test (another person creates, renames, archives and deletes while the viewer's page never reloads) failed with the client handler disabled and passes with it Assistant-verification: bun test unit passed: src/mcp src/channels src/socket (198 pass), with a create_document announce test (once, not on a replay) Assistant-verification: typecheck and lint passed: bun run types and bun run ci User-preference: A document created by one person should appear on other people's clients without a refresh Co-authored-by: Alex Lavaee <lavaman131@github.com>
lavaman131
force-pushed
the
feat/sidebar-live-documents
branch
from
October 29, 2026 05:10
499e81a to
6353474
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Turning a machine's sharing off stopped every teammate's Planner on it at
once. A teammate whose Planner was replying lost the reply mid-stream, an
open question was cancelled, and a live workflow run was paused, all
because of someone else's click.
Now turning sharing off takes no new teammate documents, and:
at once, as before;
until that work finishes, then stops on the next sweep (every 15 s) with
the same reason, " stopped sharing with teammates";
A paused run doesn't hold the Planner: it waits on people for as long as
they take, and stays on the machine to resume if its owner shares it again.
The busy documents are recorded before sharing ends, so no poll in between
moves their Planner.
link.busyandattachments.busysay whether anattached client is replying, asking or running;
waiting(used by the idlerule) is unchanged.
The Machines table shows "Finishing 1 teammate document" under the switch
while this lasts, described to screen readers by the switch, and the phone
view says the same. GET /api/connector/machines reports
finishing.Assistant-model: Claude Opus 5.5 (fast)
Assistant-workflow: inline
Assistant-verification: bun test unit passed: planner-dispatch.test.ts (27 pass) with 3 new cases: an open question, a reply in progress, a live run versus a paused one and sharing again meanwhile; src/harness/remote and src/experiments (219 pass)
Assistant-verification: Chromium E2E passed: bun run e2e e2e/planner-picker.e2e.ts e2e/machines.e2e.ts (15 pass), including hubot's reply in progress while mona stops sharing studio
Assistant-verification: typecheck and lint passed: bun run types and bun run ci
User-preference: When a shared machine stops being shared, a teammate's Planner finishes its current work before it stops
Co-authored-by: Alex Lavaee lavaman131@github.com