Skip to content

fix(host): keep a teammate whose helper stops in People as Offline, and only call a channel offline when its host is - #682

Merged
iamnbutler merged 3 commits into
mainfrom
fix-presence
Oct 23, 2026
Merged

iamnbutler merged 3 commits into
mainfrom
fix-presence

Conversation

@iamnbutler

Copy link
Copy Markdown
Contributor

People and the sidebar now use the same meaning of Offline.

  • apps/host/src/peers.ts: members() replaces online(). People lists every peer that has answered since this host started, and marks it online only while its listing connection is open. Before, a teammate whose Ace Helper stopped while their Mac stayed on the tailnet disappeared from People when there was no directory. Now it reads Offline, the same as its remembered channels in the sidebar.
  • apps/host/src/gateway.ts listed(): a directory or remembered channel whose host is a reachable peer is left out instead of being listed offline. The peer's own listing decides what it shares. This was the pair-study case where People said Sam was Online while the sidebar read samechocolixir · Offline after a share was lost. Telling the teammate that the project is no longer shared with them is still Stopping the directory deletes project shares silently, and lost access shows as Offline #631.

Map: ^101 (See people on the tailnet), ^389 (See a teammate's section).

Not in this PR: the ^389 request to head a teammate's All Projects section "Shared with you" instead of project · host · login sorted last. The wording, grouping and sort order are product decisions, and the item doesn't specify them.

Smoke test (partial): an isolated host on port 5100 returned the roster with this Mac. There was no second Ace host on this tailnet that I was allowed to reach, so I didn't see a stopped helper or a lost share. A two-Mac check is needed before merging.

Built in Ace

No. A Claude Code fix-train worker made this outside Ace: it edited in a lane and ran checks in a terminal. The fix train runs agents in parallel from one board, which Ace doesn't drive yet. #5

…nd only call a channel offline when its host is

Why: apps/host/src/gateway.ts#function listed | a directory or remembered channel whose host is a reachable peer is left out, not listed offline: the peer's own listing decides what it shares, and Offline must mean the same in People and the sidebar
Why: apps/host/src/peers.ts#function members | People lists every peer that answered since this host started, online only while its listing connection is open, matching which channels unreachable() lists offline
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