Behaviors: a shared port type travels through a chain (#210)

The paragraph on the shared type said it does not pass through a second such node. It does now, a circle ends with any, and nothing is cached. Development: 1673 editor checks.
admin committed 2026-10-02 14:41:36 +02:00
1 parent f8ee57b6ff
commit cd915e9f82
2 files changed
+8 -3

No files matched your search

+7 -2
@@ -264,8 +264,13 @@ playing use the same two words.
each one on its own, so a pair fed by a number and a text shows two colours and thereby says why
the output stays grey. That colour is paint only (`paintType`): the port itself keeps taking
everything, and every `any` input is painted this way, not just one in a group. The output falls back to `any` whenever an input is
unconnected or the two disagree, and the type does **not** travel through a second such node —
it is read from neighbours with a fixed type only, so a chain cannot ask itself in circles.
unconnected or the two disagree. The type **travels through a chain** of such nodes: a `Select`
fed by two `First not empty` that both hand out an animation is an animation port too, and one
mixed or open input anywhere in the chain makes everything behind it `any` again. Nodes that
feed each other in a circle stay `any` — the question of what feeds a group remembers whom it
has asked (`shapedDef` in `core/graph/nested.ts`), so a circle ends instead of asking forever,
and a node feeding both inputs of the next is asked once. Nothing is cached between two
changes: a chain of 50 resolves in about 10 ms on the slowest machine measured.
An edge that a new type makes invalid is left alone and **drawn in the danger colour**; nothing
is disconnected behind your back. All of this is the editor's view — at run time every value
travels the same way either way.
+1 -1
@@ -18,7 +18,7 @@ php tests/php/accounts.test.php # the API's accoun
# has and the web server's container has not (SKIP there)
php tests/php/snapshots.test.php # the snapshot store (#231), the same way
php tests/php/releases.test.php # the release store (#266), the same way
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1671 editor checks, screenshots in /tmp/gm-e2e-*.png
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1673 editor checks, screenshots in /tmp/gm-e2e-*.png
GM_STEPS=20 node tools/e2e.mjs # or 1-12, or 6,20 — a subset while working on one step
./e2e.sh start [GM_STEPS] # the same run detached, see below
./e2e.sh status # live progress, or the last run's result