Releases: trsdn/outlook-ax
Releases · trsdn/outlook-ax
Release list
v1.1.0
Added
- SwiftPM architecture —
Sources/OutlookAXCLIKit,Sources/OutlookAXCLIexecutable product - JSON v2 typed envelopes —
JSONSuccess/JSONFailurewith native numbers and booleans
(notifications --jsonnow returns"count": 3as an integer, not"3"as a string) - Opt-in JSON v2 —
--json-version 2selects v2 in v1.1;--json-version 1for legacy compat - Typed
CLICommandenum withCLIParser— argument parsing separated from execution - Typed
OutlookAXErrorwith exit codes (77 permission, 69 unavailable, 1 failure, 64 usage) - Shared L10n catalog —
Sources/OutlookAX/Localization/L10n.swiftwith verified de/en/fr/es/it variants CalendarTemporalmodel — normalized temporal values with explicit resolution states
(no silent year inference; unresolved = explicit.unresolved+ reason)CalendarTemporalParser— 12-hour/24-hour, all-day, year-boundary, DST-safe parsing- Passive connection —
statusandnotificationsno longer launch/activate Outlook - Stop-loss safety:
calendar createno longer discards pre-existing event draftscalendar createandmail composeblock Send/Save after any field failuremail inbox --limitstrictly validates 1…100; exits 64 on invalid valuesmail inboxverifies Inbox is selected; removes unsafeAXRowfallback- Window cleanup removed from
calendar today/ event detail reads
scripts/check-repository-layout.sh— validates.claude/settings.jsonand script syntaxscripts/check-architecture.sh— validates SwiftPM architecture conventions- GitHub Actions CI — macOS hosted runner, build + test + help + layout + architecture checks
- Docs —
docs/json-schema-v2.md,docs/calendar-temporal-contract.md
Fixed
notifications --jsonreturned count as string"3"; now returns integer3(#26)calendar creatediscarded existing event drafts without confirmation (#2)- Form commands (compose, calendar create) reported success after failed AX writes (#3)
mail inbox --limit 0(and negative/non-integer values) did not return a usage error (#17)mail inboxread whichever folder was currently selected instead of verifying Inbox (#11)mail inboxtreated everyAXRowin the window as an email message (#12)statusandnotificationslaunched/activated Outlook when it was in the background (#4)- Unknown commands and bare
mail/calendargroups exited with status 0 instead of 64 (#18) wins[0]assumption inOutlookAXlibrary replaced with semantic selectors (#20)- Claude SessionStart hook was silently ignored because the settings filename was wrong (#23)
v1.0.0 — Initial Release
outlook-ax v1.0.0
Lightweight CLI to read and control Microsoft Outlook (new) on macOS via the Accessibility API.
Features
- Read current email, inbox listing, search
- Reply, reply-all, forward, delete, archive, flag, move
- Compose new emails with
--to,--subject,--body - List and switch mail folders
Calendar
- Read today's events with full detail (attendees, status, categories)
- Create events with attendees, date/time, send invites
- Navigate (today/next/prev), switch views (day/week/month)
- Accept, decline, tentatively accept meetings
- Join online meetings, duplicate events, categorize, set show-as
Navigation & System
- Switch between Mail, Calendar, People, Tasks, Copilot, OneDrive
- Sync, auto-reply settings, My Day panel, account switching
Architecture
- Single Swift file, no dependencies — compiles with
swiftc - Multi-language L10n support (de, en, fr, es, it) via label matching
- Auto-launch and unminimize Outlook via AppleScript
- JSON output on all read commands (
--json) - Detailed event info with
--detailsflag - Agent skill included for AX tree discovery
Requirements
- macOS with Xcode Command Line Tools
- Accessibility permission for terminal app
- Microsoft Outlook (new version)