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: add chat project folders to the sidebar by f0ssel · Pull Request #29583 · coder/coder

Conversation

@f0ssel

@f0ssel f0ssel commented Sep 18, 2026 •
edited
Loading

Uh oh!

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

Copy link
Copy Markdown
Member
  • Experiment (chat-projects). Top of a four-PR stack: feat(site/src): add the chat projects data layer and project dialog #30377 (data layer and project dialog) → feat: lock the new-chat form to a project's organization #30378 (form organization lock) → feat(site/src): add the chat project page #30379 (project page) → this PR (sidebar).
  • Review only the sidebar diff: f0ssel/chat-projects-ui-page...f0ssel/chat-projects-ui-folders (11 files). GitHub can't retarget this PR onto feat(site/src): add the chat project page #30379 because refactor(site): move the composer layout out of AgentCreateForm #30291 is stacked on it, so the PR view shows the whole stack against main until the lower PRs merge.
  • Sidebar: a Projects section above Chats lists the user's projects from every organization; new projects are created in the default organization, and an empty list says "No projects yet". An owned, unpinned chat in a project lives in its folder instead of the date sections. Folder menu: New chat, Edit project, Delete project.
  • Chats join a project only at creation; there is no move. Memory has no UI.
Screenshots (taken before the Oct 5 review changes)

Sidebar folders
Folder menu

Review history

The Sep 30 review threads, and where each was addressed (commit d9082fdf7c):

Thread Change
AgentCreatePage JSDoc Removed (now in #30379)
ChatsSidebar dialog trigger ref, document.activeElement, requestAnimationFrame; ProjectFolders refs Removed. Dialogs no longer restore focus by hand; the block is regrouped into state, create/edit and delete
rowMenuEvents.ts indirection; ChatTreeNode change File deleted, ChatTreeNode matches main, the guards are inline in ProjectFolders
projectChats story fixture Renamed mockProjectChats
resolveOrganization readability Split into blank-line-separated steps, nested ternary replaced with if/else (now in #30378)
ProjectComposerHeader vs footer location The footer moved to its own ProjectComposerFooter.tsx next to the header (#30379)

Also fixed from the Sep 23 review and a re-audit of all of it: a finished project delete no longer closes a newer delete dialog (regression test added); the project-specific denial copy shows only when chats are otherwise allowed; the sidebar lists the API's projects without refiltering by owner; stale comments and fixture organizations are corrected. The work is split into four PRs to address the size finding.


Generated with Coder Agents on behalf of @f0ssel.

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
f0ssel added 17 commits September 17, 2026 20:20
@f0ssel
fix(coderd/x/chatd): scope memory guidance to personal or project memory
ef732cd
Personal memory reused the project guidance, so the model was told to
save project people, decisions, deadlines, and links into a scope the
intro said was personal. Guidance now follows the memory scope.

Also drops the memory Storybook stories in favor of Vitest coverage of
the loading and error states.
@f0ssel
feat(coderd/x/chatd): move the memory index into read_memory and cons…
9b46b93
…olidate memories in the background

The system prompt keeps only the memory guidance so it stays stable across
turns; the read_memory tool description carries the current index. After
extraction, a detached consolidation pass merges duplicates and prunes
superseded memories under strict caps (8 mutations, 24h debounce, per
scope advisory lock, fresh memories protected) and records each run in
chat_memory_consolidations, pruned to the newest 20 per scope.
@f0ssel
test(coderd/x/chatd): cover memory consolidation paths; show last con…
08830fc
…solidation in the memory section

Adds mock-based tests for the consolidation debounce, lock, cap, protect
window, journaling, pruning, and failure paths, and surfaces the newest
successful consolidation as a one-line summary under the memory list.
@f0ssel
fix(coderd/x/chatd): guard memory consolidation
3282244
@f0ssel
fix(coderd/x/chatd): harden consolidation and decouple it from extrac…
3f85d61
…tion tests

Revalidation now reads rows FOR UPDATE inside the apply transaction so an
edit committed after the reread cannot be overwritten. Candidates are the
unprotected memories oldest first, so the input cap trims recent entries
rather than the stale duplicates consolidation exists to remove. At the
cap only a run that shrank the scope bypasses the debounce. Journal
mutations are always an array.

Extraction tests use an afterMemoryExtraction seam instead of spawning
consolidation goroutines against strict mocks.
@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
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
@github-actions github-actions Bot assigned f0ssel Sep 18, 2026
f0ssel added 2 commits September 18, 2026 18:38
@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 f0ssel changed the title feat(site): show chat projects as sidebar folders with a project-framed composer (experiment) feat(site): add the chat projects UI (experiment) Sep 18, 2026
@f0ssel
f0ssel changed the base branch from f0ssel/chat-projects-ui to f0ssel/chat-memory-consolidation September 18, 2026 18:53
This was referenced Sep 18, 2026
feat(site): add the chat projects and memory UI (experiment) #29405
Closed
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
@f0ssel f0ssel added the experimental Changes that might not necessarily be merged, until its approved to proceed with. label Sep 18, 2026
@f0ssel

f0ssel commented Sep 18, 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 18, 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-10-06T14:05:37.606062Z 456d2d5 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 Oct 6, 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

coder/site/src/pages/AgentsPage/components/ChatsSidebar/chats/ChatsPanel.tsx

Line 408 in 807cde0

const isShowingEmptyState = visibleRootIDs.length === 0;

P2 Badge Render an empty state when all chats are filed

When every visible root chat is an unpinned owned chat assigned to a loaded project, grouping removes all of them from chatSections, but this check remains false because visibleRootIDs still contains those chats. With no pinned or shared chats, the Chats section consequently renders as a blank region beneath its heading. Base the empty state on the buckets actually rendered in that section, or omit the section deliberately.

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

ℹ️ 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/ChatsSidebar.tsx Resolved

Uh oh!

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

Comment thread site/src/pages/AgentsPage/components/ChatsSidebar/chats/ProjectFolders.tsx Resolved

Uh oh!

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

@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

jaaydenh commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

@codex review

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 Oct 6, 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: 5340351421

ℹ️ 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/ProjectFolders.tsx Resolved

Uh oh!

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

jaaydenh added 2 commits October 6, 2026 12:27
@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
jaaydenh requested review from DanielleMaywood and ibetitsmike October 6, 2026 12:52
jaaydenh added 2 commits October 6, 2026 12:53
@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

jaaydenh commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

@codex review

All reactions

Sorry, something went wrong.

Uh oh!

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

jaaydenh added 2 commits October 6, 2026 13:07
@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.
chatgpt-codex-connector[bot]
chatgpt-codex-connector Bot reviewed Oct 6, 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: 9b634dc727

ℹ️ 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 Resolved

Uh oh!

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

Comment thread site/src/pages/AgentsPage/components/ChatsSidebar/chats/ProjectFolders.tsx Resolved

Uh oh!

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

Comment thread site/src/pages/AgentsPage/components/ChatsSidebar/ChatsSidebar.tsx Resolved

Uh oh!

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

jaaydenh added 3 commits October 6, 2026 13:12
@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

jaaydenh commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

@codex review

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 Oct 6, 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: b7cfcbf11a

ℹ️ 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/ChatsSidebar.tsx Resolved

Uh oh!

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

Comment thread site/src/pages/AgentsPage/components/ChatsSidebar/ChatsSidebar.stories.tsx Resolved

Uh oh!

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

@jaaydenh
test(site/src/pages/AgentsPage/components/ChatsSidebar): address revi…
f621f93
…ew feedback on project deletion and stories
@jaaydenh

jaaydenh commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

@codex review

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 Oct 6, 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: f621f93a88

ℹ️ 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 Resolved

Uh oh!

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

Comment thread site/src/pages/AgentsPage/components/ChatsSidebar/chats/ProjectFolders.tsx Resolved

Uh oh!

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

@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

jaaydenh commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

@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 Oct 6, 2026

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 🎉

Reviewed commit: 456d2d526b

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

@f0ssel f0ssel mentioned this pull request Oct 6, 2026
feat: share chat projects with users, groups, and organizations #30431
Closed
DanielleMaywood
DanielleMaywood approved these changes Oct 6, 2026
View reviewed changes

@DanielleMaywood DanielleMaywood left a comment

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.

I think we need to start doing some code cleanup of areas this touches. They are getting too large and complex

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/sidebarView.ts
Comment on lines 10 to 17
if (settingsMatch) {
return { panel: "settings", section: settingsMatch[1] };
}
const projectMatch = pathname.match(/^\/agents\/projects\/([^/]+)/);
if (projectMatch) {
return { panel: "chats", projectId: projectMatch[1] };
}
return { panel: "chats" };

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

We so need to do this differently (pre-existing, non-blocking)

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 +345 to +354
isSubmitting={
projectDialog.mode === "edit"
? updateProjectMutation.isPending
: createProjectMutation.isPending
}
error={
projectDialog.mode === "edit"
? updateProjectMutation.error
: createProjectMutation.error
}

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

kinda interesting, not sure what is happening here

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
readonly currentUserId: string;
};

export const ChatsPanel: React.FC<ChatsPanelProps> = ({

@DanielleMaywood DanielleMaywood 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 component is now too complex, we need to split it up better.

Sorry, something went wrong.

Uh oh!

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

All reactions
@jaaydenh
jaaydenh merged commit ee63db3 into main Oct 6, 2026
27 checks passed

Uh oh!

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

@jaaydenh
jaaydenh deleted the f0ssel/chat-projects-ui-folders branch October 6, 2026 15:57
@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

@chatgpt-codex-connector chatgpt-codex-connector[bot] chatgpt-codex-connector[bot] left review comments
@DanielleMaywood DanielleMaywood DanielleMaywood approved these changes
@jaaydenh jaaydenh Awaiting requested review from jaaydenh
@ibetitsmike ibetitsmike Awaiting requested review from ibetitsmike

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.

4 participants

@f0ssel @jaaydenh @DanielleMaywood @ibetitsmike
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.