Repository navigation
fix: Home estimate label, Get started card, Activity conflict clear and status-coloured health (Spec fix-ux-residuals) - #1467
Merged
Conversation
…d on a fresh instance (Spec fix-ux-residuals)
… and surface blocked attempts (Spec fix-ux-residuals)
…c fix-ux-residuals)
Deploying mcpproxy-docs with
|
| Latest commit: |
4ec9ce7
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://1a84d918.mcpproxy-docs.pages.dev |
| Branch Preview URL: | https://fix-ux-residuals-final.mcpproxy-docs.pages.dev |
F1.1 (confirmed): removing a conflicting server/tool chip, or Clear filters,
with a profile/client/token scope in the URL sent two requests, the first
without the scope. The conflicting URL made toRest() return null, so the scope
dropped out of the request until the router.replace settled and the scope key
changed. profile/client/token do not depend on the server/tool pair, so
Activity now reads them with toRest({ ignoreConflict: true }); the scope key
no longer flips on conflict resolution and the single refetch carries it.
loadActivities() still issues nothing while scopeConflict is set.
Contributor
📦 Build ArtifactsWorkflow Run: View Run Available Artifacts
How to DownloadOption 1: GitHub Web UI (easiest)
Option 2: GitHub CLI gh run download 37012258733 --repo smart-mcp-proxy/mcpproxy-go
|
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
11 tasks
github-actions Bot
pushed a commit
that referenced
this pull request
Oct 3, 2026
…le reach (#1482) Docs, changelog and verified fixes from a first-run, upgrade and user-test pass on `main` (335477e). ## Docs - `docs/features/profiles.md`: profiles are optional. Without an effective profile, no profile-level restriction applies (a scoped credential's own grant still does). The quick start is presented as being for scoped access. - `docs/configuration.md` (`quarantined` row): explains the real default. A server added through the UI, CLI or API follows its trust mode. A first-seen config-file server with no `quarantined` key and no `config.db` record is held for review. An explicit value wins, and a recorded server keeps its state. Links to the admission rules. - `docs/features/security-quarantine.md`: the hand-editing section names the extra conditions: quarantine is enabled, and the trust mode is not `auto` (including legacy `auto_approve_tool_changes`/`skip_quarantine` resolving to `auto`), matching `ServerConfig.EffectiveTrustMode`. - `docs/getting-started/quick-start.mdx`: a plain note that a server added by editing the file is held for review until approved. - `CHANGELOG.md`: the security, review, catalog, telemetry, CLI and first-run fixes merged since v0.69.0 (#1463, #1467–#1473, #1481) plus this PR's. ## Fixes (each reproduced in an isolated instance, regression test fails on main) - **Upgrade start advisory repeated.** `reportPreFixAdmissions` ran on every gate pass (initial gate, `LoadConfiguredServers`, every publish), so an upgrade start logged the "predate the config-load admission gate" advisory 2–5 times. It is now reported once per server per process. Gate decisions are unchanged. - **Benign startup race logged as ERROR.** Both the supervisor reconcile and `LoadConfiguredServers` → `AddServer` asked a not-yet-ready client to connect. The second call was correctly refused with "connection already in progress or established (state: Connecting)" but logged at ERROR, and server identity registration was skipped. A new `managed.ErrConnectAlreadyActive` sentinel (same message text) lets `AddServer` treat it as success at debug level. - **`set_profile` under-reported a switchable client's reach.** After a successful switch, `resolveEffectiveProfileForJustSetSlug` treated the client binding as authoritative and reported the binding's servers instead of the selected profile's. ## Verification - Cross-model review: codex gpt-6.1-sol, chunked. Three low findings: two doc-wording findings are applied, and the third (the per-process advisory set is never cleared) is a deliberate trade-off. - Live re-verification on isolated instances: each symptom was reproduced on a main build and is gone on this branch. The upgrade case was run over a v0.52.1 data dir.
Dumbris
added a commit
that referenced
this pull request
Oct 12, 2026
…ts (#1573) ## Summary `./scripts/run-web-smoke.sh` without `MCPPROXY_FIXTURE_PATH` failed 3 tests: the `navigation-consistency.spec.ts:397` "Home strip usage-strip-{calls,blocked,errors}" SC-009 tests each timed out waiting for the Home usage strip. **Root cause: the test, not the strip.** Without a fixture path the smoke fleet is empty. Since #1467 (fix-ux-residuals), Home shows the "Get started" card on an instance with no servers and hides the usage strip by design (`Home.vue:47`, `showGettingStarted`). Tool-call history plays no part: the strip renders with zero counts whenever servers exist. **Fix:** the tests now wait for either the strip link or the Get started card. In the empty state they assert that no `usage-strip-*` link is rendered and skip, matching the sweep's other server-dependent checks. The absence check targets the child links because Vue attribute fallthrough replaces the strip root's `data-test` with Home's `home-usage-strip-*` (found in cross-review). ## Verification (rebuilt with `make build`, scratch ports 18896/18897) - Empty fleet (the reported repro): 49 passed, 73 skipped, **0 failed** (was 3 failed). - With `MCPPROXY_FIXTURE_PATH` (CI config): all 3 strip tests **pass**. The strip itself works. - Fixture mode shows 3 failures that also occur without this change and are unrelated: `profiles-scope.spec.ts:231` (activity table overflows by 34px at 1100px) and `visual-a11y-sweep.spec.ts:663` /clients corporate+dark (the orphan chip now reads "Locked … locked by credential" instead of "missing"). They are not addressed here. Reviewed by opencode `gpt-6.1-sol`: round 1 found the fallthrough issue, now fixed; round 2 returned CLEAN. 🤖 Generated with [Claude Code](https://claude.com/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.
The last open items of the Spec 109 done check, fixed test-first inside the files Spec 109 owns (Home, Activity, Server Detail, macOS Home). There is no backend change, no new dependency and no golden change.
What changes for the user
Web UI Home
mcpproxy attentionstill prints "All clear".Web UI Activity
Web UI Server Detail
macOS app
CLI, REST and MCP are unchanged.
Audit findings
Spec and tests
Spec: specs/109-ux-navigation-consistency (tasks T166 to T171, research D36, spec.md US1-4, FR-051, FR-070, FR-073, url-filter-contract, health-vocabulary, parity row 22, acceptance index, quickstart recipe fix-ux-residuals, docs/web-ui/dashboard.md).
New tests: home-token-savings-estimate, home-getting-started, activity-scope-conflict-clear, activity-blocked-in-calls-view and server-detail-health-status-colour (vitest), and HomeTokenSavingsBadgeTests (XCTest). home-attention was updated to use a configured server. Full vitest, vue-tsc, the frontend build, the full swift test suite and the Spec 109 traceability and parity Go tests pass.
Left for follow-up issues: refused attempts in the default Tool calls view across Web, macOS and CLI together; the "1 calls" label on the profile card (Spec 108); sharing the status-to-tone map and the estimate tooltip; a macOS Home getting-started card.
Refs #1394 (items 1 and 2 are fixed here; the low items stay open).