Commit Graph

14588 Commits

Author SHA1 Message Date
kolaente
ac853537e9 fix(tasks): make subtask root condition NULL-safe and search-aware
When expanding subtasks, a task was excluded from the roots via NOT over
LEFT-JOINed parent columns. Any filter predicate evaluating to NULL on
the parent row (e.g. due_date <= X with a dateless parent) made the
whole condition NULL, silently dropping the child from the result — it
was neither a root nor nested anywhere. This hit saved filters, list
views with date filters and the gantt view by default.

Rebuild the root condition as a correlated NOT EXISTS subquery, where a
NULL predicate collapses to a clean FALSE, and mirror the free-text
search into the parent predicate so searching for a subtask by title no
longer hides it when its parent does not match the search.
2026-07-15 19:31:14 +02:00
renovate[bot]
524b9289ba fix(deps): update dependency dompurify to v3.4.12 2026-07-15 11:13:06 +00:00
renovate[bot]
294f90093c chore(deps): update dependency postcss to v8.5.17 2026-07-15 10:24:19 +00:00
renovate[bot]
8a3f151f75 chore(deps): update postgres:18 docker digest to b913fd5 2026-07-15 10:11:22 +00:00
kolaente
5742068757 chore(ci): don't report duplicate dependencies 2026-07-15 12:19:41 +02:00
kolaente
dd82549f17 chore(config): disable icon changes by default
We have recieved feedback from enterprise users who found this to be very unprofessional not not worthy of enterprise software. Therefore, we made the difficult decision to disable icon changes by default. We're looking into adding more clues that transport the same message but are less obvious.
2026-07-15 12:19:41 +02:00
renovate[bot]
f013314050 chore(deps): update dev-dependencies 2026-07-15 09:18:23 +00:00
renovate[bot]
742e527c07 fix(deps): update aws-sdk-go-v2 monorepo 2026-07-15 09:16:19 +00:00
renovate[bot]
158582c23d fix(deps): update module github.com/mattn/go-sqlite3 to v1.14.48 2026-07-15 09:16:04 +00:00
renovate[bot]
05ad8049ef chore(deps): update softprops/action-gh-release action to v3.0.2 2026-07-15 09:15:49 +00:00
renovate[bot]
0f451aae73 chore(deps): update danielroe/provenance-action digest to 97ee003 2026-07-15 09:15:36 +00:00
TowyTowy
3af3c04f03 fix(filter): accept non-zero-padded dates in task filters
The manual date fallback in parseTimeFromUserInput parses dates like
2022-11-1, but `year, err :=` shadowed the named err return. On a
successful manual parse the function returned a valid time alongside the
stale error from the earlier failed layout attempts, so filters such as
`due_date = 2022-11-1` were rejected as invalid. Assign to the named
return so success clears the error.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-13 07:50:32 +00:00
renovate[bot]
da9f239d95 chore(deps): update dependency vite to v8.1.4 2026-07-13 07:48:46 +00:00
renovate[bot]
b5a7f68502 fix(deps): update dependency @fortawesome/vue-fontawesome to v3.3.1 2026-07-13 07:48:32 +00:00
renovate[bot]
fc4effa678 fix(deps): update module github.com/yuin/goldmark to v1.8.4 2026-07-12 11:37:03 +00:00
Tink
4425e0d146 fix(attachments): keep blob mime type so pdf previews open inline (#3157) 2026-07-11 18:53:09 +02:00
Tink
b396bad3bb fix(postgres): resolve all statements against the configured schema (#3156) 2026-07-11 18:02:57 +02:00
TowyTowy
efdc675fa7 fix(caldav): compute VTODO DURATION components correctly (#3155) 2026-07-11 17:28:59 +02:00
renovate[bot]
8b4cda2203 chore(deps): update dev-dependencies 2026-07-11 12:21:26 +00:00
renovate[bot]
b6f6ac354a fix(deps): update dependency @sentry/vue to v10.64.0 2026-07-10 19:13:00 +00:00
kolaente
85231284ab feat(auth): add OpenID provider availability monitoring and retry logic (#3145) 2026-07-10 17:52:01 +02:00
Tink
190ff249ab fix(notifications): queue mails only after the notification row is committed (#3150) 2026-07-10 17:50:55 +02:00
renovate[bot]
e992ed594c fix(deps): update tiptap to v3.27.3 2026-07-10 12:52:48 +00:00
renovate[bot]
89133cd074 chore(deps): update actions/stale action to v10.4.0 2026-07-10 12:52:37 +00:00
renovate[bot]
c5f4dde4da chore(deps): update dev-dependencies 2026-07-10 12:52:27 +00:00
renovate[bot]
7c05161a78 chore(deps): update cachix/install-nix-action action to v31.10.7 2026-07-10 12:52:08 +00:00
kolaente
0b70fb2658 fix(cli): drain the mail queue before user commands exit
Mail sending is asynchronous: SendMail only enqueues the message and a
background daemon goroutine performs the actual SMTP delivery. CLI
commands exited as soon as their run function returned, killing the
daemon before the handshake completed, so `user reset-password`,
`user delete` and `user create` reported success without ever
sending their mail.

Add mail.StopMailDaemon which closes the queue and blocks until the
daemon has delivered all remaining messages (with a timeout so a broken
SMTP server can't hang the CLI), and call it from a PersistentPostRun
hook on the user command. The web server's non-blocking behavior is
unchanged.
2026-07-09 17:05:21 +00:00
renovate[bot]
bf820f29bb fix(deps): update module github.com/coreos/go-oidc/v3 to v3.20.0 2026-07-09 17:01:35 +00:00
renovate[bot]
d5f9317d49 fix(deps): update module github.com/wneessen/go-mail to v0.8.1 2026-07-09 16:59:51 +00:00
kolaente
fb55bf2a79 Extract golangci-lint setup into reusable action (#3142) 2026-07-09 15:17:35 +02:00
renovate[bot]
84a4f3e5b4 fix(deps): update module golang.org/x/net to v0.57.0 2026-07-09 11:57:15 +00:00
renovate[bot]
115e30377c fix(deps): update tiptap to v3.27.2 2026-07-09 11:56:03 +00:00
renovate[bot]
f0d2a0ed17 fix(deps): update module golang.org/x/term to v0.45.0 2026-07-09 11:54:49 +00:00
renovate[bot]
b4d2c28624 chore(deps): update dependency undici@6 to v8.7.0 2026-07-09 13:18:22 +02:00
renovate[bot]
e503090f8a fix(deps): update aws-sdk-go-v2 monorepo 2026-07-09 13:15:59 +02:00
renovate[bot]
050d4a881f fix(deps): update module golang.org/x/image to v0.44.0 2026-07-09 13:15:43 +02:00
renovate[bot]
fb79de94d5 chore(deps): update postgres:18 docker digest to 22c89fe 2026-07-08 17:34:31 +00:00
renovate[bot]
407c37a1f5 fix(deps): update module golang.org/x/sync to v0.22.0 2026-07-08 17:34:16 +00:00
renovate[bot]
26cef62e61 fix(deps): update module golang.org/x/sys to v0.47.0 2026-07-08 13:15:37 +00:00
renovate[bot]
f933774195 chore(deps): update dependency undici@7 to v8.7.0 2026-07-08 12:39:43 +00:00
renovate[bot]
58b2e68981 chore(deps): update postgres:18 docker digest to 3111367 2026-07-08 12:39:10 +00:00
renovate[bot]
2d3e8d48ba chore(deps): update dependency go to v1.26.5 2026-07-08 12:38:52 +00:00
renovate[bot]
33666d8fdc chore(deps): update danielroe/provenance-action digest to da28a90 2026-07-08 12:38:15 +00:00
renovate[bot]
9386141912 chore(deps): update ghcr.io/techknowlogick/xgo:go-1.26.x docker digest to b00957d 2026-07-08 07:32:16 +00:00
renovate[bot]
10d780f5cd chore(deps): update pnpm to v11.10.0 2026-07-08 07:32:05 +00:00
renovate[bot]
82ca2a970a fix(deps): update module code.dny.dev/ssrf to v0.3.0 2026-07-08 07:31:51 +00:00
Frederick [Bot]
c529ca0fc3 chore(i18n): update translations via Crowdin 2026-07-08 00:23:08 +00:00
kallegrens
82ee780161 feat(caldav): implement RFC 6578 sync-collection REPORT to sync task deletions
iOS Reminders (and other RFC 6578 clients) never learned about tasks
deleted on the Vikunja side: caldav-go answers unknown REPORT types
with 412, which makes iOS silently stop syncing, and deleted tasks left
no protocol-level trace a client could observe.

Intercept sync-collection REPORTs before caldav-go sees them and answer
per RFC 6578: tasks changed since the sync token as 200 entries and
deleted tasks as 404 entries. Deletion records come from task
soft-deletes, which are kept for 30 days before being purged.

Token edge cases: delta comparisons are inclusive because tokens have
second granularity (re-reported items keep their etag, so clients skip
the download), and tokens older than the soft-delete retention answer
403 + valid-sync-token to force a full resync instead of a delta that
would silently miss purged deletions.
2026-07-07 11:57:04 +00:00
kolaente
c85a56511b fix(tasks): bump project and task updated times when task sub-entities change
Relations, comments, attachments, assignees (via the shared listener)
and label add/remove now advance the project's updated timestamp, and
label changes also advance the task's, so CalDAV ctags and
sync-collection deltas reflect every change that is visible in a VTODO.
2026-07-07 11:57:04 +00:00
kallegrens
c8f136a11b feat(caldav): emit STATUS:NEEDS-ACTION for incomplete todos
Some clients, iOS Reminders among them, classify VTODOs more reliably
when the status is explicit instead of implied by a missing
STATUS:COMPLETED.
2026-07-07 11:57:04 +00:00