Skip to content

fix(slider): reconcile interactions and share track geometry - #334

Open
leoafarias wants to merge 2 commits into
mainfrom
fix/slider-lifecycle-geometry
Open

leoafarias wants to merge 2 commits into
mainfrom
fix/slider-lifecycle-geometry

Conversation

@leoafarias

@leoafarias leoafarias commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Removing a slider thumb during a drag can retain an invalid active index and throw RangeError. Hidden semantics also removed keyboard operation, taps opened two interaction sessions, and pressing a Remix endpoint thumb requested a different value because input used the full hit target instead of the inset painted rail.

This change ends the old interaction when thumb/focus topology or interaction configuration changes, preserves the original completion callbacks and last requested values across controlled rebuilds, and keeps surviving external focus nodes attached. Focus and keyboard handling remain mounted when semantics are excluded. Taps finish the existing session. The new geometry-only NakedSliderTrack marks the rendered rail for pointer mapping; Remix uses it around its existing painted track.

Validation

Validation on Flutter 3.44.0 / Dart 3.12.0:

  • Reproduced and preserved the crash, hidden-keyboard, duplicate-tap, and endpoint-jump failures before production edits, plus four in-place list-mutation failures before their fix.
  • Naked slider: 65 tests passed, plus the additional external focus-node reorder regression (1 passed).
  • Remix slider: 127 tests passed.
  • Vanilla/Fortal/dashboard consumers: 471 tests passed; demo/catalog consumers: 52 passed; Naked example semantics: 2 passed.
  • Targeted analysis, formatting, and git diff --check pass.

The regressions cover active/earlier thumb removal (including in-place list mutation), external focus ownership, both axes, RTL/inversion, acceptance/rejection, cancel/disable, exact callback sequences, and painted-center round trips through both fluent and raw styles with varied thumb/track sizes.

Release integration must publish Naked UI with NakedSliderTrack before releasing Remix and raise the actual Naked UI dependency floor. Version/floor alignment remains with the final integration session. This PR changes only slider implementation, tests, and the two package changelogs.

CI: 13 checks are green, including the full Flutter suite, contract checks, generated-source validation, CLI/consumer mirrors, Windows, and icons. Vanilla and Fortal fresh-consumer jobs are still running; no failures are reported. Deployment is skipped. No merge is requested.

Checklist

  • Includes regression and consumer tests for the changed behaviors.
  • Updates public API doc comments.
  • Prepared to follow up on review comments.

Breaking Change

  • Yes, this is a breaking change.
  • No manual application-code changes are required.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 27, 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-27T02:08:19.131617Z a429566 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.

This branch has not been deployed

No deployments
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.

1 participant