Skip to content

release: 1.5.2 - #201

Merged
anilcancakir merged 2 commits into
masterfrom
release/1.5.2
Sep 8, 2026
Merged

release: 1.5.2#201
anilcancakir merged 2 commits into
masterfrom
release/1.5.2

Conversation

@anilcancakir

Copy link
Copy Markdown
Collaborator

What

Patch release. One change, h-full, and the two max-* discards it turned out to be hiding.

  • h-full resolves at the render layer (perf(w-div): resolve h-full at the render layer, which also makes it intrinsic-safe #200). It went through a LayoutBuilder, which cannot answer an intrinsic query, so any IntrinsicHeight or IntrinsicWidth above it asserted LayoutBuilder does not support returning intrinsic dimensions. The limitation was written down on five surfaces with an escape hatch ("use explicit h-* instead") rather than fixed. It is the WindFullHeightBox render object now, which answers intrinsics by forwarding to its child, so it renders under an IntrinsicHeight, in a Table cell and in an items-stretch grid cell. grid is the last LayoutBuilder in the package.
  • max-h-* and max-w-* apply to an h-full element (perf(w-div): resolve h-full at the render layer, which also makes it intrinsic-safe #200). Both were discarded by the same mechanism in two places: the cap arrived as a ConstrainedBox whose additional constraint BoxConstraints.enforce clamps into the incoming range, and the incoming range was already tight.

The render object also costs one object where the old path cost two, and drops the deferred layout pass with it. Measured in a consumer's broadcast grid at 5000 channels, one eight-scroll session: 840 _RenderLayoutBuilder and 840 RenderFractionallySizedOverflowBox become 1008 _RenderFullHeight, everything else moving within noise.

Expect on upgrade, two visible changes:

case before after
h-full max-h-[120px] under ConstrainedBox(maxHeight: 400) 400 120
w-1/2 h-full max-w-[100px] in a 300 pixel parent 150 100
h-full beside a 60 pixel sibling under an IntrinsicHeight asserted 60

A TIGHT parent still wins over max-h-*, which is the parent stating an exact size rather than the same bug.

Version surfaces

The patch set, six files:

File Change
pubspec.yaml version: 1.5.2
example/pubspec.yaml version: 1.5.2+1
dartdoc_options.yaml source-link tag blob/1.5.2/
llms.txt Version 1.5.2 stable
CHANGELOG.md [Unreleased] promoted to [1.5.2] - 2026-09-08, tag reference added, compare reference retargeted
example/pubspec.lock the path-dep version: "1.5.2" entry, produced by flutter pub get inside example/

skills/wind-ui/ needs no version move for a patch: the nine reference H1s, SKILL.md's own H1, the description prefix and the fluttersdk_wind 1.5.x marker all still read right.

One thing did need fixing, in its own commit ahead of the bump: #200 moved SKILL.md's frontmatter to version: 2.14.0 but left the line 8 marker at Skill v2.13.2, so the file stated two different versions of itself. The two have moved together on every skill change since 1.4.x.

Testing

  • dart analyze: clean
  • dart format --set-exit-if-changed .: no diff, 390 files
  • flutter test: 1782 passing, the one pre-existing skip
  • ./tool/coverage.sh 90: 95.2%
  • python3 tool/check-docs.py: 0 issues across 72 doc pages
  • dart pub publish --dry-run: 0 warnings on the committed tree, 1 hint (the gitignored pubspec_overrides.yaml, which CI does not have)
  • Release-notes extraction (awk over the ## [1.5.2] section, the check that fails the github-release job on empty notes): returns all four entries

After merge

git tag 1.5.2 && git push origin 1.5.2 triggers publish.yml: validate, pub.dev publish over OIDC, the GitHub Release, and the registry sync job that pushes skills/wind-ui/ to fluttersdk/ai. pub.dev cannot unpublish, only retract, so the tag push is the point of no return.

`SKILL.md` frontmatter went to `version: 2.14.0` with the `h-full` content
change, but the `<!-- fluttersdk_wind 1.5.x | Skill vN (date) -->` marker on
line 8 stayed at `v2.13.2 (2026-09-07)`. The two have moved together on every
skill change since 1.4.x, so the file now states two different versions of
itself.

The `1.5.x` half is correct as it stands, so this is the skill version and the
date only.
One change, `h-full`, and the two `max-*` discards it turned out to be hiding.

`h-full` resolved through a `LayoutBuilder`, which cannot answer an intrinsic
query, so any `IntrinsicHeight` or `IntrinsicWidth` above it asserted and the
limitation was written down on five surfaces with an escape hatch rather than
fixed. It is the `WindFullHeightBox` render object now (#200): it renders under
an `IntrinsicHeight`, in a `Table` cell and in an `items-stretch` grid cell, and
it answers intrinsics by forwarding to its child, so it matches the tallest
sibling instead of reporting the screen. `grid` is the last `LayoutBuilder` in
the package.

The render object also costs one object where the old path cost two, and drops
the deferred layout pass with it. Measured in a consumer's broadcast grid at
5000 channels, one eight-scroll session: 840 `_RenderLayoutBuilder` and 840
`RenderFractionallySizedOverflowBox` become 1008 `_RenderFullHeight`, with
everything else moving within noise.

Expect two visible changes on upgrade. `max-h-*` and `max-w-*` now apply to an
`h-full` element where they were silently discarded: `h-full max-h-[120px]`
under a `ConstrainedBox(maxHeight: 400)` rendered 400 and renders 120, and
`w-1/2 h-full max-w-[100px]` in a 300 pixel parent rendered 150 and renders
100. A TIGHT parent still wins over `max-h-*`, which is the parent stating an
exact size rather than the same bug. And an `h-full` element under an
`IntrinsicHeight` now matches its tallest sibling where it used to report the
screen height.

Six surfaces bumped, the patch-release set: `pubspec.yaml`,
`example/pubspec.yaml`, the `dartdoc_options.yaml` source-link tag, the
`llms.txt` version string, the `CHANGELOG.md` promotion with its two link
references, and the `example/pubspec.lock` path-dep entry (produced by
`flutter pub get` inside `example/`; the diff is that one line, with no
`source: path` churn and the root lockfile untouched). `skills/wind-ui/` needs
no version move on a patch: the nine reference H1s, SKILL.md's own H1, the
description prefix and the `1.5.x` marker all still read right. The skill's own
version went to 2.14.0 with the content change in #200, and the commit before
this one moves the marker that was left behind.

Gates: `dart analyze` clean, `dart format` no diff, `flutter test` 1782 passing
with the one pre-existing skip, `./tool/coverage.sh 90` at 95.2%, and
`tool/check-docs.py` 0 issues across 72 doc pages.
@coderabbitai

coderabbitai Bot commented Sep 8, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 38 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 3389e52e-33a1-498e-a5a7-8ff2fe2631e4

📥 Commits

Reviewing files that changed from the base of the PR and between 142d994 and f55ce2a.

⛔ Files ignored due to path filters (1)
  • example/pubspec.lock is excluded by !**/*.lock
📒 Files selected for processing (6)
  • CHANGELOG.md
  • dartdoc_options.yaml
  • example/pubspec.yaml
  • llms.txt
  • pubspec.yaml
  • skills/wind-ui/SKILL.md

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Sep 8, 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 8, 2026

Copy link
Copy Markdown

Note

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

Version surfaces are complete and internally consistent, the gates pass on this tree, and I found nothing to block on.

Scope note: this PR carries no lib/ change. 142d994 (#200), which is where the h-full render-object work lives, is already the tip of master, so the body's behavioural claims about WindFullHeightBox, max-h-* and the before/after table are base, not diff, and I did not review them. What is actually here is the six-file version bump plus the SKILL.md marker correction.

What I checked rather than took on trust:

  • All six surfaces in the release checklist moved, and nothing was left behind: grep -rn "1\.5\.1" across *.yaml, *.yml, *.txt, *.md, *.dart, *.lock, *.json returns zero hits outside CHANGELOG.md's historical sections.
  • The SKILL.md fix is right and complete. Frontmatter version: 2.14.0 and the line 8 marker now agree, and they are the only two version statements in skills/wind-ui/ that move per-skill: grep -rn "Skill v" skills/ returns exactly one line. The nine references/*.md H1s, SKILL.md's own H1 and the description prefix all read 1.5 and correctly need no patch move - verified by reading all ten H1s.
  • The release-notes extraction the github-release job gates on returns all four entries for ## [1.5.2], so the empty-notes guard will not fire. I ran the workflow's exact awk.
  • The ## [Unreleased] header removal with the link definition retargeted to compare/1.5.2...HEAD matches the shape of 7935919 (1.5.1) and what CLAUDE.md prescribes.
  • The releases/tag/1.5.2 and compare/1.5.2...HEAD links do not resolve until the tag is pushed, but the PR-path link job runs lychee --offline; only the Monday external pass would see them, and by then the tag exists. Not a finding, noted so it is not mistaken for one.

Tests

No behaviour changes here to cover, so nothing new is expected. The suite that covers the base h-full work runs green on this tree.

Checks I ran

  • dart format --output=none --set-exit-if-changed lib/ test/ example/lib/ - Formatted 390 files (0 changed), exit 0
  • dart analyze lib/ test/ example/lib/ - No issues found!
  • flutter test (via tool/coverage.sh) - +1782 ~1: All tests passed!, the one pre-existing skip
  • ./tool/coverage.sh 90 - exits 1 in my sandbox for an environmental reason only: which lcov reports missing, and the script is set -euo pipefail. Summing LF/LH out of the coverage/lcov.info it produced gives LH=5107 LF=5367 pct=95.16%, which matches the claimed 95.2% and clears the 90% floor. CI installs lcov, so the gate itself is untested by me.
  • python3 tool/check-docs.py - checked 72 doc pages + 3 linking files against 171 demo routes: 0 issue(s)
  • dart pub publish --dry-run - Package has 0 warnings. pubspec.lock is not in the archive, so the local path entry for fluttersdk_wind_diagnostics_contracts in the committed root lock (pre-existing on master, untouched here) does not reach pub.dev.
  • No lychee available locally, so the offline internal-link pass is unverified beyond check-docs.py.

@anilcancakir
anilcancakir merged commit 589e6ad into master Sep 8, 2026
12 checks passed
@anilcancakir
anilcancakir deleted the release/1.5.2 branch September 8, 2026 09:11
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