This repo is a small Electron app for working with ABC notation.
- ORIENTATION.md — what to read, invariants, debug workflow, branch/push etiquette.
- Install deps:
npm install - Run app:
npm start
src/main/Electron main process (window, IPC, menu).src/preload.jsPreload bridge for renderer IPC.src/renderer/UI (HTML/CSS/JS).third_party/External tooling for import/export.
- Prefer tolerant-read / strict-write behavior: it should be easy to scan/search, and hard to corrupt user data.
- File writes must be safe: use atomic replace where possible (write temp + rename), with retries for platform quirks.
- Avoid “clever” abstractions. Keep state ownership clear (single source of truth) and changes auditable.
- Throttle UI progress updates; do not spam the renderer with high-frequency status events.
- Keep changes small and focused; avoid introducing new dependencies unless needed.
- Prefer plain JavaScript and simple utilities over abstractions.
- Maintain existing menu action strings and IPC message names.
- Python 3 on PATH for
third_party/abc2xml/abc2xml.pyandthird_party/xml2abc/xml2abc.py. abc2abcbinary from abcMIDI on PATH forabc2abctransforms.
- No automated tests are set up; validate changes by running the app.
- When changing file operations (rename/move/write), test with:
- read-only file / permission errors
- file modified on disk between index and write
- paths with spaces and non-ASCII characters
For day-to-day commands (dev + release), “what we commit”, and important debug flags, see: