diff --git a/README.md b/README.md index 37b6fb1..c28db2d 100644 --- a/README.md +++ b/README.md @@ -4,37 +4,63 @@ Annotate keyboard key presses on a video timeline and preview/export mechanical Keyboard sounds are sourced from [kbsim](https://github.com/tplai/kbsim) (MIT license) — recorded press and release samples with per-key variation. +sfxkeeb is a **Wails v3 desktop app** (Go shell + Svelte frontend). Native file dialogs are used for opening videos/projects and saving exports. + ## Requirements -- Node.js 18+ and npm +- **Go** 1.22+ +- **Wails v3 CLI**: `go install github.com/wailsapp/wails/v3/cmd/wails3@latest` +- **Node.js** 18+ and npm - **git** (to fetch kbsim sample assets) +### Platform tooling + +| Platform | Additional requirements | +| -------- | ----------------------- | +| macOS | Xcode Command Line Tools | +| Windows | [WebView2 runtime](https://developer.microsoft.com/en-us/microsoft-edge/webview2/) (usually pre-installed on Windows 11); build tools for `wails3 task build` | + ## Setup ```bash # Frontend dependencies cd frontend && npm install + +# Download kbsim switch samples (~151 MP3 files) +cd .. && ./scripts/fetch_kbsim_samples.sh ``` ## Development -```bash -cd frontend && npm run dev -``` - -Open http://localhost:5173 - -## Production +From the repository root: ```bash -cd frontend && npm run build && npm run preview +wails3 dev ``` -Or serve `frontend/dist` with any static file host. +This builds the Go backend, starts the Vite dev server, and opens the desktop window. File I/O uses native dialogs via Wails bindings. + +For frontend-only work (no Wails bindings), you can still run `cd frontend && npm run dev`, but open/save dialogs will not function outside the Wails shell. + +## Production build + +From the repository root: + +```bash +wails3 task build +``` + +The compiled binary is written to `bin/sfxkeeb`. On macOS, package a `.app` bundle with: + +```bash +wails3 task package +``` + +Build on each target platform (macOS for `.app`, Windows for `.exe`). Windows users need the WebView2 runtime installed. ## Usage -1. **Open Video** — load an MP4 file +1. **Open Video** — pick an MP4 (or other supported video) via native file dialog 2. Press keys while the playhead is at the desired time to add markers (works while playing or paused) - Press sound plays on keydown; release sound plays on keyup - Each physical key maps to a stable press variant (same key always sounds the same) @@ -42,7 +68,7 @@ Or serve `frontend/dist` with any static file host. 4. Choose a mechanical switch sound from the dropdown (13 kbsim profiles) 5. Adjust preview speed (25–200%) for fast-paced content — preview only; export is always at 1× 6. **Save Project** / **Open Project** — JSON with version, markers, and switch setting (no video path) -7. **Export Audio** — download a WAV file of keyboard sounds only, full video length (rendered client-side) +7. **Export Audio** — save a WAV file of keyboard sounds only, full video length (rendered client-side) ### Keyboard shortcuts