GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — feat(site): list every PR in the top bar by DanielleMaywood · Pull Request #29831 · coder/coder

Conversation

@DanielleMaywood

@DanielleMaywood DanielleMaywood commented Sep 24, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

Part 5 of 6. Depends on #29544. Supersedes #29545, which merged with a flattened head by mistake.

The top bar PR chip now reads diff_statuses instead of the single primary. With one PR it stays a direct link. With several it shows "N PRs" and opens a menu with one link per PR. When the PRs span multiple origins, each entry is prefixed with owner/repo so equal PR numbers stay distinct. Refs without a PR number (branch-only refs) are left out.

Each menu entry shows the PR state icon, the PR number, the title on one line, and an external-link icon. Screen readers hear the PR state. The menu is 288px wide and shows five entries before it scrolls. PRMenuLinks renders the entries.

originRepoLabel moves from the git panel to utils/originRepoLabel.ts so both places share it.

Generated by Coder Agents.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@DanielleMaywood DanielleMaywood mentioned this pull request Sep 24, 2026
feat(site): count every PR in the chats sidebar #29832
Merged
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 24, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-24T08:40:43.735899Z 6a9c888 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@github-actions github-actions Bot assigned DanielleMaywood Sep 24, 2026
@DanielleMaywood
DanielleMaywood marked this pull request as draft September 24, 2026 08:35
@DanielleMaywood DanielleMaywood added the experimental Changes that might not necessarily be merged, until its approved to proceed with. label Sep 24, 2026
@DanielleMaywood
DanielleMaywood added this pull request to stack #29833 September 24, 2026 08:37
@DanielleMaywood
DanielleMaywood marked this pull request as ready for review September 24, 2026 08:37
chatgpt-codex-connector[bot]
chatgpt-codex-connector Bot reviewed Sep 24, 2026
View reviewed changes

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6a9c888320

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread site/src/pages/AgentsPage/components/ChatTopBar.test.tsx
Comment on lines +91 to +93
expect(
within(menu).getByRole("menuitem", { name: /PR #123/ }),
).toHaveAttribute("href", "https://github.com/coder/coder/pull/123");

@chatgpt-codex-connector chatgpt-codex-connector Bot Sep 24, 2026

Copy link
Copy Markdown

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Exercise PR-link selection instead of inspecting href

These two new behavior tests stop after opening the menu and only inspect rendered href attributes, so a regression where selecting a menu item no longer activates the link would still pass. FE1 requires userEvent-driven behavior coverage with an observable non-visual outcome; exercise the link selection and assert the navigation/opening outcome instead of the DOM attribute.

AGENTS.md reference: site/AGENTS.md:L7-L7

Useful? React with 👍 / 👎.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@DanielleMaywood DanielleMaywood Sep 24, 2026

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We keep the href assertion. The menu item is an anchor with target="_blank". Radix does not open the link when you select the item. The browser opens it. jsdom does nothing when you click a _blank link: there is no navigation, no window.open call and no event to assert. Because of this, a test that clicks the item cannot find more regressions than this test.

The href value is the contract of the link. The assertion checks a value, not that the element exists. A screenshot does not show the href, so this test is the only check of the link target.

This reply was generated by Coder Agents.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread site/src/pages/AgentsPage/components/ChatTopBar.stories.tsx Outdated
Comment on lines +378 to +380
const mockPRStatuses = [
{
chat_id: "chat-1",

@chatgpt-codex-connector chatgpt-codex-connector Bot Sep 24, 2026

Copy link
Copy Markdown

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Compose PR story rows from the shared fixture

The newly added mockPRStatuses rows independently reproduce the complete ChatDiffStatus entity even though MockChatDiffStatus already exists in testHelpers/chatEntities.ts; when the generated API shape or canonical fixture changes, these stories can silently drift from the shared test data. Import the shared fixture and spread it into named variants for the two branches instead.

AGENTS.md reference: site/AGENTS.md:L15-L15

Useful? React with 👍 / 👎.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@DanielleMaywood DanielleMaywood Sep 24, 2026

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in ef634c0. The two multi-PR rows now spread MockChatDiffStatus. They change only the fields that make each row different: branch, URL, PR number, title and draft flag. The rows also do not use pull_request_state: "draft" now, because the server does not store this value. The rendered menu is the same as before.

The single-PR stories do not change. Their rows copy older data that has no pr_number, so they test the path that reads the PR number from the URL.

This reply was generated by Coder Agents.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@DanielleMaywood DanielleMaywood mentioned this pull request Sep 24, 2026
feat(site): list every PR in the top bar #29545
Merged
@DanielleMaywood
DanielleMaywood force-pushed the feat/chat-diff-ref-topbar branch 2 times, most recently from 816a0ad to c37ba5f Compare September 24, 2026 13:21
@DanielleMaywood
DanielleMaywood requested a review from a team as a code owner September 25, 2026 08:59
@DanielleMaywood
DanielleMaywood force-pushed the feat/chat-diff-ref-topbar branch from ef634c0 to 047db3f Compare September 25, 2026 08:59
@DanielleMaywood
DanielleMaywood force-pushed the feat/chat-diff-ref-topbar branch 2 times, most recently from 8ab0ac1 to 122a3e1 Compare September 28, 2026 12:11
@DanielleMaywood
DanielleMaywood force-pushed the feat/chat-diff-ref-topbar branch from 5963e62 to 026c5f2 Compare September 29, 2026 10:13
@DanielleMaywood
DanielleMaywood force-pushed the feat/chat-diff-ref-topbar branch from 026c5f2 to d85b6e1 Compare September 29, 2026 11:51
@DanielleMaywood
DanielleMaywood force-pushed the feat/chat-diff-ref-topbar branch from d85b6e1 to 286975f Compare September 30, 2026 14:37
@linear-code

linear-code Bot commented Sep 30, 2026

Copy link
Copy Markdown

CODAGT-990

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@DanielleMaywood
DanielleMaywood force-pushed the feat/chat-diff-ref-topbar branch from 286975f to 4cf8db2 Compare October 1, 2026 09:10
@DanielleMaywood
DanielleMaywood force-pushed the feat/chat-diff-ref-topbar branch from 4cf8db2 to c9bde7e Compare October 1, 2026 09:59
@DanielleMaywood
DanielleMaywood force-pushed the feat/chat-diff-ref-topbar branch from c9bde7e to ee52a7b Compare October 5, 2026 09:06
@DanielleMaywood
DanielleMaywood force-pushed the feat/chat-diff-ref-topbar branch from ee52a7b to f04d846 Compare October 5, 2026 14:38
jakehwll
jakehwll reviewed Oct 6, 2026
View reviewed changes
Comment thread site/src/pages/AgentsPage/utils/originRepoLabel.ts

@jakehwll jakehwll Oct 6, 2026

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This function reads a little odd to me... I know it works but is it brittle?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
jakehwll
jakehwll approved these changes Oct 6, 2026
View reviewed changes
@DanielleMaywood
DanielleMaywood force-pushed the feat/chat-diff-ref-topbar branch from 3025bca to b4a5283 Compare October 6, 2026 10:14
@DanielleMaywood
DanielleMaywood force-pushed the feat/chat-diff-ref-topbar branch from b4a5283 to 5037270 Compare October 9, 2026 09:36
DanielleMaywood added 9 commits October 9, 2026 09:59
@DanielleMaywood
feat(site): list every PR in the top bar
9cc05fa
The top bar PR chip now follows the full PR list. One PR stays a
direct link. Several PRs open a menu with one link per PR; the menu
item shows the PR number, so two PRs that share a title stay
distinguishable. Rows that do not point to a PR stay out of the
list.
@DanielleMaywood
refactor(site): name mock data consistently in top bar stories
670737b
Every mock data fixture now starts with mock: mockPRStatuses,
mockDashboardValue, and mockParentChat.
@DanielleMaywood
refactor(site): extract the top bar PR classification
28d05f9
The PR row filter and the PR number fallback lived inline in the
component and repeated between the menu items and the link chip.
They are now module-level helpers: prNumber, isPRStatus, and
chatPRStatuses.
@DanielleMaywood
style(site): trim the top bar comments to the rule
4a0e313
@DanielleMaywood
fix(site): anchor the PR menu entries
16ba702
@DanielleMaywood
fix(site): name the repository in cross-origin PR menu labels
2e13e43
@DanielleMaywood
refactor(site): build top bar PR stories from MockChatDiffStatus
bf122bc
@DanielleMaywood
feat(site): limit the top bar PR menu to a set width and five rows
741e215
@DanielleMaywood
fix(site): label each origin by its full repository path
3fbfca6
The label kept only the last two path segments, so GitLab subgroups
that share a name got the same label. It also changed every colon to
a slash and removed ".git" from every segment. The label is now the
full path after the host, without a final ".git".

The label takes a string. Callers skip rows that have no origin.
@DanielleMaywood
DanielleMaywood force-pushed the feat/chat-diff-ref-topbar branch from 5037270 to 3fbfca6 Compare October 9, 2026 10:16
@DanielleMaywood
DanielleMaywood merged commit 051eb58 into main Oct 9, 2026
27 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@DanielleMaywood
DanielleMaywood deleted the feat/chat-diff-ref-topbar branch October 9, 2026 10:27
DanielleMaywood added a commit that referenced this pull request Oct 9, 2026
@DanielleMaywood
feat(site): count every PR in the chats sidebar (#29832)
ff3fa22
Part 6 of 6. Depends on #29831. Supersedes #29547, which merged with a
flattened head by mistake.

The chats sidebar and search results now count every PR in
`diff_statuses`, not only the primary ref. A chat with one PR shows that
PR's state icon and line stats, even when the primary ref is a newer
branch without a PR. A chat with several PRs shows a PR count instead of
a single state icon, with no line stats. Screen readers hear "N pull
requests".

In the sidebar tree, the kebab menu and the right-click menu of a chat
list its PRs in a group between "Copy" and "Archive agent". One PR is a
direct link. Several PRs open an "N PRs" submenu. The entries use the
same rows as the top bar PR menu. Viewers of a shared chat also see the
links. PRs without a URL are not listed.

These menus replace the hover tooltip from earlier commits. The tooltip
did not open on touch and had no links to the PRs.

Generated by Coder Agents.
@github-actions github-actions Bot locked and limited conversation to collaborators Oct 9, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Reviewers

@chatgpt-codex-connector chatgpt-codex-connector[bot] chatgpt-codex-connector[bot] left review comments
@jakehwll jakehwll jakehwll approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

@DanielleMaywood DanielleMaywood

Labels

experimental Changes that might not necessarily be merged, until its approved to proceed with.

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@DanielleMaywood @jakehwll
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.