Username
351b980b42
docs: add reconnection and error recovery docs
2026-02-24 14:54:40 +01:00
Username
6f590ede38
app: add reconnection status to status bar
2026-02-24 14:54:07 +01:00
Username
e443facd3b
app: add auto-reconnect with backoff
2026-02-24 14:43:29 +01:00
Username
d02bb5239a
app: stop audio on disconnect
2026-02-24 14:40:24 +01:00
Username
a041069cc9
client: add ConnectionFailed and reconnect method
2026-02-24 14:34:40 +01:00
Username
0b186f1f0c
update roadmap and tasklist
2026-02-24 14:19:48 +01:00
Username
0b178d371e
docs: add volume, certificate, and reload docs
2026-02-24 14:19:15 +01:00
Username
0bc41d1a46
app: add config reload on F5
2026-02-24 14:18:19 +01:00
Username
e9726da401
app: add volume key bindings and status display
2026-02-24 14:17:02 +01:00
Username
5e44ee9e38
app: wire volume and certificate config
2026-02-24 14:15:42 +01:00
Username
6467f5fe32
client: add certificate parameters
2026-02-24 14:15:24 +01:00
Username
e9944c88eb
audio: add gain control to capture and playback
2026-02-24 14:14:52 +01:00
Username
eb98165370
config: add gain and certificate fields
2026-02-24 14:13:18 +01:00
Username
0856ab3c55
docs: update tasklist with completed items
2026-02-24 13:58:02 +01:00
Username
b852459eff
feat: add channel navigation and user status indicators
...
Tab cycles focus to sidebar where Up/Down navigates channels
and Enter joins the selected one. Muted/deafened users show
status symbols in the channel tree.
2026-02-24 13:57:57 +01:00
Username
ec81fac507
docs: add key bindings and fix ptt key in readme
2026-02-24 13:31:56 +01:00
Username
931c6d4776
docs: add up/down key bindings to usage
2026-02-24 13:28:08 +01:00
Username
6c16883135
feat: add chat input history navigation (up/down)
2026-02-24 13:28:03 +01:00
Username
f77375422a
add --cprofile flag with periodic dump
2026-02-24 13:18:10 +01:00
Username
ee145b4071
app: log transmit state changes to chatlog
2026-02-24 13:09:03 +01:00
Username
89ebad6c15
app: add F1 self-deafen toggle and bold TX indicator
2026-02-24 13:02:38 +01:00
Username
a6bdc02484
client: add set_self_deaf server notification
2026-02-24 13:02:09 +01:00
Username
3bbe8a96f3
audio: add deafened property to suppress playback
...
When deafened, playback callback writes silence and
queue_playback discards incoming PCM.
2026-02-24 12:58:39 +01:00
Username
31ac90d2c9
fix: ptt auto-detect falls back to toggle mode
...
Textual does not expose key-release events, so KittyPtt
hold-mode never received key_up and stayed transmitting.
Auto-detect now tries evdev first, then falls back to
toggle (press-on/press-off). Default mode changed to toggle.
2026-02-24 12:50:40 +01:00
Username
bc0da57625
ptt: change default key from space to f4
...
Space conflicts with chat input. F4 is unused by default
in most terminal emulators and won't interfere with typing.
2026-02-24 12:46:45 +01:00
Username
623c51a19d
fix: enable word wrap in chat log
...
RichLog defaults wrap=False, causing long messages to extend
beyond the visible area instead of wrapping at the widget edge.
2026-02-24 12:42:39 +01:00
Username
227d415c24
fix: enable rich markup in chat log
...
RichLog defaults markup=False, so all Rich console markup tags
([dim], [#9ece6a], etc.) rendered as literal text. Pass
markup=True in ChatLog constructor.
2026-02-24 12:41:09 +01:00
Username
e7698fd181
fix: use content_size and fixed width for sidebar layout
...
width: auto on Static expands to content width before clamping,
so self.size.width matched content and truncation never fired.
Switch to fixed width with dynamic resize, use content_size to
exclude padding/border from width calculations.
2026-02-24 12:38:24 +01:00
Username
590e5e8f0f
app: responsive terminal layout
...
Sidebar uses auto width (min 16, max 32) instead of fixed 24.
Channel and user names truncate with ellipsis at widget boundary.
Status bar adapts format based on available width. Resize events
trigger re-render of width-aware widgets.
2026-02-24 12:31:55 +01:00
Username
e92adeda7f
fix: enable receive sound in pymumble
...
Without set_receive_sound(True), pymumble silently drops all
incoming audio packets.
2026-02-24 12:25:37 +01:00
Username
08ac934b17
add audio-diag and voice-smoke test tools
2026-02-24 12:23:50 +01:00
Username
54a70c108f
tests: rename get_encoded_frame to get_capture_frame
2026-02-24 12:23:43 +01:00
Username
c4f60df224
audio: remove opus codec, pass raw pcm to pymumble
...
pymumble handles opus encode/decode internally. The pipeline
is now pure PCM on both capture and playback paths.
2026-02-24 12:23:34 +01:00
Username
657ea6c255
docs: mark phase 2 voice complete
2026-02-24 12:10:58 +01:00
Username
0eccda1a2c
add audio pipeline tests
2026-02-24 12:10:54 +01:00
Username
6673ad187e
app: wire audio pipeline and ptt
...
Start AudioPipeline on server connect, send loop polls capture
queue, PTT toggles mic encoding, incoming sound queued for playback.
Audio failure logs to chatlog without crashing.
2026-02-24 12:10:50 +01:00
Username
0aa7b81439
audio: fix playback path to accept raw pcm
...
pymumble already decodes incoming audio. Remove the decoder from
the playback callback — write PCM directly to the output buffer.
2026-02-24 12:10:44 +01:00
Username
6efa9591dc
docs: update roadmap and tasklist for phase 1 completion
2026-02-24 12:01:16 +01:00
Username
a8960e2027
add client dispatcher unit tests
2026-02-24 12:01:11 +01:00
Username
2f7b192640
app: wire mumble connection, text chat, channel tree
...
Connect to server on mount via @work(thread=True). Bridge pymumble
callbacks to Textual messages (ServerConnected, ServerDisconnected,
TextMessageReceived, ServerStateChanged). Render live channel/user
tree recursively. Send text on input submit. Clean disconnect on quit.
2026-02-24 12:01:06 +01:00
Username
5fecebaa12
client: replace async wrapper with thread-safe dispatcher
...
Convert connect/disconnect to blocking calls (pymumble is synchronous).
Remove asyncio loop coupling. Add set_dispatcher() for marshalling
callbacks into the host event loop. Register all pymumble callbacks:
connected, disconnected, user/channel CRUD, text message, sound.
2026-02-24 12:00:59 +01:00
Username
5df1f484a4
fix: use rich markup instead of raw ansi in tui widgets
2026-02-24 11:48:30 +01:00
Username
836018d146
feat: scaffold tuimble TUI mumble client
...
Core modules: TUI app (textual), mumble protocol client,
audio pipeline (sounddevice + opus), push-to-talk with
kitty protocol / evdev / toggle backends. Config via TOML.
2026-02-24 11:44:06 +01:00