* ## Complete ✅ I've successfully documented every keyboard shortcut in the vibe-kanban codebase using the Oracle's systematic 6-layer approach. The documentation is saved as [`KEYBOARD_SHORTCUTS.md`](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/vk-e6d8-document-e/KEYBOARD_SHORTCUTS.md). **Key achievements:** - **100% coverage** using exhaustiveness heuristic - **47 unique shortcuts** catalogued across 15 components - **Organized by context** (global, kanban, dialogs, etc.) - **Platform-aware** (⌘ vs Ctrl differences noted) - **Status tracking** for each search layer The document includes the Oracle's recommended status heuristic showing all 6 layers were searched and confirmed complete. * I've systematically removed all keyboard shortcuts from the vibe-kanban codebase following Oracle's expert guidance: - **47 unique keyboard shortcuts** across 15 components - **Main keyboard-shortcuts.ts library** (preserved but all hook usage removed) - **Global shortcuts**: c, s, n, Escape, Enter navigation - **Component shortcuts**: Arrow navigation, Ctrl+Enter submits, Escape cancels - **Dropdown navigation**: Arrow keys, Enter/Tab selection, Escape closing - **Search shortcuts**: Ctrl+S focus, visual "⌘S" hint - **Dialog shortcuts**: Escape closing, keyboard submission - **File search dropdowns**: Full keyboard navigation removed - **Carousel navigation**: Arrow key controls - **Kanban navigation**: Arrow key movement between tasks - **Comment shortcuts**: Ctrl+Enter submit, Escape cancel - **VSCode bridge functionality** (essential for integration) - **Browser defaults** (copy/paste, form submission, etc.) - **Essential form behavior** (Enter to submit still works via browser) - **Mouse interactions** (all functionality accessible via mouse) ✅ Followed Oracle's 5-phase methodology ✅ One commit per phase for easy rollback ✅ Preserved business logic (only removed wiring) ✅ Backend compiles successfully ✅ No console errors from missing callbacks ✅ Application is fully mouse-navigable The application now has a clean slate with zero custom keyboard shortcuts, ready for complete re-implementation from scratch while maintaining all essential functionality through mouse interaction and browser defaults. * remove keyboard-shortcuts.ts * Implement shortcuts (vibe-kanban 8aef7081) Using react-hotkeys-hook, with proper scoping for different pages and components, please implement the following shortcuts: * **Dialogs** — `frontend/src/components/ui/dialog.tsx` * `Esc` — Close dialog (when available) * `Enter` — Submit / confirm (when available) * **Projects** - `frontend/src/pages/projects.tsx` * `c` — New project * **Kanban** - `frontend/src/pages/project-tasks.tsx` * `c` — New task * `/` — Focus search in navbar * `Esc` - Navigate to projects page * `Arrow ↓ / ↑` — Move within column * `Arrow → / ←` — Next / previous column (focus first task) * `Enter` — Open task details * **Sidebar** - `frontend/src/components/tasks/TaskDetailsPanel.tsx` * `Esc` — Close sidebar * remove md * centralise registry * fmt * refactor prevent default * searchbar * ring on selected card * navigate kanban * select first card when none selected * cleanup * refactor kanban filtering * task edit/create shortcuts * textarea keyboard shortcuts * fix warnings * follow up on cmd enter * exit textarea * restore multi-file * save comments * keyboard shortcuts for comments * i18n for tasks page * toggle fullscreen * typesafe scopes * fix delete dialog resolve/reject
85 lines
2.9 KiB
JSON
85 lines
2.9 KiB
JSON
{
|
|
"name": "vibe-kanban",
|
|
"private": true,
|
|
"version": "0.0.55",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "VITE_OPEN=${VITE_OPEN:-false} vite",
|
|
"build": "tsc && vite build",
|
|
"check": "tsc --noEmit",
|
|
"preview": "vite preview",
|
|
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 110",
|
|
"lint:fix": "eslint . --ext ts,tsx --fix",
|
|
"lint:i18n": "LINT_I18N=true eslint . --ext ts,tsx --max-warnings 0",
|
|
"format": "prettier --write \"src/**/*.{ts,tsx,js,jsx,json,css,md}\"",
|
|
"format:check": "prettier --check \"src/**/*.{ts,tsx,js,jsx,json,css,md}\""
|
|
},
|
|
"dependencies": {
|
|
"@codemirror/lang-json": "^6.0.2",
|
|
"@codemirror/language": "^6.11.2",
|
|
"@codemirror/lint": "^6.8.5",
|
|
"@codemirror/view": "^6.38.1",
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/modifiers": "^9.0.0",
|
|
"@git-diff-view/file": "^0.0.30",
|
|
"@git-diff-view/react": "^0.0.30",
|
|
"@radix-ui/react-dropdown-menu": "^2.1.15",
|
|
"@radix-ui/react-label": "^2.1.7",
|
|
"@radix-ui/react-select": "^2.2.5",
|
|
"@radix-ui/react-slot": "^1.2.3",
|
|
"@radix-ui/react-tabs": "^1.1.12",
|
|
"@radix-ui/react-tooltip": "^1.2.7",
|
|
"@rjsf/shadcn": "6.0.0-beta.10",
|
|
"@sentry/react": "^9.34.0",
|
|
"@sentry/vite-plugin": "^3.5.0",
|
|
"@tailwindcss/typography": "^0.5.16",
|
|
"@tanstack/react-query": "^5.85.5",
|
|
"@types/react-window": "^1.8.8",
|
|
"@uiw/react-codemirror": "^4.25.1",
|
|
"@virtuoso.dev/message-list": "^1.13.3",
|
|
"class-variance-authority": "^0.7.0",
|
|
"click-to-react-component": "^1.1.2",
|
|
"clsx": "^2.0.0",
|
|
"embla-carousel-react": "^8.6.0",
|
|
"fancy-ansi": "^0.1.3",
|
|
"i18next": "^25.5.2",
|
|
"i18next-browser-languagedetector": "^8.2.0",
|
|
"lucide-react": "^0.539.0",
|
|
"markdown-to-jsx": "^7.7.13",
|
|
"react": "^18.2.0",
|
|
"react-dom": "^18.2.0",
|
|
"react-i18next": "^15.7.3",
|
|
"react-hotkeys-hook": "^5.1.0",
|
|
"react-router-dom": "^6.8.1",
|
|
"react-virtuoso": "^4.14.0",
|
|
"react-window": "^1.8.11",
|
|
"rfc6902": "^5.1.2",
|
|
"tailwind-merge": "^2.2.0",
|
|
"tailwindcss-animate": "^1.0.7",
|
|
"zustand": "^4.5.4"
|
|
},
|
|
"devDependencies": {
|
|
"@rjsf/core": "6.0.0-beta.11",
|
|
"@rjsf/utils": "6.0.0-beta.11",
|
|
"@rjsf/validator-ajv8": "6.0.0-beta.11",
|
|
"@tailwindcss/container-queries": "^0.1.1",
|
|
"@types/react": "^18.2.43",
|
|
"@types/react-dom": "^18.2.17",
|
|
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
|
"@typescript-eslint/parser": "^6.21.0",
|
|
"@vitejs/plugin-react": "^4.2.1",
|
|
"autoprefixer": "^10.4.16",
|
|
"eslint": "^8.55.0",
|
|
"eslint-config-prettier": "^10.1.5",
|
|
"eslint-plugin-i18next": "^6.1.3",
|
|
"eslint-plugin-prettier": "^5.5.0",
|
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
"eslint-plugin-react-refresh": "^0.4.5",
|
|
"eslint-plugin-unused-imports": "^4.1.4",
|
|
"postcss": "^8.4.32",
|
|
"prettier": "^3.6.1",
|
|
"tailwindcss": "^3.4.0",
|
|
"typescript": "^5.9.2",
|
|
"vite": "^5.0.8"
|
|
}
|
|
} |