Server (schema v2, auto-migrates): every accepted overwrite snapshots the
superseded revision into note_history (capped at 50 per note); new
GET /api/v1/notes/{id}/history endpoint; compact purges orphaned history.
Client: notes get a synced_at stamp on every confirmed server exchange;
an info footer under the editor and a Ctrl/Cmd+I panel show created/
modified/last-synced plus the revision list. Restoring a revision applies
it as a normal edit through the sync path, so rollback is non-destructive.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Single-runner workflow: test on every push; on v* tags cross-compile tefterd
for all platforms, build the Linux desktop app, and publish a Gitea release
via gitea.com/actions/release-action. Drop the GitHub workflow; document the
runner requirement and manual macOS/Windows desktop builds in the README.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>