Skip to content

Conversation

@yashas-salankimatt
Copy link
Contributor

@yashas-salankimatt yashas-salankimatt commented Feb 10, 2026

Summary

Fixes kanban view navigation so that directional keys (h/j/k/l/g/G) only move the visual cursor without activating the highlighted item. Only Enter now selects and activates.

Previous behavior

Every cursor movement in kanban view (h/j/k/l) immediately:

  • Synced the kanban cursor to the list selection state (syncKanbanToList)
  • Triggered side effects via applyKanbanSelectionChange (exit interactive mode, save selection, reset preview scroll)
  • Loaded content for the new selection (loadSelectedContent)

This made it impossible to browse the kanban without each item getting fully activated on every keypress. Additionally, pressing Enter on the already-selected item (or any item) never entered interactive mode because the kanban handler returned early before reaching enterInteractiveMode().

New behavior

  • hjkl: Move the kanban cursor (visual highlight) only. No selection sync, no content loading, no side effects.
  • g/G: Jump cursor to top/bottom of the current column. Same cursor-only behavior (also adds kanban-mode guards that were previously missing).
  • Enter: Syncs the kanban cursor to the list selection, applies selection change side effects, then falls through to the shared activation logic (orphaned worktree handling + enterInteractiveMode()). If interactive mode cannot start (no agent, feature disabled), falls back to loadSelectedContent() so the preview updates.

Files changed

  • internal/plugins/workspace/kanban.go — moveKanbanRow() and moveKanbanColumn() stripped of syncKanbanToList() and applyKanbanSelectionChange() calls
  • internal/plugins/workspace/keys.go — hjkl/gG return nil in kanban mode; Enter syncs kanban selection then falls through to activation with loadSelectedContent() fallback

Known issue (not addressed here)

The kanban view status detection for sessions/workspaces is still broken — most items currently land in the Waiting column regardless of actual status. That will be fixed separately.

Test plan

  • go build passes
  • go test passes (all 16 kanban tests pass)
  • Manual: open kanban view, press hjkl — cursor moves, preview does not change
  • Manual: press Enter on highlighted item — item activates (enters interactive mode)
  • Manual: press Enter on already-selected item — still activates correctly
  • Manual: press Enter on item with no agent — preview loads for that item
  • Manual: press g/G — cursor jumps to top/bottom of column without activation

yashas-salankimatt and others added 8 commits February 10, 2026 02:45
When sidecar is started from within an existing tmux session, the user
needs to press the prefix key twice to detach from the nested session
(e.g. Ctrl-b Ctrl-b d). When started outside tmux, a single prefix
suffices. Detect TMUX env var at package init time (before main unsets
it) and adjust the hint text accordingly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace substring matching in filterTasks with palette.FuzzyMatch for
relevance-ranked fuzzy search. Scores Title (3x), ID (2x), EpicTitle (1x).
Applies to both the create-workspace modal and standalone task-link modal.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previously, pressing h/j/k/l in kanban view immediately selected the
highlighted item—syncing to list state, exiting interactive mode, saving
selection, and loading content on every cursor movement. Now hjkl (and
g/G) only move the visual cursor; Enter activates the highlighted item.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The kanban Enter handler previously returned early after syncing the
selection, which prevented enterInteractiveMode() from ever running.
Now it falls through to the shared activation logic (orphaned worktree
handling + interactive mode entry). When interactive mode can't start
(no agent, feature disabled), falls back to loadSelectedContent() so
the preview updates for the new selection.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@marcus marcus merged commit 9a63d05 into marcus:main Feb 11, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants