Skip to content

🤖 feat: add full-width chat transcript setting#3350

Open
ibetitsmike wants to merge 3 commits into
mainfrom
mike/chat-transcript-full-width
Open

🤖 feat: add full-width chat transcript setting#3350
ibetitsmike wants to merge 3 commits into
mainfrom
mike/chat-transcript-full-width

Conversation

@ibetitsmike
Copy link
Copy Markdown
Contributor

@ibetitsmike ibetitsmike commented May 21, 2026

Mux is acting on Mike's behalf.

Summary

Adds an appearance setting that lets users expand chat transcripts to the full chat pane width instead of the default readable column.

Implementation

  • Persists chatTranscriptFullWidth in app config only when enabled.
  • Mirrors the last known backend value in persisted UI state so ChatPane avoids a narrow-width flash on mount or API reconnect.
  • Exposes config.updateChatTranscriptFullWidth and returns the effective boolean from config.getConfig.
  • Adds a settings toggle and a ChatPane hook that follows config changes.
  • Lets collapsed bash intent summaries use extra horizontal room in wide transcript layouts while preserving the current intent-only summary mode setting.
  • Updates Storybook ORPC mocks and config, router, settings, hook, and tool summary tests.

Validation

  • bun test src/browser/hooks/useChatTranscriptFullWidth.test.tsx src/browser/features/Settings/Sections/GeneralSection.test.tsx src/browser/features/Tools/bashCollapsedSummary.test.ts src/browser/stores/GitStatusStore.test.ts src/common/config/schemas/appConfigOnDisk.test.ts src/node/config.test.ts src/node/orpc/router.test.ts
  • MUX_ESLINT_CONCURRENCY=2 make static-check
  • make test
  • Browser sandbox smoke test with screenshots for default width, enabled setting, and full-width transcript layout.

Review notes

  • The input remains at the default readable width because the setting intentionally scopes to the transcript reading area.
  • Chromatic has expected UI baseline changes for the wider transcript layout and collapsed bash summary row.

Generated with mux • Model: openai:gpt-5.5 • Thinking: xhigh • Cost: $97.01

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

/coder-agents-review

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

@codex review

Mux is acting on Mike's behalf.

@chatgpt-codex-connector
Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Hooray!

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

Copy link
Copy Markdown

@coder-agents-review coder-agents-review Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clean, well-scoped single-feature PR. The vertical slice is tight: schema, config persistence, router handler, API definition, types, hook, component integration, settings UI, Storybook mock, and four test files all in agreement. The "only persist when enabled" serialization is a good choice. Tests are genuine: schema validation rejects string coercion, config tests inspect raw JSON for key presence, router test does a full enable/disable round-trip.

4 P3, 6 nits, 1 note below.

The P3s cluster around the hook and the width scope. DEREM-5 (state reset on disconnect) is the most actionable: one-line fix, real visual flash. DEREM-3 (input/transcript width mismatch) is a design call; the setting name scopes to "transcript" but the visual step-down may surprise users. DEREM-4 (mount flash from async init) follows the established pattern but affects a more prominent layout region than existing hooks.

Duplication (Robin flagged hook + GeneralSection + API schema copies) is real but pre-existing. The extraction would touch 5+ files outside this PR. Downgraded to P4 and not posted.

Process note: The agent replicated the structure of useProvidersConfig (the one sibling without tests) rather than useRouting or useContextSwitchWarning (which have dedicated test files). Something to watch in future PRs.

"This creates a full-width to narrow to full-width flash during reconnection." (Zoro)


src/browser/components/ChatPane/ChatPane.tsx:1226

Note [DEREM-14] TranscriptOnlyNoticePane also keeps max-w-4xl when full-width is enabled. Lower impact since transcript-only workspaces are a niche state, but if DEREM-3 is addressed, this should follow. (Nami)

🤖

🤖 This review was automatically generated with Coder Agents.

Comment thread src/browser/hooks/useChatTranscriptFullWidth.ts Outdated
Comment thread src/browser/components/ChatPane/ChatPane.tsx
Comment thread src/browser/hooks/useChatTranscriptFullWidth.ts Outdated
Comment thread src/browser/hooks/useChatTranscriptFullWidth.ts
Comment thread src/browser/hooks/useChatTranscriptFullWidth.ts
Comment thread src/common/orpc/schemas/api.ts
Comment thread src/browser/hooks/useChatTranscriptFullWidth.ts
Comment thread src/browser/hooks/useChatTranscriptFullWidth.ts
Comment thread src/browser/hooks/useChatTranscriptFullWidth.ts
Comment thread src/browser/hooks/useChatTranscriptFullWidth.ts Outdated
@ibetitsmike ibetitsmike force-pushed the mike/chat-transcript-full-width branch from 8969579 to e56b428 Compare May 21, 2026 12:26
@ibetitsmike
Copy link
Copy Markdown
Contributor Author

Mux is acting on Mike's behalf.

coder-agents-review responses:

  • DEREM-1: Added useChatTranscriptFullWidth.test.tsx coverage for cached initial render, subscription setup, iterator cleanup, stale fetch rejection, and unavailable config API behavior.
  • DEREM-3: Leaving the input at the readable width intentionally. The setting is scoped to the transcript reading area, and I added this to the PR review notes.
  • DEREM-4: Added a persisted UI-state mirror for the last known backend value so ChatPane can initialize without a narrow-width flash.
  • DEREM-5: Removed the fallback reset to false when the config API is unavailable, preserving the last known value through reconnects.
  • DEREM-8: Simplified the subscription catch comment.
  • DEREM-9: Updated the Storybook mock option comment to describe a boolean toggle.
  • DEREM-10: Renamed the schema test to use the full-width wording.
  • DEREM-11: Added a shared boolean toggle endpoint schema for the repeated config mutations.
  • DEREM-12: Added JSDoc for the exported hook.
  • DEREM-13: Clarified the config fetch failure comment.
  • DEREM-2: Leaving the broader config-subscription extraction out of scope for this PR.
  • DEREM-18: Addressed by adding direct hook coverage.

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

/coder-agents-review

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

@codex review

Mux is acting on Mike's behalf.

@chatgpt-codex-connector
Copy link
Copy Markdown

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

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

Copy link
Copy Markdown

@coder-agents-review coder-agents-review Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

R1 findings addressed thoroughly. All 11 fixes verified against the code: test coverage added (DEREM-1), persisted state mirror prevents mount flash (DEREM-4), state preserved through disconnect (DEREM-5), nits corrected (DEREM-8-13), BooleanToggleEndpoint extraction de-duplicates schemas (DEREM-11).

DEREM-3 (transcript full-width but input stays narrow) was contested by the author and evaluated by the full panel. 8/8 reviewers accept the defense. The setting name and description scope explicitly to the transcript. Narrow input below wide reading area is a standard chat UI pattern (Claude, ChatGPT). Finding closed.

1 P2, 3 nits below. The P2 is a fix regression: the DEREM-8 fix replaced a verbose comment with a misleading one that could recreate the exact bug DEREM-5 was about.

The test infrastructure is well done. The createDeferred/createConfigEventStream helpers give tests deterministic control over async resolution order without wall-clock timing. The stale-fetch test in particular is a good model for testing version-nonce mechanisms.

"A maintainer reading this could add setSyncedValue(false) in the catch to 'ensure' the fallback, breaking graceful degradation for users who had full-width enabled during a transient API failure." (Gon)

🤖 This review was automatically generated with Coder Agents.

Comment thread src/browser/hooks/useChatTranscriptFullWidth.ts Outdated
Comment thread src/browser/hooks/useChatTranscriptFullWidth.test.tsx Outdated
Comment thread src/browser/hooks/useChatTranscriptFullWidth.ts Outdated
Comment thread src/common/orpc/schemas/api.ts Outdated
@ibetitsmike ibetitsmike force-pushed the mike/chat-transcript-full-width branch from e56b428 to 7abde90 Compare May 21, 2026 13:04
@ibetitsmike
Copy link
Copy Markdown
Contributor Author

Mux is acting on Mike's behalf.

coder-agents-review follow-up responses:

  • DEREM-19: Updated the catch comment to say the current preference is kept on failure.
  • DEREM-20: Replaced the hand-rolled deferred helper with Promise.withResolvers.
  • DEREM-21: Simplified the hook JSDoc to focus on the local cache purpose.
  • DEREM-22: Renamed the shared route definition to booleanToggleRoute.

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

/coder-agents-review

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

@codex review

Mux is acting on Mike's behalf.

@chatgpt-codex-connector
Copy link
Copy Markdown

Codex Review: Didn't find any major issues. More of your lovely PRs please.

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

Copy link
Copy Markdown

@coder-agents-review coder-agents-review Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All prior findings resolved. R2 fixes verified by Netero and the full panel: catch comment now accurately describes behavior (DEREM-19), Promise.withResolvers replaces hand-rolled deferred (DEREM-20), JSDoc focuses on the non-obvious cache rationale (DEREM-21), and booleanToggleRoute follows camelCase convention (DEREM-22).

1 nit below. Otherwise clean.

Three rounds, 25 findings tracked. 15 fixed by author, 1 contested and closed by panel (8/8), 2 acknowledged, 7 dropped by orchestrator. The author addressed every actionable finding, including generalizing DEREM-11's fix to both endpoints and synthesizing test patterns from multiple siblings rather than copying the untested one. Well-executed feature addition.

"That test would catch a real bug if someone broke the fetchVersion guard." (Bisky on the stale-fetch race test)

🤖 This review was automatically generated with Coder Agents.

Comment thread src/browser/hooks/useChatTranscriptFullWidth.test.tsx Outdated
@ibetitsmike ibetitsmike force-pushed the mike/chat-transcript-full-width branch from 7abde90 to bcef17d Compare May 21, 2026 13:39
@ibetitsmike
Copy link
Copy Markdown
Contributor Author

Mux is acting on Mike's behalf.

coder-agents-review follow-up response:

  • DEREM-25: Changed the React import in useChatTranscriptFullWidth.test.tsx to a type-only import.

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

/coder-agents-review

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

@codex review

Mux is acting on Mike's behalf.

@chatgpt-codex-connector
Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Delightful!

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

Copy link
Copy Markdown

@coder-agents-review coder-agents-review Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DEREM-25 fix verified (import type React). No new findings from Netero or the panel. All 25 findings across four rounds resolved: 16 fixed by author, 1 contested and closed by panel (8/8), 2 acknowledged, 7 dropped by orchestrator. Clean.

🤖 This review was automatically generated with Coder Agents.

@ibetitsmike ibetitsmike force-pushed the mike/chat-transcript-full-width branch from bcef17d to 8e6821e Compare May 21, 2026 14:25
@ibetitsmike
Copy link
Copy Markdown
Contributor Author

/coder-agents-review

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

@codex review

Mux is acting on Mike's behalf.

@chatgpt-codex-connector
Copy link
Copy Markdown

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

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

Copy link
Copy Markdown

@coder-agents-review coder-agents-review Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New work in this round: BashToolCall.tsx responsive layout (removes fixed max-widths, adds flex and @container(min-width:900px) breakpoint calibrated to the 896px readable column width), and a void runSubscription() cleanup replacing the redundant .catch(). Both changes are clean.

1 P3 below. The rest of the PR remains solid.

The @container breakpoint at 900px is well-calibrated: it activates just past the default max-w-4xl (896px), so the responsive bash summary widening only kicks in when full-width mode provides extra room. The void cleanup is correct since runSubscription catches internally.

"If someone refactors setSyncedValue to just call setChatTranscriptFullWidth(enabled) without the updatePersistedState call, the test suite stays green. On next mount, readPersistedState returns false, and the layout-flash bug is back." (Bisky)

🤖 This review was automatically generated with Coder Agents.

Comment thread src/browser/hooks/useChatTranscriptFullWidth.test.tsx
@ibetitsmike ibetitsmike force-pushed the mike/chat-transcript-full-width branch from 8e6821e to 7eea3e0 Compare May 21, 2026 14:46
@ibetitsmike
Copy link
Copy Markdown
Contributor Author

Mux is acting on Mike's behalf.

coder-agents-review follow-up response:

  • DEREM-26: Added a persist-and-remount hook test that lets backend config resolve to full-width, unmounts, then verifies the next hook instance reads full-width immediately from the local mirror before backend response.

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

/coder-agents-review

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

/coder-agents-review

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

@codex review

Mux is acting on Mike's behalf.

Copy link
Copy Markdown

@coder-agents-review coder-agents-review Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rebase brought the base forward. The transcript width feature remains clean. Two new concerns from the R8 delta.

1 P2, 1 nit below.

The P2 is the main issue: the "Collapsed bash summaries" display mode setting in GeneralSection was partially rolled back. The consumer side was removed (BashToolCall no longer reads the display mode; bashCollapsedSummary no longer accepts it as a parameter), but the producer side remains: ~80 lines of UI, constants, types, a state hook, a handler, and two tests for a dropdown that does nothing. grep -rn "TOOL_COLLAPSED" src/ returns hits only in GeneralSection and storage.ts. Either remove the dead settings UI or reconnect the consumer.

Process note: the collapsed bash summaries feature is not mentioned in the PR title, summary, or implementation bullets. The BashToolCall layout restructuring (horizontal to vertical, intent detail section in expanded view) and the ChatPane scroll hold refactoring are clean and work correctly, but bundling an undocumented, partially removed feature into an unrelated PR is how dead UI ships.

"When removing a feature, the agent should have grepped for all references to TOOL_COLLAPSED_DISPLAY_MODE_KEY and removed the orphaned code." (Mafu-san)

🤖 This review was automatically generated with Coder Agents.

Comment thread src/browser/features/Settings/Sections/GeneralSection.tsx
Comment thread src/browser/hooks/useChatTranscriptFullWidth.test.tsx
@chatgpt-codex-connector
Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Already looking forward to the next diff.

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

Copy link
Copy Markdown

@coder-agents-review coder-agents-review Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DEREM-27 (P2, dead display mode setting) addressed: consumer reconnected in BashToolCall and bashCollapsedSummary, with a test for command-only mode.

DEREM-28 (Nit, createConfigEventStream duplicates createMockIterableSubscription from SshPromptDialog.test.tsx) has no author response. Further review is blocked until the author responds or pushes a fix. Options: extract to a shared test utility, acknowledge as out of scope, or explain why the duplication is intentional.

🤖 This review was automatically generated with Coder Agents.

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

Mux is acting on Mike's behalf.

coder-agents-review follow-up responses:

  • DEREM-27: The consumer is wired in the current head. BashToolCall reads TOOL_COLLAPSED_DISPLAY_MODE_KEY via usePersistedState, passes displayMode into buildBashCollapsedSummary, and the summary builder returns command-only output when that mode is selected.
  • DEREM-28: Extracted the controllable async iterable into src/browser/testUtils.ts and reused it in both useChatTranscriptFullWidth.test.tsx and SshPromptDialog.test.tsx.

@ibetitsmike ibetitsmike force-pushed the mike/chat-transcript-full-width branch from 7443449 to e2f8bdf Compare May 21, 2026 19:48
@ibetitsmike
Copy link
Copy Markdown
Contributor Author

/coder-agents-review

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

@codex review

Mux is acting on Mike's behalf.

@chatgpt-codex-connector
Copy link
Copy Markdown

Codex Review: Didn't find any major issues. You're on a roll.

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

Copy link
Copy Markdown

@coder-agents-review coder-agents-review Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DEREM-28 fix verified: createControllableAsyncIterable extracted to shared src/browser/testUtils.ts and reused in both useChatTranscriptFullWidth.test.tsx and SshPromptDialog.test.tsx. The SshPromptDialog test suite (8 tests) passes unchanged with the shared utility. Clean extraction, no semantic drift.

No new findings from Netero or the panel. All 28 findings across ten rounds resolved: 19 fixed by author, 1 contested and closed by panel (8/8), 2 acknowledged, 7 dropped by orchestrator. 0 open.

🤖 This review was automatically generated with Coder Agents.

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

@codex review

Mux is acting on Mike's behalf.

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

/coder-agents-review

Add a persisted appearance setting that lets users expand chat transcripts to the full chat pane width, with backend config persistence, ORPC wiring, settings UI, and layout usage.

---

_Generated with `mux` • Model: `openai:gpt-5.5` • Thinking: `xhigh` • Cost: `$37.62`_

<!-- mux-attribution: model=openai:gpt-5.5 thinking=xhigh costs=37.62 -->
---

_Generated with `mux` • Model: `openai:gpt-5.5` • Thinking: `xhigh` • Cost: `$97.01`_

<!-- mux-attribution: model=openai:gpt-5.5 thinking=xhigh costs=97.01 -->
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a 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: f35ec6144a

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

Comment thread src/browser/hooks/useChatTranscriptFullWidth.ts
Copy link
Copy Markdown

@coder-agents-review coder-agents-review Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Test setup switched from inline GlobalWindow to the project's shared installDom() utility with proper cleanup. CI green. No new findings from Netero or the panel.

All 28 findings across eleven rounds resolved: 19 fixed by author, 1 contested and closed by panel (8/8), 2 acknowledged, 7 dropped by orchestrator. 0 open.

🤖 This review was automatically generated with Coder Agents.

@ibetitsmike ibetitsmike force-pushed the mike/chat-transcript-full-width branch from f35ec61 to fa369a0 Compare May 21, 2026 23:05
@ibetitsmike
Copy link
Copy Markdown
Contributor Author

@codex review

Mux is acting on Mike's behalf.

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

/coder-agents-review

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

@codex review

Mux is acting on Mike's behalf.

Addressed the stale local toggle race by invalidating older config fetch versions when the persisted transcript width preference changes locally. Added a regression test covering an older backend fetch resolving after a local toggle.

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

/coder-agents-review

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a 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: 2d6392bee6

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

Comment thread src/browser/hooks/useChatTranscriptFullWidth.ts Outdated
---

_Generated with `mux` • Model: `openai:gpt-5.5` • Thinking: `xhigh` • Cost: `$97.01`_

<!-- mux-attribution: model=openai:gpt-5.5 thinking=xhigh costs=97.01 -->
@ibetitsmike ibetitsmike force-pushed the mike/chat-transcript-full-width branch from 2d6392b to 7472960 Compare May 21, 2026 23:16
@ibetitsmike
Copy link
Copy Markdown
Contributor Author

@codex review

Mux is acting on Mike's behalf.

Addressed the backend refresh ordering follow-up by marking backend-applied persisted writes separately from local setting writes. Added a regression test that accepts a newer backend refresh after a backend-driven cache update.

@ibetitsmike
Copy link
Copy Markdown
Contributor Author

/coder-agents-review

Copy link
Copy Markdown

@coder-agents-review coder-agents-review Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Display mode refactored cleanly: renamed from ToolCollapsedDisplayMode to BashCollapsedSummaryMode, new "intent" mode added as a third option, mode delivery moved from per-component usePersistedState to a BashCollapsedSummaryModeContext provider in ChatPane. The BASH_COLLAPSED_SUMMARY_MODES array drives both the type guard and the settings dropdown options, so adding a mode is a one-line change. Test updated to verify localStorage persistence directly.

CI failure is "Codex Comments" (external service), not related to this PR's code.

No new findings from Netero or the panel. All 28 findings across twelve rounds resolved. 0 open.

🤖 This review was automatically generated with Coder Agents.

@chatgpt-codex-connector
Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

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

Copy link
Copy Markdown

@coder-agents-review coder-agents-review Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Race condition fix verified: persistedValueRef and backendPersistedValueRef now detect when a local Settings toggle arrives while a backend fetch is in flight and invalidate the stale fetch by incrementing fetchVersionRef. Two new tests cover both directions: backend refresh accepted after a backend-driven cache update, and local persisted update preserved when an older backend fetch resolves with a conflicting value.

CI failure is "Test / Windows", not related to this PR's changes.

No new findings from Netero or the panel. All 28 findings across thirteen rounds resolved. 0 open.

🤖 This review was automatically generated with Coder Agents.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant