Changelog

What we've shipped.

2026-05-21MajorPhase 2g · slice 2

Marketing surfaces, command palette, password change

  • /pricing, /security, /changelog public pages
  • Auth pages redesigned with a split layout
  • Cmd-K command palette for quick navigation
  • First-run onboarding checklist on the dashboard
  • Confetti on your first successful apply
  • Notification bell in the nav (powered by your audit log)
  • Password change in /settings/security
  • Delete-account danger zone in /settings/account
  • Subtle motion on the landing hero
2026-05-21MajorPhase 2g · slice 1

Brand foundations and UI v2

  • Brand colour tokens (indigo + emerald) with light/dark via CSS vars
  • Light / dark / system theme toggle with cookie persistence and anti-flash
  • Real landing page at /
  • Dynamic favicon, apple-touch-icon, and 1200×630 OpenGraph image
  • Reusable EmptyState component with five SVG illustrations
  • Friendly /error and /not-found pages
2026-05-21MajorPhase 2f

Queue & scheduling

  • BullMQ queue with REDIS_URL detection (inline fallback when unset)
  • Schedule model + cron UI on /accounts/[id]
  • Worker process (npm run worker) with per-minute scheduler tick
  • Run Now polls Run status via /api/runs/[id]/status
2026-05-21MajorPhase 2e

Notifications & user log viewer

  • Resend email with dev fallback that writes HTML to logs/emails
  • Triggers: test-login result, run-complete summary, new-IP sign-in
  • /settings/notifications per-event opt-in
  • /logs user-scoped unified timeline with filter chips
2026-05-21MajorPhase 2d

Super-admin & global admin console

  • SUPER_ADMIN role, suspension, audit hooks
  • /admin/{users,runs,applications,logs,payments,subscriptions,system}
  • Run model linking every Playwright run with screenshots
2026-05-20MajorPhase 2a–2c

Foundation

  • Prisma + NextAuth v5 + AES-256-GCM credential encryption
  • Accounts CRUD, Test login, Run now (inline)
  • shadcn-style primitives, sonner toasts, mobile sheet nav
  • Share-type filtering + mock transport for testing without a live IPO