🎃 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
- 65/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- playwright, react, tailwindcss, typescript
- Ambito
- frontend
Direzione di ricerca
Start with app-sidebar.tsx and settings/layout.tsx to understand their navigation lists and access filters, then read app-shell.tsx to find where the palette should be mounted. Check api.ts and the redesign.spec.ts Playwright pattern; implement the shared navigation and palette, then run the new command-palette.spec.ts and frontend lint. Done means the listed shortcuts, filters, navigation, mobile trigger, and accessibility behavior pass the acceptance criteria.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Part of the October Challenge #846.
Why
Workspaces grow to dozens of connectors and several MCP servers, and getting to "the SAP connector's tools" means sidebar → Connectors → scroll → click. A command palette (as in Linear, Vercel, GitHub, Supabase) lets power users jump anywhere with the keyboard. There is no keyboard navigation of this kind in the frontend today.
Self-hosted vs Cloud
- Self-hosted: enabled in Community and Business.
- Cloud (
DEPLOYMENT_MODE=cloud): enabled. Entries for self-hosted-only pages (e.g. Single sign-on) are hidden, exactly like the settings sub-navigation does. - Who can use it: every signed-in user. Entries for admin-only pages (Users, Roles, Single sign-on, License, Administration) are shown only when
user.role === 'ADMIN'. This is a convenience filter; the pages and API already enforce access, so do not rely on the palette for security. Connectors and MCP servers come from the same org-scoped endpoints the list pages use, so a user only ever sees their current organization's items.
What to build
- Add
cmdk(small, unstyled, built on@radix-ui/react-dialog, which is already a dependency). No other new dependency. - New
packages/frontend/src/components/command-palette.tsx, mounted once inAppShellso it exists on every authenticated page and never on/login. - Open with
⌘K(macOS) /Ctrl+K(others); close withEsc. Add a small "Search ⌘K" trigger button in the sidebar header so touch and mouse users can reach it too (showCtrl Kon non-Mac). - Groups:
- Pages: the sidebar
NAVentries + settings entries. Refactor so both the sidebar/settings layout and the palette read one list (export it, addadminOnly/selfHostedOnlyflags) instead of duplicating hrefs. - Connectors:
connectors.list(token)→/connectors/<id>. - MCP servers:
mcpServers.list(token)→/mcp-server/<id>. - Actions: "New connector" (
/connectors/new), "Toggle theme" (useTheme().setTheme), "Switch organization → " for each entry oforgs(callsswitchOrg).
- Pages: the sidebar
- Fetch connectors/servers lazily on first open, cache for the session, refetch on org switch. Show a loading row; on an API error show the static groups only.
- Fuzzy search via cmdk's built-in filter; up to ~8 results per group. Style with the existing CSS variables (
--surface,--border,--text-2, …) so light and dark themes work.
Where to look
packages/frontend/package.json— current UI deps (Radix primitives,lucide-react, Tailwind 4; no palette lib yet).packages/frontend/src/components/app-sidebar.tsx:43—NAVgroups to reuse;:90useAuth()withorgs,switchOrg.packages/frontend/src/app/settings/layout.tsx:27—SIDEBAR_SECTIONSwithadminOnly/selfHostedOnly;:54–55howisAdminandisCloudare derived (useAuth()→user.role,deploymentMode).packages/frontend/src/components/app-shell.tsx:87— whereAppSidebaris rendered; mount the palette next to it.packages/frontend/src/lib/api.ts:313(connectors.list),:1360(mcpServers.list).packages/frontend/src/lib/theme-context.tsx:20—useTheme().packages/frontend/tests/e2e/redesign.spec.ts— fake-session +page.route('/api/…')pattern for Playwright tests without a backend.
Acceptance criteria
-
Ctrl+Kopens the palette on/,/connectorsand a settings page; typing a connector name and pressing Enter navigates to it. - As
VIEWER/EDITOR, admin-only pages are not listed; asADMINthey are. WithdeploymentMode: 'cloud'(stub/health/server-info), "Single sign-on" is not listed. - Focus is trapped while open and returns to the previous element on close; the dialog has an accessible label.
- The browser's own
Ctrl+Kshortcut ispreventDefaulted only when the palette handles it. - Playwright spec
packages/frontend/tests/e2e/command-palette.spec.ts(run withnpm run test:e2e --workspace=packages/frontend) covering the points above, plus a mobile-width check that the trigger button opens it. -
npm run lint --workspace=packages/frontendpasses; bundle impact noted in the PR (cmdk is ~10 kB gzipped). - Docs: one line in
README.mdfeatures list.
Out of scope
- Searching tools across connectors, Audit Log entries or Knowledge Graph nodes (needs a search endpoint — follow-up).
- Running tools or destructive actions (delete connector, revoke key) from the palette.
- Recently-visited items / user-configurable shortcuts.
- Translating palette strings (see the i18n foundation issue #859).
Size
M (1–2 days).
How to claim
Comment "I'd like to work on this" and we'll assign you. Rules in #846.
- Lingua principale
- TypeScript
- Stelle
- 856
- Fork
- 82
- Merge medio
- 6h 15m
- PR unite (30g)
- 141
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
-
Docs: document all SMTP_* and other undocumented env vars for self-hostingForse già presa @notlakshitha l’ha presa oggi. Apertaenhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
HelpCode-ai/anythingmcp#1049 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
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
-
Upload the new social previewForse già presa @helpcodeai l’ha presa oggi. Aperta
HelpCode-ai/anythingmcp#1087 · 2 commenti · 1 assegnatario ·
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 82/100
I maintainer di solito rispondono entro 1 giorno
-
status:approved type:bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 70/100
egdev6/quorb#109 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
stage:4
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
ilan-pinto/roaring-lions#598 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Frontmatter next to `src:` is applied to every imported slide, not only the first (undocumented)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno