# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [0.40.0] - 2026-05-01 ### Added - **Budget loans tracker** (PR #117 by @rafaelfoster): a new Loans tab in the Budget module lets you create instalment-based loans, record individual payments, track remaining balance and due months, and filter budget transactions by loan. Paid-off loans are automatically marked as closed. Full CRUD with confirmation modals. - **Dashboard widget sizes**: each dashboard widget now has a configurable size (columns × rows). Sizes are persisted in user preferences and survive page reloads. - **Extended date formats**: Settings → General now offers four additional date format options — `MM.DD.YYYY`, `YYYY.MM.DD`, `YYYY/MM/DD`, and `DD/MM/YYYY` — alongside the existing formats. ### Fixed - **`dmy` date format preserved**: the existing `DD.MM.YYYY` behaviour of the `dmy` preference is unchanged for all current users; a new `DD/MM/YYYY` option (`dmy_slash`) is available for those who want slashes. ## [0.39.2] - 2026-05-01 ### Fixed - **Budget date picker**: the date input in Budget → New Entry / Edit Entry now uses a native date picker on iOS and Android instead of a plain text field. ## [0.39.1] - 2026-05-01 ### Added - **Swedish translation completed** (PR #115 by @olsson82): all previously untranslated strings in `sv.json` now have Swedish equivalents (attachment fields, API token settings, budget categories, backup hint, onboarding, offline banner). - **i18n gap fix**: calendar and notes colour names, `emptyHint` texts, keyboard-shortcut labels, `tasks.navLabelOverdue`, and `birthdays.photoOptional` added to all 13 non-German locale files (ar, el, en, es, fr, hi, it, ja, pt, ru, tr, uk, zh). ## [0.39.0] - 2026-04-30 ### Added - **Time format preference**: Settings → General now includes a 24-hour / AM·PM toggle. The selected format is persisted in household preferences (backend) and localStorage, and takes effect globally for all time displays in calendar and tasks. Time inputs in modals accept both formats and normalise on blur. The calendar also remembers the last selected view (month / week / day) across sessions. ## [0.38.4] - 2026-04-30 ### Fixed - Dashboard portrait mode on mobile: layout no longer overflows to landscape width; `overflow: visible` override in the Admin Dashboard Layout CSS block has been removed so the correct `overflow: clip` takes effect, and `.app-content` now uses `overflow-x: hidden` (instead of `clip`) to properly contain layout overflow at the scroll container level ## [0.38.3] - 2026-04-30 ### Fixed - Dashboard portrait mode on Android: horizontal scrollbar no longer appears due to subpixel overflow in the main scroll container (`overflow-x: clip` added to `.app-content`) ## [0.38.2] - 2026-04-30 ### Fixed - Recurring calendar events with `FREQ=WEEKLY;INTERVAL=N;BYDAY=...` (N > 1) now correctly skip N−1 weeks between occurrences instead of repeating every week ## [0.38.1] - 2026-04-30 ### Changed - Docs: SPEC.md — `family_documents` and `family_document_access` tables added; `calendar_events` extended with `icon` and four attachment columns; `contacts` and `birthdays` extended with `family_user_id`; Tasks `status` includes `archived`; Documents module section added; Calendar section updated with icons, file attachments, and overlapping event rendering; Settings section updated with Backup Management tab and family member contact fields - Docs: BACKLOG.md — completed features table brought up to date through v0.38.0 (v0.30.0–v0.38.0 entries added) - Docs: README.md — Backup entry added to the feature table; Documents entry updated with exact category count - Docs: CONTRIBUTING.md — `innerHTML` security note updated to reflect current `insertAdjacentHTML`/`replaceChildren`/`esc()` pattern; individual test-suite commands listed ## [0.38.0] - 2026-04-30 ### Added - FAB entry animation now stops after 5 page views (long loop progressive reduction) - Search keyboard shortcut hint (`/`) hides permanently after first keyboard use - Success toasts are suppressed after 50 successful saves to reduce noise for power users - Empty state CTA button fades in with a short delay to draw attention as the primary action - Form fields pulse with a red glow on the second or subsequent validation failure on the same field - Shopping quick-add input shows a brief accent-colour glow after each successful item add ## [0.37.2] - 2026-04-30 ### Changed - Search bar in More sheet: added hover, active, and focus states with accent colour highlight and subtle scale feedback - Search bar icon changes to accent colour on hover and press for clearer trigger affordance - Keyboard shortcut hint (`/`) shown inside search bar on desktop as discoverability signal ## [0.37.1] - 2026-04-30 ### Changed - Bottom navigation: Tasks replaces Search as a primary tab bar item - More menu: layout changed from two columns to a three-column grid (two rows of three) - Search: embedded as a narrow bar at the top of the More sheet instead of a standalone bottom-nav button ## [0.37.0] - 2026-04-30 ### Added - Calendar: drag-and-drop file upload dropzone for event attachments (consistent with Documents module) - Calendar: popup positioning now fully viewport-aware (flips above anchor if insufficient space below) ### Fixed - Calendar: event attachments with raw base64 data (no `data:` prefix) now render correctly as images - Calendar: "file too large" error is now shown correctly when saving an oversized attachment ### Changed - Theme init script extracted from inline `