Commit Graph

479 Commits

Author SHA1 Message Date
Konrad M. d3710c5276 docs(changelog): add Unreleased section and sync upstream entries up to v0.22.2 2026-04-21 22:18:14 +02:00
Konrad M. 1e438af5a7 fix(modal): fix sheet swipe tap-cancel and modal close race condition on iOS
Sheet swipe: add 10 px dead zone before transform, reset via rAF in touchend
so iOS WebKit does not cancel subsequent click events on child buttons.

Modal close: capture active overlay before animation to prevent race where
_doClose() removes the new modal instead of the old one when a confirm dialog
opens immediately after another modal closes (delete button not responding).
2026-04-21 22:17:28 +02:00
Ulas Kalayci 6416bbf245 chore(release): v0.22.3
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 20:23:59 +02:00
ulsklyc 4bc43b2141 Merge pull request #76 from baragoon/dev
fix(docs): update setup commands formatting for better readability
2026-04-21 20:22:48 +02:00
Serhiy Bobrov e8e4a63898 fix(docs): update setup commands formatting for better readability 2026-04-21 19:20:47 +03:00
Ulas Kalayci 9f321851f8 chore: release v0.22.2
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 17:23:30 +02:00
Ulas Kalayci 40252ee0dc fix(sw): bump cache versions, add recipes to pre-cache, guard init IIFE
Resolves #72

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 15:41:46 +02:00
Ulas Kalayci a253f0a7fa chore: release v0.22.0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 14:23:53 +02:00
Serhiy Bobrov 0b54fe255b feat: add recipes module with CRUD functionality and integrate with meals
- Implemented new recipes page with UI for managing recipes.
- Added REST API routes for recipes including create, read, update, and delete operations.
- Introduced database schema for recipes and recipe ingredients.
- Updated meals to link with recipes, allowing meals to reference specific recipes.
- Enhanced validation for recipe-related fields in meals.
- Added styles for the recipes page and components.
2026-04-21 14:15:39 +02:00
Ulas Kalayci 41467a84b6 chore: release v0.21.1
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 14:03:33 +02:00
Ulas Kalayci b40f47bc8b chore: release v0.21.0
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-21 13:24:38 +02:00
Ulas Kalayci 196e8a7d17 chore: add installer files to .dockerignore and update docs
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-21 13:23:51 +02:00
Ulas Kalayci 7795a737c5 feat(installer): add web-based installer server and UI
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-21 13:23:06 +02:00
Ulas Kalayci 1ef4783902 feat(installer): add CLI install script
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-21 13:13:46 +02:00
Ulas Kalayci 7b663e08d4 chore: release v0.20.43
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-21 13:10:47 +02:00
Ulas Kalayci e4b97368fb feat(api): add first-run setup endpoint for admin bootstrap
POST /api/v1/auth/setup — unauthenticated, only succeeds when the
users table is empty. Enables first-admin creation via HTTP for
Docker deployments without shell access to the container volume.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-21 13:10:41 +02:00
Ulas Kalayci 143582458e docs(installer): add reconnaissance findings and implementation plan 2026-04-21 12:49:45 +02:00
Ulas Kalayci 8f55855364 chore: release v0.20.42 2026-04-21 10:38:45 +02:00
ulsklyc d1ec7367a0 fix(auth): resolve post-login navigate race condition and add version display (#68) (#70)
Root cause: when auth.me() failed during initial navigation, the catch block
called navigate('/login') without clearing _pendingLoginRedirect. The outer
finally then fired a second concurrent navigate('/login'), which held
isNavigating=true while running. If the user submitted the login form (or
iCloud Keychain autofilled credentials) before the second navigation
completed, navigate('/', user) was silently blocked by the isNavigating guard —
login appeared to succeed but the app never advanced to the dashboard.

Fix: clear _pendingLoginRedirect in the catch block so the finally handler
does not spawn the duplicate navigation.

Also adds a GET /api/v1/version endpoint (no auth required) and shows the
version on the login page, so users can verify their PWA has received the
latest cached JS.

Resolves #68

Co-authored-by: Ulas Kalayci <ulas.kalayci@googlemail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 08:19:53 +02:00
Ulas Kalayci c1bdd4361d chore: release v0.20.40 2026-04-21 06:55:52 +02:00
Ulas Kalayci a8a50d31c5 chore: release v0.20.39 2026-04-21 06:52:52 +02:00
Ulas Kalayci 1570703f47 chore: release v0.20.38 2026-04-21 00:07:12 +02:00
Ulas Kalayci 1859d6a55b fix(calendar): use dedicated resetToast key, explicit user_modified === 1 check 2026-04-21 00:06:53 +02:00
Ulas Kalayci 4aa8eefb51 feat(calendar): show reset link for user-modified ICS events in event popup 2026-04-21 00:04:29 +02:00
Ulas Kalayci 55cac140ef fix(settings): move ICS card below Apple Calendar, fix toast messages, use syncing key 2026-04-21 00:03:14 +02:00
Ulas Kalayci 4f10f334fb feat(settings): add ICS subscription management UI and i18n keys 2026-04-21 00:00:33 +02:00
Ulas Kalayci 21f1a382c8 feat(i18n): add ICS subscription locale keys 2026-04-20 23:58:35 +02:00
Ulas Kalayci 3cd5f31c0d fix(calendar): NaN guard on subscription IDs, user_modified for all external sources 2026-04-20 23:57:15 +02:00
Ulas Kalayci ed0618cf75 fix(calendar): apply ICS visibility filter to /upcoming endpoint 2026-04-20 23:55:20 +02:00
Ulas Kalayci 466860074a feat(calendar): add ICS subscription routes and sync integration
- Add CRUD routes for /subscriptions (GET, POST, PATCH, DELETE)
- Add manual sync trigger: POST /subscriptions/:id/sync
- Add ICS visibility filter to GET /calendar (private vs. shared)
- Set user_modified=1 on PUT /:id for ICS events
- Add POST /:id/reset to clear user_modified on ICS events
- Wire icsSubscription.sync() into runSync() in server/index.js
2026-04-20 23:53:53 +02:00
Ulas Kalayci 3445e504a2 fix(ics): add color to ON CONFLICT DO UPDATE and per-iteration try/catch in sync loop 2026-04-20 23:46:06 +02:00
Ulas Kalayci 4d585fb288 fix(calendar): extend SSRF guard to cover fd00::/8 IPv6 ULA range 2026-04-20 23:40:38 +02:00
Ulas Kalayci 8559f98518 chore: release v0.20.37 2026-04-20 23:39:00 +02:00
Ulas Kalayci 7f1a199e33 feat(calendar): add ICS subscription service (fetchAndParse, sync, CRUD) 2026-04-20 23:38:46 +02:00
Ulas Kalayci a4250b46ab fix(calendar): add IF NOT EXISTS to idx_calendar_sub_extid unique index 2026-04-20 23:36:48 +02:00
Ulas Kalayci 8e042ad932 fix(calendar): add missing idx_calendar_sub to db-schema-test MIGRATIONS_SQL[11] 2026-04-20 23:34:41 +02:00
Ulas Kalayci a64635b669 feat(calendar): add ics_subscriptions table and calendar_events columns (migrations v10-v11) 2026-04-20 23:32:42 +02:00
Ulas Kalayci 8479072afd refactor(calendar): fix ics-parser module header and test chain consistency 2026-04-20 23:29:28 +02:00
Ulas Kalayci 583a1bdf23 refactor(calendar): extract ICS parser into shared ics-parser.js module 2026-04-20 23:25:50 +02:00
Ulas Kalayci faa3c0159b docs: add ICS subscription implementation plan 2026-04-20 23:18:00 +02:00
Ulas Kalayci 2419efbeaf docs: add reviewed ICS subscription v2 spec 2026-04-20 23:06:44 +02:00
Ulas Kalayci 0b8c0213a1 docs: fix ambiguities in ICS subscription spec 2026-04-20 22:53:34 +02:00
Ulas Kalayci a68b02ca04 docs: add ICS subscription design spec 2026-04-20 22:53:08 +02:00
ulsklyc 9ad1165d48 fix(auth): skip auth:expired dispatch for 401 on /auth/login (#69)
On Safari/iOS PWA cold start or after cookie clear, logging in with wrong
credentials triggered auth:expired, re-rendering the login page and losing
the error message. The login endpoint returns 401 for invalid credentials,
not for session expiry, so apiFetch must not fire auth:expired in that path.

Resolves #68

Co-authored-by: Ulas Kalayci <ulas.kalayci@googlemail.com>
2026-04-20 21:37:29 +02:00
Ulas Kalayci 554024b67c chore: release v0.20.33
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 13:12:43 +02:00
ulsklyc c6e5d3cb4f Fix Min/Max Temperature Aggregation for Forecast in Weather Widget (#67)
Fix Min/Max Temperature Aggregation for Forecast in Weather Widget
2026-04-20 13:12:04 +02:00
Konrad M. 14a5b4b76d Update CHANGELOG.md
update changelog
2026-04-20 12:46:21 +02:00
Konrad M. 573e1553b8 fix weather forecast min/max values aggregation 2026-04-20 10:36:42 +00:00
Ulas Kalayci 4f7b73cf81 chore: release v0.20.32
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 12:05:40 +02:00
Ulas Kalayci ecd4453b71 chore: release v0.20.31
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 11:02:00 +02:00