What's Changed
- fix(tasks): stop infinite /api/areas requests on task detail page by @chrisvel in #1244
- fix(migrations): guard area_id column/index creation against duplicate on clean install by @chrisvel in #1245
- fix(projects): prevent scroll reset when modal is closed by @chrisvel in #1248
- fix(kanban/eisenhower): prevent recurring tasks from being renamed on drag and drop by @chrisvel in #1249
- fix(docker): move volume mount points from /app/backend/db to /app/db by @chrisvel in #1250
- fix(tasks): prevent subtask deletion on kanban, eisenhower, and undo by @chrisvel in #1252
- fix(calendar): show task titles instead of recurrence frequency labels by @chrisvel in #1253
- fix(migrations): guard goals and people migrations against duplicate columns on clean install by @chrisvel in #1268
- fix(docker): preserve data from old mount path and harden startup error handling by @chrisvel in #1269
- fix(sqlite): apply busy_timeout via afterConnect to prevent SQLITE_BUSY on first install by @chrisvel in #1271
- fix(projects): make project status icon interactive on main projects page by @chrisvel in #1272
- fix(rate-limit): suppress ERR_ERL_PERMISSIVE_TRUST_PROXY when TUDUDI_TRUST_PROXY=true by @chrisvel in #1273
- documentation/mcp-integration by @jax0m in #1086
- fix(caldav): fix several issues preventing external CalDAV tasks from being viewed by @chrisvel in #1274
- fix(caldav): align frontend sync direction values with backend model by @chrisvel in #1275
Full Changelog: v1.2.0...v1.2.4