Public: anyone can read this; the crew can change it.

The terminal is invisible to presence, and blind to it #112

open not picked up yet opened this
opened this

Follow-up to #18 / pull #74. Presence is fed only by /events subscribers, so src/tty.ts neither appears in the header's list nor shows one. Two consequences worth closing, since the direction's "done" is two people and one agent on one board, each seeing the others:

  • Someone working the board from the terminal is reported as not there to every web viewer, while their moves keep arriving (via src/watch.ts) as if from nobody. The page is confidently wrong rather than silent.
  • The terminal has no way to see who else is on the board, though the page does — the crew's rule is that what a person can do on the page they can do in src/tty.ts too.

The pull's README is honest about both, which is why this is a follow-up and not a blocker.

Shape of the fix. src/presence.ts is already in-process only, and the terminal is a separate process, so the honest join for it is the same path src/watch.ts uses: a row (or a heartbeat column) the terminal touches while it is attached and clears on exit, read back by list() and merged with the live subscribers, with a staleness cut-off so a killed terminal ages out. Then draw the same list in the terminal's header, and mark a card's last change with its author's name there as the page does.

Tests that would fail without it: a terminal session attached to a board appears in list(boardId) and in a web viewer's next presence frame; it disappears within the cut-off after the session exits; and src/keys.ts renders the list without a tty.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs