Skip to content

release: 1.5.1 - #198

Merged
anilcancakir merged 3 commits into
masterfrom
release/1.5.1
Sep 7, 2026
Merged

release: 1.5.1#198
anilcancakir merged 3 commits into
masterfrom
release/1.5.1

Conversation

@anilcancakir

@anilcancakir anilcancakir commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator

What

Patch release. Two fixes, both in WText's casing transforms.

  • Locale-aware casing (Cast text under the ambient locale, not Dart's default #195). uppercase / lowercase / capitalize cast under the ambient locale, so a Turkish app renders İZLEYİCİLER and GÜVENLİK instead of IZLEYICILER and GÜVENLIK. With no Localizations ancestor the transform falls back to Dart's locale-independent casing, which is what every bare widget test gets.
  • Per-word capitalize (fix(w_text): capitalize every word, not just the leading letter #197). It raised the first letter of the string, where the doc page, the demo gallery and CSS all promise the first letter of every word. The word rule was measured in Chromium over 32 strings: well-known is Well-Known, read/write is Read/Write, while 3rd party stays 3rd Party, l'orange stays L'orange and decomposed NFD text no longer capitalises mid-word.

Expect on upgrade: a multi-word string carrying capitalize now capitalises every word, where before only the leading letter moved.

Version surfaces

The patch set, five files:

File Change
pubspec.yaml version: 1.5.1
example/pubspec.yaml version: 1.5.1+1
dartdoc_options.yaml source-link tag blob/1.5.1/
llms.txt Version 1.5.1 stable
CHANGELOG.md [Unreleased] promoted to [1.5.1] - 2026-09-07, tag reference added, compare reference retargeted

skills/wind-ui/ needs no version move for a patch: the H1, the description prefix and the fluttersdk_wind 1.5.x marker all still read right, and the skill's own version went to 2.13.2 with the content change in #197.

Testing

  • dart analyze: clean in the package and in example/
  • dart format --set-exit-if-changed: no diff
  • flutter test: 1760 passing, the one pre-existing skip
  • ./tool/coverage.sh 90: 94.8%
  • python3 tool/check-docs.py: 0 issues
  • dart pub publish --dry-run: the only warning was this bump sitting uncommitted, so it clears with the commit
  • Release-notes extraction (awk over the ## [1.5.1] section, the check that fails the github-release job on empty notes): returns both entries

After merge

git tag 1.5.1 && git push origin 1.5.1 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.

Summary by CodeRabbit

  • Release
    • Published version 1.5.1.
    • Updated package and example application version information to 1.5.1.
    • Updated documentation links and project metadata to reflect the 1.5.1 stable release.
    • Refreshed release comparison references and added the 1.5.1 release link for easier navigation between versions.

Two fixes, both in `WText`'s casing transforms and both found by driving a real
app rather than by reading the code.

`uppercase` / `lowercase` / `capitalize` now cast under the ambient locale, so
a Turkish app renders `İZLEYİCİLER` and `GÜVENLİK` instead of `IZLEYICILER` and
`GÜVENLIK` (#195). And `capitalize` raises the first letter of every word
rather than of the string, which is what its own documentation, the demo
gallery and CSS have promised all along (#197). The word rule was measured in
Chromium over 32 strings, so `well-known` is `Well-Known`, `3rd party` stays
`3rd Party`, and decomposed NFD text no longer capitalises mid-word.

Expect one visible change on upgrade: a multi-word string carrying `capitalize`
now capitalises every word.

Five surfaces bumped, the patch-release set: `pubspec.yaml`,
`example/pubspec.yaml`, the `dartdoc_options.yaml` source-link tag, the
`llms.txt` version string, and the `CHANGELOG.md` promotion with its two link
references. `skills/wind-ui/` needs no version move for a patch: the H1, the
description prefix and the `1.5.x` marker all still read right, and the skill's
own version went to 2.13.2 with the content change in #197.

Gates: `dart analyze` clean, `dart format` no diff, `flutter test` 1760 passing
with the one pre-existing skip, `./tool/coverage.sh 90` at 94.8%,
`tool/check-docs.py` 0 issues, and `dart pub publish --dry-run` clean once this
commit lands (the only warning it raised was this bump sitting uncommitted).
@coderabbitai

coderabbitai Bot commented Sep 7, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Team

Run ID: 35de66f1-eebf-430d-b16a-b4328b53ac3a

📥 Commits

Reviewing files that changed from the base of the PR and between 420360a and fc0c12e.

⛔ Files ignored due to path filters (1)
  • example/pubspec.lock is excluded by !**/*.lock
📒 Files selected for processing (1)
  • CHANGELOG.md

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The project version was updated from 1.5.0 to 1.5.1 across package metadata, the example application, documentation, dartdoc links, and changelog references.

Changes

Release metadata

Layer / File(s) Summary
Align version references
pubspec.yaml, example/pubspec.yaml, dartdoc_options.yaml, llms.txt
Package and example versions, project documentation, and dartdoc source links now use version 1.5.1.
Publish release changelog
CHANGELOG.md
The changelog now contains the 1.5.1 release heading and updated comparison and release links.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Merge Risk: ⚪ Minimal · up to fc0c1

The release changelog and version references are aligned for 1.5.1, with no remaining merge-readiness risk identified.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the primary change as the 1.5.1 release.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release/1.5.1

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 7, 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 7, 2026

Copy link
Copy Markdown

Note

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

Clean release bump: all five version surfaces are consistent at 1.5.1, every gate passes locally, and the one gap is a lockfile the previous release chose to commit.

Minor

example/pubspec.lock:129 (maintainability) — the path-dep entry still records version: "1.5.0", so the first flutter pub get in example/ after this merge leaves a dirty working tree. The 1.5.0 release commit committed this file for exactly this reason, and its own message called out 1.4.1 omitting it. Verified: after flutter pub get, git status --porcelain shows M example/pubspec.lock with the sole hunk -version: "1.5.0" / +version: "1.5.1". Nothing in CI reads it, so this blocks nothing.

Not from this PR, worth a glance before tagging

pubspec.lock also goes dirty on pub get, but for a different reason: the committed file pins fluttersdk_wind_diagnostics_contracts to path: ../wind_diagnostics_contracts (source: path), where resolution against pubspec.yaml's ^1.1.0 gives the hosted pub.dev entry. That predates this branch and pubspec.yaml itself is correct, so publish is unaffected; it just means a committed lockfile records a local sibling checkout.

Version surfaces

Checked each against the base: pubspec.yaml 1.5.1, example/pubspec.yaml 1.5.1+1, dartdoc_options.yaml blob/1.5.1/, llms.txt "Version 1.5.1 stable", CHANGELOG.md [Unreleased] promoted to [1.5.1] - 2026-09-07 with the tag reference added and the compare reference retargeted to 1.5.1...HEAD. A repo-wide grep for 1.5.0 outside CHANGELOG.md and pubspec.lock returns one hit, a prose comment in publish.yml about the prerelease tag filter, which is correct as written. The claim that skills/wind-ui/ needs no move holds: SKILL.md reads # Wind UI 1.5, the marker reads fluttersdk_wind 1.5.x, and all ten reference H1s read Wind 1.5.

Tests

No source change here, so nothing new to cover. The two fixes this release ships landed on master in #195 and #197 with their own tests; the suite runs green on this head.

Checks I ran

  • flutter pub get: needed first, the checkout had no .dart_tool/package_config.json (without it the formatter falls back to the newest style and reports 296/388 files changed, which is an artefact, not a diff)
  • dart format --output=none --set-exit-if-changed lib/ test/ example/lib/: exit 0, Formatted 388 files (0 changed)
  • dart analyze lib/ test/ example/lib/: No issues found!
  • flutter test: +1760 ~1: All tests passed! — matches the description's 1760 and the one pre-existing skip
  • ./tool/coverage.sh 90: exit 0 (the tail of the log captured the test lines, not the percentage, so I confirm the gate passed rather than the 94.8% figure)
  • python3 tool/check-docs.py: checked 72 doc pages + 3 linking files against 171 demo routes: 0 issue(s)
  • Release-notes extraction: ran publish.yml's exact awk over ## [1.5.1], returns 7 lines including both ### Fixed entries, so the github-release empty-notes guard will not trip
  • Did not run: dart pub publish --dry-run, cd example && flutter run -d chrome

`example/pubspec.lock` records the path dependency's version, so it still read
1.5.0 and the first `flutter pub get` in `example/` after this merge would have
left a dirty tree. The 1.5.0 release committed this same line for the same
reason and its message says so; 1.4.1 omitted it, which is why the entry was
stale going into that release.

Produced by running `flutter pub get` in `example/` rather than by hand, and the
diff is the one line: no `source: path` churn from the gitignored
`pubspec_overrides.yaml` this time, and the root `pubspec.lock` is untouched.
@anilcancakir

Copy link
Copy Markdown
Collaborator Author

Taken in fc0c12e, and the precedent is exactly as described: git show 1c9b9a9 -- example/pubspec.lock is the single hunk -version: "1.4.1" / +version: "1.5.0", and that commit's message calls out why it is there.

Produced by running flutter pub get in example/ rather than editing the line, and the diff came back as the one line with no source: path churn from the gitignored pubspec_overrides.yaml and the root pubspec.lock untouched.

So the patch-release surface is seven files, not the six the checklist has been carrying. Noted for the next one.

The second note is right too and stays out of this PR: the root pubspec.lock records fluttersdk_wind_diagnostics_contracts as source: path because this workspace develops the bridge alongside wind through a gitignored pubspec_overrides.yaml. pubspec.yaml carries the hosted ^1.1.0 constraint, which is what pub.dev resolves, so publishing is unaffected.

@kodizm

kodizm Bot commented Sep 7, 2026

Copy link
Copy Markdown

Note

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

Incremental re-review of the three commits since 420360a: the lockfile finding is fixed and the rest is a merge of an already-reviewed CI change, so nothing new to raise.

What changed: fc0c12e bumps example/pubspec.lock to 1.5.1, and the merge of master (8354e9b) brings #199 - the lychee --accept widening in .github/workflows/docs-link-check.yml plus its ### Quality CHANGELOG entry, which now lands inside the promoted [1.5.1] section rather than an [Unreleased] one. That placement is right: the change ships with this tag, and CLAUDE.md files CI infra under Quality.

No findings.

Tests

No source change in these commits; the CI workflow edit is not unit-testable and #199 carried its own measured verification against pinned lychee 0.24.2.

Checks I ran

  • cd example && flutter pub get then git status --porcelain: exit 0, empty output - the earlier dirty-lockfile finding is resolved, and the root pubspec.lock came back clean in this checkout too
  • python3 tool/check-docs.py: checked 72 doc pages + 3 linking files against 171 demo routes: 0 issue(s)
  • Release-notes extraction over ## [1.5.1]: returns the two ### Fixed entries plus the new ### Quality one, so the github-release empty-notes guard still will not trip
  • CHANGELOG link references re-checked: [Unreleased] compares from 1.5.1...HEAD, [1.5.1] tag reference present
  • Did not run: flutter test / ./tool/coverage.sh (no source change since the green run in my earlier review), actionlint (not installed here), dart pub publish --dry-run

@anilcancakir
anilcancakir merged commit 7935919 into master Sep 7, 2026
12 checks passed
@anilcancakir
anilcancakir deleted the release/1.5.1 branch September 7, 2026 20:55
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