Repository navigation
Releases: SpotlightOn/todo-snake
Releases · SpotlightOn/todo-snake
Release list
v0.3.0
Added
- Nextcloud Tasks sync (
VTODO): one calendar-URL field, browser login (Login Flow v2, SSO/2FA included), calendar created on demand, both directions. - Task fields: status (open / in progress / done), start date, all-day due dates, per-task reminder lead.
- Recurring tasks (daily / weekly / monthly / yearly,
∞in the list); completing one advances to the next occurrence. - Toolbar Sync now (greyed out without an enabled account); periodic sync optional.
- Sync diagnostics: rotating
sync.logand a Test connection button in the account dialog. - Lossless VTODO edits: only owned fields are rewritten, foreign properties are kept.
- Conditional writes (
If-Match) and per-account deletion tracking (UIDs + ETags). - App passwords in the OS keyring, with a
QSettingsfallback. - Attachments (
ATTACH): files per task, stored locally (10 MB cap); uploaded to every enabled Nextcloud account (each server gets its own copy and its ownATTACHURL) and shown as links when they come from another client. A Files column shows the count and the attachment list renders 48×48 previews/type icons. - Sync accounts can be disabled per account (checkbox in the account list) without deleting them; disabled accounts are greyed out and skipped by every sync, manual included.
- Removing an attachment (or deleting a task) also deletes the uploaded file from every Nextcloud account on the next sync. Every sync additionally sweeps the task folders for files nothing references any more, so leftovers from earlier versions clean themselves up.
- Settings → Sync accounts → “Clean up orphaned files…” sweeps the whole attachments folder on demand (after a confirmation).
Changed
- Nextcloud now syncs the Tasks calendar; JSON-file sync moved to the generic WebDAV provider (CalDAV unchanged).
- Dependency: PySide6 6.11.2 (Qt 6.11) is now the minimum and the tested version; 6.12+ is excluded until verified.
- Internal restructure (no behaviour change): the sync cycle moved into a Qt-free engine (
sync/engine.py), the transports share oneDavClient, and the settings/attachment modules were split up. See docs/DEVELOPMENT.md.
Fixed
- Sync failures are visible (red icon, status bar, dialog) and name the account.
- Rejected writes show the server's reason instead of a bare "HTTP 400".
- First sync no longer fails on a missing document (404 = "not created yet").
- Remote edits (incl. due dates) are no longer discarded (
LAST-MODIFIEDvs. our X- timestamp). - Recurring tasks always get a
DTSTARTanchor (an unanchoredRRULEis rejected by the server). - Keyring regression: passwords fall back to
QSettings; a blank field no longer wipes stored credentials. - A trailing
/index.phpin a server URL no longer doubles the path (404).
Full Changelog: v0.2.0...v0.3.0
v0.2.0
What's Changed
- Feature/sync settings by @SpotlightOn in #10
- feat: due date-time and persistent snooze reminders by @SpotlightOn in #11
Full Changelog: v0.1.1...v0.2.0
v0.1.1
What's Changed
- Use Python 3.14 in CI and release builds by @SpotlightOn in #6
- ci: build macOS .app bundles in release workflow by @SpotlightOn in #7
- CI: macOS-13-Runner durch macos-15-intel ersetzen by @SpotlightOn in #8
- chore: Version auf 0.1.1 anheben by @SpotlightOn in #9
Full Changelog: v0.1.0...v0.1.1
v0.1.0
What's Changed
- Feature/single instance guard by @SpotlightOn in #1
- Feature/switch pills i18n by @SpotlightOn in #2
- ci: add lint/test and release workflows (AppImage + Windows exe on tags) by @SpotlightOn in #3
- Fix CI: install Qt system libraries for headless PySide6 tests by @SpotlightOn in #4
Full Changelog: https://github.com/SpotlightOn/todo-snake/commits/v0.1.0