Changelog

What shipped, when, and why.

Releases land here on the day they go out. Versioned by semver — patches every week or two, minors when something is worth noticing, majors when we change a contract.

  • Feature v1.3.0

    Workspace presence guard, plan-intent hand-off, public sales-leads endpoint

    The marketing-site sign-up chain ships behind a feature flag — the SPA is ready when the front door opens it.

    • New _authenticated.tsx beforeLoad workspace-presence guard with explicit decision matrix (pending invitation → /invitations/<token>; ≥1 workspace → continue; 0 workspaces + 0 invitations → /onboarding).
    • New /<locale>/get-started public route that captures the plan intent in sessionStorage:rqd:plan-intent and bounces to Keycloak.
    • New /<locale>/_authenticated/onboarding route — explicit, owner-initiated workspace creation only. No auto workspace generation, ever.
    • subscription.tsx is no longer a stub — renders plan tiers from plansQueryOptions(), reads ?plan from the URL, wires Apply to POST /subscriptions/resubscribe.
    • New public POST /api/v1/public/sales-leads endpoint. Cloudflare Turnstile validated server-side, creates a ticket in the seeded internal Sales project, fires notification.
    • Resolves the long-standing invitation/workspace-context bug: invited members now land in the workspace they were invited to, not their previous active workspace.
  • Fix v1.2.22

    Widget IIFE bundle re-inlines ofetch

    Fixes the ReferenceError on widget 1.2.20 / 1.2.21. Both broken versions are now de-listed from the CDN; pinned consumers should bump.

    • Widget IIFE bundle now inlines ofetch and the workspace siblings — fixes the ReferenceError thrown on first interaction in 1.2.20 and 1.2.21.
    • 1.2.20 and 1.2.21 are now intentionally absent from the CDN retention list. Sites pinned to those versions will receive a 404 instead of silently 500-ing.
    • Added a Vitest IIFE smoke test that loads the bundle in JSDOM and asserts the widget renders. Runs on every widget change.
    • Filament plugin script_url_default bumped to 1.2.22 — a fresh plugin tag is queued for the next release window.
  • Feature v1.2.0

    SLA pause for waiting-on-customer, pre-breach alerts

    SLA targets now pause when a ticket is waiting on the customer, and the assignee gets a 15-minute pre-breach ping.

    • SLA clocks now pause automatically when a ticket transitions to “waiting on customer”, and resume on the customer’s reply. Total counted time excludes customer-side wait.
    • Assignees receive a notification 15 minutes before any SLA target is due. Their manager receives a notification 5 minutes before. Both are configurable per workspace.
    • New “SLA proximity” sort order on the list view — most-urgent-first.
    • Per-category SLA targets are now configurable from the UI (previously settings-file only).
  • Feature v1.1.0

    Timeline view, saved slices, bulk actions

    A fourth view (timeline) joins list, board, and table. Filters are URLs. Bulk actions land without dropdown maze.

    • New timeline view — horizontal calendar of when tickets were opened, replied to, and closed. Useful for spotting time-of-day patterns and for upward reporting.
    • Saved slices — every filter combination produces a stable URL. Bookmark, share, embed in a runbook. Workspace owners can pin shared slices to the sidebar.
    • Bulk actions on list and table views — select up to 250 tickets, set status / owner / priority / tag without paging through dropdowns. Every bulk action is one row in the audit log.
    • Performance: list view rendering is now ~3x faster on workspaces with >5,000 open tickets.
  • Feature v1.0.0

    Reqdesk 1.0 — bilingual from day one

    First public release. Tickets, the embeddable widget, the customer portal, the four views, RBAC, audit log, in EN and AR.

    • Tickets — full CRUD, replies, attachments, tags, categories, custom fields, audit log on every change.
    • Widget — embeddable IIFE bundle on cdn.reqdesk.support/widget/<version>/, RTL-aware, theme-aware, Turnstile-protected.
    • Customer portal — every ticket reachable by the customer who opened it. SLA targets visible. No second login flow.
    • Four views — list, board, table; the timeline view follows in 1.1.
    • RBAC — owner / agent / member / customer roles, per-workspace isolation enforced at the query layer.
    • Audit log — every ticket change, member change, and project setting recorded with actor, target, and outcome.
    • Bilingual UI — EN and AR, with RTL native via CSS Logical Properties.
    • Keycloak SSO — sign-in brokered by auth.mod-sol-sa.com, themed to match the Reqdesk brand.