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): keep project chat list caches in sync by jaaydenh · Pull Request #30292 · coder/coder

Conversation

@jaaydenh

@jaaydenh jaaydenh commented Oct 2, 2026 •
edited
Loading

Uh oh!

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

Copy link
Copy Markdown
Contributor

Adds a project chat list query family (projectChatsKey) next to the sidebar's chat lists, so the project page's chat list stays current.

  • updateInfiniteChatsCache, invalidateChatListQueries, cancelChatListRefetches, cancelChatListQueries, and the archive-state patching cover both families. Project lists only hold unarchived chats, so archived chats are dropped.
  • archiveChat snapshots project lists and restores them when archiving fails.
  • A new project chat invalidates its project list instead of being prepended. Prepending would shift the offset pages and repeat a row on the next page.
  • findChatInListCaches looks a chat up across both families. AgentsPageLayout uses it for the chime's previous status and the archive-and-delete created_at.

The family is kept outside chatListFamilyKey because the sidebar helpers assume sidebar-shaped keys. The query factory that fills these caches lands with its consumer in the chats list PR.


Stack (merge top to bottom). #30377 through #29583 are f0ssel's split of the original #29583, and this stack sits on #29583:

  • feat(site/src): add the chat projects data layer and project dialog #30377 data layer and project dialog (f0ssel)
  • feat: lock the new-chat form to a project's organization #30378 new-chat form locked to a project (f0ssel)
  • feat(site/src): add the chat project page #30379 project page route (f0ssel)
  • feat: add chat project folders to the sidebar #29583 sidebar folders (f0ssel), the base of this stack
  • refactor(site): move the composer layout out of AgentCreateForm #30291 composer frame
  • feat(site): keep project chat list caches in sync #30292 project chat list caches 👈
  • feat(site): redesign the project page header #30293 project page header
  • feat(site): list project chats on the project page #30294 project chats list
  • feat(coderd): add chat project instructions storage and prompt injection #30367 instructions storage and prompt injection
  • feat: add chat project instructions API #30368 instructions API
  • feat(site): add the project instructions editor dialog #30369 instructions editor dialog
  • feat(site): show project instructions in the project page details panel #30370 instructions Details panel

Sorry, something went wrong.

Uh oh!

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

All reactions
f0ssel added 30 commits September 17, 2026 20:52
@f0ssel
feat(site): show the last successful memory consolidation
571a0c8
Summarizes the newest successful consolidation run in one line under
the memory list.
@f0ssel
fix(site): address chat projects UI review findings
217be16
@f0ssel
chore(coderd/x/chatd): format imports
6f1af5c
@f0ssel
Merge branch 'f0ssel/chat-user-memories' into f0ssel/chat-memory-cons…
0c167e8
…olidation
@f0ssel
Merge branch 'f0ssel/chat-memory-consolidation' into f0ssel/chat-proj…
c6d1b37
…ects-ui
@f0ssel
chore(coderd/x/chatd/chattool): format memory test
586ca9d
@f0ssel
Merge branch 'f0ssel/chat-memory-consolidation' into f0ssel/chat-proj…
05f8cf5
…ects-ui
@f0ssel
fix(site): wrap ChatTopBar stories in the dashboard provider
a186494
@f0ssel
feat(site): show chat projects as sidebar folders with a project-fram…
6f3b434
…ed composer
@f0ssel
refactor(site): reduce the chat projects UI to folders, composer, and…
4066d8d
… the memory toggle
@f0ssel
refactor(site): drop the personal memory toggle from the chat project…
c8bb066
…s UI
@f0ssel
fix(coderd): drop chat_count from projects and document the project_i…
2cf4b6c
…d chat filter
@f0ssel
Merge remote-tracking branch 'origin/main' into f0ssel/chat-projects
fd88fa8
# Conflicts:
#	docs/reference/api/schemas.md
@f0ssel
Merge branch 'f0ssel/chat-projects' into f0ssel/chat-project-memories
740d6e8
# Conflicts:
#	coderd/database/db2sdk/db2sdk.go
#	coderd/database/dbauthz/dbauthz.go
#	coderd/database/dbmetrics/querymetrics.go
#	coderd/database/dbmock/dbmock.go
#	coderd/database/modelmethods.go
#	coderd/database/querier.go
#	coderd/database/querier_test.go
#	coderd/database/queries.sql.go
@f0ssel
fix(coderd/x/chatd): harden project memory extraction windows and ret…
7837906
…ries
@f0ssel
fix(coderd/x/chatd): wrap invalid extraction proposals once
de834bf
@f0ssel
Merge branch 'f0ssel/chat-project-memories' into f0ssel/chat-user-mem…
5014966
…ories

# Conflicts:
#	coderd/database/dbauthz/dbauthz.go
#	coderd/database/dbmetrics/querymetrics.go
#	coderd/database/querier.go
#	coderd/database/querier_test.go
#	coderd/database/queries.sql.go
#	coderd/x/chatd/memory_extract_internal_test.go
#	coderd/x/chatd/projectmemory_extract.go
@f0ssel
Merge branch 'f0ssel/chat-user-memories' into f0ssel/chat-memory-cons…
81c608d
…olidation

# Conflicts:
#	coderd/database/dbauthz/dbauthz.go
#	coderd/database/dbmetrics/querymetrics.go
#	coderd/database/querier.go
#	coderd/x/chatd/memory_extract.go
@f0ssel
fix(coderd/x/chatd): lock the scope first and free merge sources befo…
b9c18ac
…re writing the target
@f0ssel
Merge branch 'f0ssel/chat-memory-consolidation' into f0ssel/chat-proj…
8c3ef05
…ects-ui-folders
@f0ssel
fix(site): pin project chats to the project organization and keep unf…
8b2b543
…iled chats visible
@f0ssel
fix(coderd/rbac): make chat projects private to their creator
8b3485d
@f0ssel
feat: add user and group sharing for chat projects
75a5667
@f0ssel
Merge branch 'f0ssel/chat-project-sharing' into f0ssel/chat-project-m…
0408ba5
…emories

Memory permissions now derive from the project owner and ACL, memory tools
and the extractor use scope-neutral names, and the extraction cursor table
is chat_memory_cursors.
@f0ssel
chore: regenerate rbac resource types for chat project memory
00f6b4b
@f0ssel
Merge branch 'f0ssel/chat-project-memories' into f0ssel/chat-memory-c…
7ccb1ec
…onsolidation

Drops personal memory: consolidation now runs only for project memory and
its journal follows the project ACL.
@f0ssel
Merge remote-tracking branch 'origin/f0ssel/chat-memory-consolidation…
1f0b373
…' into f0ssel/chat-projects-ui-folders
@f0ssel
feat(site): share chat projects and drop the personal memory toggle
08a1a50
The chat sharing popover now takes a chat or project target, and the
project page shows a Share control to users who may share it.
@f0ssel
refactor: take project sharing out of the memory stack
49e7232
Sharing (#29597) is parked; memory permissions follow the project owner
only and the memory migration returns to 000599.
@f0ssel
Merge remote-tracking branch 'origin/f0ssel/chat-project-memories' in…
0df0c77
…to f0ssel/chat-memory-consolidation
jaaydenh added 25 commits October 6, 2026 09:45
@jaaydenh
Merge commit 'b184f52e3a' into resolve-ui-page
fa9d811
@jaaydenh
Merge remote-tracking branch 'origin/main' into resolve-ui-page
46fff11
@jaaydenh
Merge remote-tracking branch 'origin/f0ssel/chat-projects-ui-page' in…
6690ae5
…to tmp-folders-resync
@jaaydenh
Merge commit 'b184f52e3ad0037c59b7e9f43b3f121260ea09b0' into tmp-fold…
adba332
…ers-resync
@jaaydenh
Merge remote-tracking branch 'origin/main' into f0ssel/chat-projects-…
70fdc62
…ui-folders
@jaaydenh
Merge remote-tracking branch 'origin/f0ssel/chat-projects-ui-page' in…
40a768e
…to tmp-folders-resync
@jaaydenh
Merge branch 'main' into f0ssel/chat-projects-ui-page
f51614c
@jaaydenh
Merge commit 'f51614c84dbe74937f4a0bbe5009006d3a7c622d' into tmp-fold…
5ea37c0
…ers-resync

# Conflicts:
#	site/src/pages/AgentsPage/components/ChatsSidebar/chats/ChatsPanel.tsx
@jaaydenh
Merge remote-tracking branch 'origin/main' into f0ssel/chat-projects-…
807cde0
…ui-folders
@jaaydenh
fix(site/src/pages/AgentsPage/components/ChatsSidebar): address proje…
5340351
…ct folder review feedback

- Show an empty state when every visible chat is filed in a project.
- Reuse the chat list empty-state copy for empty folders.
- Make the projects loading and error props required.
- Rename ProjectDialogMode to ProjectDialogState.
- Add mock prefixes to new test fixtures.
- Add stories for loading, error, and empty emoji-icon folder states.
@jaaydenh
fix(site/src/pages/AgentsPage/components/ChatsSidebar): show the regu…
8a54253
…lar empty state when every chat is in a project

Project chats live only in their folders, so the Chats section uses its
usual empty-state copy when nothing outside a project remains.
@jaaydenh
fix(site/src/pages/AgentsPage/components/ChatsSidebar): keep project …
e3e118e
…folders open when navigating between projects

A folder that was open because its project was active now stays open
when the user opens a chat in another project. Only an explicit toggle
collapses a folder.
@jaaydenh
feat(site/src/pages/AgentsPage/components/ChatsSidebar): open a new p…
f81af79
…roject's page after creating it
@jaaydenh
chore: accessibility improvements for orgs
9b634dc
@jaaydenh
fix: disambiguate duplicate project names when deleting
a4518ed
@jaaydenh
fix(site/src/pages/AgentsPage/components/ChatsSidebar): scroll projec…
e147257
…t folders with the chat list

The Projects section no longer has its own bounded scroll area. It sits
in the sidebar's scroll area above the Chats section, so expanding a
folder pushes the chats down.
@jaaydenh
Merge branch 'f0ssel/chat-projects-ui-folders' of https://github.com/…
883ac7c
…coder/coder into f0ssel/chat-projects-ui-folders

# Conflicts:
#	site/src/pages/AgentsPage/components/ChatsSidebar/chats/ChatsPanel.tsx
@jaaydenh
fix(site/src/pages/AgentsPage/components/ChatsSidebar): leave a proje…
555a158
…ct's page after deleting it
@jaaydenh
feat(site/src/pages/AgentsPage/components/ChatsSidebar): collapse the…
b7cfcbf
… Projects section
@jaaydenh
test(site/src/pages/AgentsPage/components/ChatsSidebar): address revi…
f621f93
…ew feedback on project deletion and stories
@jaaydenh
fix(site/src/pages/AgentsPage/components/ChatsSidebar): hide the Chat…
456d2d5
…s empty state while projects load

When every chat belongs to a project, those chats are held back until
the project list loads. The Chats section showed "No agents yet" in the
meantime, which falsely told users their chats did not exist.
@jaaydenh
Merge remote-tracking branch 'origin/f0ssel/chat-projects-ui-folders'…
04b3d1a
… into chat-project-page/composer-frame
@jaaydenh
Merge main up to the #29583 squash parent into chat-project-page/comp…
86b0484
…oser-frame
@jaaydenh
Merge remote-tracking branch 'origin/main' into chat-project-page/com…
412dcb3
…poser-frame
@jaaydenh
Merge remote-tracking branch 'origin/chat-project-page/composer-frame…
f76351c
…' into chat-project-page/list-queries

# Conflicts:
#	site/src/pages/AgentsPage/exp/chatBoard/refreshChatList.test.tsx
Base automatically changed from chat-project-page/composer-frame to main October 6, 2026 16:17
jaaydenh added a commit that referenced this pull request Oct 6, 2026
@jaaydenh @f0ssel @claude
refactor(site): move the composer layout out of AgentCreateForm (#30291)
7d1191c
`AgentCreateForm` no longer takes the `header`/`footer` slots added in
#30378, and no longer owns the page wrapper. The centered `max-w-3xl`
wrapper moves into `AgentCreateFormFrame`, which the new-chat page, the
project page, and the board draft wrap around the form. The project page
renders its existing `ProjectComposerHeader` and `ProjectComposerFooter`
(#30379) around the form inside the frame, so nothing changes visually.
The form keeps its `project` prop, per-project drafts, and remount per
project from #30378.

`ChatDiffStats` (from `ChatTreeNode`) and `ProjectActionsMenuItems`
(from `ProjectFolders`) are moved into their own files unchanged so the
redesigned project page can reuse them.

Most of the `AgentCreateForm.tsx` diff is re-indentation; review with
whitespace hidden.

---

Stack (merge top to bottom). #30377 through #29583 are f0ssel's split of
the original #29583, and this stack sits on #29583:
- #30377 data layer and project dialog (f0ssel)
- #30378 new-chat form locked to a project (f0ssel)
- #30379 project page route (f0ssel)
- #29583 sidebar folders (f0ssel), the base of this stack
- #30291 composer frame 👈
- #30292 project chat list caches
- #30293 project page header
- #30294 project chats list
- #30367 instructions storage and prompt injection
- #30368 instructions API
- #30369 instructions editor dialog
- #30370 instructions Details panel

---------

Co-authored-by: Garrett Delfosse <[email protected]>
Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
@jaaydenh
jaaydenh merged commit f32d0b1 into main Oct 6, 2026
31 checks passed

Uh oh!

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

@jaaydenh
jaaydenh deleted the chat-project-page/list-queries branch October 6, 2026 16:18
@github-actions github-actions Bot locked and limited conversation to collaborators Oct 6, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Reviewers

@ThomasK33 ThomasK33 ThomasK33 approved these changes
@jakehwll jakehwll jakehwll approved these changes

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.

4 participants

@jaaydenh @ThomasK33 @jakehwll @f0ssel
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.