inspector/clients/web/src/components/groups
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Cliff Hall 5ee347571f
feat(web,core): persist & edit STDIO cwd/env in Server Settings (#1515) (#1518)
* feat(web,core): edit STDIO cwd/env in Server Settings (#1515)

Persist and edit a STDIO server's working directory and environment
variables through the Server Settings modal.

- Add `env` (pair-array, mirrors headers) and `cwd?` to
  `InspectorServerSettings`.
- `storedFieldsToInspectorSettings` lifts the stdio config's `env`/`cwd`
  into settings so the modal can show them; they stay on `config` for the
  transport. Add `envRecordToPairs` / `envPairsToRecord` helpers.
- `env`/`cwd` remain config-owned on disk (the standard mcp.json location):
  the `/api/servers` PUT route writes an edited settings.env/cwd back onto
  the stored stdio config on a settings-only patch (supporting clear), and a
  config-providing PUT keeps config authoritative. `validateSettings`
  accepts `env`/`cwd`.
- Server Settings modal: Working Directory field in Options and a dedicated
  collapsible Environment Variables section — both STDIO-only.
- Registry server.json import sets no `cwd` (the schema has no
  working-directory concept); documented in serverJson.ts.

Tests: serverList converter round-trip, route write-through (set/clear,
config-precedence, non-stdio no-leak, validation), import preservation
(client-config cwd, registry cwd skip), and form/modal component coverage.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(web): preserve config env/cwd when a settings PUT omits them (#1515 review)

Address Claude's review of #1518.

- `/api/servers` PUT now distinguishes an *absent* `env`/`cwd` (preserve the
  stored value) from an explicit empty list / blank string (clear). Previously
  `validateSettings` coerced a missing `env` to `[]`, so an env-unaware caller
  patching only a timeout would silently wipe the server's env/cwd. The
  integrated web client always resends the full GET-rehydrated env, so it was
  unaffected — this protects the raw HTTP contract.
- `validateSettings` reports `envProvided`/`cwdProvided`; the write-through only
  touches `config.env`/`cwd` for fields the caller actually sent.
- On the omit path, rehydrate the untouched env's keychain values onto the
  rebuilt entry so the secret reconcile re-persists them rather than sweeping
  the blanked-on-disk keys out of the keychain.
- Minor: guard the stdio cast in `mcpConfigToServerEntries` on the transport
  type instead of casting unconditionally.
- Test: settings-only PUT omitting env/cwd preserves config keys + cwd + the
  keychain secret.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 19:15:43 -04:00
..
AppControls fix(web): section-header hover outline + clear buttons out of tab order (#1487) (#1488) 2026-06-14 22:27:46 -04:00
AppDetailPanel feat(web): render pending sampling/elicitation requests (#1407) (#1411) 2026-06-02 17:52:20 -04:00
AppListItem feat(apps): add AppListItem and AppDetailPanel groups (#1261) (#1273) 2026-05-04 10:28:58 -04:00
ConnectionInfoContent feat(connection-info): wire Connection Info modal to the connection handshake (#1377) 2026-05-30 16:42:37 -04:00
ConnectionInfoModal feat(connection-info): wire Connection Info modal to the connection handshake (#1377) 2026-05-30 16:42:37 -04:00
ElicitationFormPanel feat(web): render pending sampling/elicitation requests (#1407) (#1411) 2026-06-02 17:52:20 -04:00
ElicitationUrlPanel feat(web): URL elicitation — explicit completion step + error-path (-32042) handling (#1415) (#1436) 2026-06-06 18:25:01 -04:00
ExperimentalFeaturesPanel fix(web): section-header hover outline + clear buttons out of tab order (#1487) (#1488) 2026-06-14 22:27:46 -04:00
HistoryControls fix(web): section-header hover outline + clear buttons out of tab order (#1487) (#1488) 2026-06-14 22:27:46 -04:00
HistoryEntry feat(web): History — Pin & Replay, plus two history-status fixes (#1438) (#1441) 2026-06-07 20:21:52 -04:00
HistoryListPanel fix(web): section-header hover outline + clear buttons out of tab order (#1487) (#1488) 2026-06-14 22:27:46 -04:00
ImportServerJsonPanel feat(web,core): import client configs and registry server.json (#1348) (#1511) 2026-06-23 19:52:08 -04:00
InlineElicitationRequest test(coverage): bootstrap vitest unit infra and add tests at 90%+ per file (#1245) (#1269) 2026-05-01 15:15:32 -04:00
InlineSamplingRequest test(coverage): bootstrap vitest unit infra and add tests at 90%+ per file (#1245) (#1269) 2026-05-01 15:15:32 -04:00
LogControls fix(web): section-header hover outline + clear buttons out of tab order (#1487) (#1488) 2026-06-14 22:27:46 -04:00
LogStreamPanel fix(web): give History/Network/Logging list scrollbars a gutter, hide when idle (#1474) (#1475) 2026-06-14 10:03:30 -04:00
MessageDirectionFilter fix(web): filter toggle hover as border, not background (#1460) (#1461) 2026-06-13 19:52:27 -04:00
NetworkControls fix(web): section-header hover outline + clear buttons out of tab order (#1487) (#1488) 2026-06-14 22:27:46 -04:00
NetworkEntry feat(web): History — Pin & Replay, plus two history-status fixes (#1438) (#1441) 2026-06-07 20:21:52 -04:00
NetworkStreamPanel fix(web): give History/Network/Logging list scrollbars a gutter, hide when idle (#1474) (#1475) 2026-06-14 10:03:30 -04:00
OutputValidationModal feat(apps): render running MCP Apps end-to-end (#1370) (#1403) 2026-06-01 18:01:44 -04:00
PendingClientRequestModal feat(web): add Mantine clear buttons to text inputs app-wide (#1333) (#1448) 2026-06-12 09:51:05 -04:00
PendingClientRequests test(coverage): bootstrap vitest unit infra and add tests at 90%+ per file (#1245) (#1269) 2026-05-01 15:15:32 -04:00
PromptArgumentsForm fix(web): section-header hover outline + clear buttons out of tab order (#1487) (#1488) 2026-06-14 22:27:46 -04:00
PromptControls fix(web): section-header hover outline + clear buttons out of tab order (#1487) (#1488) 2026-06-14 22:27:46 -04:00
PromptListItem test(coverage): bootstrap vitest unit infra and add tests at 90%+ per file (#1245) (#1269) 2026-05-01 15:15:32 -04:00
PromptMessagesDisplay Port resource preview UX improvements to PromptsScreen (#1328) (#1331) 2026-05-23 09:20:20 -04:00
ResourceControls fix(web): section-header hover outline + clear buttons out of tab order (#1487) (#1488) 2026-06-14 22:27:46 -04:00
ResourceLink feat(web): expandable resource_link with read-on-demand (#1449) (#1456) 2026-06-13 17:15:25 -04:00
ResourceListItem feat(apps): AppsScreen and InspectorView wiring (#1263) (#1286) 2026-05-07 14:18:27 -04:00
ResourcePreviewPanel fix(web): hide resource subscription UI when server lacks subscribe capability (#1479) 2026-06-14 12:54:19 -04:00
ResourceSubscribedItem Expose live resource subscriptions via a hook (#1325) (#1326) 2026-05-19 20:15:51 -04:00
ResourceTemplatePanel fix(web): section-header hover outline + clear buttons out of tab order (#1487) (#1488) 2026-06-14 22:27:46 -04:00
RootsTable fix(web): section-header hover outline + clear buttons out of tab order (#1487) (#1488) 2026-06-14 22:27:46 -04:00
SamplingRequestPanel fix(web): section-header hover outline + clear buttons out of tab order (#1487) (#1488) 2026-06-14 22:27:46 -04:00
SchemaForm fix(web): section-header hover outline + clear buttons out of tab order (#1487) (#1488) 2026-06-14 22:27:46 -04:00
ServerAddMenu feat(web,core): import client configs and registry server.json (#1348) (#1511) 2026-06-23 19:52:08 -04:00
ServerCard feat(web,core): import client configs and registry server.json (#1348) (#1511) 2026-06-23 19:52:08 -04:00
ServerConfigModal feat(web,core): import client configs and registry server.json (#1348) (#1511) 2026-06-23 19:52:08 -04:00
ServerImportConfigModal feat(web,core): import client configs and registry server.json (#1348) (#1511) 2026-06-23 19:52:08 -04:00
ServerImportJsonModal feat(web,core): import client configs and registry server.json (#1348) (#1511) 2026-06-23 19:52:08 -04:00
ServerListControls feat(web): catalog vs read-only session launch model + apply --header (#1481, #1483) (#1496) 2026-06-16 14:24:58 -04:00
ServerRemoveConfirmModal feat(servers): persist server list to ~/.mcp-inspector/mcp.json (#1343) (#1349) 2026-05-23 14:26:23 -04:00
ServerSettingsForm feat(web,core): persist & edit STDIO cwd/env in Server Settings (#1515) (#1518) 2026-06-24 19:15:43 -04:00
ServerSettingsModal feat(web,core): persist & edit STDIO cwd/env in Server Settings (#1515) (#1518) 2026-06-24 19:15:43 -04:00
SortableServerCard feat(web): reorderable ServerCards — drag-and-drop + keyboard (#1369) (#1447) 2026-06-09 14:15:58 -04:00
TaskCard feat(web): History — Pin & Replay, plus two history-status fixes (#1438) (#1441) 2026-06-07 20:21:52 -04:00
TaskControls fix(web): section-header hover outline + clear buttons out of tab order (#1487) (#1488) 2026-06-14 22:27:46 -04:00
TaskListPanel feat(web): tool progress toasts + persist all per-screen state across navigation (#1414, #1417) (#1420) 2026-06-03 12:46:37 -04:00
ToolControls fix(web): section-header hover outline + clear buttons out of tab order (#1487) (#1488) 2026-06-14 22:27:46 -04:00
ToolDetailPanel fix(web): collapsible tool description in ToolDetailPanel — shown by default (#1381) (#1459) 2026-06-13 19:13:29 -04:00
ToolListItem feat(apps): render tool.icons on ToolListItem and ToolDetailPanel (#1264) (#1293) 2026-05-09 15:45:53 -04:00
ToolResultPanel feat(web): expandable resource_link with read-on-demand (#1449) (#1456) 2026-06-13 17:15:25 -04:00
UrlElicitationErrorModal feat(web): URL elicitation — explicit completion step + error-path (-32042) handling (#1415) (#1436) 2026-06-06 18:25:01 -04:00
ViewHeader feat(web): show Apps, Prompts, Resources, and Tasks tabs only when the server exposes the relevant items (#1450) (#1453) 2026-06-12 18:11:52 -04:00
historyUtils.test.ts test(coverage): bootstrap vitest unit infra and add tests at 90%+ per file (#1245) (#1269) 2026-05-01 15:15:32 -04:00
historyUtils.ts feat(web): History — Pin & Replay, plus two history-status fixes (#1438) (#1441) 2026-06-07 20:21:52 -04:00