@zaflun/lumio-cli 0.6.2 → 0.10.8

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 ADDED
@@ -0,0 +1,190 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@zaflun/lumio-cli` are documented here.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## 0.10.8
9
+
10
+ ### Added
11
+
12
+ - **`CHANGELOG.md` ships in the package.**
13
+
14
+ ### Changed
15
+
16
+ - **`lumio deploy --system` requires a changelog entry** — a system
17
+ extension deploy fails when `CHANGELOG.md` has no non-empty
18
+ `## [x.y.z]` section for the deployed version, in CI too, and `-d` does not
19
+ replace the entry. Third-party deploys keep their rule: a missing entry
20
+ stops the deploy only outside CI.
21
+ - **`lumio dev` targets protocol 0.10.0** — the CLI warns when the project's
22
+ `@zaflun/lumio-sdk` or `@zaflun/lumio-devkit` speaks an older protocol, so
23
+ the Shopify event types (`shopify:order`, `shopify:order_paid`,
24
+ `shopify:product`) are not missing from the sandbox and `lumio trigger`.
25
+ - **The sandbox preview follows the dashboard's URL rule** — images and links
26
+ in the extension UI load only from the sandbox page itself and the hosts in
27
+ `egress.allowHosts` of `lumio.config.json`. Anything else is dropped, as it
28
+ is on the dashboard.
29
+ - **`lumio init` scaffolds React 19.3** — new projects get `react` and
30
+ `@types/react` `^19.3.0`, matching the SDK's renderer.
31
+ - **Sandbox stylesheet rebuilt with Tailwind CSS 4.3.4.**
32
+ - **Dependencies** — `inquirer` 14.2.5, `ora` 10 and `eventsource` 5.
33
+
34
+ ### Fixed
35
+
36
+ - **`lumio deploy` from Windows** — bundle file paths are uploaded with `/`
37
+ separators instead of `\`, so the uploaded files are served under the
38
+ paths the extension references.
39
+ - **`lumio logs` sends the token again** — the log stream authenticates with
40
+ the stored token through `eventsource` 5's `fetch` hook.
41
+
42
+ ## 0.10.0
43
+
44
+ ### Added
45
+
46
+ - **A real `lumio dev`** — one session that builds the project with esbuild
47
+ in watch mode (the same pipeline as `lumio build`), serves a sandbox page on
48
+ `127.0.0.1:3100` and opens a REPL. The sandbox renders the editor and layer
49
+ surfaces and has panels for chat, events, channel point rewards, music,
50
+ scenarios, server functions, extension data and the log. Bot modules run
51
+ their chat, event, reward and timer handlers in the same session; the old
52
+ chat simulator is gone. New flags: `--platform`, `--role`, `--seed`,
53
+ `--no-cooldown`, `--view <target>` and `--open`; `--bot-module` now only
54
+ opens the chat first. Needs `@zaflun/lumio-devkit` in the project.
55
+ - **`lumio trigger`** — sends an event, chat message, reward, music command,
56
+ timer, storage write or scenario to the running `lumio dev` from a second
57
+ terminal (`--field a.b=v`, `--tier`, `--data`, `--file`,
58
+ `--user` / `--role` / `--platform`, `--timer`, `--storage`). Load flags
59
+ `--count N`, `--rate 5/s` and `--random` send many at once.
60
+ - **`dist/functions.json`** — `lumio build` writes a manifest of the named
61
+ functions in `server/functions.ts`, and bundles handler functions
62
+ (`query()` / `mutation()` / `action()`) into `dist/server.js`. Bot modules
63
+ can expose server functions too. `lumio deploy` refuses to upload when
64
+ `server/functions.ts` exists but the manifest was not built.
65
+ - **Data schema upload** — `lumio deploy` sends `server/schema.ts` with the
66
+ version as its data schema (tables are provisioned on approval) and lists
67
+ schema errors the API rejects line by line.
68
+ - **`lumio init` adds `@zaflun/lumio-devkit`** to new projects (except
69
+ automation nodes).
70
+
71
+ ### Changed
72
+
73
+ - **The `interactive` target is gone** — `lumio.config.json` accepts only
74
+ `editor`, `layer` and `designer` and rejects any other target. Viewer input
75
+ comes through chat commands and channel point rewards handled by a bot
76
+ module. Breaking.
77
+ - **`lumio env set`** stores a secret with `PUT …/secrets/{key}` and checks
78
+ the API's rules first: the key matches `^[A-Z0-9_]{1,64}$`, the value is
79
+ 1 to 4096 bytes.
80
+ - **Developer links** point to `/dashboard/settings/developer` (application)
81
+ and `/dashboard/settings/developer/limits` (limit increases).
82
+ - **The `server/functions.ts` scaffold** orders `getItems` by `created_at`.
83
+
84
+ ## 0.6.2
85
+
86
+ ### Added
87
+
88
+ - **Developer keys** — `lumio login --token` and `lumio deploy --token`
89
+ accept a developer key (`lm_dev_*`), the key to use for publishing. Without
90
+ `--token`, `lumio login` reads `LUMIO_TOKEN`.
91
+ - **`lumio login` options** — `--id-url` and `--port` for the browser flow.
92
+ - **Server bundle** — `lumio build` compiles `server/handler.ts` (or
93
+ `server/index.ts`) to `dist/server.js` for extensions with `"server": true`.
94
+ - **Sound limit pre-flight** — `lumio deploy` checks the number, per-file size
95
+ and total size of declared sounds against your developer limits before it
96
+ uploads.
97
+ - **`lumio env set <KEY> [VALUE]`** — without a value it reads `LUMIO_SECRET`
98
+ or prompts with hidden input, so the secret stays out of shell history.
99
+
100
+ ### Changed
101
+
102
+ - **Browser login uses the ID app** — `lumio login` opens the Lumio login page
103
+ and exchanges the code at `/v1/auth/token/exchange`; it stores the session
104
+ and its refresh token. The callback server listens on `127.0.0.1` only and
105
+ exits as soon as the login finishes.
106
+ - **Stricter config validation** — `extensionId` may contain only letters,
107
+ digits, `-` and `_` (max 64); bot-module platforms, automation `nodeType`
108
+ and `node.triggerMode` are checked against the shared lists.
109
+ - **`lumio build` fails when Tailwind CSS fails** instead of shipping without
110
+ styles, and uses the project's own `@tailwindcss/cli` instead of `npx`.
111
+ - **The source archive leaves out secrets** — `.env` files (except
112
+ `.env.example`), `.npmrc`, `.yarnrc` and `.lumio/`.
113
+ - **Trovo is no longer a platform** — `lumio init` no longer offers it and the
114
+ config validator rejects it.
115
+ - **`lumio --version`** prints the package version.
116
+ - **Node.js 22.13 or newer is required.** Breaking.
117
+ - **Dependencies** — `archiver` 8, `chalk` 6, `commander` 15, `esbuild` 0.28,
118
+ `eventsource` 4, `inquirer` 14, `open` 11.
119
+
120
+ ### Fixed
121
+
122
+ - **`lumio deploy` error hints** — the HTTP status reaches the deploy command
123
+ again, so 409 / 413 / 401 failures print their guidance.
124
+ - **`lumio run`** reports malformed JSON arguments instead of crashing.
125
+ - **The credentials directory** is created readable by its owner only.
126
+
127
+ ## 0.5.2
128
+
129
+ ### Added
130
+
131
+ - **Automation nodes** — `lumio init` scaffolds an `automation_node`
132
+ (action, trigger with webhook / polling, or logic), and `lumio dev` starts an
133
+ automation node simulator for it (`--automation-node`).
134
+ - **`lumio init` wizard options** — editor approach (config schema, custom
135
+ `editor.tsx` or both), an optional visual designer for widgets and overlays,
136
+ and the styling (Tailwind CSS v4, plain CSS or inline). `lumio init` checks
137
+ for a developer profile first.
138
+ - **CSS and assets in `lumio build`** — compiles `src/globals.css` (or
139
+ `style.css` / `index.css`) with Tailwind CSS v4 or copies it to
140
+ `dist/styles.css`, and emits imported images, media and fonts to
141
+ `dist/assets/`.
142
+ - **`lumio deploy` options** — `--token` for CI and `--system` for system
143
+ extensions; `LUMIO_API_URL` overrides the API URL.
144
+ - **Sound checks** — `lumio deploy` validates the sounds declared in
145
+ `lumio.config.json` (format, presence in `dist/sounds/`, size warning).
146
+
147
+ ### Changed
148
+
149
+ - **`lumio deploy` uploads every file of `dist/`** individually (allowed
150
+ types only; max 200 files, 10 MB per file, 50 MB in total) instead of a
151
+ single bundle, and prints actionable hints for 409, 413 and 401 / 403.
152
+ - **UI targets build as IIFE** with React and the SDK as runtime externals.
153
+ - **The source archive** contains the whole project, minus `node_modules`,
154
+ `dist` and `.git`.
155
+
156
+ ## 0.3.0
157
+
158
+ ### Added
159
+
160
+ - **Bot modules** — `lumio init` scaffolds a `bot_module` with platforms, a
161
+ `hello` command and `chat:read` / `chat:send`; `lumio dev` opens a chat
162
+ simulator for it (`--bot-module`); `lumio build` packs its `server/`.
163
+ - **Bot handler types in `lumio run`** — `command`, `keyword`, `pattern`,
164
+ `event`, `timer` and `moderate`, with `--user`, `--role`, `--message` and
165
+ `--platform` for the mock chat user.
166
+ - **`platforms` and `triggers`** in `lumio.config.json`; bot modules need at
167
+ least one platform.
168
+
169
+ ## 0.2.0
170
+
171
+ ### Added
172
+
173
+ - **Browser login with PKCE** — `lumio login` without `--token` opens the
174
+ browser and waits for the callback on a local port.
175
+
176
+ ### Changed
177
+
178
+ - **`lumio deploy`** writes the deployed version into the uploaded manifest.
179
+ - **`lumio init`** points `$schema` at
180
+ `https://lumio.vision/schemas/lumio.config.schema.json`.
181
+
182
+ ## 0.1.0
183
+
184
+ Initial release.
185
+
186
+ ### Added
187
+
188
+ - **The `lumio` CLI** — `login`, `logout`, `whoami`, `init`, `dev`, `build`,
189
+ `deploy`, `status`, `logs`, `env`, `run` and `dashboard` for building,
190
+ testing and publishing Lumio extensions.
package/README.md CHANGED
@@ -35,10 +35,11 @@ lumio deploy -v 1.0.0
35
35
  | `lumio logout` | Remove local credentials |
36
36
  | `lumio whoami` | Show current user and account |
37
37
  | `lumio init [name]` | Create a new extension project (interactive wizard) |
38
- | `lumio dev` | Start local dev server with hot-reload |
38
+ | `lumio dev` | Run the extension locally: sandbox on `127.0.0.1:3100`, REPL and bot-module runtime in one session |
39
+ | `lumio trigger <type\|@preset\|chat\|reward\|music\|scenario …>` | Send input to the running `lumio dev` from a second terminal (`--field a.b=v`, `--tier 2`, `--data`, `--file`, `--user/--role/--platform`, `--timer`, `--storage`; load: `--count N`, `--rate 5/s`, `--random`) |
39
40
  | `lumio build` | Bundle extension for deployment |
40
41
  | `lumio deploy` | Upload extension version (flags: `-v`, `-d`, `--breaking`, `--draft`) |
41
- | `lumio env set <KEY> <VALUE>` | Set a server-side secret |
42
+ | `lumio env set <KEY> [VALUE]` | Set a secret (no `VALUE`: reads `LUMIO_SECRET` or prompts) |
42
43
  | `lumio env list` | List secret keys |
43
44
  | `lumio env delete <KEY>` | Delete a secret |
44
45
  | `lumio run <type:name>` | Execute a server function locally |