Skip to content

sync: port upstream theme library, Done/Woke, and runtime mode (#5226–#5440) - #218

Merged
cursor[bot] merged 16 commits into
mainfrom
codex/sync-20260808-l4-themes-runtime-a13c
Aug 8, 2026
Merged

sync: port upstream theme library, Done/Woke, and runtime mode (#5226–#5440)#218
cursor[bot] merged 16 commits into
mainfrom
codex/sync-20260808-l4-themes-runtime-a13c

Conversation

@aaditagrawal

Copy link
Copy Markdown
Owner

L4/7 of the 2026-08-08 upstream sync stack. Stacked on L3 (#217).

What lands

Fork deviations preserved

  • ChatView rate-limit panel retained through theme/timeline ChatView edits
  • Fork AGENTS.md policy kept when adapting --share docs

Verification

vp check and vp run typecheck pass after restack onto current L3.

Stacked below L5. Review bottom-up after L1–L3.

Open in Web Open in Cursor 

@cursor
cursor Bot force-pushed the codex/sync-20260808-l4-themes-runtime-a13c branch from c374461 to 2215431 Compare August 8, 2026 07:13
@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 4a2fc249-dc9d-400b-9486-1cbea2efc017

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cursor
cursor Bot force-pushed the codex/sync-20260808-l4-themes-runtime-a13c branch from 2215431 to 02d5140 Compare August 8, 2026 07:14
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL 1,000+ effective changed lines (test files excluded in mixed PRs). labels Aug 8, 2026
@cursor
cursor Bot force-pushed the codex/sync-20260808-l4-themes-runtime-a13c branch 3 times, most recently from 3c689e4 to 2215431 Compare August 8, 2026 07:20
@aaditagrawal
aaditagrawal marked this pull request as ready for review August 8, 2026 07:25
@cursor
cursor Bot marked this pull request as draft August 8, 2026 07:27
@aaditagrawal
aaditagrawal marked this pull request as ready for review August 8, 2026 07:30

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

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: 2215431206

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

return true;
}

if (!setTheme(savedTheme.id)) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Activate newly created themes only for their appearance

Every newly created theme contains only activeAppearance, but this calls setTheme(savedTheme.id), which clears the existing light/dark mix and installs the single-mode theme as the base. When creating a dark theme while following a light system appearance (or vice versa), the UI is forced into the theme's sole appearance and the user's counterpart theme selection is lost; use the same appearance-half activation path already used by imports and theme cards, ideally through shared logic.

AGENTS.md reference: AGENTS.md:L66-L66

Useful? React with 👍 / 👎.

() => [
...(theme !== "system" ? ["Theme"] : []),
...(!followSystem ? ["Follow system"] : []),
...(themeHalves !== null ? ["Theme mix"] : []),

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Recompute restore state when the theme mix changes

When the user changes only a light/dark theme half while the base theme and appearance mode stay unchanged, this value changes but themeHalves is absent from the useMemo dependency list. Consequently changedSettingLabels remains stale, so the Restore defaults action can stay unavailable after adding a mix or continue claiming a mix needs resetting after it was removed.

Useful? React with 👍 / 👎.

Comment on lines +192 to +194
if (oversized) {
setError(oversized);
return;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Clear stale import contents when a file cannot be read

After a valid file has populated the editor, selecting an oversized file only replaces the error and leaves the previous json and filename intact, so the Add theme button remains enabled and imports the earlier theme rather than the newly selected file. This branch also does not advance importRequestRef, allowing an older pending read to finish afterward and erase the oversized-file error; invalidate the request and clear the stale editor state before returning.

Useful? React with 👍 / 👎.

Comment on lines +295 to +301
const handleHexChange = (nextValue: string) => {
setHexDraft(nextValue);
if (!/^#[0-9a-f]{6}$/i.test(nextValue)) return;
const nextHsv = themeHexToHsv(nextValue);
setHsv(nextHsv);
setRgbDraft(themeRgbValue(nextValue));
onChange(nextValue.toLowerCase());

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve alpha when editing the picker’s hex value

For imported or advanced themes whose current role uses #RGBA or #RRGGBBAA, the picker deliberately extracts alphaSuffix, but this hex-input path commits only the new six-digit RGB value. Typing any valid value into the picker therefore silently makes that role fully opaque, unlike the hue, saturation, brightness, and RGB controls, which preserve the existing alpha suffix.

Useful? React with 👍 / 👎.

Comment on lines +3784 to +3787
if (pendingTimelineAnchorRef.current === messageId) {
pendingTimelineAnchorRef.current = null;
}
if (anchorScrollRestoreFrameRef.current !== null) {
activeTimelineAnchorIndexRef.current = anchorIndex;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Ignore anchor callbacks from superseded messages

If the anchored-end measurement callback for the previous completed turn arrives after the user has already sent the next message, the scroll mode is still anchoring-new-turn but pendingTimelineAnchorRef.current names the new message. This code proceeds even when the IDs differ, replacing the new anchor index and scrolling back to the old row; retain the prior mismatch guard so only the pending or currently positioned message can update the anchor.

Useful? React with 👍 / 👎.

t3dotgg and others added 15 commits August 8, 2026 07:38
…tgg#5558)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit a8cd2ad)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit 48aa875)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 95305c3)
…pingdotgg#5563)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit b98a0f0)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 3ffe84f)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
…g#5579)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…te notice (pingdotgg#5595)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…otgg#5593)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@cursor
cursor Bot force-pushed the codex/sync-20260808-l3-plans-providers-a13c branch from 3b3c449 to cd88dd2 Compare August 8, 2026 07:39
@cursor
cursor Bot force-pushed the codex/sync-20260808-l4-themes-runtime-a13c branch from 2215431 to f15d948 Compare August 8, 2026 07:39
@cursor
cursor Bot changed the base branch from codex/sync-20260808-l3-plans-providers-a13c to main August 8, 2026 07:48
@cursor
cursor Bot merged commit e3bdbdd into main Aug 8, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL 1,000+ effective changed lines (test files excluded in mixed PRs). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants