Skip to content

Commit ea61052

Browse files
johnsideserfclaude
andauthored
Bump version to v0.5.0 and update docs for release (#53)
- Cargo.toml version 0.4.0 → 0.5.0 - Changelog: add v0.5.0 section (reactions, @mentions, message selection, stderr error handling, refactoring) - Roadmap: mark reactions, @mentions, message selection, startup error handling as completed; add reply/forward to Future - README: add reactions, @mentions, message selection, read receipts to features; add J/K, y/Y, r to keybindings; add /contacts command - Docs: update features, keybindings, commands, roadmap pages Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 608cedf commit ea61052

File tree

9 files changed

+127
-17
lines changed

9 files changed

+127
-17
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "signal-tui"
3-
version = "0.4.0"
3+
version = "0.5.0"
44
edition = "2021"
55
license = "GPL-3.0-only"
66
description = "Terminal-based Signal messenger client with vim keybindings"

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ All fields are optional. `signal_cli_path` defaults to `"signal-cli"` (found via
9292
- **Unread tracking** -- Unread counts in sidebar with "new messages" separator in chat
9393
- **Notifications** -- Terminal bell on new messages (configurable per direct/group, per-chat mute)
9494
- **Contact resolution** -- Names from your Signal address book; groups auto-populated on startup
95+
- **Message reactions** -- React with `r` in Normal mode; emoji picker with badge display (`👍 2 ❤️ 1`)
96+
- **@mentions** -- Type `@` in group chats to mention members with autocomplete
97+
- **Message selection** -- Focused message highlight when scrolling; `J`/`K` to jump between messages
98+
- **Read receipts** -- Status symbols on outgoing messages (Sending → Sent → Delivered → Read → Viewed)
9599
- **Setup wizard** -- First-run onboarding with QR code device linking
96100
- **Vim keybindings** -- Modal editing (Normal/Insert) with full cursor movement
97101
- **Command autocomplete** -- Tab-completion popup for slash commands
@@ -109,6 +113,7 @@ All fields are optional. `signal_cli_path` defaults to `"signal-cli"` (found via
109113
| `/sidebar` | `/sb` | Toggle sidebar visibility |
110114
| `/bell [type]` | `/notify` | Toggle notifications (`direct`, `group`, or both) |
111115
| `/mute` | | Mute/unmute current conversation |
116+
| `/contacts` | `/c` | Browse synced contacts |
112117
| `/settings` | | Open settings overlay |
113118
| `/help` | `/h` | Show help overlay |
114119
| `/quit` | `/q` | Exit signal-tui |
@@ -137,13 +142,16 @@ Press `Esc` to enter Normal mode.
137142
| Key | Action |
138143
|---|---|
139144
| `j` / `k` | Scroll down / up 1 line |
145+
| `J` / `K` | Jump to previous / next message |
140146
| `Ctrl+D` / `Ctrl+U` | Scroll down / up half page |
141147
| `g` / `G` | Scroll to top / bottom |
142148
| `h` / `l` | Move cursor left / right |
143149
| `w` / `b` | Word forward / back |
144150
| `0` / `$` | Start / end of line |
145151
| `x` | Delete character at cursor |
146152
| `D` | Delete from cursor to end |
153+
| `y` / `Y` | Copy message body / full line |
154+
| `r` | React to focused message |
147155
| `i` | Enter Insert mode |
148156
| `a` | Enter Insert mode (cursor right 1) |
149157
| `I` / `A` | Enter Insert mode at start / end of line |

ROADMAP.md

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
- [x] Sync request at startup to refresh data from primary device
2020
- [x] Inline image preview for attachments (halfblock rendering)
2121

22-
## Up Next
23-
2422
- [x] **New message notifications**
2523
- Terminal bell + unread count in terminal title
2624
- Separate toggles for direct and group messages (config + `/bell` command)
@@ -43,25 +41,39 @@
4341
- [x] **Full timestamp on scroll**
4442
- Status bar shows full date+time of focused message when scrolling
4543

44+
- [x] **Message reactions**
45+
- Emoji picker (`r` in Normal mode) with quick-react bar
46+
- Compact badge display (`👍 2 ❤️ 1`) with optional verbose mode
47+
- Full lifecycle: receive, sync, remove, persist (DB migration v4)
48+
49+
- [x] **@mention autocomplete**
50+
- Type `@` in group chats to mention members; also works in 1:1 chats
51+
- Incoming mentions highlighted in cyan+bold
52+
53+
- [x] **Visible message selection**
54+
- Dark background highlight on focused message when scrolling
55+
- `J`/`K` to jump between messages (skips separators and system messages)
56+
57+
- [x] **Startup error handling**
58+
- signal-cli stderr captured and displayed in TUI error screen
59+
60+
## Up Next
61+
4662
- [ ] **Send attachments**
4763
- Only receiving works today
4864
- Add `/send-file <path>` command
4965

66+
- [ ] **Message search**
67+
- Full-text search across conversations
68+
5069
## Future
5170

52-
- [ ] Message search
5371
- [ ] Multi-line message input (Shift+Enter for newlines)
5472
- [ ] Message history pagination (scroll-up to load older messages)
5573
- [ ] Correct group typing indicators (per-sender-to-group mapping)
56-
- [ ] **Message reactions (emoji reactions)**
57-
- Parse `dataMessage.reaction` from signal-cli (emoji, targetAuthor, targetTimestamp, isRemove)
58-
- Display reactions below the target message as compact emoji badges (e.g. `👍 2 ❤️ 1`)
59-
- Aggregate duplicate emoji from different senders into counts
60-
- Handle reaction removal (`isRemove: true`) by decrementing or removing the badge
61-
- Store reactions in DB (new `reactions` table keyed by message + sender)
62-
- Re-render reaction badges on startup from DB
63-
- Stretch: allow sending reactions via a command (e.g. `/react 👍`)
6474
- [ ] Message deletion and editing
6575
- [ ] Group management (create, add/remove members, member list)
6676
- [ ] Scroll position memory per conversation
6777
- [ ] Configurable keybindings
78+
- [ ] Reply to specific messages (quote reply)
79+
- [ ] Forward messages

docs/src/changelog.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,50 @@
11
# Changelog
22

3+
## v0.5.0
4+
5+
### Message reactions
6+
7+
- **Emoji reactions** -- react to any message with `r` in Normal mode to
8+
open the reaction picker. Navigate with `h`/`l` or `1`-`8`, press
9+
Enter to send. Reactions display below messages as compact emoji
10+
badges (e.g. `👍 2 ❤️ 1`) with an optional verbose mode showing
11+
sender names (closes #16)
12+
- **Reaction sync** -- incoming reactions, sync reactions from other
13+
devices, and reaction removals are all handled in real time
14+
- **Persistence** -- reactions are stored in the database (migration v4)
15+
and restored on startup
16+
17+
### @mentions
18+
19+
- **Mention autocomplete** -- type `@` in group chats to open a member
20+
autocomplete popup. Filter by name, press Tab to insert the mention.
21+
Works in 1:1 chats too (with the conversation partner)
22+
- **Mention display** -- incoming mentions are highlighted in cyan+bold
23+
in the chat area
24+
25+
### Visible message selection
26+
27+
- **Focus highlight** -- when scrolling in Normal mode, the focused
28+
message gets a subtle dark background highlight so you can see exactly
29+
which message reactions and copy will target
30+
- **`J`/`K` navigation** -- Shift+j and Shift+k jump between actual
31+
messages, skipping date separators and system messages
32+
33+
### Startup error handling
34+
35+
- **stderr capture** -- signal-cli startup errors (missing Java, bad
36+
config, etc.) are now captured and displayed in a TUI error screen
37+
instead of silently failing
38+
39+
### Internal
40+
41+
- Major refactoring across four PRs (#45-#48): extracted shared key
42+
handlers, data-driven settings system, split `parse_receive_event`
43+
into sub-functions, modernized test helpers, added persistent debug
44+
log and pending_requests TTL
45+
46+
---
47+
348
## v0.4.0
449

550
### Contact list

docs/src/dev-guide/roadmap.md

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,29 @@
2323
- [x] Input history (Up/Down to recall previous messages)
2424
- [x] Incognito mode (`--incognito`)
2525
- [x] Demo mode (`--demo`)
26+
- [x] Delivery/read receipt display (status symbols on outgoing messages)
27+
- [x] Contact list overlay (`/contacts`)
28+
- [x] Copy to clipboard (`y`/`Y` in Normal mode)
29+
- [x] Full timestamp on scroll (status bar shows date+time of focused message)
30+
- [x] Message reactions (emoji picker, badge display, full lifecycle with DB persistence)
31+
- [x] @mention autocomplete (type `@` in group or 1:1 chats)
32+
- [x] Visible message selection (focus highlight, `J`/`K` message-level navigation)
33+
- [x] Startup error handling (signal-cli stderr captured in TUI error screen)
2634

2735
## Up next
2836

29-
- [ ] **Delivery/read receipt display** -- receipts are already parsed but
30-
silently discarded. Show checkmark indicators next to messages.
3137
- [ ] **Send attachments** -- only receiving works today. Add a `/send-file <path>`
3238
command.
39+
- [ ] **Message search** -- full-text search across conversations.
3340

3441
## Future
3542

36-
- [ ] Message search
3743
- [ ] Multi-line message input (Shift+Enter for newlines)
3844
- [ ] Message history pagination (scroll-up to load older messages)
3945
- [ ] Correct group typing indicators (per-sender-to-group mapping)
40-
- [ ] Message reactions (emoji badges with counts)
4146
- [ ] Message deletion and editing
4247
- [ ] Group management (create, add/remove members, member list)
4348
- [ ] Scroll position memory per conversation
4449
- [ ] Configurable keybindings
50+
- [ ] Reply to specific messages (quote reply)
51+
- [ ] Forward messages

docs/src/user-guide/commands.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ All commands start with `/`. Type `/` in Insert mode to open the autocomplete po
1111
| `/sidebar` | `/sb` | | Toggle sidebar visibility |
1212
| `/bell` | `/notify` | `[type]` | Toggle notifications (`direct`, `group`, or both) |
1313
| `/mute` | | | Mute/unmute current conversation |
14+
| `/contacts` | `/c` | | Browse synced contacts |
1415
| `/settings` | | | Open settings overlay |
1516
| `/help` | `/h` | | Show help overlay |
1617
| `/quit` | `/q` | | Exit signal-tui |

docs/src/user-guide/features.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,33 @@ Uses an in-memory database instead of on-disk SQLite. No messages, conversations
7171
or read markers are written to disk. The status bar shows a bold magenta
7272
**incognito** indicator. When you exit, everything is gone.
7373

74+
## Message reactions
75+
76+
React to any message with `r` in Normal mode to open the emoji picker. Navigate
77+
with `h`/`l` or press `1`-`8` to jump directly, then Enter to send.
78+
79+
Reactions display below messages as compact badges:
80+
81+
```
82+
👍 2 ❤️ 1
83+
```
84+
85+
Enable "Verbose reactions" in `/settings` to show sender names instead of counts.
86+
Reactions sync across devices and persist in the database.
87+
88+
## @mentions
89+
90+
In group chats, type `@` to open a member autocomplete popup. Filter by name and
91+
press Tab to insert the mention. Works in 1:1 chats too (with the conversation
92+
partner). Incoming mentions are highlighted in cyan+bold.
93+
94+
## Visible message selection
95+
96+
When scrolling in Normal mode, the focused message gets a subtle dark background
97+
highlight. This makes it clear which message `r` (react) and `y`/`Y` (copy) will
98+
target. Use `J`/`K` (Shift+j/k) to jump between messages, skipping date
99+
separators and system messages.
100+
74101
## Demo mode
75102

76103
```sh

docs/src/user-guide/keybindings.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,19 @@ changes in the status bar.
2222
| Key | Action |
2323
|---|---|
2424
| `j` / `k` | Scroll down / up 1 line |
25+
| `J` / `K` | Jump to previous / next message |
2526
| `Ctrl+D` / `Ctrl+U` | Scroll down / up half page |
2627
| `g` / `G` | Scroll to top / bottom |
2728

29+
### Actions
30+
31+
| Key | Action |
32+
|---|---|
33+
| `y` | Copy message body to clipboard |
34+
| `Y` | Copy full line (`[HH:MM] <sender> body`) to clipboard |
35+
| `r` | Open reaction picker on focused message |
36+
| `@` | Mention autocomplete (in Insert mode) |
37+
2838
### Cursor movement
2939

3040
| Key | Action |

0 commit comments

Comments
 (0)