🎃 Add a ⌘K / Ctrl+K command palette to the admin UI
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- typescript
- Ambito
- frontend
Direzione di ricerca
Start with the mount point in packages/frontend/src/components/app-shell.tsx and the NAV array in components/app-sidebar.tsx, then the SIDEBAR_SECTIONS in app/settings/layout.tsx that move into a new lib/navigation.ts. The palette goes in components/command-palette.tsx, and the e2e reference is tests/e2e/mcp-server-connect-clients.spec.ts. Done when Ctrl+K opens and closes the palette on AppShell pages, role-based entries are filtered, the sidebar and settings navigation look unchanged, and the new tests/e2e/command-palette.spec.ts passes.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Part of the October Challenge #997.
Why
The admin UI has ten sidebar entries, eight settings pages and, in a workspace in daily use, dozens of connectors and MCP servers. Reaching one connector means sidebar → Connectors → search → click. A ⌘K / Ctrl+K command palette (Linear, Vercel, GitHub and Grafana have one) lets keyboard users jump to any page, connector or MCP server, or run a common action, in a couple of keystrokes. Nothing like it exists in the frontend today: no palette component, no global keyboard shortcut.
Self-hosted vs Cloud
- Self-hosted: enabled in Community and Business. Frontend only: no new endpoint, no
ee/code. - Cloud (
DEPLOYMENT_MODE=cloud): enabled. The palette lists the same entries as the sidebar and the settings navigation, with the same rules: "Single sign-on" is hidden on Cloud (selfHostedOnly,settings/layout.tsx:41-44). Connectors and servers come from the existing organization-scoped list endpoints, so only the current workspace's records appear, and the cached lists are dropped after a workspace switch. - Who can use it: any signed-in user. Admin-only settings (
adminOnly,settings/layout.tsx:39-46) appear only forADMIN. "Add connector" is hidden forVIEWER, who cannot create connectors (connectors.controller.ts:589-593). The palette is mounted insideAppShell, so it never appears on/loginor other signed-out pages.
What to build
- Shared navigation data: move
NAVout ofcomponents/app-sidebar.tsx:45-73andSIDEBAR_SECTIONSout ofapp/settings/layout.tsx:27-49intopackages/frontend/src/lib/navigation.ts, and import them in the sidebar, the settings layout and the palette, so a new page shows up everywhere at once. The icons can stay where they are. - Component
components/command-palette.tsxon@radix-ui/react-dialog, which the app already uses (for exampleconnectors/page.tsx:271-300). No new dependency. A text input above a grouped result list: Pages, Settings, Connectors, MCP servers, Actions. Matching is case-insensitive and every typed word must appear in the label or in a short keyword list per entry (for example "logs" for Audit Log). At most 8 results per group. - Records: on first open, load
connectors.list(token)andmcpServers.list(token)(lib/api.ts:313,:1391) and keep them while the app is open; reload after a workspace switch. Show a loading row; if a request fails, pages and actions still work. Entries link to/connectors/<id>and/mcp-server/<id>. - Actions: Add connector (
/connectors/new), Browse Marketplace (/connectors/store), Toggle theme (useTheme().setTheme), "Switch to " for each other workspace (useAuth().switchOrg), Log out (useAuth().logout). - Keyboard and accessibility: ⌘K on macOS and Ctrl+K elsewhere toggles the palette from anywhere inside
AppShell, also while focus is in a text field; callpreventDefault()so the browser's own Ctrl+K does not fire. ↑/↓ moves, Enter runs, Esc closes and focus returns to where it was.role="combobox"on the input witharia-controlsandaria-activedescendant;role="listbox"androle="option"on the results. - Visible trigger: a search button in the
AppShellheader next to the theme toggle (app-shell.tsx:138-145) that shows "⌘K" or "Ctrl K" depending on the platform, so the palette can be found and used on touch devices.
Where to look
packages/frontend/src/components/app-shell.tsx:69-168: mount point and header actions.packages/frontend/src/components/app-sidebar.tsx:45-91:NAV,bestHref, workspace switcher and logout.packages/frontend/src/app/settings/layout.tsx:9-55: settings entries and theiradminOnly/selfHostedOnlyrules.packages/frontend/src/lib/auth-context.tsx:29-53:user,orgs,switchOrg,logout,deploymentMode.packages/frontend/src/lib/theme-context.tsx:20:useTheme.packages/frontend/src/lib/api.ts:313,:1391:connectorsandmcpServersclients.packages/frontend/src/app/connectors/page.tsx:271-300: Radix Dialog styling to match.packages/frontend/tests/e2e/mcp-server-connect-clients.spec.ts:21-54: how tests fake a session and stub the API.
Acceptance criteria
- Ctrl+K opens the palette on every
AppShellpage and Esc closes it; it does not open on/login. - Typing "audit" and Enter opens
/logs; typing part of a connector's name opens that connector. - An admin sees "Users"; a viewer sees neither "Users" nor "Add connector". With
deploymentMode: 'cloud'in the stubbed/health/server-info, "Single sign-on" is not listed. - The sidebar and the settings navigation look and behave as before.
- Playwright test
tests/e2e/command-palette.spec.tscovering the points above, with/api/connectors,/api/mcp-serversand/health/server-infostubbed. Run withcd packages/frontend && npm run test:e2e. - A keyboard-only walkthrough and a screen reader check (VoiceOver or NVDA) described in the PR.
Out of scope
- Searching tools, logs, knowledge-graph content or docs, and any backend search endpoint.
- Recent items, favourites, configurable shortcuts.
- Translating the labels (the i18n foundation is a separate challenge issue).
Size
M (1–2 days)
How to claim
Comment "I'd like to work on this" and we'll assign you. Rules in #997.
- Lingua principale
- TypeScript
- Stelle
- 856
- Fork
- 82
- Merge medio
- 8h 27m
- PR unite (30g)
- 104
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di HelpCode-ai/anythingmcp
-
good first issue hacktoberfest
Difficoltà 2/5 Mezza giornata Idoneità per principianti 70/100
HelpCode-ai/anythingmcp#996 ·
I maintainer di solito rispondono entro 1 giorno
-
good first issue hacktoberfest
Difficoltà 2/5 Mezza giornata Idoneità per principianti 72/100
HelpCode-ai/anythingmcp#995 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement good first issue hacktoberfest help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
HelpCode-ai/anythingmcp#982 ·
I maintainer di solito rispondono entro 1 giorno
-
good first issue hacktoberfest
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
HelpCode-ai/anythingmcp#745 ·
I maintainer di solito rispondono entro 1 giorno
-
🐣 Good first issue: contribute a new MCP adapterForse di nuovo libera @7k777 l’ha presa 20 giorni fa e non c’è nessuna pull request aperta. Apertaenhancement good first issue hacktoberfest help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
HelpCode-ai/anythingmcp#150 · 18 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di HelpCode-ai/anythingmcp
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
cline/mcp-marketplace#2932 ·
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
lingdojo/kana-dojo#32188 · 1 commento · 5 reazioni ·
I maintainer di solito rispondono entro 1 giorno
-
triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
Portkey-AI/gateway#1844 ·
I maintainer di solito rispondono entro 1 giorno
-
needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 61/100
rjsf-team/react-jsonschema-form#5495 ·
I maintainer di solito rispondono entro 2 giorni