diff --git a/CHANGELOG.md b/CHANGELOG.md index 555bcdf..0a3dd0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ This project follows [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0. --- -## [Unreleased] +## [1.4.0] - 2026-08-21 ### Added @@ -40,6 +40,7 @@ This project follows [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0. - `doc/utilities/context-extensions.md` demonstrated `context.windTheme.setBrightness(Brightness.dark)`, a method `WindThemeController` has never exposed, so a reader following the page hit a compile error. Replaced with the two calls that actually pin a preference: `toggleTheme()` (which sets `syncWithSystem: false` itself) and `setTheme(data.copyWith(brightness: ..., syncWithSystem: false))`, plus `resetToSystem()` to hand control back. A bare `updateTheme(brightness: ...)` is the partial-update call the framework's own `didChangePlatformBrightness` listener makes, so with `syncWithSystem` still true the next OS change overwrites it. (`doc/utilities/context-extensions.md`) - `llms.txt` pointed `WFormMultiSelect` at `widgets/w-form-multiselect.md`, which does not exist; the widget is documented inside `w-form-select.md`. (`llms.txt`) - The README acceptance criterion in `CLAUDE.md` still named the pre-1.2.0 roster (22 widgets, 19 parsers), which is what a future session would have synced the README back to. It now matches the shipped surface (27 widgets, 20 parsers, 24 theme fields). (`CLAUDE.md`) +- Release surfaces moved to the 1.4 line in one pass: `pubspec.yaml`, `example/pubspec.yaml`, the `dartdoc_options.yaml` source-link tag (which pins generated dartdoc line links to the release tag, so a stale value points readers at the previous release's line numbers), the `llms.txt` version string, and the nine `skills/wind-ui/references/*.md` H1s plus the SKILL.md description and version marker. The skill titles are the ones that rot quietly: they lagged a release twice already, at 1.2.0 and again at 1.3.0. (`pubspec.yaml`, `example/pubspec.yaml`, `dartdoc_options.yaml`, `llms.txt`, `skills/wind-ui/`) ## [1.3.0] - 2026-08-03 @@ -243,7 +244,8 @@ Production deps: `flutter` (SDK), `flutter_svg ^2.0.0`, `fluttersdk_wind_diagnos The 1.0.0-alpha.1 through 1.0.0-alpha.10 release notes (Feb 2026 to May 2026) are preserved in git history and on the `v0` branch. The 0.0.x line is end-of-life; consumers pin to `^1.0.0` going forward. -[Unreleased]: https://github.com/fluttersdk/wind/compare/1.3.0...HEAD +[Unreleased]: https://github.com/fluttersdk/wind/compare/1.4.0...HEAD +[1.4.0]: https://github.com/fluttersdk/wind/releases/tag/1.4.0 [1.3.0]: https://github.com/fluttersdk/wind/releases/tag/1.3.0 [1.2.1]: https://github.com/fluttersdk/wind/releases/tag/1.2.1 [1.2.0]: https://github.com/fluttersdk/wind/releases/tag/1.2.0 diff --git a/dartdoc_options.yaml b/dartdoc_options.yaml index 07be3e7..07ad5e4 100644 --- a/dartdoc_options.yaml +++ b/dartdoc_options.yaml @@ -1,3 +1,3 @@ dartdoc: linkTo: - url: 'https://github.com/fluttersdk/wind/blob/1.3.0/%f%#L%l%' + url: 'https://github.com/fluttersdk/wind/blob/1.4.0/%f%#L%l%' diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 576c2b1..afa7341 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -14,7 +14,7 @@ publish_to: 'none' # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 1.3.0+1 +version: 1.4.0+1 environment: sdk: ">=3.4.0 <4.0.0" diff --git a/llms.txt b/llms.txt index 764d94d..2bade77 100644 --- a/llms.txt +++ b/llms.txt @@ -1,6 +1,6 @@ # fluttersdk_wind -> Tailwind CSS for Flutter. A utility-first styling framework that maps `className` strings to optimized Flutter widget trees, with 24-field `WindThemeData` theming, responsive prefixes (`sm:` / `md:` / `lg:` / `xl:` / `2xl:`), `dark:`, state prefixes (`hover:` / `focus:` / `disabled:` / `loading:` / `selected:`), platform prefixes (`ios:` / `android:` / `web:` / `mobile:`), 27 W-prefix widgets, `WindRecipe` / `WindSlotRecipe` variant composition, server-driven UI via `WDynamic`, and three AI integration layers (hosted MCP server, Claude Code skill, and a skill distributed to 8+ AI clients via fluttersdk/ai). Open Source. Tailwind syntax. Flutter native. Version 1.3.0 stable. +> Tailwind CSS for Flutter. A utility-first styling framework that maps `className` strings to optimized Flutter widget trees, with 24-field `WindThemeData` theming, responsive prefixes (`sm:` / `md:` / `lg:` / `xl:` / `2xl:`), `dark:`, state prefixes (`hover:` / `focus:` / `disabled:` / `loading:` / `selected:`), platform prefixes (`ios:` / `android:` / `web:` / `mobile:`), 27 W-prefix widgets, `WindRecipe` / `WindSlotRecipe` variant composition, server-driven UI via `WDynamic`, and three AI integration layers (hosted MCP server, Claude Code skill, and a skill distributed to 8+ AI clients via fluttersdk/ai). Open Source. Tailwind syntax. Flutter native. Version 1.4.0 stable. **Stack**: Flutter >=3.27.0 · Dart >=3.4.0 · Runtime deps: `flutter_svg`, `fluttersdk_wind_diagnostics_contracts`. No `mockito`, no state management library, no router. diff --git a/pubspec.yaml b/pubspec.yaml index b7e5aab..3321a9e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: fluttersdk_wind description: Tailwind CSS for Flutter. Write className='flex p-4 bg-white dark:bg-gray-800' and Wind renders optimized widget trees with dark mode and responsive breakpoints. -version: 1.3.0 +version: 1.4.0 homepage: https://fluttersdk.com/wind repository: https://github.com/fluttersdk/wind issue_tracker: https://github.com/fluttersdk/wind/issues diff --git a/skills/wind-ui/SKILL.md b/skills/wind-ui/SKILL.md index 62e9389..2ef0db4 100644 --- a/skills/wind-ui/SKILL.md +++ b/skills/wind-ui/SKILL.md @@ -1,11 +1,11 @@ --- name: wind-ui -description: "fluttersdk_wind 1.3: utility-first Flutter styling with Tailwind-syntax className strings. 27 W-prefix widgets (WDiv, WText, WButton, WInput, WSelect, WDatePicker, WPopover, WCard, WTabs, plus five WForm* wrappers) parse className into a cached immutable WindStyle; WindRecipe and WindSlotRecipe compose variant classNames. Prefixes stack freely (dark: / hover: / focus: / md: / ios: / selected: / disabled: / custom), the last class in a family wins, an unrecognized token drops with a one-time kDebugMode hint, and every color token carries a dark: peer in the same className. TRIGGER when: writing or editing UI in a Flutter app that depends on fluttersdk_wind; any className string; any W-prefix widget; any WindTheme or WindThemeData reference; the user mentions Tailwind for Flutter, utility-first, className, or wind-ui. DO NOT TRIGGER when: backend, API, or state-management work that never touches a widget tree; a Flutter project without fluttersdk_wind in pubspec.yaml; Material-only widgets (Scaffold, AppBar, Dialog) with no Wind content inside." +description: "fluttersdk_wind 1.4: utility-first Flutter styling with Tailwind-syntax className strings. 27 W-prefix widgets (WDiv, WText, WButton, WInput, WSelect, WDatePicker, WPopover, WCard, WTabs, plus five WForm* wrappers) parse className into a cached immutable WindStyle; WindRecipe and WindSlotRecipe compose variant classNames. Prefixes stack freely (dark: / hover: / focus: / md: / ios: / selected: / disabled: / custom), the last class in a family wins, an unrecognized token drops with a one-time kDebugMode hint, and every color token carries a dark: peer in the same className. TRIGGER when: writing or editing UI in a Flutter app that depends on fluttersdk_wind; any className string; any W-prefix widget; any WindTheme or WindThemeData reference; the user mentions Tailwind for Flutter, utility-first, className, or wind-ui. DO NOT TRIGGER when: backend, API, or state-management work that never touches a widget tree; a Flutter project without fluttersdk_wind in pubspec.yaml; Material-only widgets (Scaffold, AppBar, Dialog) with no Wind content inside." when_to_use: "Any task that produces, modifies, or audits Wind-styled UI: composing a className, picking the right W-widget, wiring a Form field, customizing WindThemeData, pairing dark-mode classes, debugging a layout or a RenderFlex overflow, building a popover, rendering a JSON tree via WDynamic, or composing a WindRecipe. Load it before the first line of new UI, and equally when auditing UI that already exists." version: 2.12.0 --- - + # Wind UI 1.3 diff --git a/skills/wind-ui/references/debug.md b/skills/wind-ui/references/debug.md index 9859a9b..8635193 100644 --- a/skills/wind-ui/references/debug.md +++ b/skills/wind-ui/references/debug.md @@ -1,4 +1,4 @@ -# Wind 1.3: Debug bridge, parser cache, logger +# Wind 1.4: Debug bridge, parser cache, logger Wiring `Wind.installDebugResolver()` for E2E tooling (Dusk, Telescope, Playwright), understanding the parser cache (and why tests need `WindParser.clearCache()`), and reading `WindLogger` output for performance / composition debugging. diff --git a/skills/wind-ui/references/design-culture.md b/skills/wind-ui/references/design-culture.md index 04041c6..e3c98f9 100644 --- a/skills/wind-ui/references/design-culture.md +++ b/skills/wind-ui/references/design-culture.md @@ -1,4 +1,4 @@ -# Wind 1.3: Design culture +# Wind 1.4: Design culture Taste, expressed as className tokens. Every other reference file answers "does this token exist and what does it do"; this one answers "which token should this be". Reach for it when the task is a screen or a component with no design spec attached, when a layout renders correctly and still looks wrong, or when a reviewer says "it works but it feels off". diff --git a/skills/wind-ui/references/dynamic.md b/skills/wind-ui/references/dynamic.md index 836ed94..1ba6d72 100644 --- a/skills/wind-ui/references/dynamic.md +++ b/skills/wind-ui/references/dynamic.md @@ -1,4 +1,4 @@ -# Wind 1.3: WDynamic (server-driven UI) +# Wind 1.4: WDynamic (server-driven UI) JSON node tree → Wind widget tree. Reach for this file when rendering UI from a CMS, A/B framework, remote-config service, or any source where the widget shape is decided at runtime. diff --git a/skills/wind-ui/references/forms.md b/skills/wind-ui/references/forms.md index 9fe2057..d1e2755 100644 --- a/skills/wind-ui/references/forms.md +++ b/skills/wind-ui/references/forms.md @@ -1,4 +1,4 @@ -# Wind 1.3: Forms +# Wind 1.4: Forms Building forms with validation. Use this file when picking between raw `W*` and `WForm*`, wiring `FormState.validate()`, handling async / server-side errors, or working around the WFormDatePicker range gotcha. diff --git a/skills/wind-ui/references/layouts.md b/skills/wind-ui/references/layouts.md index 5e464aa..96ba8e0 100644 --- a/skills/wind-ui/references/layouts.md +++ b/skills/wind-ui/references/layouts.md @@ -1,4 +1,4 @@ -# Wind 1.3: Layouts +# Wind 1.4: Layouts 12+ canonical layout recipes plus the Flutter constraint model that drives every overflow. Reach for this file when picking a layout pattern or recovering from RenderFlex / unbounded-height assertions. diff --git a/skills/wind-ui/references/tailwind-divergence.md b/skills/wind-ui/references/tailwind-divergence.md index ec10afa..3b23d50 100644 --- a/skills/wind-ui/references/tailwind-divergence.md +++ b/skills/wind-ui/references/tailwind-divergence.md @@ -1,4 +1,4 @@ -# Wind 1.3: Wind ≠ Tailwind divergence catalog +# Wind 1.4: Wind ≠ Tailwind divergence catalog Comprehensive map of where Wind diverges from Tailwind CSS v3 and v4. Reach for this file when migrating a className from web, recovering from a "this token does not seem to do anything" stall, or auditing a Tailwind-trained codebase. diff --git a/skills/wind-ui/references/theme.md b/skills/wind-ui/references/theme.md index 0bd03ba..3a18f36 100644 --- a/skills/wind-ui/references/theme.md +++ b/skills/wind-ui/references/theme.md @@ -1,4 +1,4 @@ -# Wind 1.3: Theme, dark mode, responsive, platform +# Wind 1.4: Theme, dark mode, responsive, platform Customizing `WindThemeData`, brightness control, breakpoint scale, platform prefixes. Reach for this file when adding custom colors, overriding the spacing scale, wiring a dark-mode toggle, defining a custom breakpoint, or recovering from the OverlayEntry context caveat. diff --git a/skills/wind-ui/references/tokens.md b/skills/wind-ui/references/tokens.md index 6af2b27..f7b3b64 100644 --- a/skills/wind-ui/references/tokens.md +++ b/skills/wind-ui/references/tokens.md @@ -1,4 +1,4 @@ -# Wind 1.3: Token catalog +# Wind 1.4: Token catalog Exhaustive per-parser token reference. Reach for this file when verifying a className token exists, picking the right family, looking up an arbitrary-value pattern, or auditing className for unsupported syntax. diff --git a/skills/wind-ui/references/widgets.md b/skills/wind-ui/references/widgets.md index 146bb56..c97eb59 100644 --- a/skills/wind-ui/references/widgets.md +++ b/skills/wind-ui/references/widgets.md @@ -1,4 +1,4 @@ -# Wind 1.3: Widget reference +# Wind 1.4: Widget reference Full constructor surface, every named parameter, every default. Reach for this file when picking a widget, wiring callbacks, or recovering from a "what does this prop do?" stall.