Skip to content

feat: keep deployments quiet in the collapsed notch - #12

Merged
enderdev01 merged 3 commits into
mainfrom
feat/quiet-collapsed-notch
Nov 4, 2026
Merged

enderdev01 merged 3 commits into
mainfrom
feat/quiet-collapsed-notch

Conversation

@enderdev01

Copy link
Copy Markdown
Owner

Linked issue

Closes #11

What and why

  • No layout delta (rule 1). The collapsed width used to reserve max(earWidth, 140) whenever a deployment was active, so starting or finishing a build resized and shifted the notch. Width now comes from agent activity only. The deployment becomes a badge in the idle mascot's slot — Vercel's sprite plus a state dot — costing no extra width and never replacing a working agent's signal (rule 2).
  • Details on hover (rule 5). The wide deployment row (project, status text, 82pt progress bar) leaves the collapsed bar. The indeterminate indicator moves to the expanded list, where the project, repository, commit and author already live, so nothing about a build is lost.
  • Do not notify what the user is watching (rule 9). The monitor no longer persists its tracker: it starts empty on every run, so a deployment that finished while the app was closed is no longer announced on the next launch. The permission to notify is also narrowed to a collapsed notch: the app injects a policy that requires the preference, no hover, and no pending approval.

Changes

File Change
Sources/AgentNotch/UI/NotchRootView.swift Width from agents only; deployment badge in the idle slot; wide row removed
Sources/AgentNotch/UI/SessionListView.swift Indeterminate indicator moved to the expanded deployment rows
Sources/AgentNotch/Infrastructure/VercelMonitor.swift shouldNotify policy, tracker per run, no persistence
Sources/AgentNotch/App/AppDelegate.swift Injects the policy (preference + collapsed notch)
Sources/AgentNotch/Domain/Deployment.swift Tracker no longer Codable; documented baseline behaviour
Tests/AgentNotchTests/DeploymentTrackerTests.swift Replaces the restart test with "finished while closed is not announced"
docs/vercel-notch-ux.md, docs/vercel-deployment-monitoring.md Rules recorded as implemented

How I tested it

  • swift build -c release passes
  • python3 scripts/check-strings.py passes (89 strings in 3 languages)
  • bash -n bridge/agent-notch-hook scripts/*.sh passes
  • swift test passes (XCTest suites plus 7 Swift Testing tests)
  • No secrets, personal paths or network calls added

Reviewer notes

  • Behaviour change: while agents are working, the collapsed notch shows nothing about Vercel; the badge appears only when everything is idle, and the details (including failures) are one hover away. A failure still notifies if the switch is on.
  • The vercelTracker UserDefaults key is no longer written. Existing values on a user's machine are ignored rather than deleted; say if you prefer a one-line cleanup on launch.
  • Layout invariance is by construction (the only width inputs are isIdle and earAgents, neither of which reads vercel) and by the release build; the repo has no snapshot tests, so it is not pixel-tested.
  • The notification policy is composed in AppDelegate, so it is not unit-tested; the tracker rule it relies on is covered by DeploymentTrackerTests.

The notch width came from agent activity plus a 140pt reservation for
the deployment row, so starting or finishing a build resized and shifted
the notch. Width is now derived from agents only, and the deployment
becomes a badge in the idle mascot's slot: Vercel's sprite plus a state
dot, with no text and no extra width.

The indeterminate indicator moves to the expanded list, where there is
room for project, repository, commit and author.
The monitor persisted its tracker, so a deployment that finished while
the app was closed notified on the next launch. The tracker now starts
empty on every run: the first poll is a baseline and only transitions
observed while the app runs are announced.

Notification permission is also narrowed to the moments worth a banner:
the monitor asks an injected policy, and the app answers with the
preference, a collapsed notch, and no pending approval.
Update the collapsed-notch rules to match the code (no layout delta, one
badge, details on hover) and the notification rule now that the tracker
is per run.
@enderdev01 enderdev01 added the enhancement New feature or request label Nov 4, 2026
@enderdev01
enderdev01 merged commit 046f5bf into main Nov 4, 2026
1 check passed
@enderdev01
enderdev01 deleted the feat/quiet-collapsed-notch branch November 4, 2026 05:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Keep deployments quiet in the collapsed notch

1 participant