Commit Graph

18 Commits

Author SHA1 Message Date
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