feat: multiline editor and scrolling for the hidden Claude conversation (#32) - #53
Merged
Merged
Conversation
…on (#32) A new Draft editor gives the Bee view multiline input with cursor movement; paste keeps line breaks and is never sent before Enter, and the draft survives permission reviews, export, the original screen and resizes. Multiline prompts reach Claude as one bracketed paste when it enabled that mode. The conversation wraps long lines, scrolls with PgUp/PgDn and returns to the end with Esc. No-color uses the terminal's default background, and shortcuts wrap onto up to four rows so all stay visible at the new 40x12 minimum. Refs #32 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MUyLMVv9GbqWRByEZ7LgEb
There was a problem hiding this comment.
ℹ️ Sem problemas críticos; há uma sugestão menor inline.
Reviewed changes
Revisei o editor multilinha, a navegação da conversa e os respectivos testes PTY e documentação.
- Editor e envio: adiciona edição multilinha com cursor, colagem preservada e envio delimitado quando suportado pelo terminal do Claude.
- Conversa e layout: adiciona quebra de linhas, rolagem com indicador de mensagens novas e ajustes para
--no-colore terminais 40×12. - Testes e documentação: amplia o teste PTY sintético e registra o contrato e o ensaio manual ainda pendente.
GPT Luna | 𝕏
lippdev
pushed a commit
that referenced
this pull request
Sep 28, 2026
Up/Down counted characters while the cursor is placed in display cells, so wide characters (e.g. CJK) moved the cursor to a different visual column. Columns are now measured in cells and never land inside a wide character. Follow-up to the Pullfrog review of the merged PR #53. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MUyLMVv9GbqWRByEZ7LgEb
lippdev
added a commit
that referenced
this pull request
Sep 28, 2026
Refs #41. Decision in ADR 0019. - Workspace state folders use an advisory OS lock (File::try_lock) released on exit or kill, with a 500 ms grace for fork-inherited descriptors; a live holder is refused with its PID. - Leftover *.new snapshots are kept as *.new.recovered-<n>, never loaded or deleted, and reported in the UI. - Snapshots sync the file and the directory. - Follow-up from the #53 review: Up/Down in the draft keep the visual column with wide characters. - Demo PTY test waits for the first event instead of indexing an empty list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MUyLMVv9GbqWRByEZ7LgEb
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.

Resumo
Refs #32, parte de código. O ensaio em terminais reais está no item 55 do roteiro.
src/tui/draft.rs): rascunho de várias linhas com cursor.Alt+EnterouCtrl+Jquebram linha; setas, Home/End, Backspace e Delete editam. A colagem preserva as quebras, descarta caracteres de controle e nunca é enviada sem Enter.Ctrl+O) e redimensionamentos. Dá para escrever antes de o Claude ficar pronto.PgUp/PgDne ↑/↓ nas bordas do rascunho rolam a conversa;Escou um envio voltam ao fim.--no-colorusa o fundo padrão do terminal. Os atalhos se distribuem em até quatro linhas. O mínimo passou de 40×10 para 40×12, para todos continuarem visíveis. A caixa de mensagem mostra até cinco linhas sem esconder a conversa.Validação
cargo fmt --all -- --check,cargo clippy --locked --all-targets -- -D warnings,cargo test --lockedecargo build --lockedpassaram localmente em Linux.check_bundle.pytambém passaram localmente.check_claude_hidden_pty.pyganhou uma CLI falsa que registra exatamente o que recebe. Em 80×24 e em 40×12, o teste cobre:PgUpeEsc;Alt+Enter;pyte). Isso revelou o cursor fora da caixa em 40×12, já corrigido.Limitações
Alt+Enter;Ctrl+Jé a alternativa.Documentos atualizados:
docs/specs/workspace.md,docs/MANUAL_TESTS.md(item 55),docs/EXECUTION.mdeROADMAP.md.🤖 Generated with Claude Code
https://claude.ai/code/session_01MUyLMVv9GbqWRByEZ7LgEb
Generated by Claude Code