From acb71fd1453be0f5723f7ca80dc692d9481c05a6 Mon Sep 17 00:00:00 2001 From: Hanrim <148833226+MerciHanrim@users.noreply.github.com> Date: Thu, 8 Oct 2026 23:58:41 +0900 Subject: [PATCH 1/2] feat(playback): the Gate path, a +N badge beside every token, the own-label rule and 24 pairs a step (v0.22.0) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Part of #330 (PR 1 of 3). Playback shows what moved where, as a presentation layer only: the engine, the RNG, files, share links, digests and simulation results are unchanged. - Every Gate output that carried a move this step is highlighted under its round token (deterministic and probabilistic); an untaken branch keeps its usual look. - The step's summed amount rides beside the token as a +N badge, from +1, in the label layer above every connection label; the connection's own label never moves and dims only while the token or badge covers it. - 24 token-and-badge pairs per step replace the 60 travelling-cue budget; past them a moved connection keeps its path highlight and arrival cue. - Outside the Focus set every playback cue on a connection follows its 0.26 dimming; cues inside a node keep full strength. - Reduced motion holds the moved paths, arrival tells and +N badges static for the step; forced colours tell the highlight by width, draw the badge as a system-colour pill and dash the cues outside the focus. Docs: simulation-playback §PB4.5 and new §PB4.6, large-graph-readability §LGR2.3, visual-language §VL9. Seven approved baselines replaced (run-distinction-states, play-depart x3 desktop and x3 phone). Release notes v0.22.0 in 18 languages. --- .changes/playback-gate-path.json | 1 + CHANGELOG.md | 13 + README.md | 29 ++- docs/large-graph-readability.md | 12 +- docs/simulation-playback.md | 57 ++++- docs/visual-language.md | 7 + e2e/canvas-refresh-edges.spec.ts | 13 +- .../run-distinction-states-chromium-win32.png | Bin 52626 -> 53259 bytes e2e/playback-caps-perf.spec.ts | 46 ++-- e2e/playback-choreography.spec.ts | 8 +- e2e/playback-fixture.spec.ts | 26 +- e2e/playback-gate-path.spec.ts | 242 ++++++++++++++++++ e2e/playback-ordering-timing.spec.ts | 4 +- .../play-depart-dark-L2-chromium-win32.png | Bin 26213 -> 26954 bytes .../play-depart-dark-L2-mobile-win32.png | Bin 17209 -> 17593 bytes ...depart-forced-colors-L2-chromium-win32.png | Bin 26653 -> 27076 bytes ...y-depart-forced-colors-L2-mobile-win32.png | Bin 17830 -> 18133 bytes .../play-depart-light-L2-chromium-win32.png | Bin 28491 -> 29055 bytes .../play-depart-light-L2-mobile-win32.png | Bin 18847 -> 19252 bytes e2e/whats-new.spec.ts | 2 +- examples/README.md | 14 +- package-lock.json | 4 +- package.json | 2 +- scripts/content-direction.json | 12 +- src/components/edges/LoopEdge.tsx | 114 +++++++-- src/components/edges/PlaybackBadgeView.tsx | 40 +++ src/components/edges/playback-caps.ts | 13 +- src/components/edges/playbackBadge.test.ts | 59 +++++ src/components/edges/playbackBadge.ts | 79 ++++++ src/components/edges/playbackBudget.ts | 43 +++- src/i18n/es419Copy.test.ts | 2 +- src/i18n/itCopy.test.ts | 6 +- src/i18n/locales/ar/ui.ts | 5 + src/i18n/locales/de/ui.ts | 5 + src/i18n/locales/en/ui.ts | 5 + src/i18n/locales/es-419/ui.ts | 5 + src/i18n/locales/es-ES/ui.ts | 5 + src/i18n/locales/fr/ui.ts | 5 + src/i18n/locales/it/ui.ts | 5 + src/i18n/locales/ja/ui.ts | 5 + src/i18n/locales/ko/ui.ts | 5 + src/i18n/locales/nl/ui.ts | 5 + src/i18n/locales/pt-BR/ui.ts | 5 + src/i18n/locales/pt-PT/ui.ts | 5 + src/i18n/locales/ru/ui.ts | 5 + src/i18n/locales/th/ui.ts | 5 + src/i18n/locales/tr/ui.ts | 5 + src/i18n/locales/vi/ui.ts | 5 + src/i18n/locales/zh-Hans/ui.ts | 5 + src/i18n/locales/zh-Hant/ui.ts | 5 + src/i18n/nlCopy.test.ts | 6 +- src/i18n/ptPtCopy.test.ts | 2 +- src/i18n/ruCopy.test.ts | 2 +- src/i18n/thCopy.test.ts | 7 +- src/i18n/trCopy.test.ts | 2 +- src/i18n/viCopy.test.ts | 9 +- src/index.css | 105 +++++++- src/releaseNotes/releaseNotes.ts | 10 + 58 files changed, 960 insertions(+), 121 deletions(-) create mode 100644 .changes/playback-gate-path.json create mode 100644 e2e/playback-gate-path.spec.ts create mode 100644 src/components/edges/PlaybackBadgeView.tsx create mode 100644 src/components/edges/playbackBadge.test.ts create mode 100644 src/components/edges/playbackBadge.ts diff --git a/.changes/playback-gate-path.json b/.changes/playback-gate-path.json new file mode 100644 index 00000000..8c09d6a6 --- /dev/null +++ b/.changes/playback-gate-path.json @@ -0,0 +1 @@ +{ "type": "user-facing", "releaseNoteId": "release:0.22.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 10e89ec0..fd7f6458 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,19 @@ All notable Loop Studio releases, newest first. Behavioral changes are pinned in versioned spec documents (see the [README](README.md#technical-reference)); this file is the narrative history, not the contract. +## v0.22.0 — 2026-10-08 + +Playback shows what moved where (issue #330, first of three): the path a Gate took, every amount as a `+N` badge beside its round token, and Focus mode winning on connections, as [`docs/simulation-playback.md`](docs/simulation-playback.md) §PB4.6 and [`docs/large-graph-readability.md`](docs/large-graph-readability.md) §LGR2.3 describe. + +- **The Gate path.** For every Gate, deterministic or probabilistic, each outgoing connection that carried a move this step is highlighted under its round token, from its onset to settle; several can be at once. A branch with no move keeps its usual look, with no faded or crossed-out cue. +- **`+N` beside the round token.** The round token still travels wherever it did; the step's summed amount now always rides beside it as a `+N` badge, from `+1` (before, a bare number sat above the dot only when the amount was above 1). The badge is drawn above every connection label. At the map zoom level the badge is left out with the dot, as before. +- **The connection's own label stays put.** It dims only while the token or its badge covers its real box; no other connection's label is tested. +- **24 token-and-badge pairs per step** replace the budget of 60 travelling cues. Past them, every resource connection that moved keeps the path highlight and its arrival cue. +- **Focus mode wins on connections.** Outside the focus set, the path highlight, the token and badge, the depart and arrive cues and the reduced-motion forms are drawn at the connection's own low strength; cues inside a node keep full strength. +- **Reduced motion and high contrast.** Under reduced motion nothing travels: the moved paths, the arrival tells and the `+N` badges stay, static, for the step. In forced colours the highlight is told by width, the badge is a system-colour pill, a covered label gives way, and outside the focus set the cues take a dash instead of fading. + +**No migration.** Engine, RNG, files, share links, digests and simulation results are unchanged; Monte Carlo draws no tokens, as before. Five release-note lines in 18 languages, 16 of them without native review. The informational `meta.tool` string is now `loop-studio/0.22.0`. + ## v0.21.4 — 2026-10-08 A fix release (issues #338 and #340): while the Canvas is edit-locked, the Controls rail keeps every button where it is, as [`docs/canvas-edit-lock.md`](docs/canvas-edit-lock.md) describes; and on a phone, focusing a text field no longer zooms the page in, as [`docs/mobile.md`](docs/mobile.md) §MV4b describes. diff --git a/README.md b/README.md index e5021967..5c6b87aa 100644 --- a/README.md +++ b/README.md @@ -140,7 +140,22 @@ Additional feature-specific design documents (localization, mobile, module system, large-graph readability, simulation playback, edge routing, data import, …) live under [`docs/`](docs/). -## Latest — v0.21.4 +## Latest — v0.22.0 + +Playback shows what moved where: the path a Gate took, and every amount beside its moving +marker. + +- **The Gate's path lights up**: during a run, each branch a Gate actually sends something + down is highlighted under its moving marker; a branch that carries nothing keeps its usual + look +- **`+N` beside every moving marker**: the amount a connection carries in a step rides + beside its marker as a badge, from `+1`; the connection's own label stays in place and + fades only while the badge passes over it +- **Focus mode wins on connections**: the markers, badges and highlights on connections + outside the focus fade with those connections; in a busy step at most 24 markers move, and + every other connection that moved is highlighted instead + +## v0.21.4 A fix release: the canvas controls keep their place while editing is locked, and the phone's language search no longer zooms the page in. @@ -175,16 +190,8 @@ A fix release: values and detail rows sit inside their node. usual maximum, and a row too long even then ends in "…"; positions, heights, files and results are unchanged -## v0.21.1 - -A fix release: Focus mode dims the connections too. - -- **Connections outside the focus set fade** like the nodes there, path and arrowhead, - whatever their activator says; before, only the nodes were dimmed -- **What stays at full strength is unchanged**: selection, warnings and the moving markers - of a running simulation; under high contrast a faded connection is a fine dotted line - -See [`CHANGELOG.md`](CHANGELOG.md) for the full notes of these releases, v0.21.0 (compact +See [`CHANGELOG.md`](CHANGELOG.md) for the full notes of these releases, v0.21.1 (Focus +mode dims the connections too), v0.21.0 (compact nodes, so more of a large graph fits in view), v0.20.0 (flow colours in the minimap and the timeline), v0.19.0 (flow colours on nodes and connections), v0.18.2 (the diff --git a/docs/large-graph-readability.md b/docs/large-graph-readability.md index 004f7d50..05fe7e57 100644 --- a/docs/large-graph-readability.md +++ b/docs/large-graph-readability.md @@ -224,8 +224,16 @@ connection is 0.5 inside the focus set and 0.26 outside it, Focus winning. Under forced colours a dimmed connection is not faded (opacity 1); the sparse `1 5` dash is its tell (§LGR9). Issue #329: until v0.21.1 an inline `opacity` on every connection path beat this rule, so connections were never dimmed; the -activator's 0.5 is now the `.edge-activator-off` class. The playback cues on a -dimmed connection keep their strength (their Focus policy is #330). +activator's 0.5 is now the `.edge-activator-off` class. Issue #330 PR 1 +(v0.22.0): the playback cues on a dimmed connection follow its dimming — the +path highlight, the round token and its `+N` badge, the depart / arrive cues, +the L0 pulse and the reduced-motion forms are drawn at the same 0.26 +(`filter: opacity()`, so it multiplies with their own animation); under forced +colours they are not faded either, the highlight takes the `1 5` dash, the +token turns hollow and the badge's border is dashed +(`docs/simulation-playback.md` §PB4.6). The run-in-progress cue and every cue +INSIDE a node (the fired wave, the evaluated mark) keep full strength, as +above. **A selected node is never de-emphasised.** Selection outranks focus: whatever the focus set says, a node the user has selected renders at full strength, with diff --git a/docs/simulation-playback.md b/docs/simulation-playback.md index 8e4d80c3..79fdee17 100644 --- a/docs/simulation-playback.md +++ b/docs/simulation-playback.md @@ -329,13 +329,15 @@ the sum); the **`preparedTransition.events` list keeps every original resource token (different meaning, own beat); - a cap `MAX_PLAYBACK_TOKENS` (**12**) per edge per step bounds the per-transfer breakdown chips (`shown + N == the edge's transfer count`); and a SINGLE global - `MAX_PLAYBACK_TOKENS_TOTAL` (**60**) budget spans **every travelling cue in a - step together** — resource transfer tokens, `trigger` beads and non-zero + `MAX_PLAYBACK_TOKENS_TOTAL` (**24**, issue #330 PR 1; it was 60) budget spans + **every travelling cue in a step together** — resource token-and-badge pairs + (§PB4.6, the dot and its `+N` counted as one), `trigger` beads and non-zero `label` beads — chosen by the fixed stable key `(edgeId, cueKind, originalEventIndex)` with `resource < trigger < label`, so the animated set is deterministic and independent of the order the engine - emitted events in. Past either cap only the animation is skipped — the summed - amount shown is still exact, the engine result and any settle-beat cue + emitted events in. Past either cap only the token is skipped — a resource edge + that moved keeps its **path highlight** and its **arrival cue** (§PB4.6), the + summed amount shown is still exact, the engine result and any settle-beat cue (`activator`, the committed value / label) are untouched. `activator` never travels, so it is never budget-gated. An edge emits **at most one** travelling cue per step (one `data.kind`, one state `mode`, one `StateEvent` per mode — @@ -345,6 +347,46 @@ the sum); the **`preparedTransition.events` list keeps every original per-transition `flowByEdge` identity) — a τ-only frame and every one of the hundreds of edge consumers share that one result. +**PB4.6 — what moved where: the Gate path, the `+N` badge, the label (issue #330 +PR 1, v0.22.0).** A presentation layer over §PB4.1–PB4.5; the engine, the RNG, +files, digests and every PB-INV / PBO-INV invariant are unchanged. + +- **The round token stays** wherever it travelled before; one summed token per + connection per step (§PB4.5). +- **`+N` badge.** The step's summed amount is always shown, from `+1`, as a + badge **beside** the token (up and to its right), moving with it. It lives in + the label layer, above every connection label, so the token-and-badge pair is + drawn on top. It replaces the bare number that used to sit above the dot only + when the amount was above 1. The badge is elided with the dot at L0 (§PB4.4). +- **Gate path.** For every Gate, deterministic or probabilistic, every outgoing + connection with a move event this step is **highlighted** (`.pb-path--gate`, + under its token); several can be at once. A branch with no move keeps its + usual look — no faded or crossed-out cue. The highlight lasts from the edge's + onset to settle. +- **Past the 24 pairs** (§PB4.5) every moved resource connection keeps the path + highlight (`.pb-path--over-cap`) and its arrival cue, without a token. +- **The connection's own label never moves.** It dims (`.edge-label--under-token`) + only while its real box overlaps the token or its badge; only the connection's + OWN label is tested, never another connection's. The label's size is read once + per text, never per frame. +- **Focus mode wins on connections** (`docs/large-graph-readability.md` + §LGR2.3): on a connection outside the focus set every playback cue — the path + highlight, the token and badge, the depart / arrive cues, the L0 pulse and the + reduced-motion forms — is drawn at the connection's own low strength (0.26). + Cues inside a node keep full strength. +- **Reduced motion:** no travel. The path highlight (`.flow-edge-pulse`), the + arrival tell (§PBO4) and the `+N` badge stay, static, for the committed step; + the badge sits at the target end, to its left, off the target node, within the + same 24 pairs. +- **Forced colours:** the path highlight is told by width (a 4 px `CanvasText` + line over the 1.5 px connection), never by a low opacity; the badge is a + `Canvas` pill with a `CanvasText` border and amount; a covered label is not + faded but gives way (hidden) for as long as the token or badge covers it; + outside the focus set the highlight takes the connection's `1 5` dash, the + token is hollow and the badge's border dashed. +- **Monte Carlo** draws no tokens, as before. The speed tiers (§PB6.1) are + issue #330 PR 3; until then every speed draws this same form. + ## PB5. Pause / Resume **PB5.1 — Pause keeps the prepared transition.** Pause stops the `τ` clock at its @@ -662,9 +704,10 @@ emphasis. their origins; a net-zero +/− pair still shows both component cues; `> MAX_PLAYBACK_TOKENS` ⇒ still one token, exact summed label, `+N` affordance; `> MAX_PLAYBACK_TOKENS_TOTAL` travelling cues across the step - (resource + `trigger` + non-zero `label`, one global budget) ⇒ the + (resource + `trigger` + non-zero `label`, one global budget of 24) ⇒ the over-budget edges keep their committed value / label and their settle cue - but do not animate; `to` unchanged in every case. + but do not animate; a resource edge among them keeps its path highlight and + arrival cue (§PB4.6); `to` unchanged in every case. 14. **MC / Predict untouched** — a Monte-Carlo run shows no tokens and its result equals today's oracle; Predict shows numbers, no tokens. 15. **VL / revision carry-over** — GraphDoc bytes, `loop-revision/3` digest, undo @@ -757,7 +800,7 @@ oracle of its own**. Its verification is: checklist (each behaviour → the E2E that locks it) lives in [`examples/README.md`](../examples/README.md) §5. - **`e2e/playback-fixture.spec.ts`** — imports that graph and checks the cues, - the 60-token budget, the Bézier/orthogonal `d` fidelity, the L0 / reduced-motion + the 24-pair budget, the Bézier/orthogonal `d` fidelity, the L0 / reduced-motion elision, and the invariance below. - **Behavioural specs** — `playback.spec.ts` (Slice 1 state machine), `playback-choreography.spec.ts` (token + state-event choreography, Pause/speed, diff --git a/docs/visual-language.md b/docs/visual-language.md index 09115813..0c26b865 100644 --- a/docs/visual-language.md +++ b/docs/visual-language.md @@ -529,6 +529,13 @@ byte-identical across L2/L1/L0 (§VL12.5). the ▲/▼ glyph kept), no pulse (instant colour change held for one step), no card slide-in. All *information* is preserved; only the animation is dropped. +- **Playback, issue #330 PR 1 (v0.22.0)** (`docs/simulation-playback.md` + §PB4.6): a Gate output that moved is highlighted while its token travels, and + the step's summed amount rides beside the token as a `+N` badge from `+1`. + Under reduced motion the same information is static for the committed step: + the moved path's highlight, the arrival tell, and the `+N` badge at the + target end. A connection's own label never moves; it dims only while the + token or its badge covers it. - Motion never conveys information that isn't also in a static frame. --- diff --git a/e2e/canvas-refresh-edges.spec.ts b/e2e/canvas-refresh-edges.spec.ts index 79c484ff..183ee3f6 100644 --- a/e2e/canvas-refresh-edges.spec.ts +++ b/e2e/canvas-refresh-edges.spec.ts @@ -129,8 +129,10 @@ test.describe('Playback choreography — the token reacts ONLY to real engine ev // in LoopEdge (not merely CSS-suppressed) — so under `prefers-reduced-motion: // reduce` there is literally no `animateMotion` / travelling element in the DOM // to play, freeze, or restart. +// (issue #330 PR 1 — the `+N` badge lives in the label layer; a TRAVELLING one +// is motion, the reduced-motion static one is not) const MOTION = - '.react-flow__edges animateMotion, .flow-move, .pb-move, .pb-cue, .flow-bead, .flow-trail, .flow-token__n, .state-move, .state-move__n' + '.react-flow__edges animateMotion, .flow-move, .pb-move, .pb-cue, .flow-bead, .flow-trail, .pb-badge[data-playback-badge="travel"], .state-move, .state-move__n' test.describe('Canvas Refresh PR 2 — reduced motion: the flow bead contract', () => { test('a real FlowEvent renders NO moving element — a held static highlight + arrival cue instead', async ({ page }) => { @@ -153,8 +155,12 @@ test.describe('Canvas Refresh PR 2 — reduced motion: the flow bead contract', expect(held.anim === 'none' || held.anim === '').toBe(true) // not animating expect(held.op).toBeGreaterThan(0.1) // and actually visible, not faded away + // issue #330 PR 1 — …and the step's `+N`, static, beside the arrival tell + await expect(page.locator('.pb-badge[data-badge-for="r1"][data-playback-badge="static"]')).toHaveText('+2') + // an edge that carried NOTHING this step gets no highlight (nothing inferred) await expect(page.locator('.react-flow__edge[data-id="r2"] .flow-edge-pulse')).toHaveCount(0) + await expect(page.locator('.pb-badge[data-badge-for="r2"]')).toHaveCount(0) }) test('the cues are HELD through Pause and only clear on Reset', async ({ page }) => { @@ -197,7 +203,10 @@ test.describe('Playback choreography — one token per event, merged sum', () => await step(page) const token = page.locator('.react-flow__edge[data-id="r1"] .pb-move') await expect(token).toHaveCount(1) - await expect(token.locator('.flow-token__n')).toHaveText('2') // src → A carries flow "2" + // src → A carries flow "2": the summed amount rides beside the token as its + // `+N` badge (issue #330 PR 1), one per edge + await expect(page.locator('.pb-badge[data-badge-for="r1"]')).toHaveText('+2') + await expect(page.locator('.pb-badge[data-badge-for="r1"]')).toHaveCount(1) // a multi-step run never shows more than one token on any edge at once for (let i = 0; i < 5; i++) { diff --git a/e2e/large-graph-readability.spec.ts-snapshots/run-distinction-states-chromium-win32.png b/e2e/large-graph-readability.spec.ts-snapshots/run-distinction-states-chromium-win32.png index 4cc91314814717508d9c127ec234f81ad8741e52..30ba071ab2bd7e114f62d62890c9756687fbe78c 100644 GIT binary patch literal 53259 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 literal 52626 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 { * 40 resource transfers + 20 `trigger` deliveries + 20 non-zero `label` deltas * (default). Edge ids `c000..c079` interleave the kinds (`i % 4 < 2` resource, * `== 2` trigger, `== 3` label), so ascending-id order mixes all three and the - * over-budget tail (`c060..c079`) also spans all three. `reverse` emits the + * over-budget tail (`c024..c079`) also spans all three. `reverse` emits the * node / edge arrays back-to-front to prove the budget ignores input order. * Trigger deliveries land one step after the source fires, so drive it as * `advance()` (step 1) then a choreographed step 2. */ @@ -111,26 +113,32 @@ test.afterEach(async ({ page }) => { }) test.describe('playback — Slice 3c-c: token caps', () => { - test('MAX_PLAYBACK_TOKENS_TOTAL — ≤ 60 travelling tokens; the overflow edges still commit', async ({ page }) => { + test('MAX_PLAYBACK_TOKENS_TOTAL — 24 token-and-badge pairs; the overflow edges keep a path highlight and still commit', async ({ page }) => { await setup(page, fanGraph(65)) await holdTravel(page) const moving = await page.locator('g.pb-move').count() - expect(moving).toBeLessThanOrEqual(60) - expect(moving).toBeGreaterThanOrEqual(55) // essentially all of the cap is used + expect(moving).toBe(24) // the whole cap is used + // the dot and its badge are one pair: as many badges as tokens + await expect(page.locator('.pb-badge[data-playback-badge="travel"]')).toHaveCount(24) - // the bearing set is the first 60 edge-ids in ascending order — deterministic + // the bearing set is the first 24 edge-ids in ascending order — deterministic const withToken = await page.evaluate(() => [...document.querySelectorAll('.react-flow__edge')] .filter((e) => e.querySelector('g.pb-move')) .map((e) => e.getAttribute('data-id')) .sort(), ) - expect(withToken).toEqual(Array.from({ length: 60 }, (_, i) => `e${String(i).padStart(3, '0')}`)) - // an overflow edge (e060..e064) shows NO token… - for (const eid of ['e060', 'e064']) { + expect(withToken).toEqual(Array.from({ length: 24 }, (_, i) => `e${String(i).padStart(3, '0')}`)) + // an overflow edge (e024..e064) shows NO token and no badge, but its path + // highlight (§PB4.6); a bearing edge (not from a Gate) has no highlight + for (const eid of ['e024', 'e060', 'e064']) { expect(await page.locator(`.react-flow__edge[data-id="${eid}"] g.pb-move`).count()).toBe(0) + await expect(page.locator(`.pb-badge[data-badge-for="${eid}"]`)).toHaveCount(0) + await expect(page.locator(`.react-flow__edge[data-id="${eid}"] .pb-path--over-cap`)).toHaveCount(1) } + await expect(page.locator('.react-flow__edge[data-id="e000"] .pb-path')).toHaveCount(0) + await expect(page.locator('.pb-path--over-cap')).toHaveCount(65 - 24) // …but every edge still commits its value on settle await call(page, 'stepOnce') @@ -214,33 +222,31 @@ test.describe('playback — Slice 3c-c: token caps', () => { expect(chips).toBe(0) // one transfer ⇒ no breakdown; the token label carries it } - // the moving dot's own label is the exact summed flow for the edge - const label = await page.locator('.react-flow__edge[data-id="e_a"] g.pb-move text').textContent().catch(() => null) + // the moving dot's own `+N` badge is the exact summed flow for the edge const flow = await page.evaluate(() => (window as any).__loop.sim.getState().transition.flowByEdge['e_a']) - if (label) expect(Number(label)).toBe(flow) expect(flow).toBe(7) + await expect(page.locator('.pb-badge[data-badge-for="e_a"]')).toHaveText(`+${flow}`) await call(page, 'pause') }) }) test.describe('playback — Slice 3c-c: ONE global travel budget (resource + trigger + label)', () => { - test('mixed 40 resource + 20 trigger + 20 label ⇒ ≤ 60 travelling elements total', async ({ page }) => { + test('mixed 40 resource + 20 trigger + 20 label ⇒ 24 travelling elements total', async ({ page }) => { await setup(page, mixedGraph()) await holdMixedTravel(page) const pb = await page.locator('g.pb-move').count() const stTrig = await page.locator('g.state-move.state-move--trigger').count() const stLabel = await page.locator('g.state-move.state-move--label').count() - // the cap spans ALL three kinds together — never resource-60 + state-60 - expect(pb + stTrig + stLabel).toBeLessThanOrEqual(60) - expect(pb + stTrig + stLabel).toBe(60) // essentially the whole budget is used + // the cap spans ALL three kinds together — never resource-24 + state-24 + expect(pb + stTrig + stLabel).toBe(24) // the whole budget is used // and it is a genuine mix, not one kind starving the others expect(pb).toBeGreaterThan(0) expect(stTrig).toBeGreaterThan(0) expect(stLabel).toBeGreaterThan(0) - // the bearing set is the deterministic first-60 by (edgeId, cueKind, ord) - expect(await travellingSet(page)).toEqual(Array.from({ length: 60 }, (_, i) => C(i))) + // the bearing set is the deterministic first-24 by (edgeId, cueKind, ord) + expect(await travellingSet(page)).toEqual(Array.from({ length: 24 }, (_, i) => C(i))) // per-edge lock: NO edge renders more than one travelling element, so the // on-screen total can never exceed the picked-edge count even though the @@ -259,7 +265,7 @@ test.describe('playback — Slice 3c-c: ONE global travel budget (resource + tri await call(page, 'reset') }) - test('the chosen 60 are independent of node / edge input order', async ({ page }) => { + test('the chosen 24 are independent of node / edge input order', async ({ page }) => { await setup(page, mixedGraph(false)) await holdMixedTravel(page) const forward = await travellingSet(page) @@ -273,7 +279,7 @@ test.describe('playback — Slice 3c-c: ONE global travel budget (resource + tri const reversed = await travellingSet(page) expect(reversed).toEqual(forward) - expect(reversed).toEqual(Array.from({ length: 60 }, (_, i) => C(i))) + expect(reversed).toEqual(Array.from({ length: 24 }, (_, i) => C(i))) await call(page, 'reset') }) diff --git a/e2e/playback-choreography.spec.ts b/e2e/playback-choreography.spec.ts index 608998b6..fc78a217 100644 --- a/e2e/playback-choreography.spec.ts +++ b/e2e/playback-choreography.spec.ts @@ -51,7 +51,9 @@ function tokenInfo(page: Page, edgeId: string) { const dd = Math.hypot(p.x - pt.x, p.y - pt.y) if (dd < best) best = dd } - return { pt, onPathDist: best, label: g.querySelector('text')?.textContent ?? null, cls: g.getAttribute('class') } + // issue #330 PR 1 — the amount is the token's `+N` badge (in the label layer) + const badge = document.querySelector(`.pb-badge[data-badge-for="${eid}"]`)?.textContent ?? null + return { pt, onPathDist: best, label: badge, cls: g.getAttribute('class') } }, edgeId) } @@ -163,10 +165,10 @@ test.describe('playback — Slice 2 choreography', () => { await call(page, 'play') await expect.poll(() => simState(page).then((s) => (s.tau && s.tau > 0.3 && s.tau < 0.7 ? 1 : -1)), { timeout: 8000 }).toBe(1) - // e_a carries a single transfer of 2 ⇒ one token labelled 2 + // e_a carries a single transfer of 2 ⇒ one token with a `+2` badge const ta = await tokenInfo(page, 'e_a') expect(ta).not.toBeNull() - expect(ta!.label).toBe('2') + expect(ta!.label).toBe('+2') // one token element, not several const count = await page.evaluate(() => document.querySelectorAll('.react-flow__edge[data-id="e_a"] g.pb-move').length) expect(count).toBe(1) diff --git a/e2e/playback-fixture.spec.ts b/e2e/playback-fixture.spec.ts index 444be76a..945adb95 100644 --- a/e2e/playback-fixture.spec.ts +++ b/e2e/playback-fixture.spec.ts @@ -5,7 +5,8 @@ import { expect, importGraph, openApp, resetAll, test } from './support/loop' // Imports the committed `examples/playback-choreography.json` through the real // Import path and checks the Simulation Playback / Event Choreography cycle // end to end on ONE graph: every travelling cue kind renders, the global -// 60-token budget bites, orthogonal and Bézier share the real `d`, and playing +// 24-pair budget bites (issue #330 PR 1; it was 60), orthogonal and Bézier share +// the real `d`, and playing // / pausing / resetting the run moves NOTHING that belongs to the document or // the committed engine result. // @@ -95,7 +96,7 @@ test.describe('playback-choreography.json — the Simulation Playback cycle on o await expect(page.locator('.react-flow__edge[data-id="zf00"] path.route-orthogonal')).toHaveCount(1) }) - test('every travelling cue kind renders, and the global 60-token budget bites', async ({ page }) => { + test('every travelling cue kind renders, and the global 24-pair budget bites', async ({ page }) => { await call(page, 'advance') // step 1 → Gate Pool = 1, trigger scheduled for step 2 await holdTravel(page) // step 2, mid-travel @@ -108,10 +109,13 @@ test.describe('playback-choreography.json — the Simulation Playback cycle on o expect(await page.locator('.react-flow__edge[data-id="t_sd"] g.pb-move').count()).toBe(0) expect(await page.locator('.react-flow__edge[data-id="m_a"] g.state-move').count()).toBe(0) - // 68 flowing resource + 1 trigger + 2 label = 71 candidates ⇒ exactly 60 animate + // 68 flowing resource + 1 trigger + 2 label = 71 candidates ⇒ exactly 24 animate const travelling = await page.locator('g.pb-move, g.state-move').count() - expect(travelling).toBeLessThanOrEqual(60) - expect(travelling).toBe(60) + expect(travelling).toBe(24) + // every resource edge past the cap keeps its path highlight (§PB4.6) + const overCap = await page.locator('.pb-path--over-cap').count() + const resourceTokens = await page.locator('g.pb-move').count() + expect(overCap + resourceTokens).toBe(68) // no edge renders more than one travelling element const maxPerEdge = await page.evaluate(() => Math.max(0, ...[...document.querySelectorAll('.react-flow__edge')].map((e) => e.querySelectorAll('g.pb-move, g.state-move').length)), @@ -138,7 +142,17 @@ test.describe('playback-choreography.json — the Simulation Playback cycle on o test('the token walks the real d on both an orthogonal and a Bézier edge', async ({ page }) => { await holdTravel(page) - for (const eid of ['m_a' /* orthogonal */, 'zf40' /* Bézier */]) { + // a Bézier edge among the 24 that carry a token this step (issue #330 PR 1: + // `zf40` used to be one; past the 24 pairs it now carries none) + const bezier = await page.evaluate( + () => + [...document.querySelectorAll('.react-flow__edge')] + .filter((e) => e.querySelector('g.pb-move') && !e.querySelector('path.route-orthogonal')) + .map((e) => e.getAttribute('data-id')) + .sort()[0], + ) + expect(bezier, 'a Bézier edge with a token').toBeTruthy() + for (const eid of ['m_a' /* orthogonal */, bezier! /* Bézier */]) { const onPath = await page.evaluate((id) => { const g = document.querySelector(`.react-flow__edge[data-id="${id}"] g.pb-move`) as SVGGElement | null const vis = document.querySelector(`.react-flow__edge[data-id="${id}"] path.react-flow__edge-path`) as SVGPathElement | null diff --git a/e2e/playback-gate-path.spec.ts b/e2e/playback-gate-path.spec.ts new file mode 100644 index 00000000..4f43e7fa --- /dev/null +++ b/e2e/playback-gate-path.spec.ts @@ -0,0 +1,242 @@ +import type { Page } from '@playwright/test' +import { expect, importGraph, openApp, resetAll, test } from './support/loop' + +// issue #330 PR 1 (v0.22.0), docs/simulation-playback.md §PB4.6 — what moved +// where: every Gate output that moved this step is highlighted under its round +// token, an untaken branch keeps its usual look; the step's summed amount rides +// beside the token as a `+N` badge, from `+1`; the connection's OWN label dims +// only while the token or its badge covers it; on a connection outside the +// Focus set every playback cue is drawn at the connection's low strength; the +// reduced-motion and forced-colours forms. A presentation layer only. + +const call = (page: Page, fn: string, ...a: unknown[]) => + page.evaluate(([f, args]) => (window as any).__loop.sim.getState()[f as string](...(args as unknown[])), [fn, a] as const) +const tau = (page: Page) => page.evaluate(() => (window as any).__loop.sim.getState().transition?.tau ?? null) +const flows = (page: Page) => page.evaluate(() => ({ ...((window as any).__loop.sim.getState().transition?.flowByEdge ?? {}) }) as Record) + +/** a Source sending 1 a step into a buffer Pool, which a Gate pulls from + * (`all`, as the Equilibrium Template wires its Gate) and passes on by its two + * branch weights. A deterministic Gate splits in proportion (weights 1 : 0 — + * only A ever moves; 1 : 1 — both move, half each); a probabilistic one sends + * each unit down one branch (1 : 1 — one branch a step) */ +const gateGraph = (distribution: 'deterministic' | 'probabilistic', w: [string, string] = distribution === 'deterministic' ? ['1', '0'] : ['1', '1']) => + JSON.stringify({ + schema: 'loop-studio/graph', + version: 1, + nodes: [ + { id: 'src', type: 'source', position: { x: 0, y: 120 }, data: { kind: 'source', label: 'In', activation: 'automatic', mode: 'pushAny' } }, + { id: 'buf', type: 'pool', position: { x: 260, y: 120 }, data: { kind: 'pool', label: 'Buffer', activation: 'passive', initial: 0, capacity: null, mode: 'pullAny' } }, + { id: 'g', type: 'gate', position: { x: 520, y: 120 }, data: { kind: 'gate', label: 'Split', activation: 'automatic', distribution } }, + { id: 'a', type: 'pool', position: { x: 820, y: 0 }, data: { kind: 'pool', label: 'Branch A', activation: 'passive', initial: 0, capacity: null, mode: 'pullAny' } }, + { id: 'b', type: 'pool', position: { x: 820, y: 260 }, data: { kind: 'pool', label: 'Branch B', activation: 'passive', initial: 0, capacity: null, mode: 'pullAny' } }, + ], + edges: [ + { id: 'e_in', type: 'loop', source: 'src', target: 'buf', sourceHandle: 'out', targetHandle: 'in', data: { kind: 'resource', flow: '1' } }, + { id: 'e_g', type: 'loop', source: 'buf', target: 'g', sourceHandle: 'out', targetHandle: 'in', data: { kind: 'resource', flow: 'all' } }, + { id: 'e_a', type: 'loop', source: 'g', target: 'a', sourceHandle: 'out', targetHandle: 'in', data: { kind: 'resource', flow: w[0] } }, + { id: 'e_b', type: 'loop', source: 'g', target: 'b', sourceHandle: 'out', targetHandle: 'in', data: { kind: 'resource', flow: w[1] } }, + ], + }) + +async function load(page: Page, graph: string) { + await page.emulateMedia({ reducedMotion: 'no-preference' }) + await openApp(page) + await resetAll(page) + await importGraph(page, graph) + await call(page, 'reset') + await page.evaluate(() => (window as any).__loop.rf.setViewport({ x: 40, y: 80, zoom: 1 }, { duration: 0 })) +} + +/** Play slowly and pause inside [lo, hi] of τ, on a step in which the Gate moved */ +async function holdAt(page: Page, lo: number, hi: number) { + await call(page, 'setSpeed', 4000) + await call(page, 'play') + await expect.poll(async () => { + const t = await tau(page) + const f = await flows(page) + return t != null && t > lo && t < hi && ((f.e_a ?? 0) > 0 || (f.e_b ?? 0) > 0) ? 1 : -1 + }, { timeout: 20000 }).toBe(1) + await call(page, 'pause') +} + +test.afterEach(async ({ page }) => { + await page.emulateMedia({ reducedMotion: null, forcedColors: null }).catch(() => {}) +}) + +for (const distribution of ['deterministic', 'probabilistic'] as const) { + test(`${distribution} Gate: the branch that moved is highlighted and carries its token and +N; the other keeps its usual look`, async ({ page }) => { + await load(page, gateGraph(distribution)) + // the untaken branch's look at rest, for comparison + const look = (id: string) => + page.evaluate((eid) => { + const p = document.querySelector(`.react-flow__edge[data-id="${eid}"] path.react-flow__edge-path`)! + const cs = getComputedStyle(p) + return { stroke: cs.stroke, width: cs.strokeWidth, opacity: cs.opacity, filter: cs.filter } + }, id) + const rest = { a: await look('e_a'), b: await look('e_b') } + await holdAt(page, 0.3, 0.6) + const f = await flows(page) + const moved = (f.e_a ?? 0) > 0 ? 'e_a' : 'e_b' + const idle = moved === 'e_a' ? 'e_b' : 'e_a' + expect((f[moved] ?? 0) > 0 && (f[idle] ?? 0) === 0, `exactly one branch moved this step: ${JSON.stringify(f)}`).toBe(true) + + await expect(page.locator(`.react-flow__edge[data-id="${moved}"] .pb-path.pb-path--gate`)).toHaveCount(1) + await expect(page.locator(`.react-flow__edge[data-id="${moved}"] g.pb-move`)).toHaveCount(1) + await expect(page.locator(`.pb-badge[data-badge-for="${moved}"]`)).toHaveText('+1') // from +1 + // the untaken branch: no cue at all, and its own look unchanged + await expect(page.locator(`.react-flow__edge[data-id="${idle}"] :is(.pb-path, g.pb-move, .pb-cue)`)).toHaveCount(0) + await expect(page.locator(`.pb-badge[data-badge-for="${idle}"]`)).toHaveCount(0) + expect(await look(idle)).toEqual(idle === 'e_a' ? rest.a : rest.b) + // a connection that is not a Gate output carries its token and badge, but + // no highlight + for (const id of ['e_in', 'e_g']) { + if ((f[id] ?? 0) > 0) await expect(page.locator(`.react-flow__edge[data-id="${id}"] g.pb-move`)).toHaveCount(1) + await expect(page.locator(`.react-flow__edge[data-id="${id}"] .pb-path`)).toHaveCount(0) + } + await call(page, 'pause') + }) +} + +test('a deterministic split that moves on every branch highlights every one, each with its own +N', async ({ page }) => { + await load(page, gateGraph('deterministic', ['1', '1'])) + await holdAt(page, 0.3, 0.6) + const f = await flows(page) + expect(f.e_a).toBeGreaterThan(0) + expect(f.e_b).toBeGreaterThan(0) + for (const id of ['e_a', 'e_b']) { + await expect(page.locator(`.react-flow__edge[data-id="${id}"] .pb-path--gate`)).toHaveCount(1) + await expect(page.locator(`.pb-badge[data-badge-for="${id}"]`)).toHaveText(`+${Number.isInteger(f[id]) ? f[id] : f[id].toFixed(1)}`) + } + await call(page, 'pause') +}) + +test("the connection's own label dims only while the token or its badge covers it", async ({ page }) => { + await load(page, gateGraph('deterministic')) + const dimmed = () => page.locator('.edge-label[data-edge-id="e_in"].edge-label--under-token') + // early in the step the token sits at the source: the label is clear + await call(page, 'setSpeed', 4000) + await call(page, 'play') + await expect.poll(async () => { const t = await tau(page); return t != null && t < 0.12 ? 1 : -1 }, { timeout: 20000 }).toBe(1) + await call(page, 'pause') + await expect(dimmed()).toHaveCount(0) + // mid-travel the token crosses the middle of the connection, where its label is + let seen = false + for (let i = 0; i < 60 && !seen; i++) { + await call(page, 'play') + await page.waitForTimeout(40) + await call(page, 'pause') + if ((await dimmed().count()) === 1) seen = true + } + expect(seen, 'the label dims while the token passes over it').toBe(true) + expect(Number(await dimmed().evaluate((el) => getComputedStyle(el).opacity))).toBeCloseTo(0.3, 2) + // the label never moved + const box = await page.locator('.edge-label[data-edge-id="e_in"]').boundingBox() + await call(page, 'reset') + expect(await page.locator('.edge-label[data-edge-id="e_in"]').boundingBox()).toEqual(box) + // and only a connection with a token or badge on it ever has a dimmed label + await holdAt(page, 0.3, 0.6) + const owners = await page.evaluate(() => + [...document.querySelectorAll('.edge-label.edge-label--under-token')].map((el) => (el as HTMLElement).dataset.edgeId), + ) + for (const id of owners) await expect(page.locator(`.pb-badge[data-badge-for="${id}"]`)).toHaveCount(1) + await call(page, 'pause') +}) + +test('Focus mode wins on connections: an out-of-focus connection carries its cues at its own low strength', async ({ page }) => { + await load(page, gateGraph('deterministic')) + // focus the Source: e_in is in the focus set, the Gate's outputs are not + await page.evaluate(() => { + const l = (window as any).__loop + l.graph.getState().setSelection('src', null) + l.ui.getState().setFocusMode(true) + }) + await holdAt(page, 0.3, 0.6) + const f = await flows(page) + const moved = (f.e_a ?? 0) > 0 ? 'e_a' : 'e_b' + const filterOf = (sel: string) => page.locator(sel).first().evaluate((el) => getComputedStyle(el).filter) + expect(await filterOf(`.react-flow__edge[data-id="${moved}"] .pb-path`)).toBe('opacity(0.26)') + expect(await filterOf(`.react-flow__edge[data-id="${moved}"] g.pb-move`)).toBe('opacity(0.26)') + await expect(page.locator(`.pb-badge[data-badge-for="${moved}"]`)).toHaveClass(/pb-badge--dim/) + expect(Number(await page.locator(`.pb-badge[data-badge-for="${moved}"]`).evaluate((el) => getComputedStyle(el).opacity))).toBeCloseTo(0.26, 2) + // the in-focus connection's cues are at full strength + expect(await filterOf('.react-flow__edge[data-id="e_in"] g.pb-move')).toBe('none') + await expect(page.locator('.pb-badge[data-badge-for="e_in"]')).not.toHaveClass(/pb-badge--dim/) + await call(page, 'pause') +}) + +test('forced colours: the highlight is told by width, the badge is a system-colour pill, dimming is a dash', async ({ page }) => { + await page.emulateMedia({ forcedColors: 'active' }) + await load(page, gateGraph('deterministic')) + await holdAt(page, 0.3, 0.6) + const f = await flows(page) + const moved = (f.e_a ?? 0) > 0 ? 'e_a' : 'e_b' + const path = await page.locator(`.react-flow__edge[data-id="${moved}"] .pb-path`).evaluate((el) => { + const cs = getComputedStyle(el) + return { width: cs.strokeWidth, opacity: cs.opacity, dash: cs.strokeDasharray } + }) + expect(path).toEqual({ width: '4px', opacity: '1', dash: 'none' }) + const badge = await page.locator(`.pb-badge[data-badge-for="${moved}"]`).evaluate((el) => { + const cs = getComputedStyle(el) + return { style: cs.borderTopStyle, adjust: cs.forcedColorAdjust, opacity: cs.opacity } + }) + expect(badge).toEqual({ style: 'solid', adjust: 'none', opacity: '1' }) + await call(page, 'reset') + // outside the focus set: not faded, dashed + await page.evaluate(() => { + const l = (window as any).__loop + l.graph.getState().setSelection('src', null) + l.ui.getState().setFocusMode(true) + }) + await holdAt(page, 0.3, 0.6) + const f2 = await flows(page) + const moved2 = (f2.e_a ?? 0) > 0 ? 'e_a' : 'e_b' + const dim = await page.locator(`.react-flow__edge[data-id="${moved2}"] .pb-path`).evaluate((el) => { + const cs = getComputedStyle(el) + return { dash: cs.strokeDasharray, filter: cs.filter } + }) + expect(dim).toEqual({ dash: '1px, 5px', filter: 'none' }) + const dimBadge = await page.locator(`.pb-badge[data-badge-for="${moved2}"]`).evaluate((el) => { + const cs = getComputedStyle(el) + return { style: cs.borderTopStyle, opacity: cs.opacity } + }) + expect(dimBadge).toEqual({ style: 'dashed', opacity: '1' }) + await call(page, 'pause') +}) + +test('reduced motion: nothing travels; the moved paths, arrival tells and +N stay static for the step', async ({ page }) => { + await load(page, gateGraph('deterministic')) + await page.emulateMedia({ reducedMotion: 'reduce' }) + await call(page, 'stepOnce') + await expect.poll(() => tau(page)).toBe(null) + await expect(page.locator('g.pb-move, .pb-badge[data-playback-badge="travel"]')).toHaveCount(0) + const active = await page.evaluate(() => ({ ...(window as any).__loop.sim.getState().activeByEdge }) as Record) + const moved = Object.keys(active).filter((k) => active[k] > 0).sort() + expect(moved.length).toBeGreaterThan(0) + for (const id of moved) { + await expect(page.locator(`.pb-badge[data-badge-for="${id}"][data-playback-badge="static"]`)).toHaveText(`+${active[id]}`) + await expect(page.locator(`.react-flow__edge[data-id="${id}"] .flow-edge-pulse`)).toHaveCount(1) + } + // held, not faded, through a pause + await page.waitForTimeout(500) + await expect(page.locator('.pb-badge[data-playback-badge="static"]')).toHaveCount(moved.length) + // cleared on Reset + await call(page, 'reset') + await expect(page.locator('.pb-badge')).toHaveCount(0) +}) + +test('the cues are a view only: the committed values and the document match a run without them', async ({ page }) => { + await load(page, gateGraph('probabilistic')) + const digest = () => page.evaluate(() => (window as any).__loop.revisionIO.currentTargetDigest()) + const d0 = await digest() + await call(page, 'setSpeed', 120) + for (let i = 0; i < 6; i++) { + await call(page, 'stepOnce') + await expect.poll(() => tau(page)).toBe(null) + } + const played = await page.evaluate(() => ({ ...(window as any).__loop.sim.getState().values })) + await call(page, 'reset') + for (let i = 0; i < 6; i++) await call(page, 'advance') + const advanced = await page.evaluate(() => ({ ...(window as any).__loop.sim.getState().values })) + expect(played).toEqual(advanced) + expect(await digest()).toBe(d0) +}) diff --git a/e2e/playback-ordering-timing.spec.ts b/e2e/playback-ordering-timing.spec.ts index 5b859ade..93843733 100644 --- a/e2e/playback-ordering-timing.spec.ts +++ b/e2e/playback-ordering-timing.spec.ts @@ -407,8 +407,8 @@ test.describe('playback ordering — real-time cascade timing (PR 2)', () => { expect(afterComputes - beforeComputes).toBeLessThanOrEqual(stepsRun + 2) // the render kept up (rAF actually ticked through the window) expect(frames).toBeGreaterThan(elapsed / 40) // ≥ ~25fps effective - // the global 60-token budget still caps concurrent travelling elements - expect(peakTokens).toBeLessThanOrEqual(60) + // the global 24-pair budget (issue #330 PR 1) still caps concurrent travelling elements + expect(peakTokens).toBeLessThanOrEqual(24) void t0 }) }) diff --git a/e2e/playback-visual.spec.ts-snapshots/play-depart-dark-L2-chromium-win32.png b/e2e/playback-visual.spec.ts-snapshots/play-depart-dark-L2-chromium-win32.png index 042501f3b435ba744e9a6a8b84ee9c30f5158003..77a0944e6715480a059dc406ac95f6a19eb7d4b7 100644 GIT binary patch literal 26954 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¬x4AW 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

Gb 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 a5hesV&7_9qCr$7Zrn_o7zZKuMdj3BJKfZ(j diff --git a/e2e/playback-visual.spec.ts-snapshots/play-depart-dark-L2-mobile-win32.png b/e2e/playback-visual.spec.ts-snapshots/play-depart-dark-L2-mobile-win32.png index 4e8b77a7d3934e9f3108b2e9cd9380c6adf9b802..009203999ca1883a43b30973c99c87cec4836869 100644 GIT binary patch literal 17593 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 literal 17209 zcmeIacT|&IyY7pkC<0cBfPi$6ru2@AKtd=2(whpQ6MAnV0@6w7T?9f;q)Uy8lu)Hc z2t_1xLMI3bu=B2UzIU&+&OYm`Z;!F}IOB}XKaBB^hs<(6_dVxz{pJ(%Tt|cM8p|~b z3JN+P;F&%J#f2yeii>ksFOsitVmKQpC~i^!pFMfupSwAGCDr&cnSDM;L?*% ze)_fYh9Z9Ez7{yy#Gq916j_hhd4HJ{ZN6RpZ5=pXHpQ0TKwnW|>N|nQBc?}6)B}qD z3{0N^GsL$0eN3UiD&Kd={AltxCiVLJd1FaB3--4>SI@TPhMSKpLLAk~sVJNPlN67c zpWUX2ya}YBf68;=`FktMPn)v$d{fY=5G`F@U67{c=(x19va+l!{nbmPGYaS>VWGs$ zDh44To>&~Ax3~AlbHEu+ssZR=R%O?&d{3iB9X4S%*!wWn+a}v8nC=o)PWCkE>`4rdNGN~@oH=Swm*HaXtLv8}Jwhpr6p%0%SJ%*3;=jk9 zSjyo!0-kmq%H1S1>SXlKj?6I=`PB<_r^iBLrkUt*K=y`4-@~ID4jzEtT}uSM!H_ar zM^g_qa294|V{Pk@c+u=z%KhO%uW6Ubnvoj#aymRJy{6_7o$PF}XT2+t4~Y>wgo`yMBA~KKa;6)`54kl3V*qu zzcG*V@?y)dmCgxPKL2?)TvB3Dz)qaFpM)RD^*HKl^gf%VL? z8rnq0JjGGV9zjwA<*0dHCAdo|Hx}C9N?aaFL`)aa6+Q=;zn)wdLd<1v%b$#Ui8UJF zK<>xK0cQRj%%b;S7`y!;G_Iw2+eX>JYi!P3kv~Z#w|}r5_nR#*&+PljJqn(qeiEcCh9H6Jz4)@B|i@NU=#B#o(`;;LSWE|=e`#hE{?k2 zRM=78&=4Y+Xi#~2JRiE`2WbKk>p13`B*G%#w}AaK^@_JWjioht&_W_2QVk7+S(c&oyb^YDGP0@@2q?0A!hyHgw!_k@}Y_G{D-cH zOrwjL=^9=x_pZ}{T+FK*<3wA&IA~?;PNPWuC`l<9XKJ+6FNB;vc4|sQ!UH=r(`JWf zc64-{eqA$wxinz3lV|J1`Sb4+#%@z>Q(1V)EG-4mY0fe>GuszUm z#CEB*?7>B zVX+^`x&3CKwppov9T(nJ;E{5D6Q4ritFegW?pI9r>wQq+T7}OEKioT zLWd_0Ym%Fw*SXAmu$QW8r={O~wYKomtvPu_7lw-(^x)>*_!k{sUb)T~q^NID$sT_9 zdmx~q`hFO3Ma3T74@K!3n``)j1G)n2qp7aUhpdi7Vdj7QPNr2tw5`Wttg#Z?s|->mN5Wz^j0!DThq#oS?Ie3dsxvdkUOBO>;kdN3 zBsRZ?u2jj&&E52DRfOp3=;$~(tOS)*+=Ru5Y35Qa3FwAptJiTX#mD67&41F6Qn(q+EM+c-RU{fz`4le)|?2 z!P$l1RX0*V``TS0^(ZnzRBi5s6S(hM2&RrMB#Dwg)#Be=T^t~ePOPjdcFcU`k3)V>>ozvkOUpzjJr)!d?Hlq{Jj9LNc1jU} z!ITMj)Lr eBuq}pUhUPZSF+}_Arkkz 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 U@1O7VAiPC zq=Xt02tBkjTx+j&bI!BQ)qb9RvALPFBy)~A#y7sV%`e)TN|Y3LC`d?1C{>i@bxBCB zjFFIB8u;fj_|1XM1Q`j*za%R1&-LG>U{PcNbhhW6J1WX}>Fki9m?0V`E}nmM>8O6* zza4rebv&yzcrAfe(p&!Kzk{Wm_8;WFzTcyHLC*elUhah-#o?9LLW;H_PtDb>ZN*#gdug=97%OSQ0w?`Wxc$7G~L&3tY5rn6Ar~UE~Ajr z{(EnzDJYo4HJf-8?-2v3Ln|t6TZGwd+9<_e&P;K2C=fRvC`A@qHp9+OkEy7ri2Js- zw!B8ADNo*7y?psCDJkjl4-er70au{qBr13Ri==x?0Nx#+Q^3w~r3CXzHMHawS+SowcW`{mH==(g&X=4oQoR zjVtyw0ZTW?Fmk5Bhz%V~w8A zIkdsp>h80DxHnb1G-cmB+n5+ld-uXT>8I~*g()Pyj{71gl4HK6O-WS#GA)b~xik^3mE_Vn;+QDL3vQ{mBk)P}WFY z*TAu$;Z{-z_2lH(lRBhj`Ku3BggvCk=$T1#<=5s90vQ?$CsZR8&yiz`5G5{$gNzdP~%oEll>^eZk)O7Vby+d6i+` z;|+`uVIHA8!ta zzLJ;U{(7%PE=2XM(c{-%nfc~e*5dIoAkw=wn>cK-CvZzk7yL<4_=&=#Lmt!H#aFacVMoj7xfK& zBNCNiN6r_*QP+NJ4=@RT%;dTl%Ah<7O9lKS+Kw2H*nqMXh!@fEH z;zCB2=XU#c=wl}bhx~jl$?>WD6skqk=@ow>+1?{@ydph$%2vvP>DB;;cU~TAB8`dm z8#a2Q*wUVSC+DJA+NGR2u8{k%OZPr}knTr%={;#u3W+hVZfFqkMvIC2;9*ySxy;eg zttS*(E7YOP>wnh9x_wG3P6No9HSK>d5{`FkOJ8OPpqre=*GwS>iMz3}9EKZZ%9J|h z7NzM%vA5`rV1#VTi*qVBx6pEJ z(5Vks$PV!6^u$CXb8{4yTTrkJc1Da~c>H^2#^kwCuJ<;%lJ&0EayY^!^Xbg&xQg!d z`K+HHq**58ilqI{$)7=4NWdX#Z)$20i)9SEtpO)GdY$dK&brgmNcrt;V~1NGJbBq- z?8M8fXKkf>xK-)nHO`j8z*ueV>f)lV`7}8;{$Wnh(9eH(ovo2ecDy{iy@z;|lk@7` zkRjco`|v9o)l%m<-m6LL-3bW^P$HG~wh~q3K;X3~J}KY(+&jvP<*mj^+|n;zpynFK z>?P%RJ+M>dNPH9W=g&t%LPC6eSgc$z_!4Y7`rXsxG~eJ`X+LN<6rWlekQo0|63M7U zxJ?LoB2k|Zf2%irVnH&F9b0vFB23M?w>62cn1vV_B`mM3u*lB)_kH`()paSBb5k5A z?N@c0_lLQ#w`Zb>Sjg8E{RM0Qp^tSXwHd=hWhRmYvvelo4`_ZEvL zTD{cTG-;_bN-Isu_l&sTIP(S>u~~{N&CFbkl*DNdkrto=3Mpe?Ipd%h(T!4D^Yrv&edJJAQgZV=$Ms(8O49lOSdy2XH!9CR(s@ z*wcX36&nXVQT6%i&Aj$7Ewq%7sKLlWqb0ngl$uTU{J@~-@`L-AuTkj_v2N`5j#^ne z_w@1?7b6bWvr4HMUZrFeI5is^7$m)6ugT05$yZ9hYu-K?*Uk0T*!T-^;A``x#@oMZ zXIdu5QqnkFY`Z`G*%ii5@YgA^$u|F>GdJYo>e}DE4od2H$?STq(bDbJ7BV(7r1w^R znzT1|Dn-J>8#lMUzFzM%&LjF2dN6HI%c+?n=9(N874>mI3B@relM=hH%aCwkYnxq% z@ST!;vXKsoG~!^!d24GcEHreY*w|yUq*hT$>2Omw>s077`vZtEV|P>22Rp=QG9|~- zuMc}y$b_g_+;{djtII=f18f3t)qj-TtoYf;PI%thww$8roNuey>^$gR@d|Zf~S0& zlE+H1|NeNfuz2;&v(mc7@v$*dG+g#9$^N&ePog|>YkRgb9A&Y)78 zpVBm9m3sLH`IW)d1Um&Mm*!J~n!J45uMbypuAZ!AMHw0z%Ix+DhdTbO^k8`8AP@G@ zwok1pUzD={r5VdA3t7ca?ln$zp3(eVPKDS8az7m(AE%k|JHR@^?Pf54S^}-DtlXN8 z?MPFjPOX#Dmlla5oA$O3B_)tgkqm>RGkYoKbGB0^p=g<=4_jyRv??lSnH_l(b@ln3 zrL%{c0Y}Xj29qHc-qWtUhRQ*bKgXp>U5#{Jaw*`j50vg~Y@YpY-OtlW{=FqJI48}S zm;duwsGw{5dJc7~m!hyfp6=_@yk=IPGPn5R5-t4J%R5Q zz|E8kzA;@3LFXh|@HBT2_cvM8PgcgwUu@n&pVCTT1xTo$RgCir9SiVbUasQEfyTTN?TBE&S>J*pNR= zTUs;jcN~Mr4D53lQ8ir;mO${bS=4abUy^cQkS)+>x&|0g_1k601;o!V?Ph3XE zo#?rr;c}Z6I{4~aZkUn2{uI-a!YdLH z>p$Bl03kNZnqliBIWd=Qf0z+ZIMV}kDHc#S{F?OX??YZ_zkygb-{tKJM-@SuEXX!g>0ci-t!3N7Cyb0|PP6uV25;!pZz91pDk4T27udC$NpT z5-DZ;p|4*32!GDl$yilE#u5?6E#+&q#9PKTTfwnAlz}KL3A zb(d=%=bTR7i*%X$R^@C2)rd$faz5^krNT9%52ie04li(NvG3%QJ$K^ zd%ME5dupnx%iof=DZgF55(2q?J*2c}%-ymFQ`U)MNmU+xz4MKMAylIMyub2E@f8&`-0vnQCO!o#H@9%|juEYQrG0O2@6yr|1|MJR&>ngVI$*{>C7*vd6y4l7&7Zuvxf#XD?CG`Z z;+=Q$iS)m?fXA@?r)UD>qvW32uKw;Px8Xl8ek}-;;#j;$&otHUd;%41FN6*Dm0@ee zu4~tAcXyY=m--)a<1>^`4C)qbZu1b#Z{w{5m8bXH>y%MdO+RMa(;Gunl_c!?7#K_A zf>B*O=wnWIn<*ZvZ7wn;`vbFQgTLbO2m}Jto2W)=JN5H*Xz9PDFx$jY4{vWKA#4n- zuQ9jE&W@553$vcz0R^avI_c7QCXVU_CP;(M9p^7ry2&#QzPlqiYN;tH7VxwE*@3YO z0P1eCus|oxeK0F4Jz!CT z8^MI!Kj{~zdFHXhB!ORd9!spDDtv{zP5G7E*`_TGjOUAdWG!1!M=BP_C-`PTKEAlq z{uJ6@@(gtZ{wv9emazJ<06sq)lKlTBT8AXMKGw04-38JE+54~=GK&TaZ?2TgxgppPf!$)s`Qz$*n0LRzA@iSnRvO|_n+OCO}60hjgk zqA)f&Tf9=kD9%Tq2fW^!FxW2TzWlkNoRyVzU|^s#l7&}5AYq%I(Q|KY_`8^^A8|b| z-5)36IQrdUs=PUJ73}yXanD>o}`P-fH5qiP11i0kH+%xmmq2{ zHYUvzK?favWS`9uyw9XgKR*`7tp^H@q^YSXMk~xxLd$3MhkuZfOoTl2_iDBmRc1g?^<9<#q`)P6fH6B z2)e!)le+98yV|{2%@_0Crf&5ZFh%3{xV6lEP+rp-rP&94!h`aPicNrOQcbLQyVQ{; z?SKB(9CzsPz{OLPCh_x0R@isA8h*af_Uf~BT^qhNY&>DG)?qjk_O#+FYQt-%FFC)o zkWYYToBD>tWU5bi%xU@grF%h~TKa}@wL8IyTYe$P(yiIrS}A^;)kQ|NrJ{H-9t$6z zH&fOE*DoNSGW)&_FZW&deVY}qxf~T^s4t^zxhdkTKR)>K{0kQ94~sozk?;)9h^Y+> z47{Pgu^Od9k$8n9M*Nkodj2l1&&6enNXbC+*d{JD6>73k-iXZ9TDIlZ5ZLA`+3iab zrWY_{D1C4p^z;GC(Mo$5E{WgKh`JlLY0|CP!XEDKPTsqT8%OciCrJgRlVd$R74%QP zFX1dFv8LGxcnpR^$wzhaCVcPJ+`^fcS2aGJDApNs zE#{xA`q113j4H%?xhq;tpguc0f9=a~)>cVLj=(nq!y22_0b~d@eiP$G9AVJCZBQ2d z+RZH&sU2)w86@1haV^wOI>N)nC7<50=J^<14@wuT>eHg3=oAEiH7Ku4d34b~X

+HrIgCHt|`c_q?mHkl&7RQG`xdL?Lqqi%h_i3wh0vohObjU$j0*Nu~6? z#HgqDHQi(Rje6VHVfVe?DUfGnfm$_kYJD!nt{efptH|m)2Pv<@+}sY`o?kS*p7e+O zPkk%$OL6+vOWa<#P`8D>dOt+{@BWF+#Bs_o(z6~!ArI!h zM9#l=n`h;oKflISU0zi_%qF`=O_MC6Pi@y{a^_bGIb@cZIvI)Xq+O(0q>5|f2p~>R zI>S!O*R`58^Y$IyA+V_l?6RF`G+kK*-|3YXLc%c^jkWPS_$JG-ktLL4xNtqWrlHk* zc%}dQ-<|t*x_eTC2rNWntt;_%scD^CLWGdFisr!Lg|zF^NI{c;`GKj>6tM@OBJ@;cBo6oemOQD{In$yk_yU5w^o z^2#;x+e;l0-z9x;V+DHSqP>ZNMxeUHYka?aS%COT!Q9J>i8g>YX1S9};w!R=!+%7_^Pz);BVE$jQRr zHMlj=|6BHFUKHf3UqWG%T;o!tWN8CI)i?iuazq7a0v1ghgZ+sqhX=C|Nl8iPuMM}% zqhCJ$WG6m&awV}`I5Unq(- zCg9=ez#P-Q84nMSVTlRHc+cD%I`2d?UFNKM(n4}`ZbCrix3;&TiJhOja@kKke$7`0m3o3!7oajtz>DloubYM43cYIv=2 zN?N>jDhJt{WZr;4%y5+z3q}+MunxHCk5Av65UV-6M%CM+9-WF??r!)A3rsqo{H6U5 znx(j@RI_pH54U+e$K9WaIq~u5-oZo_cbbYsKI8jdxI;7?jY66Gh2?geHf;aCPDaK2 zZZ*{>P9Uea*ac8f8~jQ7J7IFI35sX_sKxw^_$X+>lMBn;W$4;a#_8#)KwN{ui_?X) zMmY{|QRMTte@ z%;>1z`r`6nqWC>QL1C`C+N2yz{cj(C^g`+82QpR%7nzkc0U;z6G-v92qljBh$Awerk9iyLhHTWGaDH|fMT8#P9Lemr?1fh^Q9?VszZ#|sO3EdqGO$ixvmv=T3bBR6rKY+v}fx>#;{)wkD&p%u$2ve_L^ z4vMpstYc%1+@`j{g)n;C$VJXAKRYagpA`kT(2Zuv-qwLMXd9ZOyu-dRH`h=e{2AtF zKOG!=ZGGL$%&cn8AO{b_)vqo;Ggo{7Y1ru)l)W%(%v(>#uGh744BfvHg(`}Ov(nZm zTjSe`9+3d>N|oFjpp=mX6->bv`lYV!w|9J{nGO1igZ}&L_yu3Y2j{2V+50QpLP7*U zV>wS0N7v{UiUwYzj1kq#RbNLOawPQBHbemSM`6?%mg=lV9_{Gp7|N}KyeKZ#FWA3U z?K(C)KE4kakull02US?Ci>c`>tF#|OKh$@*dG`fEOo@}8`$Jw1J3DJs@8BRgWt0o_@)T)o z-xdy6>PbaEH+soI;k%y|xB9$$FF))lwbb^rcpQbN#;P@Fws$v2 zB2a2yG;RJToR9H71tm3hL5;B+d~Bt##J&~a9?(dAY9N*{X^iwP@uVK% zQ2sI31Vt7{N7#yJTUg%SlU2SQ$s+kMNSb@M>sdyC(Pne=@>q8)=iqm7Em+cgqd#Q6 z!Prr#=V31)nb4yFzjQ2(QOZXPBnk5H^b8E(An=p#r?)nG%#q$f!NK!hljbpjugW!kXo>{jQr_JDDi+r#_E#|E(0ir9(yS8fhSwFBX@hnM(E&0m4JWr zKL~Yur2*xNMzyp&w-~aCtyQ)BSBJ@o(fWo}ODxxaaRKYM zSSKLLwzlo_sPE&Z83khp7YiY52?8pay8yOwclO!)q*mx&`;mP!R#bfMjhvesZrXW| zRuC$o9V{$DwpgPEHSXhBuiCx-PkGg8t8sj2K>|*H_TZ%kLus3VVHd?7-RI%pmN{2;IscLZ*uL>m37fpw42gB#93^f45Q|1X(aoo1)U2ob zla^|ZDkGKQuT?n|A|sPa3JMBz;H92yBlg`!+(hN;$45(1y_e!$9_-&$Q&U?v%}MkH zT8qiWa{8HRLFMqw;z$3d)!#_}n9a~Narnp(*MN-T8e=&}h zK1wq&F0JR@P$eHKpxIqsch!uWQ@Px@#>kUwT9@@JizxvS*D)v>s1VtZ6O&hSc?2Q7 z(?(0oTLzraj^go6wL}3|B0mj&jM3$9;eGDQs4974i%E<|%fmi^J*xNh`-TdHg<+52 zIu^?pk!7-<=pHTd7*Oibi7~P^py}Qa%mTO5-^<4-KQZgF#GU95=3nBUKYxDZn&Mii zuIqflIx5%hTcp)Yq}xmttUCrsv%mND9($|~TpU?r#tMqV>44^_q_kSo9JyEKuFiW! zW<=`(?EimlC9?1)=EV)!am8oz|N5F%2*sS8ex$QTe+jLu1RU-CJgvj))U{*V+4T8) zC3{JsU#e|zv82A-DoTgA8Rk1M;yWM|aIi1$**>!kFz};fl-vSEud-CnTb-K$4LBEF zNWwj<_2=1xPBn^_g9!r)nf3A(>$ExI(Mw!k>UCLT2K0x$yhqej`@0tUE=_^557ekz zU)F^>iZ1#G&r5=90(^pQo4wJpkDJWBdLv(B!IbFYC~woCo17BnBhTBuK55~vL9sld zn9m94+Tz@YkTVi9y^vj&oR~|;!algU<0H2IFXi)LY7QBdVw6SsXpnL4nI@pB2#B8*GNp=++?Dk&TVUMe&XApq*=)uC=kV zQ>{xRWvq;q^OX=td~fmcB^R2j`L#P?-8rFKD=ylvKwVik`spVk(LT2MQ1-shPD(3<*Ez0_1O<}8rQqkmwez5mjFz!^ zqr3z;InK6bAs2)(y+*|dT~8wh&o^&kqH$suTngUz3qse~dX!A49BiMdGHQn_sJP+aiG0%tciVw-YemZeeCVFuuW{o)6BA;u&qA(-eBwdu%zL6_1gf3Z znSqp)l``(NvbqXCS_m1rgz}zs1*O-^%4%`iIr+TKxvbHUm@Mso5I$0U&AKx(K7`;j z;`;YebY0vK<@$9ws}-k9TM#gFZLS=9@5`I6BXcgCb_CCarGdC;;7Wm}Q4|&uV#lk> zJ%SSV;OD#PLbo6Cat!x8uVEfCH9mt~vWCOqj7c%&!j9T$zAH(8<$!B>*~a9Ql+t+p z7u3{IWUTL=xmVsORk;F`PoU%6-^4hWhE8vgC-QKUbm8yby6pS**cb@w(s*_;-yMap z+ug(U%yqIS*h(A@N8s&Gk1(1|NMD-cQ+Psf<8Z}y=|!~oyj2K zo=wz-kx7&u?R2sY?q`ilcn9^Hvu%?v1Dge*9SDhAO0@>%Fepzgdu%=I-ek$7*=z-~AdActze7&~{s{ zB0WYdTgDcOV`D|`8iam_G#z6SEvc?wcOHvgqWE1K%`NLo7(#fF78C%767JF^;3!ly zhkK6ZVs=+Z6%?;2%72PvnXT>ab}i8>6KH_r4UhA0FwRHvYMySlQjcKNB7iHeG=@eW z3O&=3J*$FWz<^hc+p7Cl)eiLF05@NpqI*9iayVUSn4?Q}r@Kmo@$gA>iWIIC$yZ!V z=P9}Y<2ioG)1)C7g;G&|ZCZ&gbkxeTOiGPUe#hr_)YV&3T+E0k-5ZcN(c`z9oEYai zqRmzph!5v2t$V?881goshg$`>;n>B+oeo^QG;|CnD!xN%DrytIZVfNnWc_@*WZ}Aw zou4Qm`}H3TZ9=V2O|5=j(-to3VG{!Tjp6DSst&iD0rR&nb*J-vT9aWCPtU3HScC-xXqDvb5P=?ZqS zFs+j^P#f}Mta`)4p%77w?Y?wHbHi=VdTDvD2}j&3oU`skY})yr`#MSRd!uVQ^djU! zEWIzKCv0qNumJEjQ>|v9bS?QWZ*Scn8XZ%s7K&c6Te&Hx=(Cbqlu@dAUisAH={o`r z71MCV%f2#WQ@2w%VqMDaN{pg#=j@e5coe56QKS2sAOibV3J`E-RTFZ6!=W6*;AR)KD z4#AsRe8m63l&Y^{anU`B4gc7t>wS0Z`2M|IPn6$-T*Ic#jg90que;YVwj4kw5vgN= z<{6j;R8&>f`JgXR^oA)gj+AQpxh z>Pd_@3gU)9jjjMfJ6%=(fGZOg%W^`=Ff$E=gqXu|6HE>92kAJn_v& z)E@6GRHNf45L_^JPmy&Y`(ZyTgffH@;&QAGU26eby(#{(F-*9T^@q>EcFBO0ikfsn zYSIRF@iyI@5&Oz3cCXAUw(71ja>pXBK7!8Sa(o)?@>tho-9ifuV zsDC6Z46HZLjm&c_W1-8RncKM^={kweR0$g-j{62H1d)R7$0iSls%=iJ{cl5FW#vdH z#cqx%v&g%uk`nV#e~ByF175##p6<$ffBW@g{@@_en30>z+NVd3d(Xsl`diX>oB;dM z3}JkzNn1gxtssT2kSZre0z zzjqsMqv7D;aW~HLkqFsKXzf+Y6d$X&ZhqwQrrh zcT;nnZIrydcHg`?J@eiJ?mASsr}sNKDAf1(!mVxrg|ghx1Bx#@M;02-lC@)V+u1?`&;@K8nTG7PXe`n#X*1UivfSyrP~yr0sSYlAOFx z+V7^6{ykRUt=VHm6dzw>!(>WW`fOMgU_w~qgtDUy=>erv<7ppeXrDiv59f?X{~v zSku7ZpC2&4N6*9E*Vh*swo7^40~l-Hi#<8S^Hp0*$@x z>$cA~f%#qEXyji{a$%gN-wLd(pg@(tVwq8MQv7`Uuy|pD~6*(Er5+;Ne>8>J6)D{tXQc>_KX138yix7@t*rV>3QSQ+Uyx z0zR3MtPlj2_D&(XuY2}n`U)9hjXCCe?!dRWDQx~#<2rk=HOqM&n2Vx9Lv^1% zKNrI?kH)UA>#im|zAZ^l@1?P_&>GVK4A-|vNN%(!^Pm|S8I3G_F@PD7y*TxtrluyR zplNEpIQKtB*blPO(2Fm%w|^3%g318Kr~u%zIo@5BT-SUW z7j%o)u}-WhKJJ&dm+KF=G!r8vYAZ+a&M9I+b%%0V(kdSaGK9 z(@~B7hrnVn7NBina)*wNz5Ar7tZ8KBvQ6&Y!>PyQ)5qQ2z$N&*$X?3}!)s*r)~5BE z@iu5zaf33~8D-2qlz)A=2pkCj>?aG`M`mSZonM1hz)MW3oxr^{cYdh?yZ9X*j?Gf4 zjAC|larj2qZUwQGJ3@uD0!oq0+|osK%j|G*F)>x4{NiG4DN_5IfVzcMrhc(`K)_f? zy6n*(qWHXa;;Nu!DK*+7L7@6)jrZ=M(W~(6->9KCL=#@3wbz;Yo`8?KsgZf3?XkP@ z*C^gq?aL%p_F%-p>XJP_vW7w%Z+uk4CY)QH?tx)A762PzQZvA17^I9Ad^hM zJBQfK5ziN*w{CI9#EgBoA0PiQq3wLTH8)3X^Z+l|-Ce&hZp10O_Z0!_Y(DpLKs_a& zcDr<`Q7IzxnM03eYWeG}8AyTvbYp*V3x%?M=?EBE09aBF{u~U=RDY55DeTRHG{(!x zlRUG3C6#!`3`je`Rmuq;cz@|iXjrK3=m;>a0Z4(caXv&DEv>AKHJ&J^YQ{HgIy+w< z8F67@NgeDH>6P)T;^I}4nQwC=dA9mmYQdCQ+Rt;k!WPhNVupriWK<0o=O?IeOu~|D zTpiROEOpM&Q4af%2sYV^tf;Yl-C3A|4=no=7BmeU2G2+xs72vr{!0-RZm7TU9<2&2 zdpGi~=zdp61fe_;!zvfjvygKcT&b-Trx_0-sQ{89!J;iFEjBSTKacc*w0~Y^l|0z( z6;%73Fm+GG0S9V}UpE_AsIgyJgskKtDA7Oqzz>P1qvQG&q$^hgK{xq+`2yVHddYK> zivIC{lc}#K&i+VF`aWrB5OjkL2V7pGdN)Z();@(75>T1qxth{PqgsG|*pPj@IEBPH z`BkrLDl2w7^YZS8P=M~Q3<_wNG0xGEWy_8Bqjz4=o;2w)OWz#7#ijQuu>wi5mX`#Y zHVE!#tl3aP!l%>*XCuvkfVY~FLDl=fhAVf8cOe^*)M4`h$JucmBDtHew*A!B4Z??#OaMKcIY%UnIMK)-5V|HMCANBi% zm&D;zIVAnv3+bK5kM3t0#WFs4w#v>ngM$*e=sV9ZPB{;cb~Z+Ijnm$sq025L?}r~{ zY@^iQdV9lEL*+L3#u5i8ylq#5Jjq*&ro;kh`1s}4-a6ELgY@88h zXSV^uo0Fq!iP_iWo}SZX8wsuwKAxDzY-j!RwpE4Sb8?u&RHJ9dCyg$V{CfG#?MQ~6 z9HVR2d;?8zjrA|IpuAA-@6%M|SO_4)K~2a@R}C_~jYZ7`TX;~4tB{f~NdFdp zf1OjQ(6FW^5_GAp=9U4`(7k+w)M+pi5WmwL(ajgBtV~4$QQt&+#rf3DWujB&`hWkH zexwb~ROH{LOALM8;o&hU%-rt16~Mtu)V6>TY(Q+wx7KZg{1zzNxuM&XAYtgxW_Af2 zevtnb|9iOke-HnM4}ms`L*RejxljN1@V{{g+A_^ezb7Se2YYXfaRcKmu*7d&M~7xq z655q_!H>^Y+p1{)9v^&y{Qn;4IRdB|g=~O@<8RLQ{lol#E8uwN-v8I3T>Hjr5ZcmU zV+BkNHhy?``0s08{r+FCc`WI*p)Xk@<~(}vR|nxg#G#z?>92x+2`7pFAI^jx^Qo6A z;5qoeAETLs|5*C})9AImaO4yg7XEwT&rYf(1DH;A1OMYZ?tJt9n@o22pI-d``rEHA zgVm1Glk=0cF(*=z_mPT6*IxC7PWEr$gq^$T!|eChWPDhTnMj6OW}qQzBx^5RUaZ34 zo`flF+f*xWctEL;#7nSgE`6)s^xm=-4_r;FdECy3r&U#% zeSK7;~}KPxM1>k>yBMf;l&Ah80h(|etQCp0wEZV=dx1Ey^$y}a%{ zPz-Na&+Wz6D>cjbEl7XgjqBGlll@8tMJs=4mi;@Nt=h-e-ssr0w{bg>m|0>o{2@9yH)7e{NO|Iu#YBO*J)6c142$PNiO8dVjCP zvSK-p-ja`(>&f`kljV(~i-WD&4Pt6KT;SFw2nbSt6H%%E2J<_{6ah9Ie6F6=4Eg)( zhrP29yk%v_$PDpAI!t#`87m;j=ee`9vx$cH&D9h6v)meV&h-RjM146~C0!tR8)(m5 zKiZP@c1l-2Fgk3~10+0@0hUGGzi8>RJ?cT}JOQ;aSXQ^^*1(U7ih#k$wPj0jB@3B? zmTp95vF9_JxS}E?Xe~p){Qo0mHBmf$-p#2Z>8&3h&(F`RXB2#c>0$L&lXa)&(WWKz z_wP8(j)8%ehSC;Zr>UmwELK*WjEv0RxnTbc!}QF#=Q;&$cTeBbzo@AB!g+mN)ks@c z*L~J?H%r`A*VE@7;C8GqJ@J<=UHUs0d%!-MYHeBzdtyJ(D(yFC_xfIvsrmY!g}2A( zb8j^8h0RS(8N}2c0dW@Og@&g9B5L8r0DTE?>bc;om8`+2p&Lcq%&eh}d{2CRF?qSF zSi?y);b2zPs1n4=j-3$F59j}j3vhKdGBR>@wB_yvTBafBZXG}Ze3>pc4`PDY`!iEL ztrVph@aMy(MSzYue0(X&{~DR45WLBX4-g)G{YX&}5gt`*1B3X#9}SZ34_EuwM@Ox# zZCg58T6#JZo6k4w(+$Gg|1-R$x&G25tuz2o^Su>GZWK?z1?QkZ{~p{yp7^W15>R#r z0s96Zur-*UA2L~HWP}5*uHx2^&Ut99+9579num|C0i@rS78ijD7}v0?X>Y#@q-K@a zhY@!~Lr*D5)}EPdU43LS+?!B>*c34S`Ll*q%DO|^G9csI4ab*Y+Be(v-}&+f27}$Z zchA7UfY-2?0r*`17L^YmQXl=5a6lACOV#-9@)i^j{vqYt(3sz5)LOdEHG0j$jP-Tvsj6f{IK>4z?h~cPJc+= zZ}aS1yFufFJ@Rb%7(O-CLG)9TMB3iE6{_Pr@slAtRVNHx@h?3+=ZV+5cXgSwEtC~e zqi!T50_vScP1GIU+jaGO$zo#OHQon++AVcUBgRtw|$HxBTBvBN+KpIlPRaViQ^3!Z?C@`S8=vl2d*Kc0=J;(+TY_!`T}HS(!J?)=B|1j5Q49qiCPXjjWd;#7_6%E}64 zWo2VBuf6RmC2KK*X!R3l#a%&(9S4p6_1R{hO}p3lKU2qtGBcDUzk(jCAAxAY0g(R6 zz^ZqJtFEhanoUgT)6=J`YpE3$bM4}AXe6G5sN-OrMtm$Ry!+1$7r!rVS$Plf);nat zFh4E%g!I}zh}cwCROle6z`H*4XSAF7Lf4?xoDigdOxw^eE_MYD+vVoI@VMo+2a%cr zDClLnj_B78f2-|rE497M3HBF=+)b*3m1?1*144clk2#zO1Kpa5%cvqPSd^3@6Sl09UjT_8T?>c@5K~`7))}T;wy~E8XAoYf0K@_XUugAq@8{ZFWSdO?l`yB`q|@z@^*MvGPCUA7gU z1DFD(r9bgN2_Usohpn=h00`ZAK5D@}7#n9k6RO7O< zn`ZFkDks!tnJmlAw;|QlFpa1TIeOge;d6y{xy^|rf(FLfn)M8Fc{AI(rw z;E5Tw7!VwOa(|v1TvwXMk9DdP^K>U4Li>b`1cJujg1QXt*F?ktUV>lBrYK!l) z;j}lhrx(vL02*d&W}S&lBB^iwnp+|hpgpPS`AyiBP5?cN2Nt(VM^;_==G_5F%yc}j zk(1PwPu^EZh7jN}A(X_DzwW)2zNB>cx$pne*>^`Zm9<|pI>0C(F*tdEBc(h!z-9zBB&z2<|gEj+b^lcuwc()v^eky2Kt} z84BE?__E5o&wYXNQy&`0R#6cVpIR0M%P4?lx5%x>jx7UMK~!FzFsLRMli+^s+BI&^#j6+$Cf&!O7kBd&5wwJ0T3MNVqdI z;%rPjSt2ygK$m!gp`?9?9;Bxn7mS~Pl5DIl93*Ui96HocUq3TD3zX`VpZBD}HiY!* zRqnTNzH=t;pA8s!kx6Os^)lZ5ZI!0A;$7#8egnCzd7(7PBDW+9L<1a*bvb|JN`i8D zRWD%TQTBYQ3=iHA)0?qSCBT~laP!V`g9xnFs*E2X4#qZY3J_XDky85!WP0SZ;fE|Nzx)6<**GEzT>+ITQdU3_J;aqhbZj0 zL+Tb*xXK<=0t5so4)NZp%gxUx17l+BgdOO*ms{)Vro(Ot*R`||%RCBYS65e$1Aq*% z3QR=C9)i;M*UM6$ZmFoe@rS?zx;`E;t2ed@@O0qq- zo%lTjHV!p+*x%LFtv|q9(t$NPDKEbRLcs&9tTZ6?jVHLzw5Mxr>huo1w~P;E7z0Yi zW8k!Md(3?~&|`L%fHNZm6aFW@LBs!yk@#Fcn6@8ZQL4;F6{t~;CudK@(gxm0$f_I$@$LU zXS0D_Mm+Nj?u`87!+EZnzP^^;-m|CWLWf6RD~I9CX2EbtwMlDF6o@38FW%G&2?!{r zuJu_OdbwGvs5st@*yH=C*S_}mDCS3yMsmp)mEe+9(4PuQp9KcUfjCA=3bMq;P#;0- z{pZi09~&waA_|Q1{qU=u0%H$S++*e!$b>zWw}NI?cW}U7Jo^w65YG>~>S_1>#IH%m zx#IN8iNE97>d>ONQ+o5jwAM1dtlr1sR$N-Ty7&}T_IQ1T%&Mcd7rANM$sErNFC`FX zw(DEOik?e(4M83}0P0neUb=m0Oi(Z)XuKD_F_SboP$W&J6d#npvsz41+p4nc9vt_g zk@V3CUqlI;vv+ktQ-KC%?imMPn_l}*;hLg9!_D|+>{ScBlaXoDR0{Qx*K9)2G4|%C z^DZ6M=AHhka3XneETI0?vIMt8t^RojTZOn4Lgi)m#YE2mpnAh}z)A!e{n24+Khy8V zudJ(fFb77_z40k!3??^<^7Ph8GHdwp*D zzl4sYdFP;gySF?cIw6eu26S&_0irY_ydO1B=F9)W7+H9?VEchTW}~!SvEMIIKk@kURB{ z#J14;d^W$;0wM;@^fbmAWjZD7n>9Us(YcxA%L-|qHA2~mB{ix_? z^vKk-YwLDJ4`~uhe0T^pX@rxCezT{qNvv|T zYDCP#%}Onuq3B6884+@Gofn6`syl?fWJ6V?J+PDfoFTA2Ke(&!Q|75!ZG}8KdaJDd z9Qg=84oBes$!7kmo^*2{ZiW2|gr^LkaS?VUZmDYOgH86yA62O)ooXFF+Aq}=yHA?l zkzaX5A|9mrj|rKu(+Eogv(7Dn(}uX4}O~Wn-e8?UuBCM^2_IXhRm6E(y;z30WA}$E~Q8B>eMu~gr8MZQ~;wd zF{9BY;#8FL7M`UpD?y%jT!7z19QAWcCJ@nq3~HwPfT05}SC8CGQA8F*zz(J{(@JkZ}7D$-M0WI8}iE3_wI-Q3(%R8$^5JjrKJaKl5PgJvVy*tl(0V;#9& zf@q5%-`{c(gBn?AgzKH&kB(r?E9-<%bEm*TExAyXNrE9*XKQ|!46`M zLRAWs)A8aqIw%xMAm)Y$c4bv=gc$o{wCN{n7OD4687`7CI#x|;)Q%{vQQnfx_UK;^ ziXbwLNJFxW$gs9cRCX*T>ah9i+F1^gW^Y5e(js-Ed{$F#br{Qf{s#+qE5BTOTHSXV zlwf01R^Y4BnCo z*$o44py_7@2nkm@Qe_NOHy{12LL$GGC9Q?UTC~L5+1m>bSVC}oK)nA*7Q}r_Y=Q`W z0vY5Bus~@4_U+pA>PX0Uw!>q=FY)~&{Wk=0C@1@c+!*`)abniwc)3ENcZnxABxMuB z!ygR9{ve%Ik9Gwq$j!N^r_sOcWjJ@?Q|i2umHT&WA*fP%L2Lf*qG@bw?ASvcolelt z@P;-#EcHCo+!yA$4`vUYQ+#qpCsSUoR*J>xy{Yw^p0F5!F1!nN9p+fztMhm+K3z@B z@_8LmR#{njWWY|xETRYG9n-60S(iikmQILY`1IC!f}^9zSmM9|WmvODl$FnT@3Wr?D-0?unnvWRSx zS_veQf2f*}4Ou<5vhZVu*`!%Yv4?wKZ=B_|g6o#)r!`_E=0Wox<=-N^(g+-cZ2Sxu zIb`S%1bBIGh`w1>42yy>fWN*GRd@{{({FEkxCUr>rR7d$P%dWqyv=FSdk0K~R@ zEZiS_CL%w@!@8FLT$dCrXxB_eqBu<{Z`gvNUY&A?)pb9qfZxIpC z*Q&NPw4x@%*B#K&@hEshIUgi!J`q0R);EQqP&R_h|8C%K$b#uPTKprxBDtvOF>cToT%)EIOm(xwq~5B` z>zbux-cjDxKYaLbvc^<|)@^nUqbNkAlo@FDf@wXz4=e$RMKhlxfmLL5iM&(;)QlY` z#mbLf6qP}x47+)yOBxy)qG~5kTZp2EXJ+uQ*#wG8#-X4?nwwXM8BGTceF$Opr{>MU)Kt{GA4uMn zxTLjj9x26;ep)^{%g5IcT556~=0e5y{Nsd<<$H$qI&N;}jw(heP1(g0(IC zJtYltIBj(E*Z!YrYUXG9`eg9M9{lrdS^AOy$?p4U7hB;4YH*buZfV!4?k}b#{o++) zO<(dbwQ8DctIOg|!=u3L=>RIIVE1KdzaY-E3LNTw$w{FKM2+My7#kNS#5hbQlNG3| zKas4P_ZU>wmrzHM&9s^xlS@&DNh6p_B{^LL#fQh^&20ypOL+zD))KIvzPJS&GzC)B zqne+9(jq=~K;=Pw;i*>$^%Ao$FTDd?)6@&TD>dwf-35=yr)RrL=ovoS$a@SuZF8CU z^+qgB>HGzgEF9-#M{Db!u$KW|wTQU*z49MmNClI-WI8n_FlRaIoguQG*+_Z9p0IkM zuhadr)6`-^^xA$qX5#z?l#L)9K(w5U;~2EA22cib+tuou*sglA_UIMeo+?zv)bZ}zMdXtec$a?hGnIcvwXEN!2h=R zRnBTVN+?0-{u}Jno4cZAl+`wWk_?S3LVuaDH)u^X7ipQ2Q0&mTIIDZ+#jwkzx0_fP zM%~kEa}zOmlUkDd{QT_VFc21O<6`{)M?#zf>FiGM?BxD10qfKKy^RfhIi;n~nd0f5 z+_Zk!8}PBj+u&`~^a8X7rg zc(jJHYFCpoVm#80PWte{uuNa5S7k7J3oo6Lkq=3xLejX6`%TT;dU_uco6eV5^iT$D za_lm53UOcdaY<$q2!`eHV?j*D*5)W}{iMXEM~^aq?0T5)3BR?Jr_5z(_9JYtxsOHF ze3W&O2*|3sK`)#gugVw2cIZ%*bK z^3)@^r_2}F*kb?8!`ucgMDk|J-j3N9k&$dXfdkWHa~vGp)}|}v`UIoETP$euW^hMG zM z`es|j%X6U7&6fC$E;Z@JqEPaL(2>lDG~Sj1FpLkVO)xr7Z8IR$kF43iKCn zoqa4~9oBs;bWbFjvEf`N<*fe0EybFe`pSyCPaXC3C%r4vk6g3PbPy|?`qc|xjFmhl zT9D`B>av3S6DQU+-Oat4N28QC@p#|YzsK7E9H_@YSEFyeE-=p!J@Xt%#%>9yRe<+xHdNfg(Ql zg6GB}pouAm#vI7(t?P-=RQal&o&+%K0E1=V{h@`0No+^>uPDptmOQnP{tUCnm0>c| zQ&Ru7@B`i6D5h5pA%g@j4>h$$yTXC9tO$v4Q~FW+rvr1iXsQ*9cX*&LBUzXKOKx5t zErC|c>c+aCL)ImAkL#WX1)QjeHMr@-JZoZ=60W>AV9OThui2;)u%jA=*z4e6^xy&B zq-uY<&#fJuz_Pu48-pG(QNm3!=uATDM78ALJ9ip&W@}^0in!rEis$K{B2S>_;L?ZQceYnHrmoiHnrB0__v2#-qYt zn4Hiru(h_ewO!(ulq`H|IdRM2iMUPY89u&Qo_LUNe;$I`?}c1WQC&86hX)0M=%(mK zUq+9>qf1a%MQ_MzTv5VEGM;9KgGUC+29#T#Rm@7c8GI$l~!4B)zZ<;no$rpO|2X z&;yblzN-g!p-NCo=aekqJwUtf$7$c1W0e0W^6qyUP!)0SO8Ybj1EsmkU0p^ATV3T* z`g)My=z?=u8-Svb+18Vj38bBo*U51*HW?X25&k>68b#}dx(ekP30^utT6z*H+Kmf` z9L{2CqzWLJ>7QwuW@gEmJwSuy!t^hJGGAr-LGf*^4sKa@M>VxT6VuWAxBoQh$vq{I z0V?bnn?Y3eTpSxG5Zn=-r@)ylrHpVAYxk zA~$5spCnAfl7=I3QBmxDus*H~D)5{_fjvg}Z9`Qe2a(w(FUVf~3Agx5z`@%)%=Z@_0T z^8!!2PwDBQi(H2fw?}bK;a&sBMf#3bkU-o8&QwetAjY1n3y{BhYij+s3$BO;`SbREpnb+dtqsm zMO@sQO37d)#!Fq2mwv#eF>Sw=O|)HF8buzwqr6{v<#-%suox<`kcw}EaiJ9H2!qI6 z)O)R`gqF%Aa500*&)Dkpx;Hi7?B)Iru-i&~UhtQTNZ zi_e5#rJFa~SVY~uJ2p1f4rx)<6_M^!bwpB2w42$e5+|cSJmdCAr}FJwyK&X>U-lv- zk(d3h6i^F)%gp?kDVS$J;MW|Rp1n<`uG1*JHsn5-xM+)rtFJA0%a*6^w zMxv)Ss(8hS)(gVBus^wEW%q!kjGSfgE=i}kdza7G>ib}6m5y%TMdUpK*2gBK`;nG4 zzy1e-EO|h(XZr5C8@zCU4*v%2@8Fx@2n-8Y9iLkB!QqJ#nCbt^1M@KgVw?+MjsTUH zTv@LzS3P?xtIJ??g2fgiO?y|0CYq%k0SZ(4r%zKod1-njhWM=ECFGCgh<04I}yJXWfKho6LTucSqn9KJ4 zMc=-CLq-nZvgH!ExC!@vqU~t1c6|h|<vF19H~J={!(S=bPH( zbrxuNW5zC~W6X(uZfeWLZ&sDfg#m3RIo;=VQpFXLuL6v8mL@IY* z8UZg`KBz%~>_S#{d(U4pTi!1g{gLmB{;3TX$^OMEcB7+XyO%v}{K4Q?-~>Uz4qOQu zcJI;BAfg__NH_skXtj0%y5YYhasJKooF~);BkwVRe@mqHauFbb13vv03I2~q&4GY=Ap<;o%407B>NK6>Un^nh4RP9fz(U-&Gv*i(R3D`@G--oE6~E7M7Q#q{?7xjSMfk%H~Zp3~m6dp!#?0_umt< z5lrKjNZH-nw;dmf{065SJ*221!w+t)AY6xpjcfx>P-dXqfXl_qA-@rQ(QF)6FvOH| zo8&{wFba=~IxDc-1%508zlZ%Rt%``H#v!nLAwD2SU#q1p(ho-q}6v2poQfJ(Z zWEB4<{Dh*7Ci@y2)sQY|^`1XKWGHVgL|XHXAvF#T{|~n9KjUEWxnYD)L0Kp1BL5=x zurqrW9rHfUhXQ_Lp{JGWqrl{kdEdUxmA@VVBXk@rHBi*;=;~^)02_2j{+!(0sF(iw zJBy+pslB}&@E^cz(ymheZ3asxljZv1a4o zoU}W&#~?i~!;l6MQ%V3pflHAk+g}9Eo?HsvrJk_M&4D-H6x#JkxGxSBl%Ie`8+!^K zR=m&^dL~Q0U1Tc3t^gU07q0s4BWiU3LBR;1+0Rh7Qj3wu%Ffo%5jH4t1UMD3T81~< zoH~7accsG}+j-s)9UU#CUr<{K-QHeZ?RRK5UPV3?5x;-;u9(U9mrxq$Q43pdj*}^F zN3NVWa#jWoPn4K>2uB9Y8DV`*`uLHV{0#Z>V9~kZlD)v$h2$5~? literal 26653 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


k=yGArGg@E(gAf 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 diff --git a/e2e/playback-visual.spec.ts-snapshots/play-depart-forced-colors-L2-mobile-win32.png b/e2e/playback-visual.spec.ts-snapshots/play-depart-forced-colors-L2-mobile-win32.png index a504715638dd029ef38406be7681539c661fbbc8..3b38ff2d5b4cab0f7a2759771e4393133ee8a71a 100644 GIT binary patch literal 18133 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 literal 17830 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 diff --git a/e2e/playback-visual.spec.ts-snapshots/play-depart-light-L2-chromium-win32.png b/e2e/playback-visual.spec.ts-snapshots/play-depart-light-L2-chromium-win32.png index a01ab2d3de50da502dcd0373c395b866933aa4b8..a75199f737324dec3692881ed8bd9af1add658c2 100644 GIT binary patch literal 29055 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 f4l?$z`qT>%G+919H%4M#~)RvQiNNf;X1 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

n.version)).toEqual(['0.21.4', '0.21.3', '0.21.2', '0.21.1', '0.21.0', '0.20.0', '0.19.0','0.18.2', '0.18.1', '0.18.0', '0.17.2', '0.17.1', '0.17.0', '0.16.0', '0.15.3', '0.15.2', '0.15.1', '0.15.0', '0.14.0']) + expect(RELEASE_NOTES.map((n) => n.version)).toEqual(['0.22.0', '0.21.4', '0.21.3', '0.21.2', '0.21.1', '0.21.0', '0.20.0', '0.19.0','0.18.2', '0.18.1', '0.18.0', '0.17.2', '0.17.1', '0.17.0', '0.16.0', '0.15.3', '0.15.2', '0.15.1', '0.15.0', '0.14.0']) await page.keyboard.press('Escape') await expect(panel).toHaveCount(0) diff --git a/examples/README.md b/examples/README.md index f067ae21..25f26c28 100644 --- a/examples/README.md +++ b/examples/README.md @@ -356,8 +356,8 @@ file and checks the cues, the budget, and the invariance assertions. | cluster | wiring | the cue it shows | |---|---|---| -| **Fan** | `Fan Source ─1→ P00 … P64` — **65 resource edges**, four of them `route: "orthogonal"` | 65 travelling **resource tokens** in one step — more than the **`MAX_PLAYBACK_TOKENS_TOTAL` = 60** budget, so ~10 edges commit their value with **no** animation | -| **Merge** | `Merge A ─3→` and `Merge B ─2→ Merge Pool` (both `orthogonal`) | two resource tokens into one pool; each edge's token is labelled with its own amount; the pool value is their sum | +| **Fan** | `Fan Source ─1→ P00 … P64` — **65 resource edges**, four of them `route: "orthogonal"` | 65 travelling **resource tokens** in one step — more than the **`MAX_PLAYBACK_TOKENS_TOTAL` = 24** token-and-badge pairs, so the rest commit their value with **no** token, each keeping its path highlight and arrival cue | +| **Merge** | `Merge A ─3→` and `Merge B ─2→ Merge Pool` (both `orthogonal`) | two resource tokens into one pool; each edge's token carries its own amount as a `+N` badge; the pool value is their sum | | **Signal** | `Signal Source ─1→ Gate Pool` ; `Signal Source ┄trigger d0┄▷ Signal Drain` ; `Gate Pool ┄activator "≥ 1"┄▷ Signal Drain` | the **`trigger` bead** rides the real edge `d` on its delivery step; the **`activator`** never travels — its target-side cue lands on the **`arrive`** beat once `Gate Pool ≥ 1` | | **Label** | `Feeder ┄"+5"┄▷ Tank` and `Feeder ┄"-2"┄▷ Tank` | a **signed `label` delta bead** per edge — toward the target for `+`, away for `−` — never merged into a resource token | @@ -375,7 +375,8 @@ drives the whole thing; the `trigger` delivers on step 2 (`fired + delay + 1`). | the **`trigger`** bead rides the edge on its delivery step; blocked ⇒ hollow | step 2 | `e2e/playback-choreography.spec.ts` "trigger rides the real … edge d", `e2e/state-ui.spec.ts` | | the **`activator`** shows a target-side cue on **`arrive`** and never a travelling bead | once `Gate Pool ≥ 1` | `e2e/playback-choreography.spec.ts` "activator does not travel…", `e2e/playback-fixture.spec.ts` "the activator edge never renders a travelling bead" | | a **signed `label` delta** bead per edge, by sign, never merged with the resource token | every step | `e2e/playback-choreography.spec.ts` "label — a signed-delta bead by sign…" | -| more than **60** travelling cues in a step ⇒ exactly 60 animate, the rest still commit; the chosen set is deterministic and input-order-independent; **≤ 1** travelling element per edge | the Fan | `e2e/playback-caps-perf.spec.ts` (whole file), `e2e/playback-fixture.spec.ts` "every travelling cue kind renders, and the global 60-token budget bites", `src/engine/state-one-cue-per-edge.test.ts` | +| more than **24** travelling cues in a step ⇒ exactly 24 animate, the rest still commit (a resource edge among them keeps its path highlight and arrival cue); the chosen set is deterministic and input-order-independent; **≤ 1** travelling element per edge | the Fan | `e2e/playback-caps-perf.spec.ts` (whole file), `e2e/playback-fixture.spec.ts` "every travelling cue kind renders, and the global 24-pair budget bites", `src/engine/state-one-cue-per-edge.test.ts` | +| every amount shows as a **`+N` badge** beside its token, from `+1`; the connection's own label dims only while the pair covers it; a **Gate** output that moved is highlighted, an untaken branch is not | Play / Step | `e2e/playback-gate-path.spec.ts` (whole file) | | the budget is sorted **once per transition**, not per edge or per τ frame | any run | `e2e/playback-caps-perf.spec.ts` "the budget is sorted ONCE per transition" | | **L0** (zoom `< 0.45`): no travelling dot / state bead; the ordered depart / path-pulse / arrive cues + `settle` still play | zoom out | `e2e/playback-choreography.spec.ts` "§PB4.4 — at L0 the travelling dot is elided", `e2e/playback-fixture.spec.ts` "reduced motion and L0 both drop every travelling element" | | **`prefers-reduced-motion: reduce`**: zero travelling elements ever; a static edge cue instead; a Paused transition never auto-settles | OS setting | `e2e/playback-choreography.spec.ts` "reduced motion ⇒ no travelling element ever", "Play settles far faster…" | @@ -400,9 +401,10 @@ exactly what a plain `advance()`-only run of the same length does. Import examples/playback-choreography.json Play (or Step) at a slow speed → - • ~60 dots leave Fan Source and travel their edges; a handful of Fan edges - just tick their target value up with no dot (the 60-token budget) - • Merge A / Merge B each send a labelled dot into Merge Pool + • 24 dots (with their `+N` badges, counting the state beads) leave and travel + their edges; the other Fan edges are highlighted and tick their target value + up with no dot (the 24-pair budget) + • Merge A / Merge B each send a dot with its `+N` badge into Merge Pool • step 2: a bead rides Signal Source ┄▷ Signal Drain (the trigger) • once Gate Pool ≥ 1: a ring lands at Signal Drain on arrival (the activator) — it never travels diff --git a/package-lock.json b/package-lock.json index da01e5ed..f24d6ce2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "loop-studio", - "version": "0.21.4", + "version": "0.22.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "loop-studio", - "version": "0.21.4", + "version": "0.22.0", "dependencies": { "@fontsource/ibm-plex-mono": "^5.3.0", "@fontsource/ibm-plex-sans": "^5.3.0", diff --git a/package.json b/package.json index c73ff0e9..896a6002 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "loop-studio", "private": true, - "version": "0.21.4", + "version": "0.22.0", "type": "module", "engines": { "node": ">=22.12.0" diff --git a/scripts/content-direction.json b/scripts/content-direction.json index ff85f77f..dc4bc4a0 100644 --- a/scripts/content-direction.json +++ b/scripts/content-direction.json @@ -8,12 +8,12 @@ "branch-computed": "the attribute is an EXPRESSION and the file contains the declared marker - one element, several branches wanting different directions" }, "totals": { - "elements": 95, + "elements": 96, "byExpect": { "auto": 37, "branch-computed": 4, "locale-direction": 13, - "ltr": 41 + "ltr": 42 } }, "elements": [ @@ -757,6 +757,14 @@ ], "expect": "ltr" }, + { + "file": "src/components/edges/PlaybackBadgeView.tsx", + "tag": "div", + "find": [ + "{amount}" + ], + "expect": "ltr" + }, { "file": "src/components/frames/FrameLayer.tsx", "tag": "button", diff --git a/src/components/edges/LoopEdge.tsx b/src/components/edges/LoopEdge.tsx index f3ada45c..153e5f68 100644 --- a/src/components/edges/LoopEdge.tsx +++ b/src/components/edges/LoopEdge.tsx @@ -16,7 +16,10 @@ import { currentRouteMap } from '../../store/routeMap' import { useLod } from '../lod' import { useEdgeActivityOpacity } from '../frames/useActivityTint' import { MAX_PLAYBACK_TOKENS } from './playback-caps' -import { usePlaybackTravelBudget } from './playbackBudget' +import { useHeldBadgeBudget, usePlaybackTravelBudget } from './playbackBudget' +import { badgeText, labelUnderToken } from './playbackBadge' +import { PlaybackBadge } from './PlaybackBadgeView' +import { useLayoutEffect, useRef, useState } from 'react' import type { LoopEdgeData } from '../../model/types' import { canonicalNumber } from '../../model/expr' import { parseActivatorExpr, parseFlow, resolveParamRhs, type StateEvent } from '../../engine' @@ -250,6 +253,9 @@ function LoopEdge({ // stays through Pause, clears on Reset (docs/visual-language.md §VL9). The // choreography scheduler settles a reduced-motion step near-instantly. const rmHeldPulse = rm && !isState && amount > 0 && running + // issue #330 PR 1 — reduced motion holds a static `+N` badge at the target + // end for the committed step, within the step's 24 pairs + const heldBudget = useHeldBadgeBudget(id) // ── Slice 2 choreography — the token walks the real `d` in step with τ ── // The scheduler owns τ / phase / commit (Slice 1); this layer only reads. @@ -289,12 +295,23 @@ function LoopEdge({ // the ordered phase cues (emit burst · travel path-pulse · converge/absorb) — // shown once this edge's bucket onset is reached, while a resource transition // is in flight, motion is allowed, and it is within the global travel budget. - const pbCueOn = pbFlow > 0 && !rm && !!pbLocalPhase && travelBudget.has(id) - // the travelling dot itself — elided at L0 (§PB4.4). + const pbMoves = pbFlow > 0 && !rm && !!pbLocalPhase + // issue #330 PR 1 — within the 24 token-and-badge pairs of the step + const pbInCap = travelBudget.has(id) + const pbCueOn = pbMoves && pbInCap + // the travelling dot and its `+N` badge — elided at L0 (§PB4.4). const pbToken = pbCueOn && !atL0 const pbFrac = travelFraction(pbLocalTau) const pbPt = pbToken ? pointOnPath(path, pbFrac) : null - const pbEndPt = pbCueOn && pbLocalPhase === 'arrive' ? pointOnPath(path, 1) : null + // issue #330 PR 1 — past the cap a moved edge keeps its arrival cue + const pbArriveOn = pbMoves && pbLocalPhase === 'arrive' + const pbEndPt = pbArriveOn ? pointOnPath(path, 1) : null + // issue #330 PR 1 — the path highlight: every Gate output that moved this + // step (whichever branch the Gate took, deterministic or probabilistic; a + // branch with no move gets no cue), and every moved edge past the cap + const sourceIsGate = gNodes.some((n) => n.id === source && n.data.kind === 'gate') + const pbPathOn = pbMoves && (sourceIsGate || !pbInCap) + const pbBadge = badgeText(pbFlow) const pbAll = selected && transition && !isState ? transition.events.filter((e) => e.edgeId === id) : [] const pbBreakdown = pbAll.slice(0, MAX_PLAYBACK_TOKENS) const pbBreakdownRest = pbAll.length - pbBreakdown.length @@ -352,6 +369,35 @@ function LoopEdge({ // labels drop out when zoomed out to scan structure — kept for a selected edge const showLabel = (!lowZoom || selected) && !outOfFocus + // issue #330 PR 1 — the reduced-motion `+N`: static at the target end, in + // flight (the brief collapsed transition) and held after the step settles + const rmBadgeAmount = + rm && !isState && !atL0 + ? transition && pbFlow > 0 && travelBudget.has(id) + ? pbFlow + : rmHeldPulse && transition == null && heldBudget.has(id) + ? amount + : 0 + : 0 + const rmBadgePt = rmBadgeAmount > 0 ? { x: targetX, y: targetY } : null + + // issue #330 PR 1 — the connection's OWN label never moves; it dims only while + // its real box overlaps the token or its badge. Its size is read once per + // text (in flow px: the label sits inside the zoomed viewport, offsetWidth is + // unscaled), never per frame; no other connection's label is tested. + const labelRef = useRef(null) + const [labelSize, setLabelSize] = useState<{ w: number; h: number } | null>(null) + const labelKey = `${text}|${label.mark ?? ''}|${showLabel}|${selected}|${stepIndex}` + useLayoutEffect(() => { + const el = labelRef.current + const next = el ? { w: el.offsetWidth, h: el.offsetHeight } : null + setLabelSize((prev) => (prev && next && prev.w === next.w && prev.h === next.h ? prev : next)) + }, [labelKey]) + const labelBox = showLabel && labelSize ? { x: labelX, y: labelY, ...labelSize } : null + const labelDimmed = + (pbPt != null && labelUnderToken(labelBox, pbPt.x, pbPt.y, pbBadge)) || + (rmBadgePt != null && labelUnderToken(labelBox, rmBadgePt.x, rmBadgePt.y, badgeText(rmBadgeAmount), 'left')) + // docs/flow-colour-and-compact-nodes.md FC-4.2 — the edge's flow colour is // its REST colour: a satisfied activator keeps the run signal over it, and a // selection no longer recolours anything (the underlay below shows it), so a @@ -483,6 +529,28 @@ function LoopEdge({ token-specific state. `data-playback-phase` makes the beat observable. Slice 3 — at L0 the moving `` is elided; the depart / travel-pulse / arrive cues below still play in order (§PB4.4). */} + {/* issue #330 PR 1 — the path highlight under the token: a Gate output + that moved this step, or any moved edge past the 24 pairs */} + {pbPathOn ? ( + + ) : null} + {/* arrive: an INWARD collapse onto the target — `converge`, or `absorb` + (inward + dissolve) into a Drain / End (§PBO3); past the cap too */} + {pbArriveOn && pbEndPt ? ( + + ) : null} {pbCueOn ? ( <> {/* emit: an OUTWARD burst at the source handle (§PBO3) */} @@ -505,18 +573,6 @@ function LoopEdge({ fill="none" /> ) : null} - {/* arrive: an INWARD collapse onto the target — `converge`, or - `absorb` (inward + dissolve) into a Drain / End (§PBO3) */} - {pbLocalPhase === 'arrive' && pbEndPt ? ( - - ) : null} {pbToken && pbPt ? ( - {pbFlow > 1 ? ( - - {fmtAmt(pbFlow)} - - ) : null} ) : null} @@ -586,11 +637,30 @@ function LoopEdge({ ) : null} + {/* issue #330 PR 1 — the step's summed amount as a `+N` badge, from + `+1`: beside the travelling token (moving with it), or, under reduced + motion, static at the target end beside the held arrival tell. In the + label layer, above every label, so the pair is drawn on top. */} + {pbPt || rmBadgePt ? ( + + + + ) : null} + {showLabel ? (

+ ) +} diff --git a/src/components/edges/playback-caps.ts b/src/components/edges/playback-caps.ts index dfe2faef..60fba0d5 100644 --- a/src/components/edges/playback-caps.ts +++ b/src/components/edges/playback-caps.ts @@ -7,8 +7,11 @@ * always shows the exact summed amount regardless of this cap. */ export const MAX_PLAYBACK_TOKENS = 12 -/** max travelling tokens rendered across ALL edges in one step. Past this, a - * flowing edge still commits its value and keeps its label, it just does not - * animate. The bearing edges are chosen deterministically (ascending edgeId) - * so the set is stable across re-render / deselect+reselect / speed change. */ -export const MAX_PLAYBACK_TOKENS_TOTAL = 60 +/** issue #330 PR 1 (v0.22.0) — max token-and-badge pairs (the round token and + * its `+N` badge, counted together) across ALL edges in one step; it replaced + * the 60 travelling-cue budget. Past it, a resource edge that moved keeps its + * path highlight and its arrival cue, it just carries no token; it still + * commits its value and keeps its label. The bearing edges are chosen + * deterministically (ascending edgeId) so the set is stable across re-render / + * deselect+reselect / speed change. */ +export const MAX_PLAYBACK_TOKENS_TOTAL = 24 diff --git a/src/components/edges/playbackBadge.test.ts b/src/components/edges/playbackBadge.test.ts new file mode 100644 index 00000000..a1938114 --- /dev/null +++ b/src/components/edges/playbackBadge.test.ts @@ -0,0 +1,59 @@ +import { describe, expect, it } from 'vitest' +import { BADGE_DX, BADGE_DY, BADGE_H, badgeText, badgeWidth, badgeX, labelUnderToken, overlaps, TOKEN_R, tokenAndBadgeBoxes } from './playbackBadge' +import { MAX_PLAYBACK_TOKENS_TOTAL } from './playback-caps' + +// issue #330 PR 1 — the `+N` badge beside the round token and the own-label rule. + +describe('the +N badge', () => { + it('is always signed, from +1, with at most one decimal', () => { + expect(badgeText(1)).toBe('+1') + expect(badgeText(3)).toBe('+3') + expect(badgeText(4.8)).toBe('+4.8') + expect(badgeText(2.25)).toBe('+2.3') + expect(badgeText(120)).toBe('+120') + }) + + it('sits beside the token: right of it while travelling, left of the target end under reduced motion', () => { + const [tok, right] = tokenAndBadgeBoxes(100, 50, '+3') + expect(tok).toEqual({ x0: 100 - TOKEN_R, y0: 50 - TOKEN_R, x1: 100 + TOKEN_R, y1: 50 + TOKEN_R }) + expect(right.x0).toBe(100 + BADGE_DX) + expect(right.x1 - right.x0).toBe(badgeWidth('+3')) + expect(right.y1 - right.y0).toBe(BADGE_H) + expect((right.y0 + right.y1) / 2).toBe(50 + BADGE_DY) + const [, left] = tokenAndBadgeBoxes(100, 50, '+3', 'left') + expect(left.x1).toBe(100 - BADGE_DX) + expect(badgeX('+3', 'left')).toBe(-BADGE_DX - badgeWidth('+3')) + // the badge never covers the token itself + expect(overlaps(tok, right)).toBe(false) + expect(overlaps(tok, left)).toBe(false) + }) + + it('grows with its text', () => { + expect(badgeWidth('+120')).toBeGreaterThan(badgeWidth('+1')) + }) +}) + +describe("the connection's own label dims only while the token or its badge covers it", () => { + const label = { x: 200, y: 100, w: 24, h: 16 } + it('under the token', () => { + expect(labelUnderToken(label, 200, 100, '+1')).toBe(true) + }) + it('under the badge only', () => { + // the badge's box reaches the label while the token is left of and below it + expect(labelUnderToken(label, 180, 112, '+1')).toBe(true) + }) + it('not while both are clear of it', () => { + expect(labelUnderToken(label, 120, 100, '+1')).toBe(false) + expect(labelUnderToken(label, 200, 160, '+1')).toBe(false) + }) + it('never without a measured label', () => { + expect(labelUnderToken(null, 200, 100, '+1')).toBe(false) + expect(labelUnderToken({ ...label, w: 0 }, 200, 100, '+1')).toBe(false) + }) +}) + +describe('the step cap', () => { + it('is 24 token-and-badge pairs (it was 60 travelling cues)', () => { + expect(MAX_PLAYBACK_TOKENS_TOTAL).toBe(24) + }) +}) diff --git a/src/components/edges/playbackBadge.ts b/src/components/edges/playbackBadge.ts new file mode 100644 index 00000000..8a46a087 --- /dev/null +++ b/src/components/edges/playbackBadge.ts @@ -0,0 +1,79 @@ +// issue #330 PR 1 (v0.22.0), docs/simulation-playback.md §PB4.5 — the `+N` +// badge that rides beside the round token, and the one overlap test that dims +// a connection's OWN label while the token or its badge covers it. Pure +// geometry in flow px; the label box is measured once per text by LoopEdge. + +/** the badge's place beside the token: up and to the right of the dot */ +export const BADGE_DX = 6 +export const BADGE_DY = -11 +/** the badge pill's height and side padding, px */ +export const BADGE_H = 13 +const BADGE_PAD = 4 +/** the token's own box: the dot (r 3.6) at its largest (×1.2 on arrive) */ +export const TOKEN_R = 4.4 + +/** one decimal at most, as the token's amount always showed */ +const fmtAmt = (n: number) => (Number.isInteger(n) ? String(n) : n.toFixed(1)) + +/** the badge text: always signed, from `+1` */ +export const badgeText = (amount: number): string => `+${fmtAmt(amount)}` + +/** the badge's font, as `.pb-badge__n` sets it (index.css) */ +const BADGE_FONT_PX = 10 +const widths = new Map() +let ctx: CanvasRenderingContext2D | null | undefined + +/** the badge text's width in px: measured with the badge's own font once per + * text (a canvas, never the DOM); an estimate where no canvas exists (tests) */ +export function badgeTextWidth(text: string): number { + const hit = widths.get(text) + if (hit != null) return hit + let w = text.length * 6.1 + if (ctx === undefined) ctx = typeof document !== 'undefined' ? document.createElement('canvas').getContext('2d') : null + if (ctx) { + const family = getComputedStyle(document.documentElement).getPropertyValue('--font-sans').trim() || 'sans-serif' + ctx.font = `700 ${BADGE_FONT_PX}px ${family}` + w = ctx.measureText(text).width + } + widths.set(text, w) + return w +} + +/** the badge pill's width for a text */ +export const badgeWidth = (text: string): number => Math.ceil(badgeTextWidth(text) + 2 * BADGE_PAD) + +export type Box = { x0: number; y0: number; x1: number; y1: number } + +/** which side of its anchor the badge sits: right of a travelling token (the + * approved mockup); left of the target end for the reduced-motion static + * badge, so it stays off the target node */ +export type BadgeSide = 'right' | 'left' + +/** the badge's left edge relative to its anchor */ +export const badgeX = (text: string, side: BadgeSide): number => (side === 'right' ? BADGE_DX : -BADGE_DX - badgeWidth(text)) + +/** the token and its badge at the token's centre (x, y) */ +export function tokenAndBadgeBoxes(x: number, y: number, text: string, side: BadgeSide = 'right'): [Box, Box] { + const w = badgeWidth(text) + const bx = x + badgeX(text, side) + return [ + { x0: x - TOKEN_R, y0: y - TOKEN_R, x1: x + TOKEN_R, y1: y + TOKEN_R }, + { x0: bx, y0: y + BADGE_DY - BADGE_H / 2, x1: bx + w, y1: y + BADGE_DY + BADGE_H / 2 }, + ] +} + +export const overlaps = (a: Box, b: Box): boolean => a.x0 < b.x1 && b.x0 < a.x1 && a.y0 < b.y1 && b.y0 < a.y1 + +/** whether a label box (centred on the label point, `w` × `h`) meets the token + * or its badge */ +export function labelUnderToken( + label: { x: number; y: number; w: number; h: number } | null, + x: number, + y: number, + text: string, + side: BadgeSide = 'right', +): boolean { + if (!label || label.w <= 0) return false + const L: Box = { x0: label.x - label.w / 2, y0: label.y - label.h / 2, x1: label.x + label.w / 2, y1: label.y + label.h / 2 } + return tokenAndBadgeBoxes(x, y, text, side).some((b) => overlaps(L, b)) +} diff --git a/src/components/edges/playbackBudget.ts b/src/components/edges/playbackBudget.ts index 6336bcc5..e909d1e0 100644 --- a/src/components/edges/playbackBudget.ts +++ b/src/components/edges/playbackBudget.ts @@ -53,13 +53,24 @@ function budgetSet(t: Transition): ReadonlySet { t.events.forEach((e, i) => { if (!(e.edgeId in firstEv)) firstEv[e.edgeId] = i }) + const set = pick(t.flowByEdge, t.stateEvents, firstEv) + cache = { key: t.flowByEdge, set } + return set +} +/** the stable choice itself: the first `MAX_PLAYBACK_TOKENS_TOTAL` candidates + * in the fixed key order */ +function pick( + flowByEdge: Record, + stateEvents: Transition['stateEvents'], + firstEv: Record, +): ReadonlySet { const cand: { edgeId: string; rank: number; ord: number }[] = [] - for (const edgeId of Object.keys(t.flowByEdge)) { - if ((t.flowByEdge[edgeId] ?? 0) > 0) + for (const edgeId of Object.keys(flowByEdge)) { + if ((flowByEdge[edgeId] ?? 0) > 0) cand.push({ edgeId, rank: KIND_RANK.resource, ord: firstEv[edgeId] ?? 0 }) } - t.stateEvents.forEach((e, i) => { + stateEvents.forEach((e, i) => { if (e.effect.kind === 'trigger') cand.push({ edgeId: e.edgeId, rank: KIND_RANK.trigger, ord: i }) else if (e.effect.kind === 'label' && e.effect.delta !== 0) cand.push({ edgeId: e.edgeId, rank: KIND_RANK.label, ord: i }) @@ -76,13 +87,35 @@ function budgetSet(t: Transition): ReadonlySet { if (set.size >= MAX_PLAYBACK_TOKENS_TOTAL) break set.add(c.edgeId) } - cache = { key: t.flowByEdge, set } return set } +// issue #330 PR 1 — the same choice for a COMMITTED step (no transition in +// flight): reduced motion holds a static `+N` badge for the step after it +// settles, within the same 24 pairs the step's tokens had. The key is the +// committed `activeByEdge`, a fresh object per commit; the original event +// index only breaks ties that cannot arise (see KIND_RANK), so the set equals +// the one chosen while the step was in flight. +let heldCache: { key: object; set: ReadonlySet } | null = null +function heldSet(activeByEdge: Record, stateEvents: Transition['stateEvents']): ReadonlySet { + if (heldCache && heldCache.key === activeByEdge) return heldCache.set + const set = pick(activeByEdge, stateEvents, {}) + heldCache = { key: activeByEdge, set } + return set +} + +/** For an edge that carried flow in the COMMITTED step, the ≤ 24 edge-ids that + * hold a static `+N` badge under reduced motion; `null` both frames for any + * other edge, so an idle edge is never re-rendered by it. */ +export function useHeldBadgeBudget(edgeId: string): ReadonlySet { + // the committed object itself (stable across every τ frame), not the store + const active = useSimStore((st) => ((st.activeByEdge[edgeId] ?? 0) > 0 ? st.activeByEdge : null)) + return active ? heldSet(active, useSimStore.getState().stateEvents) : EMPTY +} + /** For an edge that IS a travelling-cue candidate this step (a flowing resource * edge, or a state edge with a `trigger` / non-zero `label` event), the global - * set of ≤ 60 edge-ids allowed to animate — `set.has(id)` decides whether this + * set of ≤ 24 edge-ids allowed to animate — `set.has(id)` decides whether this * edge's cue travels or is elided. For any other edge the selector returns * `null` both frames, so an idle edge is never re-rendered by the cap. */ export function usePlaybackTravelBudget(edgeId: string): ReadonlySet { diff --git a/src/i18n/es419Copy.test.ts b/src/i18n/es419Copy.test.ts index be957509..06e92509 100644 --- a/src/i18n/es419Copy.test.ts +++ b/src/i18n/es419Copy.test.ts @@ -289,7 +289,7 @@ describe('es-419 copy — mechanical review', () => { Ctrl: ['toolbar.undo.title', 'toolbar.redo.title'], Cmd: ['toolbar.undo.title', 'toolbar.redo.title'], Z: ['toolbar.undo.title', 'toolbar.redo.title'], - N: ['import.ignoreLastRows', 'import.issue.invalid-ignore-rows', 'import.issue.ragged-row'], + N: ['import.ignoreLastRows', 'import.issue.invalid-ignore-rows', 'import.issue.ragged-row', 'whatsNew.v0220.badge'], // the sample CSV's own column headers, shown as data item: ['import.qs.mapping'], name: ['import.qs.mapping'], diff --git a/src/i18n/itCopy.test.ts b/src/i18n/itCopy.test.ts index e1278e6a..fe178628 100644 --- a/src/i18n/itCopy.test.ts +++ b/src/i18n/itCopy.test.ts @@ -205,15 +205,15 @@ const IDENTICAL_TO_EN: ReadonlyArray = [ // ------------------------------------------------------------------ shape describe('it copy — the surfaces exist and are complete', () => { it('has exactly the base key set', () => { - expect(KEYS).toHaveLength(1044) // issue #301 decision 1: +4 (share.unavailable and the three 0.17.1 release-note lines); the session chip: +3 (the three 0.17.2 release-note lines); the licence screen: +12 (nine strings of the view and the three 0.18.0 release-note lines); the menu keyboard: +3 (the three 0.18.1 release-note lines); the tour announcement: +4 (tour.nav.announce and the three 0.18.2 release-note lines); the flow colour: +20 (the sixteen strings of the Colour section and the four 0.19.0 release-note lines); the flow colour views: +4 (the four 0.20.0 release-note lines); compact nodes: +3 (the three 0.21.0 release-note lines); Focus dimming: +3 (the three 0.21.1 release-note lines); value rows: +3 (the three 0.21.2 release-note lines); the edit lock: +4 (canvas.lock.name, its fixed accessible name, and the three 0.21.3 release-note lines); the locked rail and the phone search: +4 (the four 0.21.4 release-note lines) + expect(KEYS).toHaveLength(1049) // issue #330 PR 1: +5 (five 0.22.0 release-note lines); issue #301 decision 1: +4 (share.unavailable and the three 0.17.1 release-note lines); the session chip: +3 (the three 0.17.2 release-note lines); the licence screen: +12 (nine strings of the view and the three 0.18.0 release-note lines); the menu keyboard: +3 (the three 0.18.1 release-note lines); the tour announcement: +4 (tour.nav.announce and the three 0.18.2 release-note lines); the flow colour: +20 (the sixteen strings of the Colour section and the four 0.19.0 release-note lines); the flow colour views: +4 (the four 0.20.0 release-note lines); compact nodes: +3 (the three 0.21.0 release-note lines); Focus dimming: +3 (the three 0.21.1 release-note lines); value rows: +3 (the three 0.21.2 release-note lines); the edit lock: +4 (canvas.lock.name, its fixed accessible name, and the three 0.21.3 release-note lines); the locked rail and the phone search: +4 (the four 0.21.4 release-note lines) expect(Object.keys(IT).sort()).toEqual([...KEYS].sort()) }) it('covers all four runtime surfaces, at the measured sizes', () => { const per: Record = {} for (const r of RUNTIME) per[r.surface.split('/')[0]!] = (per[r.surface.split('/')[0]!] ?? 0) + 1 - expect(per).toEqual({ catalog: 1044, template: 196, frame: 7, module: 19 }) - expect(RUNTIME).toHaveLength(1266) + expect(per).toEqual({ catalog: 1049, template: 196, frame: 7, module: 19 }) + expect(RUNTIME).toHaveLength(1271) }) it('EVERY row has a non-empty ENGLISH side — the vacuity guard', () => { diff --git a/src/i18n/locales/ar/ui.ts b/src/i18n/locales/ar/ui.ts index 02ac8b17..964fbee9 100644 --- a/src/i18n/locales/ar/ui.ts +++ b/src/i18n/locales/ar/ui.ts @@ -605,6 +605,11 @@ const ui = { 'whatsNew.v0214.tool': 'يؤدي القفل أيضًا إلى إيقاف أداة الإطار، فيحرّك السحب على لوحة فارغة العرضَ بدلًا من بدء إطار.', 'whatsNew.v0214.keys': 'أثناء قفل التحرير يتخطى التنقل بلوحة المفاتيح هذين الزرين، مثل أي زر آخر معطّل.', 'whatsNew.v0214.zoom': 'على الهاتف، لم يعد النقر على بحث اللغة يكبّر الصفحة ويتركها مكبّرة.', + 'whatsNew.v0220.gate': 'أثناء التشغيل يُبرَز كل فرع ترسل عبره البوّابة شيئًا فعلًا، ويبقى الفرع الذي لا ينقل شيئًا على مظهره المعتاد.', + 'whatsNew.v0220.badge': 'تظهر الآن الكمية التي ينقلها الاتصال في الخطوة بجانب علامته المتحركة كشارة +N، حتى عندما تكون واحدًا.', + 'whatsNew.v0220.label': 'تبقى تسمية الاتصال نفسه في مكانها، ولا تخفت إلا أثناء مرور العلامة المتحركة أو شارتها فوقها.', + 'whatsNew.v0220.focus': 'عند تشغيل التركيز تخفت الآن العلامات المتحركة والشارات والإبرازات على الاتصالات خارج التركيز مع تلك الاتصالات.', + 'whatsNew.v0220.cap': 'في الخطوة المزدحمة تتحرك 24 علامة على الأكثر في الوقت نفسه، ويُبرَز كل اتصال آخر تحرّك بدلًا منها.', } as const export default ui diff --git a/src/i18n/locales/de/ui.ts b/src/i18n/locales/de/ui.ts index 48682c3f..5a0ed946 100644 --- a/src/i18n/locales/de/ui.ts +++ b/src/i18n/locales/de/ui.ts @@ -640,6 +640,11 @@ const ui = { 'whatsNew.v0214.tool': 'Beim Sperren wird auch das Rahmenwerkzeug ausgeschaltet, sodass ein Ziehen auf leerer Arbeitsfläche die Ansicht verschiebt, statt einen Rahmen zu beginnen.', 'whatsNew.v0214.keys': 'Solange die Bearbeitung gesperrt ist, überspringt die Tastatur diese beiden Schaltflächen wie jede andere deaktivierte Schaltfläche.', 'whatsNew.v0214.zoom': 'Auf dem Smartphone vergrößert ein Tippen auf die Sprachsuche die Seite nicht mehr dauerhaft.', + 'whatsNew.v0220.gate': 'Während eines Laufs wird jeder Zweig hervorgehoben, über den ein Verteiler tatsächlich etwas schickt; ein Zweig ohne Bewegung behält sein gewohntes Aussehen.', + 'whatsNew.v0220.badge': 'Die Menge, die eine Verbindung in einem Schritt transportiert, steht jetzt als +N-Badge neben ihrer beweglichen Markierung, schon ab +1.', + 'whatsNew.v0220.label': 'Die eigene Beschriftung einer Verbindung bleibt an ihrem Platz und wird nur blasser, solange die bewegliche Markierung oder ihr Badge darüberliegt.', + 'whatsNew.v0220.focus': 'Bei eingeschaltetem Fokus werden die beweglichen Markierungen, Badges und Hervorhebungen auf Verbindungen außerhalb des Fokus jetzt zusammen mit diesen Verbindungen blasser.', + 'whatsNew.v0220.cap': 'In einem Schritt mit viel Bewegung wandern höchstens 24 Markierungen gleichzeitig; jede weitere Verbindung, die sich bewegt hat, wird stattdessen hervorgehoben.', } satisfies Record export default ui diff --git a/src/i18n/locales/en/ui.ts b/src/i18n/locales/en/ui.ts index fb807549..b3da7b93 100644 --- a/src/i18n/locales/en/ui.ts +++ b/src/i18n/locales/en/ui.ts @@ -549,6 +549,11 @@ const ui = { 'whatsNew.v0214.tool': 'Locking also turns the frame tool off, so a drag on the empty canvas moves the view instead of starting a frame.', 'whatsNew.v0214.keys': 'While editing is locked, moving through the controls with the keyboard skips these two buttons, like every other button that is turned off.', 'whatsNew.v0214.zoom': 'On a phone, tapping the language search no longer zooms the page in and leaves it that way.', + 'whatsNew.v0220.gate': 'During a run, each branch a Gate actually sends something down is highlighted; a branch that carries nothing keeps its usual look.', + 'whatsNew.v0220.badge': 'The amount a connection carries in a step now shows beside its moving marker as a +N badge, starting from +1.', + 'whatsNew.v0220.label': 'A connection’s own label stays where it is and fades only while the moving marker or its badge passes over it.', + 'whatsNew.v0220.focus': 'With Focus on, the moving markers, badges and highlights on connections outside the focus now fade along with those connections.', + 'whatsNew.v0220.cap': 'In a busy step, at most 24 markers move at once; every other connection that moved is highlighted instead.', } as const export type UiKey = keyof typeof ui diff --git a/src/i18n/locales/es-419/ui.ts b/src/i18n/locales/es-419/ui.ts index 96e2afcb..39d8aa70 100644 --- a/src/i18n/locales/es-419/ui.ts +++ b/src/i18n/locales/es-419/ui.ts @@ -563,6 +563,11 @@ const ui = { 'whatsNew.v0214.tool': 'Al bloquear también se desactiva la herramienta de marco, así que arrastrar sobre el lienzo vacío mueve la vista en lugar de empezar un marco.', 'whatsNew.v0214.keys': 'Mientras la edición está bloqueada, la navegación con el teclado omite estos dos botones, como cualquier otro botón desactivado.', 'whatsNew.v0214.zoom': 'En un teléfono, tocar la búsqueda de idioma ya no amplía la página ni la deja ampliada.', + 'whatsNew.v0220.gate': 'Durante una ejecución, se resalta cada rama por la que un Distribuidor envía algo de verdad; una rama que no lleva nada conserva su aspecto habitual.', + 'whatsNew.v0220.badge': 'La cantidad que una conexión transporta en un paso ahora aparece junto a su marca en movimiento como una insignia +N, desde +1.', + 'whatsNew.v0220.label': 'La etiqueta propia de una conexión se queda en su lugar y solo se atenúa mientras la marca en movimiento o su insignia pasan por encima.', + 'whatsNew.v0220.focus': 'Con el Enfoque activado, las marcas en movimiento, las insignias y los resaltados de las conexiones fuera del enfoque ahora se atenúan junto con esas conexiones.', + 'whatsNew.v0220.cap': 'En un paso con mucho movimiento se mueven como máximo 24 marcas a la vez; las demás conexiones con movimiento se resaltan en su lugar.', } as const export type UiKey = keyof typeof ui diff --git a/src/i18n/locales/es-ES/ui.ts b/src/i18n/locales/es-ES/ui.ts index 67af6e5a..b440a87d 100644 --- a/src/i18n/locales/es-ES/ui.ts +++ b/src/i18n/locales/es-ES/ui.ts @@ -577,6 +577,11 @@ const ui = { 'whatsNew.v0214.tool': 'Al bloquear también se desactiva la herramienta de marco, así que arrastrar sobre el lienzo vacío mueve la vista en lugar de empezar un marco.', 'whatsNew.v0214.keys': 'Mientras la edición está bloqueada, la navegación con el teclado omite estos dos botones, como cualquier otro botón desactivado.', 'whatsNew.v0214.zoom': 'En un teléfono, tocar la búsqueda de idioma ya no amplía la página ni la deja ampliada.', + 'whatsNew.v0220.gate': 'Durante una ejecución, se resalta cada rama por la que un Distribuidor envía algo de verdad; una rama que no lleva nada conserva su aspecto habitual.', + 'whatsNew.v0220.badge': 'La cantidad que una conexión transporta en un paso ahora aparece junto a su marca en movimiento como una insignia +N, desde +1.', + 'whatsNew.v0220.label': 'La etiqueta propia de una conexión se queda en su lugar y solo se atenúa mientras la marca en movimiento o su insignia pasan por encima.', + 'whatsNew.v0220.focus': 'Con el Enfoque activado, las marcas en movimiento, las insignias y los resaltados de las conexiones fuera del enfoque ahora se atenúan junto con esas conexiones.', + 'whatsNew.v0220.cap': 'En un paso con mucho movimiento se mueven como máximo 24 marcas a la vez; las demás conexiones con movimiento se resaltan en su lugar.', } as const export type UiKey = keyof typeof ui diff --git a/src/i18n/locales/fr/ui.ts b/src/i18n/locales/fr/ui.ts index 27fe4a51..5ed36f03 100644 --- a/src/i18n/locales/fr/ui.ts +++ b/src/i18n/locales/fr/ui.ts @@ -634,6 +634,11 @@ const ui = { 'whatsNew.v0214.tool': 'Le verrouillage désactive aussi l’outil de cadre, si bien qu’un glissement sur le canevas vide déplace la vue au lieu de commencer un cadre.', 'whatsNew.v0214.keys': 'Tant que l’édition est verrouillée, la navigation au clavier passe ces deux boutons, comme tous les autres boutons désactivés.', 'whatsNew.v0214.zoom': 'Sur un téléphone, toucher la recherche de langue n’agrandit plus la page sans la rétablir ensuite.', + 'whatsNew.v0220.gate': 'Pendant une exécution, chaque branche par laquelle un Aiguillage envoie réellement quelque chose est mise en évidence. Une branche qui ne transporte rien garde son aspect habituel.', + 'whatsNew.v0220.badge': 'La quantité transportée par une connexion pendant une étape s’affiche désormais à côté de son repère mobile sous forme de badge +N, dès +1.', + 'whatsNew.v0220.label': 'L’étiquette propre à une connexion reste à sa place et ne s’estompe que pendant que le repère mobile ou son badge passe dessus.', + 'whatsNew.v0220.focus': 'Avec le Focus activé, les repères mobiles, les badges et les mises en évidence sur les connexions hors du focus s’estompent désormais avec ces connexions.', + 'whatsNew.v0220.cap': 'Lors d’une étape très chargée, 24 repères au plus se déplacent à la fois. Les autres connexions qui ont bougé sont mises en évidence à la place.', } satisfies Record export default ui diff --git a/src/i18n/locales/it/ui.ts b/src/i18n/locales/it/ui.ts index 5a891527..cb47cc6a 100644 --- a/src/i18n/locales/it/ui.ts +++ b/src/i18n/locales/it/ui.ts @@ -579,6 +579,11 @@ const ui = { 'whatsNew.v0214.tool': 'Il blocco disattiva anche lo strumento riquadro, così trascinare sull’area di disegno vuota sposta la vista invece di iniziare un riquadro.', 'whatsNew.v0214.keys': 'Finché le modifiche sono bloccate, la navigazione da tastiera salta questi due pulsanti, come ogni altro pulsante disattivato.', 'whatsNew.v0214.zoom': 'Su un telefono, toccare la ricerca della lingua non ingrandisce più la pagina lasciandola ingrandita.', + 'whatsNew.v0220.gate': 'Durante un’esecuzione viene evidenziato ogni ramo in cui un Ripartitore invia davvero qualcosa; un ramo che non trasporta nulla mantiene il suo aspetto abituale.', + 'whatsNew.v0220.badge': 'La quantità che una connessione trasporta in un passo ora compare accanto al suo segno in movimento come un indicatore +N, già da +1.', + 'whatsNew.v0220.label': 'L’etichetta della connessione resta al suo posto e si attenua solo mentre il segno in movimento o il suo indicatore le passa sopra.', + 'whatsNew.v0220.focus': 'Con la messa a fuoco attiva, i segni in movimento, gli indicatori e le evidenziazioni sulle connessioni fuori fuoco ora si attenuano insieme a quelle connessioni.', + 'whatsNew.v0220.cap': 'In un passo con molto movimento si spostano al massimo 24 segni alla volta; le altre connessioni con movimento vengono evidenziate al loro posto.', } satisfies Record export default ui diff --git a/src/i18n/locales/ja/ui.ts b/src/i18n/locales/ja/ui.ts index ad07883d..ea489ee1 100644 --- a/src/i18n/locales/ja/ui.ts +++ b/src/i18n/locales/ja/ui.ts @@ -584,6 +584,11 @@ const ui = { 'whatsNew.v0214.tool': 'ロックするとフレームツールもオフになるため、空のキャンバスをドラッグすると、フレームを描く代わりに表示が動きます。', 'whatsNew.v0214.keys': '編集がロックされている間、キーボードで移動するときも、ほかの無効なボタンと同じく、この 2 つのボタンは飛ばされます。', 'whatsNew.v0214.zoom': 'スマートフォンで言語の検索欄をタップしても、画面が拡大されたままにならなくなりました。', + 'whatsNew.v0220.gate': '実行中は、ゲートが実際に何かを送った分岐だけが強調され、何も送らなかった分岐はいつもの見た目のままです。', + 'whatsNew.v0220.badge': '1ステップで接続が運んだ量が、動く印の横に +N のバッジで表示されるようになりました。+1 から表示されます。', + 'whatsNew.v0220.label': '接続自体のラベルは同じ位置のまま、動く印やバッジが重なっている間だけ薄くなります。', + 'whatsNew.v0220.focus': 'フォーカスがオンのとき、フォーカス外の接続上の動く印、バッジ、強調も、その接続と一緒に淡くなるようになりました。', + 'whatsNew.v0220.cap': '動きの多いステップでは、同時に動く印は最大24個です。ほかに動いた接続は強調で示されます。', } satisfies Record export default ui diff --git a/src/i18n/locales/ko/ui.ts b/src/i18n/locales/ko/ui.ts index d1e244a0..72365e0d 100644 --- a/src/i18n/locales/ko/ui.ts +++ b/src/i18n/locales/ko/ui.ts @@ -552,6 +552,11 @@ const ui = { 'whatsNew.v0214.tool': '잠그면 프레임 도구도 꺼지므로, 빈 캔버스를 드래그하면 프레임을 그리는 대신 화면이 움직입니다.', 'whatsNew.v0214.keys': '편집이 잠겨 있는 동안 키보드로 이동할 때도 꺼진 다른 버튼처럼 이 두 버튼은 건너뜁니다.', 'whatsNew.v0214.zoom': '휴대폰에서 언어 검색창을 눌러도 더 이상 화면이 확대된 채로 남지 않습니다.', + 'whatsNew.v0220.gate': '실행 중에는 게이트가 실제로 무언가를 보낸 갈래만 강조되고, 아무것도 보내지 않은 갈래는 평소 모습 그대로입니다.', + 'whatsNew.v0220.badge': '한 단계에서 연결선이 옮긴 양이 이제 움직이는 표시 옆에 +N 배지로 나타나며, +1부터 표시됩니다.', + 'whatsNew.v0220.label': '연결선 자체의 라벨은 제자리에 있고, 움직이는 표시나 배지가 지나가는 동안에만 흐려집니다.', + 'whatsNew.v0220.focus': 'Focus를 켜면 집중 범위 밖 연결선 위의 움직이는 표시, 배지, 강조도 이제 그 연결선과 함께 흐려집니다.', + 'whatsNew.v0220.cap': '움직임이 많은 단계에서는 한 번에 최대 24개의 표시만 움직이고, 그 밖에 움직인 연결선은 강조로 표시됩니다.', } satisfies Record export default ui diff --git a/src/i18n/locales/nl/ui.ts b/src/i18n/locales/nl/ui.ts index 114c56a2..154abf9e 100644 --- a/src/i18n/locales/nl/ui.ts +++ b/src/i18n/locales/nl/ui.ts @@ -560,6 +560,11 @@ const ui = { 'whatsNew.v0214.tool': 'Vergrendelen zet ook het kaderhulpmiddel uit, zodat slepen op een leeg tekengebied de weergave verschuift in plaats van een kader te beginnen.', 'whatsNew.v0214.keys': 'Zolang bewerken vergrendeld is, slaat het toetsenbord deze twee knoppen over, net als elke andere uitgeschakelde knop.', 'whatsNew.v0214.zoom': 'Op een telefoon zoomt de pagina niet meer in en blijft ze niet meer ingezoomd wanneer je op de taalzoekbalk tikt.', + 'whatsNew.v0220.gate': 'Tijdens een run wordt elke tak uitgelicht waarlangs een Verdeler echt iets stuurt; een tak die niets vervoert, houdt zijn gewone uiterlijk.', + 'whatsNew.v0220.badge': 'De hoeveelheid die een verbinding in een stap vervoert, staat nu als +N-aanduiding naast haar bewegende markering, al vanaf +1.', + 'whatsNew.v0220.label': 'Het eigen label van een verbinding blijft op zijn plek en wordt alleen vager zolang de bewegende markering of de aanduiding eroverheen gaat.', + 'whatsNew.v0220.focus': 'Met Focus aan worden de bewegende markeringen, aanduidingen en accenten op verbindingen buiten de focus nu samen met die verbindingen vager.', + 'whatsNew.v0220.cap': 'In een drukke stap bewegen hooguit 24 markeringen tegelijk; de andere verbindingen die bewogen, worden in plaats daarvan uitgelicht.', } as const export default ui diff --git a/src/i18n/locales/pt-BR/ui.ts b/src/i18n/locales/pt-BR/ui.ts index a2a92afb..3cc4cce4 100644 --- a/src/i18n/locales/pt-BR/ui.ts +++ b/src/i18n/locales/pt-BR/ui.ts @@ -565,6 +565,11 @@ const ui = { 'whatsNew.v0214.tool': 'Bloquear também desativa a ferramenta de quadro, por isso arrastar na tela vazia desloca a área visível em vez de começar um quadro.', 'whatsNew.v0214.keys': 'Enquanto a edição está bloqueada, a navegação pelo teclado ignora estes dois botões, como qualquer outro botão desativado.', 'whatsNew.v0214.zoom': 'Ao tocar na pesquisa de idioma no telefone, a página já não amplia nem fica ampliada.', + 'whatsNew.v0220.gate': 'Durante uma execução, cada ramo por onde um Distribuidor realmente envia algo fica destacado; um ramo que não leva nada mantém a aparência habitual.', + 'whatsNew.v0220.badge': 'A quantidade transportada em cada passo aparece agora ao lado da marca em movimento, como um indicador +N, a partir de +1.', + 'whatsNew.v0220.label': 'O rótulo de cada linha fica no mesmo lugar e só fica mais claro enquanto a marca em movimento ou o seu indicador passa por cima.', + 'whatsNew.v0220.focus': 'Com o Foco ativado, as marcas em movimento, os indicadores e os destaques fora do foco ficam mais claros, tal como as linhas onde estão.', + 'whatsNew.v0220.cap': 'Quando um passo tem muito movimento, no máximo 24 marcas estão em movimento ao mesmo tempo; os outros caminhos com movimento ficam destacados.', } as const export type UiKey = keyof typeof ui diff --git a/src/i18n/locales/pt-PT/ui.ts b/src/i18n/locales/pt-PT/ui.ts index 62148798..fe170fcc 100644 --- a/src/i18n/locales/pt-PT/ui.ts +++ b/src/i18n/locales/pt-PT/ui.ts @@ -579,6 +579,11 @@ const ui = { 'whatsNew.v0214.tool': 'Bloquear também desativa a ferramenta de quadro, por isso arrastar na tela vazia desloca a área visível em vez de começar um quadro.', 'whatsNew.v0214.keys': 'Enquanto a edição está bloqueada, a navegação pelo teclado ignora estes dois botões, como qualquer outro botão desativado.', 'whatsNew.v0214.zoom': 'Ao tocar na pesquisa de idioma no telefone, a página já não amplia nem fica ampliada.', + 'whatsNew.v0220.gate': 'Durante uma execução, cada ramo por onde um Distribuidor realmente envia algo fica destacado; um ramo que não leva nada mantém a aparência habitual.', + 'whatsNew.v0220.badge': 'A quantidade transportada em cada passo aparece agora ao lado da marca em movimento, como um indicador +N, a partir de +1.', + 'whatsNew.v0220.label': 'O rótulo de cada linha fica no mesmo lugar e só fica mais claro enquanto a marca em movimento ou o seu indicador passa por cima.', + 'whatsNew.v0220.focus': 'Com o Foco ativado, as marcas em movimento, os indicadores e os destaques fora do foco ficam mais claros, tal como as linhas onde estão.', + 'whatsNew.v0220.cap': 'Quando um passo tem muito movimento, no máximo 24 marcas estão em movimento ao mesmo tempo; os outros caminhos com movimento ficam destacados.', } as const export type UiKey = keyof typeof ui diff --git a/src/i18n/locales/ru/ui.ts b/src/i18n/locales/ru/ui.ts index 6142eca0..3d49d93e 100644 --- a/src/i18n/locales/ru/ui.ts +++ b/src/i18n/locales/ru/ui.ts @@ -633,6 +633,11 @@ const ui = { 'whatsNew.v0214.tool': 'Блокировка также выключает инструмент рамки, поэтому перетаскивание по пустому холсту сдвигает вид, а не начинает рамку.', 'whatsNew.v0214.keys': 'Пока редактирование заблокировано, переход с клавиатуры пропускает эти две кнопки, как и любую другую неактивную кнопку.', 'whatsNew.v0214.zoom': 'На телефоне касание поиска языка больше не увеличивает страницу без возврата к обычному масштабу.', + 'whatsNew.v0220.gate': 'Во время запуска выделяется каждая ветвь, по которой Распределитель действительно что-то отправляет; ветвь без движения выглядит как обычно.', + 'whatsNew.v0220.badge': 'Количество, которое связь переносит за шаг, теперь показано рядом с ее движущейся отметкой значком +N, начиная с +1.', + 'whatsNew.v0220.label': 'Собственная подпись связи остается на месте и бледнеет, только пока над ней проходит движущаяся отметка или ее значок.', + 'whatsNew.v0220.focus': 'При включенном фокусе движущиеся отметки, значки и выделения на связях вне фокуса теперь бледнеют вместе с этими связями.', + 'whatsNew.v0220.cap': 'Если за шаг движется много всего, одновременно движутся не больше 24 отметок; остальные связи с движением вместо этого выделяются.', } as const export type UiKey = keyof typeof ui diff --git a/src/i18n/locales/th/ui.ts b/src/i18n/locales/th/ui.ts index ab1fbb4f..fbbdac8b 100644 --- a/src/i18n/locales/th/ui.ts +++ b/src/i18n/locales/th/ui.ts @@ -625,6 +625,11 @@ const ui = { 'whatsNew.v0214.tool': 'การล็อกจะปิดเครื่องมือกรอบด้วย การลากบนพื้นที่ว่างจึงเลื่อนมุมมองแทนการเริ่มวาดกรอบ', 'whatsNew.v0214.keys': 'ระหว่างที่ล็อกการแก้ไข การเลื่อนด้วยแป้นพิมพ์จะข้ามปุ่มทั้งสองนี้ เช่นเดียวกับปุ่มอื่นที่ใช้งานไม่ได้', 'whatsNew.v0214.zoom': 'บนโทรศัพท์ การแตะช่องค้นหาภาษาจะไม่ขยายหน้าจอค้างไว้อีกต่อไป', + 'whatsNew.v0220.gate': 'ระหว่างการรัน ทุกกิ่งที่ตัวกระจายส่งบางอย่างออกไปจริงจะถูกเน้น ส่วนกิ่งที่ไม่ได้ส่งอะไรจะยังดูเหมือนเดิม', + 'whatsNew.v0220.badge': 'ปริมาณที่เส้นเชื่อมส่งในหนึ่งขั้นจะแสดงเป็นป้าย +N ข้างเครื่องหมายเคลื่อนไหว เริ่มตั้งแต่ +1', + 'whatsNew.v0220.label': 'ป้ายกำกับของเส้นเชื่อมยังอยู่ที่เดิม และจางลงเฉพาะตอนที่เครื่องหมายเคลื่อนไหวหรือป้ายของมันผ่านทับเท่านั้น', + 'whatsNew.v0220.focus': 'เมื่อเปิดโฟกัส เครื่องหมายเคลื่อนไหว ป้าย และการเน้นบนเส้นเชื่อมที่อยู่นอกโฟกัสจะจางลงไปพร้อมกับเส้นเชื่อมเหล่านั้นด้วย', + 'whatsNew.v0220.cap': 'ในขั้นที่มีการเคลื่อนไหวมาก เครื่องหมายจะเคลื่อนที่พร้อมกันได้ไม่เกิน 24 อัน ส่วนเส้นเชื่อมอื่นที่มีการเคลื่อนไหวจะถูกเน้นแทน', } as const export type UiKey = keyof typeof ui diff --git a/src/i18n/locales/tr/ui.ts b/src/i18n/locales/tr/ui.ts index 1f94ce24..3af74fc5 100644 --- a/src/i18n/locales/tr/ui.ts +++ b/src/i18n/locales/tr/ui.ts @@ -619,6 +619,11 @@ const ui = { 'whatsNew.v0214.tool': 'Kilitlemek çerçeve aracını da kapatır, böylece boş tuvalde sürüklemek çerçeve başlatmak yerine görünümü kaydırır.', 'whatsNew.v0214.keys': 'Düzenleme kilitliyken klavyeyle gezinme, kapalı diğer tüm düğmeler gibi bu iki düğmeyi de atlar.', 'whatsNew.v0214.zoom': 'Telefonda dil aramasına dokunmak artık sayfayı büyütüp öyle bırakmıyor.', + 'whatsNew.v0220.gate': 'Çalıştırma sırasında, bir Dağıtıcının gerçekten bir şey gönderdiği her dal vurgulanır; hiçbir şey taşımayan dal her zamanki görünümünü korur.', + 'whatsNew.v0220.badge': 'Bir bağlantının bir adımda taşıdığı miktar artık hareket eden işaretinin yanında +N rozeti olarak görünür; +1’den itibaren gösterilir.', + 'whatsNew.v0220.label': 'Bir bağlantının kendi etiketi yerinde kalır ve yalnızca hareket eden işaret ya da rozeti üzerinden geçerken soluklaşır.', + 'whatsNew.v0220.focus': 'Odak açıkken, odak dışındaki bağlantılardaki hareket eden işaretler, rozetler ve vurgular artık bu bağlantılarla birlikte soluklaşır.', + 'whatsNew.v0220.cap': 'Hareketin çok olduğu bir adımda aynı anda en fazla 24 işaret hareket eder; hareket eden diğer bağlantılar bunun yerine vurgulanır.', } as const export type UiKey = keyof typeof ui diff --git a/src/i18n/locales/vi/ui.ts b/src/i18n/locales/vi/ui.ts index 33019381..27c71c59 100644 --- a/src/i18n/locales/vi/ui.ts +++ b/src/i18n/locales/vi/ui.ts @@ -565,6 +565,11 @@ const ui = { 'whatsNew.v0214.tool': 'Khóa cũng tắt công cụ nhóm, nên kéo trên khung vẽ trống sẽ di chuyển khung nhìn thay vì bắt đầu vẽ nhóm.', 'whatsNew.v0214.keys': 'Khi chỉnh sửa đang bị khóa, thao tác bằng bàn phím bỏ qua hai nút này, giống như mọi nút đã tắt khác.', 'whatsNew.v0214.zoom': 'Trên điện thoại, chạm vào ô tìm ngôn ngữ không còn phóng to trang rồi giữ nguyên như vậy.', + 'whatsNew.v0220.gate': 'Trong khi chạy, mỗi nhánh mà Bộ chia thực sự gửi thứ gì đó đi qua sẽ được làm nổi bật; nhánh không chuyển gì vẫn giữ dáng vẻ thường ngày.', + 'whatsNew.v0220.badge': 'Lượng mà một liên kết chuyển trong một bước giờ hiện bên cạnh dấu chuyển động của nó dưới dạng huy hiệu +N, kể cả +1.', + 'whatsNew.v0220.label': 'Nhãn riêng của liên kết vẫn ở nguyên chỗ và chỉ mờ đi khi dấu chuyển động hoặc huy hiệu của nó đi qua.', + 'whatsNew.v0220.focus': 'Khi bật Tiêu điểm, các dấu chuyển động, huy hiệu và phần làm nổi bật trên liên kết nằm ngoài tiêu điểm giờ cũng mờ đi cùng các liên kết đó.', + 'whatsNew.v0220.cap': 'Ở bước có nhiều chuyển động, tối đa 24 dấu di chuyển cùng lúc; các liên kết khác có chuyển động sẽ được làm nổi bật thay thế.', } satisfies Record export default ui diff --git a/src/i18n/locales/zh-Hans/ui.ts b/src/i18n/locales/zh-Hans/ui.ts index 76c8d22b..312b2ff7 100644 --- a/src/i18n/locales/zh-Hans/ui.ts +++ b/src/i18n/locales/zh-Hans/ui.ts @@ -557,6 +557,11 @@ const ui = { 'whatsNew.v0214.tool': '锁定时也会关闭分组框工具,因此在空白画布上拖动会移动视图,而不会开始绘制分组框。', 'whatsNew.v0214.keys': '编辑锁定期间,用键盘切换时会像跳过其他停用按钮一样跳过这两个按钮。', 'whatsNew.v0214.zoom': '在手机上点按语言搜索框时,页面不再放大并停留在放大状态。', + 'whatsNew.v0220.gate': '运行时,只有分流门实际送出内容的分支会高亮显示,没有送出任何内容的分支保持原样。', + 'whatsNew.v0220.badge': '连线在一步中运送的数量现在以 +N 徽标显示在移动标记旁边,从 +1 开始显示。', + 'whatsNew.v0220.label': '连线自己的标签保持原位,只有在移动标记或徽标经过时才会变淡。', + 'whatsNew.v0220.focus': '开启聚焦时,聚焦范围外连线上的移动标记、徽标和高亮现在会随这些连线一起变淡。', + 'whatsNew.v0220.cap': '移动较多的一步中,最多同时移动 24 个标记,其余移动过的连线改为高亮显示。', } satisfies Record export default ui diff --git a/src/i18n/locales/zh-Hant/ui.ts b/src/i18n/locales/zh-Hant/ui.ts index 92c3c52c..8c48854c 100644 --- a/src/i18n/locales/zh-Hant/ui.ts +++ b/src/i18n/locales/zh-Hant/ui.ts @@ -583,6 +583,11 @@ const ui = { 'whatsNew.v0214.tool': '鎖定時也會關閉群組框工具,因此在空白畫布上拖曳會移動檢視,而不會開始畫群組框。', 'whatsNew.v0214.keys': '編輯鎖定期間,用鍵盤切換時會像略過其他停用按鈕一樣略過這兩個按鈕。', 'whatsNew.v0214.zoom': '在手機上點按語言搜尋框時,頁面不再放大並停留在放大狀態。', + 'whatsNew.v0220.gate': '執行時,只有分流閘實際送出內容的分支會醒目顯示,沒有送出任何內容的分支維持原樣。', + 'whatsNew.v0220.badge': '連線在一步中運送的數量現在會以 +N 徽章顯示在移動標記旁邊,從 +1 開始顯示。', + 'whatsNew.v0220.label': '連線本身的標籤維持原位,只有在移動標記或徽章經過時才會變淡。', + 'whatsNew.v0220.focus': '開啟聚焦時,聚焦範圍外連線上的移動標記、徽章和醒目顯示現在會隨這些連線一起變淡。', + 'whatsNew.v0220.cap': '移動較多的一步中,最多同時移動 24 個標記,其餘移動過的連線改以醒目顯示。', } satisfies Record export default ui diff --git a/src/i18n/nlCopy.test.ts b/src/i18n/nlCopy.test.ts index c0ddf1c0..df5d8f85 100644 --- a/src/i18n/nlCopy.test.ts +++ b/src/i18n/nlCopy.test.ts @@ -261,15 +261,15 @@ const IDENTICAL_TO_EN: ReadonlyArray = [ // ------------------------------------------------------------------ shape describe('nl copy — the surfaces exist and are complete', () => { it('has exactly the base key set', () => { - expect(KEYS).toHaveLength(1044) // issue #301 decision 1: +4 (share.unavailable and the three 0.17.1 release-note lines); the session chip: +3 (the three 0.17.2 release-note lines); the licence screen: +12 (nine strings of the view and the three 0.18.0 release-note lines); the menu keyboard: +3 (the three 0.18.1 release-note lines); the tour announcement: +4 (tour.nav.announce and the three 0.18.2 release-note lines); the flow colour: +20 (the sixteen strings of the Colour section and the four 0.19.0 release-note lines); the flow colour views: +4 (the four 0.20.0 release-note lines); compact nodes: +3 (the three 0.21.0 release-note lines); Focus dimming: +3 (the three 0.21.1 release-note lines); value rows: +3 (the three 0.21.2 release-note lines); the edit lock: +4 (canvas.lock.name, its fixed accessible name, and the three 0.21.3 release-note lines); the locked rail and the phone search: +4 (the four 0.21.4 release-note lines) + expect(KEYS).toHaveLength(1049) // issue #330 PR 1: +5 (five 0.22.0 release-note lines); issue #301 decision 1: +4 (share.unavailable and the three 0.17.1 release-note lines); the session chip: +3 (the three 0.17.2 release-note lines); the licence screen: +12 (nine strings of the view and the three 0.18.0 release-note lines); the menu keyboard: +3 (the three 0.18.1 release-note lines); the tour announcement: +4 (tour.nav.announce and the three 0.18.2 release-note lines); the flow colour: +20 (the sixteen strings of the Colour section and the four 0.19.0 release-note lines); the flow colour views: +4 (the four 0.20.0 release-note lines); compact nodes: +3 (the three 0.21.0 release-note lines); Focus dimming: +3 (the three 0.21.1 release-note lines); value rows: +3 (the three 0.21.2 release-note lines); the edit lock: +4 (canvas.lock.name, its fixed accessible name, and the three 0.21.3 release-note lines); the locked rail and the phone search: +4 (the four 0.21.4 release-note lines) expect(Object.keys(NL).sort()).toEqual([...KEYS].sort()) }) it('covers all four runtime surfaces, at the measured sizes', () => { const per: Record = {} for (const r of RUNTIME) per[r.surface.split('/')[0]!] = (per[r.surface.split('/')[0]!] ?? 0) + 1 - expect(per).toEqual({ catalog: 1044, template: 196, frame: 7, module: 19 }) - expect(RUNTIME).toHaveLength(1266) + expect(per).toEqual({ catalog: 1049, template: 196, frame: 7, module: 19 }) + expect(RUNTIME).toHaveLength(1271) }) it('EVERY row has a non-empty ENGLISH side — the vacuity guard', () => { diff --git a/src/i18n/ptPtCopy.test.ts b/src/i18n/ptPtCopy.test.ts index 9d596713..4044449f 100644 --- a/src/i18n/ptPtCopy.test.ts +++ b/src/i18n/ptPtCopy.test.ts @@ -58,7 +58,7 @@ describe('pt-PT copy — the region audit over pt-BR', () => { // ---------------------------------------------------------------- shape it('has exactly the same key set as pt-BR', () => { expect(Object.keys(ptValues).sort()).toEqual(KEYS.slice().sort()) - expect(KEYS).toHaveLength(1044) // issue #301 decision 1: +4 (share.unavailable and the three 0.17.1 release-note lines); the session chip: +3 (the three 0.17.2 release-note lines); the licence screen: +12 (nine strings of the view and the three 0.18.0 release-note lines); the menu keyboard: +3 (the three 0.18.1 release-note lines); the tour announcement: +4 (tour.nav.announce and the three 0.18.2 release-note lines); the flow colour: +20 (the sixteen strings of the Colour section and the four 0.19.0 release-note lines); the flow colour views: +4 (the four 0.20.0 release-note lines); compact nodes: +3 (the three 0.21.0 release-note lines); Focus dimming: +3 (the three 0.21.1 release-note lines); value rows: +3 (the three 0.21.2 release-note lines); the edit lock: +4 (canvas.lock.name, its fixed accessible name, and the three 0.21.3 release-note lines); the locked rail and the phone search: +4 (the four 0.21.4 release-note lines) + expect(KEYS).toHaveLength(1049) // issue #330 PR 1: +5 (five 0.22.0 release-note lines); issue #301 decision 1: +4 (share.unavailable and the three 0.17.1 release-note lines); the session chip: +3 (the three 0.17.2 release-note lines); the licence screen: +12 (nine strings of the view and the three 0.18.0 release-note lines); the menu keyboard: +3 (the three 0.18.1 release-note lines); the tour announcement: +4 (tour.nav.announce and the three 0.18.2 release-note lines); the flow colour: +20 (the sixteen strings of the Colour section and the four 0.19.0 release-note lines); the flow colour views: +4 (the four 0.20.0 release-note lines); compact nodes: +3 (the three 0.21.0 release-note lines); Focus dimming: +3 (the three 0.21.1 release-note lines); value rows: +3 (the three 0.21.2 release-note lines); the edit lock: +4 (canvas.lock.name, its fixed accessible name, and the three 0.21.3 release-note lines); the locked rail and the phone search: +4 (the four 0.21.4 release-note lines) }) it('differs from pt-BR on exactly the audited keys', () => { diff --git a/src/i18n/ruCopy.test.ts b/src/i18n/ruCopy.test.ts index 4eaf1b3e..5895b39e 100644 --- a/src/i18n/ruCopy.test.ts +++ b/src/i18n/ruCopy.test.ts @@ -43,7 +43,7 @@ describe('ru copy — the first Cyrillic catalog', () => { // ------------------------------------------------------------------ shape it('has exactly the base key set', () => { expect(Object.keys(ruValues).sort()).toEqual(KEYS.slice().sort()) - expect(KEYS).toHaveLength(1044) // issue #301 decision 1: +4 (share.unavailable and the three 0.17.1 release-note lines); the session chip: +3 (the three 0.17.2 release-note lines); the licence screen: +12 (nine strings of the view and the three 0.18.0 release-note lines); the menu keyboard: +3 (the three 0.18.1 release-note lines); the tour announcement: +4 (tour.nav.announce and the three 0.18.2 release-note lines); the flow colour: +20 (the sixteen strings of the Colour section and the four 0.19.0 release-note lines); the flow colour views: +4 (the four 0.20.0 release-note lines); compact nodes: +3 (the three 0.21.0 release-note lines); Focus dimming: +3 (the three 0.21.1 release-note lines); value rows: +3 (the three 0.21.2 release-note lines); the edit lock: +4 (canvas.lock.name, its fixed accessible name, and the three 0.21.3 release-note lines); the locked rail and the phone search: +4 (the four 0.21.4 release-note lines) + expect(KEYS).toHaveLength(1049) // issue #330 PR 1: +5 (five 0.22.0 release-note lines); issue #301 decision 1: +4 (share.unavailable and the three 0.17.1 release-note lines); the session chip: +3 (the three 0.17.2 release-note lines); the licence screen: +12 (nine strings of the view and the three 0.18.0 release-note lines); the menu keyboard: +3 (the three 0.18.1 release-note lines); the tour announcement: +4 (tour.nav.announce and the three 0.18.2 release-note lines); the flow colour: +20 (the sixteen strings of the Colour section and the four 0.19.0 release-note lines); the flow colour views: +4 (the four 0.20.0 release-note lines); compact nodes: +3 (the three 0.21.0 release-note lines); Focus dimming: +3 (the three 0.21.1 release-note lines); value rows: +3 (the three 0.21.2 release-note lines); the edit lock: +4 (canvas.lock.name, its fixed accessible name, and the three 0.21.3 release-note lines); the locked rail and the phone search: +4 (the four 0.21.4 release-note lines) }) // ----------------------------------------------------------------- script diff --git a/src/i18n/thCopy.test.ts b/src/i18n/thCopy.test.ts index 69bce1ba..54f8a472 100644 --- a/src/i18n/thCopy.test.ts +++ b/src/i18n/thCopy.test.ts @@ -88,11 +88,11 @@ const englishFor = (surface: string, id: string): string => { describe('th copy — the first no-space script', () => { it('has exactly the base key set', () => { expect(Object.keys(TH).sort()).toEqual(KEYS.slice().sort()) - expect(KEYS).toHaveLength(1044) // issue #301 decision 1: +4 (share.unavailable and the three 0.17.1 release-note lines); the session chip: +3 (the three 0.17.2 release-note lines); the licence screen: +12 (nine strings of the view and the three 0.18.0 release-note lines); the menu keyboard: +3 (the three 0.18.1 release-note lines); the tour announcement: +4 (tour.nav.announce and the three 0.18.2 release-note lines); the flow colour: +20 (the sixteen strings of the Colour section and the four 0.19.0 release-note lines); the flow colour views: +4 (the four 0.20.0 release-note lines); compact nodes: +3 (the three 0.21.0 release-note lines); Focus dimming: +3 (the three 0.21.1 release-note lines); value rows: +3 (the three 0.21.2 release-note lines); the edit lock: +4 (canvas.lock.name, its fixed accessible name, and the three 0.21.3 release-note lines); the locked rail and the phone search: +4 (the four 0.21.4 release-note lines) + expect(KEYS).toHaveLength(1049) // issue #330 PR 1: +5 (five 0.22.0 release-note lines); issue #301 decision 1: +4 (share.unavailable and the three 0.17.1 release-note lines); the session chip: +3 (the three 0.17.2 release-note lines); the licence screen: +12 (nine strings of the view and the three 0.18.0 release-note lines); the menu keyboard: +3 (the three 0.18.1 release-note lines); the tour announcement: +4 (tour.nav.announce and the three 0.18.2 release-note lines); the flow colour: +20 (the sixteen strings of the Colour section and the four 0.19.0 release-note lines); the flow colour views: +4 (the four 0.20.0 release-note lines); compact nodes: +3 (the three 0.21.0 release-note lines); Focus dimming: +3 (the three 0.21.1 release-note lines); value rows: +3 (the three 0.21.2 release-note lines); the edit lock: +4 (canvas.lock.name, its fixed accessible name, and the three 0.21.3 release-note lines); the locked rail and the phone search: +4 (the four 0.21.4 release-note lines) }) it('covers all three runtime surfaces', () => { - expect(RUNTIME.filter(([s]) => s === 'catalog')).toHaveLength(1044) + expect(RUNTIME.filter(([s]) => s === 'catalog')).toHaveLength(1049) expect(RUNTIME.filter(([s]) => s.startsWith('template/'))).toHaveLength(196) expect(RUNTIME.filter(([s]) => s.startsWith('frame/'))).toHaveLength(7) expect(RUNTIME.filter(([s]) => s.startsWith('module/'))).toHaveLength(19) @@ -276,6 +276,7 @@ const LATIN_KEYS = [ 'catalog:import.ignoreLastRows', 'catalog:import.issue.invalid-ignore-rows', 'catalog:import.issue.ragged-row', + 'catalog:whatsNew.v0220.badge', 'catalog:import.parseError', 'catalog:import.parseErrorsBlockValidation', 'catalog:import.pasteAria', @@ -431,7 +432,7 @@ describe('a Latin run is declared, twice over — by key and by word', () => { it('the strings carrying a Latin run are exactly the declared ones', () => { expect(withLatin.slice().sort()).toEqual(LATIN_KEYS.slice().sort()) - expect(LATIN_KEYS).toHaveLength(170) // issue #307: +2 (two 0.18.1 release-note lines); issue #308: +1 (one 0.18.2 release-note line); issue #325: +1 (one 0.19.0 release-note line) + expect(LATIN_KEYS).toHaveLength(171) // issue #330 PR 1: +1 (the `+N` of one 0.22.0 release-note line); issue #307: +2 (two 0.18.1 release-note lines); issue #308: +1 (one 0.18.2 release-note line); issue #325: +1 (one 0.19.0 release-note line) }) it('the Latin vocabulary is exactly the declared one', () => { diff --git a/src/i18n/trCopy.test.ts b/src/i18n/trCopy.test.ts index 2940798f..5c5e3239 100644 --- a/src/i18n/trCopy.test.ts +++ b/src/i18n/trCopy.test.ts @@ -30,7 +30,7 @@ const KEYS = Object.keys(EN) describe('tr copy — the first Turkish catalog', () => { it('has exactly the base key set', () => { expect(Object.keys(TR).sort()).toEqual(KEYS.slice().sort()) - expect(KEYS).toHaveLength(1044) // issue #300: +33; issue #301 decision 1: +4 (share.unavailable and the three 0.17.1 release-note lines); the session chip: +3 (the three 0.17.2 release-note lines); the licence screen: +12 (nine strings of the view and the three 0.18.0 release-note lines); the menu keyboard: +3 (the three 0.18.1 release-note lines); the tour announcement: +4 (tour.nav.announce and the three 0.18.2 release-note lines); the flow colour: +20 (the sixteen strings of the Colour section and the four 0.19.0 release-note lines); the flow colour views: +4 (the four 0.20.0 release-note lines); compact nodes: +3 (the three 0.21.0 release-note lines); Focus dimming: +3 (the three 0.21.1 release-note lines); value rows: +3 (the three 0.21.2 release-note lines); the edit lock: +4 (canvas.lock.name, its fixed accessible name, and the three 0.21.3 release-note lines); the locked rail and the phone search: +4 (the four 0.21.4 release-note lines) + expect(KEYS).toHaveLength(1049) // issue #330 PR 1: +5 (five 0.22.0 release-note lines); issue #300: +33; issue #301 decision 1: +4 (share.unavailable and the three 0.17.1 release-note lines); the session chip: +3 (the three 0.17.2 release-note lines); the licence screen: +12 (nine strings of the view and the three 0.18.0 release-note lines); the menu keyboard: +3 (the three 0.18.1 release-note lines); the tour announcement: +4 (tour.nav.announce and the three 0.18.2 release-note lines); the flow colour: +20 (the sixteen strings of the Colour section and the four 0.19.0 release-note lines); the flow colour views: +4 (the four 0.20.0 release-note lines); compact nodes: +3 (the three 0.21.0 release-note lines); Focus dimming: +3 (the three 0.21.1 release-note lines); value rows: +3 (the three 0.21.2 release-note lines); the edit lock: +4 (canvas.lock.name, its fixed accessible name, and the three 0.21.3 release-note lines); the locked rail and the phone search: +4 (the four 0.21.4 release-note lines) }) }) diff --git a/src/i18n/viCopy.test.ts b/src/i18n/viCopy.test.ts index 5b6392c8..cba6f3e0 100644 --- a/src/i18n/viCopy.test.ts +++ b/src/i18n/viCopy.test.ts @@ -132,11 +132,11 @@ const englishFor = (surface: string, id: string): string => { describe('vi copy — the first locale English hides inside', () => { it('has exactly the base key set', () => { expect(Object.keys(VI).sort()).toEqual(KEYS.slice().sort()) - expect(KEYS).toHaveLength(1044) // issue #301 decision 1: +4 (share.unavailable and the three 0.17.1 release-note lines); the session chip: +3 (the three 0.17.2 release-note lines); the licence screen: +12 (nine strings of the view and the three 0.18.0 release-note lines); the menu keyboard: +3 (the three 0.18.1 release-note lines); the tour announcement: +4 (tour.nav.announce and the three 0.18.2 release-note lines); the flow colour: +20 (the sixteen strings of the Colour section and the four 0.19.0 release-note lines); the flow colour views: +4 (the four 0.20.0 release-note lines); compact nodes: +3 (the three 0.21.0 release-note lines); Focus dimming: +3 (the three 0.21.1 release-note lines); value rows: +3 (the three 0.21.2 release-note lines); the edit lock: +4 (canvas.lock.name, its fixed accessible name, and the three 0.21.3 release-note lines); the locked rail and the phone search: +4 (the four 0.21.4 release-note lines) + expect(KEYS).toHaveLength(1049) // issue #330 PR 1: +5 (five 0.22.0 release-note lines); issue #301 decision 1: +4 (share.unavailable and the three 0.17.1 release-note lines); the session chip: +3 (the three 0.17.2 release-note lines); the licence screen: +12 (nine strings of the view and the three 0.18.0 release-note lines); the menu keyboard: +3 (the three 0.18.1 release-note lines); the tour announcement: +4 (tour.nav.announce and the three 0.18.2 release-note lines); the flow colour: +20 (the sixteen strings of the Colour section and the four 0.19.0 release-note lines); the flow colour views: +4 (the four 0.20.0 release-note lines); compact nodes: +3 (the three 0.21.0 release-note lines); Focus dimming: +3 (the three 0.21.1 release-note lines); value rows: +3 (the three 0.21.2 release-note lines); the edit lock: +4 (canvas.lock.name, its fixed accessible name, and the three 0.21.3 release-note lines); the locked rail and the phone search: +4 (the four 0.21.4 release-note lines) }) it('covers all four runtime surfaces', () => { - expect(RUNTIME.filter(([s]) => s === 'catalog')).toHaveLength(1044) + expect(RUNTIME.filter(([s]) => s === 'catalog')).toHaveLength(1049) expect(RUNTIME.filter(([s]) => s.startsWith('template/'))).toHaveLength(196) expect(RUNTIME.filter(([s]) => s.startsWith('frame/'))).toHaveLength(7) expect(RUNTIME.filter(([s]) => s.startsWith('module/'))).toHaveLength(19) @@ -399,6 +399,7 @@ const ASCII_KEYS = [ 'catalog:import.issue.missing-key-column', 'catalog:import.issue.missing-source-column-id', 'catalog:import.issue.ragged-row', + 'catalog:whatsNew.v0220.badge', 'catalog:import.parseError', 'catalog:import.parseErrorsBlockValidation', 'catalog:import.pasteAria', @@ -578,7 +579,7 @@ describe('a kept English word is declared, twice over — by key and by word', ( ([s, id]) => s + ':' + id, ) expect(actual.slice().sort()).toEqual(ASCII_KEYS.slice().sort()) - expect(ASCII_KEYS).toHaveLength(194) // issue #307: +3 (the three 0.18.1 release-note lines); issue #308: +1 (one 0.18.2 release-note line); issue #325: +1 (one 0.19.0 release-note line) + expect(ASCII_KEYS).toHaveLength(195) // issue #330 PR 1: +1 (the `+N` of one 0.22.0 release-note line); issue #307: +3 (the three 0.18.1 release-note lines); issue #308: +1 (one 0.18.2 release-note line); issue #325: +1 (one 0.19.0 release-note line) }) it('the kept vocabulary is exactly the declared one', () => { @@ -772,7 +773,7 @@ describe('one English noun, one Vietnamese term, everywhere English names it', ( ['Pool', /(^|[^A-Za-z])Pools?([^A-Za-z]|$)/, 'Bể chứa', 21], ['Source', /(^|[^A-Za-z])Sources?([^A-Za-z]|$)/, 'Nguồn', 4], ['Drain', /(^|[^A-Za-z])Drains?([^A-Za-z]|$)/, 'Điểm xả', 5], - ['Gate', /(^|[^A-Za-z])Gates?([^A-Za-z]|$)/, 'Bộ chia', 5], + ['Gate', /(^|[^A-Za-z])Gates?([^A-Za-z]|$)/, 'Bộ chia', 6], ['Converter', /(^|[^A-Za-z])Converters?([^A-Za-z]|$)/, 'Bộ chuyển đổi', 4], ['Parameter', /(^|[^A-Za-z])Parameters?([^A-Za-z]|$)/, 'Tham số', 24], ['Register', /(^|[^A-Za-z])Registers?([^A-Za-z]|$)/, 'Giá trị tính toán', 11], diff --git a/src/index.css b/src/index.css index fe5a4965..8e94a392 100644 --- a/src/index.css +++ b/src/index.css @@ -3327,12 +3327,6 @@ a.sheet__row { r: 8; } } -.flow-token__n { - fill: var(--text-secondary); - font-size: 9px; - font-weight: 700; - text-anchor: middle; -} /* docs/simulation-playback.md §PB4.4 — at L0 the sub-pixel travelling dot is dropped; this steady directional stroke stands in for the `travel` beat so the depart → travel → arrive order still reads on the map. No motion; it is @@ -3356,6 +3350,64 @@ a.sheet__row { pointer-events: none; } +/* issue #330 PR 1 (v0.22.0), docs/simulation-playback.md §PB4.6 — the path + highlight: drawn on a Gate output that moved this step (whichever branch the + Gate took; an untaken branch keeps its usual look) and on any moved edge past + the 24 token-and-badge pairs. Under the token, over the connection; the + connection's own stroke and flow colour stay as they are. */ +.pb-path { + stroke: var(--flow-strength); + stroke-width: 3.5; + stroke-linecap: round; + opacity: 0.55; + vector-effect: non-scaling-stroke; + pointer-events: none; +} +/* the `+N` badge beside the round token, from `+1`; it moves with the token. It + lives in the label layer (HTML, above every connection label) so the pair is + drawn on top. Its box matches ./components/edges/playbackBadge.ts (height + 13, the text plus 4 px each side, border included). The amount is in the + primary ink for legibility; the run colour is its border. */ +.pb-badge { + position: absolute; + left: 0; + top: 0; + z-index: 1; + box-sizing: border-box; + height: 13px; + padding: 0 3px; + border: 1px solid var(--flow-strength); + border-radius: 7px; + background: var(--surface-raised); + color: var(--text-primary); + font-family: var(--font-sans); + font-size: 10px; + font-weight: 700; + line-height: 11px; + font-variant-numeric: tabular-nums; + text-align: center; + white-space: nowrap; + pointer-events: none; +} +/* §LGR2.3 — on a connection outside the focus set (the label layer is outside + the connection's own group, so a class, not the group rule below) */ +.pb-badge.pb-badge--dim { + opacity: 0.26; +} +/* the connection's OWN label never moves; it dims only while the token or its + badge overlaps its real box */ +.edge-label.edge-label--under-token { + opacity: 0.3; +} +/* §LGR2.3 (issue #330 PR 1) — a connection outside the focus set carries its + playback cues at the connection's own low strength. `filter: opacity()` + multiplies with the cues' own animated opacity (a static `opacity` would be + overridden by their keyframes). Cues inside a node keep full strength. */ +.react-flow__edge.lgr-deemph + :is(.pb-path, .pb-move, .pb-cue, .pb-l0-pulse, .flow-edge-pulse, .pb-rm-tell, .state-move, .state-cue, .state-edge-pulse) { + filter: opacity(0.26); +} + /* ==== state-edge feedback (SEMANTICS-S §S9 / S2 §S2-9) ================== */ /* docs/simulation-playback.md Slice 3b — the τ-synced state cue. The transform is set every frame from the store's τ (like the resource token); @@ -3442,7 +3494,6 @@ a.sheet__row { fill: CanvasText; forced-color-adjust: none; } - .flow-token__n, .state-move__n { fill: CanvasText; forced-color-adjust: none; @@ -3485,6 +3536,46 @@ a.sheet__row { stroke: CanvasText; forced-color-adjust: none; } + /* issue #330 PR 1 — the path highlight is told by WIDTH (a 4 px line over the + 1.5 px connection), never by a low opacity; the badge is a Canvas pill + with a CanvasText border and amount */ + .pb-path { + stroke: CanvasText; + stroke-width: 4; + opacity: 1; + forced-color-adjust: none; + } + .pb-badge { + background: Canvas; + color: CanvasText; + border-color: CanvasText; + forced-color-adjust: none; + } + .pb-badge.pb-badge--dim { + opacity: 1; + border-style: dashed; + } + /* a covered label is not faded (an opacity is unreliable here): it gives way + to the token and its badge for as long as they cover it */ + .edge-label.edge-label--under-token { + opacity: 1; + visibility: hidden; + } + /* §LGR9 — outside the focus set the cues are not faded either: the path + highlight takes the connection's sparse `1 5` dash, the token turns hollow, + the badge's border is dashed */ + .react-flow__edge.lgr-deemph + :is(.pb-path, .pb-move, .pb-cue, .pb-l0-pulse, .flow-edge-pulse, .pb-rm-tell, .state-move, .state-cue, .state-edge-pulse) { + filter: none; + } + .react-flow__edge.lgr-deemph .pb-path { + stroke-dasharray: 1 5; + } + .react-flow__edge.lgr-deemph .flow-bead { + fill: Canvas; + stroke: CanvasText; + stroke-width: 1.2; + } } /* ==== P2 — playback strip in the chart header =========================== */ diff --git a/src/releaseNotes/releaseNotes.ts b/src/releaseNotes/releaseNotes.ts index 64275e3c..3177a797 100644 --- a/src/releaseNotes/releaseNotes.ts +++ b/src/releaseNotes/releaseNotes.ts @@ -38,6 +38,16 @@ export const releaseNoteIdFor = (version: string): ReleaseNoteId => `release:${v * mechanics, no test counts, no pull-request numbers. */ export const RELEASE_NOTES: readonly ReleaseNote[] = [ + { + // issue #330 PR 1 - playback shows the path a Gate took, every amount as a + // `+N` badge beside its moving marker, the label rule, Focus mode on + // connections and the 24-marker cap; the date is the day it is deployed, + // set right before the merge + id: 'release:0.22.0', + version: '0.22.0', + date: '2026-10-08', + items: ['whatsNew.v0220.gate', 'whatsNew.v0220.badge', 'whatsNew.v0220.label', 'whatsNew.v0220.focus', 'whatsNew.v0220.cap'], + }, { // issues #338 + #340 - the Controls rail keeps its two frame buttons, // disabled, while the canvas is locked, so the other buttons no longer From 3d310d1b541d13937d1ad383f5eef5623f28f1b1 Mon Sep 17 00:00:00 2001 From: Hanrim <148833226+MerciHanrim@users.noreply.github.com> Date: Fri, 9 Oct 2026 00:05:35 +0900 Subject: [PATCH 2/2] chore(release): v0.22.0 is dated 2026-10-09 The release date is the Seoul day of the merge: the v0.22.0 entry in the release notes and its CHANGELOG heading move from 2026-10-08 to 2026-10-09. The README's v0.22.0 section carries no date. --- CHANGELOG.md | 2 +- src/releaseNotes/releaseNotes.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd7f6458..8252df73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable Loop Studio releases, newest first. Behavioral changes are pinned in versioned spec documents (see the [README](README.md#technical-reference)); this file is the narrative history, not the contract. -## v0.22.0 — 2026-10-08 +## v0.22.0 — 2026-10-09 Playback shows what moved where (issue #330, first of three): the path a Gate took, every amount as a `+N` badge beside its round token, and Focus mode winning on connections, as [`docs/simulation-playback.md`](docs/simulation-playback.md) §PB4.6 and [`docs/large-graph-readability.md`](docs/large-graph-readability.md) §LGR2.3 describe. diff --git a/src/releaseNotes/releaseNotes.ts b/src/releaseNotes/releaseNotes.ts index 3177a797..51828343 100644 --- a/src/releaseNotes/releaseNotes.ts +++ b/src/releaseNotes/releaseNotes.ts @@ -45,7 +45,7 @@ export const RELEASE_NOTES: readonly ReleaseNote[] = [ // set right before the merge id: 'release:0.22.0', version: '0.22.0', - date: '2026-10-08', + date: '2026-10-09', items: ['whatsNew.v0220.gate', 'whatsNew.v0220.badge', 'whatsNew.v0220.label', 'whatsNew.v0220.focus', 'whatsNew.v0220.cap'], }, {