Skip to content

feat(dart): let a project choose its vodozemac release - #64

Open
nikzen wants to merge 1 commit into
feat/web-build-identityfrom
feat/vodozemac-version-option
Open

feat(dart): let a project choose its vodozemac release#64
nikzen wants to merge 1 commit into
feat/web-build-identityfrom
feat/vodozemac-version-option

Conversation

@nikzen

@nikzen nikzen commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

The release was written into the bindings, so every project adopting the standards is on whichever one we pinned — and a hook fails the project whose pubspec.yaml says otherwise. Fair objection raised in review: projects will need different versions at some point.

Nothing about the build depends on the choice. What belongs here is the recipe: one crate compiled twice, the WebAssembly half through a nightly std rebuild with flags read off flutter_rust_bridge, and the module installed where vod.init looks. That is what nobody wants three copies of.

So famedly.standards.dart.vodozemac now carries version, hash and cargoHash, defaulting to the values that were hardcoded. A project that cannot follow a bump sets its own rather than dropping out of the standards. The hook still compares the version against pubspec.yaml — that drift is what breaks an application at call time, and it is now checked per project against the project's own choice.

Stacked on #61, where these files live.

Test

  • famedly-vodozemac builds and the web derivation evaluates, both unchanged by default
  • Setting dart.vodozemac.version in a consuming flake reaches the package: it reports the version the project asked for

Made with Cursor


The stack

main ─┬─ #63  make room on the runner
      ├─ #59  substitute from the shared binary cache
      └─ #56  sign, describe and scan what we publish
            └─ #62  keep the build directory out of vodozemac
                  └─ #61  tell a web build which build it is
                        └─ #64  let a project choose its vodozemac  ←

#63 and #59 stand outside the chain and can land in any order. #59 and #56
both touch the vodozemac module, so whichever goes second wants a rebase.

The version was written into the bindings, so every project that adopts the
standards is on the release we happened to pin. Nothing about the build needs
that: what belongs here is the recipe — one crate compiled twice, the
WebAssembly half through a nightly `std` rebuild with flags read off
`flutter_rust_bridge` — not the choice of release.

So `famedly.standards.dart.vodozemac` now carries the version and the two
hashes, defaulting to what was hardcoded. A project that cannot follow a bump
yet sets its own instead of dropping out of the standards, and the hook keeps
comparing whatever it set against its `pubspec.yaml`, which is the drift that
actually breaks an application.

Signed-off-by: Niklas Zender <n.zender@famedly.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@nikzen
nikzen force-pushed the feat/vodozemac-version-option branch from b515322 to 53100fa Compare August 4, 2026 07:29
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.

2 participants