feat(ui): collapse scheduled job sessions into accordion in chat history - #11265
Conversation
- Map sessionType from ACP metadata into SessionListItem - Split session list into human-created and scheduled sessions - Render human sessions first with existing date-group pagination - Add collapsible 'Scheduled Jobs' accordion at the bottom of the list - When searching, show all sessions normally without the accordion split - Add i18n strings for scheduled jobs label and count
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b03fd5fc62
ℹ️ About Codex in GitHub
Codex has been enabled to automatically 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 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| {isScheduledExpanded && ( | ||
| <div className="space-y-8"> | ||
| {memoizedScheduledDateGroups.map((group) => ( |
There was a problem hiding this comment.
Keep scheduled runs from blocking older human sessions
When the history spans more than the initial 15 human date groups and this accordion is expanded, this branch renders every scheduled group after only those 15 groups. Because handleScroll adds further human groups only when the viewport is within 200px of the absolute bottom, users must scroll through the entire scheduled history before older human conversations are loaded, which defeats the purpose of keeping scheduled runs out of their way. Load the remaining human groups independently or place the expanded content where it cannot gate the human-history pagination.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Fixed in b56f75e. The scheduled accordion is now rendered only after every human date group is visible, so expanded scheduled history cannot block pagination to older human sessions.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b56f75ef8b
ℹ️ 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".
| <button | ||
| onClick={() => setIsScheduledExpanded((v) => !v)} | ||
| className="sticky top-0 z-10 w-full flex items-center justify-between bg-background-primary/95 backdrop-blur-sm py-2 px-1 rounded-lg hover:bg-background-secondary transition-colors cursor-pointer" |
There was a problem hiding this comment.
Expose the accordion state to assistive technology
For screen-reader users, expanding this disclosure leaves the button's accessible name unchanged and exposes no expanded/collapsed state, so they cannot determine whether the scheduled sessions are currently visible. Add an aria-expanded value tied to isScheduledExpanded (and preferably aria-controls targeting the collapsible region).
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Fixed in the latest push. The disclosure button now exposes aria-expanded and references the collapsible region through aria-controls.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3838283fe8
ℹ️ 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".
| "defaultMessage": "Scheduled Jobs" | ||
| }, | ||
| "sessions.scheduledJobsCount": { | ||
| "defaultMessage": "{count,plural,one{{count} job} other{{count} jobs}}" |
There was a problem hiding this comment.
Translate the scheduled-session labels
For every non-English catalog changed here (de, es, fr, hi, id, it, ja, ko, ms, pt, ru, tr, vi, zh-CN, and zh-TW), both new messages are copied verbatim from English. Users selecting any of these supported locales therefore see an English accordion label and count amid the translated chat-history UI; languages such as Russian also lose their required plural categories. Supply locale-appropriate labels and plural forms instead of duplicating the English messages.
Useful? React with 👍 / 👎.
* origin/main: (50 commits) chore(deps): bump the ui-minor-and-patch group across 1 directory with 53 updates (#11386) fix(security): bound call graph traversal (#11193) fix: pin arrayref to known-good commit (#11389) feat(providers): add SayGM as declarative OpenAI-compatible provider (#11267) feat(providers): custom provider cost fields drive cost tracking (config-declared pricing fallback) (#11220) fix(deps): repair dangling syn reference in Cargo.lock (#11385) fix(flake): add cudaforge hash for git dependency (#10910) feat: auto-focus chat input when user starts typing (#11184) fix(security): fail closed on invalid Codex ACP mode (#11362) fix(mcp): keep stdio extensions alive across worker exits (#10364) feat(ui): collapse scheduled job sessions into accordion in chat history (#11265) fix: bound retry command diagnostics (#11365) Disable thinking for tool call labels (#11207) fix(review): contain REVIEW.md discovery (#11367) fix(acp): preserve tool result audience metadata (#11375) test(providers): isolate environment-proxy test in its own binary (#11262) fix(security): bind Foundry API keys to request origin (#11347) fix: canonicalize mangled tool names before permission inspection (follow-up to #10230) (#10285) feat(providers): add Lynkr as a declarative OpenAI-compatible provider (#11372) fix: sanitize Pi imported output (#10990) ... # Conflicts: # crates/goose/src/agents/state_machine/tests/hooks_lifecycle.rs
* origin/main: (59 commits) chore(deps): bump the ui-minor-and-patch group across 1 directory with 53 updates (#11386) fix(security): bound call graph traversal (#11193) fix: pin arrayref to known-good commit (#11389) feat(providers): add SayGM as declarative OpenAI-compatible provider (#11267) feat(providers): custom provider cost fields drive cost tracking (config-declared pricing fallback) (#11220) fix(deps): repair dangling syn reference in Cargo.lock (#11385) fix(flake): add cudaforge hash for git dependency (#10910) feat: auto-focus chat input when user starts typing (#11184) fix(security): fail closed on invalid Codex ACP mode (#11362) fix(mcp): keep stdio extensions alive across worker exits (#10364) feat(ui): collapse scheduled job sessions into accordion in chat history (#11265) fix: bound retry command diagnostics (#11365) Disable thinking for tool call labels (#11207) fix(review): contain REVIEW.md discovery (#11367) fix(acp): preserve tool result audience metadata (#11375) test(providers): isolate environment-proxy test in its own binary (#11262) fix(security): bind Foundry API keys to request origin (#11347) fix: canonicalize mangled tool names before permission inspection (follow-up to #10230) (#10285) feat(providers): add Lynkr as a declarative OpenAI-compatible provider (#11372) fix: sanitize Pi imported output (#10990) ...
Summary
This PR groups scheduled job chats into a collapsible accordion at the bottom of the chat history list, making it easier to find human-created conversations.
Part of #10961 (consolidating #10530 and #10697).
Changes
sessionTypefrom ACP metadata is now exposed onSessionListItemsessions.scheduledJobsandsessions.scheduledJobsCountmessage keysWhy
Scheduled jobs can create many chat sessions over time. Without grouping, they push human-created chats down the list and make them harder to locate. The accordion keeps human chats prominent while keeping scheduled sessions accessible.
Testing
pnpm i18n:check