Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
225 commits
Select commit Hold shift + click to select a range
ce8eaf1
Add iPhone relay health monitoring
Xare123 Jul 24, 2026
5db2ec5
Harden iPhone relay health monitoring
Xare123 Jul 24, 2026
991b805
Show relay health only for iPhone relays
Xare123 Jul 24, 2026
ab9293a
Clean up stale UI listeners
Xare123 Jul 24, 2026
cf7e519
Fix UI lifecycle and relay retry edge cases
Xare123 Jul 24, 2026
b576167
Avoid eager full-resolution image decoding
Xare123 Jul 24, 2026
7478ceb
Improve Android control accessibility
Xare123 Jul 24, 2026
9cf1034
Build resilient Alpha profile APK
Xare123 Jul 24, 2026
95ef277
Prioritize Alpha profile artifact
Xare123 Jul 24, 2026
ad26128
Remove workflow trailing whitespace
Xare123 Jul 24, 2026
e6e284c
Compile resilient anisette provisioning
Xare123 Jul 24, 2026
018bd01
Retry anisette transport failures
Xare123 Jul 24, 2026
1fc63f0
Harden message refresh and receive diagnostics
Xare123 Jul 24, 2026
b2c8184
Use fresh message service on transcript refresh
Xare123 Jul 24, 2026
c01e6b7
Fix nullable reaction preview fallback
Xare123 Jul 24, 2026
dc2bd90
Run focused message helper test
Xare123 Jul 24, 2026
f8fe0e2
docs: add Android development and diagnostics guide
Xare123 Jul 24, 2026
95c08b5
docs: define delivery and performance verification plan
Xare123 Jul 24, 2026
b7e9b98
Harden background routing and reconnect lifecycle
Xare123 Jul 24, 2026
d2e8c6b
Back off terminal APS poll panics
Xare123 Jul 24, 2026
d332a41
Register socket callbacks before connecting
Xare123 Jul 24, 2026
696461d
fix: preserve incoming message delivery integrity
Xare123 Jul 24, 2026
18c8cdb
Fix avatar resource leaks and push acknowledgement ordering
Xare123 Jul 24, 2026
2f324f2
fix: harden group participant and reaction handling
Xare123 Jul 24, 2026
e7623f9
Refresh group avatars without background controller churn
Xare123 Jul 24, 2026
7791de6
Harden partial widget initialization and profile loading
Xare123 Jul 25, 2026
cdac24b
Use upstream RustPush provisioning dependency
Xare123 Jul 25, 2026
27a2d33
Close remaining UI lifecycle races
Xare123 Jul 25, 2026
1da494a
Use HTTPS for public submodules
Xare123 Jul 25, 2026
92eeedb
Fix reply navigation and message lifecycle races
Xare123 Jul 25, 2026
d31edcf
Fix recycled message controller remounts
Xare123 Jul 25, 2026
d6eba36
Make conversation keyboard dismissal reliable
Xare123 Jul 25, 2026
6028e16
Load complete reply threads with originators
Xare123 Jul 25, 2026
b0ba95e
Don't fail sends while the push connection is reconnecting
claude Jul 27, 2026
58d2c60
Retry shared contact profile downloads
Xare123 Jul 27, 2026
7b61ee0
Retry transient sends and harden attachment streams
Xare123 Jul 28, 2026
16583eb
Prioritize tapped attachment downloads
Xare123 Jul 28, 2026
dfccf20
Align attachment priority handler
Xare123 Jul 28, 2026
21823a3
Harden desktop sync, rendering, and Apple sign-in
Xare123 Jul 28, 2026
1502ba0
Add Windows x64 and experimental ARM64 build lanes
Xare123 Jul 28, 2026
1bad5a8
Run bridge validation on API pushes
Xare123 Jul 28, 2026
4ef2659
Validate bridge workflow changes
Xare123 Jul 28, 2026
cf82d6f
Verify bare bridge generator checksums
Xare123 Jul 28, 2026
3bf1089
Pin Windows x64 CI to Visual Studio 2022
Xare123 Jul 28, 2026
2ee0bba
Provision test FairPlay fixtures for bridge CI
Xare123 Jul 28, 2026
b3e5b0e
Make generated bindings and Windows builds reproducible
Xare123 Jul 28, 2026
9a38761
Build Windows release from a short real path
Xare123 Jul 28, 2026
7cf9e28
Bound Windows Rust build memory
Xare123 Jul 28, 2026
cbfebf1
Compile committed Rust bridge bindings
Xare123 Jul 28, 2026
91d8cd4
Bound conversation media memory
Xare123 Jul 29, 2026
426ad3b
Harden startup and provisioning retries
Xare123 Jul 29, 2026
f785741
Refresh Rust lockfile for current dependencies
Xare123 Jul 29, 2026
d3e285e
Verify Windows Android native builds
Xare123 Jul 29, 2026
ae273e9
Enable fullscreen media swiping
Xare123 Jul 29, 2026
844e75d
Cloud Sync V2 work in progress, build fixes, and host build runbook
Xare123 Aug 6, 2026
274ee27
Fix CI: provision ObjectBox C on Linux, request a native ARM64 Flutte…
Xare123 Aug 6, 2026
10d9b42
Fix the ARM64 Dart SDK bootstrap path instead of the SDK architecture
Xare123 Aug 6, 2026
ea65307
Pin the Linux runner image and keep the PowerShell gate installable
Xare123 Aug 6, 2026
a20d8cf
Install the pinned Gradle in CI and assert the engine precache actual…
Xare123 Aug 6, 2026
6d6ce00
Recompile the Flutter tool snapshot after swapping to the ARM64 Dart VM
Xare123 Aug 6, 2026
6385fde
Stop the operation interlock fence from blocking its own operation
Xare123 Aug 6, 2026
cde29ff
Build and verify the Cloud Sync sampler beta APK in CI
Xare123 Aug 6, 2026
557ffed
Build the sampler APK in its own job
Xare123 Aug 6, 2026
6a8b110
Add a dependency-ordered path-to-production roadmap
Xare123 Aug 6, 2026
e37a5c4
Accept Apple's partless reaction parent and agree on the part spelling
Xare123 Aug 6, 2026
8a32e21
Preserve the EMPTY_LIST wire type as presence evidence
Xare123 Aug 6, 2026
f5c7843
Stop inferring a clear instruction from an empty summary collection
Xare123 Aug 6, 2026
c3b57b9
Stop calling FlushFileBuffers on a directory handle on Windows
Xare123 Aug 6, 2026
92e8d2a
Record the provenance ledger and the ObjectBox dependency decision
Xare123 Aug 6, 2026
8b743f1
Parse the reaction parent in the live CloudKit download path
Xare123 Aug 6, 2026
87aae46
Specify field ownership and record the stalled-checkpoint decision
Xare123 Aug 6, 2026
635613b
Accept the bp: parent spelling and make the test suites actually gate CI
Xare123 Aug 6, 2026
7f3821b
Close the remaining audit findings
Xare123 Aug 6, 2026
9e9794c
CI: move off two deprecated GitHub Actions in the APK workflow
Xare123 Aug 6, 2026
4898b96
Make the message unique-constraint swallow observable
Xare123 Aug 7, 2026
6f13002
Correct and record the upload conversion-failure finding
Xare123 Aug 7, 2026
de18c0d
Stop logging the composer's full text on every keystroke
Xare123 Aug 7, 2026
731a415
Fix the CargoKit hang introduced by the plugin-detection fix
Xare123 Aug 7, 2026
4d960df
Build the vendored CargoKit plugins so the app can start
Xare123 Aug 7, 2026
4fe4da9
Assert the complete set of CargoKit libraries, not the last one to crash
Xare123 Aug 7, 2026
2e557c2
Make the CargoKit patch step runnable in CI
Xare123 Aug 7, 2026
30daab6
Give each link in a message its own preview
Xare123 Aug 7, 2026
52ee9e5
Let a bare image link produce a preview
Xare123 Aug 7, 2026
169171e
Make legacy CloudKit restore fail closed
Xare123 Aug 8, 2026
6d5526a
Stabilize alpha and close legacy CloudKit gaps
Xare123 Aug 8, 2026
a4b0d9a
Stabilize alpha attachments previews and FaceTime diagnostics
Xare123 Aug 11, 2026
bfaffe6
Repair FaceTime join and teardown races
Xare123 Aug 11, 2026
9f5eee0
Preserve drafts until messages are queued
Xare123 Aug 11, 2026
63601ac
Keep complete URLs clickable
Xare123 Aug 11, 2026
d55e55a
Avoid stale reply gesture context
Xare123 Aug 12, 2026
2106454
Retry Android CI
Xare123 Aug 12, 2026
1c52330
Add opt-in FaceTime diagnostics
Xare123 Aug 12, 2026
925a1e1
Add Find My Play Sound for Apple devices
Xare123 Aug 12, 2026
80674e3
Add nearby Find My tracker sound support
Xare123 Aug 12, 2026
6bf9520
Make Find My usable when relay is offline
Xare123 Aug 12, 2026
80d42fc
Keep Find My retry enabled after relay failure
Xare123 Aug 12, 2026
4c2dcf6
Recover relay registration and composer annotations
Xare123 Aug 12, 2026
715bcff
Enable cloud sound for AirPods
Xare123 Aug 14, 2026
9721412
Refresh replayed reactions on parent messages
Xare123 Aug 14, 2026
4c5faec
Guard stale Find My map state
Xare123 Aug 14, 2026
344d548
Import safe collection lookups for Find My
Xare123 Aug 14, 2026
96d3922
Distinguish nearby Find My sound targets
Xare123 Aug 15, 2026
7981eb5
Link Find My panel to its scroll controller
Xare123 Aug 15, 2026
693b149
Close CloudKit V2 recovery and sampling gaps
Xare123 Aug 22, 2026
eb62944
Correlate FaceTime admission with verified media state
Xare123 Aug 22, 2026
f59082f
Match rustpush CI features to production
Xare123 Aug 22, 2026
ee609aa
Make FaceTime media admission fail safe
Xare123 Aug 22, 2026
d88f438
Keep FaceTime media parsing host independent
Xare123 Aug 22, 2026
7cc9975
Bound persistent CloudKit dependency failures
Xare123 Aug 22, 2026
a2f24a0
Add fail-closed Rust semantic decoder boundary
Xare123 Aug 22, 2026
d0a898f
Remove relay credentials from application source
Xare123 Aug 22, 2026
6eb55a2
Fix CloudKit response fixture compilation
Xare123 Aug 22, 2026
7ac4e98
Widen transient CloudKit identity boundary [skip ci]
Xare123 Aug 22, 2026
a422e92
Require advancing inbound FaceTime media evidence
Xare123 Aug 22, 2026
68a232c
Commit generated CloudKit identity bindings
Xare123 Aug 22, 2026
25583ee
Enforce canonical CloudKit identity bindings [skip ci]
Xare123 Aug 22, 2026
44aebd9
Harden FaceTime WebView name injection and DOM diagnostics
Xare123 Aug 22, 2026
b73f59e
Commit regenerated CloudKit alias bindings
Xare123 Aug 22, 2026
f5c712a
Expand FaceTime WebRTC replay coverage
Xare123 Aug 22, 2026
3926d8e
Add FaceTime media admission replay test
Xare123 Aug 22, 2026
e7cdb03
Add CloudKit native identity tamper tests
Xare123 Aug 22, 2026
f369e19
Upgrade GitHub artifact actions to Node 24
Xare123 Aug 22, 2026
d1fbc66
Fail closed on rejected FaceTime admissions
Xare123 Aug 22, 2026
a3bff3c
Upgrade remaining GitHub actions to Node 24
Xare123 Aug 22, 2026
2b20799
Enforce contiguous CloudKit semantic replay
Xare123 Aug 22, 2026
a2fa09f
Expose rich CloudKit semantic records
Xare123 Aug 22, 2026
d0eda3c
Project CloudKit semantic records into ObjectBox
Xare123 Aug 22, 2026
710be21
Reconcile semantic inbox around CloudKit fetch
Xare123 Aug 22, 2026
9542d64
Gate a read-only CloudKit semantic canary
Xare123 Aug 22, 2026
75e779b
Refresh CloudKit validation evidence
Xare123 Aug 22, 2026
9f12dda
Fence CloudKit outbox generations
Xare123 Aug 22, 2026
bf75e6b
Gate CloudKit mutations behind one writer
Xare123 Aug 22, 2026
8fb5009
Record CloudKit validation evidence
Xare123 Aug 22, 2026
a8e45b9
Enforce single-writer CloudKit reconciliation
Xare123 Aug 22, 2026
474265e
Bound ambiguous CloudKit write lifetimes
Xare123 Aug 22, 2026
2ce2f57
Scope legacy deletes and bind reset proofs
Xare123 Aug 22, 2026
cd51866
Advance protected CloudKit writer primitive
Xare123 Aug 22, 2026
81d58ae
Document CloudKit transport evidence and write gates
Xare123 Aug 22, 2026
3a03d09
Persist CloudKit submission identities atomically
Xare123 Aug 22, 2026
e7bdb47
Add fail-closed CloudKit write preflight contract
Xare123 Aug 22, 2026
db0b3e5
Stage read-only CloudKit evidence beta
Xare123 Aug 23, 2026
aa9eba6
Refresh reproducible Rust bridge metadata
Xare123 Aug 23, 2026
84eeab5
Reject non-plain outbound canary payloads
Xare123 Aug 23, 2026
cb1e32f
Fix CloudKit shadow fence identity
Xare123 Aug 23, 2026
20db70d
Stabilize CloudKit canary signing
Xare123 Aug 23, 2026
7b7dc7d
Locate Android signer from SDK
Xare123 Aug 23, 2026
3a01d92
Recover stalled Android CloudKit restores
Xare123 Aug 23, 2026
e416d4d
Bound stalled CloudKit page reads
Xare123 Aug 25, 2026
cdc6158
Repair missing legacy CloudKit chats
Xare123 Aug 25, 2026
f6bd385
Resolve alternate CloudKit chat identities
Xare123 Aug 25, 2026
f613c83
Fail closed on ambiguous CloudKit chat repair
Xare123 Aug 25, 2026
4420f3a
Complete canary sync failure lifecycle
Xare123 Aug 25, 2026
751e1ef
Complete Android ready handshake
Xare123 Aug 26, 2026
fc59069
Guard the Android ready handshake
Xare123 Aug 26, 2026
cb30cba
Repair historical CloudKit chat identities
Xare123 Aug 26, 2026
0a0e75d
Resolve CloudKit chat IDs across UUID case
Xare123 Aug 26, 2026
d8af7f3
Expose safe CloudKit shadow failure stages
Xare123 Aug 26, 2026
ddee5be
Diagnose native CloudKit auth capture safely
Xare123 Aug 26, 2026
ad6a005
Publish Android CloudKit secrets without hard links
Xare123 Aug 26, 2026
7d37dfb
Refresh generated CloudKit auth docs
Xare123 Aug 26, 2026
bb5abe6
Expose safe CloudKit canary failure boundaries
Xare123 Aug 26, 2026
9952af3
Complete canary diagnostic coverage
Xare123 Aug 26, 2026
99fdfef
Canonicalize Android CloudKit evidence paths
Xare123 Aug 26, 2026
b98f595
Validate cumulative CloudKit journal reports
Xare123 Aug 26, 2026
76a83ab
Classify semantic CloudKit quarantines
Xare123 Aug 26, 2026
39231cc
Preserve CloudKit quarantine diagnostics
Xare123 Aug 26, 2026
93877c2
[canary only] Add focused Canary CI mode
Xare123 Aug 26, 2026
0f6ea4f
[canary only] Isolate semantic CloudKit diagnostics
Xare123 Aug 26, 2026
4aea7f8
[canary only] Accept CloudKit changes with outer identity
Xare123 Aug 27, 2026
eee496d
[canary only] Diagnose CloudKit metadata rejection
Xare123 Aug 27, 2026
e0c61dc
[canary only] Refine CloudKit metadata diagnostics
Xare123 Aug 27, 2026
82c90a1
[canary only] Decode CloudKit record change types
Xare123 Aug 27, 2026
141d566
[canary only] Report semantic decode dispositions
Xare123 Aug 27, 2026
6ca99a2
Accept CloudKit update and delete change types
Xare123 Aug 27, 2026
2598ad8
Document CloudKit change type matrix
Xare123 Aug 27, 2026
ea4abe0
Test CloudKit multipage checkpoint recovery
Xare123 Aug 27, 2026
2d272ca
Cover three-page CloudKit token handoff
Xare123 Aug 27, 2026
6c81b27
[canary only] Locate semantic decoder failures
Xare123 Aug 27, 2026
ae770ce
[canary only] Decode optional CloudKit empty sentinels
Xare123 Aug 27, 2026
6b64792
[canary only] Harden empty sentinel validation
Xare123 Aug 27, 2026
855f4bc
Hold CloudKit page tokens until terminal
Xare123 Aug 27, 2026
b9d4de4
[canary only] Classify CloudKit gzip failures
Xare123 Aug 28, 2026
2772351
Normalize empty optional CloudKit protobufs
Xare123 Aug 28, 2026
97d0945
Classify unsupported CloudKit services safely
Xare123 Aug 28, 2026
6f6b9f2
Add secret-free CloudKit classifier diagnostics
Xare123 Aug 28, 2026
2bdd471
Add bounded protected-store maintenance caller
Xare123 Aug 28, 2026
66280f4
Fix unsupported-service counter signature
Xare123 Aug 28, 2026
6d8889b
[canary only] Refine CloudKit message shape diagnostics
Xare123 Aug 28, 2026
7b29b83
Fix CloudKit evidence test harness
Xare123 Aug 28, 2026
d4e4cee
Fix CloudKit diagnostic class test
Xare123 Aug 28, 2026
698b796
[canary only] Refine CloudKit association diagnostics
Xare123 Aug 28, 2026
d31256e
Separate CloudKit message class from reactions
Xare123 Aug 28, 2026
bb7c525
Add safe opt-in CloudKit quarantine repair lane
Xare123 Aug 28, 2026
f394002
Harden CloudKit quarantine repair and semantic Canary
Xare123 Aug 28, 2026
e0972f1
Repair CI browser and generated binding drift
Xare123 Aug 28, 2026
d490bb9
Make CloudKit repair digest web-safe
Xare123 Aug 28, 2026
70ed910
Warm CloudKit read auth under the V2 interlock
Xare123 Aug 28, 2026
0e985fe
Make CloudKit warm-auth tests deterministic
Xare123 Aug 28, 2026
ea57faf
Accept normalized compact PCS master keys
Xare123 Aug 28, 2026
9396619
Update compact PCS regression coverage
Xare123 Aug 28, 2026
64be144
Make iCloud password views failure tolerant
Xare123 Aug 28, 2026
a749286
Gate APNs refresh on validated Android routes
Xare123 Aug 28, 2026
8610b71
Make manual CloudKit probes decisive
Xare123 Aug 28, 2026
3e3c311
Add cached CloudKit Canary fast path
Xare123 Aug 28, 2026
4af37e9
Sync generated bridge metadata
Xare123 Aug 29, 2026
850ee7f
Support exact SMS CloudKit semantic conversion
Xare123 Aug 29, 2026
ddd9d81
Persist content-free CloudKit semantic diagnostics
Xare123 Aug 29, 2026
d3f0a2f
Project exact SMS CloudKit records
Xare123 Aug 29, 2026
190331c
Unblock CloudKit semantic projection
Xare123 Aug 29, 2026
c4324a4
Keep bridge generation reproducible
Xare123 Aug 29, 2026
32cb523
Repair CloudKit chat projection and attributed text
Xare123 Aug 29, 2026
29eab17
Fix semantic Canary report diagnostics
Xare123 Aug 29, 2026
694d9b6
Bound and diagnose semantic Canary pulls
Xare123 Aug 29, 2026
2a4e183
Refresh mounted messages after projection hydration
Xare123 Aug 29, 2026
2791483
Require v2 signing for Canary artifacts
Xare123 Aug 29, 2026
e3e3c54
Correct four-page lease renewal assertion
Xare123 Aug 29, 2026
9916b07
Pause native CloudKit writers during semantic pulls
Xare123 Aug 29, 2026
efe0177
Make semantic pulls exclude native CloudKit writers
Xare123 Aug 29, 2026
1d16468
Normalize generated Rust bridge bindings
Xare123 Aug 29, 2026
2255696
Bound Android CloudKit writer stack usage
Xare123 Aug 29, 2026
aef2ea5
Refresh rustpush flaky test fix
Xare123 Aug 29, 2026
f89faf8
Permit cold semantic CloudKit authentication
Xare123 Aug 29, 2026
38eb1dc
Regenerate CloudKit bridge bindings
Xare123 Aug 29, 2026
aff8295
Resolve CloudKit semantic ownership across zones
Xare123 Aug 29, 2026
ad43f45
Enforce applied-only CloudKit checkpoints
Xare123 Aug 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
153 changes: 153 additions & 0 deletions .github/workflows/bridge-bindings.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
name: Rust bridge validation

on:
workflow_dispatch:
inputs:
allow_generated_drift:
description: Upload regenerated bindings without failing the manual run
required: false
default: false
type: boolean
push:
paths:
- ".github/workflows/bridge-bindings.yml"
- ".gitmodules"
- "rust/Cargo.toml"
- "rust/Cargo.lock"
- "rust/src/**"
- "rustpush"
- "rust/src/api/**"
- "flutter_rust_bridge.yaml"
- "lib/src/rust/**"
- "rust/src/frb_generated*"
pull_request:
paths:
- ".github/workflows/bridge-bindings.yml"
- ".gitmodules"
- "rust/Cargo.toml"
- "rust/Cargo.lock"
- "rust/src/**"
- "rustpush"
- "rust/src/api/**"
- "flutter_rust_bridge.yaml"
- "lib/src/rust/**"
- "rust/src/frb_generated*"

jobs:
bindings:
# Generated bindings must be reproducible, so pin the image instead of
# letting ubuntu-latest drift the toolchain under the drift check.
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v7
with:
submodules: recursive

- name: Set up Rust
uses: dtolnay/rust-toolchain@stable

- name: Set up Flutter for bridge generation
uses: subosito/flutter-action@v2
with:
flutter-version: "3.44.8"
channel: stable

- name: Install native build tools
run: |
sudo apt-get update
sudo apt-get install -y protobuf-compiler

- name: Set up test FairPlay certificates
shell: bash
run: |
destination="rustpush/certs/fairplay"
mkdir -p "$destination"
for name in \
4056631661436364584235346952193 \
4056631661436364584235346952194 \
4056631661436364584235346952195 \
4056631661436364584235346952196 \
4056631661436364584235346952197 \
4056631661436364584235346952198 \
4056631661436364584235346952199 \
4056631661436364584235346952200 \
4056631661436364584235346952201 \
4056631661436364584235346952208
do
cp rustpush/certs/legacy-fairplay/fairplay.pem "$destination/$name.pem"
cp rustpush/certs/legacy-fairplay/fairplay.crt "$destination/$name.crt"
done

- name: Install pinned Flutter Rust Bridge generator
shell: bash
run: |
archive="${RUNNER_TEMP}/flutter_rust_bridge_codegen.tgz"
url="https://github.com/fzyzcjy/flutter_rust_bridge/releases/download/v2.3.0/flutter_rust_bridge_codegen-x86_64-unknown-linux-gnu-v2.3.0.tgz"
curl --fail --location --silent --show-error "$url" --output "$archive"
echo "bb3a5e3d1f17a543e73f8dfff886e883928b95e3a9d19ca5268da40952d80cee $archive" | sha256sum --check --strict
mkdir -p "${RUNNER_TEMP}/frb-codegen"
tar -xzf "$archive" -C "${RUNNER_TEMP}/frb-codegen"
echo "${RUNNER_TEMP}/frb-codegen" >> "$GITHUB_PATH"

- name: Regenerate committed bridge bindings
shell: bash
run: flutter_rust_bridge_codegen generate --config-file flutter_rust_bridge.yaml

- name: Normalize generated SSE implementations
shell: pwsh
run: |
./tooling/frb/guard_generated_sse_impls.ps1 -Mode Deduplicate -ExpectedRemovalCount 6
./tooling/frb/guard_generated_sse_impls.ps1 -Mode Verify

- name: Upload regenerated bridge bindings
if: always()
uses: actions/upload-artifact@v7
with:
name: regenerated-rust-bridge-bindings
if-no-files-found: error
retention-days: 7
path: |
lib/src/rust/api/api.dart
lib/src/rust/frb_generated.dart
lib/src/rust/frb_generated.io.dart
lib/src/rust/frb_generated.web.dart
rust/src/frb_generated.rs
rust/src/frb_generated.io.rs
rust/src/frb_generated.web.rs

- name: Verify committed bridge bindings are reproducible
if: github.event_name != 'workflow_dispatch' || inputs.allow_generated_drift != true
shell: bash
run: |
git diff --exit-code -- \
lib/src/rust/api/api.dart \
lib/src/rust/frb_generated.dart \
lib/src/rust/frb_generated.io.dart \
lib/src/rust/frb_generated.web.dart \
rust/src/frb_generated.rs \
rust/src/frb_generated.io.rs \
rust/src/frb_generated.web.rs

- name: Compile committed Rust bridge
run: cargo check --manifest-path rust/Cargo.toml --lib --message-format short

# cargo check --lib does not even compile #[cfg(test)] code, so until now
# no Rust test in this repository could fail a build. That covered the
# canonical converter, the DTO parsers, the protected store, and the
# keyed identity hasher. A suite that cannot fail a build is not a gate.
- name: Run Rust tests
run: cargo test --manifest-path rust/Cargo.toml --lib

# Tests inside the rustpush submodule are not executed when rustpush is
# compiled only as a dependency of the bridge crate. Keep its protocol,
# concurrency, and log-redaction tests as an independent gate. Match the
# production bridge's non-macOS Anisette provider feature so icloud_auth
# exposes the same provider types that the application compiles against.
- name: Run rustpush tests
run: cargo test --manifest-path rustpush/Cargo.toml --lib --features remote-anisette-v3

# The protector harness is a separate crate and is deliberately
# dependency-light so these security invariants can run on hosts where the
# full application crate cannot build.
- name: Run the Cloud Sync protector harness
run: cargo test --manifest-path rust/cloud_sync_protector_harness/Cargo.toml
Loading