Commit Graph

408 Commits

Author SHA1 Message Date
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
Ulas Kalayci 66f4cda41b chore: release v0.20.30
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 10:53:56 +02:00
Ulas Kalayci 24dca4ed19 chore: release v0.20.29
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 10:50:55 +02:00
Ulas Kalayci 09b339e5f9 fix: use CSS media query as authoritative dark mode source for system preference 2026-04-20 10:37:24 +02:00
Ulas Kalayci ca3da0eccd fix: system theme selection immediately applies OS preference instead of reverting to light 2026-04-20 10:20:18 +02:00
Ulas Kalayci e92487f464 feat: add FAB to meals page for quick meal creation (#62) 2026-04-20 10:15:04 +02:00
Ulas Kalayci 30d3d6cd13 fix: theme reverts to light on reload when system preference stored (#61) 2026-04-20 10:08:07 +02:00
Ulas Kalayci e48d249fbe chore: release v0.20.24
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 10:05:12 +02:00
Ulas Kalayci aae895d704 feat: filter panel + english category keys
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 09:50:55 +02:00
Ulas Kalayci b867917995 feat: kanban touch drag, swipe undo, dashboard task deep-link
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 09:44:50 +02:00
Ulas Kalayci c8e20b22c8 chore: release v0.20.21
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 07:36:07 +02:00
Ulas Kalayci 87be39364d chore: release v0.20.20
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 07:17:30 +02:00
Ulas Kalayci 40fc080c3a chore: release v0.20.19 2026-04-20 07:09:07 +02:00
Ulas Kalayci 51fcac3cfe chore: release v0.20.18
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 06:56:51 +02:00
ulsklyc 01ebf20a62 Merge pull request #59 from baragoon/dev
Unify shopping category localization and limit meal ingredient categories to food-relevant options
2026-04-20 06:56:29 +02:00
Ulas Kalayci a65de31dda fix: 'Sonstiges' aus Meal-Kategorie-Ausschluss entfernen, EOF-Newline ergänzen
'Sonstiges' ist DEFAULT_CATEGORY_NAME und dient als allgemeiner Fallback für
Zutaten (Gewürze, Saucen etc.). Beim Ausschluss würde die Kategorie bestehender
Zutaten beim Bearbeiten einer Mahlzeit lautlos überschrieben (Datenintegrität).
Nur haushaltsfremde Kategorien (Haushalt, Drogerie) werden ausgeblendet.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 06:56:24 +02:00
Ulas Kalayci 18c90653d4 refactor: dark-mode token deduplication via private-variable indirection (v0.20.17)
All tokens with dark-mode overrides gain a private --_name counterpart in :root.
Public tokens (--color-*, --module-*, --glass-* etc.) become stable var(--_name)
references. Both dark blocks now only override compact private tokens — no more
manual two-block sync for every future colour change.

Also removes the redundant --color-surface-2 dark override (already auto-derived
via var(--neutral-50)). No visual change.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 06:53:08 +02:00
Ulas Kalayci 3f989c3bff fix: merge resolve-issue-56 — keep main's icon-wrap nav-badge implementation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 22:24:35 +02:00
Ulas Kalayci e89f4259bc chore: complete colour-redesign follow-up — PWA theme sync, glass tokens, print normalisation (v0.20.16)
- index.html: theme-color #2563EB → #4F46E5 (Indigo-600)
- oikos-install-prompt.js: CSS fallback #2554C7 → #4338CA; #fff → var(--color-text-on-accent)
- tokens.css: add --glass-inset-{soft,base,medium,elevated,strong} tokens
- glass.css: replace 9 inset rgba() literals with --glass-inset-* token refs
- tasks.css: replace 1 inset rgba() literal with --glass-inset-base
- layout.css: normalise @media print shorthand hex to six-digit notation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 22:22:30 +02:00
ulsklyc 1113959768 fix: nav-badge visibility fix + Indigo colour redesign (v0.20.15)
fix: nav-badge bleibt auf allen Seiten sichtbar
2026-04-19 22:16:31 +02:00
Ulas Kalayci c567ff17e4 chore: release v0.20.15 — colour redesign + nav-badge visibility fix
Bundles the Indigo accent migration, module-colour decoupling, WCAG
contrast improvements and nav-badge base-style relocation into one
release. See CHANGELOG.md [0.20.15] for full details.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 22:16:07 +02:00
Ulas Kalayci 888cd05437 fix: move nav-badge styles to layout.css so badge stays visible on all pages
The .nav-badge base styles (background, size, color) were defined in tasks.css,
which is dynamically unloaded when navigating away from /tasks. This caused the
overdue badge in the nav to become invisible on every other page, even though
the badge element remained in the DOM.

Also refactors subtask checkbox icon to use a CSS class instead of inline styles.

Resolves #56

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 22:10:06 +02:00