feat(workspace): `/integrations` opens the integration status directly
Issue for this PR
Closes #1463
Type of change
- New feature
What does this PR do?
/workspace → Status (#1312) already shows, per integration, what the last session got from the workspace and why anything is missing. This adds /integrations, which opens the same view directly, and points the attach toast and the boot box there. Nothing moves: /workspace → Status is unchanged, and both read the same snapshot.
When there's nothing current to show, /integrations says why instead:
- Not linked: a "Link to a workspace" row, which opens the link picker.
- Engine missing or too old: the install offer (it says which), not the last attach, which describes an engine this machine no longer has. Asked for, it shows even within a "Not now" week; an install still running is reported instead.
- Linked, usable engine: the Status view, including its "No session has attached yet" state.
/workspace and /integrations share one readLink helper, so the check that keeps Status from showing another account's attach lives in one place.
Claims
- C1 For the same link,
/integrationsand/workspace→ Status show the same view: same rows, counts and reasons. - C2
/integrationsnever shows an attach for a workspace the project isn't linked to now, or one read under another account. - C3 With the engine missing or too old,
/integrationsopens the install offer, not the last attach, even within a "Not now" week, and never starts a second install while one is running. - C4 Everywhere else, the offer's 7-day "Not now" latch behaves as before.
Residuals
- R1 With
ALTIMATE_DISABLE_WORKSPACEset,/integrationsdoesn't exist, like/workspace: the plugin that registers both isn't loaded. - R2 An installed engine that failed to start isn't detected: the TUI can't see the server's engine state, so Status shows the last attach, with its age.
- R3 The connection each integration uses isn't shown yet; it comes with the connection picker.
- R4 The boot box's commands line (90-character limit) still lists only
/workspaceand/skills; its integrations line points here. - R5 A relink or account switch in the instant between
/integrations' last link read and the Status view's own reads isn't caught, the same window/workspace→ Status has. - R6 Under
attach <url>with the path absent on the client, the offer's guard applies: a toast says to install on the server. - R7 Under organisation-managed config that sets
mcp.datamate, the engine overlay is off, but/integrationsstill offers the local install: the TUI process doesn't read that config. - R8 While an automatic offer waits for the store to hydrate,
/integrationsshows the last attach until that offer opens over it.
How did you verify your code works?
- A test per
/integrationspath: unlinked → the link (closed before the picker starts); engine missing or too old → the install offer, even after "Not now"; no offer after all (install running, engine just installed) → the Status view; usable engine → the Status view; a relink during the engine check, and a dialog opened during the reads, are respected. - Plugin and workspace suites pass (1138); typecheck clean.
- Live against a test workspace (E2E): unlinked → the link offer; no engine → the install offer, again after "Not now"; after attach the boot box points here and
/integrationsshows the Status rows (GitHub 0 of 40 · no usable connection, Altimate 7 of 7, Jira 8 of 8).
Codex rounds against these claims: review log.
Screenshots / recordings
Terminal captures in the E2E comment.
Checklist
- I have tested my changes locally
- I have not included unrelated changes in this PR
🤖 Generated with Claude Code
https://claude.ai/code/session_01HRUhVhg6XwxSKJs1iTufiA
Summary by cubic
Adds a /integrations command that opens the workspace integration status view directly, so users no longer need to drill into /workspace → Status. The attach toast and boot box now point to /integrations for the reasons. Also fixes the race where an automatic install offer still waiting for the store to hydrate was suppressed by the "Not now" latch when /integrations asked; the pending offer now skips the latch. Closes #1463.
Behavior when there's nothing to show
- Unlinked projects get a link offer instead of the status view.
- A missing or too-old engine opens the install offer — even within a "Not now" week — and says which; an install already running is reported instead of re-offered.
- The link is re-read after the engine check, so a relink or an account switch mid-check cannot show a stale attach.
- The command claims its dialog before reading, so a dialog the user opens meanwhile is left alone; if the install offer doesn't open after all, the Status view shows instead of nothing.
- Link closes the dialog before the picker starts, so repeated Enter cannot start a second picker.
Summary by CodeRabbit
- New Features
- Added an
/integrationscommand to link a project, install a required engine, or view workspace status. - Integration-related prompts and messages now direct you to
/integrations. - On-demand install requests are handled during pending or active install offers.
- Added an