From 1f957b7630629943b3ee65e70929d4add7167bdd Mon Sep 17 00:00:00 2001 From: Me Here Date: Mon, 25 May 2026 09:05:34 -0500 Subject: [PATCH] Update README: fix stale claims found in code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Drop the false "vendored QR library" line; state it's a single self-contained, zero-dependency file and document offline use. - Fix keyboard shortcuts to match the in-app help: remove the non-existent R toggle, add Alt+↑/↓ (reorder), 1–9 toggles a lane. - "GM drum voice" → synthesized; set-list items load on click (no ▶ auto-start); QR is an external service; clarify release.sh. Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 1da7360..240fd86 100644 --- a/README.md +++ b/README.md @@ -7,21 +7,28 @@ pattern. Layering lanes produces polymeter and true ratio polyrhythm. **Live:** https://metronome.varasys.io -It's a single page (`index.html`) plus a vendored QR library — no build step, -no framework. State (presets, set lists, practice log, theme) lives in -`localStorage`. +It's a single, self‑contained `index.html` — **zero dependencies**: no framework, +no build step, no bundled or CDN libraries, and nothing fetched at runtime. State +(set lists, the practice log, theme and UI preferences) lives in `localStorage`. + +Because nothing loads from the network, you can save the page (`Ctrl`/`⌘`+`S`) and +open it straight from disk to run fully offline. One catch from a local `file://`: +the browser may not persist `localStorage` between sessions, so use **Export all** +(set‑list **⋯** menu) to back up your work. ## Features -- **Meter lanes** — grouping (odd meters), subdivision, GM drum voice, per‑beat +- **Meter lanes** — grouping (odd meters), subdivision, a synthesized drum/percussion voice, per‑beat on/off pattern (rests), mute, live measure counter. - **Polyrhythm** — a per‑lane *poly* toggle fits a lane's beats evenly into lane 1's bar (e.g. 5‑over‑4, 3‑over‑2). - **Practice** — gap/mute trainer (play N / mute M bars) and a tempo ramp with a start BPM and signed step. -- **Set lists** — named, ordered lists of saved setups; ▶ loads + starts an item, - **N** advances; each play is logged for cross‑day comparison. -- **Sharing** — copy a link (with QR) to your current settings or a whole set list. +- **Set lists** — named, ordered lists of saved setups; click an item to load it + (it switches live if you're already playing), **N** loads the next; each play is + logged for cross‑day comparison. +- **Sharing** — copy a link to your current settings or a whole set list (with an + optional QR generated by an external service). - **Theming** — System / Light / Dark. ## The share language @@ -99,21 +106,24 @@ In the set‑list panel's **⋯** menu: - **QR ↗** opens a third‑party QR service (api.qrserver.com) with the link in its URL so you can scan it on a phone. A banner warns you it's external — confirm the QR decodes to the shown link before trusting it. (No QR is generated locally.) -- **Export all / Import file** back up presets + set lists + logs as a JSON file. +- **Export all / Import file** back up your set lists and practice log as a JSON + file (a legacy `presets` field is included for backward compatibility). ## Keyboard shortcuts | Key | Action | |-----|--------| -| `Space` | play / stop (except while typing in a text field) | +| `Space` | play / stop (works everywhere except while typing in a text field) | | `T` | tap tempo | | `↑` / `↓` | tempo ±1 (`Shift` = ±10) | | `A` | add meter lane | -| `1`–`9` | mute lane N | -| `R` | toggle the set‑list panel | -| `N` | next set‑list item | +| `N` | load next set‑list item | +| `Alt`+`↑` / `Alt`+`↓` | reorder the selected set‑list item | +| `1`–`9` | enable / silence lane 1–9 | | `?` | shortcuts help | -| `Esc` | close dialog / panel | +| `Esc` | close the help / share dialog | + +(Arrow keys are left alone while a slider or dropdown is focused, so they still adjust it.) ## Versioning @@ -122,8 +132,9 @@ In the set‑list panel's **⋯** menu: - **Formal** — a clean commit tagged `v` → `X.Y.Z`. - **Dev** — anything else → `X.Y.Z-dev..[.dirty]`. -Cut a release with `./release.sh [X.Y.Z]` (bumps `VERSION` + tags `v`), -then push the tag and deploy. +Cut a release with `./release.sh [X.Y.Z]` — the optional arg bumps & commits +`VERSION`; it then tags the current commit `v` (requires a clean tree). +Push the tag, then deploy. ## Deploy