From e759c4fe98da152c57c68e6d4ae68542cc7404cf Mon Sep 17 00:00:00 2001 From: Ulas Kalayci Date: Mon, 27 Apr 2026 22:32:52 +0200 Subject: [PATCH] chore: release v0.28.0 --- CHANGELOG.md | 20 ++++++++++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f9a6aad..bfa66b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.28.0] - 2026-04-27 + +### Added +- Navigation: sidebar nav items now show a native tooltip in the icon-only breakpoint (1024–1279 px), making all 11 modules discoverable without labels +- PWA: offline banner appears at the top of the screen when the device loses connectivity, and hides automatically when the connection is restored +- Desktop: global keyboard shortcuts — `/` (search), `n` (new), `?` (shortcut overview), `g d/t/c/s/n` (navigate to module) +- Dashboard: widget order is now adjustable via drag-and-drop in the Customize modal; order is persisted in user preferences +- UX: `deleteWithUndo` utility in `ux.js` — birthdays deletion now offers an undo toast identical to tasks, notes, contacts, and meals +- UX: contextual onboarding hints added to empty states in all modules (tasks, contacts, notes, budget, shopping, birthdays, recipes) + +### Changed +- Dashboard: widget title icons use `--color-text-secondary` instead of the module accent color, reducing visual noise when all widgets are visible +- Performance: `reminders.css` is now lazy-loaded on demand instead of being included in every page load + +### Fixed +- UI: modal close button increased from 40 px to 44 px to meet Apple HIG minimum tap target +- UI: `.widget__link` elements now have a 44 px minimum touch target height with correct padding +- CSS: removed dead `.fab` CSS block — all pages use `.page-fab` +- UX: toasts can now be dismissed by swiping horizontally (> 40 px) + ## [0.27.1] - 2026-04-27 ### Fixed diff --git a/package-lock.json b/package-lock.json index c564c4b..fdc2423 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "oikos", - "version": "0.27.1", + "version": "0.28.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "oikos", - "version": "0.27.1", + "version": "0.28.0", "license": "MIT", "dependencies": { "bcrypt": "^6.0.0", diff --git a/package.json b/package.json index eb8ebcb..712b9ea 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "oikos", - "version": "0.27.1", + "version": "0.28.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",