@floless/app 0.31.3 → 0.31.4

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.
@@ -52835,7 +52835,7 @@ function appVersion() {
52835
52835
  return resolveVersion({
52836
52836
  isSea: isSea2(),
52837
52837
  sqVersionXml: readSqVersionXml(),
52838
- define: true ? "0.31.3" : void 0,
52838
+ define: true ? "0.31.4" : void 0,
52839
52839
  pkgVersion: readPkgVersion()
52840
52840
  });
52841
52841
  }
@@ -52845,7 +52845,7 @@ function resolveChannel(s) {
52845
52845
  return "dev";
52846
52846
  }
52847
52847
  function appChannel() {
52848
- return resolveChannel({ isSea: isSea2(), define: true ? "0.31.3" : void 0 });
52848
+ return resolveChannel({ isSea: isSea2(), define: true ? "0.31.4" : void 0 });
52849
52849
  }
52850
52850
 
52851
52851
  // oauth-presets.ts
@@ -166,6 +166,31 @@ Two rules that bite immediately:
166
166
  whatever the node returns.
167
167
  - **No `System.Net`** (so no `WebUtility.HtmlEncode`) — escape with a manual lambda.
168
168
 
169
+ ## Every node's Description must be plain English (HARD guardrail)
170
+
171
+ The Inspect → **Description** tab is written **for non-coders**: it must always say, in plain
172
+ English, *what the node does* — never raw code, markup, or jargon (CLAUDE.md standing rule).
173
+ When authoring a `.flo`, that is **your** job, node by node:
174
+
175
+ - **Each `exec` node's Description IS its leading `//` comment.** `web/aware.js` `leadingComment()`
176
+ derives both the Description paragraph and the card blurb from the comment block at the top of
177
+ `config.code`. So **start every exec `code:` with a 1–2 sentence plain-English comment** that
178
+ explains what the node does for someone who can't read C# — e.g.
179
+ `// Reads the chosen phase and builds the bill of materials as an HTML table.` A node with no
180
+ leading comment falls back to a generic "read-mode exec node" line — that's the rubbish this
181
+ rule forbids. (You may *mention* a `{{ upstream.result.x }}` knob in the prose, but never let a
182
+ description be *only* a bare `{{ … }}` ref — and remember braces inside `code` are a run-time
183
+ footgun, see the templating note above.)
184
+ - **The workflow itself needs a plain-English top-level `description:`** (a paragraph saying what
185
+ the app is for) — it's required, not decorative.
186
+ - **Don't rely on the display layer to save you.** The Inspect tab summarizes oversized/baked blob
187
+ *inputs* (e.g. a baked `args.html` → `baked HTML · 223 KB`) so they never dump raw markup — but
188
+ that's a safety net for input *values*, not a license to skip the node's own plain-English
189
+ description.
190
+ - **Enforced in CI:** `npm run verify:flo` (`server/build/verify-flo-descriptions.mjs`) fails the
191
+ build if any committed `demos/*/*.flo` ships a node with no plain-English Description. Run it
192
+ before you call a `.flo` done.
193
+
169
194
  ## The build loop (install → validate → compile → run)
170
195
 
171
196
  Resolve the `aware` CLI the same way the adapter does: prefer the npm global
@@ -377,6 +402,9 @@ past a few hard facts, split it into a `references/` file and link it.
377
402
 
378
403
  ## Guardrails (do not drift)
379
404
 
405
+ - **Every node's Description is plain English** — each exec node opens with a 1–2 sentence
406
+ plain-English `//` comment (its Description), and the app has a plain-English `description:`.
407
+ Enforced by `npm run verify:flo` in CI. See "Every node's Description must be plain English".
380
408
  - Determinism is AWARE's: `<app>.lock` is the approved artifact; Run is gated on a fresh
381
409
  source-hash. Never let the UI run on drift.
382
410
  - Any change under `web/` requires a Playwright pass (visual + interaction), not just a check of
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floless/app",
3
- "version": "0.31.3",
3
+ "version": "0.31.4",
4
4
  "type": "module",
5
5
  "description": "Thin localhost host for floless.app — serves web/ and shells the aware CLI. No engine, no LLM.",
6
6
  "bin": {
@@ -24,6 +24,7 @@
24
24
  "build": "node build/bundle.mjs",
25
25
  "build:exe": "node build/bundle.mjs && node build/make-sea.mjs",
26
26
  "verify:skills": "node build/verify-shipped-skills.mjs",
27
+ "verify:flo": "node build/verify-flo-descriptions.mjs",
27
28
  "typecheck": "tsc --noEmit",
28
29
  "prepack": "npm run build"
29
30
  },