Remove the code the watch relay's deletion left behind - #1615
Conversation
#1536 deleted the hosted watch relay and #1611 cleaned up after it, but three things it was the only reason for stayed: - AgentFeed's showSessionLink/showName/showStatus were passed `false` by AgentView, its only caller, so the AgentOverview they configured hit its `if (!sessionLink && !status) return null` on every render. The props and that render are gone; AgentOverview itself stays, since ProjectHome uses it with the defaults. - The `enabled` parameter on useWorking/useDaemonHealth/useFavicon was never passed `false` by anything — the relay view had been its only caller. Gone, along with the two tests that existed only to cover it. - Comments and specs across nine files still explained live behaviour by naming the deleted relay: FileTree "has no checkout", GitStatusBar "on the relay", EventList's "read-only relay watch", RoutineWork's sweep note, favicon, use-daemon-health's tests. The behaviour is real in each case, only the reason was a ghost — reworded to state the condition itself. The device relay (#1067) is untouched: relay-endpoints, relay-dispatch and relay-agent are a different feature that shares the word. No FEATURES-SPEC.md change: none of this was user-visible. Suite 1489 + 774, typecheck clean.
…log text The last of the same shape #1615 removes. AgentView is AgentFeed's only caller and always passes projectId, so the optional prop had exactly one production value — and the conditional forward below it could only ever take one branch. Required is the point, not tidiness: with it optional, a future caller that omits it gets an open choice gate silently rendered as plain log text, which is a run parked with nothing to answer it (#846). A required prop makes that a compile error instead of a dead-quiet downgrade. EventList's own projectId stays optional. It is a leaf presentational component with 35 direct test renders, and its browser pane already degrades on a genuinely nullable agentId, so the absent case is a real render mode there rather than a fiction.
|
🤖 agent comment Five SPEC.md files change here, one line each. Walking them individually, since a one-line spec edit is easy to wave through and two of these five say something different about the code than the other three. They split into two kinds: two describe a responsibility that moved, and three delete a reason that named a feature which no longer exists. 1.
|
🤖 agent PR
Follow-up to #1611. That PR cleaned up after the watch relay's deletion (#1536); this removes three things it left behind, all verified against its own diff.
What was dead
1.
AgentFeed's three display props.AgentViewis its only caller, and it passedshowSessionLink={false} showName={false} showStatus={false}. With all three false, theAgentOverviewthey configured hit its ownif (!sessionLink && !status) return null— so it rendered nothing, every time. The props and that render are gone.AgentOverviewitself stays:ProjectHomerenders it with the defaults, where it does show.2. The
enabledparameter onuseWorking/useDaemonHealth/useFavicon. Not merely defaulted — nothing ever passedfalse. The relay view had been the only caller that did. Removed, with the two tests that existed only to cover it (useFavicon(true, false), and "disabled (the relay) never probes").3. Stale reasons. Nine files still explained live behaviour by naming the deleted relay —
FileTree("the relay has no checkout"),GitStatusBar("or on the relay"),EventList("the read-only relay watch"),RoutineWork's sweep note, plus thefaviconanduse-daemon-healthspecs. In each case the behaviour is real and the reason was a ghost, so they now state the condition itself rather than the feature that used to cause it.The name trap
The device relay (#1067) is a different feature that shares the word:
relay-endpoints.ts,relay-dispatch.ts,relay-agent.tsand/_relayare untouched. A source-wide sweep forrelaynow returns only those.Notes
FEATURES-SPEC.mdchange — none of this was user-visible. There is no watch-link row to remove.One thing deliberately not done
EventList'sprojectIdis now only absent in tests:AgentViewrequires it, so it always reachesEventListthroughAgentFeed. The same shape as the props above — butEventListis a presentational component whose optional prop is defensible on its own, and making it required would rewrite a dozen tests for no behavioural gain. Left as it is rather than decided unilaterally.