Changelog

Built in public. New features and fixes, most recent first.

First-run polish: profile strength, plan banner, confetti

Profile strength bar + missing-fields nudge on /settings/company. First-run banner on /plan?firstRun=1 while the strategist drafts. Shared empty states on Tasks / Content / Reports / Analytics with "run your first workflow" CTAs. Toast + confetti fires once on /dashboard when your first task flips to done.

onboarding

Onboarding wizard + company profile loop

7-step first-login wizard at /onboarding collects company profile, ICP, channels, brand voice. ICP step has a "not sure? suggest 3" LLM fallback. Logo upload via a path-scoped storage bucket. Finish kicks off the strategist in the background and drops you on /plan.

onboarding

Prompt-to-carousel — AI that edits the canvas

On any slide template, write a natural-language brief ("5-slide carousel on how AI markets itself, last slide comment AI to learn more") and Claude writes the slide text while sharp composites each slide onto the same base image. Inside the draft, every slide has an AI rewrite box that returns 4 rewrites of the selected layer with the existing style preserved — click one to commit.

growthai

Figma-style canvas editor for carousel slides

Slide editor rewritten as a live canvas. Per-layer controls for font (Inter, Inter Display, Montserrat, Lato, Playfair, system), numeric weight 100–900, curated color palette + hex picker, size slider, italic, shadow, pill background, 9-anchor position grid. Add/remove layers, click to select, server re-renders via sharp with no LLM cost. One-click "Style variations" renders 6 curated style combos at once.

growtheditor

Instagram 4:5 portrait carousels by default

Slide templates now default to 1080×1350 — Instagram's preferred carousel aspect ratio — instead of 1080×1080 square. The compositor, Nano Banana prompt hint and carousel preview all line up on portrait. Existing square templates keep working unchanged.

growth

Marketing site + legal + GDPR tooling

Public landing at /, pricing, features, legal (terms / privacy / DPA / cookies). One-click account delete and data export from Settings → Account.

launch

Transactional email via Resend

7 branded email templates: welcome, payment receipt, payment failed, quota 80% warning, quota exceeded, trial ending (5d and 1d). React Email composed into one shared layout.

email

Stripe billing + quota enforcement

Free / Starter €29 / Pro €99 plans with 14-day trial. Hosted Checkout, Stripe Tax, customer portal, idempotent signature-verified webhook. Double-locked quota: TS + Postgres RPC both reject over-limit writes.

billing

Figma removed, in-house image editor incoming

Figma integration retired — all figma-sync code, plugin folder and the figma_sync_queue table are gone. Server-side Skia renderer is the forward direction.

cleanup

Supabase Vault for per-workspace integration secrets

Integrations page now stores creds in Vault via SECURITY DEFINER RPCs. Cross-tenant read + write blocked at the database layer; verified by e2e tests.

security

Signup, login, password reset

Full auth flow with email verification via Supabase, PKCE code exchange at /auth/confirm, proxy-layer rate limits on login.

auth

Workspace model + RLS

Every tenant-scoped table now carries workspace_id. RLS policies enforce `is_workspace_member` at the database layer. Signup trigger auto-creates a personal workspace.

security