Commit Graph

8 Commits

Author SHA1 Message Date
hayato iida
567b4a0411 Fix: Prevent form submission during IME composition (#934)
This fix addresses issue #919 where pressing Enter during IME (Input Method Editor)
composition incorrectly triggers form submission in task title and description fields.

Changes:
- Add isComposing check to Input component's Enter key handler
- Add isComposing check to AutoExpandingTextarea component's Enter key handler

This ensures that Enter key during IME composition (e.g., Japanese, Chinese, Korean input)
only confirms the text conversion without accidentally submitting the form.

Fixes #919
2025-10-04 14:30:46 +01:00
Louis Knight-Webb
8891a0beac Re-implement keyboard shortcuts (#790)
* ## 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
2025-09-24 12:01:22 +01:00
Solomon
3a9c131943 Replace Restore with Edit & Retry (#674) 2025-09-10 18:05:55 +01:00
Gabriel Gordon-Hall
f83dbd4f30 fix: resize project script text (#604)
* resize project script text and ensure consistent placeholder text styling

* remove placeholder styling from Input component
2025-09-02 12:19:16 +01:00
Louis Knight-Webb
1a1add7618 Louis/theme cleanup (#582)
* lightmode

* diagonal bg

* contrast

* diffs

* colors

* fix darkmode

* lint
2025-08-28 16:34:55 +01:00
Louis Knight-Webb
9e286b61e5 Overhaul UI (#577)
* font

* flat ui

* burger menu

* button styles

* drag effects

* search

* Improve

* navbar

* task details header WIP

* task attempt window actions

* task details

* split out title description component

* follow up

* better board spacing

* Incrementally use tanstack (vibe-kanban 0c34261d)

Let's refactor the codebase to remove:
@frontend/src/components/context/TaskDetailsContextProvider.tsx
@frontend/src/components/context/TaskDetailsContextProvider.ts

Instead, we want to use @tanstack/react-query

* task attempt header info

* ui for dropdown

* optionally disable

* Create hook for attempt actions (vibe-kanban 651551d9)

- Start dev server
- Rebase
- Create PR
- Merge

These should all be hooks, similar to frontend/src/hooks/useOpenInEditor.ts

Their usage in two places should be standardised:
- frontend/src/components/tasks/AttemptHeaderCard.tsx
- frontend/src/components/tasks/Toolbar/CurrentAttempt.tsx

* dropdown positioning

* color

* soften colours

* add new task button

* editor dialog via hook

* project provider

* fmt

* lint

* follow up styling

* break words

* card styles

* Stop executions from follow up (vibe-kanban e2a2c75b)

The follow up section currently disables the 'send' button if a task attempt is running, however instead we should show a destructive 'stop' button which will perform the same functionality as 'stop attempt'

frontend/src/components/tasks/TaskFollowUpSection.tsx

You can see how we stop already in frontend/src/components/tasks/Toolbar/CurrentAttempt.tsx

Maybe we could make this a hook and use tanstack similar to frontend/src/hooks/useBranchStatus.ts

What about making the hook more generic, to cover start/stop and status retrieval.

We should also combine the hook frontend/src/hooks/useExecutionProcesses.ts

* Make sure the kanban columns are always at least full height (vibe-kanban 220cb780)

There can be whitespace underneath the columns, ideally there should be no whitespace - the columns should extend to the bottom of the page, even when there aren't enough tasks to fill it up all the way ![Screenshot 2025-08-27 at 14.42.41.png](.vibe-images/11efe690-ec72-4513-a7b6-49641ff170c4.png)

frontend/src/pages/project-tasks.tsx

* Display diff summary (vibe-kanban f1736551)

If files have been changed, we should display a summary of the changes like "6 files changed, +21 -19" in the AttemptHeaderCard, to the right of the dropdown, similar to how we do at the top of the difftab.

We should also add an icon button to open the task attempt in full screen and at the diff tab.

frontend/src/components/tasks/AttemptHeaderCard.tsx
frontend/src/components/tasks/TaskDetails/DiffTab.tsx

* styles

* projects

* full screen max width

* full screen actions

* remove log

* style improve

* create new attempt

* darkmode

* scroll diffs

* Refactor useCreatePR (vibe-kanban e6b76f10)

The useCreatePR hook should function similarly to useOpenInEditor, in that the the popup should be rendered in some root node. This improves the reusability of this functionality.

We should then update TaskDetailsPanel to make the 'create pr' button real.

frontend/src/hooks/useOpenInEditor.ts
frontend/src/hooks/useCreatePR.ts
frontend/src/components/tasks/TaskDetailsPanel.tsx

* Rebasing should cause branch status to refresh (vibe-kanban 3da4fe0f)

Currently doesn't in frontend/src/components/tasks/TaskDetailsPanel.tsx

* project name

* Change ?view=full to /full (vibe-kanban a25483a6)

* Hide TaskDetailsHeader (vibe-kanban b73697bd)

If the app is running inside of VS Code

* copy

* Add button to open repo (vibe-kanban e447df94)

Open repo in IDE button in the navbar, next to create task button

* style process cards

* Errors not displayed properly (vibe-kanban fb65eb03)

frontend/src/components/tasks/TaskDetailsToolbar.tsx

Errors are currently failing silently on actions like merge and rebase

* fmt

* fix

* fix border
2025-08-27 23:59:26 +01:00
Louis Knight-Webb
b726f8ca05 Fixed! Changed overflow-hidden to overflow-y-auto so users can scroll vertically when the textarea content exceeds the maximum height limit. (#211) 2025-07-16 12:14:28 +01:00
Louis Knight-Webb
fc0ede7538 Textareas should expand with content (vibe-kanban) (#194)
* Perfect! I've successfully implemented auto-expanding textareas for both the description field and the follow-up question textarea. Here's what was implemented:

## Changes Made:

1. **Created `AutoExpandingTextarea` component** - A new component that automatically adjusts height based on content
2. **Updated `FileSearchTextarea`** - Modified to use the new auto-expanding component with configurable `maxRows`
3. **Updated task creation form** - Description field now expands up to 8 rows maximum
4. **Updated follow-up question textarea** - Expands up to 6 rows maximum

## Key Features:

- **Auto-expansion**: Textareas grow vertically as users type more content
- **Maximum height limits**: Prevents infinite growth with configurable row limits
- **Smooth transitions**: Height adjusts seamlessly without flickering
- **Accessibility**: Maintains all existing functionality including keyboard navigation and file search

The implementation ensures both textareas now provide a better user experience by expanding to show content without requiring manual resizing, while maintaining reasonable maximum heights to prevent layout issues.

* prettier
2025-07-15 16:02:54 +01:00