What's Changed
- feat(pwa): installable PWA with offline read and queued write sync by @chrisvel in #1343
- feat(tasks): subtasks as first-class tasks with list visibility by @chrisvel in #1346
- fix(caldav): align sync direction values with model constraints by @chrisvel in #1347
- feat(inbox): multiline capture with autogrow textarea by @chrisvel in #1351
- feat(goals): full goals UX overhaul with area integration by @chrisvel in #1354
- fix(ai-assistant): use json_schema response format for Anthropic compatibility by @chrisvel in #1355
- feat(goals): add color support for goals by @chrisvel in #1357
- feat(ux): sidebar sections collapse by default; AI brief respects profile setting by @chrisvel in #1358
- refactor(sidebar): UI refinements across all sidebar sections by @chrisvel in #1359
- feat(inbox): gate clarify feature behind ENABLE_INBOX_CLARIFY flag by @chrisvel in #1364
- fix(auth): prevent password loss during migration and improve error messages for NULL password_digest by @chrisvel in #1365
- fix(profile): correctly report has_password for OIDC users by @chrisvel in #1366
- build(deps-dev): bump brace-expansion from 1.1.15 to 1.1.18 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #1362
- fix(habits): respect frequency period for completion state and streaks by @chrisvel in #1368
- build(deps): bump the npm_and_yarn group across 1 directory with 3 updates by @dependabot[bot] in #1367
- fix(ai): return 503 AI_NOT_CONFIGURED instead of opaque 500 when LLM key is missing by @chrisvel in #1370
- fix(inbox): reject empty content via MCP and surface blank inbox items by @chrisvel in #1378
- build(deps): bump react-router from 7.18.1 to 7.18.2 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #1376
- Add root .env.example for docker-compose, expand CLAUDE.md by @KeplerAeroIT in #1373
- Fix AI Assistant empty results with reasoning models (configurable max_tokens + content fallback) by @KeplerAeroIT in #1377
- Add docker-compose.dev.yml to build from local source by @KeplerAeroIT in #1379
- fix(tasks, caldav): make "ghost tasks" deletable and stop them coming back by @chrisvel in #1372
- fix(caldav): eager load task associations so tags and parent links reach clients by @sonsay in #1348
- build(deps): bump the npm_and_yarn group across 1 directory with 2 updates by @dependabot[bot] in #1381
- Remove legacy GitHub Pages landing site by @chrisvel in #1386
New Contributors
- @KeplerAeroIT made their first contribution in #1373
- @sonsay made their first contribution in #1348
Full Changelog: v1.3.1...v1.4.0