Changelog

What's new

Notable changes, shipped.

Multi-tenant invites

NewImproved

Invite teammates by email and accept through a signed link. Roles are configurable per organization.

We shipped a full invite flow that works across organizations.

How it works

An invite generates a signed token tied to the target organization. Recipients click the link, sign in (or sign up), and are added with the role you picked.

  • Roles: owner, admin, member
  • Expiry: 7 days, refreshable from the team page
  • Audit: each invite event is logged

What's next

We're working on bulk invites by CSV upload and SCIM-style provisioning for enterprise plans.

Session refresh

Fixed

An active user is no longer signed out mid-work.

Sessions expired at a fixed time after sign-in, so a user in the middle of a long day could be sent back to the sign-in page without warning.

A session now extends itself while it is in use: any request past the update window bumps its expiry, and only an idle session runs out. No user action needed.

Dashboard refresh

NewImproved

Redesigned dashboard with denser tables, faster page transitions, and a new command palette.

The dashboard got its first major refresh since launch.

New

  • Command palette (⌘K) for jumping between projects, members, and settings
  • Inline filters on every table — no more popovers
  • Keyboard shortcuts for the five most-used actions

Improved

  • First-paint is ~40% faster on the projects page
  • Tables now stream rows server-side so large workspaces don't block the UI

Stripe webhook retries are now idempotent

Fixed

Replays of the same event no longer double-credit subscriptions.

Stripe occasionally retries the same invoice.payment_succeeded event when the original delivery times out. The webhook handler now keys on the event ID and short-circuits replays after the first successful processing.

If you saw doubled credits between April 10 and April 17, support has already been in touch — no action needed from your side.

Audit log v1

New

Every workspace action is now recorded and exportable as CSV.

Admins on Pro and Enterprise plans now have a per-workspace audit log under Settings → Audit.

Each entry records the actor, the action, the affected resource, and the IP. The full log is exportable as CSV from the same page.

Retention is 90 days on Pro and 12 months on Enterprise.

Keyboard shortcuts panel

New

Press `?` anywhere to see the full list of shortcuts.

A discoverable shortcut sheet. Hit ? from any page; the panel groups shortcuts by surface (global, tables, editor) and links each one to the action it triggers.

SAML SSO for Enterprise

New

Connect any SAML 2.0 identity provider in under five minutes.

Enterprise workspaces can now require sign-in via a SAML 2.0 provider — Okta, Azure AD, Google Workspace, and any other SP-initiated flow.

JIT provisioning is on by default. Group-based role mapping is available from the SAML settings page.

CSV export honors filters

Fixed

Exports used to always include all rows. They now respect the active filter.

The export button under any table previously ran an unfiltered query against the dataset. It now uses the same query as the rendered view, so the CSV contains exactly what you see.

Dark mode token pass

Improved

Audited every component for token usage; dark mode is now genuinely usable.

Several components had hardcoded light-mode greys that produced flat or muddy contrast in dark mode. We replaced them with semantic tokens that respect the user's theme.

Should affect every surface — tables, dialogs, sidebars, the editor.

Per-token API rate limits

NewImproved

Configure rate limits on a per-API-token basis. Default unchanged.

Until now, all tokens in a workspace shared the workspace's rate limit. You can now set a custom limit on any individual token from the API settings page.

The default cap is unchanged at 1,000 req/min per token.

Signed webhook deliveries

New

Outbound webhooks are now signed with HMAC-SHA256. Old endpoints keep working.

Every outbound webhook carries an X-Webhook-Signature header containing an HMAC-SHA256 of the body, keyed by a secret you can rotate from the webhook settings page.

Existing endpoints continue to receive unsigned deliveries until you opt them in, so no immediate action is required.

Friendlier empty states

Improved

Replaced blank screens with illustrations and a single suggested action.

Every list view that could show nothing has a real empty state now: a small illustration, a one-line explanation, and exactly one suggested next action. No more guessing whether the page is loading or genuinely empty.