Bind carriage return alongside enter on the TUI board - #1002
Open
bjohas wants to merge 1 commit into
Open
Conversation
blessed names a carriage return "return" and only a linefeed "enter", so screen.key(["enter"]) never fires on terminals that send CR. The handler both confirms a pending move and opens the task popup, so both silently do nothing.
bjohas
added a commit
to bjohas/Backlog.md
that referenced
this pull request
Sep 3, 2026
Also drops the stale 'three branches based on 9a42e89' claim; upstream has moved on and the branch count has changed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bjohas
added a commit
to bjohas/Backlog.md
that referenced
this pull request
Sep 3, 2026
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #1003
The board registers its Enter handler as
screen.key(["enter"], ...)(src/ui/board.ts). In the vendored blessed fork (neo-neo-bblessed/lib/keys.ts), a carriage return is namedreturnand only a linefeed is namedenter:Terminals that send CR for the Enter key — kitty on Linux among them — therefore reach no handler at all.
That handler does double duty: in move mode it confirms a pending move, and outside move mode it opens the task popup. On an affected terminal both silently do nothing.
The move case is especially opaque because
performTaskMoveswallows every error unlessDEBUGis set, so a move that never fired is indistinguishable from one that failed.mstill works as a confirm key, which makes the Enter path look selectively broken rather than unbound.Fix
Bind both names. Added as an exported
BOARD_ENTER_KEYSconstant so it can be asserted in a test — the board needs a tty to instantiate, and the file already exportshasMoveBlockingBoardFilters/shouldRebuildColumnsfor the same reason.screen.key(["enter"])is the only such registration undersrc/ui/, and nothing registers"return"anywhere, so this is a single-site change.Verification
bunx tsc --noEmitcleanbiome checkclean on both filesbun test src/test/board-ui.test.ts— 8 pass / 0 fail