Skip to content

fix(topics): hide Infinite button for capped configs + fix Custom SELECT width (UX-1235)#2418

Merged
c-julin merged 2 commits intomasterfrom
jc/ux-1222-max-message-bytes-infinite
Apr 23, 2026
Merged

fix(topics): hide Infinite button for capped configs + fix Custom SELECT width (UX-1235)#2418
c-julin merged 2 commits intomasterfrom
jc/ux-1222-max-message-bytes-infinite

Conversation

@c-julin
Copy link
Copy Markdown
Contributor

@c-julin c-julin commented Apr 23, 2026

Summary

Two fixes to the topic config editor, both filed under UX-1235.

1. Infinite button on capped configs

The editor offered an Infinite button for every BYTE_SIZE/DURATION config. For configs with a hard server-side cap (max.message.bytes, segment.bytes), clicking it sent -1, which the broker reinterpreted as 4294967295 and rejected with INVALID_CONFIG: max.message.bytes 4294967295 is outside of the allowed range [1, 104857600].

  • Added an opt-out field noInfiniteValue to the config extension schema (ConfigEntryExtension in Go, ConfigEntryExtended in TS).
  • Applied the opt-out to max.message.bytes and segment.bytes in apache_kafka_configs.json.
  • Other BYTE_SIZE/DURATION configs continue to show the button by default.

2. Custom SELECT width

For SELECT configs like message.timestamp.type, the Custom editor wrapper used maxW="fit-content" only. DataSizeSelect/DurationSelect have intrinsic width from their number+unit inputs, but a bare SingleSelect collapsed to the width of the current selection — rendering as just an arrow icon, with opened options truncated (CreateTimeCreat, LogAppendTimeLogA).

  • Added minW="240px" on the Custom value Box so any control has room for its labels.

Note: the first commit message on this branch still says UX-1222 (wrong ticket, was the active pointer at commit time). The second commit uses the correct key. Fix on squash-merge — canonical ticket is UX-1235.

Test plan

  • Edit max.message.bytes: shows only Default / Custom; KB/MB/GB unit picker still works under Custom.
  • Edit segment.bytes: same — no Infinite button.
  • Edit retention.bytes and retention.ms: unchanged — Infinite still shown and applies -1.
  • Edit message.timestamp.type, click Custom: dropdown is wide enough to show CreateTime / LogAppendTime without truncation.
  • Regression: cleanup.policy and other non-BYTE/DURATION configs render as before.

Follow-up

The JSON config-extension dictionary is hand-curated and drifts from broker truth. Proper fix is to have DescribeConfigs return valid range + supports_infinite per config. Scoped in the UX-1235 description for a separate ticket.

Screenshot 2026-04-23 at 11 58 45

Before on Select Dropdown:
Screenshot 2026-04-23 at 12 00 12
After on Select Dropdown:
image

The topic config editor showed an "Infinite" button for every config whose
frontendFormat was BYTE_SIZE or DURATION. For configs that the broker hard-caps
(e.g. max.message.bytes, segment.bytes), clicking it submitted -1, which the
broker reinterpreted as 4294967295 and rejected with INVALID_CONFIG.

Add an opt-out field `noInfiniteValue` to the config extension schema.
Configs that do not accept an infinite sentinel declare it in JSON, and the
frontend hides the Infinite button for them. BYTE_SIZE and DURATION configs
continue to show the button by default.

Apply the opt-out to max.message.bytes and segment.bytes.
@c-julin c-julin changed the title fix(topics): hide Infinite button for capped config keys (UX-1222) fix(topics): hide Infinite button for capped config keys (UX-1235) Apr 23, 2026
@c-julin c-julin changed the title fix(topics): hide Infinite button for capped config keys (UX-1235) fix(topics): hide Infinite button for capped configs + fix Custom SELECT width (UX-1235) Apr 23, 2026
@c-julin c-julin requested review from jvorcak and malinskibeniamin and removed request for malinskibeniamin April 23, 2026 11:08
chakra-react-select's container has an intrinsic maxWidth: fit-content,
so even with a minW on the wrapping Box the SingleSelect collapses to
the width of its current value. For message.timestamp.type with no
initial value the whole control rendered at ~69px and option labels
were truncated to "Creat" / "LogA".

Override via chakraStyles on the SELECT case to set container
minWidth: 240px directly. Keeps the Custom Box layout untouched for
BYTE_SIZE / DURATION controls.
@c-julin c-julin force-pushed the jc/ux-1222-max-message-bytes-infinite branch from 80e754f to e425d66 Compare April 23, 2026 11:11
@c-julin c-julin merged commit 94449f4 into master Apr 23, 2026
18 checks passed
@c-julin c-julin deleted the jc/ux-1222-max-message-bytes-infinite branch April 23, 2026 13:18
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.

2 participants