Branch: frontend-format → main
PR 11 of the review fixes plan (docs/review-fixes-plan.md), a readability PR: no behaviour change, no version change.
The PR has three commits, so the large mechanical one can be skipped in review:
prettier 3.9.10 (published 2026-10-10) and prettier-plugin-svelte 4.1.1 (2026-06-15). Both are the current releases min-release-age=7 allows, and the lockfile is updated: npm added only these two packages.frontend/.prettierrc: printWidth 120, double quotes, semicolons, trailing commas, and the Svelte plugin. Everything else is Prettier's default, which already matched the code: two-space indents, <script> and <style> content indented, blocks in script–markup–style order.frontend/.prettierignore: dist, bindings and node_modules.format (prettier --write .) and format:check (prettier --check .) in frontend/package.json.npm run format and nothing else, across 11 files, all under frontend/.src, Prettier touched three config files: index.html (<!DOCTYPE html> became <!doctype html>, which HTML treats the same), svelte.config.js (single quotes to double, semicolons added) and tsconfig.json (a trailing comma removed).SequencePanel.svelte's save() and remove() (R3).
s, n, b and l become slot, newName, newBpm and newBars.slot shadows the component's slot prop on purpose: it is copied from seq.slot before the await, because props are live. A comment now says so.Long lines: 30 lines under frontend/src were over 120 characters, the longest 250. Now 5 are, and Prettier cannot break any of them:
| Line | Length | Why Prettier leaves it |
|---|---|---|
src/lib/AboutModal.svelte:28 |
192 | A svelte-ignore comment, which must stay on one line. |
src/lib/SequencePanel.svelte:28 |
159 | A template literal: the "Shorten a sequence with notes?" message. |
src/App.svelte:73 |
143 | A template literal: a pad's screen-reader label. |
src/App.svelte:52 |
124 | A string literal: the "Export is disabled…" tooltip. |
src/App.svelte:236 |
122 | Text with a {st.limits.maxSequences} expression in the sequence grid's hint. |
App.svelte: Prettier wrapped the pads tab's help paragraph ("Click a pad to select and hear it. … Drop a WAV file on any pad to assign it.") onto two lines. In the compiled template, that turns one space into a newline plus indentation inside the text..hint.grid-hint) uses normal whitespace handling, which collapses it back to a single space. The only white-space: pre-line rule in the app is on the error banner.SequencePanel.svelte differs from the reformatted version only in the renamed variables and the two comments.add() in SequencePanel.svelte also uses const s = slot. The plan names only save() and remove(), so I left add() as it is. Say if it should be renamed too.npm run format:check from this PR on.On the server, every command with GOTOOLCHAIN=go1.27.4:
go test ./... passes; no test changed.go vet ./... and staticcheck ./... are clean, and govulncheck ./... reports "No vulnerabilities found."frontend:
npm ci installs from the lockfile ("added 53 packages");npm run check reports 0 errors and 0 warnings;npm run build builds;npm run format:check reports "All matched files use Prettier code style!".wails3 build builds and the app starts under Xvfb.main) and after the last, I ran go run ./cmd/mpckit-cli -load testdata/device/DemoFile.xpj -out <dir>. cmp finds the two DemoFile.xpj identical, and diff -r finds the two data folders identical.TestBoundMethods passes untouched. git diff origin/main shows no change in frontend/bindings, in any Go file, or anywhere outside frontend/.On the laptop (PowerShell, in the repo). Compare each screen with the current main build; nothing should look different.
git fetch; git checkout frontend-formatcd frontend; npm ci; npm run check; npm run format:check; cd ..: 0 errors and 0 warnings; "All matched files use Prettier code style!".wails3 dev, then load testdata\device\DemoFile.xpj. Pads tab: