2026.3.15-beta
The frontend has been reorganized around a mini-app architecture. Each feature area — home, inbox, review, portfolio, settings, and more — now lives in its own self-contained module under lib/ with dedicated state, components, types, and Storybook stories. Route files are thin wrappers that load data and render the mini-app root component.
Mini-app architecture
All 15 feature areas have been extracted into mini apps: home, inbox, review, calls, discover, portfolio, profile, settings, org-settings, onboarding, submit, footer, and navigation. Each follows a consistent structure: index.ts barrel, state.svelte.ts reactive class, root component, components/ directory, and _stories/ with mock data factories.
The submission form — the most complex public-facing feature — was the final extraction, moving a 1,200-line route file into a clean lib/submit/ module with separated state management, step-based form logic, and file handling.
Navigation overhaul
The header has been renamed to navigation and restructured with a journal-switching sub-menu in the user dropdown, using new DropdownMenuSub components added to @galley/kit.
Auth improvements
Cross-origin token refresh has been replaced with a server-side proxy at /api/auth/refresh, eliminating CORS issues between the frontend and auth service.
Everything else
- Added public pages: organizations directory, AI policy, colophon
- Unified
/my-profileand/profiles/[handle]into a single profile route - Fixed footer links, dynamic copyright year, and layout sizing
- Migrated
field_modedatabase columns from enum to TEXT - Fixed E2E test seed schema for org rename (prairie-review → tallgrass-review)
- Resolved clippy warnings in backend db and api crates
- Fixed deprecated
substrusage in submission form