Trial UI, 2-step onboarding, LP overhaul
2026-03-13
Product UX and onboarding
- Shipped the trial experience across the app — statuses, warnings, and upgrade CTAs with a dedicated TrialBanner and billing UI. Also tweaked copy and let trialing users pick basic-tier models. PR #426
- Collapsed onboarding to 2 steps and added a persistent NextActionBanner to steer people: connect integrations → generate the first entries. Redirect to /entries after onboarding.
- Moved the “setup complete” flag from localStorage to a server-side
initialBackfillTriggeredAtso the banner state stays authoritative. - Polished the banner flow: local-time “isToday” fix, hide it on /onboarding, and show both CTAs (“Add integration” and “Generate diary”) in the add-more phase. Added unit tests around the phases.
Internationalization and error handling
- Centralized backend error-code → i18n mapping with
resolveApiError()so auth/onboarding/settings/billing/integrations/entries stop showing vague errors. PR #425 - Fixed the plural interpolation bug (nested
{count}), standardized plural templates, and cleaned up Japanese terminology. - Removed
...enspreads from all locale files and backfilled missing keys so untranslated strings surface as type errors instead of silently falling back to English. - Translated trial and other missing keys across all non-English locales.
Landing page: integrations overhaul
- Added integration list and detail pages for 8 integrations (GitHub, Google Calendar, Slack, Todoist, Toggl, Steam, Bluesky, Webhook) with descriptions, use cases, sample diary, setup, permissions, plans, plus SEO/OG/sitemap/breadcrumbs. PR #100
- Rewrote the integrations UI to match the app (cards, sticky hero/TOC, sample journal card, view-all link) and aligned CSS with frontend patterns. PR #101
- Cleanups and fixes: consistent integration order across locales, restored the missing GitHub block, sticky offsets measured from actual header height, larger detail fonts, CTA color fix, Spanish i18n formatting, and a version bump to 0.2.1.
- Content tune-ups: improved 特商法 (tokusho) disclosure for Stripe review and rewrote the builder story across locales with toned-down JP copy.
Tests and polish
- Raised coverage across settings, billing, webhook, share OG flows, and added TrialBanner component tests. Stabilized monthly entries specs. PR #427
- UX nits: handled OAuth callback errors explicitly, kept Slack/GitHub source selections synced with saved config, applied global scrollbar defaults, and tightened cancellation flows (labels + post-deletion cancel action).
- External: merged a couple of Dependabot bumps (esbuild, electron) and cleaned branches on bitflyer-tools/cycle-flyer.