Repository navigation
fix(ChatMessages,Checkbox,RadioGroup): allow a per-side colour, wrap option rows - #537
Merged
Merged
Conversation
…option rows Ports `bbf1e149` and `90c45a66` — a contiguous pair taken in one PR per PORTING.md §6 4b. `ChatMessages` lets a caller set defaults for every user or assistant message through two `Pick<>`s of `ChatMessage`'s props, and `color` was missing from both, so it could be set per message but not for a whole side. Two lines, with the standing `ui` → `b24ui` rename inside the key list. Checked rather than assumed that the key exists to pick — `ChatMessage.vue:34` declares it — because had this fork dropped the prop the right answer would have been a no-op. `fieldset` lays the options out with `flex`, so a horizontal row overflowed its container and options past the edge were unreachable. `flex-wrap` on the `list` and `card` variants of both groups; `table` is excluded on both sides, its rows being seamed with `-space-x-px` where wrapping would break the seam. That second fix is worth more here than upstream, and checkably so: our `fieldset` already declares a vertical gap at every size, from `gap-x-[12px] gap-y-[4px]` to `gap-x-[16px] gap-y-2`. A `gap-y` on a non-wrapping single-line flex row is inert — it can only take effect once rows wrap. The theme was written for wrapped rows and the property producing them was missing. 126 snapshot lines move, and the movement was checked rather than accepted: extracting the differing substring from each pair gives insertions only, all of them the `flex-wrap` token, with no deletions; and the set of attribute names is identical before and after, which is what catches a class dropped from every element at once. Gate: lint, typecheck, build (3.86 MB), test (342 files, 7842 passed), test:module. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JS8ypVfQSFzYVZzkTHhURb
IgorShevchik
added a commit
that referenced
this pull request
Sep 5, 2026
The four entries written during this run carried `pending-merge` in both `pr` and `b24ui_sha`, because the entry goes in with the port before its PR has a number or a squash SHA. Both PRs have now merged: - `bbf1e149`, `90c45a66` → #537 / `2227a69e` - `c4ee0ea3`, `fbb9e220` → #538 / `941e9f2c` Bookkeeping only — no entry is added, the cursor does not move, and no decision changes. The cursor is `fbb9e220`, which is nuxt/ui v4 HEAD, so the sync is caught up and no entry carries the placeholder.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Ports
bbf1e149and90c45a66— a contiguous pair taken in one PR per §6 4b. Cursor moves to90c45a66; two upstream commits remain in the queue (c4ee0ea3Link prefetch,fbb9e220ProseCodeTree) and get their own PR.bbf1e149— a colour that could not be set for a whole sideChatMessageslets a caller set defaults for every user or assistant message through twoPick<>s ofChatMessage's own props.colorwas missing from both, so it could be set per message and not per side — an omission rather than a decision, the neighbouringvariantandsidebeing there.Two lines, applying verbatim with the standing
ui→b24uirename inside the picked key list.Checked rather than assumed that the key exists to pick.
ChatMessage.vue:34declarescolor?: ChatMessage['variants']['color']. APick<>of a key the source type lacks is a type error and would not have survivedtypecheck— but the reason for looking is that it could have been a prop this fork dropped, and then the right answer would have been a no-op rather than a port.No render change, no snapshots: this widens a type, and nothing in the suite passes
colorthroughuserorassistant.90c45a66— rows that overflowed instead of wrappingfieldsetlays the options out withflex, so in the horizontal orientation a row simply overflowed its container and options past the edge were unreachable. One class on each of two variants.tableis excluded on both sides: its rows are seamed together with-space-x-px/-space-y-px, where wrapping would break the seam rather than fix an overflow.One shape difference from upstream — its
cardwas{}and gains a single key; ours already carriesitemstyling, sofieldset: 'flex-wrap'goes in as the first entry alongside it.This one is worth more here than upstream, and checkably so
Our
fieldsetalready declares a vertical gap at every size —gap-x-[12px] gap-y-[4px]at the smallest throughgap-x-[16px] gap-y-2at the largest, in both files.A
gap-yon a non-wrapping single-line flex row is inert: it can only take effect once the row wraps. So the theme was already written for wrapped rows, and the one property that produces them was missing.Snapshots
126 lines across four files. Checked rather than accepted — matching each
-/+pair and extracting the differing substring gives:flex-wraptokenThat last check is the one a per-line diff cannot do: a class dropped from every element at once reads as ordinary churn otherwise.
Ours moves 126 lines against upstream's 148, this fork having fewer size variants covered by the
list/cardcases.Verification
lint·typecheck·build(3.86 MB) ·test— 342 files, 7842 passed, 6 skipped ·test:module.🤖 Generated with Claude Code
https://claude.ai/code/session_01JS8ypVfQSFzYVZzkTHhURb
Generated by Claude Code