From e31f5d3b609c2e86fc2ac4c5203c93a2d81a9ec4 Mon Sep 17 00:00:00 2001 From: Ulas Kalayci Date: Sat, 25 Apr 2026 17:01:52 +0200 Subject: [PATCH] chore: release v0.24.0 --- CHANGELOG.md | 15 +++++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e2d4a45..32e116c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.24.0] - 2026-04-25 + +### Added +- Budget: expense categories are now stored in the database (`budget_categories` table) as stable English slugs, replacing hardcoded German strings +- Budget: subcategory support for all expense entries — 35 predefined subcategories across 8 top-level categories (housing, food, transport, personal_health, leisure, shopping_clothing, education, financial_other) +- Budget: users can add custom categories and subcategories directly from the entry modal via inline "+ category" / "+ subcategory" buttons +- Budget: new API endpoints `POST /api/v1/budget/categories` and `POST /api/v1/budget/categories/:key/subcategories` for custom category/subcategory creation +- Budget: subcategory displayed alongside category in each entry's metadata line +- Budget: CSV export now includes a subcategory column and English column headers +- i18n: all 14 non-German locales extended with new budget category keys (`catHousing`, `catTransport`, `catPersonalHealth`, `catShoppingClothing`, `catFinancialOther`) and all 35 subcategory label keys +- All server-side log messages and API error strings translated from German to English — contributed by @rafaelfoster + +### Changed +- Budget category labels for existing entries migrated to new slug keys via DB migration 15; display names remain fully localised through the i18n system + ## [0.23.17] - 2026-04-25 ### Fixed diff --git a/package-lock.json b/package-lock.json index 814c504..243af0e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "oikos", - "version": "0.23.17", + "version": "0.24.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "oikos", - "version": "0.23.17", + "version": "0.24.0", "license": "MIT", "dependencies": { "bcrypt": "^6.0.0", diff --git a/package.json b/package.json index 41b5b8f..6baa4d4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "oikos", - "version": "0.23.17", + "version": "0.24.0", "description": "Self-hosted family planner - calendar, tasks, shopping, meal planning, budget and more. Private, open-source, no subscription.", "main": "server/index.js", "type": "module",