inspector/clients/web/src/components/elements
Repository files (latest commit first)
Filename Latest commit message Latest commit date
cliffhall 71cb7f3eae feat(web): state the file store as a sentence, and copy its path on click
The footer's file states now read "Secrets: Plaintext file. Owner-only
permissions." and "Secrets: Encrypted file. Owner-only permissions.",
and the band itself became the copy affordance for the path.

Three things worth reviewing:

- The path is no longer printed on the band. It goes to the clipboard
  instead, which means the only place it stays *readable* is the
  button's accessible name — so that carries it in full
  ("Copy secrets file path: /home/node/.mcp-inspector/secrets.json")
  rather than a generic "Copy". A clipboard is no use to a screen-reader
  user who cannot inspect it.

- "Owner-only permissions." is a claim of fact, so it is made only when
  the mode was verified as 0600. `looseMode` is set exactly when it is
  something else and could not be tightened, and the message says
  "Mode 0644 — not owner-only." there. A footer that asserted the
  opposite of the truth about a secrets file is the one failure this
  band exists to prevent, so it has its own test.

- The footer phrases its own copy rather than reusing
  `secretStorageLabel` for the file case: that label is parenthetical
  ("File (unencrypted)") because the startup banner appends
  " at <path>" to it. The tone and the underlying facts still come from
  the shared helpers, so the two surfaces cannot disagree about
  anything that matters. Memory's line is still derived from the shared
  caveat.

The click target is an `UnstyledButton` filling the band edge to edge —
a real control, reachable by keyboard and announced as a button, rather
than a click handler on a div. Padding moved from the band to the inner
row so the button has no dead margins.

Signed-off-by: cliffhall <cliff@futurescale.com>
2026-08-22 14:05:13 -04:00
..
AnnotationBadge refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
AppRenderer refactor(web): sharpen the src/lib vs src/utils rule and move misfiled modules (#1784) 2026-07-25 22:24:30 -04:00
CapabilityItem SDK v2 migration (behavior-neutral, versionNegotiation: 'legacy') (#1624) 2026-07-15 10:44:24 -04:00
CategoryBadge chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
ClearButton fix(web): section-header hover outline + clear buttons out of tab order (#1487) (#1488) 2026-06-14 22:27:46 -04:00
CodeHighlight feat(web): expand ContentViewer to render PDF, CSV, HTML, XML, JSON, CSS (closes #1329) (#1551) 2026-06-30 09:18:43 -04:00
ConnectionToggle web: Accessibility — accessible palette + WCAG AA contrast, labels, names, roles (#1679) 2026-07-13 18:20:55 -04:00
ContentViewer refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
CopyButton fix: disambiguate the two token rows' controls for screen readers (#2019) 2026-08-15 21:13:11 -04:00
CopyrightBadge web: server-screen, footer, monitoring-sidebar, and responsive-header polish (#1683) 2026-07-14 08:55:39 -04:00
EmbeddableScrollArea chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
EraBadge History: MRTR conversation grouping + modern message vocabulary (#1705) 2026-07-17 20:02:11 -04:00
ExpandToggle chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
FilterToggleButton refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
ListChangedIndicator test(coverage): bootstrap vitest unit infra and add tests at 90%+ per file (#1245) (#1269) 2026-05-01 15:15:32 -04:00
ListLoadError fix: surface list-fetch failures instead of swallowing them 2026-08-08 16:48:48 -04:00
ListPaginationControls Thread cacheMode through managed list refresh via SDK cache-aware verbs (#1721) (#1723) 2026-07-19 01:06:31 -04:00
ListToggle refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
LogEntry refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
LogLevelBadge refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
MalformedItemsWarning fix: salvage a list result's valid entries when one is malformed (#1909) 2026-08-15 16:52:11 -04:00
McpErrorBadge chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
MessageBubble SDK v2 migration (behavior-neutral, versionNegotiation: 'legacy') (#1624) 2026-07-15 10:44:24 -04:00
MessageDirectionBadge chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
MethodBadge chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
MonitoringToggle chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
MrtrOriginNote refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
PinToggle chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
ProgressDisplay SDK v2 migration (behavior-neutral, versionNegotiation: 'legacy') (#1624) 2026-07-15 10:44:24 -04:00
ReplayButton chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
ResizeHandle chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
ResourceLinkInfo web: Group tool-result resource_links in a scrollable "Resource Links" box with Protocol colors (#1686) 2026-07-15 14:07:27 -04:00
ScreenStage chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
SecretStorageFooter feat(web): state the file store as a sentence, and copy its path on click 2026-08-22 14:05:13 -04:00
ServerStatusIndicator web: server-screen, footer, monitoring-sidebar, and responsive-header polish (#1683) 2026-07-14 08:55:39 -04:00
SortToggle refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
SubscribeButton refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
SubscriptionStreamBadge refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
TaskStatusBadge refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
TransportBadge refactor(web): sweep AGENTS.md TypeScript + Mantine rule violations (#1771) 2026-07-25 11:38:49 -04:00
VersionBadge web: server-screen, footer, monitoring-sidebar, and responsive-header polish (#1683) 2026-07-14 08:55:39 -04:00
accessibleTextColor.test.ts web: Accessibility — accessible palette + WCAG AA contrast, labels, names, roles (#1679) 2026-07-13 18:20:55 -04:00
accessibleTextColor.ts web: Accessibility — accessible palette + WCAG AA contrast, labels, names, roles (#1679) 2026-07-13 18:20:55 -04:00
filledBadgeColor.test.ts web: Accessibility — accessible palette + WCAG AA contrast, labels, names, roles (#1679) 2026-07-13 18:20:55 -04:00
filledBadgeColor.ts web: Accessibility — accessible palette + WCAG AA contrast, labels, names, roles (#1679) 2026-07-13 18:20:55 -04:00