# Nextcloud Notes Desktop A fast, cross-platform desktop client for the Nextcloud Notes app, inspired by `dgmid/nextcloud-notes-mac-client` but rebuilt with a modern Electron + React stack. ## Goals - macOS-first desktop experience with Windows/Linux builds available. - Fast startup from a local IndexedDB cache. - Incremental sync using the Nextcloud Notes API `pruneBefore` and chunk cursor support. - No credential persistence in the recovery build: app passwords stay in memory only and must be entered each launch. - ETag-aware updates to avoid overwriting newer server changes. ## Development ```bash npm install npm run dev ``` Use a Nextcloud app password for login. ## Packaging ```bash npm run dist:mac npm run dist:win npm run dist:linux ``` Artifacts are written to `release/`. macOS DMG builds must run on macOS because the DMG toolchain and `dmg-license` dependency are Darwin-only. The `dist:mac` script builds both Intel and Apple Silicon outputs when run on a Mac. ## CI Releases Forgejo Actions builds release artifacts on registered runners. The Linux job uses the existing `ubuntu-latest` runner; the macOS job expects a Forgejo runner registered with the `macos-latest` label so it can build DMG/zip artifacts natively. Push a version tag to publish artifacts to a Forgejo Release: ```bash git tag v0.1.0 git push origin v0.1.0 ``` The workflow can also be run manually from the Actions tab; manual runs upload workflow artifacts but do not create a GitHub Release unless the run is for a `v*` tag. Current Linux outputs: - `release/Nextcloud Notes-0.1.0-linux-x86_64.AppImage` - `release/Nextcloud Notes-0.1.0-linux-amd64.deb` ## Notes API The app uses: - `GET /index.php/apps/notes/api/v1/notes?chunkSize=100&pruneBefore=` - `GET /index.php/apps/notes/api/v1/notes/:id` - `POST /index.php/apps/notes/api/v1/notes` - `PUT /index.php/apps/notes/api/v1/notes/:id` with `If-Match` - `DELETE /index.php/apps/notes/api/v1/notes/:id` The sync path handles the API's final pruned ID-only chunk for deletion detection.