diff --git a/CHANGELOG.md b/CHANGELOG.md index 03968569..22807095 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,31 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 1.7.0-beta.7 + +* Strict JSON Schema import (`Ack.fromJsonSchema()`) now supports `multipleOf` + with exact decimal division (shared with native `.multipleOf()`) and reports + `keywordLocation` on `multipleOf` validation failures, enabling round-trips + from `Ack.integer().multipleOf(...)` and `Ack.double().multipleOf(...)`. +* Strict JSON Schema import now recognizes Ack's built-in string formats + (`date-time`, `date`, `email`, `uuid`, `uri`, `ipv4`, `ipv6`), standard + numeric format bounds (`int32`, `int64`, `uint32`, `uint64`, `float`, + `double`), and `x-*` vendor extension annotations (including `x-transformed` + from `AckSchema.transform(...)`), while continuing to reject unknown formats + and non-`x-*` extension keywords. +* Strict JSON Schema import now accepts Draft-07 `$schema` URIs + (`http(s)://json-schema.org/draft-07/schema` with or without a trailing `#`), + so schemas exported by `.toJsonSchema()` can be re-imported without stripping + `$schema`. +* Speed up imported JSON Schema compilation and validation, `toJsonSchema()` on + native schemas, and collection parse/encode results (`Ack.object()`, + `Ack.list()`, `Ack.map()`). Error output, exported JSON Schema, and + unmodifiable result detachment are unchanged. +* Align all five publishable packages at 1.7.0-beta.7. Adapter and generator + APIs and compatible dependency minimums are unchanged. The beta.3 annotation + and generator migrations and the beta.5 imported-pattern change still apply + when upgrading from earlier versions. + ## 1.7.0-beta.6 * `JsonSchemaValidationError` reports `keywordLocation`, the evaluation path diff --git a/PUBLISHING.md b/PUBLISHING.md index 07ab30ef..f54544e4 100644 --- a/PUBLISHING.md +++ b/PUBLISHING.md @@ -12,15 +12,17 @@ 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 **1.7.0-beta.6**. It adds `keywordLocation` to imported -JSON Schema validation errors, reports imported `uniqueItems` failures at the -array, and speeds up `safeParse`, `safeEncode`, and imported-schema validation. +The next candidate is **1.7.0-beta.7**. It adds `multipleOf` validation, +built-in string and numeric `format` assertions, `x-*` vendor extension +annotation tolerance, and Draft-07 `$schema` URI support to strict JSON Schema +import (`Ack.fromJsonSchema()`), and speeds up imported-schema compilation and +validation, `toJsonSchema()`, and collection parse/encode results. The beta.5 imported-pattern change to ECMA-262 Unicode mode still applies when upgrading from stable 1.6.2 or earlier 1.7.0 betas; review imported patterns, including identity escapes and expressions that count UTF-16 code units. Native `Ack.string().matches()` keeps its Dart regex contract. The beta.3 annotation and generator migration still applies to consumers coming from earlier -versions; beta.6 adds no new generator migration. The API check compares all +versions; beta.7 adds no new generator migration. The API check compares all five packages against 1.6.2; generator compatibility also requires the consumer build and runtime tests because the API check cannot inspect generated consumer code. @@ -58,7 +60,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:1.7.0-beta.6 --yes --no-git-commit-version + dart run melos version --manual-version=ack:1.7.0-beta.7 --yes --no-git-commit-version ``` Use the named flag, not a positional package argument: the positional form @@ -85,7 +87,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 v1.7.0-beta.6 --skip-ancestry + dart scripts/verify_release_tag.dart v1.7.0-beta.7 --skip-ancestry dart run melos run ci dart scripts/api_check.dart 1.6.2 dart scripts/publish_dry_run.dart @@ -139,9 +141,9 @@ After the release commit's CI/preflight succeeds: ```sh git fetch origin main --tags # Use the exact reviewed release merge commit, not an arbitrary later main head. -git tag -a v1.7.0-beta.6 -m 'Ack 1.7.0 beta 6' -dart scripts/verify_release_tag.dart v1.7.0-beta.6 -git push origin v1.7.0-beta.6 +git tag -a v1.7.0-beta.7 -m 'Ack 1.7.0 beta 7' +dart scripts/verify_release_tag.dart v1.7.0-beta.7 +git push origin v1.7.0-beta.7 ``` Pushing the tag triggers `.github/workflows/release.yml`; there is no Melos @@ -171,4 +173,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 beta versions. Before the first subsequent code change, begin a new unreleased changelog section instead of editing the -1.7.0-beta.6 notes. +1.7.0-beta.7 notes. diff --git a/docs/getting-started/installation.mdx b/docs/getting-started/installation.mdx index 2938cdc3..22b58a6b 100644 --- a/docs/getting-started/installation.mdx +++ b/docs/getting-started/installation.mdx @@ -17,11 +17,11 @@ flutter pub add ack ``` The unversioned commands select the latest stable release. To select the -1.7.0-beta.6 prerelease, add it to your `pubspec.yaml`: +1.7.0-beta.7 prerelease, add it to your `pubspec.yaml`: ```yaml dependencies: - ack: ^1.7.0-beta.6 + ack: ^1.7.0-beta.7 ``` ## Optional code generator @@ -38,10 +38,10 @@ Or add them to your `pubspec.yaml`: ```yaml dependencies: - ack: ^1.7.0-beta.6 + ack: ^1.7.0-beta.7 dev_dependencies: - ack_generator: ^1.7.0-beta.6 + ack_generator: ^1.7.0-beta.7 build_runner: ^2.4.0 ``` diff --git a/packages/ack/CHANGELOG.md b/packages/ack/CHANGELOG.md index b7374aaf..ea2248e1 100644 --- a/packages/ack/CHANGELOG.md +++ b/packages/ack/CHANGELOG.md @@ -1,4 +1,4 @@ -## Unreleased +## 1.7.0-beta.7 ### Added diff --git a/packages/ack/pubspec.yaml b/packages/ack/pubspec.yaml index f872df39..1544ad9f 100644 --- a/packages/ack/pubspec.yaml +++ b/packages/ack/pubspec.yaml @@ -1,6 +1,6 @@ name: ack description: Schema validation and bidirectional codecs for Dart and Flutter -version: 1.7.0-beta.6 +version: 1.7.0-beta.7 repository: https://github.com/btwld/ack issue_tracker: https://github.com/btwld/ack/issues homepage: https://concepta.dev/ack diff --git a/packages/ack_firebase_ai/CHANGELOG.md b/packages/ack_firebase_ai/CHANGELOG.md index 05a55693..7ee77e10 100644 --- a/packages/ack_firebase_ai/CHANGELOG.md +++ b/packages/ack_firebase_ai/CHANGELOG.md @@ -1,3 +1,10 @@ +## 1.7.0-beta.7 + +### Changed + +* Align with coordinated Ack 1.7.0-beta.7. This package has no source or + public API changes from beta.6; its compatible dependency minimum is unchanged. + ## 1.7.0-beta.6 ### Changed diff --git a/packages/ack_firebase_ai/README.md b/packages/ack_firebase_ai/README.md index ac672db3..8cfd8585 100644 --- a/packages/ack_firebase_ai/README.md +++ b/packages/ack_firebase_ai/README.md @@ -24,7 +24,7 @@ Always validate model output with the same ACK schema after generation. Firebase ```yaml dependencies: ack: ^1.2.0 - ack_firebase_ai: ^1.7.0-beta.6 + ack_firebase_ai: ^1.7.0-beta.7 firebase_ai: ^3.12.2 ``` diff --git a/packages/ack_firebase_ai/pubspec.yaml b/packages/ack_firebase_ai/pubspec.yaml index b92a2825..118120db 100644 --- a/packages/ack_firebase_ai/pubspec.yaml +++ b/packages/ack_firebase_ai/pubspec.yaml @@ -1,6 +1,6 @@ name: ack_firebase_ai description: Firebase AI (Gemini) schema converter for the Ack validation library -version: 1.7.0-beta.6 +version: 1.7.0-beta.7 repository: https://github.com/btwld/ack issue_tracker: https://github.com/btwld/ack/issues resolution: workspace diff --git a/packages/ack_generator/CHANGELOG.md b/packages/ack_generator/CHANGELOG.md index 04fddef1..8f7ebd94 100644 --- a/packages/ack_generator/CHANGELOG.md +++ b/packages/ack_generator/CHANGELOG.md @@ -1,3 +1,10 @@ +## 1.7.0-beta.7 + +### Changed + +* Align with coordinated Ack 1.7.0-beta.7. This package has no source or + public API changes from beta.6; its compatible dependency minimum is unchanged. + ## 1.7.0-beta.6 ### Changed diff --git a/packages/ack_generator/pubspec.yaml b/packages/ack_generator/pubspec.yaml index fc2d6619..25ba9d43 100644 --- a/packages/ack_generator/pubspec.yaml +++ b/packages/ack_generator/pubspec.yaml @@ -1,6 +1,6 @@ name: ack_generator description: Generates immutable models from Ack schemas and validated schemas from Dart classes -version: 1.7.0-beta.6 +version: 1.7.0-beta.7 repository: https://github.com/btwld/ack issue_tracker: https://github.com/btwld/ack/issues resolution: workspace diff --git a/packages/ack_json_schema_builder/CHANGELOG.md b/packages/ack_json_schema_builder/CHANGELOG.md index f48cf04d..ec134cdc 100644 --- a/packages/ack_json_schema_builder/CHANGELOG.md +++ b/packages/ack_json_schema_builder/CHANGELOG.md @@ -1,3 +1,12 @@ +## 1.7.0-beta.7 + +### Changed + +* When paired with `ack` 1.7.0-beta.7 or later, imported builder schemas inherit + `multipleOf` validation, built-in string and numeric `format` assertions, + `x-*` vendor extension support, and Draft-07 `$schema` URI support. The + bridge's public API and compatible dependency minimum are unchanged. + ## 1.7.0-beta.6 ### Changed diff --git a/packages/ack_json_schema_builder/README.md b/packages/ack_json_schema_builder/README.md index 7b2bc10c..20164790 100644 --- a/packages/ack_json_schema_builder/README.md +++ b/packages/ack_json_schema_builder/README.md @@ -47,8 +47,8 @@ for the complete support matrix and reference/diagnostic behavior. ```yaml dependencies: - ack: ^1.7.0-beta.6 - ack_json_schema_builder: ^1.7.0-beta.6 + ack: ^1.7.0-beta.7 + ack_json_schema_builder: ^1.7.0-beta.7 json_schema_builder: ^0.1.3 ``` diff --git a/packages/ack_json_schema_builder/pubspec.yaml b/packages/ack_json_schema_builder/pubspec.yaml index 711f5d5b..a82bce9a 100644 --- a/packages/ack_json_schema_builder/pubspec.yaml +++ b/packages/ack_json_schema_builder/pubspec.yaml @@ -1,6 +1,6 @@ name: ack_json_schema_builder description: JSON Schema Builder converter for the Ack validation library -version: 1.7.0-beta.6 +version: 1.7.0-beta.7 repository: https://github.com/btwld/ack issue_tracker: https://github.com/btwld/ack/issues resolution: workspace diff --git a/packages/ack_mcp_dart/CHANGELOG.md b/packages/ack_mcp_dart/CHANGELOG.md index e7d584ee..12b78098 100644 --- a/packages/ack_mcp_dart/CHANGELOG.md +++ b/packages/ack_mcp_dart/CHANGELOG.md @@ -1,3 +1,10 @@ +## 1.7.0-beta.7 + +### Changed + +* Align with coordinated Ack 1.7.0-beta.7. This package has no source or + public API changes from beta.6; its compatible dependency minimum is unchanged. + ## 1.7.0-beta.6 ### Changed diff --git a/packages/ack_mcp_dart/README.md b/packages/ack_mcp_dart/README.md index bf9b8ea9..1d8ac067 100644 --- a/packages/ack_mcp_dart/README.md +++ b/packages/ack_mcp_dart/README.md @@ -16,7 +16,7 @@ Transport, negotiation, cancellation, and lifecycle remain in `mcp_dart`. ```yaml dependencies: ack: ^1.2.0 - ack_mcp_dart: ^1.7.0-beta.6 + ack_mcp_dart: ^1.7.0-beta.7 mcp_dart: ^2.4.2 ``` diff --git a/packages/ack_mcp_dart/pubspec.yaml b/packages/ack_mcp_dart/pubspec.yaml index 0324ca46..69d1ef2b 100644 --- a/packages/ack_mcp_dart/pubspec.yaml +++ b/packages/ack_mcp_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: ack_mcp_dart description: MCP tool schemas and typed argument validation for Ack and mcp_dart -version: 1.7.0-beta.6 +version: 1.7.0-beta.7 repository: https://github.com/btwld/ack issue_tracker: https://github.com/btwld/ack/issues resolution: workspace