diff options
| author | Danilo M. <danix@danix.xyz> | 2026-09-18 14:29:48 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-09-18 14:29:48 +0200 |
| commit | 7d4654536de5be4bd3555eb4b81a2e07c1d4148d (patch) | |
| tree | 03ca3f3e14811d109ad4e9aafcf690ffd16c4a8b /src/notmuchworker.cpp | |
| parent | 196bfaeefdbbbd2ff23dc2648e21ae86d41a57b6 (diff) | |
| download | qtmaildir-7d4654536de5be4bd3555eb4b81a2e07c1d4148d.tar.gz qtmaildir-7d4654536de5be4bd3555eb4b81a2e07c1d4148d.zip | |
docs: add the contact completion implementation plan
Item 204, six tasks, no spec: the shape was settled with the user on
2026-09-18 rather than brainstormed, so the plan carries the four decisions
itself (the config key, loading once, matching on name and address, and the
four vCard fields that matter).
No new dependency. libical is installed but its vCard parser is 4.0 and this
machine has 3.0.20, and libicalvcal is the old vCalendar converter rather
than a vCard reader, so four fields of a hand parse is proportionate.
The measurements are in the plan because two of them change what a correct
implementation looks like. Of 117 cards in the real store only 14 carry an
address, so a short candidate list is right rather than broken, and a fixture
where every card completes would not be representative. The store is
unfolded, so the folded-card fixture is the one the real data could never
have caught.
The largest trap is one this repository has already paid for twice:
QLineEdit::setCompleter() is unusable for a field holding a list, and a test
written with setText() passes against that bug because setText does not drive
a completer at all. The plan requires typed keys and a mutation check on the
second-recipient case.
The query bar half comes with a correction: querycompleter.cpp:652-656 says
addresses need an enumerator libnotmuch does not expose, which stops being
true for from: and to: the moment the store exists.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'src/notmuchworker.cpp')
0 files changed, 0 insertions, 0 deletions
