Repository navigation
feat(search): a search all meeting hit names its cue and speaker - #2329
Merged
Merged
Conversation
leemour
force-pushed
the
feat/search-hit-place
branch
from
November 1, 2026 20:04
cd51d92 to
692c1d8
Compare
`search all` named a meeting hit only by `meeting:<account>/<meeting>` with `offset_ms`, which `meetings passage` refuses, and gave no speaker. A transcript hit now also carries `cue_ref` (the matched cue, which `meetings passage` opens) and `sender_name` (marked untrusted). `ref` stays the meeting, so evidence that cites it is unchanged. The legacy meetings store search (sqlite and the memory reference store) returns the cue as `SearchHit.ref` and `speakerName`; the store contract checks both. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
leemour
force-pushed
the
feat/search-hit-place
branch
from
November 1, 2026 20:14
692c1d8 to
dcc3b8d
Compare
leemour
added a commit
to WireCatLabs/zoom-cli
that referenced
this pull request
Nov 1, 2026
## Task WireCat Desktop's Search page cannot open a meeting hit: `search all` hits are `meeting:<account>/<meeting>` with `offset_ms`, `meetings passage` refuses that ref, and there is no speaker. ## What - cli-core 0.533.0 (WireCatLabs/cli-core#2329) adds to each transcript hit of `search all`: - `cue_ref`: `meeting:<account>/<meeting>/<transcript>/<cue>`, which `meetings passage` accepts; - `sender_name`: the cue's speaker (listed in `untrusted`). `ref` stays the meeting; chat and summary hits get neither. Additive. - Open the place: `zm personal meetings passage <cue_ref> --before-n 3 --after-n 3 --json`. - Bumps `@wirecat/cli-core` 0.507.0 → 0.533.0 and `@wirecat/cli-base` 0.68.1 → 0.71.0 (cli-core 0.529.0+ needs 0.71). No zm code change was needed. - `docs/usage.md`, regenerated `docs/commands.md`, changelog. ## Testing - New test in `src/meeting-passage.test.ts`: `search all agreed --json` → hit has `cue_ref` and `sender_name` → `meetings passage <cue_ref> --before-n 3 --after-n 3 --json` returns the cue, offline, no network. - `pnpm test` (686 passed), `ci:quick`, `lint`, `docs:check`, `test:matrix:check` pass locally. Not released — the owner decides. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Task
WireCat Desktop's Search page cannot open a meeting hit from
search all: the hit ismeeting:<account>/<meeting>withoffset_ms,meetings passagerefuses that ref, and the hit has no speaker (plan item 4, "Gaps in the CLIs").What
search allgainscue_ref(meeting:<account>/<meeting>/<transcript>/<cue>) andsender_name.meetings passage <cue_ref> --before-n 3 --after-n 3 --jsonopens it. Additive:refstays the meeting; chat and summary hits are unchanged.sender_namejoins the meeting hit'suntrustedlist (speaker names come from the provider).meetings.search(sqlite and memory) returns the cue asSearchHit.refplusspeakerName; the store contract asserts both.MeetingSearchItemgetscueRefandspeakerName.hitentity schema, REFERENCE.md, changelog.Testing
cueRef→readMeetingPassagereturns the cue with one line each side.cue_refand an escapedsender_name.typecheck,lint,docs:checkpass.🤖 Generated with Claude Code