When navigating to a secondary module (Budget, Recipes, Contacts, Settings),
the More button now displays the module's label and icon instead of "More".
This provides clearer navigation feedback to the user.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace local state mutation after list deletion with loadLists() so the
tab bar stays in sync with the server. Also add a renderTabs() call in
the error path so the UI recovers correctly on API failure.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- widget__empty: column → row layout, icon 28→20px, padding space-5 → space-3
saves ~40px vertical space per empty widget on mobile, keeps populated widgets
visible above the fold
- widget__body: bottom padding space-3 → space-4 for slightly more breathing room
- rebuildList() now uses document.startViewTransition with prefers-reduced-motion
guard; each customize-row gets a stable view-transition-name for smooth reorder
animation without a JS animation library
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Delete public/doc-assets/swagger.html and swagger-init.js (CDN dependency violates project constraints)
- Remove /docs route from server/index.js
- Revert styleSrc and fontSrc in CSP to not include cdn.jsdelivr.net
- Translate all 22 settings.apiToken* keys in de.json from English to German
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Budget categories and subcategories moved to database tables (migration 15+16)
- Expense categories migrated from German strings to stable English slugs
- New `/budget/categories` and `/budget/categories/:key/subcategories` POST endpoints
- Budget modal now shows subcategory selector with inline add-new buttons
- Added 35 predefined subcategories across 8 expense categories (housing, food,
transport, personal_health, leisure, shopping_clothing, education, financial_other)
- CSV export updated to include subcategory column and English headers
- All server log messages and error strings translated to English
- i18n: all 14 non-German locales extended with new budget category/subcategory keys
- Service worker cache version bumped (v52/v47)
Contributed by @rafaelfoster
Co-Authored-By: Rafael Foster <rafaelfoster@users.noreply.github.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove .codex (Codex CLI artifact, not part of project)
- Restore CHANGELOG.md v0.23.17 entry (was deleted by contributor's fork)
- Restore version to 0.23.17 in package.json and package-lock.json
- Restore native translations for catFood, catLeisure, catEducation in ar, el,
hi, ja, ru, sv, tr, uk, zh (PR had replaced them with English strings)
- Replace Portuguese seed names in migration 16 with English (housing, food,
transport, personal_health, leisure, shopping_clothing, education,
financial_other and all subcategory display names)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: add missing i18n keys for nav, search, tasks, calendar, settings, reminders in all locales
Resolves#82
nav.more, calendar.ics.reset/resetToast, settings.ics.*, tasks.filter*,
tasks.swiped*, search.* and reminders.* keys were missing in all 14
non-German locale files, causing the app to fall back to German strings.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* chore: release v0.23.15
---------
Co-authored-by: Ulas Kalayci <ulas.kalayci@googlemail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Resolves#82
nav.more, calendar.ics.reset/resetToast, settings.ics.*, tasks.filter*,
tasks.swiped*, search.* and reminders.* keys were missing in all 14
non-German locale files, causing the app to fall back to German strings.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
pull_request_target statt pull_request: GitHub stellt ACTIONS_ID_TOKEN_REQUEST_URL
nur im Basis-Repo-Kontext bereit. pull-requests: write ergänzt, damit die Aktion
Review-Kommentare posten kann.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>