Skip to content

Releases: ibsz909i/direct-ota

Direct OTA 0.7.0

Choose a tag to compare

@ibsz909i ibsz909i released this 25 Sep 21:12

Direct OTA 0.7.0 makes compatible frontend releases easier to operate without a new store submission for every web-bundle change.

This release adds:

  • Optional encrypted delta delivery. prepare --delta-from creates a smaller ranged patch when it saves bytes, while the same immutable artifact retains a complete bundle for devices without the cached base. Both paths verify the final ZIP before import.
  • Staged signing-key rotation. Pin a second public key in a native release, then switch the active publisher after that build is verified. Devices remember the highest accepted key stage.
  • Bounded release metrics, manually requested rollout health gates, background updates, signed provenance and history, clearer native diagnostics, and a verified package workflow.
  • A disposable local Supabase acceptance command for Storage permissions, immutable uploads, byte ranges, and PostgreSQL publication rules.

The package is for Capacitor 8 apps on iOS and Android. Initial integration and later native changes still need store builds. See docs/quickstart.md, docs/publishing.md, and docs/verification.md in this tag.

Verification on the tagged commit: npm run release:verify passed 78 portable tests with three separately exercised environment gates, type checking, a Cloudflare Worker dry run, dependency audit, tarball install smoke test, and SHA-256 generation. Local Supabase Storage/PostgreSQL checks and Firebase emulators passed separately. The native fixture compiled and launched on an iPhone and Android emulator. The new delta path was exercised through an HTTPS Node provider with exact ranged downloads and ZIP reconstruction. After publication, a separate Android emulator running this exact 0.7.0 package fetched a full update, then a 1,216-byte signed delta for a 266,656-byte full segment, then a newer signed rollback. The visible web bundle moved 0 → 1 → 2 → 1 without reinstalling the APK. This is not a hosted Supabase or physical-device OTA acceptance claim; iPhone OTA activation was not tested for this release.

GitHub Actions did not start because GitHub reported an account billing lock. These assets are the exact locally verified package and checksum, attached manually. npm registry publication is not enabled for this release.

Direct OTA 0.6.0

Choose a tag to compare

@ibsz909i ibsz909i released this 25 Sep 17:37

Direct OTA 0.6.0 makes the first integration easier to finish and easier to diagnose.

  • doctor now reports identity, native overlay, runtime, generated settings, host config, and synced platform checks together. doctor --fix repairs only safe local settings for the same publishing identity.
  • setup --finish previews and completes native sync plus deployment for a pre-provisioned, dedicated Cloudflare or Firebase OTA service. It requires the exact target and --apply --dedicated, then runs read-only provider conformance and metadata checks.
  • Simple JSON and TypeScript Capacitor configs are supported; unrelated plugin settings are preserved. Dynamic configs and shared Supabase migrations still require manual review.

Verification: npm run check passed (56 tests, 3 environment-dependent skips). A disposable Capacitor 8 iOS project completed an actual native sync and passed doctor. No production account or physical device was changed for this release.

SHA-256 of direct-ota-0.6.0.tgz: 946e38a782e43373e3d6f5b00aa0284c0f443076aa631124ea026871f9c0fe65

Direct OTA 0.4.0

Choose a tag to compare

@ibsz909i ibsz909i released this 25 Sep 01:18

Direct OTA 0.4.0 adds a Cloudflare provider for teams that want to deliver signed Capacitor web updates from a dedicated Worker, D1 database, and private R2 bucket. The app can keep its existing backend. Guided setup and provider export produce the service files locally; the operator chooses and deploys the Cloudflare resources.

The Worker accepts short-lived signed publishing commands, reserves immutable artifact paths, checks the complete encrypted bundle hash before promotion, and advances each channel with a conditional sequence update. Upload capabilities travel in a request header. Downloads support HEAD and byte ranges for resumed transfers. Rollback and withdrawal use newer signed instructions.

The same CLI, native compatibility checks, and client updater remain in place. This release does not change the native overlay, so existing compatible Capacitor 8 integrations do not need a new native build solely for this provider change. A new app still needs its first native store build with the updater installed.

Verification: the local suite passed 47 tests, with two optional environment tests skipped. The exported npm package installed in a separate consumer directory and its Worker bundled successfully. Two isolated Cloudflare deployments exercised real D1/R2 publication; the final build rejected unauthorized and altered uploads, and remote verification checked the signed manifest, size, byte ranges, and SHA-256. The temporary resources were removed. npm audit found zero vulnerabilities. GitHub Actions did not start runner steps for this commit, so its failed status is not a test result. See verification and limits.

Cloudflare's free quotas are finite. The live sample does not establish capacity or cost for a 100,000-device rollout, and each app must test its own first native integration and staged release on devices.

Direct OTA 0.3.0

Choose a tag to compare

@ibsz909i ibsz909i released this 25 Sep 00:42

Direct OTA 0.3.0 makes the ordinary frontend release a single command:

npx direct-ota publish --platform ios --version 1.0.1

It runs the host build, checks native compatibility, prepares and uploads an immutable bundle, promotes it to the internal channel, and confirms the channel head. Production rollout still follows an internal device test and an explicit rollout command. The lower-level prepare, upload, and promote commands remain available for retries and automation.

The new doctor --remote --platform ios|android checks the deployed public endpoint, signed release metadata, byte-range delivery, and the complete artifact hash. Publishing now refuses a platform with no synced native target.

Verified locally with the full 47-test suite, including isolated PostgreSQL security tests, Java/Swift protocol checks, and a real HTTPS publishing flow. GitHub Actions did not start its jobs for this release because the repository owner's account is locked by a billing issue. This release does not change the native updater or claim physical-device acceptance for a new app integration. See docs/verification.md for the evidence and limits.

Direct OTA 0.2.0

Choose a tag to compare

@ibsz909i ibsz909i released this 25 Sep 00:33

Direct OTA 0.2.0 makes a first Supabase integration easier to prepare in a Capacitor 8 app. The guided command detects the app ID, web directory, and installed native platforms, then shows the exact local work before creating files.

Guided setup

npx direct-ota setup --provider supabase --base-url https://YOUR_PROJECT.supabase.co --plan
npx direct-ota setup --provider supabase --base-url https://YOUR_PROJECT.supabase.co

The command creates a private local publishing identity, exports a Supabase provider with public project values filled in, writes an ignored Edge trust file, and prepares the pinned native updater. It does not apply migrations, deploy functions, change a Supabase project, or publish an update. Review the exported SQL and target project, merge the generated native configuration, sync/build, and verify an internal update on a device. Existing identities and outputs are never replaced.

This release also supports a JSON Capacitor configuration containing the generated updater settings without a runtime fingerprint loop. The other native configuration inputs remain covered, and doctor checks the settings copied into the native projects. Native patching rejects paths that escape the installed updater package.

Install

Download both assets below, check the archive hash, and follow the setup guide.

shasum -a 256 -c SHA256SUMS-0.2.0
npm install --save-exact ./direct-ota-0.2.0.tgz @capgo/capacitor-updater@8.51.25 @capacitor/app@8

Verification

47 local tests passed with no skips, including the isolated PostgreSQL security and publication checks. Typecheck, build, a fresh installed-tarball setup and doctor, Deno checks of the exported Edge Functions, and iOS Simulator and Android native builds passed. The release archive and Git history scans found no secrets. The verification record states what remains untested, including a hosted Supabase deployment and physical-device acceptance of the generalized package.

Direct OTA 0.1.0

Choose a tag to compare

@ibsz909i ibsz909i released this 24 Sep 23:54

Direct OTA helps ship compatible frontend fixes to installed iOS and Android apps without making a new store submission for each change. Build and publish from a computer or CI; devices download from your update service after the publishing machine goes offline.

This first release includes:

  • A local CLI for signed releases, staged rollouts, withdrawal, and rollback.
  • Capacitor 8 integration built on Capgo updater 8.51.25, with native verification, resumable downloads, activity guards, and startup recovery.
  • Supabase and standalone Node providers, plus a documented contract for other backends.
  • Setup and operations guides, an agent integration and publishing skill, and an anonymized case study.

Your application backend can stay where it is. Supabase can be used only for updates; its free plan has quotas. The included runtime adapter targets Capacitor. Other mobile runtimes need their own compatible integration, and native changes still require a native release.

Install

Download the tarball and SHA256SUMS below, verify the checksum, then follow the setup guide.

shasum -a 256 -c SHA256SUMS
npm install --save-exact ./direct-ota-0.1.0.tgz @capgo/capacitor-updater@8.51.25 @capacitor/app@8

Verification

43 automated checks passed locally, including signing, authorization, replay protection, provider contracts, isolated PostgreSQL permissions, and a real CLI publication lifecycle over local HTTPS. Type checking, library build, fresh tarball installation, provider exports, and iOS Simulator/Android native compilation passed. Secret scans found no leaks in the published history or package.

Read the verification record before production adoption. This release does not claim hosted Supabase deployment verification, physical-device acceptance for the generalized package, or a large-fleet capacity test. Validate your integration and use staged releases.