Skip to content

fix: harden updater, Android configuration and signed release delivery - #3

Draft
649472774 wants to merge 8 commits into
mainfrom
649472774-release-infrastructure
Draft

fix: harden updater, Android configuration and signed release delivery#3
649472774 wants to merge 8 commits into
mainfrom
649472774-release-infrastructure

Conversation

@649472774

Copy link
Copy Markdown
Owner

Scope

Release infrastructure lane for the coordinated overnight upgrade. Version remains 0.1.33 / code 34; no main merge, device install, signing-key replacement, or GitHub Release publication is included.

  • Align AGP 9.0.1 / Gradle 9.1.0 / built-in Kotlin and compiler plugins 2.2.10, compatible AndroidX/Compose dependencies, targetSdk 36, strict lint, WebKit and Compose test support. Preserve minSdk 31 and .debug application identity.
  • Correct credential backup domains in cloud backup and device transfer; retain narrow private-cache FileProvider roots. Wire proxy readiness/error and the shared persisted model catalog through AppContainer.
  • Make updates bounded and cancellable throughout body consumption, explicit about proxy/direct routing, SHA-256 verified, and atomically downloaded. Validate actual APK package/version/Android requirements/current signer identity before requesting installation. Keep cancel, retry, permission-return and installer-return states truthful; never auto-install after download.
  • Preserve the recorded existing debug certificate. Make release scripts fail fast, require committed source, stage nothing, select real devices only on explicit installation, preserve prior APKs, and generate checksums/source provenance/rollback information. Label ephemeral CI artifacts as validation-only, not drop-in updates.
  • Replace stale contributor/release guidance with the current Kotlin/serialization/storage architecture and operational contracts.

Integration dependencies

Owned checkpoints: 8a128d0 (shared configuration), 2922e70 (updater/DI), d037cb7 (signing/delivery/CI/docs).

This branch also adopts core-owned prerequisites without independent core edits:

Core original Adopted equivalent
93aa260 cadd321
da66b99 c90f4d9
7371ff0 eaaaa48
9866149 39e4546

Integration should deduplicate these prerequisites and apply the owned checkpoints above. The stable DataStore 1.1.7 Windows/JVM rename regression is addressed with explicit real Okio-backed JVM fixtures, not skipped assertions or a production dependency downgrade. Native production-factory/real-Keystore fixtures are retained.

Evidence and remaining acceptance

  • Full combined JVM suite: 124 tests, 0 failures/errors/skips.
  • assembleDebug, assembleDebugAndroidTest, strict lintDebug: passed; lint has 0 errors.
  • Release PowerShell guards, native-tool parsing, backup domains, FileProvider roots, and CI YAML/provenance Python syntax checked.
  • End-to-end committed-source release.ps1 -SkipBump -SkipInstall -SkipCopy: passed and produced a local bundle; no deployment or publication occurred.
  • Local APK certificate SHA-256: 89dbef99c2c81eb48b0bf28dd698631ffcdf8ad7cbb4dac9960914096e68928b (matches recorded published/local baseline).
  • Local candidate APK SHA-256: 69f2830283b81fefbdd036212da34a25855370ad3f5f598f5fb7604244b1ea2c.

Integration owns device execution and milestone publication. Seven isolated Android cases are ready: 3 APK archive rejection cases, 2 large-font cancellable update-dialog cases, and 2 core real-backend credential migration cases. No live account testing is claimed.

Tong Xie and others added 7 commits September 7, 2026 00:27
Align AGP built-in Kotlin and Compose plugins, use supported AndroidX versions, add WebKit and Compose test dependencies, restore lint failures, and exclude credential stores from cloud and device backups. Preserve the existing app version and debug package identity.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep non-streaming body reads off the caller thread, close responses across callback cancellation races, and cancel the underlying socket through response consumption. Add readiness-gated proxy clients without invalidating live dispatchers and controlled HTTP lifetime regressions.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add generation-safe auth and verified no-backup credential migration; typed cached model discovery without retired fallbacks; SSE error/completion framing; atomic session snapshots, backups, tombstones, summary cache and bounded inactive state. Add content-addressed attachment references, bounded coherent prompt history with retained vision, durable send receipts and awaited UI action APIs. Preserve v0.1.33 JSON and existing public adapters for coordinated UI integration.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve queued stream deltas before errors, join concurrent logout operations, scope catalog and submissions to account generations, reject changed idempotency payloads, and keep orphaned replies out of unrelated prompt turns. Harden proxy and attachment boundaries and no-follow atomic writes. Add complete regression discovery coverage, portable real-DataStore JVM fixtures, and isolated default-Android-backend plus Keystore instrumentation cases; production key alias and DI defaults are unchanged.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use the published OkioStorage and PreferencesSerializer APIs for token/proxy JVM migration fixtures. createWithPath also selects FileStorage under DataStore 1.1.7 and retains the Windows temp-file replacement bug. Keep all persistence assertions and native default-backend instrumentation unchanged.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use full-response cancellation and initialized proxy-aware transport, bounded trusted release downloads, SHA-256 verification and atomic private cache files. Check actual APK package, version, Android requirements and current signer identity before handing control to the system installer. Serialize update operations, retain truthful retry/permission states, and wire shared proxy readiness and model catalog DI. Add controlled JVM and Android fixture coverage without touching a live account or device.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve the existing public debug signing identity and fail on native command errors, dirty sources, wrong SDK/package/version/certificate, and ambiguous devices. Separate version preparation from committed-source builds, keep prior APKs and rollback history, generate checksums/source provenance/release notes, and make installation/copy/push opt-in. Label ephemeral CI packages as validation-only, enforce quality gates, and replace stale maintenance guidance with current architecture and migration rules.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add a read-only native fixture that validates explicit marker/path/hash/version arguments before file IO, restricts the candidate to private updates cache, and exercises the real APK verifier for code35 while code34 remains installed. No production/version/device changes, downloads, installations, cleanup, or credential access.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
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