Imported from tdferreira/inboxbridge (
.codex/skills/inboxbridge-admin-ui-change/SKILL.md). Install upstream withnpx skills add tdferreira/inboxbridge --skill inboxbridge-admin-ui-change. Copyright stays with the author.
InboxBridge Admin UI Change
Start with admin-ui/README.md, CONTEXT.md, and the affected files under admin-ui/src.
Frontend conventions
- Preserve the split between top-level composition in
App.jsx, controller hooks insrc/lib, and presentational components insrc/components. - Keep visible copy routed through the translation dictionary. Avoid introducing raw English strings into authenticated UI or
/remote. - OAuth callback UX belongs to the frontend-owned
/oauth/...routes; keep the backend-owned/api/.../callbackendpoints focused on state validation, token exchange authority, and redirecting the browser into the React callback UI. - When changing localization or route behavior, keep the localized workspace-route model intact:
/remains the user workspace, explicit admin routes localize per current language, and language changes should rewrite explicit admin slugs immediately rather than waiting on deferred UI-preferences hydration. - Preserve the lightweight
/remotesurface as a focused, mobile-first control plane rather than a copy of the full dashboard. - Respect the existing workspace/layout model: collapsible sections, section cards, persisted preferences, and quick-setup behavior.
- Keep auth/session browser hardening intact, including the same-origin CSRF wrapper behavior for unsafe
/api/...writes. - Treat
PillboxInputas the shared multi-value picker for folder-like inputs. Keep its desktop floating-combobox behavior, real-touch native-picker behavior, keyboard navigation, and mobile touch-target sizing coherent across callers instead of re-implementing picker logic inside feature dialogs. - Preserve the current source-detail diagnostics surface in
EmailAccountListItem: operators can now inspect destination identity, POP/IMAP checkpoints, throttle state, IMAP IDLE watcher health, persisted poll audit fields, and explicit runtime alerts from the normal UI. - Match existing styling and UX patterns unless the user explicitly asks for a broader redesign.
Testing expectations
- Add or update Vitest coverage for behavior changes, especially component rendering, translated copy, controller flows, and regression-prone interactive states.
- When copy or localization changes, verify the affected keys exist across supported locales.
- When changing localized routing, workspace switching, or language selection behavior, update the
App.test.jsx/workspaceRoutes.test.jsregression coverage that protects localized path rewriting. - When changing
PillboxInput, cover both real-touch/native-picker expectations and desktop/mobile-emulation fallback behavior so desktop dev tools emulation does not accidentally regress into touch-only flows.
Validation
cd admin-ui && npm run test:runcd admin-ui && npm run build- If the task also touches the public GitHub Pages site under
site/, pair the admin-ui validation withnode site/test-config-generator.mjsbecause that lightweight check also guards the public locale catalog and site-specific UX rules. - If the task touched runnable services, finish with
docker compose up --build -dunless the user said not to.
Docs to update when relevant
- Frontend behavior or UX guidance:
admin-ui/README.md - Cross-chat product/runtime memory:
CONTEXT.md - Operator-facing setup or screenshots/copy-sensitive docs:
README.md
