inspector/clients/web/src/components/groups
Repository files (latest commit first)
Filename Latest commit message Latest commit date
cliffhall ab40fb621a fix(web): key tool selection by row identity, not name
#1961 keyed the sidebar's React children by source position, but everything
downstream still identified a tool by `tool.name`. With a `tools/list` that
repeats a name, both copies highlighted at once, the click guard made the
other copy a no-op, and `tools.find((t) => t.name === …)` always resolved to
the first — so a later copy rendered but could never be opened.

Thread the row key through selection instead:

- `utils/toolUtils.ts` now owns `toolRowKey` (moved out of ToolControls) and
  adds `findToolByRowKey`, which compares computed keys rather than parsing
  one so the two can't drift.
- `ToolControls`: `selectedName` → `selectedKey`; the highlight and the click
  guard compare keys, and `onSelectTool` emits the row key.
- `ToolsScreen`: `ToolsUiState.selectedToolName` → `selectedToolKey`, with
  both lookups going through `findToolByRowKey`. Renamed through
  `screenUiState.ts` and `App.tsx`'s `onToolsUiChange`.

`onCallTool` still sends `selectedTool.name` — the duplicated name is the
genuine wire identity; only the UI identity needed to be unique.

Also prefixes the excluded (SEP-2243) rows' keys: they render into the same
`Stack` as the list rows but index within their own list, so an excluded tool
sharing a name and index with a listed one collided in the key space.

Closes #2001

Signed-off-by: cliffhall <cliff@futurescale.com>
2026-08-17 00:02:13 -04:00
..
AppControls SDK v2 migration (behavior-neutral, versionNegotiation: 'legacy') (#1624) 2026-07-15 10:44:24 -04:00
AppDetailPanel fix: gate submission on unsendable field text, and on required tool args 2026-08-15 21:19:04 -04:00
AppListItem refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
ClientSettingsForm refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
ClientSettingsModal refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
ConnectionInfoContent Merge pull request #2039 from modelcontextprotocol/v2/chore/1959-no-floating-promises 2026-08-16 22:35:52 -04:00
ConnectionInfoModal fix(web): render the connected header when a modern server omits serverInfo (#1773) 2026-07-25 11:40:31 -04:00
ElicitationFormPanel fix: gate submission on unsendable field text, and on required tool args 2026-08-15 21:19:04 -04:00
ElicitationUrlPanel refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
ExperimentalFeaturesPanel refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
ImportServerJsonPanel refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
InlineElicitationRequest fix: gate submission on unsendable field text, and on required tool args 2026-08-15 21:19:04 -04:00
InlineSamplingRequest MRTR: drive input_required manually to keep pending-request UX (#1704) (#1719) 2026-07-17 23:15:19 -04:00
LogControls refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
LogStreamPanel chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
MessageDirectionFilter chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
MonitoringControls chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
MonitoringScreen chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
MrtrConversation chore(deps): migrate to eslint 10 to clear the brace-expansion DoS advisory (#1900) 2026-08-01 20:13:30 -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 chore(deps): migrate to eslint 10 to clear the brace-expansion DoS advisory (#1900) 2026-08-01 20:13:30 -04:00
NetworkStreamPanel chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
OutputValidationModal chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
PendingClientRequestModal chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
PendingClientRequests refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
PromptArgumentsForm chore(deps): migrate to eslint 10 to clear the brace-expansion DoS advisory (#1900) 2026-08-01 20:13:30 -04:00
PromptControls fix: salvage a list result's valid entries when one is malformed (#1909) 2026-08-15 16:52:11 -04:00
PromptListItem refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
PromptMessagesDisplay SDK v2 migration (behavior-neutral, versionNegotiation: 'legacy') (#1624) 2026-07-15 10:44:24 -04:00
ProtocolControls refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
ProtocolEntry fix: mark a rejected standalone response entry as an error too 2026-08-08 17:11:34 -04:00
ProtocolListPanel chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
ReAuthBanner fix(auth): explicit re-authorize when the OAuth callback state was lost (#1808) (#1810) 2026-07-27 18:08:31 -04:00
ResourceControls chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
ResourceLink chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
ResourceListItem refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
ResourcePreviewPanel SDK v2 migration (behavior-neutral, versionNegotiation: 'legacy') (#1624) 2026-07-15 10:44:24 -04:00
ResourceSubscribedItem test: raise per-file coverage gate to 90 across all clients (closes #1271) (#1532) 2026-06-27 15:26:03 -04:00
ResourceTemplatePanel chore(deps): migrate to eslint 10 to clear the brace-expansion DoS advisory (#1900) 2026-08-01 20:13:30 -04:00
RootsTable SDK v2 migration (behavior-neutral, versionNegotiation: 'legacy') (#1624) 2026-07-15 10:44:24 -04:00
SamplingRequestPanel refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
SchemaForm docs: correct how a null reaches the number field 2026-08-16 01:08:40 -04:00
ServerAddMenu feat(web,core): import client configs and registry server.json (#1348) (#1511) 2026-06-23 19:52:08 -04:00
ServerCard refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
ServerConfigModal revert(web): drop custom headers from the manual add form (#1915) 2026-08-16 22:57:34 -04:00
ServerImportConfigModal refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
ServerImportJsonModal refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
ServerListControls refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
ServerRemoveConfirmModal refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
ServerSettingsForm Merge branch 'v2/main' into v2/feat/1915-manual-server-headers 2026-08-16 23:21:17 -04:00
ServerSettingsModal Merge branch 'v2/main' into v2/feat/1915-manual-server-headers 2026-08-16 23:21:17 -04:00
SortableServerCard refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
StepUpAuthModal refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
StructuredOutputPanel chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
TaskCard chore(deps): migrate to eslint 10 to clear the brace-expansion DoS advisory (#1900) 2026-08-01 20:13:30 -04:00
TaskControls refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
TaskListPanel refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
ToolControls fix(web): key tool selection by row identity, not name 2026-08-17 00:02:13 -04:00
ToolDetailPanel fix: gate submission on unsendable field text, and on required tool args 2026-08-15 21:19:04 -04:00
ToolListItem refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
ToolResultPanel fix(web): name an empty tool result instead of "No results yet" (#1860) 2026-08-16 18:31:01 -04:00
UrlElicitationErrorModal chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
ViewHeader test(web): settle real-timer Transitions so the coverage gate can't leak 'window is not defined' (#1786) (#1793) 2026-07-26 15:49:33 -04:00
protocolUtils.test.ts Resources: subscriptions/listen model on modern servers (era fork) (#1630) (#1730) 2026-07-20 19:33:40 -04:00
protocolUtils.ts Resources: subscriptions/listen model on modern servers (era fork) (#1630) (#1730) 2026-07-20 19:33:40 -04:00