cliffhall
1bbdef03eb
fix(oauth): keep the scope filter from overwriting persisted storage
...
Copilot review round 5 on #2114 — a hole in last round's fix.
When the persisted scope was `offline_access` alone,
`scopeForDeclinedRefreshGrant` returned undefined.
`OAuthManager.createOAuthProvider` reads that as "nothing stored" and
seeds storage with the configured scope, so the request-only filter
silently overwrote the value it promised to leave alone — and
re-enabling the grant could no longer restore it.
It now falls back to the configured scope, which is both the right
thing to request and inert to that branch. The previous "storage is
never rewritten" test could not see this: it ran at the provider level,
while the seeding branch lives in the manager. The new regression runs
there, and fails when the fallback is removed.
Also corrects the EMA rationale, which was wrong even though its
conclusion held. `createOAuthProviderForTransport` does build a
`BaseOAuthClientProvider` and wrap it, and `EmaTransportOAuthProvider`
forwards `clientMetadata` — so the setting is not bypassed outright.
What it cannot change is the IdP authorization leg's fixed
`openid offline_access`, which is the leg the user signs in through and
therefore the reason the control cannot affect EMA's consent behavior.
Fixed in the docs, the code comment, the UI string and the test.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013hzwzS8UvBsr4yZm7o7sev
Signed-off-by: cliffhall <cliff@futurescale.com>
2026-08-24 21:48:21 -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
feat(web): state the file store as a sentence, and copy its path on click
2026-08-22 14:05:13 -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
fix: read the completions map by own property, not through the prototype
2026-08-17 01:25:58 -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
fix(web): focus the enlarged field before paint, and derive its section width
2026-08-24 10:03:44 -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
fix(auth): make the durability guard provenance-aware, and harden the claim
2026-08-22 22:10:07 -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
fix(oauth): keep the scope filter from overwriting persisted storage
2026-08-24 21:48:21 -04:00
ServerSettingsModal
feat(oauth): make the refresh_token grant opt-out per server
2026-08-24 19:50:57 -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(web): reset a tool form by row identity, not by tool name
2026-08-24 10:18:55 -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