You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Two UX gaps on the Workspaces tab and the meta-tool approval prompt.
Clear-all-unmapped:
The Workspaces tab lists folders connected clients have reported but that
aren't mapped to a FeatureSet yet (amber "Unmapped" cards). There was no way
to dismiss them in bulk. Adds a "Clear unmapped" action that forgets every
unmapped reported root in one go:
- SessionRootsRegistry::forget_unmapped_roots() drops the unmapped roots
from the in-memory registry. A session left with no roots is removed
entirely (with its resolution snapshot + probe throttle) so its next
tools/list re-probes the peer and the resolver re-fires
WorkspaceNeedsBinding — i.e. the "map this folder?" prompt is offered
again. Sessions still holding a mapped root are untouched.
- clear_unmapped_reported_roots Tauri command snapshots the bound roots
(same exact-match rule the UI uses to label a card "Unmapped"), clears
the rest, and emits SessionRootsChanged so the tab refreshes.
- Workspaces tab gains a "Clear unmapped" button (shown only while
counts.unmapped > 0) behind a confirm, with a toast that sets the
"you'll be asked again" expectation.
Approval opt-out visibility:
The "manage approval prompts" escape hatch on the meta-tool approval dialog
was an 11px muted link that was easy to miss. Promotes it to a bordered,
icon-led button above a divider so the path to turning these prompts off is
actually noticeable. Behavior is unchanged (deny + route to Built-in tab).
Tests: registry unit tests for forget_unmapped_roots (clears unmapped
sessions, keeps mixed sessions); a Workspaces test covering the button's
visibility and the confirm -> clear flow.
Signed-off-by: Mohammod Al Amin Ashik <maa.ashik00@gmail.com>
Copy file name to clipboardExpand all lines: apps/desktop/src/features/workspaces/WorkspacesPage.tsx
+44Lines changed: 44 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -32,6 +32,7 @@ import {
32
32
useConfirm,
33
33
}from'@mcpmux/ui';
34
34
import{
35
+
clearUnmappedReportedRoots,
35
36
createWorkspaceBinding,
36
37
deleteWorkspaceBinding,
37
38
getWorkspaceEffectiveFeatures,
@@ -272,6 +273,36 @@ export function WorkspacesPage() {
272
273
}
273
274
};
274
275
276
+
// Bulk "clear" for the unmapped (amber) folders. These are live-reported
277
+
// roots with no binding — clearing drops them from the gateway's in-memory
278
+
// session-roots registry so this list empties in one action, and the
279
+
// "map this folder?" prompt is offered again next time those apps report a
280
+
// folder. Mapped folders are untouched.
281
+
consthandleClearUnmapped=async()=>{
282
+
constn=counts.unmapped;
283
+
constok=awaitconfirm({
284
+
title: 'Clear unmapped folders',
285
+
message: `Remove ${n} unmapped folder${n===1 ? '' : 's'} from this list. McpMux will offer to map ${n===1 ? 'it' : 'them'} again the next time those apps report the folder.`,
0 commit comments