Commit Graph

823 Commits

Author SHA1 Message Date
OpenClaw Bot cef366cce4 test: cover meal studio confirm and cleanup flow 2026-05-12 13:05:37 +02:00
OpenClaw Bot 203456f3e0 docs: add modularization backlog 2026-05-12 12:05:43 +02:00
OpenClaw Bot 37ad018cbc test: cover kitchen assist meal planning flow 2026-05-12 10:15:45 +02:00
OpenClaw Bot 044c85563f fix: support api token meal cook writes 2026-05-11 23:41:01 +02:00
OpenClaw Bot 3e4cc78d3e fix: write cook assignments with legacy bridge schema 2026-05-11 23:39:27 +02:00
OpenClaw Bot 1828bef8f1 fix: support existing meal planning bridge tables 2026-05-11 23:36:52 +02:00
OpenClaw Bot ba534cb864 docs: document native meal planning patch 2026-05-11 23:15:15 +02:00
OpenClaw Bot cf099bb353 feat: add native meal cook selector 2026-05-11 23:14:15 +02:00
OpenClaw Bot 5099155c61 feat: expose meal cook assignments on meals 2026-05-11 23:11:55 +02:00
OpenClaw Bot 0b6603b092 test: cover native meal planning schema 2026-05-11 23:10:38 +02:00
OpenClaw Bot 7c118068c0 feat: add native meal planning signal api 2026-05-11 23:08:59 +02:00
czacheur 4aa2db7c63 Update pl.json (#140)
CI / Tests (Node.js 22.x) (push) Successful in 56s
Docker Publish / Build & Push Image (push) Failing after 2m11s
corrected double quotation mark at the end of the line to typo quotation and quotation mark.
2026-05-09 10:13:36 +02:00
Ulas Kalayci 4aaa6a1589 fix: rate-limit /manifest.webmanifest route (CodeQL #9)
Applies the existing apiLimiter middleware to the manifest route,
which performs a DB lookup without prior rate limiting.

Closes https://github.com/ulsklyc/oikos/security/code-scanning/9
2026-05-09 10:09:29 +02:00
Ulas Kalayci ee53f1cfd7 feat: add Polish (pl) locale
Full Polish translation covering all UI modules — tasks, calendar,
shopping, meals, budget, notes, contacts, birthdays, recipes,
documents, housekeeping, and settings. Polish is now selectable in
Settings → Language.

Bumps to v0.50.0.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 23:12:57 +02:00
Ulas Kalayci e024a8eaf9 chore: release v0.49.0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 20:20:57 +02:00
Ulas Kalayci 761408ae7c fix: correct housekeeping module bugs after merge
- Restore migration order: remove spurious v30 birthday-reminders entry
  inserted before CardDAV (v30) and birthday-reminders (v31), which caused
  a duplicate v31 on fresh installs
- Restore birthdayReminderAt() offsetMin handling (regression from merge)
- Fix check-in INSERT: check_out was set to checkIn instead of NULL,
  making sessions invisible to loadOpenSession (IS NULL query)
- Implement check-out path in toggleSession() — only check-in was reachable
- Wrap GET /task-templates in try/catch per project convention
- Fix DELETE response envelopes: { ok: true } → { data: ... }
- Remove housekeeping worker exclusion from GET /auth/users
- Replace toISOString() with local-date helper to avoid UTC date shift
- Use user currency preference in money() instead of hardcoded BRL
- Replace hardcoded #7C3AED fallbacks in style attrs with CSS token
- Add German translations for documents folder and settings housekeeping keys
- Remove DESIGN.md and IMPLEMENTATION.md (AI planning artifacts)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 20:18:26 +02:00
Rafael Foster 22ec13e559 feat: add housekeeping module for household staff management
* Adding flexible reminder options to birthdays

* Fix database migration merge conflict

* Truncate calendar popup descriptions

* Log app version on backend startup

* Add host-mounted data and backup folders

* feat: add housekeeping module

* fix: align housekeeping UI and add task creation

* refactor: rebuild housekeeping experience

* feat: support multiple housekeeping staff

* feat: integrate housekeeping visits with calendar

* feat: refine housekeeping visits and payments

* feat: add housekeeping staff visit logs

* feat: add housekeeping receipts and document folders

* feat: localize housekeeping folders and chores

* feat: refine housekeeping tabs and document folders

* fix: sync housekeeping tab active state

* feat: use configured app name in onboarding and manifest
2026-05-08 20:14:51 +02:00
ulsklyc d19689a1ab Merge pull request #137 from ulsklyc/add-claude-github-actions-1778261951158
Add Claude Code GitHub Workflow
2026-05-08 19:40:25 +02:00
ulsklyc 123592d5a3 "Update Claude Code Review workflow" 2026-05-08 19:39:13 +02:00
ulsklyc d9faa37ee5 "Update Claude PR Assistant workflow" 2026-05-08 19:39:12 +02:00
Ulas Kalayci 9762db8d0f chore: release v0.48.3 2026-05-06 16:24:22 +02:00
ulsklyc 358c23d204 Merge pull request #132 from ulsklyc/feat/violet-rebrand
feat: rebrand accent color to Violet #6c3aed
2026-05-06 16:23:24 +02:00
Ulas Kalayci 9883abda79 feat: rebrand accent color to Violet #6c3aed
Replace Amber brand color with Violet (#6c3aed) across the entire app.

- tokens.css: accent palette → Violet (light #6c3aed, dark #a78bfa)
- Logo, favicon, PWA icons, Apple touch icon regenerated
- GitHub Pages (index.html, install.html): accent + inline SVG updated
- generate-icons.js: gradient updated for future icon generation
- Semantic colors (warning, notes, meals) intentionally unchanged
2026-05-06 16:06:43 +02:00
Ulas Kalayci 3603a946c4 docs: expand v0.48.2 changelog entry with brand color rationale 2026-05-06 15:06:55 +02:00
Ulas Kalayci 367770e05c chore: release v0.48.2 2026-05-06 14:51:38 +02:00
Ulas Kalayci 9ef93987d6 chore: release v0.48.1 2026-05-06 10:39:53 +02:00
ulsklyc 1629356a6d fix: add missing submit button to CalDAV and CardDAV add account modals (#130)
The onSave callback was being executed immediately on modal open (its
purpose is to wire up event listeners), causing the required-fields
error to appear instantly and leaving the form with no way to submit.

Both forms now include modal-actions buttons in the content HTML, and
onSave correctly attaches a submit event listener instead of running
validation directly.

Fixes #128

Co-authored-by: Ulas Kalayci <ulas.kalayci@googlemail.com>
2026-05-06 10:37:35 +02:00
ulsklyc 8dfd8e4fbf Merge pull request #129 from ulsklyc/feat/multi-assignment
feat: multi-person assignment for tasks and calendar events (v0.48.0)
2026-05-06 10:17:02 +02:00
Ulas Kalayci 1a51c14d0d chore: release v0.48.0 2026-05-06 10:08:01 +02:00
Ulas Kalayci 2a48fb7af0 feat: multi-person assignment for tasks and calendar events
- DB migration v32: task_assignments and event_assignments join tables
  with CASCADE delete; existing assigned_to data migrated automatically
- Tasks API: accepts assigned_to as array, returns assigned_users[]
  with json_group_array; filter uses EXISTS on task_assignments
- Calendar API: same pattern via event_assignments; serializeEvent
  includes assigned_users array
- Recurring task completion copies all assignments to the new instance
- Frontend: shared UserMultiSelect component with avatar stack display
  (renderAvatarStack, renderUserMultiSelect, getSelectedUserIds,
  bindUserMultiSelect); tasks.js and calendar.js use it in modals
  and card/agenda views
- CSS: user-multi-select.css with avatar-stack and user-ms classes
- 14 new tests covering CRUD, JSON aggregation, EXISTS filter,
  and CASCADE behavior for both task and event assignments

Closes #125
2026-05-06 10:04:41 +02:00
Ulas Kalayci f0503f3df1 chore: release v0.47.5
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 07:37:49 +02:00
ulsklyc ed6d641b67 Merge pull request #127 from ulsklyc/refactor/settings-sync-restructure
refactor(settings): Sync-Tab — CalDAV/CardDAV priorisiert, Heading-Bug gefixt
2026-05-06 07:36:50 +02:00
Ulas Kalayci c4cb52d042 feat(nav): shared sub-tabs component for settings and kitchen
Extracts the tab-bar UI into a reusable renderSubTabs() utility
(public/utils/sub-tabs.js + public/styles/sub-tabs.css) so all
sub-module navigation shares one implementation and visual style.

- Settings: replaces template-literal <nav class="settings-tabs">
  with renderSubTabs(); tabs now show icon + label (pill-style),
  group separators via separatorBefore, panel switching via onChange
- Kitchen: renderKitchenTabsBar() becomes a thin wrapper around
  renderSubTabs(); kitchen-tabs.css keeps only layout adjustment rules
- CSS: kitchen-tab* rules removed from kitchen-tabs.css,
  settings-tab-btn* rules removed from settings.css; both now
  inherit from sub-tabs.css
- tokens.css: adds --sub-tabs-height (52px default;
  kitchen overrides to --kitchen-tabs-height: 56px)
- test-browser-loader.mjs: resolves browser-absolute /utils/*.js
  imports to public/ directory for Node test compatibility

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 07:33:54 +02:00
Ulas Kalayci c465713418 refactor(settings): prioritize CalDAV/CardDAV in sync tab, fix heading hierarchy
Open standards (CalDAV, CardDAV, ICS) now appear first in the Sync tab
under a dedicated "CalDAV & CardDAV" section, making self-hosted sync
options prominent. Cloud services (Google, Apple) move to a secondary
"Cloud-Dienste" section. Fixes raw <h2> heading in CalDAV card — now
uses consistent settings-card__title like all other cards.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 07:22:39 +02:00
Ulas Kalayci 2da5295f87 chore: release v0.47.4 2026-05-06 07:00:40 +02:00
Ulas Kalayci b545d83f64 fix: modal onClose callback, calendar popup truncation, datetime validation
- modal.js: add onClose callback to openModal(), fix _initialFormTimeout
  cleanup, deduplicate escape/overlay-click handlers in confirmModal,
  promptModal, selectModal using the new callback
- calendar.js: replace popup.innerHTML with insertAdjacentHTML (constraint),
  add truncateDescription() to cap long event descriptions at 500 chars
- validate.js: extend DATETIME_RE to cover ISO 8601 with ms/timezone,
  normalise datetime values to YYYY-MM-DDTHH:MM on input
- index.js: include app version in startup log message
- docker-compose.yml / .env.example: switch from named volume to
  host-mounted DATA_DIR/BACKUP_DIR with sane defaults
- docs/installation.md: document host-mount data paths

Co-Authored-By: Rafael Foster <rafaelfoster@users.noreply.github.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 07:00:07 +02:00
Ulas Kalayci 56b2fd471d chore: release v0.47.3 2026-05-06 01:45:38 +02:00
Ulas Kalayci d7cae21063 docs: archive cleanup plan, update SPEC and README for v0.45–v0.47
- Archive docs/designs/2026-05-04-repo-cleanup-design.md to docs/archive/designs/
- Remove docs/designs/2026-05-04-settings-sidebar-demo.html (implemented)
- SPEC.md: add CardDAV Accounts and CardDAV Addressbook Selection tables
- SPEC.md: expand Contacts table with multi-value fields, CardDAV columns, and
  new contact_phones / contact_emails / contact_addresses sub-tables
- SPEC.md: add birthday reminder_offset columns (v0.46.0)
- SPEC.md: update External Calendars table (apple→caldav migration note)
- SPEC.md: update Tasks module (bulk actions, v0.42.0)
- SPEC.md: update Contacts module (CardDAV multi-account sync, multi-value fields)
- SPEC.md: update Birthdays module (flexible reminder offsets, v0.46.0)
- SPEC.md: update Settings module (Synchronization tab, module toggles, scheduled
  backups, CardDAV UI, correct tab count and names)
- README.md: update Birthdays row (flexible reminder offsets)
- README.md: update Backup row (automatic scheduled backups)
- .gitignore: exclude screenshot scripts, seed scripts, backup files,
  docs/github-pages/ staging folder

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 01:45:00 +02:00
Ulas Kalayci 9acb10ab1d Passe GitHub Pages Installationsguide an neues Design an
- DM Sans + DM Serif Display statt Fraunces
- Purple Farbschema (#6C3AED) statt Blue (#2563EB)
- CSS-Variablen konsistent mit index.html (--ff-display, --text-1, --border)
- Logo SVG: Purple Gradient
- i18n: data-t statt data-i18n (inkl. JavaScript-Anpassung)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-06 01:37:18 +02:00
Ulas Kalayci 12ec14af7b Erweitere GitHub Pages Features und aktualisiere Beschreibungen
- Füge Documents, Recipes und Birthdays zu Feature-Grid hinzu (8 statt 6 Features für ausgewogene 4+4 Darstellung)
- Aktualisiere Calendar-Sync-Beschreibung mit CalDAV-Anbietern und ICS-Subscriptions
- Aktualisiere Budget (15 Währungen, Loan-Tracking), Contacts (CardDAV-Sync), Notes (Markdown-Support)
- Entferne Kanban Board aus Grid (bereits Teil von Task Management)
- Ergänze alle Übersetzungen (EN/DE) für neue und aktualisierte Features

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-05 13:06:54 +02:00
Ulas Kalayci 704e75260f Füge Puppeteer als dev dependency hinzu für Screenshot-Generierung
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-05 12:55:36 +02:00
Ulas Kalayci d00bb0aaa8 Redesign GitHub Pages: Hero-Layout, Sektionsreihenfolge, Dark Mode Farben
- Hero: Tablet-Screenshot neben Überschrift platziert, mobile Screenshot entfernt
- Grid-Layout für Hero-Bereich (Text links, Bild rechts)
- Sektionsreihenfolge: "Your Data. Your Private Place" vor "Features"
- Dark Mode Farben an App-Design angepasst (aus tokens.css):
  - Neutral-Skala: #1A1A18, #222220 statt #111015, #222130
  - Akzent: #818CF8 (Indigo-400) statt #A78BFA
  - Konsistente Farbgebung mit der App
- Responsive Design für neues Layout angepasst

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-05 12:55:30 +02:00
Ulas Kalayci 82f1a76a5d Update GitHub Page design and screenshots
- Implement modern design with DM Serif Display + DM Sans fonts
- Switch accent color to purple/violet (#6C3AED / #A78BFA)
- Add hero section with desktop + mobile mockups
- Add feature showcase with alternating layouts
- Add screenshot carousel
- Update all screenshots to new versions
- Maintain dark/light mode and EN/DE language support

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-05 12:36:20 +02:00
Ulas Kalayci dd5ba80541 Reorder GitHub Pages sections: Preview before Features
Improved content flow by showing screenshots (Preview section) before the Features section, giving visitors a visual first impression before diving into the feature list.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-05 11:29:11 +02:00
Ulas Kalayci f1dd8e5161 docs: update screenshots to reflect current UI state
Replace old screenshots with new ones showing updated dashboard design and weather widget. Update README to display mobile + desktop side-by-side, regenerate social preview images with new dashboard screenshot.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-05 11:22:37 +02:00
Ulas Kalayci 289b079f47 chore: bump version to 0.47.2
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-05 07:06:29 +02:00
dependabot[bot] 46aa5774e8 chore(deps): bump the production-dependencies group with 2 updates (#124)
Bumps the production-dependencies group with 2 updates: [express-rate-limit](https://github.com/express-rate-limit/express-rate-limit) and [tsdav](https://github.com/natelindev/tsdav).


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

Updates `tsdav` from 2.1.8 to 2.2.0
- [Release notes](https://github.com/natelindev/tsdav/releases)
- [Changelog](https://github.com/natelindev/tsdav/blob/main/CHANGELOG.md)
- [Commits](https://github.com/natelindev/tsdav/compare/v2.1.8...v2.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-05 07:04:14 +02:00
Ulas Kalayci fd5423f6c5 chore: bump version to 0.47.1
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-04 22:28:17 +02:00
Ulas Kalayci bc61311ebc fix(settings): resolve scope error for CalDAV/CardDAV load functions
Root cause: loadCalDAVAccounts and loadCardDAVAccounts were defined
inside the render function but called from bindIcsEvents (outside render),
causing ReferenceError when accessing Settings page.

Changes:
- Move loadCalDAVAccounts and loadCardDAVAccounts to top-level functions
- Add user parameter to both functions (no longer in render scope)
- Update all recursive calls to pass user parameter
- Move initial load code from bindIcsEvents to render function

Fixes the "loadCalDAVAccounts is not defined" error in v0.47.0.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-04 22:27:48 +02:00
Ulas Kalayci 10ef7006cd chore: bump version to v0.47.0
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-04 21:51:21 +02:00