feat(desktop): projects overview v2 — aggregate rail, PR review flow, commit detail, and straighter layout - #1677
Merged
Merged
Conversation
…overview Add Top Languages and Repositories summary cards to the overview's main column, aggregated across every repository instead of a single one. A new throttled useProjectsRepoSnapshotsQuery fans out blobless repo snapshots (3 at a time, cached 15 minutes, only while the overview header is visible) to feed the language tally, file/contributor totals, and latest commit. Language helpers move to a shared lib so the single-project rail and the workspace overview share one implementation.
… rail Place the aggregated Top Languages and Repositories sections under People in the overview's right rail, matching the single-project detail rail, instead of as standalone cards in the main column.
Remote git storage can be empty or unreachable (staging relay repos have no refs), leaving the overview language and repository aggregates blank. Scan local checkouts under the workspace repos dir first — no network, no clone — and only fall back to a remote blobless clone for projects without usable local data.
…dings Drop the redundant caption from the contribution activity header, swap the heatmap cells' native title text for the shared tooltip, and restyle the overview rail headings from uppercase labels to regular text.
…crumbs Clicking a commit in the Commits tab now opens a detail view with the commit header and its diff against the parent, reusing the PR files-changed panel. Breadcrumbs on all work item detail pages (PR, issue, commit) now render the full trail (Projects > project > category > title) with each segment stepping back exactly one level.
…regate-rail # Conflicts: # desktop/playwright.config.ts
…, approvals Adds GitHub-style review capabilities to the PR detail view, grounded in what the Buzz protocol supports: draft/ready via NIP-34 status kinds (1630/1633, same shape as `buzz pr status`), and reviewer requests + approvals as labeled kind:1 comments (t=review-request / t=approval) since NIP-34 has no dedicated review kinds. A review card in the conversation flow (above the composer) shows reviewers, review state, and the Approve / Ready-for-review / Convert-to-draft actions, gated to the PR author or repo owner per the existing trusted-actor rules. Also includes earlier UI polish from this branch: grayscale activity heatmap, icon-only view toggles, breadcrumb + tab restructure (Code first, branch picker + local/remote toggle in panel headers), viewer git-identity commit avatar matching, and StatPill label cleanup. Splits hooks.ts and ProjectRepositoryPanel.tsx to stay under the file-size guard. Mock bridge now accepts repo-scoped publishes so PR comments, approvals, and status changes work in e2e; adds project-pr-review spec.
…regate-rail # Conflicts: # desktop/playwright.config.ts # desktop/src/features/projects/ui/ProjectCommitDetailPanel.tsx # desktop/src/features/projects/ui/ProjectDetailFeedPanels.tsx # desktop/src/features/projects/ui/ProjectDetailScreen.tsx # desktop/src/features/projects/ui/ProjectOverviewPanel.tsx # desktop/src/features/projects/ui/ProjectPullRequestsPanel.tsx # desktop/src/features/projects/ui/ProjectWorkspaceTabs.tsx # desktop/src/features/projects/ui/ProjectsOverviewPanel.tsx # desktop/tests/e2e/project-commit-detail.spec.ts
Contributor
Author
|
🤖 Screenshots of the layout changes in this PR. Projects overview + gridUnified overview card (header, stat boxes, contribution graph, repository rail with dividers), and project cards with the inset segmented activity bar (PRs = primary, commits = primary tint, issues = orange) and left-aligned people avatars under the description. Projects list viewHorizontally aligned rows with full-bleed dividers and relative-time-only updated labels. Project detail — overviewSingle rounded card for the project overview with the meta rail split by dividers. Pull request detailHeader, sub-tab menu (text-width underlines), and conversation unified into one rounded card, with status/branches/activity/review pushed into the right meta rail. Issue detailSame unified-card treatment with the meta rail keeping focus on the conversation. |
thomaspblock
marked this pull request as ready for review
July 9, 2026 16:17
This was referenced Jul 10, 2026
Merged
6 tasks
thomaspblock
added a commit
that referenced
this pull request
Aug 7, 2026
…g, activity feed polish (#5073) ## Summary Follow-up batch on the Projects overview (continues merged #1677): - **Repository access restrictions** — repositories the viewer can't reach are surfaced with a reason instead of failing silently. Channel-ACL denials (which arrive as the same 404 as a missing repo, for anti-enumeration) are re-classified using the repository's channel binding and the viewer's memberships (`useRepositoryAccess.ts`, `projectRepoAvailability.ts`). - **Projects loads in seconds instead of minutes** — enumeration no longer crawls every kind:5 deletion event on the relay. It fetches project/repo announcements first, then queries deletions scoped to those coordinates via chunked `#a` filters (3 queries instead of hundreds on staging). - **Activity feed layout polish** — bare event-type glyph beside the headline (no badge circle), timeline spine runs through the avatars connecting consecutive cards, linkable actor/project names are bold in theme foreground, rounded hover state, alignment fixes. - **Create button pinned** — the "+" create menu is pinned to the pane's top-right corner (equal 16px insets) and no longer scrolls away with the page header. - **List controls as a table header** — the scope selector (left) and sort + layout toggle (right) render as the first row of the list container on the Projects/Repositories/PRs/Issues tabs; in card view the identical bar stands alone with the cards below (`ProjectsListHeaderBar.tsx`). - **Repository rows show the git location** — subtitle is `github.com/org/repo` for external repos or `owner/repo` (resolved profile name) for Buzz-hosted ones, instead of repeating the project name (`repositoryDisplayPath`). - **Uniform work-item row heights** — issue rows previously ran the author chip in inline flow, letting the 20px avatar grow the line box ~3px taller than PR rows; both lists now share the same flex subtitle. 📸 Screenshots: [feed layout / pinned button](#5073 (comment)) · [list header / repo subtitles / row heights](#5073 (comment)). Note: two empty `chore: retrigger CI` commits exist on the branch from working around the Aug 6 GitHub Actions incident; happy to drop them with a signoff rebase before undrafting if preferred. Latest `main` is merged in (`a0cc35220`). ## Test plan - [x] Desktop unit tests (4,493 pass after merging main), Biome, tsc - [x] New unit tests for scoped deletion enumeration and repo availability re-classification - [x] New unit tests for `repositoryDisplayPath` (external, Buzz-hosted, unresolvable) - [x] Screenshot verification of feed layout, connector spine, and pinned button (top + scrolled states) — posted to the PR - [x] Screenshot verification of the list header row (list + card), repo subtitles, and matching PR/issue row heights — posted to the PR - [ ] Manual pass against staging (projects list load time, restricted-repo states) --------- Signed-off-by: Thomas Petersen <thomasp@squareup.com>
41fred
pushed a commit
to 41fred/buzz
that referenced
this pull request
Aug 9, 2026
…g, activity feed polish (block#5073) ## Summary Follow-up batch on the Projects overview (continues merged block#1677): - **Repository access restrictions** — repositories the viewer can't reach are surfaced with a reason instead of failing silently. Channel-ACL denials (which arrive as the same 404 as a missing repo, for anti-enumeration) are re-classified using the repository's channel binding and the viewer's memberships (`useRepositoryAccess.ts`, `projectRepoAvailability.ts`). - **Projects loads in seconds instead of minutes** — enumeration no longer crawls every kind:5 deletion event on the relay. It fetches project/repo announcements first, then queries deletions scoped to those coordinates via chunked `#a` filters (3 queries instead of hundreds on staging). - **Activity feed layout polish** — bare event-type glyph beside the headline (no badge circle), timeline spine runs through the avatars connecting consecutive cards, linkable actor/project names are bold in theme foreground, rounded hover state, alignment fixes. - **Create button pinned** — the "+" create menu is pinned to the pane's top-right corner (equal 16px insets) and no longer scrolls away with the page header. - **List controls as a table header** — the scope selector (left) and sort + layout toggle (right) render as the first row of the list container on the Projects/Repositories/PRs/Issues tabs; in card view the identical bar stands alone with the cards below (`ProjectsListHeaderBar.tsx`). - **Repository rows show the git location** — subtitle is `github.com/org/repo` for external repos or `owner/repo` (resolved profile name) for Buzz-hosted ones, instead of repeating the project name (`repositoryDisplayPath`). - **Uniform work-item row heights** — issue rows previously ran the author chip in inline flow, letting the 20px avatar grow the line box ~3px taller than PR rows; both lists now share the same flex subtitle. 📸 Screenshots: [feed layout / pinned button](block#5073 (comment)) · [list header / repo subtitles / row heights](block#5073 (comment)). Note: two empty `chore: retrigger CI` commits exist on the branch from working around the Aug 6 GitHub Actions incident; happy to drop them with a signoff rebase before undrafting if preferred. Latest `main` is merged in (`a0cc35220`). ## Test plan - [x] Desktop unit tests (4,493 pass after merging main), Biome, tsc - [x] New unit tests for scoped deletion enumeration and repo availability re-classification - [x] New unit tests for `repositoryDisplayPath` (external, Buzz-hosted, unresolvable) - [x] Screenshot verification of feed layout, connector spine, and pinned button (top + scrolled states) — posted to the PR - [x] Screenshot verification of the list header row (list + card), repo subtitles, and matching PR/issue row heights — posted to the PR - [ ] Manual pass against staging (projects list load time, restricted-repo states) --------- Signed-off-by: Thomas Petersen <thomasp@squareup.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.





Summary
Full projects-v2 line of work, including the layout iteration merged in #1672:
Screenshots of the final look are in the #1672 comment: #1672 (comment)
Test plan
just ciproject-commit-detail.spec.ts,project-pr-review.spec.ts