@condorinst/mobile-bridge 0.21.0 → 0.22.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/AGENTS.md CHANGED
@@ -53,7 +53,7 @@ command (denied by policy).
53
53
  ## The golden path
54
54
 
55
55
  ```bash
56
- npm install @condorinst/mobile-bridge@^0.21.0
56
+ npm install @condorinst/mobile-bridge@^0.22.0
57
57
  ```
58
58
 
59
59
  ```ts
@@ -137,6 +137,15 @@ answered and dropped. The **◀ OS back** button at the top presses the OS back
137
137
  button. `--native-version null` (or `0.15.0`, …) makes the handshake report that
138
138
  version, to test your capability branches.
139
139
 
140
+ ## Publishing — ask the human, never run it yourself
141
+
142
+ `npx condor-mobile-bridge canvas publish` puts the bundle live at once for every
143
+ user of a company, and asks for the person's password. **Do not run it.** When
144
+ the bundle is ready, tell the human the exact command — for example
145
+ `npx condor-mobile-bridge canvas publish dist/index.html --version 1.0.1` — and
146
+ recommend publishing to their **test company** first. See
147
+ `docs/device-testing.md`.
148
+
140
149
  ## The validation loop — run this before you call the work done
141
150
 
142
151
  ```bash
package/CHANGELOG.md CHANGED
@@ -7,6 +7,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.22.0] — 2026-10-20
11
+
12
+ ### Added
13
+
14
+ - **`condor-mobile-bridge canvas publish | list | revoke`** — publish the bundle
15
+ of your company in the Condor Canvas app from the command line, through the
16
+ same endpoints and login as the Condor web admin. The bundle is validated
17
+ locally first; the command shows company, version, size and hash and asks
18
+ before sending; the password is read only from a prompt without echo (there
19
+ is no flag or variable for it) and never stored; the two-factor code is asked
20
+ when the company uses it. Production API by default; `--env dev` for Condor
21
+ staff, `--base-url` to override. Company and user ids may come from
22
+ `CONDOR_CANVAS_COMPANY` / `CONDOR_CANVAS_USER`.
23
+ - `docs/device-testing.md`: publishing from the command line, and the test
24
+ company workflow.
25
+
26
+ ### Changed
27
+
28
+ - `docs/device-testing.md` no longer sends clients to a development
29
+ environment: clients work in production, on a test company.
30
+ - `AGENTS.md`: an agent must never run `canvas publish`; it hands the command to
31
+ the human.
32
+
10
33
  ## [0.21.0] — 2026-10-20
11
34
 
12
35
  A client built from the 0.20.0 docs worked in the browser and stalled on the
package/README.md CHANGED
@@ -20,8 +20,8 @@ Over the network, every document is plain text at a pinned, unauthenticated
20
20
  URL. `llms.txt` is the index:
21
21
 
22
22
  ```
23
- https://cdn.jsdelivr.net/npm/@condorinst/mobile-bridge@0.21.0/llms.txt
24
- https://cdn.jsdelivr.net/npm/@condorinst/mobile-bridge@0.21.0/llms-full.txt # every doc in one file
23
+ https://cdn.jsdelivr.net/npm/@condorinst/mobile-bridge@0.22.0/llms.txt
24
+ https://cdn.jsdelivr.net/npm/@condorinst/mobile-bridge@0.22.0/llms-full.txt # every doc in one file
25
25
  ```
26
26
 
27
27
  The machine-readable contract — keys, commands, limits, capability matrix — is
@@ -72,8 +72,8 @@ The published package ships a prebuilt `dist/` (ESM + CJS + type
72
72
  declarations) — **no build toolchain is required on your side**.
73
73
 
74
74
  > **Versioning during the pilot.** The package is on `0.x` (beta). Pin
75
- > `"@condorinst/mobile-bridge": "^0.21.0"`. Under semver, while on `0.x` a
76
- > caret range auto-updates **patches only** (`0.21.x`); moving to `0.22.0` is
75
+ > `"@condorinst/mobile-bridge": "^0.22.0"`. Under semver, while on `0.x` a
76
+ > caret range auto-updates **patches only** (`0.22.x`); moving to `0.23.0` is
77
77
  > an intentional opt-in. `1.0.0` is reserved for production.
78
78
 
79
79
  ## Quickstart (legacy, shell-side `Bridge`)
@@ -239,6 +239,22 @@ await createDevHarness({ html, scenario: 'no-devices', mount: document.getElemen
239
239
  Never import `@condorinst/mobile-bridge/dev` into the bundle itself: `validate`
240
240
  fails it with `dev-harness-bundled`.
241
241
 
242
+ ## Publish CLI — `condor-mobile-bridge canvas`
243
+
244
+ ```bash
245
+ npx condor-mobile-bridge canvas publish dist/index.html --version 1.4.0 # validate, confirm, publish
246
+ npx condor-mobile-bridge canvas list
247
+ npx condor-mobile-bridge canvas revoke <bundleId> --fallback-version 1.3.0
248
+ ```
249
+
250
+ Publishes the bundle of your company in the Condor Canvas app, through the same
251
+ endpoints and login as the Condor web admin: company id, user id, password
252
+ (prompted without echo, never stored) and the two-factor code when your company
253
+ uses one. It needs a **manager** user and an interactive terminal. A publish goes
254
+ **live at once** for every user of the company — use a test company first. The
255
+ API is production by default (`--env dev` is for Condor staff; `--base-url`
256
+ overrides). Details: `docs/device-testing.md`.
257
+
242
258
  ## Build CLI — `condor-mobile-bridge build`
243
259
 
244
260
  Generates the **self-contained `.zip` bundle** that the white-label app
@@ -321,10 +337,10 @@ The client passes `Record<string, unknown>`.
321
337
 
322
338
  ## Versioning policy (semver)
323
339
 
324
- - **PATCH** (`0.21.x`): bugfix with no API change.
340
+ - **PATCH** (`0.22.x`): bugfix with no API change.
325
341
  - **MINOR** (`0.x.0`): new observable key, new command, backward-compatible API.
326
342
  > While on `0.x`, a minor bump may carry breaking changes (semver treats
327
- > pre-1.0 minors as breaking). Pin `^0.21.0` to stay on safe patches.
343
+ > pre-1.0 minors as breaking). Pin `^0.22.0` to stay on safe patches.
328
344
  - **MAJOR** (`x.0.0`): incompatible schema change (key rename, payload shape
329
345
  change, public API change). `1.0.0` marks the production-stable contract.
330
346
 
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "contractVersion": "0.21.0",
3
+ "contractVersion": "0.22.0",
4
4
  "description": "Machine-readable contract of the Condor Canvas JS<->Native bridge. It states what the TypeScript declarations in dist/index.d.ts cannot express: which keys and commands a sandboxed client can actually reach, which ones need human confirmation, where messages are dropped in silence, the hard limits, and which capability each native version carries. The TypeScript types remain canonical for payload shapes.",
5
5
  "audience": "Developers and AI agents building the client bundle that renders inside the Canvas Home.",
6
6
 
7
7
  "versions": {
8
8
  "note": "Four independent numbers coexist. Only nativeVersion tells you what the device can do.",
9
- "package": "0.21.0",
9
+ "package": "0.22.0",
10
10
  "shellVersion": "0.6.0",
11
11
  "clientProtocolVersion": "0.5.0",
12
12
  "nativeVersion": "0.17.0",
@@ -174,7 +174,8 @@
174
174
  "integrity": { "algorithm": "sha256", "format": "sha256-<lowercase hex>", "computedOver": "the exact bytes of the .zip" },
175
175
  "tooling": {
176
176
  "build": "npx condor-mobile-bridge build -i dist/index.html -o dist/bundle.zip",
177
- "validate": "npx condor-mobile-bridge validate -i dist/bundle.zip --strict"
177
+ "validate": "npx condor-mobile-bridge validate -i dist/bundle.zip --strict",
178
+ "publish": "npx condor-mobile-bridge canvas publish dist/index.html --version <v> — interactive (company id, user id, password, 2FA code); live at once for every user of the company; needs a manager user. Never run it from an agent."
178
179
  },
179
180
  "statusBarHook": "<meta name=\"theme-color\" content=\"#RRGGBB\"> in the bundle sets the native status bar colour. The setStatusBarColor command overrides it at runtime."
180
181
  },