Commit Graph

208 Commits

Author SHA1 Message Date
Ulas Kalayci 3f77fdb11d Fix Migration 30 code quality issues
C1 (CRITICAL): Refactor test-carddav.js to import migrations
- Import MIGRATIONS from server/db.js instead of duplicating SQL
- Export MIGRATIONS array from server/db.js
- Use better-sqlite3 to apply Migration 30 dynamically
- Ensures future changes to Migration 30 are reflected in tests

I1 (IMPORTANT): Add UNIQUE index on carddav_uid
- Create idx_contacts_carddav_uid_unique partial index
- Prevents duplicate CardDAV contacts per account+addressbook
- WHERE clause excludes NULL values (manual contacts allowed)
- Add test to verify unique constraint enforcement

I3 (IMPORTANT): Rename cardav → carddav (RFC 6352 compliance)
- Table: cardav_accounts → carddav_accounts
- Table: cardav_addressbook_selection → carddav_addressbook_selection
- Column: contacts.cardav_* → contacts.carddav_*
- Index: idx_cardav_* → idx_carddav_*
- Test file: test-cardav.js → test-carddav.js
- Package.json: test:cardav → test:carddav
- All test assertions updated

All 25 tests pass.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-04 10:55:30 +02:00
Ulas Kalayci 18310dbfe5 feat(cardav): add Migration 30 for CardDAV contacts schema
Add comprehensive database schema for CardDAV multi-account contacts sync:

New tables:
- cardav_accounts: Store CardDAV server credentials
- cardav_addressbook_selection: Per-account addressbook enable/disable
- contact_phones: Multiple phone numbers per contact with labels
- contact_emails: Multiple email addresses per contact with labels
- contact_addresses: Multiple postal addresses per contact with labels

Extended contacts table with 9 new columns:
- organization, job_title, birthday, website, photo, nickname
- cardav_account_id (FK to cardav_accounts, ON DELETE SET NULL)
- cardav_uid (vCard UID from server)
- cardav_addressbook_url (source addressbook URL)

Features:
- UNIQUE constraints on (cardav_url, username) and (account_id, addressbook_url)
- CASCADE delete for addressbook selection and contact sub-tables
- Performance indices for cardav_uid and email lookups
- Support for manual contacts (NULL cardav_account_id)
- is_primary flag for phone/email/address selection

Test coverage:
- 23 comprehensive tests verify all tables, constraints, indices
- FK CASCADE delete behavior validated
- UNIQUE constraints enforced
- Data integrity scenarios tested

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-04 10:47:16 +02:00
Ulas Kalayci dc0352545a chore: release v0.44.0
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-04 08:53:01 +02:00
Ulas Kalayci 4bca84a609 test(caldav): add test suite for CalDAV multi-account sync
Add comprehensive test coverage for CalDAV multi-account functionality:
- Schema validation for caldav_accounts and caldav_calendar_selection tables
- UNIQUE constraint enforcement on account credentials
- Foreign key CASCADE delete behavior
- Calendar selection enable/disable filtering
- Target calendar columns in calendar_events table

All 7 tests pass using Node.js in-memory SQLite.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-04 08:44:06 +02:00
Ulas Kalayci 4bce97dd04 chore: release v0.43.0
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-04 07:03:41 +02:00
Ulas Kalayci 9b29d1847c feat: automatische geplante Backups mit Rotation
Phase 1.3 - Automatische Backups:
- Cron-basierter Scheduler (Standard: täglich 2 Uhr)
- Konfigurierbar über .env (Zeitplan, Verzeichnis, Anzahl)
- Automatische Rotation: behält nur letzte N Backups (Standard: 7)
- UI in Settings → Backup: Status-Anzeige und manueller Trigger
- Tests: 7 erfolgreiche Tests für Scheduler-Funktionalität

Neue Umgebungsvariablen:
- BACKUP_ENABLED (Standard: true)
- BACKUP_SCHEDULE (Standard: 0 2 * * *)
- BACKUP_DIR (Standard: ./backups)
- BACKUP_KEEP (Standard: 7)
- TZ (für Zeitzone)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-04 07:02:38 +02:00
Ulas Kalayci 99a2280c02 chore: release v0.42.0
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-04 06:52:35 +02:00
Ulas Kalayci 6eae4bae24 chore: release v0.41.0 2026-05-01 18:40:24 +02:00
Ulas Kalayci 2c948eb235 chore: release v0.40.1 2026-05-01 17:57:30 +02:00
Ulas Kalayci f21c6b0ca9 chore: release v0.40.0 2026-05-01 17:43:32 +02:00
Ulas Kalayci 2588cc43f1 chore: release v0.39.2 2026-05-01 09:46:54 +02:00
Ulas Kalayci 270c8cda9d chore: release v0.39.1
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-01 08:24:30 +02:00
Ulas Kalayci ef1f9e9383 chore: release v0.39.0 2026-04-30 19:54:44 +02:00
Ulas Kalayci f926babe38 chore: release v0.38.4 2026-04-30 17:25:31 +02:00
Ulas Kalayci 1615b6bd0a chore: release v0.38.3 2026-04-30 13:16:13 +02:00
Ulas Kalayci 4a050e92a8 chore: release v0.38.2
Fix recurring events with FREQ=WEEKLY;INTERVAL=N;BYDAY ignoring the
interval when crossing a week boundary (e.g. Friday → Monday).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 10:51:01 +02:00
Ulas Kalayci a6ecf7e9ca chore: release v0.38.1 2026-04-30 10:42:51 +02:00
Ulas Kalayci a02063a9f0 chore: release v0.38.0 2026-04-30 09:19:46 +02:00
Ulas Kalayci 5a93ac36aa chore: release v0.37.2 2026-04-30 08:20:36 +02:00
Ulas Kalayci 3cd6eb40d4 chore: release v0.37.1 2026-04-30 07:44:30 +02:00
Ulas Kalayci 3a99734b4c chore: release v0.37.0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 07:16:03 +02:00
Ulas Kalayci 4f80903b04 chore: release v0.36.1 2026-04-29 21:33:10 +02:00
Ulas Kalayci 3f69c7c698 chore: release v0.36.0 2026-04-29 21:15:26 +02:00
Ulas Kalayci 137bc9ba23 chore: release v0.35.0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 20:49:08 +02:00
Ulas Kalayci 6575aed1d6 chore: release v0.34.1 2026-04-29 20:15:30 +02:00
Ulas Kalayci 7215fae6a3 chore: release v0.34.0 2026-04-29 20:02:43 +02:00
Ulas Kalayci 7e137d1c21 feat: add kitchen-tabs utility, CSS, token and test 2026-04-29 19:55:28 +02:00
Ulas Kalayci a872ac52a9 chore: release v0.33.1
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 19:03:04 +02:00
Ulas Kalayci 02e12bad54 chore: release v0.33.0 2026-04-29 16:54:53 +02:00
Ulas Kalayci bf498b0a12 chore: release v0.32.3 2026-04-29 16:48:06 +02:00
Ulas Kalayci 6c069fc99c chore: release v0.32.2 2026-04-29 13:13:19 +02:00
Ulas Kalayci 8ea0c870a7 chore: release v0.32.1
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 12:25:02 +02:00
Ulas Kalayci 94e145198b chore: release v0.32.0 2026-04-29 12:14:55 +02:00
Ulas Kalayci df35845038 chore: release v0.31.2
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 10:39:54 +02:00
Ulas Kalayci f9b796ca13 chore: release v0.31.1 2026-04-29 10:29:07 +02:00
Ulas Kalayci 7940ea4ded release: v0.31.0 — family-contacts integration & settings restructure
- Family member records now store phone, email, and birthday, auto-synced
  to Contacts and Birthdays modules (PR #99 by @rafaelfoster)
- Settings gets dedicated Family and API Tokens tabs (admin-only)
- Avatar editor redesigned with icon buttons; tab bar fits standard width
- Dentist calendar icon normalised to 'tooth'; theme reset bug fixed
- i18n: missing family field translations added to 12 locales

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 07:20:53 +02:00
Ulas Kalayci 6f8cc712a7 chore: release v0.30.3 2026-04-28 22:40:36 +02:00
Ulas Kalayci 801c77dec6 fix(calendar): restore native date picker on iOS (type=date) 2026-04-28 18:46:54 +02:00
Ulas Kalayci bea0c0407d chore: release v0.30.1 — el.json typo fix
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 15:50:33 +02:00
Ulas Kalayci 7d0c520104 chore: release v0.30.0 — recipe i18n across 13 locales
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 14:55:31 +02:00
Ulas Kalayci 774d9e87ef fix(dashboard): weather widget white-on-white in light mode 2026-04-28 12:46:49 +02:00
Ulas Kalayci d88133c503 chore: release v0.29.2 — documentation catch-up 2026-04-28 12:35:59 +02:00
Ulas Kalayci 9cdfb03cc5 chore: release v0.29.1 — dependency update
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 07:49:11 +02:00
ulsklyc d51cb22efe Merge pull request #94 from ulsklyc/dependabot/npm_and_yarn/production-dependencies-682e126eb9
chore(deps): bump express-rate-limit from 8.3.2 to 8.4.1 in the production-dependencies group
2026-04-28 07:48:51 +02:00
Ulas Kalayci 40403218a9 chore: release v0.29.0 — calendar event icons & enhanced reminders
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 07:46:30 +02:00
dependabot[bot] 55f5b9ac62 chore(deps): bump express-rate-limit
Bumps the production-dependencies group with 1 update: [express-rate-limit](https://github.com/express-rate-limit/express-rate-limit).


Updates `express-rate-limit` from 8.3.2 to 8.4.1
- [Release notes](https://github.com/express-rate-limit/express-rate-limit/releases)
- [Commits](https://github.com/express-rate-limit/express-rate-limit/compare/v8.3.2...v8.4.1)

---
updated-dependencies:
- dependency-name: express-rate-limit
  dependency-version: 8.4.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-27 23:14:07 +00:00
Ulas Kalayci 2ef3e6f004 chore: release v0.28.1 2026-04-27 22:34:35 +02:00
Ulas Kalayci e759c4fe98 chore: release v0.28.0 2026-04-27 22:32:52 +02:00
Ulas Kalayci f5d702c5e1 chore: release v0.27.1 2026-04-27 17:25:13 +02:00
Ulas Kalayci 0964d3a507 chore: release v0.27.0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 17:20:35 +02:00