From 26599b27cc0fae1bf6cc053bd05dd9e9a9a6cd1a Mon Sep 17 00:00:00 2001 From: hobokenchicken Date: Sun, 28 Jun 2026 17:47:18 -0400 Subject: [PATCH] Phase 5 complete: TUI client documentation, updated roadmap --- Phase-5.md | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Roadmap.md | 15 +++++-- _Sidebar.md | 1 + 3 files changed, 135 insertions(+), 4 deletions(-) create mode 100644 Phase-5.md diff --git a/Phase-5.md b/Phase-5.md new file mode 100644 index 0000000..0914c51 --- /dev/null +++ b/Phase-5.md @@ -0,0 +1,123 @@ +# 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] 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 + +```bash +DUMPSTER_SERVER=https://chat.your.domain \ +DUMPSTER_TOKEN=*** \ +dumpster-tui +``` + +### With config file + +Create `~/.config/dumpster/config.yaml`: + +```yaml +server: https://chat.your.domain +token: *** +``` + +Then run: + +```bash +dumpster-tui +``` + +### Build from source + +```bash +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] hey │ ● u1│ +│ │ #memes │ [14:33] sup │ ● u2│ +│ [G] │ 🔊 hangout │ [14:33] 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) diff --git a/Roadmap.md b/Roadmap.md index 12b668d..4cba5d5 100644 --- a/Roadmap.md +++ b/Roadmap.md @@ -53,8 +53,15 @@ - [x] Example bot: welcome messages on member join - [ ] REST API documentation (OpenAPI/Swagger) — future -## Phase 5: TUI Client +## Phase 5: TUI Client — ✅ DONE -- [ ] Bubbletea terminal client -- [ ] IRC-style chat in terminal -- [ ] LiveKit Go SDK for audio-only voice +- [x] Bubbletea app scaffolding +- [x] Multi-pane layout (server bar, channel list, chat, members) +- [x] WebSocket client for real-time events +- [x] Vim-style navigation (j/k, g/G, Tab, /) +- [x] IRC-style message rendering +- [x] Message input with history +- [x] Voice support (join/leave, mute) +- [x] Lipgloss Gruvbox theming +- [x] Static binary (`dumpster-tui`) +- [x] Config file + env vars diff --git a/_Sidebar.md b/_Sidebar.md index b2a648f..ce5eea4 100644 --- a/_Sidebar.md +++ b/_Sidebar.md @@ -8,6 +8,7 @@ - [Voice & Video](Voice-and-Video) - [Phase 3: Polish & PWA](Phase-3) - [Phase 4: Bots & Extensibility](Phase-4) +- [Phase 5: TUI Client](Phase-5) - [Frontend Design](Frontend-Design) - [Self-Hosting](Self-Hosting) - [Roadmap](Roadmap)