You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Browse filesBrowse the repository at this point in the historyBrowse files
authored and
KenM76
committed
v0.7.0: Outlook search v2 + new outlook get command
Implements FR_outlook_search_v2_multiterm_sender_match_and_get.md in full
on both Windows and macOS. All 6 items shipped.
Per Ken's "we're the only users" note, backward compatibility was NOT
preserved — defaults changed where the old defaults were wrong:
--match defaults to 'word' (was implicit substring) — fixes the
base64 false-positive flood the FR documented (4,412 hits → 14)
--fields defaults to 'subject,body,from' (was 'subject,body') — if you
can search the sender for free you almost always want to
EntryID and StoreID columns always emitted (was flag-gated) — connects
search → get without a flag
Multi-term: --query is repeatable AND accepts comma-separated terms.
Both forms compose. Per-hit re-scan against (term × field) regex pairs
attributes which term(s) matched each row into a new 'matched' column.
Word matching: --match word|substring. Word mode uses DASL ci_phrasematch
on content-indexed stores; per-folder try/catch falls back to LIKE +
\bterm\b regex when ci_phrasematch throws (the non-indexed-store
signal). The C#-side regex post-filter also drops word-mode false
positives that DASL LIKE let through.
New 'outlook get' command resolves an item by either:
--id <EntryID> --store <substr> (direct, via GetItemFromID)
--subject <substr> --max N (subject substring walk)
Output: labeled headers + [BODY] + optional [HTMLBODY] + attachments
list with --headers.
Mac parity: OlMacSearchCommand rewritten with same flag surface and
column shape. AppleScript whose is substring-only (no ci_phrasematch),
so word-mode always uses the C#-side regex post-filter. EntryID column
is the integer AppleScript exposes; StoreID column reuses account name
since Mac Outlook has no StoreID concept. OlMacGetCommand (new) accepts
--id <int> and walks accounts looking for `messages whose id is N`.
v0.4.1's OlMacApp.Search() helper + SearchHit record removed (no
external users; new commands inline their own AppleScript).
Live-verified end-to-end against the FR's Gasspring driving task:
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 4,412 substring flood); WS14080CA order email is row #1
with matched=313.89,gasspring,spring
combridge outlook get --id <EntryID> --store toprops --headers
→ full order: headers + MountingDrawing_WS14080CA_8-19-160_8880.pdf
attachment + line items + Total: US$313.89
Mirrored to D:\Dev\ScripTree\lib\combridge\ and R:\ScripTree\lib\combridge\
per the CLAUDE.md deployment mandate.
FR moved to Complete/ folder.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
# columns: date store folder sender subject matched entryid storeid
4
+
2026-02-27 11:51 ken@toprops.com \\ken@toprops.com\Inbox info=gasspring.ca@mg.gasspring.ca Your Gasspring.ca order WS14080CA has been received! 313.89,gasspring,spring 00000000616E7F889C138B4D8D62615DD1E21AF404AB8500 0000000038A1BB1005E5101AA1BB08002B2A56C200006D737073742E646C6C00000000004E495441F9BFB80100AA0037D96E0000000043003A005C00550073006500720073005C004B0065006E005C0044006F00630075006D0065006E00740073005C004F00750074006C006F006F006B002000460069006C00650073005C006B0065006E00400074006F00700072006F00700073002E0063006F006D002E007000730074000000
5
+
2026-02-27 11:51 ken@toprops.com \\ken@toprops.com\Inbox info=gasspring.ca@mg.gasspring.ca Your Gasspring.ca order WS14080CA has been received! 313.89,gasspring,spring 00000000616E7F889C138B4D8D62615DD1E21AF424AB8500 0000000038A1BB1005E5101AA1BB08002B2A56C200006D737073742E646C6C00000000004E495441F9BFB80100AA0037D96E0000000043003A005C00550073006500720073005C004B0065006E005C0044006F00630075006D0065006E00740073005C004F00750074006C006F006F006B002000460069006C00650073005C006B0065006E00400074006F00700072006F00700073002E0063006F006D002E007000730074000000
6
+
2026-03-12 02:36 ken@toprops.com \\ken@toprops.com\Inbox Gasspring.ca Please leave a review for Gasspring.ca gasspring 00000000616E7F889C138B4D8D62615DD1E21AF4A4228600 0000000038A1BB1005E5101AA1BB08002B2A56C200006D737073742E646C6C00000000004E495441F9BFB80100AA0037D96E0000000043003A005C00550073006500720073005C004B0065006E005C0044006F00630075006D0065006E00740073005C004F00750074006C006F006F006B002000460069006C00650073005C006B0065006E00400074006F00700072006F00700073002E0063006F006D002E007000730074000000
7
+
2026-03-12 02:36 ken@toprops.com \\ken@toprops.com\Inbox Gasspring.ca Please leave a review for Gasspring.ca gasspring 00000000616E7F889C138B4D8D62615DD1E21AF4C4228600 0000000038A1BB1005E5101AA1BB08002B2A56C200006D737073742E646C6C00000000004E495441F9BFB80100AA0037D96E0000000043003A005C00550073006500720073005C004B0065006E005C0044006F00630075006D0065006E00740073005C004F00750074006C006F006F006B002000460069006C00650073005C006B0065006E00400074006F00700072006F00700073002E0063006F006D002E007000730074000000
8
+
2026-03-16 03:12 ken@toprops.com \\ken@toprops.com\Inbox Gasspring.ca Please leave a review for Gasspring.ca gasspring 00000000616E7F889C138B4D8D62615DD1E21AF4E4268600 0000000038A1BB1005E5101AA1BB08002B2A56C200006D737073742E646C6C00000000004E495441F9BFB80100AA0037D96E0000000043003A005C00550073006500720073005C004B0065006E005C0044006F00630075006D0065006E00740073005C004F00750074006C006F006F006B002000460069006C00650073005C006B0065006E00400074006F00700072006F00700073002E0063006F006D002E007000730074000000
9
+
2026-03-16 03:12 ken@toprops.com \\ken@toprops.com\Inbox Gasspring.ca Please leave a review for Gasspring.ca gasspring 00000000616E7F889C138B4D8D62615DD1E21AF4E4278600 0000000038A1BB1005E5101AA1BB08002B2A56C200006D737073742E646C6C00000000004E495441F9BFB80100AA0037D96E0000000043003A005C00550073006500720073005C004B0065006E005C0044006F00630075006D0065006E00740073005C004F00750074006C006F006F006B002000460069006C00650073005C006B0065006E00400074006F00700072006F00700073002E0063006F006D002E007000730074000000
2026-02-22 15:34 kenem17@gmail.com \\kenem17@gmail.com\Inbox Rakuten Hot Deals Hot Deal for you at Skechers: Spring Preview: Get 20% off regular priced items. spring 00000000EEABA6B3E34C71459883AE73005B00410700C3B68E10F77511CEB4CD00AA00BBB6E600000000000C0000D9539C2261A6BB45B9DAB62C7081B3C101004C3D00000000 0000000038A1BB1005E5101AA1BB08002B2A56C200007073747072782E646C6C0000000000000000E92FEB759650448683B87DE522AA4948000043003A005C00550073006500720073005C004B0065006E005C0041007000700044006100740061005C004C006F00630061006C005C004D006900630072006F0073006F00660074005C004F00750074006C006F006F006B005C006B0065006E0065006D0031003700400067006D00610069006C002E0063006F006D0020002D0020004B0065006E002E006F00730074000000
12
+
2026-03-26 12:34 kenem17@gmail.com \\kenem17@gmail.com\Inbox TD Insurance Meloche Monnex 🏠See how you could keep your home safe and dry this spring spring 00000000EEABA6B3E34C71459883AE73005B00410700C3B68E10F77511CEB4CD00AA00BBB6E600000000000C0000D9539C2261A6BB45B9DAB62C7081B3C10100253F00000000 0000000038A1BB1005E5101AA1BB08002B2A56C200007073747072782E646C6C0000000000000000E92FEB759650448683B87DE522AA4948000043003A005C00550073006500720073005C004B0065006E005C0041007000700044006100740061005C004C006F00630061006C005C004D006900630072006F0073006F00660074005C004F00750074006C006F006F006B005C006B0065006E0065006D0031003700400067006D00610069006C002E0063006F006D0020002D0020004B0065006E002E006F00730074000000
13
+
2026-03-27 12:15 kenem17@gmail.com \\kenem17@gmail.com\Inbox Old Stone Inn Boutique Hotel Spring is the perfect time for a getaway, and we’re making it even more tempting. spring 00000000EEABA6B3E34C71459883AE73005B00410700C3B68E10F77511CEB4CD00AA00BBB6E600000000000C0000D9539C2261A6BB45B9DAB62C7081B3C101002B3F00000000 0000000038A1BB1005E5101AA1BB08002B2A56C200007073747072782E646C6C0000000000000000E92FEB759650448683B87DE522AA4948000043003A005C00550073006500720073005C004B0065006E005C0041007000700044006100740061005C004C006F00630061006C005C004D006900630072006F0073006F00660074005C004F00750074006C006F006F006B005C006B0065006E0065006D0031003700400067006D00610069006C002E0063006F006D0020002D0020004B0065006E002E006F00730074000000
14
+
2026-03-27 13:00 kenem17@gmail.com \\kenem17@gmail.com\Inbox Enbridge Gas Inc. Contact Ontario One Call before you dig this spring spring 00000000EEABA6B3E34C71459883AE73005B00410700C3B68E10F77511CEB4CD00AA00BBB6E600000000000C0000D9539C2261A6BB45B9DAB62C7081B3C101002C3F00000000 0000000038A1BB1005E5101AA1BB08002B2A56C200007073747072782E646C6C0000000000000000E92FEB759650448683B87DE522AA4948000043003A005C00550073006500720073005C004B0065006E005C0041007000700044006100740061005C004C006F00630061006C005C004D006900630072006F0073006F00660074005C004F00750074006C006F006F006B005C006B0065006E0065006D0031003700400067006D00610069006C002E0063006F006D0020002D0020004B0065006E002E006F00730074000000
15
+
2026-03-31 00:01 kenem17@gmail.com \\kenem17@gmail.com\Inbox Aeroplan Amazon Big Spring Sale is on! Earn up to 7X the points on eligible purchases spring 00000000EEABA6B3E34C71459883AE73005B00410700C3B68E10F77511CEB4CD00AA00BBB6E600000000000C0000D9539C2261A6BB45B9DAB62C7081B3C10100443F00000000 0000000038A1BB1005E5101AA1BB08002B2A56C200007073747072782E646C6C0000000000000000E92FEB759650448683B87DE522AA4948000043003A005C00550073006500720073005C004B0065006E005C0041007000700044006100740061005C004C006F00630061006C005C004D006900630072006F0073006F00660074005C004F00750074006C006F006F006B005C006B0065006E0065006D0031003700400067006D00610069006C002E0063006F006D0020002D0020004B0065006E002E006F00730074000000
16
+
2026-03-12 11:02 KenMantle@hotmail.com \\KenMantle@hotmail.com\Inbox Lisa Kamenar, Ontario Nature Signs of Spring in Your March Nature News spring 000000004B8238F02EE3AE4ABB700739F198CB3607003ECBA3B30BA4314AAA733889B9F6159E00000000010C0000C501071EC6A690439853A4B379D9BC000008763714940000 0000000038A1BB1005E5101AA1BB08002B2A56C20000454D534D44422E444C4C00000000000000001B55FA20AA6611CD9BC800AA002FC45A0C0000004B656E4D616E746C6540686F746D61696C2E636F6D002F6F3D4669727374204F7267616E697A6174696F6E2F6F753D45786368616E67652041646D696E6973747261746976652047726F75702846594449424F484632335350444C54292F636E3D526563697069656E74732F636E3D3030303637464645394438333043343800E94632F43E00000002000000100000004B0065006E004D0061006E0074006C006500400068006F0074006D00610069006C002E0063006F006D0000000000
|`--match`| implicit substring |**`word`** (ci_phrasematch on indexed; LIKE+regex fallback) | substring is just wrong for marketing mail; the fix should be the default |
35
+
|`--fields`|`subject,body`|**`subject,body,from`**| if you can search the sender for free, you almost always want to |
36
+
| EntryID/StoreID emission | not emitted |**always emitted**| connects `search` → `get` without a flag |
37
+
38
+
### Added — `outlook search` v2
39
+
40
+
-**Multi-term**: `--query` is now repeatable AND accepts comma-separated terms.
41
+
Both forms compose. `--query "a,b" --query c` → three terms ORed.
42
+
-**Sender field**: `--fields` accepts `from` (alias `sender`), mapping to
43
+
both `urn:schemas:httpmail:fromname` (display) and `fromemail` (SMTP
0 commit comments