chore(deps): refresh Rust dependencies and migrate to starbase 0.13 - #679
Merged
Conversation
Takes the dependency updates from the renovate/rust branch (#638) and carries them to green, which that PR could not do on its own: Renovate's Cargo.lock regeneration was failing with "Artifact file update failure", so it shipped manifest bumps with no matching lockfile. That artifact failure was caused by the toml_datetime conflict fixed in #677. With the lockfile resolvable again, a full `cargo update` reaches a better state than the workaround in #677 did: extism 1.13.0 -> 1.30.0 (now matched with extism-manifest) extism-manifest 1.13.0 -> 1.30.0 wasmtime 37.0.3 -> 43.0.2 wasmtime 43 does not require toml_datetime >= 0.6.5, so the conflict that forced #677 to downgrade proc-macro-crate to 2.0.0 no longer arises. That downgrade is dropped and proc-macro-crate returns to stock 2.0.2. The extism fix is now structural rather than a pinned workaround. starbase 0.10 -> 0.13 required a source migration, the only breakage in the whole refresh: - AppResult gained a generic error parameter. 0.10 defined it as miette::Result<Option<u8>>, so AppResult<miette::Report> preserves the previous semantics exactly. 23 return types across 12 files. - AppSession gained an associated Error type. - MainResult is now behind an opt-in "miette" feature; enabled it. - App::run returns AppRunOutcome instead of a Result. into_miette_result() preserves the real exit code, where the old `?` path went through miette's default of always exiting 1. Verified locally against the committed lockfile with --locked, matching what CI now enforces. All ten checks pass: fmt, clippy -D warnings, tests, and release builds for both morphir and morphir-live, including the morphir-live desktop build.
✅ Deploy Preview for angry-raman-7c44f6 canceled.
|
This was referenced Aug 24, 2026
DamianReeves
added a commit
that referenced
this pull request
Aug 24, 2026
Takes the major bumps from the renovate/major-rust branch (#612): tuirealm 3 -> 4.1.0 tui-realm-stdlib 3 -> 4.1.0 tui-realm-textarea 2 -> 4.1.0 usage-lib 2 -> 6.1.1 toml 0.9.8 -> 1.1.4 No source changes were needed. Despite spanning a TUI framework major and a four-major jump in usage-lib, the workspace compiles clean with no errors and no clippy warnings. That PR could not land as-is for the same reason as #638: Renovate's lockfile regeneration was failing, so it carried manifest bumps with no Cargo.lock, which CI now rejects via --locked. Resolution works now that #677 and #679 have unwedged the dependency graph. Verified locally against the committed lockfile with --locked: fmt, clippy -D warnings, tests, and release builds for both morphir and morphir-live, including the morphir-live desktop build. All ten pass.
This was referenced Aug 24, 2026
DamianReeves
added a commit
that referenced
this pull request
Aug 24, 2026
Detect Changes gates the Rust and Docs jobs on path filters, but several
inputs those jobs actually depend on were not listed. Changing them ran
no jobs, so CI reported green without building anything. Three cases hit
this in the last day alone.
rust filter, additions:
ecosystem/morphir-rust
crates/morphir and crates/morphir-live path-depend on crates inside
this submodule, so a ref bump changes the source being compiled.
#677 only ran the Rust jobs because it also touched Cargo.lock; a
submodule-only bump would have run nothing.
.gitmodules
Same reasoning, for submodule wiring changes.
.config/mise/**
Pins the Rust toolchain the jobs build with. #675 moved rustc from
1.97.1 to 1.98.0 and both Rust jobs were skipped, so a compiler
upgrade landed with no compilation. New clippy lints ship with new
toolchains, which is exactly how the pager lints fixed in #679
reached main unnoticed.
docs filter, addition:
.config/mise/tasks/ci/validate_docs.py
The Docs job runs this script, but editing it triggered no job.
Verified the workflow parses, and that the filters block parses as
dorny/paths-filter itself parses it: 7 rust patterns, 5 docs patterns,
comments stripped.
No filter change is needed for the website. Netlify builds it:
netlify.toml runs `npm run build` in website/, with an ignore clause
that skips only when neither website/ nor docs/ changed. Rust-only PRs
showing "Deploy Preview canceled" are that skip working as designed,
not missing coverage.
DamianReeves
added a commit
that referenced
this pull request
Aug 24, 2026
Detect Changes gates the Rust and Docs jobs on path filters, but several
inputs those jobs actually depend on were not listed. Changing them ran
no jobs, so CI reported green without building anything. Three cases hit
this in the last day alone.
rust filter, additions:
ecosystem/morphir-rust
crates/morphir and crates/morphir-live path-depend on crates inside
this submodule, so a ref bump changes the source being compiled.
#677 only ran the Rust jobs because it also touched Cargo.lock; a
submodule-only bump would have run nothing.
.gitmodules
Same reasoning, for submodule wiring changes.
.config/mise/**
Pins the Rust toolchain the jobs build with. #675 moved rustc from
1.97.1 to 1.98.0 and both Rust jobs were skipped, so a compiler
upgrade landed with no compilation. New clippy lints ship with new
toolchains, which is exactly how the pager lints fixed in #679
reached main unnoticed.
docs filter, addition:
.config/mise/tasks/ci/validate_docs.py
The Docs job runs this script, but editing it triggered no job.
Verified the workflow parses, and that the filters block parses as
dorny/paths-filter itself parses it: 7 rust patterns, 5 docs patterns,
comments stripped.
No filter change is needed for the website. Netlify builds it:
netlify.toml runs `npm run build` in website/, with an ignore clause
that skips only when neither website/ nor docs/ changed. Rust-only PRs
showing "Deploy Preview canceled" are that skip working as designed,
not missing coverage.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Rust half of the dependency refresh. Takes the updates from Renovate's
renovate/rustbranch (#638) and carries them to green — which that PR could not do on its own.Supersedes #638.
Why #638 was stuck
Its
renovate/artifactscheck fails with "Artifact file update failure": Renovate could not regenerateCargo.lock, so it shipped manifest bumps with no lockfile. Since #678 added--lockedto CI, that combination now fails outright rather than silently re-resolving.The artifact failure was caused by the
toml_datetimeconflict fixed in #677. Confirmed: applying #638's manifests and runningcargo updatenow resolves cleanly (exit 0). Renovate should be unblocked going forward.The extism workaround is gone
#677 downgraded
proc-macro-crateto 2.0.0 to freetoml_datetimeso extism could reach 1.13. A fullcargo updatenow reaches a strictly better state:extismextism-manifestwasmtimeproc-macro-cratewasmtime 43doesn't requiretoml_datetime >= 0.6.5, so the conflict simply doesn't arise. The downgrade is dropped — the extism fix is now structural rather than a pinned workaround that a futurecargo updatecould undo.starbase 0.10 → 0.13
The only source breakage in the entire refresh (
E0107was the sole error code across the full workspace check). Four distinct API changes:AppResultgained a generic error parameter. 0.10 defined it asmiette::Result<Option<u8>>, soAppResult<miette::Report>preserves the previous semantics exactly — 23 return types across 12 files.AppSessiongained an associatedErrortype —type Error = miette::Report;MainResultis now behind an opt-inmiettefeature (default = ["tracing"]) — enabled in the workspace manifest. It wasn't removed, just gated.App::runreturnsAppRunOutcome, not aResult— migrated to.into_miette_result().Point 4 is a small behavioral improvement: the old
?path went through miette's default handling, which always exits 1 on error.into_miette_result()preserves the real exit code. Commented at the call site.Verification
Every CI cargo step run locally with
--locked, matching what CI now enforces:cargo fmt --checkcargo clippy --locked --all-targets -- -D warningscargo test --lockedcargo build --locked --releasecargo build --locked --release --features desktopPlus
cargo test --locked --workspace— pass. 10/10.The desktop build is verified locally for the first time (GTK dev libraries now installed), which matters here since this refresh moves wasmtime 37→43 and touches the whole dioxus/GTK chain.
Scope
Rust only. The other three ecosystems remain with Renovate/Dependabot: #634 (npm major), #626 (GitHub Actions major), #675 (mise tools), #670 and #632 (website npm).