Commit Graph

47 Commits

Author SHA1 Message Date
thomas.kopp 7cd6c2a848 docs: diarization implementation plan (13 tasks) 2026-04-02 00:50:57 +02:00
thomas.kopp 8d1af32ef3 docs: diarization + speaker identification design 2026-04-02 00:46:18 +02:00
thomas.kopp 80ce1aa77c docs: add setup guide for Beastix server and client installation 2026-04-02 00:01:05 +02:00
thomas.kopp 52ba53bec4 fix: validate Ollama URL protocol before fetching api/tags 2026-04-01 20:51:23 +02:00
thomas.kopp 0bdc0a5e42 feat: settings page — PipeWire audio device + remote Whisper/Ollama config
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 20:48:56 +02:00
thomas.kopp 81fbbfb56e feat: status includes is_admin, gear icon in header for admins
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 20:45:33 +02:00
thomas.kopp 2376bf5d71 fix: PUT /config deep-merges nested config instead of shallow update
Replaces cfg.update(body) with _deep_merge so partial updates (e.g.
setting whisper.base_url) no longer wipe sibling keys. Also persists
the merged config back to disk via tomli_w. Adds test_put_config_deep_merges.
2026-04-01 20:40:40 +02:00
thomas.kopp ff68827280 fix: module_ids as integers in response, add 403 test for POST /audio/combined 2026-04-01 20:38:43 +02:00
thomas.kopp 478a1ac9d0 feat: GET /audio/devices, POST /audio/combined — PipeWire source management 2026-04-01 20:36:27 +02:00
thomas.kopp ef4aa2a840 feat: AudioRecorder accepts device param — reads audio.device from config
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 20:32:44 +02:00
thomas.kopp 5e7faa8844 fix: use get_running_loop() instead of deprecated get_event_loop() 2026-04-01 20:30:06 +02:00
thomas.kopp 8300851e77 feat: remote Whisper via whisper.base_url — OpenAI-compatible upload 2026-04-01 20:28:31 +02:00
thomas.kopp 912b333124 feat: add audio.device and whisper.base_url to config defaults 2026-04-01 20:25:48 +02:00
thomas.kopp 3f9abc6a89 docs: settings page + remote whisper design 2026-04-01 20:11:38 +02:00
thomas.kopp d8c6fc790b fix: define _guest_user() for tray/hotkey-triggered recording 2026-04-01 16:00:33 +02:00
thomas.kopp ccdc75c74c feat: show date and time in transcript list items 2026-04-01 14:40:01 +02:00
thomas.kopp b74147967b feat: tüit logo in header, clean transcript item layout with grouped action buttons 2026-04-01 14:37:03 +02:00
thomas.kopp 2ab6e7d73b fix: move reprocess button to transcript list item, remove from modal 2026-04-01 14:30:28 +02:00
thomas.kopp 33ae9dc1d8 feat: reprocess existing transcript via Ollama — modal button + POST /transcripts/{filename}/reprocess 2026-04-01 14:27:15 +02:00
thomas.kopp 3673e28e73 fix: improve system prompt — explicit paragraph breaks, lists, section headings 2026-04-01 14:23:26 +02:00
thomas.kopp 1ab023c2ac feat: transcript modal with markdown rendering, delete button, remove preview section 2026-04-01 14:18:04 +02:00
thomas.kopp ae3ae61593 feat: DELETE /transcripts/{filename} — delete transcript with path-confinement check 2026-04-01 14:13:02 +02:00
thomas.kopp aa3eef8fb1 feat: GET /transcripts/{filename} — serve transcript content 2026-04-01 14:12:30 +02:00
thomas.kopp 0bb0975a09 docs: add transcript modal + delete implementation plan 2026-04-01 14:09:23 +02:00
thomas.kopp 629341930e fix: show recording state on first click, fix error state via WS 2026-04-01 13:57:41 +02:00
thomas.kopp d60d6bb1be fix: test_config_loads_defaults — remove reload() that undid CONFIG_PATH patch 2026-04-01 13:49:21 +02:00
thomas.kopp b63f5d59a9 fix: read WebSocket token from query_params directly, not function arg 2026-04-01 13:22:20 +02:00
thomas.kopp 6e317a9c67 fix: error state resettable via mic click, debug logging, pipeline traceback 2026-04-01 12:41:45 +02:00
thomas.kopp 6574481647 fix: web-based first-run setup — removes terminal input(), works under systemd 2026-04-01 12:26:17 +02:00
thomas.kopp d9db41b0b4 fix: use ip route instead of hostname -I for Arch compatibility 2026-04-01 12:23:41 +02:00
thomas.kopp f133b9590c fix: use venv instead of pip --user for Arch PEP 668 compatibility 2026-04-01 12:21:40 +02:00
thomas.kopp 325cb2e6e7 feat: merge implement/transkriptor — full tüit Transkriptor implementation 2026-04-01 11:47:32 +02:00
thomas.kopp 1466a1529f feat: multi-user auth — per-user spaces, pbkdf2 passwords, session tokens, login page 2026-04-01 08:39:16 +02:00
thomas.kopp 94dd871031 feat: install.sh — ROCm check, LAN-mode prompt, systemd user service, hotkey instructions 2026-04-01 02:30:31 +02:00
thomas.kopp 4ec9c56812 feat: main entry point — FastAPI + pystray tray + SIGUSR1 via uvicorn loop capture 2026-04-01 02:29:52 +02:00
thomas.kopp b62c3d6604 feat: browser UI — tüit CI dark theme, XSS-safe DOM, auth-aware 2026-04-01 02:29:07 +02:00
thomas.kopp 319db8c788 feat: API router + pipeline — toggle, status, transcripts, WebSocket, auth stub 2026-04-01 02:26:47 +02:00
thomas.kopp ad84ad5aa3 feat: app state module with status enum and subscriber pattern 2026-04-01 02:25:39 +02:00
thomas.kopp 927e75aa5e feat: audio module — sounddevice recorder with WAV export 2026-04-01 02:22:53 +02:00
thomas.kopp 3976ecb52e feat: transcription module — faster-whisper with ROCm auto-detect 2026-04-01 02:22:03 +02:00
thomas.kopp 333898c5ab feat: LLM module — Ollama client with transcript refinement 2026-04-01 02:20:56 +02:00
thomas.kopp 6775f98259 feat: output module — Markdown file writer with slugified filenames 2026-04-01 02:14:57 +02:00
thomas.kopp 8a39d8b97e feat: config module with TOML defaults 2026-04-01 02:14:14 +02:00
thomas.kopp 20e20f44cd chore: project scaffold 2026-04-01 02:12:41 +02:00
thomas.kopp e4e2322eed chore: add .gitignore with .worktrees/ 2026-04-01 02:11:05 +02:00
thomas.kopp 6b0f2ba39a docs: implementation plan for tüit Transkriptor 2026-04-01 02:04:40 +02:00
thomas.kopp 4c04e17d06 docs: initial design for tüit Transkriptor desktop transcription tool 2026-04-01 01:58:15 +02:00