Files
gpuix/.changeset
Tommy D. Rossi 51876600f9 feat: keyboard focus dim is independent of focusVisible
Before, any `focusVisible` style (even `{}`) returned early from
apply_focus_visible, so one key controlled two states: the look of the
element while it has keyboard focus, and whether it dims while another
control has it. A custom focus ring therefore could not dim.

Now the two are separate:
- `focusVisible` only styles the element while it has keyboard focus
- every other focusable element off the focus path dims to 40%, with or
  without a `focusVisible`
- new style key `keyboardFocusDim: false` keeps one element at full opacity
  (StyleDesc.keyboard_focus_dim, not inherited, excluded from state styles)
- `Select.Content` and `Dialog.Popup` (React and Solid) switch from
  `focusVisible: {}` to `keyboardFocusDim: false`
- the window-wide `render({ keyboardFocusDim: false })` option is unchanged

Test: the focus scene now checks that `keyboardFocusDim: false` opts an
element out and that an element with a focusVisible ring still dims.
README Focus styles and the pending focus changeset describe the new rule.

Session: ses_f231682b0ffe2fr5xaNLPPWQre
2026-09-26 11:16:20 +02:00
..
2026-08-19 20:55:43 +02:00

Changesets

This folder contains pending release notes for @gpuix/native and @gpuix/react. Each .md file describes one user-facing fix or feature that should appear in the next generated changelog.

What to put here

  • Add one descriptive kebab-case .md file per logical change, for example fix-frame-loop-cpu.md.
  • Use patch for fixes and minor for new features.
  • Write in present tense, focused on what users see.
  • Check GitHub issues first. If the change fixes one, include Fixes #123 on its own line.

What not to put here

  • Do not add changesets for private packages or packages without a version field.
  • Do not edit CHANGELOG.md directly.
  • Do not run the interactive changeset CLI.
  • Do not add vague entries like "misc improvements" or "update internals".