2.2 KiB
2.2 KiB
TODO
Done
- Device detection proof of concept (File System Access API)
- Serial prefix → model mapping (verified against official Kobo help page)
- Architecture planning (updated: fully client-side, no PHP backend)
- Installed Go via Homebrew (v1.26.1)
- Verified all kobopatch tests pass natively
- Verified all kobopatch tests pass under
GOOS=js GOARCH=wasm(via Node.js) - Updated device identification doc with correct model list
- Removed obsolete backend-api.md
- Created
kobopatch-wasm/with setup.sh, build.sh, go.mod, main.go - WASM wrapper compiles successfully (9.9MB)
- All kobopatch tests still pass with our module's replace directives
- Cleaned up .gitignore
In Progress
Integration Testing
- Test WASM binary in actual browser (load wasm_exec.js + kobopatch.wasm)
- Test
patchFirmware()JS function end-to-end with real firmware zip + patches
Frontend - Patch UI
- YAML parsing in JS (extract patch names, descriptions, enabled, PatchGroup)
patch-ui.js— render grouped toggles per target file- PatchGroup mutual exclusion (radio buttons)
- Generate kobopatch.yaml config string from UI state
Frontend - Build Flow
- User provides firmware zip (file input / drag-and-drop)
- Load WASM, call
patchFirmware()with config + firmware + patch files - Receive KoboRoot.tgz blob, write to
.kobo/via File System Access API - Fallback: download KoboRoot.tgz manually
- Bundle patch YAML files as static assets
Future / Polish
- Run WASM patching in a Web Worker (avoid blocking UI)
- Browser compatibility warning with detail
- Loading/progress states during build
- Error handling for common failure modes
- Host as static site (GitHub Pages / Netlify)
- NickelMenu install/uninstall support (bonus feature)
Architecture Change Log
- Switched from PHP backend to fully client-side WASM. Reason: avoid storing Kobo firmware files on a server (legal risk). The user provides their own firmware zip. kobopatch runs as WASM in the browser. No server needed — can be a static site.