release: palette redesign + CoreSync scaffolding + dashboardAPI MODULE_NOT_FOUND fix
PALETTE REDESIGN (2026-05-21)
Sidebar swatches switched from S88 level (all blue) to domain-hue per node.
Family hue = function (rotating=orange, valves=teal, biology=green/olive,
sampling=violet, sensor=amber, aeration=sky-blue, infrastructure=slate);
within a family, darker = higher S88 / "more controller-ish."
Editor-group rectangles in flow.json still follow S88 — only the
registerType colour changed.
Submodule bumps for palette: rotatingMachine, machineGroupControl,
pumpingStation, valve, valveGroupControl, reactor, settler, monster,
measurement, diffuser, dashboardAPI.
Docs touched:
- CLAUDE.md: palette swatch vs. editor-group bullets split out.
- .claude/rules/node-red-flow-layout.md: new §10.0 introduces the two
color systems, full 12-row palette table, and explicit warning not to
mix the two hexes.
- .claude/refactor/MODULE_SPLIT.md: per-node headers annotated with
both `group #XXX` and `palette #XXX`.
- .claude/refactor/WIKI_HOME_TEMPLATE.md + WIKI_TEMPLATE.md: clarify
Mermaid classDefs visualize hierarchy, not palette swatches.
- .claude/refactor/OPEN_QUESTIONS.md: dated decision entry with
rationale, file list, and follow-ups.
CORESYNC SUBMODULE (new)
nodes/coresync added pointing at https://gitea.wbd-rd.nl/RnD/coresync.
FROST/SensorThings handoff path — first version forwards FROST-ready HTTP
request messages on the dbase output; a downstream http-request node
performs the POST and feeds responses back on msg.topic = "frost.response".
Lazy stream resolver, latest-wins queue (keep first + latest, drop middle),
knot-emit on slope change, provenance preserved in Observation parameters.
- .gitmodules: add nodes/coresync entry.
- package.json: register coresync as a Node-RED node.
- generalFunctions bump: new frostFormatter + 4 node config schemas
expose the dbase format option.
- measurement bump: "frost" option added to dbaseOutputFormat dropdown
(plus the in-flight data.measurement unit-handling work).
- machineGroupControl bump: small editor compact-fields tweak alongside
the palette change.
- CORESYNC_FROST_INTERVIEW_HANDOFF.md added at root with interview state
(Q20 open: slope angle vs. relative delta comparison).
DASHBOARDAPI MODULE_NOT_FOUND FIX
package.json: dashboardapi entry path corrected to
nodes/dashboardAPI/dashboardAPI.js. Commit e04c4a1 renamed the files to
camelCase but missed package.json; on case-sensitive filesystems
(Linux/Docker, where the tarball lands) the require resolved to nothing
and the node showed MODULE_NOT_FOUND in the Node-RED palette.
MISC CLEANUP
- examples/README.md + examples/pumpingstation-complete-example/ removal
(build_flow.py, flow.json, README.md superseded by per-node examples).
- jest.config.js: in-progress tweak.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -273,6 +273,34 @@ Before declaring a flow done:
|
||||
|
||||
The lane assignment maps to the **S88 hierarchy**, not to specific node names. Any node that lives at a given S88 level goes in the same lane regardless of what kind of equipment it is. New node types added to the platform inherit a lane by their S88 category — no rule change needed.
|
||||
|
||||
### 10.0 Two color systems — palette swatch vs. editor group
|
||||
|
||||
EVOLV uses two distinct color schemes for two distinct purposes. Mixing them up is the most common visual-design bug we see in flows.
|
||||
|
||||
| System | Where it's set | What it signals | Scheme |
|
||||
|---|---|---|---|
|
||||
| **Palette swatch** | `RED.nodes.registerType(..., { color })` in `<node>.html` | "Which node am I picking from the sidebar?" | **Domain-hue per node** (table below) |
|
||||
| **Editor group rectangle** | `style.fill` on a `group` node in `flow.json` | "Which S88 cluster does this box represent?" | **S88 level** (§10.1 table) |
|
||||
|
||||
**Palette swatches (set 2026-05-21).** Family hue = function. Within a family, darker = higher S88 / "more controller-ish."
|
||||
|
||||
| Node | Hex | Family |
|
||||
|---|---|---|
|
||||
| `rotatingMachine` | `#E89B3A` | 🟧 orange — leaf (individual machine) |
|
||||
| `machineGroupControl` | `#B5651D` | 🟫 orange — mid (parent of RM) |
|
||||
| `pumpingStation` | `#8B4513` | 🟤 orange — dark (top of pump hierarchy) |
|
||||
| `valve` | `#3CAEA3` | 🟦 teal — leaf |
|
||||
| `valveGroupControl` | `#2A8A82` | 🟦 teal — dark (parent of valve) |
|
||||
| `reactor` | `#6FAE5F` | 🟩 green — biology |
|
||||
| `settler` | `#8FAD3F` | 🟢 olive — biology |
|
||||
| `diffuser` | `#6EB5E5` | 🟦 sky blue — aeration |
|
||||
| `monster` | `#9C5BB0` | 🟪 violet — sampling |
|
||||
| `measurement` | `#D4A02E` | 🟨 amber — sensor |
|
||||
| `dashboardAPI` | `#7A8BA3` | ⬜ slate — infrastructure |
|
||||
| `coresync` | `#54647B` | ⬛ dark slate — infrastructure |
|
||||
|
||||
**Important:** the §10.1 "Colour" column below refers to **editor groups + lane backgrounds** (S88), not to the palette swatch. Don't use the S88 hex inside `registerType`; don't use the palette hex inside a `flow.json` group `style.fill`.
|
||||
|
||||
### 10.1 Lane convention (x-axis = S88 level)
|
||||
|
||||
| Lane | x | Purpose | S88 level | Colour | Current EVOLV nodes |
|
||||
|
||||
Reference in New Issue
Block a user