Changelog

What's shipping at Canner.

We've been live since early May 2026 and ship most days. The list below is hand-maintained — pulled from production deploys, not from a feed. Subscribe via RSS coming soon. For now, check back, or follow hello@canner.ca.

  1. Pricing: permanent free Starter, .com added to free domain offer

    • Starter is now a permanent free plan, not a 30-day trial. Resources on Starter are pooled across free accounts and deprioritized when paid builds are queued.
    • Basic and Pro charge immediately on signup — no 30-day trial. What you sign up for is what you pay starting day one.
    • Free domain offer expanded to include .com: Basic includes .com or .ca on monthly, plus .quebec on annual; Pro includes .com, .ca, or .quebec on either interval.
  2. Domain checkout: CIRA CPR registrant form + Quebec acknowledgment

    • New registrant form on the domain checkout modal, with proper CIRA CPR (Canadian Presence Requirements) dropdown for .ca registrations.
    • Quebec acknowledgment step for .quebec domains. Friendly 409 copy when the requested name was registered minutes earlier by another customer.
  3. Yearly billing toggle + free .ca / .quebec domain credit

    • Billing page now offers monthly and annual intervals. Annual saves two months versus monthly.
    • Basic annual and Pro (either interval) include a free .ca or .quebec domain registration, applied at checkout.
  4. Per-tenant systemd parity for cold-start, wake, runtime logs, previews

    • All runtime paths — cold-start sweeper, wake handler, runtime-logs SSE, preview deploys — now dispatch on each project's runtime_mode column. PM2 and systemd run side by side.
    • New helper subcommands for systemd tenants: logs (journalctl follow), prepare-preview-runtime, preview-chown, preview-start, preview-stop, preview-cleanup, preview-prune-bundle.
    • End-to-end verified: a real tenant went idle, the sweeper stopped its systemd unit, the wake handler restarted it on the next request, and the runtime served 200 OK. Cold-start → wake works on systemd in production.
  5. Per-project metrics, preview deploys on PR, per-tenant systemd, public status page

    • Per-project hourly traffic metrics with status breakdown, visible as a chart on the project page.
    • Preview deployments on pull requests. Each PR gets a per-branch runtime at <branch>--<slug>.app.canner.ca, torn down when the PR closes.
    • Per-tenant Linux users with systemd-managed runtimes (Phase 5). New projects default to systemd; existing PM2 tenants continue to work unchanged.
    • Public status page at canner.ca/status, server-rendered with a 10-second platform-side cache.
  6. Stripe billing, custom domains with auto-TLS, generic frameworks, API tokens

    • Stripe billing wired end-to-end. Add a card, get a subscription with trial_end aligned to your 30-day free window.
    • Custom domains with automatic Let's Encrypt TLS issuance via Caddy. CNAME your domain and the certificate appears in seconds.
    • Generic framework detection: Next.js, Vite (React, Vue, Svelte), and plain Node.js applications all build and serve without configuration.
    • API tokens (cnr_…) for programmatic access. Retry, cancel, and rollback endpoints on every deployment.
    • Bilingual French / English dashboard. Account deletion (cancels subscription, drops all tenant DBs and runtimes).