Skip to content

Make Dependabot updates safe, fix stale AutoFill UniFFI bindings - #579

Merged
alchaplinsky merged 9 commits into
mainfrom
fix/deps-safety
Oct 11, 2026
Merged

alchaplinsky merged 9 commits into
mainfrom
fix/deps-safety

Conversation

@alchaplinsky

Copy link
Copy Markdown
Member

Makes Dependabot updates safe to land, and fixes the iOS AutoFill break the last batch caused.

What's in here

  • Fix: AutoFill bindings regenerated for uniffi 0.32. chore(deps): bump uniffi from 0.29.5 to 0.32.2 in /src-tauri #563 bumped uniffi without re-running bindgen.sh. The library reports contract version 30, but the committed Swift expected 29, so the extension hit fatalError("UniFFI contract version mismatch") on its first Rust call. The public Swift API is unchanged.
  • CI: the ios job regenerates the bindings and fails on any diff. This is the second stale-bindings break (also 114c345, a doc-comment edit). bindgen.sh now passes --no-format, so its output doesn't depend on the local Xcode.
  • dependabot.yml:
    • Safe bumps arrive as one grouped PR per ecosystem.
    • Cargo groups patch bumps only, because Dependabot labels 0.x jumps (uniffi 0.29→0.32, passkey-rs 0.5→0.6, windows-registry 0.5→0.100) as "minor" but they break the API.
    • A 7-day cooldown on new releases.
    • extension/ is now covered (monthly, one PR).
  • Patch bumps: libc 0.2.190, objc2 0.6.5, tokio 1.53.2, zeroize 1.9.1 (the open Dependabot PRs, cherry-picked).

Not in here

  • passkey-rs 0.6 (open Dependabot PR): it pulls in p256 0.14 alongside the 0.13 the app pins, which the config already warns breaks the COSE key bridge. It needs its own migration that moves p256, coset and rand together.
  • The six 2024 npm Dependabot PRs target the old Electron-era master and should be closed.

Testing

  • Bindings regenerated with bindgen.sh and checked: contract version 30, new checksums, same public API.
  • rowel-autofill builds with --locked.
  • Full clippy and the iOS device run were not done locally; CI covers clippy.

Decisions

  • adopted · implementation · [ios-autofill] — CI regenerates the committed UniFFI bindings and fails on any diff. — A stale copy compiles but aborts the extension at its first call; it shipped twice.
  • adopted · implementation · [dependency-updates] — Cargo Dependabot groups patch bumps only; 0.x minors arrive one per PR. — Dependabot calls 0.x minor jumps "minor", but they break the API.
  • adopted · implementation · [dependency-updates] — Dependabot PRs are landed as one batch, not merged one by one. — Each PR is tested against main alone; sequential merges broke main (chore(deps): bump the tauri-rust group across 1 directory with 10 updates #566 → fix(deps): align Tauri plugin npm packages with Rust crates #567).
  • constraint · implementation · [dependency-updates, ios-autofill] — Any uniffi bump must re-run src-tauri/crates/autofill/bindgen.sh and commit the output. — The Swift bindings check the contract version and checksums at load.

dependabot Bot and others added 6 commits October 11, 2026 01:08
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.189 to 0.2.190.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.190/CHANGELOG.md)
- [Commits](rust-lang/libc@0.2.189...0.2.190)

---
updated-dependencies:
- dependency-name: libc
  dependency-version: 0.2.190
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [objc2](https://github.com/madsmtm/objc2) from 0.6.4 to 0.6.5.
- [Commits](madsmtm/objc2@objc2-0.6.4...objc2-0.6.5)

---
updated-dependencies:
- dependency-name: objc2
  dependency-version: 0.6.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.53.1 to 1.53.2.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](tokio-rs/tokio@tokio-1.53.1...tokio-1.53.2)

---
updated-dependencies:
- dependency-name: tokio
  dependency-version: 1.53.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [zeroize](https://github.com/RustCrypto/utils) from 1.9.0 to 1.9.1.
- [Commits](RustCrypto/utils@zeroize-v1.9.0...zeroize-v1.9.1)

---
updated-dependencies:
- dependency-name: zeroize
  dependency-version: 1.9.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
- ios job regenerates the AutoFill bindings and fails on any diff; a stale
  copy builds fine and aborts the extension at its first Rust call
  (114c345, #563).
- bindgen.sh passes --no-format so its output doesn't depend on the local
  Xcode's swift-format.
- dependabot.yml: one grouped PR per ecosystem for safe bumps (cargo:
  patch only, since 0.x minors break), a 7-day cooldown, and coverage
  for extension/.
#563 bumped uniffi from 0.29 to 0.32 without re-running bindgen.sh. The
library now reports contract version 30 and new API checksums, while the
committed Swift still expected 29, so the extension hit
fatalError("UniFFI contract version mismatch") on its first Rust call.

Regenerated with bindgen.sh. The public Swift API is unchanged; only the
generated internals move (object pointers become handles, Equatable and
Hashable are synthesized).
@greptile-apps

greptile-apps Bot commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

[High impact] The PR appears safe to merge; no blocking issue remains.

Summary

Updates Dependabot grouping and cooldowns, refreshes AutoFill’s UniFFI bindings, and adds a check that generated files are committed.

  • The AutoFill bindings now match the Rust library’s UniFFI contract.
  • iOS CI now checks that generated AutoFill bindings are current.
  • Dependabot groups routine updates and leaves Cargo API jumps separate.

Reviews (2) · Last reviewed commit: "ci: the bindings check also fails on unt..." · Reviewed by Greptile

Comment thread .github/workflows/ci.yml Outdated
libc 0.2.190 gates mach_task_self() to macOS; num_threads 0.1.7 (via
time -> tauri) still calls it on iOS, so iOS clippy failed. The bump is
reverted in the previous commit.
git diff misses a deleted file that bindgen.sh recreates untracked; use
git status --porcelain instead.
@alchaplinsky
alchaplinsky merged commit c6d1b21 into main Oct 11, 2026
14 checks passed
@alchaplinsky
alchaplinsky deleted the fix/deps-safety branch October 11, 2026 00:31
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.

1 participant