Repository navigation
v0.28.1 — a label keeps off the bend points you placed; Early MMO leaves the Templates menu - #355
Merged
Merged
Conversation
… points Share note 50 (option A, Lumi 2026-10-14): a routed label took the first free slot of its own line clear of nodes, other labels and other lines, but not of its own bend points, so while the connection was selected its bend markers could sit under it (measured in the browser on the bundled examples with bends added: touching 23 / 202, 49 / 262 and 29 / 254 by placement). `placeLabelOn` (src/store/routeMap.ts) now also keeps the label off a BEND_LABEL_BOX (16 px: the 12 px marker plus 2 px) square on each STORED bend point (`waypoints`, collected per edge in the plan), in the first two passes. The last-resort passes ignore the bends, so a line with no slot clear of them still has its label: the overlap is avoided where a slot allows, not ruled out. The rule does not read the selection, so selecting or deselecting never moves a label; a connection without stored bends places its label as before. docs/edge-routing.md §ER14.3 says it. Remeasured in the browser on this code with the same probe and inputs as note 50: touching 1 / 202, 6 / 262 and 0 / 254 (label centre on a marker 1, 5, 0). The 7 left are labels on the 0.5 slot over their own bend, which by the code can only come from the last-resort passes (inferred, not checked one by one). Tests: unit routeMap.bendLabel.test.ts 4 (it fails on main: the label stays on the bend); e2e label-bends.spec.ts 2 (the label leaves a bend put under it; selected, the rendered label box and the bend marker do not meet; the place holds through select, deselect, zoom, undo / redo and a reopen; it fails on main). Full vitest 3575 passed, 1 skipped; lint 0 errors; tsc. No change declaration yet: it comes with the release. The fan key's missing face and React Flow's error 008 are separate units.
- package.json / package-lock.json 0.28.1; `.changes/label-avoids-own-bends.json` (user-facing, `release:0.28.1`), date 2026-10-14, to be checked on the merge day. - What's new 0.28.1, three lines in 18 languages: a label keeps off the bend points you placed wherever its line has room, and can still sit on one on a short line with close bends (no line promises the overlap is gone); its place does not depend on the selection or the zoom; in a dense diagram a label moving off a bend can also move a nearby connection's label or line (measured: another label moved in 18 of 934 cases, share note 52). es-ES = es-419 and pt-BR = pt-PT, written neutrally; French avoids the punctuation its spacing rule governs. The locale tests' counts follow (catalog 1137, runtime 1359); the e2e release list pins 0.28.1. - CHANGELOG v0.28.1; README Latest v0.28.1 (v0.28.0 kept as a section, v0.26.0 moved into the CHANGELOG list). The previous commit's message says a connection without stored bends places its label as before: true of ITS placement rule, not of the whole drawing — another label moved in 18 of 934 measured cases (note 52); not rewritten. The translation contract tests pass: evidence of the catalogs' structure and terms, not a review of how the lines read; no native-speaker review. Tests: locale and release 713; whats-new.spec.ts, descriptive-copy-wrapping and label-bends.spec.ts 123 passed; full vitest 3575 passed, 1 skipped; lint 0 errors; tsc; change-declaration and the i18n, ICU, isolate, control-byte, glyph and locale-list checks pass.
…loper stress fixture The Early MMO progression entry keeps its place in TEMPLATES with a new `menu: false` field; the desktop Templates menu and the phone's More -> Templates sheet list MENU_TEMPLATES, so they no longer offer it. Its file, fixture, scripts, translations, the official-label locale switch and its tests stay. A document made from it still opens, by Import, autosave or a share link. Tests keep their purpose: - the menu's first screen and language checks (desktop and phone) moved to Coffee and the gacha banner, including the overlay, re-seed, rename, reload, undo, Timeline legend and boot-locale cases, and the de / fr / es-ES localized Template checks; - the menu checks now also say MMO is not offered, in EN and KO, desktop and phone; - MMO's own behaviour and performance (recommended config, edit lock, Timeline series, deterministic run, identities, round trip, the bulk locale-switch geometry, the production locale-switch alignment) are tested by opening its file through the real file input; - the colour-view visual check drops the MMO case and its light and dark baselines and their policy entries; Coffee and Gacha stay. Docs: the examples table and section, the MMO design and layout docs, the product-direction note and diagram-layout DL5.5 say MMO is no longer in the menu; past CHANGELOG and release records are unchanged.
… room, and the MMO line Lumi's corrections to the three What's new lines, in 18 languages: - labelBends: where there is room the label is placed clear of the user's bends; where there is not enough room an overlap can remain; - stable: selecting, deselecting or zooming does not by itself change where a label sits; - nearby: "another connection", not "a nearby connection" (placement is global, so a moved label is not limited to its neighbours). A fourth line, whatsNew.v0281.mmoTemplate: the Early MMO example is no longer listed under Templates and stays as developer test material; a document made from it still opens and works as before. The locale count pins move by one (catalog 1138, runtime 1360); es-419, th and vi declare the new line's Latin MMO, and vi's Template glossary count is 4. README (the bundled Templates sentence and Latest) and the v0.28.1 CHANGELOG entry follow.
…ing the menu The full local e2e on bf3203f failed two pins in descriptive-copy-wrapping.spec.ts: the summed line count of every menu blurb and palette description, Korean 38 -> 36 and English 40 -> 38. The sweep opens every toolbar menu, so the Early MMO blurb no longer counts. Measured, not assumed (the spec's contexts and line measure): menu blurbs 18 + palette 18 = 36 in ko-KR, 19 + 19 = 38 in en-US; the MMO blurb, put in the Templates menu's own 272 px box, takes 2 lines in each. Only the two pins move; the no-overflow, keep-all and no-mid-word-break assertions stay. The spec: 25 passed (its only project, chromium).
…rams checked The v0.28.1 entry said the check "on small generated diagrams" did not reproduce the Early MMO label case, which reads as a claim about small diagrams in general. What was shown is narrower: the two smallest flagged cases, opened in the browser, did not reproduce it (share note 52). One sentence; nothing else changes.
… switches The dist run on 549fbb6 failed "a bulk locale switch on the MMO document keeps edge endpoints aligned": the second language switch timed out waiting for the language control. Picking a language leaves the Settings menu open; the test used to open the MMO Template from the Templates menu between the two switches, which closed Settings, but since 3b7f96a it opens the MMO file instead, so the next switch's first click closed Settings (the failure snapshot: the Settings button active, no menu). switchTo now presses Escape after a pick and waits for the language control to be hidden. Test only; the test passed alone on the dist config (1 passed). The migration in 3b7f96a had not been run on the dist config.
Deploying cozy-loop-studio with
|
| Latest commit: |
e33f39a
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://7c7d9933.cozy-loop-studio.pages.dev |
| Branch Preview URL: | https://fix-label-avoids-own-bends.cozy-loop-studio.pages.dev |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
v0.28.1 — a label keeps off the bend points you placed; Early MMO leaves the Templates menu
Two changes in one patch release (Lumi, 2026-10-14). Seven commits, each verified as it was done: four of product, release and tests, then two test-only fixes and one CHANGELOG sentence after the full run (section 4). The investigation and the measurements are in share notes 50 and 52.
1. A label keeps off its own stored bend points (
678d0d7)placeLabelOn(src/store/routeMap.ts,docs/edge-routing.md§ER14.3), option A of note 50.BEND_LABEL_BOX: the 12 px marker plus 2 px) on each of the connection's own STORED bend points. The last-resort passes ignore them, so a line with no slot clear of its bends still has its label, possibly over one: the overlap is avoided where a slot allows, not ruled out.Measured on the screen (note 50's browser probe, unchanged: every connection of the bundled examples, bends added to one at a time, the RENDERED label box against the RENDERED bend markers): a label touching one of its own markers went from 101 to 7 of 718 (23 / 202 → 1, 49 / 262 → 6, 29 / 254 → 0 by where the bends are placed). Most of the 7 left are short lines with bends close together.
Other connections: labels are placed in order and lines rerouted around labels, so a label moving off a bend can move another one. Same measurement, every label and routed line recorded with main's and with this code: another label moved in 18 of 934 cases and another line changed in 20 (Gacha, Early MMO and the playback choreography; none in the other examples). The fix measured twice differs in 0 of 934 rows. In one Early MMO case (
e_hunt_xpe) a neighbour now runs along another line for 880 px and its label sits on that line: worse. A node search over 3 000 generated small diagrams flagged candidates; the two smallest, opened in the browser, did not reproduce the regression (seed 1030: no change; seed 1069: only the bent connection's own label moved, off its bend). That is a result for those two cases, not for small diagrams in general; on it Lumi recorded the MMO case as a limit of the stress fixture (next section) and lifted the release hold.The commit message of
678d0d7says a connection without stored bends places its label as before: true of its own placement rule, not of the whole drawing (the 18 cases above);cab6c67says so, the message was not rewritten.2. Early MMO leaves the Templates menu (
3b7f96a)Hanrim and Lumi: Early MMO serves as a stress case, not as a user's starting point, so it leaves the user Templates and stays as developer material; an MMO-only change does not block a release.
TEMPLATESwith a newmenu: false; the desktop Templates menu and the phone's More → Templates listMENU_TEMPLATES(src/model/templates.ts,Templates.tsx,MobileMoreMenu.tsx). Its file, fixture, scripts, translations, the official-label locale switch and its tests stay. A document made from it still opens, by Import, autosave or a share link.docs/example-mmo-progression.md,docs/mmo-multilingual-layout.md,docs/product-direction.mdanddocs/diagram-layout.md§DL5.5 say it is no longer in the menu. Past CHANGELOG and release records are unchanged.3. Release (
cab6c67,bf3203f).changes/label-avoids-own-bends.json(user-facing), release date 2026-10-14, to be checked on the merge day.4. After the full run: two test-only fixes and one sentence (
5f06586,549fbb6,e33f39a)No product code changes after
bf3203f.5f06586(test): the full run's two failures,descriptive-copy-wrapping.spec.tsKorean 38 → 36 and English 40 → 38 lines. The sweep sums every menu blurb and palette description, so the Early MMO blurb no longer counts. Measured with the spec's contexts and line measure: menu 18 + palette 18 = 36 (ko-KR), 19 + 19 = 38 (en-US); the MMO blurb, put in the Templates menu's own 272 px box, takes 2 lines in each. Only the two pins move; the no-overflow,keep-alland no-mid-word-break assertions stay. My migration had missed this count.549fbb6(docs): the v0.28.1 CHANGELOG said the MMO case did not reproduce "on small generated diagrams"; it now says it did not reproduce in the two small diagrams checked in the browser. One sentence.e33f39a(test): thedistrun on549fbb6failed the production locale-switch check — the second switch timed out. Picking a language leaves Settings open; the test used to open MMO from the Templates menu between the switches, which closed it, and since3b7f96ait opens the MMO file instead, so the next click closed Settings. The switch now closes Settings after a pick. My migration had not been run on thedistconfig.Verification, by head
bf3203f--workers=1 --retries=0descriptive-copy-wrappingline counts fixed in5f06586, no other failurebf3203fcheck:i18n,check:i18n-surface,check:template-labels,check:snapshot-policy,check:e2e-shards,check:change-declaration,check:control-bytes,check:isolate-arguments,check:content-direction,check:locale-lists,check:functional-glyphs5f06586descriptive-copy-wrapping.spec.ts(its only project, chromium)549fbb6distconfige33f39a)e33f39adist, then the wholedistconfig, then thepwaconfig, each run separatelydist16 passed;pwa19 passede33f39aThe full local e2e was not rerun after
bf3203f(Lumi: the later changes are test-only and one sentence); PR CI runs everything on the final head. e2elabel-bends.spec.ts(2) and unitrouteMap.bendLabel.test.ts(4) fail on main and pass here.Earlier runs, kept apart
cab6c67(the 0.28.1 preparation, before the MMO menu change and the wording): 2 193 passed, 0 failed, 10 skipped. A record of that head, not the verification of this one.678d0d7was stopped before it finished; it is not a result.Separate, later units
React Flow's error 008 after a reversal (note 51: a one-frame gap, dev-only warning) gets its short trial first; then the router's fan key, which groups ports without their face. Neither is in this release.