Commit graph

17 commits

Author SHA1 Message Date
c2a3e60eee
fix(recording): capture mic alongside system audio
Mic callbacks returned early when the system-audio tap was live, so your
own voice was never transcribed or recorded. Always run the mic writer;
it feeds the STT buffer in both modes and writes the WAV only when the
system tap is unavailable (mic-only).
2026-08-13 20:36:20 +05:30
Lakshit Verma
51b8c4a272
Merge pull request #3 from vee1e/fix/parakeet-decoder-layout
fix(stt): Parakeet decoder layout handling for real TDT exports
2026-07-31 18:46:41 +05:30
c59bac2aed
fix(stt): make Parakeet decoder layout handling match real TDT exports
- Accept [batch, hidden, time] ('encoder_outputs' = [-1, 1024, -1]) instead
  of requiring hidden to be the last axis; derive the hidden axis/size from
  decoder session metadata.
- normalize_enc_layout: materialize a true C-contiguous [batch, time, hidden]
  copy after permuting, since permuted_axes keeps the original memory order
  and to_owned()'s fast path preserves those strides (timestep slices were
  non-contiguous, breaking decode_step's as_slice() -> 'ndarray shape error').
- decode_step: build target_length as Int32 to match the model's declared
  input type (was i64, an ORT type mismatch).
- Include the ndarray source message in the Shape error display.
- Add unit tests for hidden-axis detection.
2026-07-31 18:46:11 +05:30
Lakshit Verma
25ab0502f1
Merge pull request #2 from vee1e/feat/rename-titles
feat(tui): rename meeting titles via nvim (single + bulk)
2026-07-31 18:29:32 +05:30
71f7d64a44
feat(tui): rename meeting titles via $EDITOR/nvim (single + bulk)
Adds title rename using the external editor, inspired by the bulk_mv
script (dump names -> edit -> validate -> apply):

- Meetings list: `e` renames the selected meeting, `E` bulk-renames all
  titles (one per line) in $EDITOR/$VISUAL, defaulting to nvim
- Transcript/Summary views: `e` renames the currently open meeting
- Terminal is suspended (raw mode + alternate screen) for the editor
  session via a RearmGuard, then restored on return/error/panic
- Bulk rename is all-or-nothing: rejects line-count changes, empty
  titles, duplicates within the batch, and collisions with existing
  titles; reports per-line errors before applying anything
- db: rename_meetings() applies a batch of title updates in one
  transaction
- tests: plan_bulk_renames validation + db batch rename roundtrip
2026-07-31 18:27:24 +05:30
Lakshit Verma
10165451ef
Merge pull request #1 from vee1e/review-fixes-all
fix(all): apply full-codebase review fixes
2026-07-31 18:09:19 +05:30
03244fa783
fix(all): apply full-codebase review fixes
Security (summary/CLI):
- Delimit untrusted transcript as data in all prompts; add data-hardening
- agy: --sandbox + --disable-slash-commands; isolate cwd for all CLIs
- claude: prompt via stdin (no argv leak); agy argv capped below E2BIG
- non-zero CLI exit is now an error; process groups killed on timeout/quit
- executable check in which(); stop stripping json code fences
- 0600 temp prompt file; atomic prefs writes; truncate stderr in errors

Data loss (recording/system-audio):
- stop_recording now real-joins the STT worker and re-drains the queue,
  so the final ~3-10s of speech is persisted
- non-destructive STT queue drain on DB error
- periodic WAV flush for crash safety
- RAII kill+wait for the Swift helper on all error paths
- non-blocking READY wait (no frozen TUI); mic callback moved off the
  audio thread and skipped when system audio is up
- f32 carryover, tap-death diagnostics, actual stream-rate reporting,
  capped STT feed, wall-clock timestamps, transactional import

STT/model:
- poisoned-mutex locks can no longer kill the STT worker
- decoder tensors are metadata-driven with loud shape/dtype validation
- non-overlapping STT windows; tail flushed on stop
- intra_threads=1, scratch reuse, FIR anti-alias resampler,
  vocab-size mismatch check, tightened model discovery

TUI/terminal:
- RAII terminal guard + panic hook (no more bricked terminal)
- handler errors surface in status instead of killing the TUI
- Ctrl-C / q / Esc cancel an in-flight summary
- wrapped-line scroll reaches the bottom; dead code removed
- markdown checkboxes render; db cleanup on TUI exit

DB/paths:
- index on transcripts(meeting_id); ALTER errors no longer swallowed
- atomic summary store + segment append; transactional import helper
- safe sqlite filename connect; lowercase statuses; absolute fallbacks
2026-07-31 18:08:32 +05:30
7ad9f289e7
fix(fmt): split n and total_samples 2026-07-28 23:52:08 +05:30
49b16bd0c1
fix(recording): open live WAV before capture so full meetings are saved
Hardens the unbounded live WAV path: install the writer after system-audio READY
and before the PCM reader starts, open mic-only WAVs before the stream, drain
metering samples instead of cloning, and add a regression test beyond 3 minutes.
2026-07-28 23:48:16 +05:30
fa23573898
fix(recording): stop the 3 minute audio cutoff [skip ci] 2026-07-26 19:57:12 +05:30
0cb7a36b96
[skip ci] Fix clippy audio stream arguments 2026-07-26 18:15:15 +05:30
d6ab651c2c
Fix live transcription buffer stall 2026-07-26 17:06:15 +05:30
1f06890e3b
ci: run on macos-latest since project is macOS-only 2026-07-26 00:55:33 +05:30
be0a0c9ef5
ci: install libasound2-dev for ALSA dependency 2026-07-26 00:52:58 +05:30
3841692c0b
fix(rust): resolve all clippy warnings and formatting issues 2026-07-26 00:48:13 +05:30
7e30fc656c
ci: add GitHub Actions workflow with clippy, fmt, build, and test 2026-07-26 00:45:32 +05:30
3732a6422b
Initial Commit 2026-07-26 00:42:54 +05:30