2026.3.28-beta
Infrastructure overhaul, new admin UI, backend metrics, and a batch of bug fixes.
Bun to pnpm+Node migration
Replaced Bun with pnpm and Node across the entire stack — CI, Containerfiles, process-compose, Taskfiles, and devagent. Removed all ssr.noExternal workarounds that were only needed for Bun's module layout.
CI pipeline
Decoupled E2E tests from the deploy pipeline — deployments now depend only on check jobs (backend, frontend, auth) for faster production pushes. E2E tests run nightly against main and dev with automatic Linear ticket creation for failures.
Admin UI
New internal admin dashboard (galley-admin) with platform stats, user management, organization and call detail views, submission detail, feedback list, feature flags, and announcements CRUD.
Backend metrics
Added Prometheus metrics to the Rust backend — HTTP request counters, latency histograms, in-flight gauges, and database query duration tracking. Grafana added to local dev stack.
Docs site
Scaffolded Astro + Starlight documentation site at docs.galley.pub with initial content for editors, writers, and API reference.
Consumer API
Public read-only API with API key authentication, rate limiting, and scoped access to organizations, calls, and submissions.
Organization profiles
Redesigned public organization profiles with centered masthead hero and card grid. Added cover image and publication logo upload support.
User profiles
Redesigned user profile pages with two-column sidebar layout.
Email forwarding
Added EMAIL_FORWARDING env var to forward non-submission emails (e.g. [email protected]) to external addresses via Resend.
Footer
Added shared Footer component to @galley/kit with links to Terms, Privacy, Cookies, AI Policy, and Colophon on all public and marketing pages.
Bug fixes
- Fixed 500 error on
/discoverpage when backend is unreachable - Fixed auth race condition in review layout load function
- Fixed E2E test selector for Bits UI Select trigger
- Fixed
svelteHTMLtype resolution after pnpm migration - Fixed SSR crash from phosphor-svelte in noExternal
- Fixed avatar showing no initials when display_name is empty
- Fixed dark mode tokens, card radii, and section header inconsistencies