Skip to content

Mark a loop watching the Mailroom with an envelope glyph - #329

Merged
scgopi merged 3 commits into
mainfrom
feat/mailroom-watch-glyph
Sep 8, 2026
Merged

Mark a loop watching the Mailroom with an envelope glyph#329
scgopi merged 3 commits into
mainfrom
feat/mailroom-watch-glyph

Conversation

@scgopi

@scgopi scgopi commented Sep 8, 2026

Copy link
Copy Markdown
Owner

Implements Option A from the Mailroom-watch design canvas (https://claude.ai/code/artifact/b66281a3-4d39-435d-8a92-ecc0eb4a0b6f): a quiet outline envelope glyph marking a loop that is watching the Mailroom, in two places only.

What

  • Sidebar row (AppSidebarView.nodeRow): envelope SF Symbol between the title's spacer and the age text, 10pt, white at 45%.
  • Canvas card (LoopCardView.metaRow): same glyph after the existing 9pt network remote glyph, 9pt, white at 40%.
  • Both shown only when node.mailroomWatch != nil and the node is not resolved, and both carry a .help tooltip: Watching the Mailroom, or Watching the Mailroom · topic <t> when the watch has a topic.
  • New MailroomWatchPresentation enum answers "show glyph?" and "tooltip text" from a LoopNode, so the rule lives in one place and is testable without pixels.

No colour, no count, no unread dot — Option B is explicitly out of scope.

Tests

MailroomWatchPresentationTests: no watch, watch on every post, watch with a topic, and a watch on a resolved node (hidden) parameterised over all four resolved states.

Gate

In flight from the worktree with private DerivedData; literal exit codes to follow in a comment.

🤖 Generated with Claude Code

https://claude.ai/code/session_01M8s9Ranjzra1VAKrP27gN7

scgopi and others added 2 commits September 8, 2026 00:38
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M8s9Ranjzra1VAKrP27gN7
A quiet outline envelope on the sidebar row and the canvas card's meta row
whenever the node carries a mailroomWatch and is not resolved, with a tooltip
naming the topic when the watch has one. No count, no unread dot.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M8s9Ranjzra1VAKrP27gN7
@scgopi

scgopi commented Sep 8, 2026

Copy link
Copy Markdown
Owner Author

Gate on 290b0080 (= remote head = PR head), worktree worktrees/mailroom-watch-glyph, private DerivedData (.derived):

  • xcodebuild test exit 0 — 1699 tests / 181 suites / 0 failures; MailroomWatchPresentationTests ran and passed (3 tests + 1 parameterised over the 4 resolved states)
  • graphcode-cli build exit 0
  • graphcoded build exit 0
  • swiftlint 0 errors (standing warnings only); swift-format lint --strict exit 0
  • scripts/cli-smoke.sh exit 0 against a fresh SwiftPM build in .spm (the worktree's shared .build symlink would have run a stale binary), throwaway daemon, five verbs ok
  • Linux: pass — https://github.com/scgopi/GraphCode/actions/runs/34200682646/job/101978521506

@scgopi
scgopi merged commit aedcd6d into main Sep 8, 2026
1 check passed
@scgopi

scgopi commented Sep 8, 2026

Copy link
Copy Markdown
Owner Author

Re-gate on 5710e946 (= remote head = PR head) after the review nits — comments trimmed to the retained-watch rationale; showsGlyph kept because the brief asked the helper to answer both "show glyph?" and "tooltip text". Private DerivedData:

For the record: the first re-run on this head exited 65 with one failure, CodexReadinessGateTests.aSessionLabelledForAnotherAgentIsNotAdopted — its start() helper launches a real zmx session and polls zmx ls 40×100ms, and under machine load the session had not appeared. Unrelated to this comment-only diff; the clean re-run above is the gate.

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