Skip to content

chore(deps): raise the fluttersdk_wind floor to 1.5.3 - #154

Merged
anilcancakir merged 3 commits into
masterfrom
chore/wind-1.5.3
Sep 10, 2026
Merged

chore(deps): raise the fluttersdk_wind floor to 1.5.3#154
anilcancakir merged 3 commits into
masterfrom
chore/wind-1.5.3

Conversation

@anilcancakir

Copy link
Copy Markdown
Contributor

Moves magic's fluttersdk_wind floor to 1.5.3, published today.

What this actually changes

The ceiling was already there. ^1.2.0 admitted 1.5.x, so any app running flutter pub get without a pin was resolving 1.5.3 before this PR and nothing changes for it. What moves is the floor, and the floor is what reaches an app that pinned Wind lower.

example/pubspec.lock is the concrete case: it had 1.2.0 locked, and the bump pulls it to 1.5.3 along with fluttersdk_wind_diagnostics_contracts 1.0.0 to 1.1.0, both transitive through magic.

Why 1.5.3 is worth a floor raise

These are magic's bugs as much as Wind's, because magic renders its views through W-widgets:

  • A focused WAnchor now answers ActivateIntent, so a control reachable by keyboard, gamepad or a television remote actually activates on Enter, Space, the D-pad centre or the Apple TV click.
  • One control costs one Tab stop instead of two. WDiv wraps itself in a gestureless WAnchor whenever its className carries hover:, focus: or active:, and that wrapper used to be a full focus stop, so WAnchor(onTap:) > WDiv('focus:ring-2'), the shape of every ring-styled control, cost two presses of Tab.
  • disabled: now reaches a WDiv inside a disabled WAnchor, so an element carrying disabled:opacity-50 stops ignoring its disabled ancestor.

The one break in the span, for a pinned consumer

Wind 1.4.0 carries a behavioural break: a single-line WInput defaults its Return key to TextInputAction.done instead of .next. A multi-field form that relied on Return advancing focus needs textInputAction: TextInputAction.next written out.

This reaches consumer forms only. Magic constructs no WInput of its own; the single hit in lib/ is a doc comment in validates_requests.dart:79. The CHANGELOG entry names the fix so nobody has to find it.

Also in here

CLAUDE.md:7 and .github/copilot-instructions.md:7 both claimed fluttersdk_wind ^1.1.2 and fluttersdk_artisan ^0.0.8. The real constraints had already moved to ^1.2.0 and ^0.0.9 without those lines following. Corrected in their own commit.

Gates

  • flutter test: 1464 tests, all passed, no skips. Run with pubspec_overrides.yaml moved aside, so this is against the hosted fluttersdk_wind 1.5.3 from pub.dev and not the local path clone.
  • dart analyze lib bin: No issues found!
  • dart analyze in example/: No issues found! CI never touches example/, so this is the only check that covers the lock change.
  • dart format --output=none --set-exit-if-changed .: Formatted 337 files (0 changed), exit 0.

pubspec.yaml is the only real surface: install.yaml, the make:* stubs, example/pubspec.yaml, doc/ and skills/ carry no Wind version pin.

Ordering

#150 (release 0.0.10) is open and waiting. This wants to land first so the release section carries the entry, same as #151 and #148 did.

The ceiling was already there: ^1.2.0 admitted 1.5.x, so any app
resolving fresh was on it. Moving the floor is what reaches an app that
pinned Wind lower, and 1.5.3 is where a focused WAnchor answers
ActivateIntent (keyboard, gamepad, TV remote), where one control costs
one Tab stop instead of two, and where disabled: reaches a WDiv inside a
disabled WAnchor. Magic renders its views through W-widgets, so those
were magic's bugs too.

The span carries one behavioural break for a pinned consumer: wind 1.4.0
made a single-line WInput default its Return key to TextInputAction.done
instead of .next. Magic constructs no WInput of its own, so this reaches
consumer forms only; the CHANGELOG entry names the fix.
Both files claimed fluttersdk_wind ^1.1.2 and fluttersdk_artisan ^0.0.8.
The real constraints had moved to ^1.2.0 and ^0.0.9 without these
following, and the wind bump above moves one of them again.
@anilcancakir anilcancakir added the dependencies Dependency updates label Sep 10, 2026
@codecov

codecov Bot commented Sep 10, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@kodizm

kodizm Bot commented Sep 10, 2026

Copy link
Copy Markdown

Note

Kodizm (AI-generated). May contain mistakes; verify before acting.

A five-file constraint bump that verifies cleanly: the lockfile matches what pub actually resolves, the transitive set is unchanged, and the full suite is green against Wind 1.5.3 - no blocking findings.

What I checked rather than assumed:

  • Both lock shas are the real pub.dev archive digests: fluttersdk_wind 1.5.3 = b436a41ab042be1cc578a69a6634e3f39cae2801505e6e2514d4e2ad9dd7f4fd, fluttersdk_wind_diagnostics_contracts 1.1.0 = 3c302f7504c9e8037072b4d2be2c266fb5488aa907eda1ce9321f1ee8556c972.
  • Wind 1.5.3 depends on fluttersdk_wind_diagnostics_contracts: ^1.1.0, which is exactly the second lock entry, and adds no new dependency over 1.2.0 (flutter, flutter_svg ^2.0.0, contracts) - so example/pubspec.lock needs no other line, which is why a 4-line diff is complete rather than partial.
  • Wind 1.5.3 declares the same sdk: >=3.4.0 <4.0.0 / flutter: >=3.27.0 as 1.2.0, so the floor raise does not silently tighten magic's own declared >=3.11.0 / >=3.41.0.
  • flutter pub get at the head leaves the working tree clean (git status --porcelain empty), so the committed lock is what pub reproduces, not a hand edit.
  • No other Wind pin exists to go stale: grep over install.yaml, assets/stubs/, doc/, skills/, README.md and example/pubspec.yaml finds none. The ^1.1.2 / ^0.0.8 correction in CLAUDE.md:7 and .github/copilot-instructions.md:7 matches the real constraints in pubspec.yaml.
  • The WInput Return-key break in the 1.4.0 span does not reach lib/: the only WInput in the package is the doc comment at lib/src/concerns/validates_requests.dart:79, so it is consumer-side only, as the CHANGELOG says.

Minor

CHANGELOG.md:41 — maintainability: the entry sits under ### Changed while describing a consumer-visible behavioural break (Return no longer advances focus in a multi-field form), and the same [Unreleased] block has a ### BREAKING section that the file_picker bump uses. The distinction is defensible - magic's own API is unchanged and the break lives in a transitive widget - but a reader scanning ### BREAKING for the 0.0.10 upgrade notes will not see the one line telling them to write out textInputAction: TextInputAction.next.

Tests

Nothing in test/ exercises Wind focus behaviour (no WAnchor / WDiv / WInput reference anywhere under test/), which is correct: those are Wind's tests to own. The value of the suite here is regression cover, and it holds.

Checks I ran

  • flutter pub get (root + example): resolved, working tree left clean.
  • flutter test --concurrency=4: +1464: All tests passed!, no skips - matches the 1464 claimed.
  • flutter test test/ui: +79: All tests passed! against Wind 1.5.3.
  • dart analyze lib bin: No issues found!
  • flutter analyze in example/: No issues found! (ran in 14.9s) - covers the lock change, which CI does not.
  • dart format --output=none --set-exit-if-changed .: Formatted 337 files (0 changed), exit 0.
  • flutter analyze at the repo root was not run: the analysis server was OOM-killed (exited with code -9) in this environment; dart analyze lib bin was substituted.

…s for it

The Wind floor raise is filed under Changed because magic's own API does
not move, and that is still right. But the span crosses wind 1.4.0,
which changed what Return does in a multi-field form, and a reader
scanning BREAKING for the 0.0.10 upgrade notes would never reach the
line telling them to write out textInputAction. BREAKING now carries a
pointer with the fix in it.
@anilcancakir

Copy link
Copy Markdown
Contributor Author

Fixed, and I took the pointer route rather than moving the entry.

Your reasoning holds on both sides: the constraint bump belongs under ### Changed because magic's own API does not move, and an upgrader scanning ### BREAKING still needs the one line telling them to write out textInputAction: TextInputAction.next. So ### BREAKING now opens with that line, naming the fix and pointing at the Changed entry for what the floor raise buys. The constraint entry stays where it is.

Thanks for the two checks I had not made myself: that Wind 1.5.3 adds no dependency over 1.2.0, which is what makes the 4-line lock diff complete rather than partial, and that 1.5.3 declares the same sdk: >=3.4.0 <4.0.0 / flutter: >=3.27.0 as 1.2.0, so the floor raise does not quietly tighten magic's own declared floor. Both are the kind of thing that would only surface later, in a consumer's failed resolution.

CI is re-running on the new head.

@anilcancakir
anilcancakir merged commit 366a965 into master Sep 10, 2026
5 checks passed
@kodizm

kodizm Bot commented Sep 10, 2026

Copy link
Copy Markdown

Note

Kodizm (AI-generated). May contain mistakes; verify before acting.

Incremental re-review: the only new commit adds the ### BREAKING pointer line to CHANGELOG.md, which settles my one earlier finding - nothing else moved, and nothing new to flag.

What changed since 4e04a47: a single 2-line addition at CHANGELOG.md:19. The ### BREAKING block now opens with the textInputAction: TextInputAction.next fix, names Wind 1.4.0 as the source of the .done default, and says outright that the constraint entry stays under ### Changed because magic's own API does not move. The pointer resolves - the ### Changed entry it references exists at CHANGELOG.md:41 and covers what the floor raise buys. That is the pointer route you described, and it reads correctly.

My earlier findings on the constraint bump itself still stand as verified and unchanged: no pubspec.yaml, lockfile or lib/ line is touched by this commit.

Tests

No code changed, so nothing new to cover. My previous run against Wind 1.5.3 (+1464: All tests passed!) remains the applicable evidence.

Checks I ran

  • kodizm.read_pull_request_diff with since_sha=4e04a47, scope: incremental: one file, CHANGELOG.md, +2/-0.
  • No lint, analyze or test run this pass: the diff is markdown prose only, so none of the repo's gates can observe it. Stated rather than skipped silently.

@kodizm kodizm Bot mentioned this pull request Sep 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Dependency updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant