@otalan/cli 1.2.0 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -2
- package/README.md +26 -2
- package/dist/bin.js +33 -33
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,12 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@otalan/cli` will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## 1.2.2 - 2026-05-13
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Let `otalan login --api-key ...` use the saved or default API URL without prompting when `--api-url` is omitted.
|
|
10
|
+
- Remove verbose Capacitor and Expo implementation notes from the default help footer.
|
|
11
|
+
|
|
12
|
+
## 1.2.1 - 2026-05-11
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- Exclude source map files (`*.map`) from Capacitor and Expo bundle ZIPs by default and print the omitted file count.
|
|
17
|
+
- Clarify direct-upload wording around opaque `uploadUrl` values.
|
|
18
|
+
- Cancel the reserved ingest when the direct object-storage upload fails before completion.
|
|
19
|
+
- Add `otalan pause` and `otalan resume` commands for active bundle rollout control.
|
|
20
|
+
|
|
5
21
|
## 1.2.0 - 2026-05-08
|
|
6
22
|
|
|
7
23
|
### Changed
|
|
8
24
|
|
|
9
|
-
- Switch `otalan publish` to the direct-upload release contract: create JSON upload metadata, upload the ZIP to the returned
|
|
10
|
-
- Stream the local ZIP through Bun's disk-backed file body during
|
|
25
|
+
- Switch `otalan publish` to the direct-upload release contract: create JSON upload metadata, upload the ZIP to the returned opaque `uploadUrl`, complete the ingest, then poll validation.
|
|
26
|
+
- Stream the local ZIP through Bun's disk-backed file body during direct uploads instead of loading the full archive into memory.
|
|
11
27
|
- Send the full generated Otalan Expo satellite manifest as `expoManifest` during publish instead of only raw Expo config.
|
|
12
28
|
- Use the Expo `runtimeVersion` as the release `nativeVersion` sent to the API, matching the current Expo update matching contract.
|
|
13
29
|
- Use the release bundle `publishedAt` timestamp for bundle lists, status summaries, rollback prompts, and published bundle ID hints.
|
package/README.md
CHANGED
|
@@ -337,6 +337,7 @@ Current behavior:
|
|
|
337
337
|
- Expo does not require a prebuilt `dist/` or `www/` folder
|
|
338
338
|
- Expo stores the generated Otalan satellite manifest in `.otalan/bundle/manifest.json`, including `launchAsset`, `assets`, `runtimeVersion`, `bundleId`, and `expoConfig`
|
|
339
339
|
- both outputs produce a ZIP plus `manifest.json`
|
|
340
|
+
- source map files (`*.map`) are omitted from bundle ZIPs by default; the CLI prints the omitted file count when any are skipped
|
|
340
341
|
- `--platform` is required so the CLI exports the selected platform and resolves the correct native/runtime version
|
|
341
342
|
|
|
342
343
|
Native version defaults:
|
|
@@ -416,6 +417,7 @@ Current behavior:
|
|
|
416
417
|
- Expo publish forwards the full generated Otalan satellite manifest when present
|
|
417
418
|
- Expo publish sends `runtimeVersion` as the API `nativeVersion` and normalizes the serialized `expoManifest.nativeVersion` to the same value for server validation
|
|
418
419
|
- Otalan validates the release ZIP before the publish completes
|
|
420
|
+
- active rollouts can be paused and resumed later without changing the selected bundle
|
|
419
421
|
|
|
420
422
|
Default flow:
|
|
421
423
|
|
|
@@ -438,11 +440,13 @@ otalan publish --channel production --optional
|
|
|
438
440
|
This uses the direct-upload release flow:
|
|
439
441
|
|
|
440
442
|
1. `POST /v1/releases/create` with JSON metadata for the release and local ZIP, including `expoManifest` for Expo bundles
|
|
441
|
-
2. `PUT` the ZIP bytes directly to the returned `uploadUrl` with the exact returned `Content-Type`
|
|
443
|
+
2. `PUT` the ZIP bytes directly to the returned opaque `uploadUrl` with the exact returned `Content-Type`
|
|
442
444
|
3. `POST /v1/releases/ingests/:id/complete`
|
|
443
445
|
4. poll `GET /v1/releases/ingests/:id` until the ingest reaches `ready` or `failed`
|
|
444
446
|
|
|
445
|
-
|
|
447
|
+
If the direct object-storage upload fails before completion, the CLI calls `POST /v1/releases/ingests/:id/cancel` so the reserved ingest does not block a retry.
|
|
448
|
+
|
|
449
|
+
The ZIP is opened as a disk-backed `Bun.file` and passed directly to the returned `PUT` upload URL; `otalan publish` does not load the full archive into memory first.
|
|
446
450
|
|
|
447
451
|
If validation fails, `otalan publish` exits non-zero and prints the ingest failure reason when the API provides one. This makes the command safe to use directly in CI/CD pipelines.
|
|
448
452
|
|
|
@@ -473,6 +477,26 @@ Reactivates an older bundle for the same tuple.
|
|
|
473
477
|
otalan rollback --bundle-id 1.0.0-web.1 --platform ios --channel production
|
|
474
478
|
```
|
|
475
479
|
|
|
480
|
+
### `otalan pause`
|
|
481
|
+
|
|
482
|
+
Pauses delivery of the currently active bundle for the selected release tuple.
|
|
483
|
+
|
|
484
|
+
`pause` uses the same native-version default order as `bundles`. The active bundle remains selected, but new OTA checks stop receiving it until you resume the rollout.
|
|
485
|
+
|
|
486
|
+
```bash
|
|
487
|
+
otalan pause --platform ios --channel production
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
### `otalan resume`
|
|
491
|
+
|
|
492
|
+
Resumes delivery of the currently active bundle for the selected release tuple.
|
|
493
|
+
|
|
494
|
+
`resume` uses the same native-version default order as `bundles`.
|
|
495
|
+
|
|
496
|
+
```bash
|
|
497
|
+
otalan resume --platform ios --channel production
|
|
498
|
+
```
|
|
499
|
+
|
|
476
500
|
### `otalan status`
|
|
477
501
|
|
|
478
502
|
Shows the active bundle for the selected release tuple.
|