Changelog

What's shipped.

Every product update, newest first.

v1.0.4June 2026release

Self-documenting meeting class fields

  • changepriority_tier values renamed to categorical tiers: critical, high, normal, low. Replaces the previous numeric 0–100 scale. Existing classes are migrated automatically.
  • changepreempt_policy values renamed for clarity: strict → protected, soft → reschedulable, hard → replaceable. The three behaviors are unchanged; only the API names differ. Existing rows are migrated automatically.

v1.0.3June 2026release

Pricing tiers, multi-calendar UI, booking improvements, and FAQ

  • featFull pricing tier system — Free, Pro, and Team plans enforced across the API (calendar count, agent count, meeting classes, bookings per month, audit log retention, feature gates). New /v1/usage endpoint returns live consumption against plan limits.
  • featDashboard billing page — current plan summary, usage meters, and upgrade prompts. Invite teammate button gated to Team plan with tooltip explaining the requirement.
  • featPublic pricing page — flat-rate tier comparison with plan-aware CTAs (shows current plan for authenticated users).
  • featPricing teaser on the homepage (CH-06) — plan overview and CTAs without leaving the landing page.
  • featMulti-calendar UI (D-040) — Primary badge, calendar_type selector, and provider account email shown on the Calendars page. Docs updated to reflect owner_email field.
  • featBooking improvements — title is now required on POST /v1/bookings and confirm; meeting_class is stored on hold creation; preemption_ids replaced with displaced_count in booking responses.
  • featFAQ page — common questions about arbitration, holds, providers, roles, audit logs, and pricing. Linked from the footer and pricing page.
  • feat2-step onboarding wizard — working hours and slot configuration now guided on first calendar connect.
  • fixAvailability route now correctly wires the calendar adapter — live Google free/busy calls were not being made in v1.0.2.
  • fixNew accounts now provisioned with plan set to free instead of null.
  • fixPlan-aware upgrade prompts — Pro users now see "Upgrade to Team" instead of "Upgrade to Pro".
  • fixCopy owner ID button removed from the dashboard — provider account email is shown directly instead.
  • fixSSR hydration mismatch resolved by removing loading guard from RootLayout.

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 WORKING_HOURS_NOT_CONFIGURED warning returned when a calendar owner has not yet set working hours, so agents can prompt the owner to configure their schedule without blocking bookings.
  • 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/search 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

First agent scheduling release

  • featAgent registry — register agents with named permission scopes; mint and revoke API keys per agent.
  • featPriority-based arbitration engine with deterministic, rule-ordered decisions.
  • 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 notifications

  • featMCP transport — expose Openavail tools (openavail.book, openavail.check_availability) directly inside agent runtimes.
  • featPending notifications for preemption events, returned through the agent-facing API.
  • 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/search — 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 communicates breaking changes at least 30 days in advance for Team and Governance plan customers.