You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 19edfc3
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: PLAN.md
+10Lines changed: 10 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,16 @@
2
2
3
3
## Current Stage
4
4
5
+
### Composer quality of life
6
+
7
+
-[x] Configurable `Ctrl+A` selects all inline composer text, including wrapped/off-screen lines, with theme-aware highlighting and a selection notice.
8
+
-[x] Typing, text paste, and newlines replace selection; Backspace/Delete clear it; Escape deselects before leaving insert mode. Replies/attachments are unaffected, mention metadata is discarded only on replacement, and Enter retains normal send behavior.
9
+
-[x] Selection remains transient across chat/draft restores, sends, and external editor results. Regression tests cover Unicode, draft capture, editing isolation, remapped keys, mention autocomplete, blocked sends, and narrow rendering.
10
+
11
+
Verified on Linux on 2026-09-24: `make test`, `make lint`, and full
12
+
`make test-race`. `TestComposerSelectionHighlightAndWrapping` also provides
13
+
a synthetic terminal capture with `go test ./internal/ui -run '^TestComposerSelectionHighlightAndWrapping$' -v`.
14
+
5
15
### Startup sync correction
6
16
7
17
-[x] Import contact app-state events and resolve saved names regardless of chat/contact event order, including known identity aliases and concurrent imports.
Copy file name to clipboardExpand all lines: README.md
+5-1Lines changed: 5 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -176,6 +176,8 @@ key_normal_unload_previews = "leader h f"
176
176
key_normal_delete_for_everybody = "leader d e"
177
177
178
178
key_insert_send = "enter"
179
+
key_insert_select_all = "ctrl+a"
180
+
key_insert_delete = "delete"
179
181
key_insert_newline = "ctrl+j"
180
182
key_insert_newline_alt = "shift+enter"
181
183
key_insert_attach = "ctrl+f"
@@ -231,7 +233,9 @@ Useful command-mode actions:
231
233
:quit
232
234
```
233
235
234
-
Text clipboard paste uses `key_normal_paste_text` or `:paste`. It appends clipboard text to the active chat draft, switches to insert mode, persists the draft, and does not send until the normal composer send key is pressed. Set `clipboard_paste_command` to override text clipboard reads.
236
+
In insert mode, `Ctrl+A` selects the entire composer text, including wrapped and off-screen lines. Typing or terminal text paste replaces the selection; Backspace or Delete clears it. Escape deselects first; a second Escape leaves insert mode as usual. Attachments and reply context are not selected. Enter still sends the text. Configure these actions with `key_insert_select_all` and `key_insert_delete`; Delete without a selection does nothing because the inline caret is at the end. The help overlay shows your configured keys.
237
+
238
+
Text clipboard paste uses `key_normal_paste_text` or `:paste`. It appends clipboard text to the active chat draft (or replaces an active text selection), switches to insert mode, persists the draft, and does not send until the normal composer send key is pressed. Set `clipboard_paste_command` to override text clipboard reads.
235
239
236
240
Image clipboard paste/copy is image-only. `key_insert_paste_image` stages the current clipboard image as the composer attachment, preserving composer text as the caption. `key_normal_copy_image` copies the focused image message to the clipboard and auto-downloads remote image media first when possible. The default image clipboard commands auto-detect Wayland/X11 tools; set `clipboard_image_paste_command` or `clipboard_image_copy_command` to override them. Paste commands may write to `{path}` or stdout, and copy commands may use `{path}` and `{mime}` or receive image bytes on stdin.
0 commit comments