Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,29 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.


## 2.0.0-alpha.2

### Fixed

* Align wrapper and lazy nullability across parsing, encoding, and JSON Schema
export; validate discriminated codec outputs against their runtime branches.
* Reject duration inputs that cannot preserve their original milliseconds.
* Preserve custom JSON Schema vocabulary semantics, inert annotation payloads,
explicit format assertions, and fluent null policies through export.
* Preserve schema-first alias metadata and strict/passthrough precedence;
diagnose unsupported shape transformations instead of emitting wrong fields.
* Resolve same-build value-model and getter references, nullable nested Sets,
generated-name collisions, and application-generic nullability correctly.
* Substitute nested and recursive type bounds when resolving type-owned schemas.

### Documentation and release preparation

* Correct integration examples, converter templates, migration guidance, and
SDK floors; include new cross-platform contract regressions in CI.
* Coordinate all five packages at alpha.2 and require the corrected alpha.2
core in dependent packages. Published alpha.1 release notes remain unchanged.

## 2.0.0-alpha.1

### Breaking & Substitutions
Expand Down
28 changes: 19 additions & 9 deletions PUBLISHING.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,12 @@ new compatible features/packages, and major when any stable public API breaks.
For 1.7.0, the imported-pattern Unicode behavior change is a deliberately
accepted exception to this major-version policy.

The next candidate is **2.0.0-alpha.1**. It introduces single-pass `.g.dart`
The next candidate is **2.0.0-alpha.2**, following the already-published alpha.1.
It corrects runtime nullability and discriminated validation, duration overflow,
custom JSON Schema vocabulary preservation, and generator metadata, naming,
and generic-type contracts. Published alpha.1 notes remain unchanged.

The 2.0 release line introduces single-pass `.g.dart`
code generation without a runtime `json_serializable` delegation step, the
unified `@Validate.*` constraint annotation namespace, custom schema resolution
via `@Schemable(schemas: [...])` and automatic same-library detection,
Expand Down Expand Up @@ -49,7 +54,9 @@ References: [Melos versioning](https://melos.invertase.dev/commands/version),

1. Check pub.dev and tags before selecting the version; published versions and
their changelog sections are immutable.
2. Start a release branch from current `origin/main` and resolve dependencies:
2. Start from the appropriate release line: current `origin/main` for a stable
release, or the existing `origin/release/<major>.<minor>` branch for a
prerelease. Resolve dependencies:

```sh
dart pub get
Expand All @@ -58,7 +65,7 @@ References: [Melos versioning](https://melos.invertase.dev/commands/version),
3. Preview/prepare a coordinated version without creating commits or tags:

```sh
dart run melos version --manual-version=ack:2.0.0-alpha.1 --yes --no-git-commit-version
dart run melos version --manual-version=ack:2.0.0-alpha.2 --yes --no-git-commit-version
```

Use the named flag, not a positional package argument: the positional form
Expand All @@ -85,7 +92,7 @@ References: [Melos versioning](https://melos.invertase.dev/commands/version),
7. Validate the complete release from that clean commit:

```sh
dart scripts/verify_release_tag.dart v2.0.0-alpha.1 --skip-ancestry
dart scripts/verify_release_tag.dart v2.0.0-alpha.2 --skip-ancestry
dart run melos run ci
dart scripts/api_check.dart 1.7.0
dart scripts/publish_dry_run.dart
Expand Down Expand Up @@ -138,13 +145,16 @@ repository cannot configure pub.dev Admin settings on behalf of its owner.
After the release commit's CI/preflight succeeds:

```sh
git fetch origin main --tags
git fetch origin main release/2.0 --tags
# Use the exact reviewed release merge commit, not an arbitrary later main head.
git tag -a v2.0.0-alpha.1 <release-merge-sha> -m 'Ack 2.0.0 alpha 1'
dart scripts/verify_release_tag.dart v2.0.0-alpha.1
git push origin v2.0.0-alpha.1
git tag -a v2.0.0-alpha.2 <release-merge-sha> -m 'Ack 2.0.0 alpha 2'
dart scripts/verify_release_tag.dart v2.0.0-alpha.2 --main-ref=origin/release/2.0
git push origin v2.0.0-alpha.2
```

These commands target the 2.0 prerelease branch. Stable release tags must be
reachable from `origin/main`; use the verifier's default main reference for them.

Pushing the tag triggers `.github/workflows/release.yml`; there is no Melos
publish/release script. The workflow verifies the tag, reruns release preflight,
and publishes in dependency order:
Expand Down Expand Up @@ -172,4 +182,4 @@ After all five exact versions are visible, create the GitHub Release from the
existing tag using the prepared release notes and mark it as a prerelease for
alpha/beta versions. Before the first subsequent code
change, begin a new unreleased changelog section instead of editing the
2.0.0-alpha.1 notes.
2.0.0-alpha.2 notes (and preserve every earlier published section).
8 changes: 4 additions & 4 deletions docs/getting-started/installation.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ flutter pub add ack
```

The unversioned commands select the latest stable release. To select the
2.0.0-alpha.1 prerelease, add it to your `pubspec.yaml`:
2.0.0-alpha.2 prerelease, add it to your `pubspec.yaml`:

```yaml
dependencies:
ack: ^2.0.0-alpha.1
ack: ^2.0.0-alpha.2
```

## Optional code generator
Expand All @@ -38,10 +38,10 @@ Or add them to your `pubspec.yaml`:

```yaml
dependencies:
ack: ^2.0.0-alpha.1
ack: ^2.0.0-alpha.2

dev_dependencies:
ack_generator: ^2.0.0-alpha.1
ack_generator: ^2.0.0-alpha.2
build_runner: ^2.4.0
```

Expand Down
4 changes: 2 additions & 2 deletions docs/guides/creating-schema-converter-packages.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ environment:
# flutter: '>=3.41.2'

dependencies:
ack: ^2.0.0-alpha.1
ack: ^2.0.0-alpha.2
# Add target SDK dependency if needed
# <target_sdk>: ^x.y.z
meta: ^1.15.0
Expand Down Expand Up @@ -1028,7 +1028,7 @@ Converts Ack schemas to <Target> format for [use case]. Assumes familiarity with

\`\`\`yaml
dependencies:
ack: ^2.0.0-alpha.1
ack: ^2.0.0-alpha.2
ack_<target>: ^1.0.0
<target_sdk>: ^x.y.z # Required peer dependency
\`\`\`
Expand Down
4 changes: 2 additions & 2 deletions docs/guides/schema-converter-quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ environment:
# flutter: '>=3.41.2' # Uncomment if needed

dependencies:
ack: ^2.0.0-alpha.1
ack: ^2.0.0-alpha.2
# <target_sdk>: ^x.y.z # Add if needed
meta: ^1.15.0

Expand Down Expand Up @@ -332,7 +332,7 @@ void main() {

\`\`\`yaml
dependencies:
ack: ^2.0.0-alpha.1
ack: ^2.0.0-alpha.2
ack_<target>: ^1.0.0
\`\`\`

Expand Down
4 changes: 2 additions & 2 deletions example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ environment:


dependencies:
ack: ^2.0.0-alpha.1
ack: ^2.0.0-alpha.2

dev_dependencies:
ack_generator: ^2.0.0-alpha.1
ack_generator: ^2.0.0-alpha.2
build_runner: ^2.4.0
dart_code_metrics_presets: ^2.22.0
lints: ^5.0.0
Expand Down
2 changes: 1 addition & 1 deletion packages/ack/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## Unreleased
## 2.0.0-alpha.2

### Fixed

Expand Down
2 changes: 1 addition & 1 deletion packages/ack/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: ack
description: Schema validation and bidirectional codecs for Dart and Flutter
version: 2.0.0-alpha.1
version: 2.0.0-alpha.2
repository: https://github.com/btwld/ack
issue_tracker: https://github.com/btwld/ack/issues
homepage: https://concepta.dev/ack
Expand Down
7 changes: 6 additions & 1 deletion packages/ack_firebase_ai/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
## Unreleased
## 2.0.0-alpha.2

### Changed

* Require `ack: ^2.0.0-alpha.2` so consumers receive the corrected runtime
nullability, discriminated validation, and imported JSON Schema contracts.

### Documentation

Expand Down
4 changes: 2 additions & 2 deletions packages/ack_firebase_ai/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ Always validate model output with the same ACK schema after generation. Firebase

```yaml
dependencies:
ack: ^2.0.0-alpha.1
ack_firebase_ai: ^2.0.0-alpha.1
ack: ^2.0.0-alpha.2
ack_firebase_ai: ^2.0.0-alpha.2
firebase_ai: ^3.12.2
```

Expand Down
4 changes: 2 additions & 2 deletions packages/ack_firebase_ai/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: ack_firebase_ai
description: Firebase AI (Gemini) schema converter for the Ack validation library
version: 2.0.0-alpha.1
version: 2.0.0-alpha.2
repository: https://github.com/btwld/ack
issue_tracker: https://github.com/btwld/ack/issues
resolution: workspace
Expand All @@ -17,7 +17,7 @@ environment:


dependencies:
ack: ^2.0.0-alpha.1
ack: ^2.0.0-alpha.2
flutter:
sdk: flutter

Expand Down
7 changes: 6 additions & 1 deletion packages/ack_generator/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
## Unreleased
## 2.0.0-alpha.2

### Changed

* Require `ack: ^2.0.0-alpha.2` so consumers receive the corrected runtime
nullability, discriminated validation, and imported JSON Schema contracts.

### Fixed

Expand Down
4 changes: 2 additions & 2 deletions packages/ack_generator/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: ack_generator
description: Generates immutable models from Ack schemas and validated schemas from Dart classes
version: 2.0.0-alpha.1
version: 2.0.0-alpha.2
repository: https://github.com/btwld/ack
issue_tracker: https://github.com/btwld/ack/issues
resolution: workspace
Expand All @@ -24,7 +24,7 @@ dependencies:
pub_semver: ^2.1.4

# Ack packages (versions are overridden locally by Melos)
ack: ^2.0.0-alpha.1
ack: ^2.0.0-alpha.2

dev_dependencies:
build_runner: ^2.1.7
Expand Down
8 changes: 8 additions & 0 deletions packages/ack_json_schema_builder/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
## 2.0.0-alpha.2

### Changed

* Require `ack: ^2.0.0-alpha.2` so consumers receive the corrected runtime
nullability, discriminated validation, and imported JSON Schema contracts.
* Align with the coordinated alpha.2 release; the bridge public API is unchanged.

## 2.0.0-alpha.1

### Breaking
Expand Down
6 changes: 3 additions & 3 deletions packages/ack_json_schema_builder/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,14 @@ for the complete support matrix and reference/diagnostic behavior.

```yaml
dependencies:
ack: ^2.0.0-alpha.1
ack_json_schema_builder: ^2.0.0-alpha.1
ack: ^2.0.0-alpha.2
ack_json_schema_builder: ^2.0.0-alpha.2
json_schema_builder: ^0.1.3
```

### Compatibility

Requires `ack: ^2.0.0-alpha.1` and
Requires `ack: ^2.0.0-alpha.2` and
`json_schema_builder: >=0.1.3 <1.0.0` as peer dependencies. Report
[compatibility issues](https://github.com/btwld/ack/issues).

Expand Down
4 changes: 2 additions & 2 deletions packages/ack_json_schema_builder/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: ack_json_schema_builder
description: JSON Schema Builder converter for the Ack validation library
version: 2.0.0-alpha.1
version: 2.0.0-alpha.2
repository: https://github.com/btwld/ack
issue_tracker: https://github.com/btwld/ack/issues
resolution: workspace
Expand All @@ -14,7 +14,7 @@ environment:


dependencies:
ack: ^2.0.0-alpha.1
ack: ^2.0.0-alpha.2
json_schema_builder: ^0.1.3

dev_dependencies:
Expand Down
7 changes: 6 additions & 1 deletion packages/ack_mcp_dart/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
## Unreleased
## 2.0.0-alpha.2

### Changed

* Require `ack: ^2.0.0-alpha.2` so consumers receive the corrected runtime
nullability, discriminated validation, and imported JSON Schema contracts.

### Documentation

Expand Down
6 changes: 3 additions & 3 deletions packages/ack_mcp_dart/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ Transport, negotiation, cancellation, and lifecycle remain in `mcp_dart`.

```yaml
dependencies:
ack: ^2.0.0-alpha.1
ack_mcp_dart: ^2.0.0-alpha.1
ack: ^2.0.0-alpha.2
ack_mcp_dart: ^2.0.0-alpha.2
mcp_dart: ^2.4.2
```

Expand Down Expand Up @@ -141,7 +141,7 @@ New emitted keywords require revisiting this dialect assumption.
| Component | Supported / exercised |
| --- | --- |
| Dart | `>=3.11.0 <4.0.0` |
| ACK | `^2.0.0-alpha.1` |
| ACK | `^2.0.0-alpha.2` |
| mcp_dart | `^2.4.2` |
| MCP stable discovery | `2026-07-28` |
| MCP initialization | `2025-11-25`, `2025-06-18` |
Expand Down
4 changes: 2 additions & 2 deletions packages/ack_mcp_dart/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: ack_mcp_dart
description: MCP tool schemas and typed argument validation for Ack and mcp_dart
version: 2.0.0-alpha.1
version: 2.0.0-alpha.2
repository: https://github.com/btwld/ack
issue_tracker: https://github.com/btwld/ack/issues
resolution: workspace
Expand All @@ -14,7 +14,7 @@ environment:


dependencies:
ack: ^2.0.0-alpha.1
ack: ^2.0.0-alpha.2
mcp_dart: ^2.4.2

dev_dependencies:
Expand Down
Loading