Repository navigation
Conversation
A run whose socket stands in line with its disc went straight at the socket's x, not at the way out the sheet had weighed against the map's lettering, so it was drawn through a tag beside the disc. Once data tags read the length alone, a "50'" tag sat on that line where the wider "50' etherCON" had blocked the way and sent the run round by the side. The straight run is now taken only where its line is no dearer than the way out; otherwise the run keeps that way out and goes by the lane.
With Port numbers on Down, Organized numbered every cut run by its place along the line (first runs of every row, then second runs, ...). A row cut at a different width from the rows around it, like a bottom row of half-height cabinets that fits 17 to a port under rows of 8, had its runs numbered as if each were the next row of a stack, so the numbers wove through stacks the runs don't sit under. Each cut run now carries where its first cabinet sits along the line. The stacks are the cut most lines share; a line in step with it (same run spacing wherever both have a run, so a line trimmed at an end by a taken over port still counts) numbers by place as before; a run of a line cut another way takes the stack its first cabinet sits under, in line order. Walls whose lines all cut alike number exactly as they did. The automatic walk, the custom Apply Pattern fill and the SCR export (scr_project.split_run_stacks) share the rule. Across is unchanged.
# Conflicts: # src/VERSION.txt
The H_4xfiber fix bound a Backup-mode OPT 3-4 box to the OPT 1-2 box off the mode. The same rule now covers every copy OPT a catalog entry quotes a source for: - H_4xfiber (enhanced), Backup: OPT 5-8 bind to OPT 1-4. The rule already reached it; tests now prove it for every box shape and order. - MX40 Pro, 20-port: a box on OPT 3/4 set to Backup (the default) binds to the OPT 1/2 box even when it was added alone or before the mode switch. Before, it drew as a copy box with free sockets. - NovaPro UHD and UHD Jr: their own spec sheets name OPT 3/4 the copy/hot backup channels of OPT 1/2, and the owner ruled each box there picks Mirror or Backup like the MX40 Pro. Their mode gains copyTrunks per-box with a copyTrunksNote quoting the sheet, so two CVT4K-S give 16 ports, each with its backup, drawn as one loop. The count stays 16. Only boxes on exactly the same OPTs bind; mixed shapes are left unbound.
… under Power's Circuit numbers switch stacked Organized's cut circuits with its own copy of the old rule (every row's first circuit, then every row's second, ...), so a row cut at a different width from the rows around it, like a bottom row of half-height cabinets that fits twice as many to a circuit, wove its numbers through stacks it doesn't sit under. Each cut circuit now carries where its first cabinet sits along its row, counted from the pattern's start side, and the numbers go through the data side's _stackSplitRuns, so both follow one rule: a circuit numbers inside the stack its first cabinet sits under. Walls whose rows all cut alike number exactly as before, and Across is unchanged. The splitter packing keeps reading each piece by its place along its row, so no cabinet changes circuit and no 2fer or 3fer changes; only the numbers move. Tests cover power Down on the 85 x 5 half-row shape from every corner, a differently cut top row, the vertical mirror, sharing with splitters, and Across and Down from right and bottom start corners on both data and power, plus SCR export parity for the right-start data cases.
Each unit's own documents now drive its copy OPTs, quoted in its catalog entry: - VX400 Pro, VX600 Pro, VX1000 Pro (OPT 2) and VX2000 Pro (OPT 3/4): the VX Pro Series User Manual's Table 5-7 sets the OPT working mode to Copy or Backup for the unit, so they gain Copy and Backup modes like the H_4xfiber. Backup is the default and reads the old "default" mode. - MCTRL660 Pro: "OPT2 is the backup input or output port of OPT1" (Specifications V1.4.1 p.4), so copyTrunks backup. - MCTRL R5 and MCTRL4K: their sheets say copy channel / duplicate channel and their product pages say backup, so each box on a copy OPT picks Mirror or Backup, Backup by default, like the NovaPro UHD. - MX30 and MX20: "OPT 2 is the copy channel of OPT 1" and nothing says backup, so the box there feeds a mirror screen. The port counts are unchanged, a box on a primary OPT still comes alone, and boxes on different OPT shapes stay unbound. The VX400, VX600 and VX1000 keep no box on the OPT that copies.
When a wall shrinks (columns or rows, typed, by Size by Wall Dimensions or through its group), every drawn data port drops the cabinets that fell off the wall. A port left with none is removed and the later ports close up the way Redraw ports as one closes them: one shared close-up (_closeUpPorts) moves the overrides, the active port and the typed port names, and the card pins follow through /api/port-assignments/merge. The trim runs inside updateLayers, so it rides the shrink's own PUT and undo step; pins the server moves afterwards are carried into the undo steps taken since. A show saved in that state is repaired when it is opened (File > Open and Recent Files), where an override held with nothing drawn goes too. Redraw ports as one counts only cabinets on the wall, and refuses up front, with the "is full" toast's figures, picks that hold more than one port takes. In the Data view an Alt+press now arms the same two gestures as in Power: dragged past the threshold it picks every port it crosses into the Shift picks; released inside it, it is the Alt+click that redraws one port. Shortcuts sheet, an Advanced Guide step and the tour snapshots follow.
Custom power screens hid the Circuit numbers switch once a circuit was drawn, and the custom Apply Pattern numbered the circuits it cuts from long rows along the rows whatever the switch said. Data's custom fill already followed Port numbers. The switch now shows on a custom power screen wherever Apply Pattern would cut a line (asked in a horizontal and a vertical pattern, the way the data side asks), and not with Maximize Power Use. With Down picked (Across on a vertical pattern), the fill numbers its cut circuits down the stacks through _stackSplitRuns, the rule the data fill and the automatic walk share, so a half-height bottom row's circuit takes the number right after the stack its first panel sits under. One helper, powerNumbersStack, now answers this for the automatic walk and the custom fill alike. The sharing fill numbers the same way. Its cut pieces never share, so only their numbers move among themselves; every 2fer and 3fer keeps its runs and numbers. As on the data side, circuits already drawn keep their numbers when the switch changes. Tests: the owner's 85 x 5 half-row shape from every horizontal corner, Across and never-switched screens unchanged, the vertical mirror, a sharing fill with a 2fer, the switch on custom screens, and drawn circuits kept.
# Conflicts: # src/VERSION.txt
# Conflicts: # src/VERSION.txt
A box set to Backup on a copy OPT whose OPTs differ from its primary's (a CVT4K-S on OPT 5-6 behind two CVT10s, CVT10s on OPT 5 and 6 behind a CVT4K-S) now maps each socket to the primary port it backs up. The tray draws the sockets as loop rows in each primary's strip, numbered with the ports they back up; the box cable sheet, its settings, the fiber section and the binder's Breakout boxes table say the same. A backup box no longer adds ports to its card (36 read 32 on an enhanced H_4xfiber).
The VX1000's own sheet (Specifications V1.6.0 p.7, Optical Fiber Ports) reads "OPT | 2 | 10G optical fiber ports" and "OPT 2: For output only, with copy and backup modes", and the owner turned OPT 2 on (2026-11-02). - Catalog: trunks 2, with Copy and Backup modes for the whole unit in the VX Pros' shape, Backup the default and reading the old "default" mode. The port count stays 10. The modesNote quotes the sheet. - Tests: the VX1000 joins the copy/backup shapes (either order, the Data tray loop, Copy's mirror, the mode switch, the pull sheet, the count) and COPY_SOURCES. The 10G roster pins it at 2 trunks; the single-trunk test moves to the VX600, whose OPT 2 still has no stated rate; a second one-OPT CVT4K-S now lands on OPT 2 as the first box's backup.
When a wall shrinks, every drawn power circuit (custom paths, a circuit taken over by hand, a drawing left from a custom spell) drops the cabinets that fell off the wall. A circuit left with none is removed and the other circuits keep their numbers. On a custom screen it comes off its multi the way Unplug circuit takes it off, with its cable, label and share entries, and every other circuit keeps its distro, multi number and tail: the multis are rebuilt from what each held, so the box grid cannot slide a later circuit into an earlier multi. A 2fer or 3fer keeps the legs left on the wall and dissolves only with one leg or none; a circuit whose first leg went is read by its next one, its label and cable following. On an automatic screen an emptied take-over is let go like Return to auto. The pass rides the data trim's hooks (trimPortsOffWall: updateLayers, the load repair, the opening hold, the locked-screen skip, one toast). Data behavior is unchanged. Circuits Required on a custom screen counts the circuits drawn instead of the highest number, so a hole is no circuit.
On a unit with ports of its own (NovaPro UHD and UHD Jr, MX40 Pro in 20-port mode: every product whose catalog mode carries copyTrunks), a port no box on a primary OPT carries is the unit's own port, and a box on the copy OPT set to Backup backs it up, port by port beside any box on a primary OPT. The tray draws those sockets as loop rows under the unit's own ports; set to Mirror the box feeds a mirror of them. The count stays the unit's own. + Box offers each box on a free copy OPT (the add's new trunk field), and the box holds that OPT.
# Conflicts: # src/VERSION.txt
A locked owner keeps its circuits as they are, and the locked error now names the circuit it kept instead of only logging it. A removal on an unlocked screen runs under the locks the unplug gestures run: the repack lock (_repackTrial, a locked member of the owner's group whose packing % the wall shares), then a check of every locked screen's power stores and of its multis' distro, number, circuits and tails. Rebuilding a shared box no longer writes a locked screen's tails to hold them; if the removal would deal them again, everything it wrote is put back and the circuit stays until that screen is unlocked, the next layer save trying again. The error says which locked screen kept which circuit and why, once while the hold lasts. _showLockedError takes a lead sentence and a 'shared' reason, and _repackTrial an optional say callback.
… OPT input Every unit whose catalog mode sources copyTrunks and has Ethernet ports of its own (VX Pros, VX1000, MCTRL660 Pro, MCTRL R5, MCTRL4K, MX30, MX20) is tested: a box on the copy OPT with nothing on the primary backs up or mirrors the unit's own ports by mode or role, the count stays the unit's, the tray draws the loop rows and + Box offers the copy OPT. Backup sockets read the box's own silkscreen; the row header names the ports they carry and the hover, the box sheet and the binder name the port each backs up. A box takes from each OPT only as many ports as it has outputs for one input: a CVT4K-S on two 10-port OPTs carries 1-8 and 11-18, and a CVT10 on an 8-port OPT 8. A box can no longer take a primary OPT and a copy OPT together (a CVT4K-S on OPT 1-2 of a VX1000); + Box offers it on one OPT, and a file carrying one counts only the primary OPT's ports. A box drop fills only that box's own sockets.
Owner, 2026-11-02: a CVT4K-S on OPT 1-2 of a VX1000, whose OPT 2 copies OPT 1, carries that OPT's ports on outputs 1-8 and their backup on 9-16, or a mirror where the OPT mode or the box says Mirror. The add no longer refuses it and + Box offers it whole again. The tray draws outputs 9-16 as the box's own loop row; across a UHD Jr's OPT 2-3 the copy input backs up the box on OPT 1. The count stays the main OPT's ports. A per-box straddle picks Mirror or Backup on its gear and keeps its own sockets' cables.
The owner's rule: a locked screen stays unchanged until unlocked, and any
attempt says why. Unplug circuit and the other gestures that rebuild a
shared box still wrote a locked member's shown tails into its
powerSocaPhasePos (_materializeSocaBox), and a locked member that stored
none was dealt again whenever the box changed under it.
The trim's snapshot-compare-hold is now one shared lock,
_lockedPowerTrial: opened before a gesture's first write, checked before
its commit. When a locked screen's power stores, multi distro, number,
circuits or tails would change, everything the gesture wrote is put back
(_holdPowerRecords) and the locked error names the screen ('shared').
Otherwise the gesture stands and the locked screen is never written:
_materializeSocaBox passes locked screens by. A refusal inside a gesture
made of guarded setters refuses the whole gesture, once. _repackTrial
runs the lock with the repack lock, so the trim, shares, Nfers and the
batch verbs take it; the edit funnel checks locked screens on the
reached screens' distros.
Under the lock: Unplug circuit, Unplug multi, multi distro and number,
the dock's plug, slot, pip and whole-distro drops, Split and Un-split,
Move Circuits and breaker offset, Balance and Reset, splitter shares and
packing, breakout, custom Clear Circuit, Clear All, drawn panels, Apply
Pattern, Return to Auto, distro edits and removal, and panel edits.
Unlocked screens behave exactly as before.
A mirror was checked only when it was made. A later resize of the source or the mirror that kept the port count (columns, cabinet pixels, a blank or half cabinet) was taken silently: the copy kept its runs, the tray said all attached, and putting the size back could leave an old warning up. The screens of a mirror now send their shape (columns x rows, pixels per cabinet, half-tile edges, the blank, hidden and half cabinets, runs that cross onto another screen) with every resolve. It is in the panel's key, so a change to it re-runs the match, and the server checks the shape the person sees rather than a layer save still on its way. No other edit asks the server anything new. When an edit breaks a mirror an error says which screens no longer match and why; the tray keeps the warning until they match again, then the mirror resumes. The mismatch messages read as two sentences, no dash.
The app fits the view 100 ms after its first load reports done, so a view set in that gap was fitted over. In CI a browser module set its zoom right after the load and the fit landed after it: six drags aimed at the far side of the walls missed the canvas. The fit now stands down if the view has moved since the load.
The first strand's own echo could restate the tray while the hand was on its way to the second strand's pick, after the pick was found. The reach found nothing and the step stopped, and in What's New's apply every step after it was left with no show: Put the distro on the service then had no distro. A lost chip or pick is now one more try, up to the step's three.
The drop only compared size and shape, and the first snapshot then wrote the source's data settings over the target, so Screen2's 30 fps quietly became Screen1's 60. A drop that passes every other rule but differs in a setting that makes the port map now says Not allowed on the pill, and its release lists every difference and offers to match the target to the source. One undo takes back the mirror and the matched settings. The rule is in mirror_set_refusal too, in the same words, and holds only where a mirror is set: a mirror already made keeps following its source. Blanks read as the walk reads them, and paths an automatic screen does not walk do not count. The Port numbers order counts only where the switch moves something. The refusal check waits for saves on their way, and the mirror is written on the project's copy of the screen, which a socket echo may have replaced.
…e their mode Remove processor, Remove card and a card swapped in a slot let a mirror go with its source's feed, in the same undo step. Remove box lets it go when the box held the copy's last socket. A setting that leaves the copy nothing to ride keeps the mirror; its tray line now offers Stop mirroring, and the refusal no longer says to unplug a card that isn't there. A source unplugged from a card that left Copy takes its mirror too. A fiber extension names its mode on the pull list, xlsx, binder and box sheet, so single mode and multimode never merge. Edits on the old row follow it. A folded loop of both modes reads both. A Backup box on a screen on the unit's own ports says its backup already rides on it, read from the card's resolution.
…es a tray redraw The ring was measured when an act began and when it ended, so a step whose act adds or scrolls hardware ringed the wrong thing while it played. Mirror a screen sat on another box for its whole drag. The ring now follows the step's target through the act, a target that becomes another element is brought into view, and one the tray scrolls away leaves the ring in place. The box was also past the tray's bottom edge: a rebuild stacked the columns before the snake bracket made its unit taller, so a reveal measured a column 30 px short and the anchor walked the scroll back on every rebuild. The stack now runs again once the brackets are placed. A gesture checks where its element is on arrival and hops to it if the tray moved. Pick the strands failed under a steady redraw because the pick was only a chip swapped for a select, so any rebuild put the chip back, and a rebuild during the press sent the click to a detached chip. An open pick now rides the rebuild, and the release lands on the chip that is there.
The guide puts the show back a beat after Skip, and that restore closed every menu twice, shutting the one a person had just opened. The guide's own menus now go at Skip, and one opened after that is left up.
… test - A page load puts the startup screen only in the pristine project. One left empty and worked on (renamed, a canvas or beach added, a screen added and undone) stays empty through a reload. - The opening fit compares with the view the renderer was built with, so a wheel or pan at any time before it stays put. A launch left alone still fits. - Undo and redo leave the active canvas on the selected screen, on the page and in the restore's PUT, so Raster reads the right canvas. - The press in a list name being edited lets go of the selection first, so the first drag after the double-click selects text in all four kinds of name. - The Screens list takes a canvas dropped under the last block or in a gap between blocks. - Ctrl or Cmd adds a group's header to the selection and Shift ranges to it, as on the screen rows. An emptied selection hides the Names switch. - Delete on the last screen says why nothing happened. - Three Export dialog tooltips read without a spaced hyphen.
… save or reload ends it like Esc An open redraw's hold decides the plan, and only its end moves the cables. The project alone cannot say that, so anything that brought the project back without the session put cables on the wrong circuits. - The undo entry records the redraw it was taken with, so undo and redo open or close it with the project. - Ending a redraw and handing its circuit back are one undo step, here and when another circuit picks up, so no entry holds an empty number with nothing open. - A save writes the open redraw into the file and the show ends it as it opens. A reload does the same from the browser's copy. Opening a show drops any redraw in hand. - A circuit taken over and left as seeded goes back to automatic even when another redraw's end renumbered the walk around it.
A fill from the browser's contacts wrote a name and a phone into fields the person was not in, a multi name in a folded panel among them. One capture listener on the window now refuses a value that neither page script nor the person's typing put there, puts the field back and logs autofill_refused with the field and no value. Every field also gets the no-fill hints as it appears.
The act never checked that IMAG L reached the box. A place request that got no answer resolved all the same, and the drag was then refused as if the gesture were wrong. The step now stops and says what went wrong.
Preferences > Cable stock keeps one Fiber list, feet and meters, and every fiber run of either mode is pulled from it. The mode stays on every cable, row, label and refusal, so single mode and multimode rows never merge. A show or preset saved with a list per mode keeps every length of both, and the old keys are folded away on open, on save and when the presets file is written. A screen with no saved panel name has no panel row on the pull sheet, in the workbook or on the binder's pull pages: no model guessed from its figures and no size in its place, older shows included. The guess and the wait for the library behind it are gone. The Panel field's placeholder is blank with no name saved. Saved names print as before, halves included.
…cs, wiring boxes name their fiber A member's sheet cut the other member off its bitmap, and a wiring sheet's bitmap stopped at the wall, so a disc, 2fer pill or cable tag on the seam printed in half. Each label that reaches the wall now comes back whole from a Power or Data stage pass, the wall framed to keep it on the sheet, with brackets, rulers, outline and rails clear of it. Wiring sheets read a disc's place from the coordinates it was drawn at. A run across members is drawn in the wall's frame, so where a member's Show Look offset is not nil the rings and runs landed that far off. A disc's place is now read through the transform it was painted under. A box on a Data Wiring sheet names each input's cable before its strands, as the data sheet's band does.
The beach name's first drag selected nothing on Linux CI. Chromium loses a drag's start when the press lands close to the middle of a letter and off a whole CSS pixel, in a bare text field too, and Linux's font put the test's press on one. The caret then follows the mouse. The press's place is now kept, and a caret that leaves it while the button is held becomes a selection from there. Any selection the press finds is let go, whole name or one word, so nothing assumes what a double-click left. A drag let go past the end of the name no longer clicks the row under it, which ended a group's rename. The tests sweep the press across the name from each shape of selection, on all four kinds of name and on a scaled screen. An edit a failed assert left open no longer fails the next test: the [0, 7] on CI was that.
…ags keep their rim The cable name made a Data Wiring box's inputs too long for the caption's row: X2 was padded to X1's name and the groups fell to a line each, a taller box. Each cable now takes its own width, and a box holds its groups on the one line under the caption while two such boxes still fit a row. A cable tag or 2fer pill astride a group's seam lost part of its rim past the wall: the rim stands outside the box the label registry notes. The tag now notes its rim and the restore keeps it. The check that nothing but labels comes back read the printed page, so it counted the row ruler's digit, and more of it on Linux. It reads the map's bitmap on the seam's side now. The autofill line in the 1.6.0 notes no longer says paste.
… alike Some boxes put their inputs on the name's row and ran wide with empty paper past the sockets, others put them under the name. Every box now takes the line under the name, side by side, and is only as wide as its sockets, name and that line need. Names too long for one line still take a line per input. This replaces the name's-row layout, so the widening of the far row and the socket slide that went with it are gone.
The entry drops the fixes to code that never shipped in 1.5.3, trims each section to what it does for you and keeps every count change under Opening an older show. The release tests follow the shorter wording, and the Graphite line no longer says panel rows print by size.
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.
LED Raster Designer v1.6.0. The notes are the top entry of
src/VERSION.txt.CI is green on all 12 jobs at 5f7f047 on dev/draft. The full local suite ran for this major release, and the failures from that run passed when rerun on a quiet machine.