Skip to content

📝 feat: Visible Prose Markers and Composer Shape Roles for ClickHouse - #16736

Merged
berry-13 merged 19 commits into
devfrom
berry-13/ch-theme-prose-shape
Oct 6, 2026
Merged

berry-13 merged 19 commits into
devfrom
berry-13/ch-theme-prose-shape

Conversation

@berry-13

@berry-13 berry-13 commented Oct 4, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

In the ClickHouse theme, Markdown list bullets and the blockquote bar render on border-medium (1.24:1 on the page), so they all but disappear; the inline code chip is a heavy #cccfd3 pill in semibold; and the composer popovers, the model selector panel and the send and stop buttons keep the default theme's rounded corners next to 4px Click UI controls. This adds semantic roles for each so a theme can set them apart from the shared border, surface and radius scales, with defaults that reproduce today's appearance exactly.

Colors: surface-code-inline, prose-bullet, prose-quote-bar (a theme that names none keeps the border and surface roles those elements read before). Appearance: popoverRadius, menuPanelRadius, composerActionRadius, inlineCodeWeight. ClickHouse takes slate.500 / neutral.500 for the marker and bar (3.5:1 and 3.7:1), slate.100 / neutral.712 for the chip at weight 500, the Click UI menu panel corner for the popovers and selector, and the Click UI button corner (4px) for send and stop. The default theme keeps a circle for send and stop.

Type of change

  • Feature

Testing

Tested environments/configuration:

  • Browser: Chromium 1440x900, light and dark
  • Config: interface.theme: clickhouse, and the default theme for the pixel-identity check
  • Default theme computed styles are unchanged: bullet and quote bar #cdcdcd / #393939, code chip #e3e3e3 / #424242 at weight 600, popover radius 16px, send radius 9999px

Automated tests:

  • cd packages/client && npx jest src/theme src/utils src/components/IconButton (theme specs include the Click UI drift guard, a 3:1 check on the marker and bar, and the fallback for themes that name none of the new roles)
  • cd client && npx jest src/components/Chat/Input/__tests__ and the Input component specs related to the changed files
  • npx tsc --noEmit in packages/client, packages/data-provider and client; npm run static-checks -- --against origin/dev

Screenshots / recordings

ClickHouse theme, before and after. List bullets, quote bar and code chip in light and dark; the attach popover in light. Send and stop are 4px in the after state.

Before After
Before light After light
Before dark After dark
Before attach After attach

Risk / compatibility

New appearance and color roles are optional in theme definitions and default to today's values; IconButton gains a composer shape used by the send and stop buttons.

Checklist

  • I reviewed my own changes
  • Relevant tests have been added or updated
  • Existing relevant tests pass
  • The change does not introduce new warnings or errors
  • User-facing or complex behavior is documented where necessary
  • Required dependency changes have been merged/published
  • Required documentation PR: N/A

Copilot AI balanced review requested due to automatic review settings October 4, 2026 15:04

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 4, 2026 •

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-06T09:07:21.118071Z 20b7e6c New commits
🔒 Security Review ✅ Completed 2026-10-04T15:07:07.545460Z f8cde0c PR opened
ℹ️ 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.

@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: f8cde0c50d

ℹ️ 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 on lines +144 to +146
--surface-code-inline: var(--surface-active-alt);
--prose-bullet: var(--border-medium);
--prose-quote-bar: var(--border-medium);

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 Rebind the prose aliases inside scoped legacy themes

When the public applyTheme(colors, nestedRoot) path is used, these aliases are inherited from html and remain bound to the document-level --border-medium/surface values; changing those source roles on the [data-theme-scope] root therefore no longer recolors bullets, quote bars, or inline-code chips as it did before this change. The existing avatar alias is explicitly redeclared for scoped roots for the same reason, so these three aliases should also be rebound there (or written by the legacy adapter) to preserve nested custom themes.

AGENTS.md reference: AGENTS.md:L147-L151

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in 6a6be6e: the scoped legacy root now redeclares the three aliases next to the avatar one, following the mode.

control: 'rounded-theme-control',
theme: 'rounded-theme-control-round',
/** The composer's send and stop slot, whose corner a theme sets apart from the other round controls. */
composer: 'rounded-theme-composer-action',

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 Apply the composer shape to speech controls

When speech input is enabled, RoundButton in client/src/components/Chat/Input/Composer/Bar.tsx renders both the mic/recording-stop control and the dictation send control without shape="composer", so IconButton keeps its default rounded-full shape. In the ClickHouse theme these controls therefore remain circular while the adjacent normal send/stop slot uses the new 4px composer radius, despite composerActionRadius explicitly covering the composer's mic buttons; pass the new shape through this speech-control path as well.

AGENTS.md reference: AGENTS.md:L147-L151

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in 6a6be6e: the dictation RoundButton in Composer/Bar.tsx now takes shape="composer" (covered in appearanceTokens.spec).

@codegraph-librechat codegraph-librechat Bot added the 🗺️ Theme Engine codegraph: the taxonomy area this belongs to (classifier, confidence ≥ 0.9) label Oct 4, 2026
@berry-13
berry-13 force-pushed the berry-13/ch-theme-prose-shape branch from 512ebe8 to 6a6be6e Compare October 4, 2026 17:24

@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: 6a6be6eb9e

ℹ️ 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 client/src/style.css
--tw-prose-bold: rgb(var(--text-primary));
--tw-prose-counters: rgb(var(--text-tertiary));
--tw-prose-bullets: rgb(var(--border-medium));
--tw-prose-bullets: rgb(var(--prose-bullet));

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 Route all prose quote borders through the new role

When Markdown is rendered in a .prose container without the .markdown class, such as TermsAndConditionsModal.tsx, blockquotes use --tw-prose-quote-borders, which remains bound to border-light in light mode and border-medium in dark mode. Consequently, the new prose-quote-bar color is ignored on that user-visible Markdown surface, leaving ClickHouse's light-mode quote bar at the low-contrast color this change is intended to replace; update both quote-border variables to use the new role or otherwise wire that renderer to it.

AGENTS.md reference: AGENTS.md:L147-L151

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Valid but pre-existing and outside this change (only .prose renderers such as the terms modal): tracked at berry-13#272.

largeSurfaceRadius: '--theme-large-surface-radius',
menuRadius: '--theme-menu-radius',
popoverRadius: '--theme-popover-radius',
menuPanelRadius: '--theme-menu-panel-radius',

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 Apply the menu-panel radius to composer menus

When a ClickHouse user opens a chip's sub-mode menu or the code-approval mode menu, those composer panels still use rounded-xl in Composer/Bar.tsx and CodeApprovalMenu.tsx, so they retain 12px corners while the model menu and other newly themed composer overlays use the intended 4px Click UI corner. Since both are Ariakit menu panels, route them through menuPanelRadius as well so the new semantic role consistently controls this surface.

AGENTS.md reference: AGENTS.md:L147-L151

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in 5dc1e3a: the chip sub-mode and code approval menus use rounded-theme-menu-panel.

@berry-13

berry-13 commented Oct 4, 2026

Copy link
Copy Markdown
Collaborator Author

Existing e2e spec edits in this PR, and why none of them moves a default-theme value:

  1. clickhouse-theme-shape.spec.ts (mention menu corners): 8px became 4px. Both tests that call it run under the ClickHouse theme only. On origin/dev the menu is rounded-2xl, which ClickHouse maps to radius2xl (8px). It now reads popoverRadius, which ClickHouse sets to Click UI's menu panel corner (4px). The default theme is not asserted there; its value is unchanged (popoverRadius defaults to 1rem, the rounded-2xl default; computed 16px in the default theme before and after, checked in the browser).
  2. theme-paint.spec.ts (clickhouse-prose-and-qr-roles): the code chip expectation went from surface-active-alt / surface-hover-alt to surface-code-inline. ClickHouse-only test; the chip role is slate.100 / neutral.712 by design. The default-theme twin, prose-and-qr-roles-keep-default-look, is untouched and passes.
  3. message-theme.spec.ts (blockquote bar, both stock and ClickHouse): the bar is now compared with --prose-quote-bar. For the stock theme that role resolves to border-medium, so the stock assertion is the same colour as before; only ClickHouse differs. (An earlier version probed a utility Tailwind never emits and failed on a missing class, not on a value; fixed.)
  4. theme-radius-font-scale.spec.ts was not edited. It failed after the first push because popoverRadius stopped following radius2xl; that was a regression in my change, fixed in registry.ts (popoverRadius, menuPanelRadius and composerActionRadius inherit radius2xl, radiusXl and roundControlRadius when a theme names the scale step and not the role), and the original expectation passes again.

@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: 02c59f11e4

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

largeSurfaceRadius: '--theme-large-surface-radius',
menuRadius: '--theme-menu-radius',
popoverRadius: '--theme-popover-radius',
menuPanelRadius: '--theme-menu-panel-radius',

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 Apply the menu-panel role to code-workspace menus

After the chip-mode and approval-menu conversions in this head, the code-workspace Ariakit menus still use menuClasses with rounded-xl in client/src/components/Chat/Input/CodeWorkspaceMenu.tsx:57-63. When code-workspace controls are available, both the main menu and machine submenu therefore keep ClickHouse's 8px radiusXl instead of the new 4px menuPanelRadius, even though they are equivalent composer menu panels; route that shared class through rounded-theme-menu-panel as well.

AGENTS.md reference: AGENTS.md:L144-L151

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in ee80ebe: CodeWorkspaceMenu's shared menuClasses use rounded-theme-menu-panel (default stays 0.75rem).

@berry-13
berry-13 force-pushed the berry-13/ch-theme-prose-shape branch from 02c59f1 to 5dc1e3a Compare October 4, 2026 22:31

@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: 5dc1e3ab3e

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

largeSurfaceRadius: '0.75rem',
roundControlRadius: '9999px',
menuRadius: '0.25rem', // genericMenu.panel.radii.all
popoverRadius: '0.25rem', // genericMenu.panel.radii.all, the panel the composer popovers are

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 Route the token-usage popover through a shape role

When token usage is available and the composer gauge is opened, client/src/components/Chat/Input/TokenUsage/index.tsx:238-243 still gives its Ariakit popover rounded-xl. ClickHouse maps that global scale step to 8px, so this composer popover remains visibly rounder than the new 4px popover/menu-panel roles; route it through an appropriate semantic role while preserving the default theme's existing 12px corner.

AGENTS.md reference: AGENTS.md:L144-L151

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in ee80ebe: the token usage popover uses rounded-theme-menu-panel, which defaults to the existing 0.75rem corner.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in ee80ebe and 970f688. Swept every popover, menu and overlay panel under Chat/Input, Chat/Menus and the shared HoverCard primitive; the decision for each:

Menu panel role (rounded-theme-menu-panel, default 0.75rem): CustomMenu (model selector), CodeApprovalMenu, Composer/Bar chip sub-mode menu, CodeWorkspaceMenu (main and machine submenu), TokenUsage popover, HoverCard primitive (Effort and token usage Breakdown cards).
Popover role (rounded-theme-popover, default 1rem): Palette, Thinking, Reasoning, Mention, PromptsCommand, SkillsCommand, AskUserQuestionPopover.
Deliberately different, unchanged: EscalateNowButton tooltip (tooltip, not a panel); OGDialogContent dialogs (Catalog, PastedTextDialog, MyFilesModal, PresetsMenu, EditPresetDialog use the dialog and surface roles); DropdownPopup, Select, Combobox, DropdownMenu, InputCombobox (shared primitives at rounded-md, a different step with many consumers outside the composer); TimePicker, ControlCombobox, MultiSelect (shared form-control panels outside the composer, left to the overlays lane); trigger buttons and list items (rounded-lg/rounded-xl on size-9 triggers and rows are controls, not panels).

The guard is Chat/Input/__tests__/panelRadius.spec.ts: every Ariakit Menu/Popover, Popover.Content and menuClasses constant under Chat/Input and Chat/Menus must name a theme radius role, and HoverCard.spec.tsx renders the primitive. Reverting either fix fails it locally.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Repo-wide sweep of client/src and packages/client/src for popover, menu, combobox and listbox panels still on a literal rounded-(md|lg|xl|2xl) (added to the earlier composer list). The second batch is committed locally and goes out with the next push, not yet on the published head.

Menu panel or popover, now themed (default value unchanged: popover 1rem equals rounded-2xl, menu panel 0.75rem equals rounded-xl): Chat/Messages/Feedback.tsx up and down popovers and Chat/Messages/Fork.tsx popover and hover panels (popover role); Chat/BackgroundTasks/Button.tsx panel (menu panel role). The panelRadius guard now scans Messages and BackgroundTasks as well.

Not a menu panel, because: Chat/approval/Review.tsx (a pinned approval card, not an anchored panel); OriginalDialog (dialog surface); Nav/AccountSettings account popovers (rounded-lg, 0.5rem, a different step with no role of its own, outside this change); Select, Combobox, DropdownMenu, InputCombobox (rounded-md, shared form primitives with many consumers); TimePicker, ControlCombobox, MultiSelect, LocalizedDateRangePicker, VariablesDropdown, Variables/Editor (form-control pickers outside the composer and message surfaces, left to the overlays lane); trigger buttons, list rows and tooltips.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Correction to the list above: the form-control pickers (TimePicker, ControlCombobox, MultiSelect, LocalizedDateRangePicker, VariablesDropdown, Variables/Editor) and the AccountSettings rounded-lg popovers are not owned by another lane. They are tracked in berry-13#280.

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Lighthouse CI failed. The last 80 log lines contain the measured budgets and assertion failures.


[WebServer] 2026-10-05 07:21:15 warn: RAG API is either not running or not reachable at http://127.0.0.1:8791, you may experience errors with file uploads.

[WebServer] 2026-10-05 07:21:17 info: [StreamServices] Created in-memory stream services

[WebServer] 2026-10-05 07:21:17 info: [GenerationJobManager] Configured with in-memory stores

[WebServer] 2026-10-05 07:21:17 info: HTTP server timeout configuration

[WebServer] 2026-10-05 07:21:17 info: Server listening at http://localhost:3080

[WebServer] 2026-10-05 07:21:17 info: [MCPServersRegistry] Creating new instance

[WebServer] 2026-10-05 07:21:17 info: OAuth reconnect manager initialized successfully.

[WebServer] 2026-10-05 07:21:17 info: Created collection: projects

🤖: global setup has been started
🤖: using baseURL http://localhost:3080
🤖: using E2E user: testuser@example.com
[WebServer] 2026-10-05 07:21:19 info: [agent-triggers] durable delivery engine started

[WebServer] 2026-10-05 07:21:20 info: [schedules] engine started

[WebServer] 2026-10-05 07:21:20 info: Server readiness checks passing.

🤖: 🗝  authenticating user: testuser@example.com
🤖: ✔️  localStorage: set Nav as Visible /home/runner/work/LibreChat/LibreChat/e2e/storageState.json
🤖: ✔️  user successfully registered
[WebServer] 2026-10-05 07:21:29 info: [Login] [Login successful] [Username: testuser@example.com] [Request-IP: ::1] {"requestId":"156febd4-ba4b-47f9-979b-7718c2ab683d","request_id":"156febd4-ba4b-47f9-979b-7718c2ab683d","request_method":"POST","request_path":"/api/auth"}

🤖: ✔️  user successfully authenticated
🤖: ✔️  authentication state successfully saved in /home/runner/work/LibreChat/LibreChat/e2e/storageState.json
🤖: global setup has been finished

Running 1 test using 1 worker

[1/1] [chrome] › e2e/lighthouse/load.spec.ts:10:5 › serial database latency stays within web-vitals budgets
[chrome] › e2e/lighthouse/load.spec.ts:10:5 › serial database latency stays within web-vitals budgets
Lighthouse run 1/3 attempt 1 did not complete, retrying: Command failed: /opt/hostedtoolcache/node/24.16.0/x64/bin/node /home/runner/work/LibreChat/LibreChat/node_modules/lighthouse/cli/index.js http://localhost:3080/c/16390000-0000-4000-8000-000000000001 --quiet --preset=desktop --throttling-method=provided --only-categories=performance --chrome-flags=--headless=new --extra-headers={"Cookie":"token_provider=librechat; refreshToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjZhYzM0ZmY1YzQ5YTg0MzkyM2YxNmMyMyIsInNlc3Npb25JZCI6IjZhYzM0ZmZjYzQ5YTg0MzkyM2YxNmM0NCIsImlzc3VlZEF0TXMiOjE3OTExODQ4OTI5NzAsImlhdCI6MTc5MTE4NDg5MiwiZXhwIjoxNzkxMTg4NDkyfQ.-Ifbc-UwxIkTsjsnIuRH9gx5igmzUiuzy5pqJtxCXUU"} --output=json --output=html --output-path=/home/runner/work/LibreChat/LibreChat/.lighthouse/lhr-1

  1) [chrome] › e2e/lighthouse/load.spec.ts:10:5 › serial database latency stays within web-vitals budgets 

    Error: Command failed: /opt/hostedtoolcache/node/24.16.0/x64/bin/node /home/runner/work/LibreChat/LibreChat/node_modules/lighthouse/cli/index.js http://localhost:3080/c/16390000-0000-4000-8000-000000000001 --quiet --preset=desktop --throttling-method=provided --only-categories=performance --chrome-flags=--headless=new --extra-headers={"Cookie":"token_provider=librechat; refreshToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjZhYzM0ZmY1YzQ5YTg0MzkyM2YxNmMyMyIsInNlc3Npb25JZCI6IjZhYzM0ZmZjYzQ5YTg0MzkyM2YxNmM0NCIsImlzc3VlZEF0TXMiOjE3OTExODQ4OTI5NzAsImlhdCI6MTc5MTE4NDg5MiwiZXhwIjoxNzkxMTg4NDkyfQ.-Ifbc-UwxIkTsjsnIuRH9gx5igmzUiuzy5pqJtxCXUU"} --output=json --output=html --output-path=/home/runner/work/LibreChat/LibreChat/.lighthouse/lhr-1
    Runtime error encountered: Something went wrong with recording the trace over your page load. Please run Lighthouse again. (NO_NAVSTART)


    attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
    e2e/lighthouse/.test-results/load-serial-database-latency-stays-within-web-vitals-budgets-chrome/test-failed-1.png
    ────────────────────────────────────────────────────────────────────────────────────────────────

    Error Context: e2e/lighthouse/.test-results/load-serial-database-latency-stays-within-web-vitals-budgets-chrome/error-context.md

    attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
    e2e/lighthouse/.test-results/load-serial-database-latency-stays-within-web-vitals-budgets-chrome/trace.zip
    Usage:

        npx playwright show-trace e2e/lighthouse/.test-results/load-serial-database-latency-stays-within-web-vitals-budgets-chrome/trace.zip

    ────────────────────────────────────────────────────────────────────────────────────────────────


🤖: global teardown has been started
2026-10-05 07:22:46 �[32minfo�[39m: �[32mMongo Connection options�[39m
2026-10-05 07:22:46 �[32minfo�[39m: �[32m{�[39m
�[32m  "bufferCommands": false�[39m
�[32m}�[39m
🤖:  ✅  Connected to Database
🤖:  ✅  Found user in Database
🤖:  ✅  Deleted 1 convos & 2 messages
🤖:  ✅  Deleted user from Database
🤖: global teardown has been started
2026-10-05 07:22:46 �[32minfo�[39m: �[32mMongo Connection options�[39m
2026-10-05 07:22:46 �[32minfo�[39m: �[32m{�[39m
�[32m  "bufferCommands": false�[39m
�[32m}�[39m
🤖:  ✅  Connected to Database
🤖:  ⚠️  User not found in Database
  1 failed
    [chrome] › e2e/lighthouse/load.spec.ts:10:5 › serial database latency stays within web-vitals budgets 

Open the full run

@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: a72357e7a1

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

import path from 'path';

const CHAT_DIR = path.resolve(__dirname, '../..');
const SCAN_DIRS = ['Input', 'Menus', 'Messages', 'BackgroundTasks'];

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 Route the pending approval card through the popover role

When a tool approval interrupts a chat, Chat/approval/Review.tsx:106 renders its composer overlay with rounded-2xl, so ClickHouse leaves this card at its 8px radius2xl instead of the new 4px popoverRadius used by the equivalent ask-user and palette overlays. Fresh evidence after the earlier radius sweep is that this new guard scans only the listed directories and omits the sibling Chat/approval directory, allowing the remaining literal to pass; include that surface in the migration and guard it with rounded-theme-popover.

AGENTS.md reference: AGENTS.md:L144-L151

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in 335f87f: Chat/approval/Review.tsx uses rounded-theme-popover (default 1rem unchanged) and the panel guard now scans Chat/approval and className="popover" panels.

@berry-13
berry-13 force-pushed the berry-13/ch-theme-prose-shape branch 2 times, most recently from 335f87f to 08305d6 Compare October 5, 2026 19:41

@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: 08305d6e7c

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

largeSurfaceRadius: '--theme-large-surface-radius',
menuRadius: '--theme-menu-radius',
popoverRadius: '--theme-popover-radius',
menuPanelRadius: '--theme-menu-panel-radius',

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 Apply the menu-panel radius to send-action flyouts

When generation is active, DuringRunSendButton supplies its alternate actions to the shared SendActions primitive, whose Ariakit hovercard still uses rounded-xl in packages/client/src/components/SendActions.tsx:63. Under ClickHouse that resolves to the 8px radiusXl, so this composer action menu remains rounder than the new 4px menuPanelRadius; route the shared flyout through rounded-theme-menu-panel and cover this package primitive in the radius guard.

AGENTS.md reference: AGENTS.md:L144-L151

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in 982fa1f: SendActions' flyout uses rounded-theme-menu-panel (default 0.75rem unchanged) and the panel guard now covers the packages/client primitive.

Comment thread packages/client/src/theme/defaults.css Outdated
Comment on lines +240 to +242
--theme-popover-radius: 1rem;
--theme-menu-panel-radius: 0.75rem;
--theme-composer-action-radius: 9999px;

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 scale-variable inheritance for the new radius roles

When a package consumer imports theme.css and customizes the previously public --theme-radius-2xl, --theme-radius-xl, or --theme-round-control-radius variables directly, migrated composer surfaces now ignore those overrides because these new properties are fixed literals. resolveTheme preserves the old relationships through inheritedAppearance, but the documented stylesheet customization path does not; define these properties as var() aliases to their former scale variables, with the current literals as fallbacks, so existing CSS themes retain their shapes.

AGENTS.md reference: AGENTS.md:L144-L151

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in 982fa1f: --theme-popover-radius, --theme-menu-panel-radius and --theme-composer-action-radius now alias --theme-radius-2xl, --theme-radius-xl and --theme-round-control-radius with the former literal as fallback, so a stylesheet that overrides the scale variables keeps reshaping these surfaces.

@berry-13
berry-13 force-pushed the berry-13/ch-theme-prose-shape branch from 982fa1f to 8ef6614 Compare October 5, 2026 20: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: 8ef6614518

ℹ️ 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 on lines +91 to +93
'rgb-surface-code-inline': '230 231 233', // #e6e7e9 (palette.slate.100, one step under the chip it replaced, slate.200 at 1.56:1)
'rgb-prose-bullet': '128 134 145', // #808691 (palette.slate.500, 3.5:1 on white; stroke.default is 1.24:1)
'rgb-prose-quote-bar': '128 134 145', // #808691 (palette.slate.500, 3.5:1 on white)

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 Keep prose roles visible on user-message bubbles

When enableUserMsgMarkdown is enabled, user Markdown renders inside bg-surface-user-message (#e6e7e9), but this light palette sets the inline-code surface to that exact color, so the chip background disappears; before this change it used #cccfd3. The marker and quote-bar color also has only 2.96:1 contrast against that bubble, below the intended 3:1 floor, because the new contrast test checks only page surfaces. Include the actual user-message surface in the reference-theme tests and choose prose roles that remain distinguishable there.

AGENTS.md reference: AGENTS.md:L148-L151

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in 706e319: light chip is slate.200 and dark chip neutral.700 so neither equals the user bubble, and the list marker and quote bar are slate.700, clearing 3:1 on the bubble; the reference-theme spec now checks the bubble.

popoverRadius: '0.25rem', // genericMenu.panel.radii.all, the panel the composer popovers are
menuPanelRadius: '0.25rem', // genericMenu.panel.radii.all
composerActionRadius: '0.25rem', // button.basic.radii.all, Click UI draws its icon buttons square
inlineCodeWeight: '500', // typography.font.weights.2

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 Ship the font face selected by the inline-code role

Under ClickHouse, .prose code inherits font-mono, which resolves to Inconsolata, but the bundled fonts.css declares that family only at weights 400 and 700. Requesting 500 therefore selects the regular 400 face rather than rendering the Click UI medium weight this role names; the current tests only inspect the computed font-weight: 500, which does not reveal the face substitution. Add a 500/variable Inconsolata face or choose an available weight and verify the rendered reference theme.

AGENTS.md reference: AGENTS.md:L148-L151

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in 706e319: the Inconsolata 500 face (same fontsource source as the 400 and 700 files) is bundled and declared, and a spec ties the declared faces to inlineCodeWeight.

@berry-13
berry-13 force-pushed the berry-13/ch-theme-prose-shape branch from 67e941e to 20b7e6c Compare October 6, 2026 09:04
@berry-13
berry-13 merged commit cd5dd94 into dev Oct 6, 2026
57 of 58 checks passed
@berry-13
berry-13 deleted the berry-13/ch-theme-prose-shape branch October 6, 2026 11:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🗺️ Theme Engine codegraph: the taxonomy area this belongs to (classifier, confidence ≥ 0.9)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants