frontend
backend
database
auth
Local dev: GitHub App flow, project creation, org management, and UI polish
- Branch picker: branches API + tracked-branch dropdown — Added 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 dashboard — Introduced 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.