# Plan: add PR 8b, bind only what the window needs Branch: `plan-bound-surface` → `main` ## What changed `docs/review-fixes-plan.md` gets a new PR 8b (`bound-surface`), between PR 8 and PR 9, part of 0.5.3. Found while checking PR 5 on `main` (`d66ff0a`): `//wails:ignore` only keeps a method out of the generated bindings. Wails 3.1.0 registers every exported method of the bound `Service` at runtime by reflection, so the window can still call `LoadPath` and `AssignSamplePath` by name with any path. - **Tasks:** move the Go-only methods (`LoadPath`, `AssignSamplePath`, `Dirty`, `SetCloser`, `AudioMiddleware`) to an unbound type that `main.go` uses; add `TestBoundMethods`, which pins the list of bound methods; add `CancelExport()` so a declined replace forgets the export target. - **Done when:** the test passes, a scratch build's `Call.ByName(".../app.Service.LoadPath", path)` is rejected, and the laptop checks pass. - The PR table, the order and the release line now include 8b. No code changes. ## Notes Merge this before the PR 8b agent starts. PR 9 must wait for PR 8b. ## Testing Documentation only. Checked on 2026-11-13: a throwaway build of `main` (`f56cd2d`) whose `main.ts` called `Call.ByName("git.monoexp.com/bajdev/mpckit/internal/app.Service.LoadPath", ".../testdata/device/Demo02.xpj")` loaded the project (the call returned its state). Nothing from that build was committed.