Branch: m8-load-guard-rails → main
Load itself, the unsaved-changes prompt on New and Load, the overwrite confirmation and Go's error messages for bad WAVs and limits came in M5–M7. This PR adds the rest of M8 and the checklist for device checkpoint B.
_[ProjectData] folder, and a sample assigned from elsewhere can be moved or deleted later. The state now says, per pad, where the sample comes from and whether that file still exists.
missing (in red) on such pads.close event. The app asks "Close without exporting?"; Close discards the changes and quits, Cancel stays. Without unsaved changes the window closes straight away.docs/checkpoint-b.md, linked from the build plan). Five projects (MpckitB1–B5), each made from DemoFile in the app: no changes, moving a pad with notes, copying across banks and swapping pads with notes, removing the current sequence and adding one in bank B, and shortening a sequence with notes. Each lists what to listen for, plus an empty results table. It also covers open question 7 (currentSequence) and B5 (notes past a new end).CloseWindow for the frontend. Dirty and SetCloser are for main.go only and kept out of the bindings.On the server: go vet and go test ./... pass. New tests:
CloseWindow calls the closer, and Dirty follows edits.The frontend is untested here (no Node). On the laptop:
npm run check in frontend: 0 errors, 0 warnings.DemoFile.xpj and its DemoFile_[ProjectData] folder somewhere, delete 80s-Snr-Dreamer SA.wav from the copy, and Load it. A02 shows missing, the footer says 1 sample file missing, A02's panel shows the path, and Play is disabled. Export reports the missing file. Replace A02 with any WAV: the warning goes and export works.docs/checkpoint-b.md, try them on the device, and send me the results. I'll record them in the format doc and build plan.