What's shipped.
Every release, from alpha through enterprise preview. Newest first.
v1.0.2May 2026release
Rules polish, dashboard UX, and permission label updates
- featSlot snapping — availability windows now snap to the nearest standard boundary (:00, :15, :30, :45) so agents never receive non-standard start times. Configurable via the new slotIntervalMinutes field.
- featNew error code WORKING_HOURS_NOT_CONFIGURED (409) returned when a calendar owner has not yet set working hours. Distinct from NO_SLOTS_AVAILABLE so agents can prompt the owner to configure their schedule.
- featslotIntervalMinutes field on working hours rules — controls the step between candidate slots and the snap boundary. Any divisor of 60 is valid (default 15). Common values: 15, 20, 30, 60.
- featDashboard overview page — at-a-glance stats (bookings this week, active holds, open drift cases), recent decisions feed, agents summary, calendar health, and quick actions.
- featAudit log drill-down — click a rule set version ID in the audit detail panel to see the exact rules that were in effect at decision time (working hours, hard blocks, soft preferences).
- featDashboard UX — profile picture shown in the nav chrome; Copy owner ID button on the calendars page; invite multiple teammates in a single dialog.
- featOnboarding — after connecting a calendar, a new meeting-classes step introduces the taxonomy and lets admins add custom classes before accepting bookings.
- changeread_freebusy permission is now labelled "View calendar availability" in the dashboard and docs. The API scope string is unchanged.
- changeMeeting class priority range tightened from 0–1000 to 0–100 to match seeded defaults. Existing classes outside this range are clamped on next save.
- fixRules page working-hours days now always render in Sun → Sat order and preserve block positions during editing.
- fixSign-out now redirects to the marketing homepage instead of /sign-in.
v1.0.1May 2026release
Booking enhancements — event title, attendees, next-available hint
- featPOST /v1/bookings and POST /v1/bookings/{hold_id}/confirm now accept optional `title` (written as the Google Calendar event title) and `attendees` (array of { email, displayName? } guests added to the event). Title defaults to the meeting class name when omitted.
- featPOST /v1/availability accepts `next_available_lookahead_hours` (1–72, default 24). When no slots are found, the 409 response includes a `next_available: { start, end }` hint pointing at the nearest free slot beyond the requested window. The field is omitted when nothing is found within the lookahead.
- featNew error code LOOKAHEAD_EXCEEDS_MAXIMUM (400) returned when next_available_lookahead_hours exceeds 72.
v1.0.0May 2026release
Enterprise preview launch
- featAgent registry — register agents with named permission scopes; mint and revoke API keys per agent.
- featPriority-based arbitration engine — deterministic, rule-ordered, P99 ≤ 200 ms.
- featMeeting class taxonomy — drag-to-reorder priority ranking, preempt policy per class (strict / soft / hard).
- featWorking hours and hard blocks — per-owner rule editor with block-based day/time configuration.
- featRule cascade — org → team → user layers materialised at arbitration time.
- featAudit log — every Accept, Reject, Preempt, and Undo with full engine trace and side-effect status.
- featPreemption + time-windowed undo — HMAC-signed undo link delivered to the displaced party.
- featConflict simulator — replay a hypothetical booking through live rules with no side effects.
- featGoogle Workspace OAuth integration.
- featDashboard with multi-member support and role-based access (admin, governance reviewer, member).
v0.9.0April 2026beta
Rule cascade and multi-member dashboard
- featRule layer cascade (org → team → user) with version-stamped materialisation.
- featSoft preferences — min buffer between meetings, max back-to-back, preferred days.
- featDashboard user management — invite teammates, assign roles, disable access.
- featTrial-mode enforcement for Team plan — decision counter with 30-day rolling window.
- changeAudit log now records the active rule set version alongside every decision.
- fixTiebreaker logic now correctly preferring the later-arriving higher-priority booking.
v0.8.0March 2026beta
MCP transport and webhook delivery
- featMCP transport — expose Openavail tools (openavail.book, openavail.check_availability) directly inside agent runtimes.
- featWebhook delivery for preemption events — agent envelopes with signed payload.
- featAudit log JSONL export (Team plan and above).
- featHard block rules — named recurring blocks (e.g. lunch, no-meeting Friday afternoon).
- changeAPI key format updated to ak_ prefix with a fixed-length random suffix.
- fixCalendar grant refresh-token rotation now handled transparently on expiry.
v0.7.0February 2026alpha
Preemption engine and undo flow
- featPreemption — higher-priority bookings can displace confirmed lower-priority events.
- featUndo confirm page — time-windowed HMAC link delivered via email to the displaced party.
- featSide-effects — Google Calendar writes, cancels, and notification sends — now tracked per arbitration decision.
- featCounterPropose decision — engine returns up to 3 alternative slots when the requested window is blocked.
- changeBooking endpoint now accepts duration_minutes as an explicit field (was inferred from start/end).
v0.6.0January 2026alpha
Initial arbitration engine
- featPOST /v1/bookings — first working Accept / Reject decisions against working-hours rules.
- featPOST /v1/availability — free/busy lookup with conflict overlay.
- featAgent registration and API key issuance (read_freebusy, create_bookings scopes).
- featGoogle Workspace OAuth grant flow with refresh-token persistence.
- featAudit row written on every decision (no engine trace yet).
Openavail is in v1 enterprise preview. Breaking changes are communicated at least 30 days in advance for Team and Governance plan customers.