Merge origin/main into payments.
2 months ago
Authored
MadisonKeep main's workbench UI while preserving sponsorship/donations flows, and renumber the donations migration after main's waitlist changes.
Parentsc5ea93ebf454bf
232 files changed
- README.md+8−7
- apps/community/.env.example+1−1
- apps/community/README.md+1−1
- apps/community/package.json+2−2
- apps/web/.env.example+3−3
- apps/web/app/(home)/activity-row.tsx+2−2
- apps/web/app/(home)/ci-health.tsx+1−1
- apps/web/app/(home)/feed-sidebar.tsx+3−35
apps/web/app/(home)/layout.tsx+7−12apps/web/app/(home)/leaderboard.tsx+1−1apps/web/app/(home)/page.tsx+16−19apps/web/app/(home)/trending-repos.tsx+1−1apps/web/app/[username]/[repository]/blob/[...path]/page.tsx+12−222apps/web/app/[username]/[repository]/blob/layout.tsx+6−96apps/web/app/[username]/[repository]/branches/page.tsx+125−0apps/web/app/[username]/[repository]/campfire/campfire-room.tsx+289−283apps/web/app/[username]/[repository]/campfire/campfire-thread-ref-card.tsx+1−1apps/web/app/[username]/[repository]/campfire/page.tsx+4−24apps/web/app/[username]/[repository]/docs/docs-page.tsx+1−1apps/web/app/[username]/[repository]/fork/fork-repository-form.tsx+10−5apps/web/app/[username]/[repository]/insights/page.tsx+1−1apps/web/app/[username]/[repository]/issues/new/page.tsx+3−31apps/web/app/[username]/[repository]/issues/page.tsx+3−12apps/web/app/[username]/[repository]/layout.tsx+46−30apps/web/app/[username]/[repository]/pulls/[number]/autopilot/autopilot-run-client.tsx+1−1apps/web/app/[username]/[repository]/pulls/[number]/autopilot/page.tsx+3−18apps/web/app/[username]/[repository]/pulls/[number]/conversation-checks.tsx+1−1apps/web/app/[username]/[repository]/pulls/[number]/pull-request-conversation.tsx+1−1apps/web/app/[username]/[repository]/pulls/[number]/pull-request-detail.tsx+1−1apps/web/app/[username]/[repository]/pulls/[number]/pull-request-files-chrome.tsx+1−1apps/web/app/[username]/[repository]/pulls/[number]/pull-request-files-review.tsx+1−1apps/web/app/[username]/[repository]/pulls/[number]/pull-request-forms.tsx+1−1apps/web/app/[username]/[repository]/pulls/[number]/pull-request-merge-box.tsx+1−1apps/web/app/[username]/[repository]/pulls/[number]/pull-request-stack-panel.tsx+1−1apps/web/app/[username]/[repository]/pulls/new/actions.ts+13−152apps/web/app/[username]/[repository]/pulls/new/new-pull-request-modal.tsx+4−2apps/web/app/[username]/[repository]/pulls/new/pull-request-dialog-chrome.tsx+8−3apps/web/app/[username]/[repository]/pulls/page.tsx+10−20apps/web/app/[username]/[repository]/repository-branch-switcher.tsx+21−2apps/web/app/[username]/[repository]/repository-file-tree.tsx+62−23apps/web/app/[username]/[repository]/repository-file.tsx+298−0apps/web/app/[username]/[repository]/repository-files-sidebar-button.tsx+37−0apps/web/app/[username]/[repository]/repository-home.tsx+44−45apps/web/app/[username]/[repository]/repository-latest-commit.tsx+1−1apps/web/app/[username]/[repository]/repository-layout-shell.tsx+21−14apps/web/app/[username]/[repository]/repository-tabs.tsx+8−8apps/web/app/[username]/[repository]/settings/_components/repository-settings-nav.tsx+44−18apps/web/app/[username]/[repository]/settings/layout.tsx+14−16apps/web/app/[username]/gitty-actions.ts+0−28apps/web/app/[username]/gitty-card.tsx+0−112apps/web/app/[username]/gitty-controls.tsx+0−63apps/web/app/[username]/page.tsx+12−40apps/web/app/[username]/settings/_components/organization-settings-nav.tsx+1−1apps/web/app/admin/waitlist/page.tsx+33−0apps/web/app/admin/waitlist/waitlist-admin.tsx+250−0apps/web/app/api/admin/waitlist/route.ts+83−0apps/web/app/api/campfire/ref-details/route.ts+5−1apps/web/app/api/campfire/refs/route.ts+5−1apps/web/app/api/campfire/ws-token/route.ts+2−2apps/web/app/api/ci/jobs/[jobId]/cancel/route.ts+5−0apps/web/app/api/ci/jobs/[jobId]/logs/route.ts+6−0apps/web/app/api/ci/jobs/[jobId]/rerun/route.ts+5−0apps/web/app/api/ci/repos/[repoId]/runner-registration-token/route.ts+5−0apps/web/app/api/repos/[repoId]/commits/[sha]/checks/route.ts+5−1apps/web/app/api/repos/[repoId]/files/route.ts+47−0apps/web/app/api/repos/[repoId]/pulls/[prId]/autopilot/route.ts+5−1apps/web/app/api/repos/[repoId]/pulls/[prId]/diff/route.ts+5−1apps/web/app/api/repos/[repoId]/pulls/[prId]/files/[fileId]/diff/route.ts+5−1apps/web/app/api/repos/[repoId]/pulls/[prId]/files/route.ts+5−1apps/web/app/api/repos/[repoId]/pulls/[prId]/route.ts+5−1apps/web/app/api/v1/repos/[owner]/[repository]/pulls/route.test.ts+103−0apps/web/app/api/v1/repos/[owner]/[repository]/pulls/route.ts+125−0apps/web/app/api/waitlist-scene/route.ts+48−0apps/web/app/api/waitlist/password/route.ts+79−0apps/web/app/ci/runs/[runId]/jobs/[jobId]/page.tsx+18−14apps/web/app/ci/runs/[runId]/jobs/[jobId]/workflow-job-log-viewer.tsx+3−3apps/web/app/favicon.ico——apps/web/app/gitty-lab/page.tsx+3−113apps/web/app/home/home-readme.tsx+9−7apps/web/app/layout.tsx+29−27apps/web/app/onboarding/actions.ts+7−10apps/web/app/onboarding/ensure-onboarded.ts+41−0apps/web/app/onboarding/onboarding-experience.tsx+3−37apps/web/app/onboarding/onboarding-identity-preview.tsx+9−144apps/web/app/onboarding/username-availability/route.ts+3−3apps/web/app/repositories/import/github/github-import-form.tsx+1−1apps/web/app/repositories/new/create-repository-form.tsx+1−1apps/web/app/settings/account/account-settings-sections/connections.tsx+1−1apps/web/app/settings/account/account-settings-sections/settings.tsx+1−1apps/web/app/settings/account/teams/new/create-organization-form.tsx+1−1apps/web/app/settings/developer/page.tsx+6−4apps/web/app/settings/layout.tsx+4−1apps/web/app/sign-up/page.tsx+7−0apps/web/app/sign-up/sign-up-form.tsx+11−11apps/web/app/tos/page.tsx+24−17apps/web/app/waitlist/page.tsx+46−0apps/web/app/waitlist/waitlist-join-flow.tsx+404−0apps/web/app/waitlist/waitlist-landing.tsx+182−0apps/web/app/waitlist/waitlist-scene.tsx+23−0apps/web/app/waitlist/waitlist-sign-out-button.tsx+26−0apps/web/app/workspace/create-new-menu.tsx+8−8apps/web/app/workspace/dashboard-detail.tsx+70−2apps/web/app/workspace/dashboard-list-skeleton.tsx+24−87apps/web/app/workspace/dashboard-list.tsx+7−7apps/web/app/workspace/dashboard-row.tsx+12−4apps/web/app/workspace/dashboard-tabs.tsx+1−1apps/web/app/workspace/dashboard-toolbar.tsx+1−1apps/web/app/workspace/detail-panel-chrome.tsx+1−1apps/web/app/workspace/detail-panel-skeleton.tsx+4−11apps/web/app/workspace/detail-panel.tsx+14−154apps/web/app/workspace/error.tsx+49−0apps/web/app/workspace/helpers.test.ts+32−0apps/web/app/workspace/helpers.ts+82−4apps/web/app/workspace/import-from-github-menu-item.tsx+2−2apps/web/app/workspace/layout.tsx+25−91apps/web/app/workspace/load-dashboard-lists.ts+25−32apps/web/app/workspace/load-sidebar-repositories.ts+24−0apps/web/app/workspace/page.tsx+8−18apps/web/app/workspace/repo-picker-submenu.tsx+5−16apps/web/app/workspace/repository-explorer.tsx+264−0apps/web/app/workspace/repository-workbench-sidebar.tsx+294−0apps/web/app/workspace/section-header.tsx+1−1apps/web/app/workspace/warm-preview.ts+5−1apps/web/components/account-settings/account-settings-modal.tsx+43−43apps/web/components/app-shell.tsx+31−20apps/web/components/app-site-chrome.tsx+0−267apps/web/components/ci/check-status-indicator.tsx+2−2apps/web/components/command-menu.tsx+5−30apps/web/components/conversation/campfire-mention-timeline-card.tsx+1−1apps/web/components/conversation/conversation-chrome.tsx+1−1apps/web/components/conversation/conversation-quote-reply.tsx+1−1apps/web/components/conversation/pr-autopilot-timeline.tsx+1−1apps/web/components/conversation/timeline-primitives.tsx+1−1apps/web/components/dev-floating-panel.tsx+1−1apps/web/components/diffs/code-view-comments-list.tsx+9−6apps/web/components/diffs/code-view-diff-stats.tsx+2−2apps/web/components/diffs/code-view-header.tsx+59−36apps/web/components/diffs/code-view-sidebar.tsx+33−13apps/web/components/diffs/code-view-wrapper.tsx+34−13apps/web/components/layout-preference-preview.tsx+1−1apps/web/components/legal-page-shell.tsx+15−9apps/web/components/legal/privacy-policy-content.tsx+25−17apps/web/components/markdown/markdown-editor.tsx+1−1apps/web/components/open-git-user-button.tsx+44−16apps/web/components/organization-menu.tsx+91−53apps/web/components/pixel-icon.tsx+0−26apps/web/components/resource-query-filter-bar.tsx+1−1apps/web/components/settings-nav.tsx+1−1apps/web/components/sidebar-app-frame.tsx+280−0apps/web/components/workbench-tabs/canonical-target.test.ts+58−0apps/web/components/workbench-tabs/canonical-target.ts+24−58apps/web/components/workbench-tabs/config.ts+2−5apps/web/components/workbench-tabs/workbench-route-sync.tsx+7−16apps/web/components/workbench-tabs/workbench-tab-bar.tsx+250−276apps/web/components/workbench-tabs/workbench-tabs-provider.tsx+26−28apps/web/db/dashboard.ts+119−43apps/web/db/git-access-tokens.ts+15−1apps/web/db/issues.ts+3−2apps/web/db/pull-requests.ts+4−3apps/web/db/repository-index.ts+99−22apps/web/db/repository-permissions.ts+25−4apps/web/db/schema.ts+46−1apps/web/db/user-profiles.ts+11−0apps/web/db/waitlist.ts+76−0apps/web/drizzle/0031_serious_wolfpack.sql+12−0apps/web/drizzle/0032_even_ezekiel.sql+1−0apps/web/drizzle/{0031_cool_lady_deathstrike.sql => 0033_premium_chronomancer.sql}+0−0apps/web/drizzle/meta/0031_snapshot.json+89−281apps/web/drizzle/meta/0032_snapshot.json+7207−0apps/web/drizzle/meta/0033_snapshot.json+7487−0apps/web/drizzle/meta/_journal.json+16−2apps/web/lib/admin.test.ts+70−0apps/web/lib/admin.ts+32−0apps/web/lib/api/personal-access-token.test.ts+84−0apps/web/lib/api/personal-access-token.ts+52−0apps/web/lib/auth-client.ts+4−1apps/web/lib/auth.ts+45−1apps/web/lib/email.ts+3−2apps/web/lib/pull-requests/create-pull-request.test.ts+140−0apps/web/lib/pull-requests/create-pull-request.ts+206−0apps/web/lib/shared/cache.ts+3−0apps/web/lib/waitlist-config.ts+7−0apps/web/lib/waitlist-email.test.ts+23−0apps/web/lib/waitlist-email.ts+50−0apps/web/package.json+2−5apps/web/public/icons/isocons-empty-dashboard.svg+39−0deploy/.env.example+1−1deploy/docker-compose.app.yml+5−3deploy/docker-compose.single.yml+5−3package.json+2−1packages/ui/DESIGN.md+3−1packages/ui/NUCLEO-COPYRIGHT-NOTICE.html+20−0packages/ui/package.json+1−2packages/ui/src/components/accordion.tsx+1−1packages/ui/src/components/alert-dialog.tsx+1−1packages/ui/src/components/appearance-menu-section.tsx+1−1packages/ui/src/components/autocomplete.tsx+1−1packages/ui/src/components/badge.tsx+14−14packages/ui/src/components/breadcrumb.tsx+1−1packages/ui/src/components/button-variants.tsx+9−9packages/ui/src/components/calendar.tsx+1−1packages/ui/src/components/combobox.tsx+1−1packages/ui/src/components/command-menu-context.tsx+0−37packages/ui/src/components/command.tsx+4−4packages/ui/src/components/copy-to-clipboard-button.tsx+1−1packages/ui/src/components/dialog.tsx+2−2packages/ui/src/components/drawer.tsx+7−7packages/ui/src/components/gitty-sprite.tsx+0−441packages/ui/src/components/menu.tsx+1−1packages/ui/src/components/nested-panel.tsx+6−9packages/ui/src/components/nucleo-icon-data.tsx+1639−0packages/ui/src/components/nucleo-icons.css+116−0packages/ui/src/components/nucleo-icons.tsx+232−0packages/ui/src/components/number-field.tsx+1−1packages/ui/src/components/pagination.tsx+1−1packages/ui/src/components/pixel-icons.tsx+0−570packages/ui/src/components/scroll-area.tsx+2−0packages/ui/src/components/select.tsx+1−1packages/ui/src/components/sheet.tsx+2−2packages/ui/src/components/sidebar.tsx+1−1packages/ui/src/components/slider.tsx+15−15packages/ui/src/components/toast.tsx+1−1packages/ui/src/components/user-avatar.tsx+15−9packages/ui/src/lib/floating-card.ts+2−2packages/ui/src/lib/gitty.ts+2−3packages/ui/src/styles/globals.css+293−356pnpm-lock.yaml+14−43scripts/gen-pixel-icons.mjs+0−165scripts/generate-nucleo-icons.mjs+159−0stack-teams-export-2026-07-12.json+0−7stack-users-export-2026-07-12.json+0−56turbo.json+2−0