Clone
1
Phase 5
hobokenchicken edited this page 2026-06-28 17:47:18 -04:00
Phase 5: TUI Client
Phase 5 brings the Dumpster to the terminal with a Bubbletea-based TUI client.
Features
| Feature | Status | Description |
|---|---|---|
| Multi-pane layout | ✅ | Server bar, channel list, chat pane, member list, voice status |
| IRC-style messages | ✅ | [HH:MM] <username> content with colored usernames |
| Vim-style navigation | ✅ | j/k scroll, g/G top/bottom, Tab cycle panels |
| Message input | ✅ | > _ prompt, Enter to send, Shift+Enter for newline |
| WebSocket client | ✅ | Real-time message stream, typing indicators, presence |
| Member list | ✅ | ●/◐/○ status indicators, toggle with m |
| Voice support | ✅ | Join/leave voice, mute toggle, audio levels |
| Config file | ✅ | ~/.config/dumpster/config.yaml or env vars |
| Static binary | ✅ | Single binary, no dependencies |
Running the TUI
With environment variables
DUMPSTER_SERVER=https://chat.your.domain \
DUMPSTER_TOKEN=*** \
dumpster-tui
With config file
Create ~/.config/dumpster/config.yaml:
server: https://chat.your.domain
token: ***
Then run:
dumpster-tui
Build from source
make build-tui
./dumpster-tui --version
Keybindings
Navigation
| Key | Action |
|---|---|
j/k |
Scroll messages up/down |
g/G |
Jump to top/bottom |
Tab |
Cycle between panels |
/ |
Channel picker |
? |
Help overlay |
Input
| Key | Action |
|---|---|
i |
Focus input |
Esc |
Unfocus input |
Enter |
Send message |
Shift+Enter |
Newline |
Up/Down |
Message history |
@ |
Mention autocomplete |
: |
Emoji autocomplete |
Actions
| Key | Action |
|---|---|
r |
Reply to message |
e |
Edit own message |
d |
Delete own message (with confirm) |
a |
Add reaction |
Voice
| Key | Action |
|---|---|
v |
Join voice channel |
V |
Leave voice channel |
m |
Toggle mute |
Quit
| Key | Action |
|---|---|
q |
Quit (with confirm) |
Layout
┌─ DUMPSTER ──────────────────────────────────────────────────────┐
│ [D] │ #general │ [14:32] <dustin> hey │ ● u1│
│ │ #memes │ [14:33] <friend> sup │ ● u2│
│ [G] │ 🔊 hangout │ [14:33] <dustin> lol │ ○ u3│
│ │ │ │ │
│ │ │ ┌─┤ VOICE ├──────────────────────────┐ │ │
│ │ │ │ 🔊 hangout ●dustin ●friend │ │ │
│ │ │ │ [m] [d] [x] │ │ │
│ │ │ └────────────────────────────────────┘ │ │
│ │ │ ─────────────────────────────────────── │ │
│ │ │ > _ │ │
└─────┴──────────────┴──────────────────────────────────────────┴─────┘
[48px] [200px] [flex] [180px]
What's not in MVP
- Image rendering in terminal (show URL)
- Video in terminal (not practical)
- File previews (show filename + URL)
- Thread view (show reply inline)
- Custom emoji (unicode only)
- Plugin system (future)