All updates
frontend
backend
database
auth

Local dev: GitHub App flow, project creation, org management, and UI polish

  • Branch picker: branches API + tracked-branch dropdownAdded a new backend endpoint to list GitHub branches and a frontend hook that populates the tracked-branch dropdown in the project creation flow so you can pick a branch (with loading and empty states) instead of typing it manually.
  • New PrimaryButton and UI polish across onboarding and dashboardIntroduced a reusable neobrutalist PrimaryButton (acid-green, box-shadow hover effect, supports asChild) and applied it across onboarding, the project wizard, and dashboard CTAs. Also added a live slug URL preview and clearer visibility descriptions.

New Features

  • Added GET /v1/github/repos/:installationId/branches to fetch repository branches for a GitHub App installation.backend
  • Added useGithubBranches TanStack Query hook and GithubBranch type to list branches in the UI.frontend
  • Added PrimaryButton component (neobrutalist acid-green style) and used it across onboarding, project creation, and dashboard CTAs.frontend
  • Auto-selected the repo in the Select Repo step when only one repository is accessible, so users can continue faster.frontend
  • Added tsc --watch dev script to internal packages so Turborepo hot-reloads package changes during local development.devops

API

  • Updated POST /v1/projects to accept clerkOwnerId (Clerk ID) and resolve the internal UUID server-side before creating a project.backend
  • Changed GET /v1/github/callback to redirect to /app/projects/new and to populate installed_by from the x-clerk-user-id header if provided.backend
  • Made GET /api/github/installations resolve Clerk userId to internal UUID and return an empty list (not a 500) when the user is not yet present in the DB.backend

Improvements

  • Replaced the tracked-branch text input with a Select dropdown populated from the GitHub branches API and added loading and empty states.frontend
  • Added a live URL preview and helper text to the project slug field so users see their public changelog URL while typing.frontend
  • Added per-option descriptions to Visibility options (Public, Unlisted, Private) to make sharing choices clearer.frontend
  • Mapped camelCase API response fields to the snake_case shape expected by the UI so repository lists populate correctly.frontend
  • Replaced bespoke CTA styling with the PrimaryButton component across the app for consistent primary actions.frontend
  • Tightened Sidebar active-link detection to strict equality so navigation highlights behave correctly.frontend

Bug Fixes

  • Made .env.local load with override: true so local secrets take precedence over placeholder values.backend
  • Fixed the GitHub callback page flow to move the redirect outside the try/catch so successful installs no longer show an error card.frontend
  • Fixed ConnectGitHubStep to pass the internal installation UUID (id) instead of the GitHub integer installation_id so downstream calls resolve correctly.frontend
  • Changed Clerk webhook org handling to immediately upsert the org creator as an admin member to avoid race conditions with membership events.auth
  • Changed handleOrgDeleted to hard-delete the organization row (and cascade members) via the DB so deletions are processed correctly.database
  • Made OrganizationRepository.addMember an upsert on (org_id, user_id) so duplicate membership events are idempotent.database
  • Removed invalid JavaScript null-coalescing operators from Inngest priority expressions so Inngest functions register correctly.backend
  • Removed DEMO_CLERK_USER_ID from env files and corrected Supabase JWT key formats in development envs.