🎃 Add a ⌘K / Ctrl+K command palette to the admin UI
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 65/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- playwright, react, tailwindcss, typescript
- Área
- frontend
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- TypeScript
- Estrellas
- 856
- Forks
- 82
- Merge medio
- 5 h 18 min
- PR fusionados (30 d)
- 162
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de HelpCode-ai/anythingmcp
-
Docs: document all SMTP_* and other undocumented env vars for self-hostingPosiblemente ocupada @notlakshitha la tomó hace 4 días. Abiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
HelpCode-ai/anythingmcp#1049 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
good first issue hacktoberfest
Dificultad 2/5 Medio día Aptitud para principiantes 70/100
HelpCode-ai/anythingmcp#996 ·
Los mantenedores suelen responder en 1 día
-
good first issue hacktoberfest
Dificultad 2/5 Medio día Aptitud para principiantes 72/100
HelpCode-ai/anythingmcp#995 ·
Los mantenedores suelen responder en 1 día
-
enhancement good first issue hacktoberfest help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
HelpCode-ai/anythingmcp#982 ·
Los mantenedores suelen responder en 1 día
-
Upload the new social previewPosiblemente ocupada @helpcodeai la tomó hace 3 días. Abierto
HelpCode-ai/anythingmcp#1087 · 6 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de HelpCode-ai/anythingmcp
Issues similares
-
backend priority:P3 privacy-fix
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
[Bug]: 【优化】对话消息底部增加发送时间展示Abiertobug desktop v3 windows
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
esengine/DeepSeek-Reasonix#13697 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
area:security documentation effort:S priority:P2
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
app:web meta:ops
Dificultad 2/5 Medio día Aptitud para principiantes 78/100
osu-tournament-rating/otr#1113 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100