admin and Claude Opus 5.5
2aaca01929
Find the first matching item with a Find … Match block ( #255 )
...
Searching a list with For each needs the test result wired back into
break on the left of the loop node. The wires then run across the node
and the graph reads badly. Find … Match keeps the whole search flowing
left to right, while the test in between stays a free graph.
- Find takes exec and list and offers item and index. It sets them to
each element in turn and has no exec output of its own.
- Match reads its bool input match once per element. The first true
value continues at found with item and index of the hit. No hit or an
empty list continues at not found with an empty item and index -1.
- The pair is derived from the wiring and stored nowhere. A Match
belongs to the Find whose item or index its test is built from. Copy,
paste and undo therefore need no extra code (findBlock.ts).
- An unpaired Find or Match, two Matches on one Find and a Match fed
by two Finds show a warning on the node. At run time the flow ends at
an unpaired Find and the console says so.
- Adding Find from the palette places its Match 480 px to the right in
the same undo step.
- The graph draws a quiet frame behind Find, Match and the nodes of the
test. Literals feeding the test from outside stay outside the frame.
- The test consists of data nodes only, like the break of For each.
Tests:
- ./check.sh: 184 files, 2694 tests, CHECK EXIT 0
- e2e GM_STEPS=1-6: ALL PASSED, 272 checks
- New find-match.test.ts with 12 tests, 2 catalog cases, e2e 6z-v
with 3 checks using a real mouse.
- Counter-checks: ignoring the test fails 4 unit tests, no ambiguity
check fails 2, framing everything fails 1. In the browser, no frame
and no Match from the palette each fail their check.
- Check total in README: 1517.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-28 11:33:25 +02:00
..
2026-09-27 21:56:21 +02:00
Open asset greyed out and real tab cards: Open asset in the scene object menu is only pickable for kinds with an editor of their own, the table of which asset opens which tab moved from Editor.ts into the new module assetTabs.ts with hasAssetEditor so the menu and the editor read the same list, Select asset stays as it was; tabs are drawn as index cards (new module TabButton.ts): the one showing is a light grey card instead of the aggressive blue, rounded above and square below, its name in plain weight and measured bold so it never clips itself, and a mouse down on the tab already showing keeps its colour; the padding left and right grew to 6 px in one place for both kinds of tab, Scene and Game carry an icon too (the scene one from the asset panel, a new game.svg play sign), Plugins and a plugin's own tab have none; new test hook menuEnabled next to menuRows and menuIcons, e2e 01 checks the greyed out entry on a sprite row, 14a-ii the card and the icons of the fixed tabs, 44a the icon at the wider padding ( #176 )
2026-09-20 11:40:01 +02:00
2026-09-26 15:30:33 +02:00
2026-09-27 12:57:49 +02:00
2026-09-28 06:04:40 +02:00
2026-09-27 12:12:40 +02:00
2026-09-28 11:33:25 +02:00
2026-09-16 08:08:10 +02:00
2026-09-23 18:29:34 +02:00
2026-09-23 18:29:34 +02:00
2026-09-16 08:08:10 +02:00
2026-09-16 08:08:10 +02:00
2026-09-18 12:14:01 +02:00
2026-09-23 06:57:43 +02:00
2026-09-23 13:59:04 +02:00
2026-09-23 08:13:22 +02:00
2026-09-23 20:07:47 +02:00
2026-09-16 08:08:10 +02:00
2026-09-23 16:44:15 +02:00
2026-09-25 16:13:14 +02:00
2026-09-16 08:08:10 +02:00
2026-09-27 21:56:21 +02:00
2026-09-27 21:56:21 +02:00
2026-09-26 21:12:44 +02:00
2026-09-16 08:08:10 +02:00
2026-09-27 15:58:05 +02:00
2026-09-21 06:25:56 +02:00
2026-09-22 18:29:10 +02:00
2026-09-25 16:34:10 +02:00
2026-09-27 12:12:40 +02:00
2026-09-16 08:08:10 +02:00
2026-09-23 20:07:47 +02:00
2026-09-27 21:56:21 +02:00
Asset panel grouped by kind with icons: assets are listed under a header per kind (Sprites, Behaviors, ...) with the count on the right, empty groups are not shown, every group starts folded when a project is opened, a click on the header folds and unfolds it, selecting an asset elsewhere unfolds its group and folding the group of the selected asset clears the selection; every asset kind has an SVG icon in src/editor/panels/icons/ drawn before the name, the pure rule for grouping and sorting lives in assetGroups.ts; the same icons replace the kind word in document tabs and the overflow menu (a list icon for the List tab, which also fixes the close x lying over the end of the active tab's text), stand before every entry of the + menu (Button got an icon option) and on the right of scene object rows instead of the type name; the colour swatch next to sprite names is gone from both panels; the SVG loader moved to src/ui/svg.ts for both icon sets; test hook assetRow unfolds the group and scrolls to the row, assetRowShown only reads, new hook menuIcons; e2e 4g and 4h, 14 and 44a check the icons ( #176 )
2026-09-19 18:36:20 +02:00
2026-09-16 08:08:10 +02:00
2026-09-24 11:38:18 +02:00
2026-09-23 10:20:05 +02:00
2026-09-24 19:34:37 +02:00
2026-09-23 13:59:04 +02:00
2026-09-27 12:12:01 +02:00
2026-09-27 12:12:40 +02:00
2026-09-23 21:16:06 +02:00
2026-09-24 13:22:45 +02:00
2026-09-23 08:13:22 +02:00
Open asset greyed out and real tab cards: Open asset in the scene object menu is only pickable for kinds with an editor of their own, the table of which asset opens which tab moved from Editor.ts into the new module assetTabs.ts with hasAssetEditor so the menu and the editor read the same list, Select asset stays as it was; tabs are drawn as index cards (new module TabButton.ts): the one showing is a light grey card instead of the aggressive blue, rounded above and square below, its name in plain weight and measured bold so it never clips itself, and a mouse down on the tab already showing keeps its colour; the padding left and right grew to 6 px in one place for both kinds of tab, Scene and Game carry an icon too (the scene one from the asset panel, a new game.svg play sign), Plugins and a plugin's own tab have none; new test hook menuEnabled next to menuRows and menuIcons, e2e 01 checks the greyed out entry on a sprite row, 14a-ii the card and the icons of the fixed tabs, 44a the icon at the wider padding ( #176 )
2026-09-20 11:40:01 +02:00
Changing the password: the Logout button at the far right of the toolbar became an Account menu that names the signed-in account in an entry of its own that cannot be picked, with Change password... above Logout, and the new dialog (src/editor/auth/PasswordDialog.ts) asks for the current password, the new one and its repetition, all three as bullets, and stays standing when the server refuses so that it can say why, unlike the other form dialogs; the rules for empty, too short, new equal to old and a differing repetition sit as the pure function passwordProblem() next to loginProblem(), the API gained POST ?r=auth/password which answers 204, insists on the current password although a session is there, enforces a minimum length of 8 in UserStore::MIN_PASSWORD_LENGTH and again in the client so the mask can answer without asking the server, and the new SessionStore::destroyAllFor($user, $keep) ends every other session of the account while the tab that changed the password keeps its own; the placeholders admin/admin and user/user stay as they are, which the length check does not touch because it only runs when a password is set through the API; e2e 45 grew by 8 checks for the menu, the dialog, both refusals and signing in with the old and the new password, and it sets the e2e account back at the end - a run dying in between leaves it on <password>-tmp, which a make-user.php call repairs ( #182 )
2026-09-20 13:46:40 +02:00
2026-09-27 12:57:49 +02:00
2026-09-27 16:45:53 +02:00
2026-09-23 06:57:43 +02:00
2026-09-23 13:59:04 +02:00
2026-09-25 18:21:52 +02:00
2026-09-27 12:12:40 +02:00
2026-09-27 12:12:40 +02:00
2026-09-27 16:45:53 +02:00
2026-09-28 06:04:40 +02:00
2026-09-28 10:00:22 +02:00
2026-09-28 07:23:00 +02:00