Repository navigation
feat(listings): documents and meetings listings for the Desktop pages - #2932
Merged
Merged
Conversation
One read for the "Документы" page and one for the "Встречи" page, shared by memo's documents and meetings commands. - store.listings: every listed document of every account with its preferred file, kind, folder and text flag, paged with a separate count; the folder tree per account with counts; one document with a slice of its text, tags, people, meetings and events. - One row per real meeting: a calendar event and its Zoom or Meet meeting are one row when the store linked them, or when they share the exact join key and their times overlap. Phone calls are rows of kind call. Rows carry sources, participants with person refs, recording/transcript/summary flags, documents and pending findings. - Services, query registries (document_entry, meeting_entry) and request builders under ./cli; the event window is shared with listEvents. - store.ts line cap raised to 479 for the new area. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- pending_findings leaves out findings the owner already decided; each
findings batch on a row gives findings and pending, and only the row's
meeting accounts' batches are read.
- A meeting linked to an event the owner made stays on it over a room
match; show reads an event's meetings by link or room, with no window.
- An event is listed when one of its meetings overlaps the window.
- kind:call holds a phone meeting joined to an event; deleted copies no
longer count for kind, sources or the person filter.
- show meeting:<account>/<id> checks that very meeting.
- folder: matches the folder's subtree over the tree's own path, with
the files' index range (subtreeOf); the preferred file reuses
PREFERRED_FILE.
- participants[].person and transcript lines' person are {ref, name};
a document's text says has_more; the error reasons are registered.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… by UNION so the time index holds Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
leemour
added a commit
to WireCatLabs/cli-memo
that referenced
this pull request
Nov 13, 2026
…|show for the Desktop pages (#833) ## Task WireCat Desktop gets two pages. "Документы" lists every document. "Встречи" shows meetings and calls as a table and as a week or month calendar. This PR adds the memo commands those pages read. They are thin over cli-core 0.658.0's listings (WireCatLabs/cli-core#2932). ## What - `memo documents list [query]`: every document of every account, with paging and a total. - Filters: `source:`, `kind:`, `folder:`, `source_modified_at:`, `has_text:`, `tag:`, `person:`. A bare word searches the text with the notes search. - `local_path` is filled from memo's notes-folder config. - `memo documents tree`: each account's folder tree, with counts. - `memo documents show <document:id>`: part of a document's text, read with `--cursor` and `--max-chars`, plus its tags, people, meetings and events. - `memo meetings list [query]`: one row per real meeting. A calendar event and its Zoom or Meet meeting share one row, and phone calls are included. - A row is listed when it overlaps the `started_at:` window. The window takes days or instants with their offset. `started_at:[* TO *]` reads every row. - Order: `--order recent|start`. - Each row has sources, participants with person refs, join links, recording, transcript and summary flags, documents, and the number of pending findings. - `memo meetings show <event:id|meeting:acc/id>`: transcript lines with their times, read with `--cursor` and `--limit`, plus summaries, findings batches, the calendar's text and documents. - The meetings shell keeps Core's `list` and `show` names. Its reviewed overrides are in `src/contract-overrides/meetings.ts`. `lint/overrides.json` gets one override for `--order start`, the oldest-first order the Desktop calendar needs. - Pins cli-core 0.658.0. Its changelog since 0.656 has nothing else that touches memo. ## Testing - The full suite passes: 148 files. - `docs/dev/test-matrix.md`: 0 commands or options without a test. - `lint:commands`, `docs:check` and `lint` pass. `docs/commands.md` is regenerated. - A fresh reviewer agent checked the change. Its findings are fixed: - the `local_path` join; - `has_more` when the total is capped; - the examples; - the window docs; - the shared `between` helper; - the override reason. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
leemour
added a commit
to WireCatLabs/cli-testing
that referenced
this pull request
Nov 13, 2026
…tore (#370) Why: WireCat Desktop's new Documents and Meetings pages read cli-core's listings (WireCatLabs/cli-core#2932). The question was whether a month window and a 50-row page stay under about 150 ms p95 on a heavy user's store, and so whether the listings need a migration with new indexes. They do not. Headline (p95): documents first page 55 ms, text search 74 ms; meetings month 134 ms (412 rows), week 29 ms, default page 50 ms; a year in one read about 600 ms. The script seeds a synthetic store (20k documents, 9k events, 4k meetings, 2k findings batches); no real data. 🤖 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 gets two pages: "Документы" (every document of every account) and "Встречи" (meetings and calls, as a table and a week/month calendar). memo's
documents list|show|sourcesandmeetings list|showwill read them through this code.What
store.listings: the SQL (src/store/sqlite/document-listing.ts,meeting-listing.ts).join_keyis the same and their times overlap. A recurring room's other occurrences never match. Phone calls are rows of kindcall. Rows give sources, participants with person refs, recording/transcript/summary flags, documents and the pending findings count../services):listDocuments,listDocumentSources,showDocument,listMeetingEntries,showMeetingEntry../cli: the query registries (document_entry,meeting_entry) and the request builders. The entities are exported asLISTING_ENTITIES, not added toENTITIES: the inferred type ofENTITIESthen breaks TS7056.eventWindowis shared withlistEvents.subtreeOfis shared withfiles.list.localDate,plusDaysandeventIdOfare exported from./calendarfor reuse.store.tsline cap goes from 471 to 479 for the new area.Design notes: docs/dev/LISTINGS.md.
Testing
src/services/listings.test.tshas 10 tests:folder:;The calendar, store, services, entities, errors, meetings and cli suites pass locally. Nine migration tests timed out under load and passed when rerun alone.
Benchmark on a synthetic store: 20k documents, 9k events, 4k meetings, 2k findings batches.
The script and the README go to cli-testing (
performance/desktop/documents-meetings).🤖 Generated with Claude Code