- Server: wrap licenseKeys.activate() in try/catch — if activation limit
reached, treat as already-activated and proceed to store the key
- Web: switch activateFromCheckout from form() to command() pattern for
programmatic invocation with proper error handling
- Activate page: auto-fires on mount, shows spinner/error states, retry button
- Add license activation flow: server validates/activates keys via Polar SDK
- Auto-activate from Polar checkout redirect (checkout_id in URL)
- Gate dashboard behind license activation (redirect to /activate if no plan)
- Preserve redirect URL through login flow for post-purchase activation
- Show plan status badge in sidebar and overview page
- Add account section to settings (email, plan, license key)
- Add svelte-sonner toasts with custom black theme and iconify icons
- Improve validation messages across all forms
- Update API key prefix to droidclaw_
- Add cursor pointer globally for clickable elements
- Support Polar sandbox mode via POLAR_SANDBOX env flag