Skip to content

feat(domain): map MAX contact cards to Attachment.contact - #873

Merged
leemour merged 2 commits into
mainfrom
feat/contact-card
Oct 30, 2026
Merged

leemour merged 2 commits into
mainfrom
feat/contact-card

Conversation

@leemour

@leemour leemour commented Oct 30, 2026

Copy link
Copy Markdown
Collaborator

Maps the CONTACT attachment to the shared Attachment.contact (name, first_name, last_name, user_id).

Observed wire shape (probe:attachments, keys only): _type, contactId number, firstName, lastName, name strings, photoUrl link. No phone, no vCard, so phone stays unset. The avatar link is not mapped.

Checks: typecheck, lint (0 errors), vitest 1597 passed. Changelog entry under Не выпущено.

🤖 Generated with Claude Code

leemour and others added 2 commits October 30, 2026 11:53
Measured on the personal-account protocol (pnpm probe:attachments, 2026-10-30):
CONTACT carries contactId, firstName, lastName, name and photoUrl. There is no
phone and no vCard, so contact has name, first_name, last_name and user_id only.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@leemour
leemour merged commit deb6c4e into main Oct 30, 2026
13 checks passed
leemour added a commit that referenced this pull request Oct 30, 2026
…#874)

#873 mapped MAX contact cards with `first_name`, `last_name` and
`user_id`. cli-core's message output reads `firstName`, `lastName` and
`userId`, so on a real card only `name` reached `messages list --json`.
This renames them; the map test follows. Checked on the owner's real
card (keys only): `first_name`, `name`, `user_id` now appear.

Typecheck passed with the wrong names, so the shared contact type does
not catch this; worth a stricter type in cli-core.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
leemour added a commit that referenced this pull request Oct 31, 2026
…ase (#877)

## Why

cli-core 0.490.0 added store version 40, a trigram index. A CLI on an
older cli-core does not write trigrams into a store already at version
40, so every CLI must move the same day. 0.491.0 is the latest.

## What users see

- `max <profile> contacts list notes:<text>` finds part of a word in any
letter case, Cyrillic included, and answers in milliseconds.
- A query of one or two characters is refused: "search needs at least
three characters".
- The store upgrades to version 40 on first open; older notes get their
index in batches from `search notes` or `store migrate`.
- 0.491.0 changes mail sync only; max does not use it.

## Changes beyond the bump

- No code changes were needed (typecheck, lint, 1597 tests pass
unchanged).
- `docs/people.md` and `skills/max-cli/SKILL.md` describe the new
`notes:` behaviour.
- CHANGELOG, section "Не выпущено": entry for the above, plus a
correction: the 0.88.0 entry for #873 names `first_name`, `last_name`,
`user_id`, but #874 renamed them `firstName`, `lastName`, `userId`. The
released 0.88.0 section is untouched.

## Not done

`release:check` still reports the version already on npm and the
unreleased section; both are resolved by the release itself. Not merged,
not released.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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