v0.7.0 — Outlook search v2 (multi-term, word matching, sender, EntryID) + new outlook get
Implements FR_outlook_search_v2_multiterm_sender_match_and_get.md in full on both Windows and macOS. All 6 items shipped.
Breaking change in outlook search output: matched, entryid, storeid columns are now always emitted (no longer flag-gated), and defaults changed where the old default was wrong. Wrappers built against v0.6.x output need their column expectations updated.
Why withdraw v0.4.0 behavior
The v0.4.0 search was single-term, substring-only, subject/body-only, since-only, no EntryID. The FR documented a real "cast a wide net" task (a Gasspring.ca US$313.89 order across two mailboxes) where every one of those gaps blocked progress — including pdac matching inside a base64 URL blob to surface a Sudbury meal newsletter as a "hit." Modern marketing mail makes that systematic, not accidental.
Defaults changed (FR § "What I'd ship instead")
| Setting | Old | New | Why |
|---|---|---|---|
--match |
implicit substring | word (ci_phrasematch + LIKE+regex fallback) |
substring is just wrong for marketing mail |
--fields |
subject,body |
subject,body,from |
sender search is what you usually want |
| EntryID/StoreID | flag-gated | always emitted | connects search → get without a flag |
Added — outlook search v2
- Multi-term
--query(repeatable + comma-separated) --fields from(sender display name + SMTP address)--match word|substring(word default uses ci_phrasematch with auto-fallback for non-indexed stores)--until yyyy-MM-dd(closed date window with--since)matchedcolumn (per-hit term attribution)entryid+storeidcolumns (always)
Added — outlook get (new command)
combridge outlook get --id <EntryID> [--store <substr>] [--headers] [--html] <out>
combridge outlook get --subject <substr> [--store <substr>] [--folder <substr>] [--max N] <out>
Headers + [BODY] + optional [HTMLBODY] + attachments list.
Live-verified
The FR's exact Gasspring scenario, against live mailboxes:
combridge outlook search --query "ace control,acecontrols,313.89,gasspring,forklift,spring" \
--match word --since 2026-02-01 --until 2026-03-31 --snippet /tmp/gasspring.tsv
- 14 hits vs the FR's 4,412-hit substring flood (99.7% noise reduction)
- First hit =
Your Gasspring.ca order WS14080CA has been received!,matched=313.89,gasspring,spring outlook get --id <EntryID> --store toprops --headersthen returned headers + theMountingDrawing_WS14080CA_8-19-160_8880.pdfattachment + line items + Total: US$313.89
Mac parity
Both OlMacSearchCommand and new OlMacGetCommand ship with the same flag surface and column shape. AppleScript whose is substring-only (no ci_phrasematch), so word-mode always uses the C#-side \bterm\b regex post-filter. EntryID column is the integer AppleScript exposes; StoreID column reuses account name (Mac Outlook has no StoreID concept) — cross-OS schema compatibility preserved. Still classic Outlook for Mac only (not the 2024+ Catalyst "New Outlook").
See CHANGELOG.md v0.7.0 entry for full implementation detail.