Clamps are physical fixtures that differ between machines, but one global
clamps.json served every machine, so a plasma table and a fiber laser could
not have different rails.
- MachineConfig.Clamps holds each machine's rail in the machine's units,
edited on a new Clamps tab in Tools > Machine Configuration.
- New and BOM import give a nest the rail of the machine they assign;
Nest > Clamps loads and saves the nest's machine's clamps. Each nest keeps
its own copy, so machine edits never move existing nests' clamps.
- At startup, while no machine has clamps, the legacy clamps.json (or the
server's shared copy) is copied once into the default or only machine;
with several machines and no default the user picks one.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Schema v13 adds shared_settings and shared_setting_revisions behind
/api/settings: one revision-guarded JSON document per kind and key, with
every revision (deletions included) kept with who saved it. Recreating a
deleted document continues its revision count.
OpenNest.Data gains the client (RemoteSharedSettings), a synchronous store
that keeps the last copy read for offline use and refuses writes while the
server is unreachable (SharedSettingsStore), a machine provider over it, and
JSON parse/serialize entry points for clamp settings and nest defaults.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>