Home

madison / open-git

public
Overview Code History Branches Pull requestsIssuesInsights Campfire Docs
main
HomeOverview Code PRsIssues

feat(web): introduce IDE-style repository workbench

2 months ago

8b186b1
Authored
V.C. Billingsley7/16/2026, 5:49:27 AM

Parentddfdfeb

172 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+2−2
  • 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+4−11
  • apps/web/app/(home)/leaderboard.tsx+1−1
  • apps/web/app/(home)/page.tsx+16−19
  • apps/web/app/(home)/trending-repos.tsx+1−1
  • apps/web/app/[username]/[repository]/blob/[...path]/page.tsx+12−222
  • apps/web/app/[username]/[repository]/blob/layout.tsx+6−96
  • apps/web/app/[username]/[repository]/branches/page.tsx+125−0
  • apps/web/app/[username]/[repository]/campfire/campfire-room.tsx+289−283
  • apps/web/app/[username]/[repository]/campfire/campfire-thread-ref-card.tsx+1−1
  • apps/web/app/[username]/[repository]/campfire/page.tsx+4−24
  • apps/web/app/[username]/[repository]/docs/docs-page.tsx+1−1
  • apps/web/app/[username]/[repository]/fork/fork-repository-form.tsx+10−5
  • apps/web/app/[username]/[repository]/insights/page.tsx+1−1
  • apps/web/app/[username]/[repository]/issues/new/page.tsx+3−31
  • apps/web/app/[username]/[repository]/issues/page.tsx+3−12
  • apps/web/app/[username]/[repository]/layout.tsx+45−29
  • apps/web/app/[username]/[repository]/pulls/[number]/autopilot/autopilot-run-client.tsx+1−1
  • apps/web/app/[username]/[repository]/pulls/[number]/autopilot/page.tsx+3−18
  • apps/web/app/[username]/[repository]/pulls/[number]/conversation-checks.tsx+1−1
  • apps/web/app/[username]/[repository]/pulls/[number]/pull-request-conversation.tsx+1−1
  • apps/web/app/[username]/[repository]/pulls/[number]/pull-request-detail.tsx+1−1
  • apps/web/app/[username]/[repository]/pulls/[number]/pull-request-files-chrome.tsx+1−1
  • apps/web/app/[username]/[repository]/pulls/[number]/pull-request-files-review.tsx+1−1
  • apps/web/app/[username]/[repository]/pulls/[number]/pull-request-forms.tsx+1−1
  • apps/web/app/[username]/[repository]/pulls/[number]/pull-request-merge-box.tsx+1−1
  • apps/web/app/[username]/[repository]/pulls/[number]/pull-request-stack-panel.tsx+1−1
  • apps/web/app/[username]/[repository]/pulls/new/new-pull-request-modal.tsx+4−2
  • apps/web/app/[username]/[repository]/pulls/new/pull-request-dialog-chrome.tsx+8−3
  • apps/web/app/[username]/[repository]/pulls/page.tsx+10−20
  • apps/web/app/[username]/[repository]/repository-branch-switcher.tsx+21−2
  • apps/web/app/[username]/[repository]/repository-file-tree.tsx+62−23
  • apps/web/app/[username]/[repository]/repository-file.tsx+298−0
  • apps/web/app/[username]/[repository]/repository-files-sidebar-button.tsx+37−0
  • apps/web/app/[username]/[repository]/repository-home.tsx+44−45
  • apps/web/app/[username]/[repository]/repository-latest-commit.tsx+1−1
  • apps/web/app/[username]/[repository]/repository-layout-shell.tsx+21−14
  • apps/web/app/[username]/[repository]/repository-tabs.tsx+8−8
  • apps/web/app/[username]/[repository]/settings/_components/repository-settings-nav.tsx+44−18
  • apps/web/app/[username]/[repository]/settings/layout.tsx+14−16
  • apps/web/app/[username]/gitty-actions.ts+0−28
  • apps/web/app/[username]/gitty-card.tsx+0−112
  • apps/web/app/[username]/gitty-controls.tsx+0−63
  • apps/web/app/[username]/page.tsx+9−38
  • apps/web/app/[username]/settings/_components/organization-settings-nav.tsx+1−1
  • apps/web/app/api/repos/[repoId]/files/route.ts+47−0
  • apps/web/app/ci/runs/[runId]/jobs/[jobId]/page.tsx+14−14
  • apps/web/app/ci/runs/[runId]/jobs/[jobId]/workflow-job-log-viewer.tsx+3−3
  • apps/web/app/favicon.ico——
  • apps/web/app/gitty-lab/page.tsx+3−113
  • apps/web/app/home/home-readme.tsx+9−7
  • apps/web/app/layout.tsx+29−27
  • apps/web/app/onboarding/onboarding-experience.tsx+3−37
  • apps/web/app/onboarding/onboarding-identity-preview.tsx+9−144
  • apps/web/app/repositories/import/github/github-import-form.tsx+1−1
  • apps/web/app/repositories/new/create-repository-form.tsx+1−1
  • apps/web/app/settings/account/account-settings-sections/connections.tsx+1−1
  • apps/web/app/settings/account/account-settings-sections/settings.tsx+1−1
  • apps/web/app/settings/account/teams/new/create-organization-form.tsx+1−1
  • apps/web/app/sign-up/sign-up-form.tsx+11−11
  • apps/web/app/tos/page.tsx+24−17
  • apps/web/app/workspace/create-new-menu.tsx+8−8
  • apps/web/app/workspace/dashboard-detail.tsx+70−2
  • apps/web/app/workspace/dashboard-list-skeleton.tsx+24−87
  • apps/web/app/workspace/dashboard-list.tsx+7−7
  • apps/web/app/workspace/dashboard-row.tsx+12−4
  • apps/web/app/workspace/dashboard-tabs.tsx+1−1
  • apps/web/app/workspace/dashboard-toolbar.tsx+1−1
  • apps/web/app/workspace/detail-panel-chrome.tsx+1−1
  • apps/web/app/workspace/detail-panel-skeleton.tsx+4−11
  • apps/web/app/workspace/detail-panel.tsx+14−154
  • apps/web/app/workspace/error.tsx+49−0
  • apps/web/app/workspace/helpers.test.ts+32−0
  • apps/web/app/workspace/helpers.ts+82−4
  • apps/web/app/workspace/import-from-github-menu-item.tsx+2−2
  • apps/web/app/workspace/layout.tsx+20−89
  • apps/web/app/workspace/load-dashboard-lists.ts+25−32
  • apps/web/app/workspace/load-sidebar-repositories.ts+24−0
  • apps/web/app/workspace/page.tsx+8−18
  • apps/web/app/workspace/repo-picker-submenu.tsx+5−16
  • apps/web/app/workspace/repository-explorer.tsx+264−0
  • apps/web/app/workspace/repository-workbench-sidebar.tsx+294−0
  • apps/web/app/workspace/section-header.tsx+1−1
  • apps/web/app/workspace/warm-preview.ts+5−1
  • apps/web/components/account-settings/account-settings-modal.tsx+46−46
  • apps/web/components/app-shell.tsx+31−20
  • apps/web/components/app-site-chrome.tsx+0−267
  • apps/web/components/ci/check-status-indicator.tsx+2−2
  • apps/web/components/command-menu.tsx+5−30
  • apps/web/components/conversation/campfire-mention-timeline-card.tsx+1−1
  • apps/web/components/conversation/conversation-chrome.tsx+1−1
  • apps/web/components/conversation/conversation-quote-reply.tsx+1−1
  • apps/web/components/conversation/pr-autopilot-timeline.tsx+1−1
  • apps/web/components/conversation/timeline-primitives.tsx+1−1
  • apps/web/components/dev-floating-panel.tsx+1−1
  • apps/web/components/diffs/code-view-comments-list.tsx+9−6
  • apps/web/components/diffs/code-view-diff-stats.tsx+2−2
  • apps/web/components/diffs/code-view-header.tsx+59−36
  • apps/web/components/diffs/code-view-sidebar.tsx+33−13
  • apps/web/components/diffs/code-view-wrapper.tsx+34−13
  • apps/web/components/layout-preference-preview.tsx+1−1
  • apps/web/components/legal-page-shell.tsx+15−9
  • apps/web/components/legal/privacy-policy-content.tsx+25−17
  • apps/web/components/markdown/markdown-editor.tsx+1−1
  • apps/web/components/open-git-user-button.tsx+44−16
  • apps/web/components/organization-menu.tsx+91−53
  • apps/web/components/pixel-icon.tsx+0−26
  • apps/web/components/resource-query-filter-bar.tsx+1−1
  • apps/web/components/settings-nav.tsx+1−1
  • apps/web/components/sidebar-app-frame.tsx+280−0
  • apps/web/components/workbench-tabs/canonical-target.test.ts+58−0
  • apps/web/components/workbench-tabs/canonical-target.ts+24−58
  • apps/web/components/workbench-tabs/config.ts+2−5
  • apps/web/components/workbench-tabs/workbench-route-sync.tsx+7−16
  • apps/web/components/workbench-tabs/workbench-tab-bar.tsx+250−276
  • apps/web/components/workbench-tabs/workbench-tabs-provider.tsx+26−28
  • apps/web/db/dashboard.ts+119−43
  • apps/web/db/issues.ts+3−2
  • apps/web/db/pull-requests.ts+4−3
  • apps/web/db/repository-index.ts+99−22
  • apps/web/db/repository-permissions.ts+25−4
  • apps/web/db/user-profiles.ts+11−0
  • apps/web/lib/shared/cache.ts+3−0
  • apps/web/package.json+0−4
  • apps/web/public/icons/isocons-empty-dashboard.svg+39−0
  • package.json+2−1
  • packages/ui/DESIGN.md+3−1
  • packages/ui/NUCLEO-COPYRIGHT-NOTICE.html+20−0
  • packages/ui/package.json+1−2
  • packages/ui/src/components/accordion.tsx+1−1
  • packages/ui/src/components/alert-dialog.tsx+1−1
  • packages/ui/src/components/appearance-menu-section.tsx+1−1
  • packages/ui/src/components/autocomplete.tsx+1−1
  • packages/ui/src/components/badge.tsx+14−14
  • packages/ui/src/components/breadcrumb.tsx+1−1
  • packages/ui/src/components/button-variants.tsx+9−9
  • packages/ui/src/components/calendar.tsx+1−1
  • packages/ui/src/components/combobox.tsx+1−1
  • packages/ui/src/components/command-menu-context.tsx+0−37
  • packages/ui/src/components/command.tsx+4−4
  • packages/ui/src/components/copy-to-clipboard-button.tsx+1−1
  • packages/ui/src/components/dialog.tsx+2−2
  • packages/ui/src/components/drawer.tsx+7−7
  • packages/ui/src/components/gitty-sprite.tsx+0−441
  • packages/ui/src/components/menu.tsx+1−1
  • packages/ui/src/components/nested-panel.tsx+6−9
  • packages/ui/src/components/nucleo-icon-data.tsx+1639−0
  • packages/ui/src/components/nucleo-icons.css+116−0
  • packages/ui/src/components/nucleo-icons.tsx+190−0
  • packages/ui/src/components/number-field.tsx+1−1
  • packages/ui/src/components/pagination.tsx+1−1
  • packages/ui/src/components/pixel-icons.tsx+0−570
  • packages/ui/src/components/scroll-area.tsx+2−0
  • packages/ui/src/components/select.tsx+1−1
  • packages/ui/src/components/sheet.tsx+2−2
  • packages/ui/src/components/sidebar.tsx+1−1
  • packages/ui/src/components/slider.tsx+15−15
  • packages/ui/src/components/toast.tsx+1−1
  • packages/ui/src/components/user-avatar.tsx+15−9
  • packages/ui/src/lib/floating-card.ts+2−2
  • packages/ui/src/lib/gitty.ts+2−3
  • packages/ui/src/styles/globals.css+293−356
  • pnpm-lock.yaml+2−34
  • scripts/gen-pixel-icons.mjs+0−165
  • scripts/generate-nucleo-icons.mjs+159−0