@otalan/cli 1.5.3 → 1.6.0
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 +19 -0
- package/README.md +19 -15
- package/dist/bin.js +109 -53
- package/package.json +5 -4
- package/third-party-licenses.txt +130 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@otalan/cli` will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## 1.6.0 - 2026-05-30
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Add `@clack/prompts` for maintained cross-platform interactive prompts, loading indicators, and terminal status rendering.
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- Centralize CLI success, warning, info, and error formatting with compact symbols and colorized output.
|
|
14
|
+
- Render CLI context, key generation, status, channels, and bundle lists as compact terminal tables.
|
|
15
|
+
- Hide Expo subprocess output during `otalan bundle` by default while keeping it available with `--verbose` or `-v`.
|
|
16
|
+
- Show the app, release tuple, archive, rollout, and validation result in default `otalan publish` output.
|
|
17
|
+
- Keep release context table spacing to one blank line before the next section.
|
|
18
|
+
- Let interactive `otalan rollback` select the target bundle from a compact bundle list, with the current live bundle highlighted and non-target archives disabled.
|
|
19
|
+
- Replace the custom interactive prompt renderer with Clack prompts while keeping stable non-interactive progress output.
|
|
20
|
+
- Trim redundant interactive prompt hints from `otalan login` and `otalan bundle`.
|
|
21
|
+
- Split large bundle, bundle command, and release command modules into smaller focused files under the 500-line target.
|
|
22
|
+
- Update README output examples and third-party license documentation for the new terminal UI dependency.
|
|
23
|
+
|
|
5
24
|
## 1.5.3 - 2026-05-28
|
|
6
25
|
|
|
7
26
|
### Changed
|
package/README.md
CHANGED
|
@@ -265,13 +265,12 @@ The `--kind` values and generated key prefixes keep the existing internal API id
|
|
|
265
265
|
Output includes both the full Otalan key and the base64url suffix without the `otalan_ci_` or `otalan_ota_` prefix:
|
|
266
266
|
|
|
267
267
|
```text
|
|
268
|
-
Generated OTA Publish Key
|
|
268
|
+
✓ Generated OTA Publish Key
|
|
269
269
|
|
|
270
|
-
|
|
271
|
-
otalan_ci_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
270
|
+
┌────────────────┬────────────────────────────────────────────┐
|
|
271
|
+
│ Full key │ otalan_ci_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx │
|
|
272
|
+
│ Without prefix │ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx │
|
|
273
|
+
└────────────────┴────────────────────────────────────────────┘
|
|
275
274
|
```
|
|
276
275
|
|
|
277
276
|
`otalan keygen` only creates local key material. Importing or activating a key should still happen through an authenticated dashboard flow; an existing OTA Publish Key should not be able to create more keys. OTA App Keys are intended for embedded app update checks and should not be shared or used as CLI credentials.
|
|
@@ -280,12 +279,14 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
|
280
279
|
|
|
281
280
|
Saves the project OTA Publish Key and API base URL locally.
|
|
282
281
|
|
|
283
|
-
|
|
282
|
+
Otalan's default API URL is `https://api.otalan.com`. Only pass `--api-url` for self-hosted or non-production API environments.
|
|
283
|
+
|
|
284
|
+
If auth is already saved, `otalan login` shows the current API URL as the prompt default and shows the current OTA Publish Key in masked form.
|
|
284
285
|
|
|
285
286
|
During interactive login, typed OTA Publish Key characters are echoed as `*` so the terminal shows input progress without exposing the key.
|
|
286
287
|
|
|
287
288
|
```bash
|
|
288
|
-
otalan login --api-key otalan_ci_xxx
|
|
289
|
+
otalan login --api-key otalan_ci_xxx
|
|
289
290
|
```
|
|
290
291
|
|
|
291
292
|
### `otalan doctor`
|
|
@@ -350,8 +351,8 @@ Current behavior:
|
|
|
350
351
|
- Expo does not require a prebuilt `dist/` or `www/` folder
|
|
351
352
|
- Expo stores the generated Otalan satellite manifest in `.otalan/bundle/manifest.json`, including `launchAsset`, `assets`, `runtimeVersion`, `bundleId`, and `expoConfig`
|
|
352
353
|
- both outputs produce a ZIP plus `manifest.json`
|
|
353
|
-
- default output
|
|
354
|
-
- `--verbose` or `-v` prints the linked project/app, Capacitor build reminder, source-map omitted count, bundle ID source, and JSON bundle result
|
|
354
|
+
- default output uses colorized compact terminal UI symbols, shows animated status icons in interactive terminals, ends with `✓ Bundle created`, and prints the generated bundle folder as a compact table
|
|
355
|
+
- `--verbose` or `-v` prints the linked project/app, streams Expo subprocess output, shows the Capacitor build reminder, source-map omitted count, bundle ID source, and JSON bundle result
|
|
355
356
|
- source map files (`*.map`) are omitted from bundle ZIPs by default
|
|
356
357
|
- native project/source files are rejected before bundle output is written; OTA bundles must only contain generated web/update assets
|
|
357
358
|
- when `otalan login` and `otalan init` are configured, the CLI checks that the selected `bundleId` is not already published for the selected platform, runtimeVersion, and channel before writing bundle output
|
|
@@ -432,7 +433,7 @@ Current behavior:
|
|
|
432
433
|
- `--rollout-percent` accepts an integer from `0` to `100`
|
|
433
434
|
- `--optional` marks the update as non-mandatory
|
|
434
435
|
- `--release-notes` attaches release notes to the published bundle
|
|
435
|
-
- default output shows
|
|
436
|
+
- default output shows the app, bundle, platform/channel/runtime tuple, rollout, archive, and validation result, then ends with `✓ Release is Live`; `--verbose` or `-v` also prints the full project and ingest details as compact tables
|
|
436
437
|
- Expo publish forwards the full generated Otalan satellite manifest when present
|
|
437
438
|
- Expo publish sends the generated manifest with `runtimeVersion`
|
|
438
439
|
- Expo manifests include the Expo config captured from `bunx expo config --json`; avoid placing secrets in Expo config fields that are not intended to be uploaded
|
|
@@ -481,7 +482,7 @@ otalan channels --app-id com.example.app
|
|
|
481
482
|
|
|
482
483
|
When `--app-id` is omitted in an interactive terminal, the CLI prompts for an app filter with `All` selected by default. Non-interactive runs default to `All`.
|
|
483
484
|
|
|
484
|
-
The command uses `GET /v1/releases/channels`, optionally with `?appId=...`, and prints each returned channel with the apps that use it:
|
|
485
|
+
The command uses `GET /v1/releases/channels`, optionally with `?appId=...`, and prints each returned channel with the apps that use it in a compact table:
|
|
485
486
|
|
|
486
487
|
```json
|
|
487
488
|
{
|
|
@@ -500,9 +501,9 @@ The command uses `GET /v1/releases/channels`, optionally with `?appId=...`, and
|
|
|
500
501
|
|
|
501
502
|
Lists remote bundles for the current app so you can choose a bundle for rollback or rollout operations.
|
|
502
503
|
|
|
503
|
-
Remote bundle tables display the API `publishedAt` timestamp, not the bundle row `createdAt` timestamp.
|
|
504
|
+
Remote bundle tables are colorized and display the API `publishedAt` timestamp, not the bundle row `createdAt` timestamp.
|
|
504
505
|
|
|
505
|
-
|
|
506
|
+
The active bundle row is highlighted in green.
|
|
506
507
|
|
|
507
508
|
Default resolution order:
|
|
508
509
|
|
|
@@ -520,12 +521,13 @@ otalan bundles --platform ios --channel production
|
|
|
520
521
|
Reactivates an older bundle for the same tuple.
|
|
521
522
|
|
|
522
523
|
`rollback` uses the same runtime-version default order as `bundles`. Pass `--runtime-version` if you want to override the detected default.
|
|
524
|
+
If `--bundle-id` is omitted, interactive terminals show a selectable bundle list. The current live bundle is highlighted in green and disabled; deleted or unavailable archives are also disabled.
|
|
523
525
|
|
|
524
526
|
```bash
|
|
525
527
|
otalan rollback --bundle-id 1.0.0-web.1 --platform ios --channel production
|
|
526
528
|
```
|
|
527
529
|
|
|
528
|
-
When no bundles exist for the selected platform, channel, and runtimeVersion, `otalan rollback` exits without prompting for a target bundle. Successful rollbacks print `Bundle selected
|
|
530
|
+
When no bundles exist for the selected platform, channel, and runtimeVersion, `otalan rollback` exits without prompting for a target bundle. Successful rollbacks print `Bundle selected`, the selected bundle summary, and then `✓ Rollback done`.
|
|
529
531
|
|
|
530
532
|
### `otalan pause`
|
|
531
533
|
|
|
@@ -620,6 +622,8 @@ bun pm pack --dry-run
|
|
|
620
622
|
## Notes
|
|
621
623
|
|
|
622
624
|
- This is a Bun-based CLI published on npm.
|
|
625
|
+
- Terminal prompts, loading indicators, and interactive status rendering use `@clack/prompts`; command summaries and list commands use compact colorized tables.
|
|
626
|
+
- Set `OTALAN_NO_COLOR=1` if you need plain, non-colorized logs.
|
|
623
627
|
- Expo bundling uses `bunx expo ...`.
|
|
624
628
|
- Default API URL is `https://api.otalan.com`.
|
|
625
629
|
- Publishing, rollback, status, and `bundles` expect an OTA Publish Key and an active app.
|