feat(desktop): refine setup, Activity Center, and relaunch handoff - #19
Merged
Conversation
- Hand a repeated launch to the running process and open Activity Center - Show provider connection state in Setup and Integrations - Let Active/Attention metrics filter sessions; keep completed and failed separate - Collapse tool lifecycle events that share a call identifier
- Hand off only to a strictly older process, with an exclusive lock as tie-breaker - Count Active and Attention chips against the current filters
- Replace “N of M connected” with install/remove copy - Keep status in accessibility labels and follow-up text - Remove unused ProviderIntegrationStatusView
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A second launch used to start another process and compete for
~/.agentnotch/agent.sock. Setup and Integrations hid most provider state. Activity Center lumped completed and failed sessions together, and tool start/complete rows split when another event landed between them.A repeated launch now finds the oldest running Agent Notch process, asks it to open Activity Center, and exits before the new process starts the runtime. Dock reopen opens Activity Center in that same process.
Setup and Integrations show each provider's connection state and a connected count. Setup names the finish action
Finish without Connectingwhen nothing is installed yet, and both screens state that observers stay local.Activity Center's Active and Attention metrics toggle the session list. Status filters keep completed and failed separate. Tool lifecycle events that share a call identifier collapse to one timeline row, with failed tools marked as failures. Project headings no longer expose the decorative folder as a VoiceOver action, long session titles show in hover help, and sidebar/row motion respects Reduce Motion. The Last 30 days date filter is gone.
Verification
swift testswift test -c release./script/package_release.sh --adhoc./script/check_repository.shPackaged smoke, if you run it: launch while Agent Notch is already running and confirm Activity Center comes forward in the first process, then quit. Check Setup/Integrations status chips, Active/Attention metric filters, Completed vs Failed, and a tool start/complete pair with another event in between.
Compatibility and risk
Hook decoding accepts
toolUseId,toolCallId,tool_use_id, andtool_call_id, then stores the value inmetadata.toolCallId. The field is optional. Events without it still pair adjacent same-tool rows.PostToolUseFailurenow includes tool metadata so a failed call can join the same row. The local event protocol stays additive.docs/PROTOCOL.mdtells emitters to setmetadata.toolCallIdwhen they have a stable id.No store schema or signing change. A persisted
thirtyDaysdate filter loads as Last 7 days.Relaunch uses
NSRunningApplicationplus a distributed notification,com.afonsoferreira.AgentNotch.activateExistingInstance. The new process must exit inapplicationWillFinishLaunchingso it never binds the event socket. If that handoff misses, two instances can still collide.Screenshots
UI changed on Setup, Integrations, and Activity Center: provider status, metric filters, Failed vs Completed, coalesced tool rows. None attached here.