feat(people): derive the People CRM from your selected chats#76
Merged
Conversation
People was only populated from participants NAMED as the owner of an extracted todo/meeting — a narrow path that usually yielded nobody, so the tab stayed empty even with chats selected. Broaden it (scope-consistent with default-off): a person now qualifies when, in an INCLUDED (non-removed) chat, they have a real message and are either the counterpart of a 1:1 chat or a todo/meeting owner. Plain group members who are neither are left out so the list doesn't flood. The projection is rebuilt each refresh (DELETE+INSERT), so excluding a chat drops its people and re-including brings them back — nothing un-selected drives the list. Also refresh on GET /api/people so newly-included chats show up immediately instead of waiting for the next summary run. Co-Authored-By: Claude Opus 4.8 <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.
Follow-up to #75 (the People half landed after #75 was already merged, so it needs its own PR).
Why
The People (אנשים) tab stayed empty even after selecting chats. It was only populated from participants named as the owner of an extracted todo/meeting — a narrow path that usually matched nobody.
What
Broaden the derivation, scope-consistent with default-OFF (#75): a person qualifies when, in an included (non-removed) chat, they have a real message and are either
Plain group members who are neither are left out so the list doesn't flood.
refreshPeopleis now a pure projection rebuild (DELETE+INSERT) — excluding a chat drops its people, re-including brings them back, so nothing un-selected drives the list.GET /api/peoplerefreshes on open, so newly-included chats show up immediately instead of waiting for the next summary run.Verification
biome✓ ·typecheck✓ · tests ✓ (agenda/people + extract-entities + server, incl. 3 new People cases: 1:1 counterpart without a todo, un-selected chat excluded, group members not flooded). No frontend change —listPeopleshape is unchanged.🤖 Generated with Claude Code