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)