You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat(profiles): emit active_profile.changed SSE event on default switch (MCP-3244)
Backend half of the tray profile switcher (Profiles v2 T5). PUT
/api/v1/profiles/active now broadcasts an active_profile.changed runtime
event on an actual change, so UI surfaces (Web UI, tray) refetch and
reflect a default-profile switch made by another client.
Emitted via an optional capability assertion in the httpapi handler so
ServerController is not widened (no mock fan-out).
Co-Authored-By: Paperclip <noreply@paperclip.ing>
* feat(tray): Go tray profile switcher submenu (MCP-3244)
Profiles v2 T5 for the cross-platform Go systray tray (macOS/Windows/Linux).
- Adds a 'Profile' submenu listing 'All servers' + each configured profile
with tool counts; the active profile is checkmarked. Clicking switches the
server-level default active profile via PUT /api/v1/profiles/active.
- ServerInterface gains GetProfiles/GetActiveProfile/SetActiveProfile; the
REST ServerAdapter forwards them to the api.Client (new GetProfiles,
GetActiveProfile, SetActiveProfile; makeRequest is now body-capable for the
PUT). ProfileInfo lives in a build-tag-free file for stub/linux builds.
- The submenu refreshes on the existing 3s sync loop, so an active-profile
switch made by another client (Web UI, CLI) is reflected within one interval
— consistent with how the REST-adapter tray already reflects server/quarantine
changes (its EventsChannel is nil; it does not proxy runtime events). The
Swift macOS tray gets the real-time active_profile.changed SSE wiring.
- Tests: profileMenuTitle/profileSetChanged helpers, performSync profile
refresh, ServerAdapter profile delegation. Cross-builds darwin/windows/linux.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
* feat(macos-tray): Swift profile switcher submenu via SSE (MCP-3244)
Profiles v2 T5 for the native macOS (AppKit) tray.
- AppKit rebuildMenu gains a 'Profile' submenu (shown when profiles are
configured): 'All servers' (clears the profile) + each profile with tool
count; the active selection is checkmarked. switchProfile sets the
server-level default via PUT /api/v1/profiles/active.
- APIClient: profiles(), activeProfile(), setActiveProfile(); AppState gains
profiles + activeProfile; new ProfileSummary/ProfilesListResponse/
ActiveProfileResponse models match the Go REST wire shape.
- Real-time reflection: CoreProcessManager.refreshProfiles runs on connect,
on the periodic refresh, and on the new active_profile.changed SSE event, so
a switch from any client (Web UI, CLI, Go tray) repaints the macOS submenu.
- Tests: ProfileModelsTests (decode + Equatable). swift build + swift test green.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
---------
Co-authored-by: Paperclip <noreply@paperclip.ing>
0 commit comments