All updates
frontend
backend
integrations
database

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

  • Easier project setup with a GitHub branch picker and live slug previewThe project creation flow now lists repository branches (via a new branches API and hook), replaces the tracked-branch text field with a branch dropdown, and shows a live public-URL preview and helper text for the slug so you can finish setup faster and with fewer mistakes.
  • Consistent primary CTA and UI polish across the appA new reusable PrimaryButton (neobrutalist acid-green style, hover box-shadow shift, supports asChild) was added and applied across onboarding, the project wizard, and dashboard CTAs for a consistent, prominent action style.

New Features

  • Added GET /v1/github/repos/:installationId/branches to fetch repository branches for a GitHub App installation.backend
  • Added GithubClient.listBranches and GithubBranch type to list and type branches from GitHub.integrations
  • Added useGithubBranches TanStack Query hook wired to the new branches API for client-side branch lists.frontend
  • Added PrimaryButton component (acid-green, hover shadow, supports asChild) for primary CTAs.frontend
  • Replaced tracked-branch text input with a Select dropdown populated from the GitHub branches API (with loading and empty states).frontend
  • Added live URL preview and format helper text for the project slug field so users can see their public URL while typing.frontend
  • Auto-selected the repository in the Select Repo step when only one repo is accessible to the installation to reduce clicks.frontend

Improvements

  • Applied the new PrimaryButton across onboarding, project creation, and dashboard CTAs for consistent styling.frontend
  • Added per-option descriptions to the visibility RadioGroup (Public, Unlisted, Private) to clarify sharing behaviour.frontend
  • Added a tsc --watch "dev" script to internal packages so Turborepo hot-reloads local package changes during pnpm dev.devops
  • Renamed a Supabase migration file to a clearer name (vault_helpers.sql).database

API

  • Updated POST /v1/projects to accept clerkOwnerId (Clerk user/org ID) and resolve the internal UUID server-side before inserting the project.backend
  • Changed GET /v1/github/callback to redirect to /app/projects/new?installation_id=<uuid> and to accept x-clerk-user-id to populate installed_by on installations.backend
  • Fixed GET /api/github/installations to resolve Clerk userId to an internal UUID before querying installations and return an empty array when the user is not present.backend

Bug Fixes

  • Fixed environment loading to use override: true for .env.local so local secrets override placeholder values.devops
  • Fixed Clerk webhook handleOrgCreated to immediately upsert an admin membership for the org creator to avoid race conditions.auth
  • Fixed Clerk webhook handleOrgDeleted to hard-delete the organization row (and cascade membership deletes) instead of a no-op.auth
  • Fixed ConnectGitHubStep to pass the internal installation UUID (id) instead of the GitHub integer installation_id so downstream requests resolve correctly.frontend
  • Fixed useGithubRepos to map camelCase API response fields to the snake_case shape expected by the UI so the repo dropdown loads correctly.frontend
  • Fixed the GitHub callback page to move redirect() outside the try/catch so Next.js redirect behaviour is not swallowed as an error.frontend
  • Fixed SidebarWorkspaceNav active-link detection to use strict pathname equality to avoid incorrect highlights.frontend
  • Made OrganizationRepository.addMember idempotent by upserting on (org_id, user_id) to tolerate duplicate membership events.database
  • Removed invalid JavaScript null-coalescing (??) from Inngest function CEL expressions so functions register correctly in the local dev server.backend
  • Removed DEMO_CLERK_USER_ID from env files and corrected Supabase JWT key formats in .env.development for local dev consistency.devops
Local dev GitHub integration, project creation flow, org management, and UI polish