title: Changelog description: What changed recently in Floatless.
Changelog
What we shipped, fixed, and hardened — newest first. This page starts with the current launch-readiness hardening pass; expect regular entries once the product is publicly available.
2026-09 — Launch-readiness hardening
Security & tenant isolation
- Tenant isolation on AI insights: customer health insights and retention offers are now strictly organization-scoped — a customer of one tenant is indistinguishable from a missing one on another tenant's AI endpoints.
- SSO nonce verification: OIDC ID tokens are now checked against the sign-in state's nonce, closing the token-replay window on Google SSO.
- DNS-rebinding defense for webhooks: delivery connections are pinned to the exact IPs that SSRF validation resolved, so a webhook domain cannot re-resolve to an internal address at dial time.
- Webhook receiver probing closed: unknown and unconfigured organizations now return the same response on Stripe webhook URLs, removing an organization-enumeration oracle.
- Audit redaction everywhere: the manual audit path now applies the same secret-denylist as the automatic one, and live portal links are no longer written into audit records.
Billing reliability
- Dunning is multi-instance safe: the daily collections run takes a database-level claim, so two schedulers can never double-send dunning emails.
- Scheduler heartbeat: background jobs (renewals, dunning, webhook delivery) write a liveness beat every 30 seconds; a stale heartbeat fails the health check and alerts operations — a dead scheduler can no longer go unnoticed.
- Wallet monthly caps serialized: concurrent spends can no longer jointly exceed a wallet's monthly spend cap.
AI cost & resilience controls
- Every LLM client now has a 30-second timeout and bounded retries (the provider default was 10 minutes).
- Streaming assistant responses are capped in length.
- Per-user, per-organization, and per-customer hourly quotas (database-backed, effective across workers) on every endpoint that spends provider tokens — including the customer-facing invoice explanations, which were previously unmetered.
- A documented global kill switch (
LLM_API_KEY) disables all AI features safely during a provider incident.
Platform
- JSON structured logs in production, with request IDs on every line.
- Sentry wired for backend and frontend with release tagging.
- French legal surfaces: Terms of Service, Privacy Policy, and the Data Processing Agreement are now available in French (Conditions, Confidentialité, ATD); the English versions remain authoritative.
- Console trilingual coverage: the core money flows — orders, subscriptions, billing runs, wallets, payments, dunning, invoices, customers, and settings — are fully internationalized in English, French, and Spanish.
- CI now runs on every working branch and enforces a coverage floor.
2026-09 (earlier) — AI capability rollout
- Buoy, the console billing assistant: asks questions of your own billing data in plain language, proposes changes, and executes them only after explicit confirmation with role checks.
- Portal assistant: customers can ask about their own invoices, payments, and balances in the self-service portal — strictly scoped to their own data, with no ability to change anything.
- Smart dunning: collection emails are tuned per customer with strict anti-hallucination checks on amounts and facts.
- Revenue NL: natural-language questions answered through a fixed set of read-only, tenant-scoped tools — never by generating SQL.
- Usage anomaly detection: flags metered usage spikes before they land on an invoice.