kerfmaster pin list · UI / workflow decisions
recordStates what the code does today. Auditable against the code — this is the only type that can go stale.
Content last changed 2026-09-21 — computed from the item itself, not typed.
His Alt-copy words, verbatim: I want to make sure that we're able to not just move, but also copy a part when looking at multiple nests. This would override the quantity set in the parts list. In Illustrator, when you click the Option button, the cursor automatically becomes A copy the element I select and then I can drag the element that needs to be copied until I release my cursor.
Spec agreed: a copy OVERRIDES the list qty — recorded asked-BESIDE-filled per row, never silent. The hand layout is judged by the pack's own audit (true outlines, larger-governs bridges, lead envelopes), warn never block; saving drops the posted sheet programs per the stale rule with every O-number kept. Cross-sheet drag re-judges both sheets. The true-nest editor (pin manual-nest-editor) is the reference gesture set — one UI language.
BUILT 2026-09-15 (isolation drill-down session (b), Aristide 'Go for 2') -- one gesture system with the isolation pin: double-click a placement on the part-list Nest canvas ISOLATES it (everything else dims, breadcrumb bar, Escape steps out); drag moves it anywhere -- past a sheet edge it slides over the neighbour sheet and the drop moves it to THAT sheet's program; Alt-drag copies exactly per his Illustrator spec (the copy rides the cursor until release) -- a copy OVERRIDES the row qty, recorded asked-beside-filled (hand.qty_overridden), never silent; Delete removes; a typed angle rotates about the part's own centre at ANY angle (a free-angle copy posts honestly -- pl_post.assemble transforms the planned toolpath by the placement's own rotation). All DRAFT until Apply. SERVER POST /api/jobs/<id>/plhand: malformed layout = plain 400 in honest words nothing saved (the nestseq pattern); a good save persists the layout AS the pack report's sheets (one shape for canvas, spread, sequence, post, delivery), stashes the pack's own layout once under packed_sheets, judged WARN NEVER BLOCK -- off-sheet/touching outlines RED, under-gap on sampled TRUE outlines with per-part bridges LARGER GOVERNS yellow (pl_tool.judge_pairs, new engine judge) plus the standing sheet-wide lead judge; saving drops posted programs with every O-number kept and clears a clicked sequence NAMED in the record; a re-pack stows the hand layout under hand_saved -- never lost. Double-click the isolated copy again drills into the part's own job (features live there; the back chip returns). The brick-34 plain-click open door defers 350ms so the drill's first click never navigates away. Proven: test_plhand.py 25 controls + verify_plhand.js 18 live real-mouse checks; pl_seq/part_list/pl_post/pl_spread/pl_deliver/pl_consolidate/pl_tool/isoserver/nestedit/sheetsize suites green; verify_iso 15 + verify_plseq 15 re-run green.
Honest limits: rotate/flip is the typed-angle slot on the bar (one-click rotate/flip buttons on his word); a restore door for hand_saved is a later brick (the data survives on the record); dropping a copy onto empty air right of the last sheet does not open a NEW sheet yet.
BAND SELECT JOINS THE HAND EDITOR 2026-09-21 (Aristide: 'seems to me that the rubber banding feature needs to be a global one, right now it is not?', his 'yes, go for it'): the shift-drag rubber band lands on the part-list Nest canvas with NO armed mode (the global-controls principle) -- shift-drag enters the hand editor by itself and band-selects PLACEMENTS by centre-in-rect (the true-nest editor's own anchor arithmetic, plhCenterOf = the drop's sheet re-bucketing centre, one arithmetic); a small shift-drag is a shift-click toggle on one copy. The whole selection acts as one: grabbing any member drags the band rigidly (the toolpath dock stays off -- it magnets ONE part, not a group; each member re-buckets onto the sheet under its own centre on drop), Alt-grab clones EVERY member first (the item-5 Illustrator copy), the bar's rotate buttons/typed angle turn every member about its OWN centre (an orientation change, positions keep), Delete/Remove removes the band whole (highest index first so the splices hold), right-click on a member offers the group items, Escape clears the band before stepping out (a cancelled band drag puts every member back -- tighter than the single drag's cancel), a plain click or grab collapses the band. All draft-only until Apply, exactly like every hand edit; Apply clears the band (indices belong to the pre-save draft). Client-only (app.js), zero server change. Proven verify_plhand 18 -> 27 real-mouse checks + pldock 14, ctxmenu 26, plseq 15, pltabs 24 green (plseq's posting fixture consumed dev O33399 + subs 75431-75432, stated).