Files
hugo 5c933a99a3
Android ARM verification / rust (push) Failing after 46m50s
Android ARM verification / android (push) Failing after 8s
Dependency security audit / rustsec (push) Successful in 23s
Implement Android Home activity and HTTPS synchronization (#97)
2026-10-09 14:45:57 +02:00

72 lines
4.7 KiB
Markdown

# Android Home and HTTPS synchronization (#97)
Home renders the private runtime's typed Rust Git page: tracked branch, freshness
and refresh time, ahead/behind totals, incoming/outgoing commits, changed objects,
notices and permitted actions. An unfetched tracking branch retains local status
and Fetch/Pull/Push controls without presenting unknown remote counts as zero.
Rust bounds activity and local-change presentation to 50 records; committing still
includes all eligible repository changes. Compose uses lazy rows for large pages.
Commit collects only a message and displays the configured Rust Git name/email.
Fetch updates tracking data; Pull integrates fetched changes; Push sends committed
objects. Entry/foreground refresh fetches stale activity. The primary button and
swipe gesture share Rust's pull-before-push synchronization contract. A local store
refreshes its status without network or authentication.
All bridge calls use the injected I/O dispatcher. Each request publishes typed
progress, with monotonic Rust phases and a persistent Cancel control above the
scrolling history. A sequence rejects obsolete results; leaving/backgrounding
cancels the active operation and clears the unsaved commit dialog. Reload reads
status and refreshes stale tracking data; it never replays a commit, pull or push.
Completed mutations report partial progress if cancellation or status rebuilding
prevents displaying their result. Ambiguous pushes require Fetch and inspection
before retrying.
The private runtime retains one Rust authentication owner across navigation,
editors and Home. Existing reservations reject Pull with any open editor and Push
with dirty drafts. Git retains its worktree/conflict checks; Rust revalidates entry revisions
and TOTP catalog ciphertext hashes against repository changes, without decrypting
entries for cached discovery. TOTP discovery and cached-list requests reject an
active repository operation. Successful Pull/sync refreshes the Android tree
and viewer. Configuration/root replacement locks and replaces the shared owner;
updating only the cached Home timestamp does not discard drafts or leases.
Repository remotes are authoritative. Android accepts configured HTTPS endpoints
only, obtains that application's credential through the injected Rust secure store,
and closes credential state after each operation. Kotlin receives no token, stages
no paths, constructs no commit or remote URL, and interprets no Git text. Offline,
TLS, authentication, conflict, dirty-editor and cancellation errors remain typed,
bounded and recoverable. No interactive Git operation uses WorkManager.
## Validation
Rust regressions exercise real local commits and identity, shared draft guards,
unfetched tracking references, 200 local changes with bounded presentation, actual
smart-HTTP pack generation, injected protected credentials, offline/TLS/authentication
errors, monotonic slow-transfer cancellation/retry and cancellation after a completed
commit, plus immediate rejection of changed/deleted cached TOTP entries. Protocol fixtures substitute the transport, not repository or Git behavior.
Android native instrumentation creates isolated encrypted fixtures through Rust,
shares editor reservations, commits an encrypted entry, exercises typed errors and
cancellation, and checks locked authentication state. An opt-in public HTTPS test
also fetches actual remote activity using the Android certificate verifier. Compose
instrumentation exercises every action, commit identity/message, reload without
mutation replay, swipe refresh, and cancellation while scrolling 1,000 changed
objects. GUI fixtures test presentation; production Home uses the private Rust API.
The emulator scope is ARM64 API 26/4 KB, API 37/4 KB and strict API 37/16 KB.
ARMv7 is compiled and package-audited; an ARMv7 image is unavailable locally.
Authenticated remote push is covered by Rust protocol tests, rather than sending
the user's private repository credential from an emulator. Physical devices are
excluded by the milestone's user-directed validation scope. API 37 installations
were updated in place. API 26 was reset with explicit user authorization after
its previous emulator state prevented GUI instrumentation from starting.
Final validation passed all four required Rust gates (473 workspace tests), the
complete Android build/lint/JVM/style/architecture/package/dependency gates, and
app plus native instrumentation on all three emulator configurations. Each
configuration also passed five native cold loads and five application cold starts.
The opt-in public HTTPS native tests passed on API 37. Computer use verified the
production Home page, refresh behavior and history scrolling in Android Studio's
embedded emulator. No Apple project changes were required.