Changelog

What's shipping.

Honest log of what we've added, improved, fixed, and changed. No marketing flourishes — if it landed in production, it's here.

  1. added

    Stripe billing integration

    Per-seat pricing live with 4 plans (Starter, Pro, AI, Business). Stripe Checkout for upgrades, Customer Portal for plan / seat / payment-method changes, idempotent webhook handler with Firestore-backed event dedup. AI tools gate behind the AI plan; FREE caps at 10 active employees.

  2. fixed

    Bounded concurrency fixed proposal-apply timeouts

    Applying a 14-shift AI proposal could exhaust the Cloud SQL connection pool with 'Too many connections' errors. Replaced unbounded Promise.all with a worker pool capped at 4 concurrent ops in apply-schedule-proposal, restore-bulk-delete, apply-template-to-week, and set-member-skills. 40-shift applies now succeed reliably.

  3. fixed

    Overnight shifts work end-to-end

    A shift from 8pm Friday to 4am Saturday used to fail validation (end before start). The data model now treats endTime ≤ startTime as a midnight wrap; duration computes correctly; conflict detection, compliance rules, and weekly hour totals all consume the same UTC range. Templates and AI proposals respect overnight semantics.

  4. improved

    AI chat is page-aware

    The chat panel now reads the route you're on (which org, which schedule, which week, which member) and feeds it as view-context to the agent. Saying 'cover the weekend' on Monday's calendar proposes shifts on this week's Saturday and Sunday — not last week's, not generic ones.

  5. added

    Test roster seeding via chat

    Managers can now ask the AI to seed a sample team for evaluation: 'add a complete restaurant team of 12'. The seed_test_roster tool handles the full flow — generates members, positions, availability — gated by seat cap so it doesn't accidentally over-fill on FREE.

  6. added

    Drag-to-reassign with ghost preview

    Drag a shift to a different member; a ghost copy follows the cursor. Drop to commit, or release outside the calendar to cancel. Conflict warnings (overlap, time-off, skill mismatch) surface in real-time during the drag — not after the drop.

  7. improved

    Schedule proposal Apply / Discard persistence

    Proposal cards in the chat used to lose their Apply / Discard state on page refresh. State now persists in Firestore against the conversation; refreshing the dashboard keeps the proposal interactive until the manager decides.

  8. added

    Realtime multi-tab sync

    Two managers editing the same week now see each other's changes live. Mutations broadcast via a single Firestore doc per org; the dashboard's listener invalidates affected TanStack Query caches on remote changes. Coarse but effective.

  9. added

    Compliance rules engine

    Per-org rules with WARNING / BLOCKING severities — MAX_HOURS_PER_WEEK, MAX_HOURS_PER_DAY, MAX_CONSECUTIVE_DAYS, MIN_REST_HOURS_BETWEEN_SHIFTS, MAX_SHIFTS_PER_DAY. Industry presets seed defaults (healthcare gets EU Working Time Directive defaults BLOCKING; hospitality gets WARNING). Enforced at every shift create / move / proposal.

  10. added

    Skills + per-position required skills

    Define org-wide skills (RN cert, forklift, language, anything). Tag positions with required skills. Assign skills to members with optional expiry dates. The conflict detector blocks shifts where the assigned member is missing a required skill or has an expired credential.

  11. added

    Open shifts + employee claim flow

    Managers post unfilled coverage as open shifts. Eligible employees (right skills, no overlap, no time-off) see and claim from their phone. Optional manager approval before the claim lands; auto-confirm for trusted seniors.

  12. added

    Shift swaps with optional manager approval

    Employees post a cover request on a shift; eligible coworkers see it and accept. Manager-approval mode gates landing on the calendar; auto-accept mode trusts the worker side. Audit trail captures the full thread.

Want to follow what's shipping?

Subscribe to the RSS feed, or just check back. We don't email about every release.

Changelog · Weekwright