Repository navigation
Solver toggle owns the Company Compute connection (amicode#200) - #45
Merged
Merged
Conversation
…code#200) The HP radio in the defaults capsule wears a truthful status dot and hosts the connection itself: clicking HP unconnected expands the same ConnectionCard the status popover used to render — a credential that lands connected flips HP on; disconnect always drops back to Piccolo (HP is cloud-only). Connected + already-HP clicks open the card in management state. - solver-toggle: pure decision helpers (dot mapping, click routing, flip-on-connect, mode-after-disconnect) with unit tests - connections: statusTabConnections() render filter — the status popover's Connections tab shows execution targets only; Company Compute row removed - connections-tab: ConnectionCard exported for the capsule mount - status-popover-body: connections state extracted verbatim into createAmicodeConnectionsState() so the home chrome hosts an always-warm instance for the dot; popover wiring unchanged - stale 'Preview — GPU cloud solver rolling out' tooltip removed Part of harmoniqs/amicode#200 (AC1-5, 7, 8; AC6 lands extension-side). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ow (amicode#200 AC6) The webview bridge forwards an 'open-compute-connect' envelope; the app-shell listener records the request and the mounted defaults capsule opens straight into the connect form (15s freshness window so a request fired on another page can't pop the popover much later). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
kateebonner
marked this pull request as ready for review
July 22, 2026 20:01
…on (amicode#200) ui-ux-pro-max validation pass on the connect flow. The dot was color-only (WCAG color-not-only): the HP radio's aria-label now carries solver + connection state in text, with aria-pressed on both radios and aria-expanded/aria-controls tying the radio to the inline card. The compute section is a polite live region and takes focus on open so keyboard and screen-reader users land on the form. The shared card's credential inputs get aria-labels mirroring their placeholders (placeholder-only labeling disappears once typing starts) — benefits the Pasqal card too. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…API key' (amicode#200) Kate's live-test feedback: after a successful connect the form collapses to the slim connected card, and once the popover closes there was NO visible route back — 'click the radio again' was a hidden affordance. And 'Company Compute' presented one credential as a separate product. - HP row grows a persistent details (gear) button whenever a credential exists (connected or troubled) — opens the same card in management state. Radio click simplifies: connected → select the solver; unconnected → open the connect form. hpClickAction loses the hidden 'manage' branch; showConnectionDetails() carries the affordance contract (tested). - Display copy renames 'Company Compute' to 'Solver API key' everywhere user-facing — one credential, one service, presented as what it is. The wire id 'company-compute' is server contract and unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…amicode#200) Kate's review: the details affordance is a three-dot kebab (inline vector, currentColor — the sprite has no ellipsis glyph yet) and it lives WITHIN the radio's border. The row is now one bordered control with two borderless click zones: select (flex) and details (trailing kebab). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…e its border (amicode#200) Kate's review: the row and the card read as two separate components. The control is now a single bordered accordion: header (select + kebab zones) on top, the connection card expanding below a hairline divider, all inside one border. Active tint stays on the header only so the card area stays readable. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…nly heading (amicode#200) Kate's review: no hairline between the header row and the expanded card, and no 'Solver API key' title inside it — the accordion header already names the thing; the connection STATUS is the first and only text. The shared card grows a hideHeader prop (capsule mount only; the Connections tab keeps its titled cards). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ame (amicode#200) Kate's review: the color indicator belongs to the connection status line — same idiom as the Connections tab, where the dot leads the card's first line. The accordion header drops its dot (state still announced via aria-label/title, still queryable via data-dot); the headerless card's status line gains the dot/spinner. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…the in-flight switch (amicode#200) - capsule mount overrides the needs-key state label to bare 'Not connected' — the form directly below IS the guidance; the Connections tab keeps the full copy. - while the connect/manage flow is open the accordion wears the accent border: 'the choice is moving here'. Selection truth is unchanged — Piccolo stays active until the credential lands, then the flip is the success feedback (HP cannot be selected keyless by construction). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…anent handle (amicode#200) Kate's review: clicking Piccolo or anywhere in the popover outside the HP accordion collapses the card, and the kebab renders in ALL states — the one predictable open/close control (radios choose, kebab discloses, clicking away dismisses). The credential-gated showConnectionDetails contract is retired: the keyless card is the connect form, never empty. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contributor
Author
|
Design review with Kate (live-tested each round in an installed VSIX) — the connect flow evolved past the original issue spec, all within #200's scope:
Follow-up candidate for the sprite: the kebab is a one-off inline SVG — worth graduating into icon.tsx if you want it canonical. 🤖 Generated with Claude Code |
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.
Implements the fork-side of harmoniqs/amicode#200 — the HP solver option surfaces and manages its own Company Compute dependency at the point of choice.
What changed
ConnectionCardthe status popover hosted); connected click activates; already-HP click opens management (identity, validated-at, revalidate, disconnect)connected; disconnect always reverts to Piccolo — HP is cloud-only, no state implies otherwisestatusTabConnectionsfilter) — Company Compute row relocated, Pasqal unchangedcreateAmicodeConnectionsState()— popover wiring and mutation contract (Provider permissions: tier resolution engine #165/Provider permissions: source-path tagging on tool results #166) unchangedVerification: ui 312/312 · app 415/415 ·
tsgo -bclean on both · new unit tests for dot mapping, click routing, flip-on-connect, mode-after-disconnect, tab filterPart of harmoniqs/amicode#200 — AC6 (Connect Cloud command + agent copy re-route) lands extension-side in amicode.
🤖 Generated with Claude Code