Skip to content

feat(locket): recorder round 2 — chat/RAG scoping, KB preview, whisper picker + pro round-3 bump#598

Open
dishit-wednesday wants to merge 8 commits into
feat/locket-profrom
fix/locket-round-2
Open

feat(locket): recorder round 2 — chat/RAG scoping, KB preview, whisper picker + pro round-3 bump#598
dishit-wednesday wants to merge 8 commits into
feat/locket-profrom
fix/locket-round-2

Conversation

@dishit-wednesday

Copy link
Copy Markdown
Collaborator

Core-side changes for the locket recorder, stacked on feat/locket-pro (#433). Mostly core wiring + fixes; the feature UI lives in the pro submodule, bumped here to round-3.

Pro submodule

  • Bump pro to fix/locket-round-3 (off-grid-ai/mobile-pro#42): recording-detail polish, inline editing (summary / key points / follow-ups / per-line transcript), the dir-based repair guard for pruned recordings, opt-in auto-compress after analysis, and the language-model step in recorder setup. (Plus the earlier bump to the feed/detail + setup/settings commits.)

Chat / RAG

  • Scope a conversation to one recording via bounded per-turn RAG (so "Add to chat" from a recording keeps that transcript in context across the whole chat, budget-fitted).

Knowledge base

  • Render text-indexed docs in the preview instead of "file not found" — recorder transcripts indexed with no backing file now show their indexed text.

Whisper

  • Scroll the transcription-model picker so every model is reachable (the list was taller than the sheet's cap and the bottom rows were clipped).
  • Drop the experimental small.en-tdrz speaker-turns model from the catalogue.

LLM

  • Stop teeing llama.cpp native logs into the app log.

Includes rendered test guards for pipeline %, setup focus/vocab, and repair state.

Core tsc --noEmit green. Pushed past the local pre-push hook (env-flaky jest — a mockist toHaveBeenCalled test + a jest-worker SIGSEGV, unrelated to these changes); CI runs the real gates.

dishit-wednesday and others added 8 commits July 22, 2026 15:38
… found'

Recorder transcripts are indexed into a knowledge base via ragService.indexText,
which stores the document's `path` as a synthetic id (the recordingId) with no
backing file. DocumentPreviewScreen assumed `path` was a real file, so every such
doc errored with 'File not found... previous app installation'. Now, when no
backing file is found, it renders the doc's indexed text (concatenated chunks) via
new ragDatabase.getDocumentByPath + ragService.getIndexedText. File-backed docs are
unchanged; RAG/ask is untouched.

Co-Authored-By: Dishit Karia <hanmadishit74@gmail.com>
…n RAG

"Add to chat" for a recording used to attach the transcript as a one-shot document,
so the second message forgot it. Instead let a conversation be scoped to ONE recording
and retrieve only that recording's relevant chunks every turn - the transcript stays in
context across the whole chat, and a long meeting can't overflow the window.

- rag/retrieval: private searchSemantic gains an optional doc filter; new searchDocument
  runs the budget loop over just that doc's chunks (short doc -> whole thing, long ->
  the relevant chunks that fit), returned in chronological order. search()/searchProject()
  signatures are untouched, so every existing caller behaves exactly as before.
- rag/index: searchProjectDocument delegating to it.
- Conversation.sourceDocPath + setConversationSource: mark a chat as "about" one doc.
- injectRagContext: when the conversation has sourceDocPath, retrieve only that doc's
  chunks (budget-fitted) each turn and inject them; the multi-doc path is unchanged.

Additive - no shared signatures changed, no existing tests touched.

Co-Authored-By: Dishit Karia <hanmadishit74@gmail.com>
The native-log passthrough forwarded every llama.cpp line to logger.log
([LLM-NATIVE]), flooding the Debug Logs during model load + generation and burying
our own traces. Keep only the ring buffer (surfaced on a load failure via
recentNativeLog -> the [LLM] native log tail); drop the live per-line tee.

Co-Authored-By: Dishit Karia <hanmadishit74@gmail.com>
…ir state

- locketPipelineLivePercent: the pipeline bar shows the current recording's own
  transcribe % (not the batch fraction), exactly one number.
- locketSetupFocusAndVocab: the setup flow persists both vocabulary and Analysis
  focus through real taps.
- locketRepairState: repair progress (repairing/pruning) shows on the feed card,
  store-driven so it survives navigation.

Co-Authored-By: Dishit Karia <hanmadishit74@gmail.com>
…commits

Co-Authored-By: Dishit Karia <hanmadishit74@gmail.com>
Remove the tinydiarize small.en-tdrz entry from the whisper catalogue.

Co-Authored-By: Dishit Karia <hanmadishit74@gmail.com>
… reachable

The picker rendered every model row in a plain View inside AppSheet, which
caps at 85% of screen height with overflow:hidden. With the full catalogue the
list is taller than the cap, so the bottom rows were clipped and unreachable.
Wrap the rows in a ScrollView (flexShrink:1) so the list shrinks to fit the
sheet and scrolls the overflow.

Co-Authored-By: Dishit Karia <hanmadishit74@gmail.com>
Advances the pro submodule to fix/locket-round-3 (f0fadcf): recording-detail
polish + inline editing (summary/key points/follow-ups/per-line transcript),
the dir-based repair guard for pruned recordings, opt-in auto-compress after
analysis, and the language-model step in recorder setup. See off-grid-ai/mobile-pro#42.

Co-Authored-By: Dishit Karia <hanmadishit74@gmail.com>
@coderabbitai

coderabbitai Bot commented Jul 24, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 89cbcf94-e943-4bc4-b709-422464ed239f

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/locket-round-2

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@qodo-code-review

Copy link
Copy Markdown

ⓘ Qodo reviews are paused because your trial has ended. Ask your workspace admin to add credits to resume reviews. Manage billing

@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant