Skip to content

feat(search): gcal <profile> search all, one search over meetings, chats and notes - #93

Merged
leemour merged 2 commits into
mainfrom
feat/search-all
Nov 2, 2026
Merged

leemour merged 2 commits into
mainfrom
feat/search-all

Conversation

@leemour

@leemour leemour commented Nov 2, 2026

Copy link
Copy Markdown
Member

Task

Give gcal its own search all over meetings, chats and notes. This closes the 🟡 "One search over everything" on gcal's comparison page. The site update is a later step.

Why

Until now only the other WireCat tools' search all read gcal's meetings, and gcal search events found meetings only.

What

  • Mounts cli-core's shared search all beside search events (cli-core 0.549.0, feat(calendar): a calendar CLI can mount search all beside search events cli-core#2384). It reads the shared store: synced events, the messages tg, max or wa stored, and notes, best match first.
  • Names the accounts it read (WC-ACCT-9). meta.accounts lists them, and a terminal shows a searched: line. Meeting transcripts (zoom's) are read only when --source names a meeting account. Otherwise meta.issues says meetings were not searched. That is the standard's exception, and for gcal it applies to transcripts only: calendar events are gcal's own kind and are always read.
  • Flags match tg's and max's (WC-ACCT-8). --only, --source, --max-meetings, --limit, --page, --exact and --timezone come from one shared option set. Mail is refused and points to memo search mail, as in tg.
  • Untrusted text is marked. Every hit has untrusted, and the MCP instructions now also name messages, sender names and transcripts.
  • MCP and permissions. MCP serves it as a read (contracts/mcp-catalogue.json), and permissions.search.all can deny it.
  • Profile lock. With GCAL_PROFILE_LOCK set, it reads only the profile's own calendar and refuses --source.
  • No network. It reads the local store only and never asks Google.
  • Version bumps. @wirecat/cli-core 0.548.0 → 0.549.0 and @wirecat/cli-base 0.73.0 → 0.74.0.
  • Docs: docs/usage.md, README, skill, generated docs/commands.md, test matrix, CHANGELOG Unreleased (kept beside the feeds entries).

Testing

  • src/search-all.test.ts (memoryKeyring, the fake Google API):
    • Sync a meeting, store a Telegram message, and check that one gcal personal search all planning finds both. meta.accounts names telegram:500 and google-calendar:owner@example.com, and no Google request is made.
    • The text view shows the searched: line and both hits. --only, --exact, --limit/--page, --timezone and --max-meetings are checked.
    • Refusals: mail, the profile lock with --source, and permissions.search.all=deny.
  • No POSIX-only checks, so no Windows guard was needed.
  • Local results: all 16 test files pass, plus lint, typecheck, docs, contracts, contracts:upgrade, lint:commands, audit, standards, version, no-leak and package smoke.

🤖 Generated with Claude Code

…ats and notes

gcal mounts cli-core's shared `search all` (cli-core 0.549.0, which lets a
calendar CLI mount it beside `search events`). One query reads the store
every WireCat tool shares: the synced calendar events, the messages tg,
max or wa stored, and notes, best match first.

- WC-ACCT-9: meta.accounts names every account read, and a terminal shows
  it on a "searched:" line. Meeting transcripts (zoom's) are read only when
  --source names a meeting account; otherwise meta.issues says meetings
  were not searched. Calendar events are gcal's own kind and always read.
- WC-ACCT-8: the same --only, --source, --max-meetings, --limit, --page,
  --exact and --timezone as tg's and max's search all, from one shared
  option set. Mail is refused and points at memo search mail.
- Each hit keeps its untrusted fields; the MCP instructions now name the
  messages, sender names and transcripts search all returns.
- MCP serves it as a read; permissions.search.all can deny it.
- GCAL_PROFILE_LOCK keeps it to the profile's own calendar and refuses
  --source.
- Local store only, never Google.

Bumps @wirecat/cli-core 0.548.0 -> 0.549.0 and @wirecat/cli-base
0.73.0 -> 0.74.0. Docs: usage, README, skill, generated commands,
test matrix, CHANGELOG Unreleased.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@socket-security

socket-security Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updated@​wirecat/​cli-base@​0.73.0 ⏵ 0.74.098 +1100100 +196 +170

View full report

… 0.74.0 adds

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@leemour
leemour merged commit 10de078 into main Nov 2, 2026
13 checks passed
@leemour
leemour deleted the feat/search-all branch November 2, 2026 07:34
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