Commit Graph

351 Commits

Author SHA1 Message Date
Rafael Foster f1ac3c29f0 Merge branch 'main' of github.com:rafaelfoster/oikos 2026-04-29 07:21:18 -03:00
Rafael Foster 36913faf8d fix(birthdays): anchor photo action buttons under avatar 2026-04-29 07:11:34 -03:00
Rafael Foster 3e0549524e fix(birthdays): match profile picture editor pattern 2026-04-29 07:09:37 -03:00
Rafael Foster 1ca8110d56 fix(documents): improve upload modal and document theme 2026-04-29 06:27:37 -03:00
Rafael Foster 72fca92066 feat(documents): add family document management 2026-04-29 06:14:29 -03:00
Rafael Foster 6eafe80395 feat(tasks): add archive button in list cards 2026-04-29 05:51:52 -03:00
Rafael Foster 6028c4562a Merge branch 'main' of github.com:rafaelfoster/oikos 2026-04-29 05:48:27 -03:00
Rafael Foster 175725a41c Merge branch 'ulsklyc:main' into main 2026-04-29 05:48:02 -03:00
Rafael Foster 72f103af04 fix(tasks): make task modal body size to content when reminder is enabled 2026-04-29 05:45:41 -03:00
Rafael Foster 6a47cda9a9 fix(tasks): remove extra modal space when enabling reminders 2026-04-29 05:43:04 -03:00
Ulas Kalayci 99783ca600 fix: correct onSave pattern for ICS edit modal
onSave(panel) is a setup hook, not a submit handler. Bind the form's
submit event inside it and call closeModal({ force: true }) on success.
Also add explicit submit/cancel buttons to the modal content.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 10:39:17 +02:00
Rafael Foster 84b794b739 Merge branch 'main' of github.com:rafaelfoster/oikos 2026-04-29 05:38:59 -03:00
Ulas Kalayci 06adc0f3f5 feat: add edit button for ICS subscriptions (#100)
Adds a pencil-icon edit button to each ICS subscription row. Clicking it
opens a modal to update name, color, and shared visibility via PATCH
/calendar/subscriptions/:id. Adds updatedToast i18n key to all 15 locales.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 10:37:16 +02:00
Rafael Foster 0e7142edc2 feat(tasks): advanced reminders UI and recurrence layout improvements 2026-04-29 05:33:06 -03:00
ulsklyc 64fbad8cbf fix: restore native date picker for birthday fields on iOS (#101)
Birthday date inputs in Settings (profile, new member, edit member) and
the Birthdays page were using type="text" with a custom mask, which
suppresses the native iOS date picker wheel. Switching to type="date"
with a plain ISO value restores the native picker while keeping the
existing parseDateInput / isDateInputValid logic intact.

Closes #98

Co-authored-by: Ulas Kalayci <ulas.kalayci@googlemail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 10:28:27 +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
Rafael Foster 4d3c2688fe Prevent deletion of family members from contact list 2026-04-28 22:17:21 -03:00
Rafael Foster 7174bd6560 Fixing light theme selector so it can be stored and remember after page refresh 2026-04-28 22:07:08 -03:00
Rafael Foster 5062e1e61f Improve account profile and sidebar details 2026-04-28 21:11:49 -03:00
Rafael Foster d22f3c1034 Separate API token settings tab 2026-04-28 20:31:53 -03:00
Rafael Foster 69897666fb Refine family settings and calendar dentist icon 2026-04-28 20:28:50 -03:00
Rafael Foster 7b85db9b07 Sync family members with contacts and birthdays 2026-04-28 20:04:13 -03:00
Ulas Kalayci 801c77dec6 fix(calendar): restore native date picker on iOS (type=date) 2026-04-28 18:46:54 +02:00
Ulas Kalayci ed65cf099c fix(i18n/el): correct typo Διδαγραφή → Διαγραφή in recipes.deleteConfirm 2026-04-28 15:49:01 +02:00
Serhiy Bobrov a67a225b96 feat(locales): update recipe translations across multiple languages
Co-authored-by: Copilot <copilot@github.com>
2026-04-28 15:03:10 +03:00
Ulas Kalayci 774d9e87ef fix(dashboard): weather widget white-on-white in light mode 2026-04-28 12:46:49 +02:00
Rafael Foster b4d74f239b Expand calendar event icon options 2026-04-27 22:22:30 -03:00
Rafael Foster 33e4afc009 Refine calendar icon picker 2026-04-27 21:53:18 -03:00
Rafael Foster 1d1d2291e5 Add calendar event icons and flexible date inputs 2026-04-27 21:38:06 -03:00
Ulas Kalayci 890b00f0b0 fix(ux): toast swipe-to-dismiss, widget-icons neutral, reminders.css lazy 2026-04-27 22:32:09 +02:00
Ulas Kalayci 688d6a6efa feat(ux): kontextuelle Onboarding-Tipps in Empty-States aller Module 2026-04-27 22:31:01 +02:00
Ulas Kalayci 56252d3537 feat(desktop): globale Keyboard Shortcuts (/, n, ?, g+Buchstabe) 2026-04-27 22:29:09 +02:00
Ulas Kalayci 218282875c feat(dashboard): Widget-Reihenfolge per Drag-and-Drop anpassbar
Config-Schema um order-Feld erweitert.
Bestehende Configs werden automatisch migriert.
Drag-and-Drop zusätzlich zu Up/Down-Buttons im Customize-Modal.
2026-04-27 22:27:59 +02:00
Ulas Kalayci a66bd2b05c feat(ux): zentrales deleteWithUndo + Undo-Toast in Birthdays
deleteWithUndo in ux.js: onDelete ausführen, Undo-Toast anzeigen.
Birthdays migriert; Contacts/Notes/Meals haben bereits optimistische Undo-Logik.
2026-04-27 22:26:46 +02:00
Ulas Kalayci 048e31e933 feat(pwa): Offline-Banner in App-Shell, reminders.css lazy geladen
Zeigt automatisch wenn navigator.onLine === false.
Blendet sich aus sobald Verbindung wiederhergestellt.
reminders.css aus globalem <link> entfernt (wird lazy geladen).
2026-04-27 22:24:42 +02:00
Ulas Kalayci d0adde29c4 chore(css): totes .fab-CSS entfernen, alle Seiten nutzen .page-fab 2026-04-27 22:22:39 +02:00
Ulas Kalayci 94309a2294 fix(nav): title-tooltip für icon-only Sidebar (1024–1279px) 2026-04-27 22:22:03 +02:00
Ulas Kalayci e839e40906 fix(ui): modal-close 44px, widget-link tap-target 44px
Modal-Close: --target-md (40px) → --target-base (44px), Apple HIG.
Widget-Link: min-height 44px + padding für ausreichendes Tap-Target.
2026-04-27 22:21:36 +02:00
Rafael Foster a1c839d4e7 Skip discard prompt after saving member edits 2026-04-27 09:09:31 -03:00
Rafael Foster 2dd38bfae3 Fix profile picture preview under CSP 2026-04-27 09:04:54 -03:00
Rafael Foster 7e4db48a9f Merge branch 'main' of github.com:rafaelfoster/oikos 2026-04-27 08:52:18 -03:00
Rafael Foster 6e410cb671 Add member editing and profile pictures 2026-04-27 08:09:00 -03:00
Rafael Foster b82a86c4b3 Add family roles to member management 2026-04-27 07:53:43 -03:00
Ulas Kalayci 29d9d28ee5 chore: release v0.26.4 2026-04-27 12:47:43 +02:00
Ulas Kalayci d1e48857b6 chore: release v0.26.3 2026-04-27 12:45:53 +02:00
Ulas Kalayci bb96ddb6f6 fix: remove duplicate KPI bar and restore flat widget grid on dashboard
- Removed the KPI tiles section from renderDashboardOverview: it showed
  Tasks/Calendar/Birthdays/etc. counts in a bar at the top, duplicating
  the full widgets directly below it
- Replaced the main/side two-column workspace layout with the established
  flat dashboard__grid so all widgets align consistently in the web view
- Removed now-unused renderKpiTile function and stats/today locals
- Skeleton updated to match the simplified layout

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 12:40:36 +02:00
Ulas Kalayci 1821b7147a fix: path is not defined in renderPage and HAVING clause SQL error
- router.js: route-announcer used bare `path` variable which is not in scope
  inside renderPage(); replaced with `route.path`
- dashboard.js: shoppingLists query used `HAVING open_count > 0` without GROUP BY;
  SQLite rejects this — replaced with a WHERE subquery

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 12:24:39 +02:00
Ulas Kalayci 55eca32db3 feat: birthday tracking, dashboard KPIs, and app name customization (#88)
- Add Birthdays module: CRUD with calendar/reminder auto-sync, photo upload, age notes
- Add DB migration 18 (birthdays table with calendar_event_id, trigger, indexes)
- Add dashboard widgets: birthdays, family participants, budget overview
- Add Settings > General: admins can set a custom app name (reflected in title/sidebar/login)
- Improve service worker: network-first caching for mutable JS/CSS assets
- Add translations for 16 locales (birthday keys)

Fixes applied during integration:
- innerHTML replaced with insertAdjacentHTML/replaceChildren throughout birthdays.js and dashboard.js
- docker-compose.yml personal dev changes reverted

Co-authored-by: Rafael Foster <rafaelgfoster@gmail.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 07:37:09 +02:00
Ulas Kalayci c9ba68cc9b fix: replace innerHTML with insertAdjacentHTML/replaceChildren; revert docker-compose dev changes
- birthdays.js: all innerHTML writes replaced with replaceChildren() + insertAdjacentHTML()
- dashboard.js: shell.innerHTML replaced with replaceChildren() + insertAdjacentHTML()
- docker-compose.yml: revert port to 3000 and restore image line (were personal dev changes)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 07:32:36 +02:00
Rafael Foster 08199495b6 A lot of change in this commit. Changing the dashboard to get more data and the new features added 2026-04-26 21:18:59 -03:00