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): add the chat projects and memory UI (experiment) by f0ssel · Pull Request #29405 · coder/coder

Conversation

@f0ssel

@f0ssel f0ssel commented Sep 16, 2026 •
edited
Loading

Uh oh!

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

Copy link
Copy Markdown
Member

Note

Superseded by #29583, which carries the minimal folder-based UI for this stack.

Warning

Experiment, work in progress. Stacked on #29297 (consolidation) -> #29291 (personal memory) -> #29301 (project memory) -> #29242 (chat projects). Behind the chat-projects experiment, off by default. Not ready for review.

All frontend for the chat projects and memory stack. The four PRs beneath this one are backend only (plus generated TypeScript types).

  • Projects: Projects sidebar section with create, edit, and delete gated on the authcheck result for the project's organization and creator; project page at /agents/projects/:projectId; new chat in project; Move to project from the chat menu.
  • Project memory: memory list on the project page. Rows show the name until expanded, then the description, body, and edit and delete controls.
  • Personal memory: /agents/settings/memory with the personal memory toggle and the per-organization memory list. The memory components serve both scopes.
  • Consolidation: one-line summary of the newest successful consolidation run under the memory list.

Behavior is covered by Vitest; no Storybook stories are added.

Screenshots

Feature screenshots are on the backend PRs (#29242, #29301, #29291, #29297). These cover UI states specific to this PR.

Member sees no project actions on a project another user created
Member

Admin sees Edit and Delete
Admin

Projects fail to load: compact error with Retry
Load error

Project page paginates chats with Load more
Load more

Project lookup fails on /agents?project=...: chat creation blocked
Blocked

Memory description is required
Validation


Generated with Coder Agents on behalf of @f0ssel.

Sorry, something went wrong.

Uh oh!

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

All reactions
@f0ssel f0ssel added the experimental Changes that might not necessarily be merged, until its approved to proceed with. label Sep 16, 2026
@github-actions github-actions Bot assigned f0ssel Sep 16, 2026
This was referenced Sep 16, 2026
feat: add chat projects API #29242
Merged
feat: add shared project memory API for chats in a project #29301
Merged
feat: add personal chat memory for chats outside a project (experiment) #29291
Closed
feat: consolidate chat memories with caps (experiment) #29297
Closed
@linear-code

linear-code Bot commented Sep 16, 2026

Copy link
Copy Markdown

CODAGT-1041

All reactions

Sorry, something went wrong.

Uh oh!

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

@f0ssel
f0ssel force-pushed the f0ssel/chat-memory-consolidation branch from 97427a1 to 02e868b Compare September 16, 2026 15:39
@f0ssel
f0ssel force-pushed the f0ssel/chat-projects-ui branch from a570d03 to 76e31de Compare September 16, 2026 15:39
@f0ssel
f0ssel force-pushed the f0ssel/chat-memory-consolidation branch from 02e868b to 51ababa Compare September 17, 2026 16:45
@f0ssel
f0ssel force-pushed the f0ssel/chat-projects-ui branch from 76e31de to 3181dc6 Compare September 17, 2026 16:46
@f0ssel

f0ssel commented Sep 17, 2026

Copy link
Copy Markdown
Member Author

@codex review

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 Sep 17, 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-17T18:45:43.002572Z 3181dc6 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[bot]
chatgpt-codex-connector Bot reviewed Sep 17, 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: 3181dc6e09

ℹ️ 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/ChatsSidebar/chats/ChatsPanel.tsx Outdated
Comment on lines +574 to +583
{onOpenProjectDialog && onDeleteProject && (
<ProjectsSection
projects={projects}
projectPermissions={projectPermissions}
expanded={!collapsedSections.Projects}
onToggle={() => toggleSection("Projects")}
onCreate={() => onOpenProjectDialog(null)}
onEdit={onOpenProjectDialog}
onDelete={onDeleteProject}
/>

@chatgpt-codex-connector chatgpt-codex-connector Bot Sep 17, 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 Render projects when the chat list is empty

Because ProjectsSection is inside the non-empty branch of isShowingEmptyState, a new user with no chats, or a user whose filters match no chats, cannot see existing projects or the New project button. Move the projects UI outside the chat-empty conditional so project access does not depend on visible chat rows.

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

Useful? React with 👍 / 👎.

Sorry, something went wrong.

Uh oh!

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

All reactions
Comment thread site/src/pages/AgentsPage/AgentCreatePage.tsx
Comment on lines 95 to +97
...(model ? { model_config_id: model } : {}),
...(reasoningEffort ? { reasoning_effort: reasoningEffort } : {}),
...(selectedProject ? { project_id: selectedProject.id } : {}),

@chatgpt-codex-connector chatgpt-codex-connector Bot Sep 17, 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 Block chat creation until the project lookup completes

When /agents?project=... loads slowly or fails with a non-404 error, the form remains usable while selectedProject is undefined, so submitting silently creates an ordinary chat in the form-selected organization without project_id. Disable creation while the requested project is loading and surface lookup failures rather than falling back to an unscoped chat.

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

Useful? React with 👍 / 👎.

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/ChatsSidebar/ChatsSidebar.tsx Outdated
Comment on lines +110 to +111
const defaultOrganizationId =
organizations.find((organization) => organization.is_default)?.id ?? "";

@chatgpt-codex-connector chatgpt-codex-connector Bot Sep 17, 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 Fall back to an organization the user can access

For users who are not members of the deployment's default organization, none of the accessible organizations has is_default, so this becomes an empty ID: the projects query is disabled and New project submits organization_id: "", which the API rejects. The existing agents layout explicitly handles this case by falling back to organizations[0]; the project sidebar needs the same fallback or an organization selector.

Useful? React with 👍 / 👎.

Sorry, something went wrong.

Uh oh!

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

All reactions
Comment thread site/src/pages/AgentsPage/AgentProjectPage.tsx
Comment on lines +38 to +42
const chatsQuery = useInfiniteQuery({
...infiniteChats({ projectId }),
enabled: experiments.includes("chat-projects") && Boolean(projectId),
});
const chats = chatsQuery.data?.pages.flat() ?? [];

@chatgpt-codex-connector chatgpt-codex-connector Bot Sep 17, 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.

P2 Badge Wire pagination for the project chat list

infiniteChats fetches 50 chats per page, but this page only flattens pages already fetched and never calls fetchNextPage or renders a load-more sentinel. Consequently, projects containing more than 50 accessible root chats permanently omit every chat after the first page.

Useful? React with 👍 / 👎.

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/ChatsSidebar/ChatsSidebar.tsx
Comment on lines +114 to +118
const projectsQuery = useQuery({
...chatProjects(defaultOrganizationId),
enabled: chatProjectsEnabled && Boolean(defaultOrganizationId),
});
const projects = chatProjectsEnabled ? (projectsQuery.data ?? []) : [];

@chatgpt-codex-connector chatgpt-codex-connector Bot Sep 17, 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.

P2 Badge Surface failures from the projects query

When the projects request fails, data ?? [] converts the failure into an empty project list and no error is passed to ChatsPanel, so users see Projects (0) and may attempt to create duplicates without any indication that loading failed. Preserve and render projectsQuery.error, ideally with a retry action, instead of treating an error as a successful empty response.

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

Useful? React with 👍 / 👎.

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/MemoryDialog.tsx
Comment on lines +46 to +48
const isNameValid = memoryNamePattern.test(name);
const isDescriptionValid = description.length <= 150;
const isBodyValid = new TextEncoder().encode(body).length <= 8192;

@chatgpt-codex-connector chatgpt-codex-connector Bot Sep 17, 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.

P2 Badge Require a nonblank memory description

The server normalizes the description and rejects it when empty, but this validator considers an empty or whitespace-only description valid, enabling Save and sending a request guaranteed to return 400. Include a nonblank check here and present it as field validation so both create and edit dialogs match the API contract.

Useful? React with 👍 / 👎.

Sorry, something went wrong.

Uh oh!

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

All reactions
Comment thread site/src/pages/AgentsPage/AgentProjectPage.test.tsx Outdated
Comment on lines +94 to +97
expect(
screen.queryByRole("button", { name: "Edit" }),
).not.toBeInTheDocument();
expect(screen.getByRole("link", { name: "New chat" })).toBeInTheDocument();

@chatgpt-codex-connector chatgpt-codex-connector Bot Sep 17, 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 Replace DOM-presence assertions with behavior coverage

These assertions make DOM presence the test outcome, which FE1 explicitly reserves for Storybook visual coverage. Keep the auth request assertion as the Vitest behavior check and cover the permitted and denied rendered states in stories instead of using toBeInTheDocument.

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
f0ssel added 5 commits September 17, 2026 20:52
@f0ssel
feat(site): add chat projects to the agents UI
caca5e8
Sidebar project list with create, edit, and delete gated on the
authcheck result, a project page at /agents/projects/:projectId, new
chat in project, and move-to-project from the chat menu. Behind the
chat-projects experiment.
@f0ssel
feat(site): manage project memories from the project page
45728ee
Collapsed memory rows expand to show the description, body, and edit
and delete controls. Delete failures surface an error alert.
@f0ssel
feat(site): add personal memory settings and generalize the memory UI
346d09f
Adds /agents/settings/memory with the personal memory toggle and the
per-organization memory list, and generalizes the project memory
components to serve both scopes.
@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
f0ssel force-pushed the f0ssel/chat-memory-consolidation branch from 51ababa to 3f85d61 Compare September 17, 2026 20:58
@f0ssel
f0ssel force-pushed the f0ssel/chat-projects-ui branch from 3181dc6 to 217be16 Compare September 17, 2026 20:59
f0ssel added 3 commits September 18, 2026 18:10
@f0ssel
Merge branch 'f0ssel/chat-memory-consolidation' into f0ssel/chat-proj…
c6d1b37
…ects-ui
@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 f0ssel mentioned this pull request Sep 18, 2026
feat: add chat project folders to the sidebar #29583
Merged
@f0ssel f0ssel closed this Sep 18, 2026
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 18, 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
@DanielleMaywood DanielleMaywood Awaiting requested review from DanielleMaywood DanielleMaywood will be requested when the pull request is marked ready for review DanielleMaywood is a code owner

Uh oh!

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

Assignees

@f0ssel f0ssel

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.

1 participant

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