release: 0.0.15 - #178
release: 0.0.15#178
Conversation
Two breaking changes, both in the database layer: a migration may no longer manage its own transaction, and DB.transaction answers a callback that closes the transaction itself. Beside them a Url rule, per-call-site validation messages, trans_choice with Laravel's plural rules, an atomic migrator, and a translation catalogue that loads without a log service. The CHANGELOG promotion moves both BREAKING bullets out of Fixed into a Breaking section, and puts back the tracking-table paragraph that had landed inside the DB.transaction entry although it describes the migrator. flutter_secure_storage's widened range (#158) gets its Changed entry here. example/pubspec.lock is regenerated against pub.dev: the committed one carried three absolute paths from a local override.
|
@kodizm review |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
|
Note Kodizm (AI-generated). May contain mistakes; verify before acting. A clean release stamp — every gate reproduces here and the CHANGELOG promotion is faithful — except that one change the description claims was made is not in the diff. Major
TestsNo test changes, correctly — this is a stamp-and-promote PR. The suite covering the features it releases is green below. Checks I ran
|
magic's release is what carries the plugin references to the registry, so the batch's plugin versions are stamped here ahead of their own releases: notifications 0.3.3, deeplink 0.1.2, social_auth 0.0.4, payments 0.0.3, devtools 0.0.5, starter 0.0.31. Where a reference quoted a sibling floor, it now quotes the batch floor and keeps the older minimum as the reason underneath it. magic:install --with-devtools pinned magic_devtools ^0.0.1 and fluttersdk_dusk ^0.0.8 while the post-install message printed ^0.0.2 and ^0.0.9. Both copies move to ^0.0.5 / ^0.0.15 / ^0.0.6, and the install test now reads the message and fails when they disagree.
Two breaking changes in the database layer, two additions to validation and localization, and fixes to the migrator and the translation loader. Wave two of an eight-package batch: dusk 0.0.15 is out, and six plugins re-pin to this release after it publishes.
BREAKING
A migration may no longer manage its own transaction. The migrator now runs every pending migration inside one
SAVEPOINT. Acommit()insideup()closed that savepoint, so every later migration ran unprotected and the closingRELEASEthrew after every ledger row was already committed.rundetects it and throws naming the migration. #175DB.transactionanswers a callback that closes the transaction itself. On failure the rollback is skipped, so the caller reads the real error instead ofcannot rollback - no transaction is active; on success it throws, because returning normally would tell the caller a half-committed block was atomic. #175Both are permitted pre-1.0 and recorded rather than left to be discovered.
Added
Urlvalidation rule with a scheme allowlist, and amessagesoverride onFormValidator.rules, keyed by the newRule.name. A Url validation rule, and per-call-site messages #176transChoiceandMessageSelector, a port of Laravel's, with the plural rules of 90 languages read mechanically fromgetPluralIndex. trans_choice, and the plural rules of 90 languages #174Changed
flutter_secure_storagewidens to>=10.0.0 <12.0.0(chore(deps): bump flutter_secure_storage from 10.3.4 to 11.1.1 #158, merged as Dependabot opened it). v11 removes only what v10 deprecated, andMagicVaultServiceuses none of it. Its data-loss warning is for apps that skipped v10: every magic release on pub.dev has required^10(git log --all -G'flutter_secure_storage:' -- pubspec.yamlshows the initial commit and chore(deps): bump flutter_secure_storage from 10.3.4 to 11.1.1 #158, nothing between). TheminSdk24 it requires is already Flutter's own floor since 3.35.Fixed
Migrator.runis atomic, and a ledger insert can no longer be silently filtered to nothing by a stale schema cache. The migrator was not atomic, and could record nothing at all #175logservice is bound, andloadnow logs why it gave up instead of answering an empty map silently. A translation catalogue loaded nothing when no log service was bound #173What the promotion changed besides the heading
BREAKING:bullets sat under### Fixed; they are now a### Breakingsection, the bucket orderCLAUDE.mdnames.DB.transactionentry. It is back in theMigrator.runentry, which is what it describes (migrator.dart:128creates the table,:145opens the savepoint).### Changedis new, for chore(deps): bump flutter_secure_storage from 10.3.4 to 11.1.1 #158.The batch this release carries
magic's release is what carries the plugin references to the registry, so this batch's plugin versions are stamped here ahead of their own releases, the way 0.0.14 stamped
plugin-starter.mdtov0.0.30:plugin-notifications.mdv0.3.3Echo.connection/setEntitlementsPathsminimums as the reason underneathplugin-deeplink.mdv0.1.2plugin-social-auth.mdv0.0.4plugin-payments.mdv0.0.3^0.0.1to^0.0.3plugin-devtools.mdv0.0.5plugin-starter.mdv0.0.31^0.3.2,^1.6.0and^0.0.12SKILL.mdgoes0.1.34to0.1.35because reference content moved.magic_notifications,magic_deeplinkandmagic_startereach read their stamp from this repo inskill_reference_stamp_test.dart, so this has to merge before their release commits.magic:install --with-devtoolswrote stale constraints, and two different sets of them. The installer pinnedmagic_devtools ^0.0.1,fluttersdk_dusk ^0.0.8,fluttersdk_telescope ^0.0.4into the consumer's pubspec; the post-install message printed beside it said^0.0.2,^0.0.9,^0.0.4. Both now say^0.0.5,^0.0.15,^0.0.6, and a new install test reads the message out ofinstall.yamland fails when the constant disagrees, so the next release cannot move one copy alone. Red first:Expected: contains 'magic_devtools: ^0.0.2'against the old constant.One window to know about:
magic_devtools 0.0.5publishes a few minutes after this, in wave three, since it re-pins to magic 0.0.15. An adopter running--with-devtoolsinside that window gets a version-solve error namingmagic_devtools, which a re-run clears.Stamps
pubspec.yaml,example/pubspec.yaml, and theSKILL.mdbody stamp. The skillversion:stays at0.1.34: #177 already moved it, and no skill content changes here.example/pubspec.lockis regenerated against pub.dev. The committed lock carried three absolute/Users/...path sources from a localpubspec_overrides.yaml; with wind 1.6.2 and artisan 0.0.16 published, hosted resolution works and the lock no longer names a machine.Gates
Run locally on this branch, against the sibling checkouts through the gitignored
pubspec_overrides.yaml(artisan and wind are at their published tags there, so this is the graph pub.dev serves):flutter analyze --no-fatal-infos: no issuesdart format --output=none --set-exit-if-changed .: 355 files, 0 changedflutter test: 1595 passed (1594 plus the new parity test)dart pub publish --dry-run: 0 warnings, 4 hints (one is the long-standing1.0.0-alpha.13ordering note)After this merges
git tag 0.0.15 && git push origin 0.0.15(bare, nov), whichpublish.ymlwatches; it also carries the skill to the registry. Then wave three re-pins against it. The publish is irreversible, so the tag waits for the maintainer's go.