From 29d9d28ee57c61625903784b8e51f3eefa37e1d4 Mon Sep 17 00:00:00 2001 From: Ulas Kalayci Date: Mon, 27 Apr 2026 12:47:43 +0200 Subject: [PATCH] chore: release v0.26.4 --- CHANGELOG.md | 6 ++++++ package-lock.json | 4 ++-- package.json | 2 +- public/pages/dashboard.js | 2 +- public/styles/dashboard.css | 11 +++++++++++ 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 313ef35..661e095 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.26.4] - 2026-04-27 + +### Changed +- Dashboard: weather widget is now the first entry in the default widget order +- Dashboard: widgets in the same grid row now share the same height (via flex stretch), eliminating the patchwork gaps between shorter and taller widgets + ## [0.26.3] - 2026-04-27 ### Fixed diff --git a/package-lock.json b/package-lock.json index 303df73..77e069c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "oikos", - "version": "0.26.3", + "version": "0.26.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "oikos", - "version": "0.26.3", + "version": "0.26.4", "license": "MIT", "dependencies": { "bcrypt": "^6.0.0", diff --git a/package.json b/package.json index a269756..6814249 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "oikos", - "version": "0.26.3", + "version": "0.26.4", "description": "Self-hosted family planner - calendar, tasks, shopping, meal planning, budget and more. Private, open-source, no subscription.", "main": "server/index.js", "type": "module", diff --git a/public/pages/dashboard.js b/public/pages/dashboard.js index 6cc5d15..984b6d4 100644 --- a/public/pages/dashboard.js +++ b/public/pages/dashboard.js @@ -110,7 +110,7 @@ function showOnboarding(appContainer) { // Widget-Definitionen (Reihenfolge = Standard-Layout) // -------------------------------------------------------- -const WIDGET_IDS = ['tasks', 'calendar', 'birthdays', 'budget', 'family', 'weather', 'shopping', 'meals', 'notes']; +const WIDGET_IDS = ['weather', 'tasks', 'calendar', 'birthdays', 'budget', 'family', 'shopping', 'meals', 'notes']; const DEFAULT_WIDGET_CONFIG = WIDGET_IDS.map((id) => ({ id, visible: true })); diff --git a/public/styles/dashboard.css b/public/styles/dashboard.css index 93f1a15..6029bda 100644 --- a/public/styles/dashboard.css +++ b/public/styles/dashboard.css @@ -163,6 +163,17 @@ grid-template-columns: 1fr; } +/* Widgets füllen die gesamte Gridzeilen-Höhe, so dass alle Widgets + * einer Zeile gleich hoch sind und keine Lücken entstehen. */ +.widget-wrapper { + display: flex; + flex-direction: column; +} + +.widget-wrapper > .widget { + flex: 1; +} + @media (min-width: 768px) { .dashboard__grid { grid-template-columns: repeat(2, 1fr);