feat: add cross-session transcript search - #62
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5c37716203
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
Pull request overview
Adds a cross-session, cross-host transcript search experience that keeps queries/results in memory only, backed by a new vendored @oh-my-pi/app-wire@0.6.1 contract and corresponding client/web implementations.
Changes:
- Pin vendored
@oh-my-pi/app-wireto0.6.1and update distribution/lockfile checksums and notices. - Add a
TranscriptSearchCoordinatorto the client package with multi-host fan-out, deterministic merging, bounded retention, pagination, and historic context reads. - Add the
/searchweb route, command-palette/titlebar entry points, memory-only query handoff, UI + tests, and an ADR documenting the design.
Reviewed changes
Copilot reviewed 23 out of 27 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| vendor/app-wire/manifest.json | Bumps vendored app-wire manifest metadata to 0.6.1 (commit/tree/tarball hashes, corpus hash). |
| THIRD_PARTY_NOTICES.md | Updates third-party notice to reflect the new app-wire version and provenance hashes. |
| README.md | Updates documented pinned app-wire contract and describes transcript search/historic context contract addition. |
| pnpm-lock.yaml | Updates lockfile to reference vendored oh-my-pi-app-wire-0.6.1.tgz. |
| packages/protocol/test/distribution.test.ts | Extends distribution verification to cover new transcript-search/context fixtures and source entries, plus updated manifest pinning. |
| packages/protocol/package.json | Updates protocol package dependency to vendored app-wire 0.6.1 tarball. |
| packages/client/test/transcript-search.test.ts | Adds unit tests for multi-host coordination, cancellation/supersession, pagination, retention caps, and context reads. |
| packages/client/src/transcript-search.ts | Implements the cross-host transcript search coordinator, merging, retention, pagination, and context fetching. |
| packages/client/src/index.ts | Exposes transcript search coordinator/types from the client public API. |
| docs/adr/011-cross-session-transcript-search.md | Documents the product/contract shape, privacy boundary, and failure behavior. |
| compat/omp-app-matrix.json | Updates compatibility matrix to app-wire 0.6.1 metadata and hashes. |
| apps/web/test/transcript-search.test.tsx | Adds model/UI tests covering memory-only behavior, partial results, highlighting, and historic context rendering. |
| apps/web/src/router.tsx | Registers the new /search route and connects it to the live transcript search screen. |
| apps/web/src/features/transcript-search/TranscriptSearchScreen.tsx | Adds the transcript search screen UI, host status list, results list, and historic context view. |
| apps/web/src/features/transcript-search/source.ts | Adds the web adapter that uses the client coordinator to execute search/pagination/context and map results to UI models. |
| apps/web/src/features/transcript-search/search-memory.ts | Implements ephemeral in-memory query handoff + subscription hooks (no URL/state persistence). |
| apps/web/src/features/transcript-search/route.ts | Defines stable /search route constant (no query params). |
| apps/web/src/features/transcript-search/model.ts | Defines UI-facing search models, filters, partial-result detection, and plain-text highlighting splitter. |
| apps/web/src/features/transcript-search/LiveTranscriptSearch.tsx | Wires route state to the source adapter, manages execution/cancellation, filters, paging, and historic context state. |
| apps/web/src/features/transcript-search/index.ts | Barrel exports for the transcript-search feature module. |
| apps/web/src/features/transcript-search/historic-context.ts | Defines the opaque navigation intent for opening historic context without leaking transcript text/query. |
| apps/web/src/features/transcript-search/fixtures.ts | Provides disconnected showcase fixtures for search + context in browser-only mode. |
| apps/web/src/features/transcript-search/execution.ts | Adds “latest-run wins” executor to prevent stale completions from publishing after newer requests. |
| apps/web/src/components/Titlebar.tsx | Updates titlebar search affordance text/icon to include transcript search intent. |
| apps/web/src/components/CommandPalette.tsx | Adds entry points for transcript search (including “search for current query”) and hands off query in memory before navigation. |
Files not reviewed (1)
- pnpm-lock.yaml: Generated file
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…ranscript-search # Conflicts: # README.md # THIRD_PARTY_NOTICES.md # apps/web/src/router.tsx # compat/omp-app-matrix.json # packages/client/src/index.ts # packages/protocol/package.json # packages/protocol/test/distribution.test.ts # pnpm-lock.yaml # scripts/check-release-consistency.test.mjs # vendor/app-wire/manifest.json
…ranscript-search # Conflicts: # README.md
Adds a full cross-session transcript search experience across connected OMP hosts.
Includes the /search route, palette and titlebar entry points, project/speaker/archive filters, honest per-host states, bounded multi-host merging and pagination, and read-only historical context. Queries and results remain in memory only.
Pins app-wire 0.6.1 from the coordinated OMP implementation: lyc-aon/oh-my-pi#12
Verification:
Merge note: open PR #60 overlaps protocol/vendor/router files and must rebase after this PR while retaining app-wire 0.6.1.