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/src): add the Coder Agents projects page by jaaydenh · Pull Request #32083 · coder/coder

Conversation

@jaaydenh

@jaaydenh jaaydenh commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

Adds the Coder Agents Projects page at /agents/projects, the last piece of the Projects page and pinned projects design. The sidebar's Projects item (#32040) now opens a real page instead of falling through to the chat route.

  • Page: a Projects header with New project (the existing create dialog) and two tabs, Your projects and Shared with you. The selected tab is kept in the URL. Everything comes from the project summaries endpoint (feat: add chat project summaries and pin telemetry #32026) in one request.
  • Order: pinned projects first, in sidebar order, then the rest by latest chat activity, newest first; projects with no chats go last; ties go by name.
  • Cards: icon, name and a two-line description. The footer shows Needs attention (a chat is waiting for input, errored or paused), otherwise Thinking (a chat is running), otherwise N unread / N read / No chats; the member count, or a lock when the owner is the only member; and the latest chat activity time. The whole card links to the project page.
  • Pinning: a pinned card shows a pin icon that turns into an Unpin project button on hover or focus. The card's menu has Pin project or Unpin project next to the existing project actions. While a pin is being saved, the card shows a spinner instead of Pin project, so it can't be sent twice.
  • States: loading skeletons, an error with Retry, and empty states for both tabs.

The page's Storybook stories and the user docs are in the PR stacked on top, to keep this one under the size limit.

Verification

pnpm check, pnpm lint (tsc, oxlint, circular deps, React Compiler, knip), the page and card tests and make pre-commit pass. The repository's frontend deep review ran on this diff, with every blocking and should-fix finding fixed.

Dogfood ran on a dev deployment with seeded projects, chats in every state, and projects shared by user and group. It took several rounds; the last ones checked mouse and keyboard focus in the Edit and Delete dialogs, stable card controls after an unpin, the pending-pin state, icon contrast, tooltip placement, and a full regression pass, in light and dark themes and at narrow width.

Projects page, dark theme Projects page, light theme

Card hover with the Unpin project tooltip Empty Your projects tab Narrow layout

Note

Most of this PR was written by AI agents (Xum, with UAT run through Coder Agents). The verification above is from those runs.

Sorry, something went wrong.

Uh oh!

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

chatgpt-codex-connector[bot] reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
jaaydenh added 20 commits November 11, 2026 08:20
@jaaydenh
feat(site/src): add the Coder Agents projects page
1384ce5
@jaaydenh
docs(docs/coder-agents): describe the projects page and project pins
21b85bb
@jaaydenh
fix(site/src/pages/AgentsPage): address projects page review findings
7464695
Chain the pin rollback, clean drafts on delete at the mutation level, return focus to New project after a delete, show refetch errors above cached cards, and add menu and phone stories.
@jaaydenh
fix(site/src/pages/AgentsPage/ProjectsPage): keep focus after unpinni…
6246715
…ng and address UAT findings

Unpinning from a card's pin button now moves focus to the card's actions
button instead of dropping it to the page. The actions button collapses at
rest so the pin icon sits in the card's corner, tab changes push history
entries, the load error hides debug details, skeletons match card height,
and only the needs-attention icon uses the warning color so the label keeps
readable contrast.
@jaaydenh
docs(docs/coder-agents): note where new pins go and who member counts…
aa4d94a
… include
@jaaydenh
fix(site/src/pages/AgentsPage/ProjectsPage): keep dialog focus and st…
1b8644f
…eady card controls

- Keep focus in the Edit and Delete dialogs opened from a card's menu:
  the closing menu returned focus to its trigger behind the dialog.
- Drop repeat pin and unpin requests for a project while one runs.
- Put the actions button before the pin button so the pin stays put when
  the actions button appears on hover.
- Activate tabs manually so a mouse click adds one history entry, not two.
@jaaydenh
Merge remote-tracking branch 'origin/jaayden/pinned-projects-move-dia…
52b1b6d
…log' into jaayden/projects-page-wt
@jaaydenh
fix(site/src/pages/AgentsPage/ProjectsPage): keep focus in the dialog…
f05ee2e
… that a card's menu opens with the mouse
@jaaydenh
fix(site/src/pages/AgentsPage/ProjectsPage): hold each project's pend…
979165f
…ing pin and keep card controls in place

- Track pending pins per project: pins queue in one scope, so a guard on
  the latest pin let a repeat for an earlier project through. A card hides
  Pin and shows a spinner while its pin is pending.
- Keep the pin's slot after unpinning, so a second click there does not
  open the actions menu.
- Open the unpin tooltip below the button, inside the card.
- Use the highlight orange for the needs attention icon, which has enough
  contrast in the light theme.
@jaaydenh
refactor(site/src/pages/AgentsPage/ProjectsPage): drop the page's rep…
dc6dea3
…eat pin guard, which the card's hidden Pin item covers
@jaaydenh
chore(docs/coder-agents): move the projects page docs to a separate b…
5ccf6b3
…ranch
@jaaydenh
chore(site/src/pages/AgentsPage/ProjectsPage): move the projects page…
600fb66
… stories to a separate branch
@jaaydenh
fix(site/src/pages/AgentsPage/ProjectsPage): type the pending pin IDs…
53860db
… as strings
@jaaydenh
fix(site/src/pages/AgentsPage/ProjectsPage): roll back failed unpins …
817e87b
…and address review findings

- Restore the summaries cache when an unpin fails, as the sidebar does.
- Narrow pending pin variables with a type guard instead of a cast.
- Move the card's corner actions into their own component and flatten the
  tab body into one panel.
- Assert the pin request instead of rendered state in the page test, and
  keep only the screen-reader member rows in the card's description test.
@jaaydenh
fix(site/src/pages/AgentsPage/ProjectsPage): keep card focus visible …
345c437
…in forced colors and trim test comments
@jaaydenh
chore(site/src/pages/AgentsPage/ProjectsPage): tighten review comments
4b68ecb
@jaaydenh
fix(site/src/pages/AgentsPage/ProjectsPage): open card dialogs after …
b34fdb7
…the menu closes and fix UAT focus issues

Edit and Delete now open their dialog from the menu's onCloseAutoFocus,
so the closing menu can no longer take focus from the dialog's field.
Retry moves focus to New project once the projects load, a fast
double-click on Unpin sends one request, the card link shows the full
project name as its title, and the Unpin tooltip aligns to the card's
edge.
@jaaydenh
test(site/src/pages/AgentsPage/ProjectsPage): cover the unpin double-…
27857a4
…click guard
@jaaydenh
refactor(site/src/pages/AgentsPage/ProjectsPage): destructure own_cha…
f1d37bd
…t_count with the other activity fields
@jaaydenh
test(site/src/pages/AgentsPage/ProjectsPage): cover ordering through …
cadee1b
…the page and the pending pin hold

Test the tab ordering and owner split through the rendered page, which also covers the tab wiring and the user ID, so getProjectsByTab no longer needs a test-only export. Restore coverage that each project's pending pin keeps Pin out of its menu.
@jaaydenh

jaaydenh commented Nov 12, 2026

Copy link
Copy Markdown
Contributor Author

@codex review

All reactions

Sorry, something went wrong.

Uh oh!

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

@github-actions github-actions Bot assigned jaaydenh Nov 12, 2026
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 12, 2026 •
edited
Loading

Uh oh!

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

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

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

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-12T12:50:29.156434Z cadee1b Manual request
ℹ️ 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.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 12, 2026

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep it up!

Reviewed commit: cadee1b3ea

ℹ️ 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".

All reactions

Sorry, something went wrong.

Uh oh!

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

@jaaydenh
jaaydenh added this pull request to stack #32074 November 12, 2026 14:54

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

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

Assignees

@jaaydenh jaaydenh

Labels

None yet

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.

1 participant

@jaaydenh
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.