chore: release v0.40.1

This commit is contained in:
Ulas Kalayci
2026-05-01 17:57:30 +02:00
parent f21c6b0ca9
commit 2c948eb235
8 changed files with 44 additions and 17 deletions
+12
View File
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [0.40.1] - 2026-05-01
### Changed
- **Typography tightening**: page titles and modal titles use tighter letter-spacing (`-0.5 px` / `-0.8 px` on desktop) and `text-wrap: balance` to eliminate orphaned words on wrapped headings.
- **Warm-tinted shadows**: all elevation shadows (`sm` through `xl`) now use a warm-tinted base colour (`rgba(18, 14, 8, …)`) that matches the warm neutral palette instead of pure black.
- **Button radius**: regular buttons use `--radius-md` (12 px) instead of `--radius-sm` (8 px), creating a clear visual distinction from text inputs.
- **Empty-state icons**: icons in empty states pick up a 40 % tint of the current module accent colour, making them feel contextually connected to each module rather than uniformly grey.
- **Search section labels**: category headings inside the search overlay are now sentence-case instead of all-caps, improving readability.
### Fixed
- **Tabular figures**: currency amounts (budget summary cards, transaction list, loan cards, chart rows), weather temperature, dashboard metrics, and calendar time labels now use `font-variant-numeric: tabular-nums` so digit columns remain visually aligned.
## [0.40.0] - 2026-05-01
### Added
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "oikos",
"version": "0.40.0",
"version": "0.40.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "oikos",
"version": "0.40.0",
"version": "0.40.1",
"license": "MIT",
"dependencies": {
"bcrypt": "^6.0.0",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "oikos",
"version": "0.40.0",
"version": "0.40.1",
"description": "Self-hosted family planner - calendar, tasks, shopping, meal planning, budget and more. Private, open-source, no subscription.",
"main": "server/index.js",
"type": "module",
+4
View File
@@ -160,6 +160,7 @@
.budget-summary-card__amount {
font-size: var(--text-xl);
font-weight: var(--font-weight-bold);
font-variant-numeric: tabular-nums;
}
.budget-summary-card--income .budget-summary-card__amount { color: var(--color-success); }
@@ -236,6 +237,7 @@
.budget-bar-row__amount {
font-size: var(--text-xs);
font-weight: var(--font-weight-medium);
font-variant-numeric: tabular-nums;
width: 64px;
text-align: right;
flex-shrink: 0;
@@ -336,6 +338,7 @@
.budget-loan-card__amounts strong {
display: block;
font-size: var(--text-base);
font-variant-numeric: tabular-nums;
color: var(--color-text-primary);
margin-top: 2px;
white-space: nowrap;
@@ -712,6 +715,7 @@
.budget-entry__amount {
font-size: var(--text-base);
font-weight: var(--font-weight-semibold);
font-variant-numeric: tabular-nums;
flex-shrink: 0;
}
+2
View File
@@ -346,6 +346,7 @@
font-size: var(--text-xs);
color: var(--color-text-disabled);
white-space: nowrap;
font-variant-numeric: tabular-nums;
}
.week-view__columns {
@@ -420,6 +421,7 @@
.week-event__time {
font-size: var(--text-xs);
opacity: 0.85;
font-variant-numeric: tabular-nums;
}
.event-attachment-preview {
+3
View File
@@ -137,6 +137,7 @@
.dashboard-metric__value {
font-size: var(--text-xl);
font-weight: var(--font-weight-bold);
font-variant-numeric: tabular-nums;
color: var(--color-text-primary);
overflow: hidden;
text-overflow: ellipsis;
@@ -1002,6 +1003,7 @@
.weather-widget__temp {
font-size: var(--text-4xl);
font-weight: var(--font-weight-bold);
font-variant-numeric: tabular-nums;
line-height: 1;
margin-bottom: 2px;
}
@@ -1068,6 +1070,7 @@
display: flex;
gap: var(--space-1);
font-size: var(--text-xs);
font-variant-numeric: tabular-nums;
}
.weather-forecast__high {
+14 -8
View File
@@ -432,9 +432,8 @@
.search-section__heading {
font-size: var(--text-xs);
font-weight: var(--font-weight-semibold);
color: var(--color-text-tertiary);
text-transform: uppercase;
letter-spacing: 0.06em;
color: var(--color-text-secondary);
letter-spacing: 0.01em;
margin-bottom: var(--space-2);
}
@@ -816,7 +815,7 @@ html.fab-anim-done .page-fab {
.nav-sidebar__brand-name {
font-size: var(--text-lg);
font-weight: var(--font-weight-bold);
letter-spacing: -0.3px;
letter-spacing: -0.6px;
color: var(--color-text-primary);
white-space: nowrap;
overflow: hidden;
@@ -874,7 +873,8 @@ html.fab-anim-done .page-fab {
.page__title {
font-size: var(--text-xl);
font-weight: var(--font-weight-bold);
letter-spacing: -0.3px;
letter-spacing: -0.5px;
text-wrap: balance;
}
@media (min-width: 1024px) {
@@ -884,7 +884,7 @@ html.fab-anim-done .page-fab {
.page__title {
font-size: var(--text-2xl);
letter-spacing: -0.5px;
letter-spacing: -0.8px;
}
}
@@ -976,6 +976,7 @@ html.fab-anim-done .page-fab {
font-size: var(--text-sm);
font-weight: var(--font-weight-semibold);
color: var(--color-text-primary);
text-wrap: balance;
}
.card__body {
@@ -1057,6 +1058,7 @@ html.fab-anim-done .page-fab {
.modal-panel__title {
font-size: var(--text-md);
font-weight: var(--font-weight-semibold);
text-wrap: balance;
}
.modal-panel__close {
@@ -1209,7 +1211,7 @@ html.fab-anim-done .page-fab {
justify-content: center;
gap: var(--space-2);
padding: var(--space-2) var(--space-4);
border-radius: var(--radius-sm);
border-radius: var(--radius-md);
font-size: var(--text-sm);
font-weight: var(--font-weight-medium);
min-height: var(--target-lg);
@@ -1533,7 +1535,7 @@ html.fab-anim-done .page-fab {
.empty-state__icon {
width: 56px;
height: 56px;
color: var(--color-text-disabled);
color: color-mix(in srgb, var(--module-accent, var(--color-accent)) 40%, var(--color-text-disabled));
}
.empty-state__title {
@@ -2281,11 +2283,15 @@ html.fab-anim-done .page-fab {
button i[data-lucide],
button svg { pointer-events: none; }
/* Tabular numbers: gleichbreite Ziffern für Zahlen/Beträge */
.tabular-nums { font-variant-numeric: tabular-nums; }
/* Kompakter Icon-Button: 44px Klickfläche, optisch kompakt durch geringes Padding */
.btn--icon-sm {
padding: var(--space-1);
min-height: var(--target-base);
min-width: var(--target-base);
border-radius: var(--radius-sm);
}
/* Textarea: vertikale Größenänderung ist nutzbar */
+6 -6
View File
@@ -262,16 +262,16 @@
* 3 Stufen: subtle (Karten), medium (Dropdowns, Hover),
* elevated (Modals, FAB).
* -------------------------------------------------------- */
--shadow-drop-icon: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.15));
--_shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.04), 0 1px 4px rgba(0, 0, 0, 0.03);
--shadow-drop-icon: drop-shadow(0 2px 4px rgba(18, 14, 8, 0.16));
--_shadow-sm: 0 1px 2px rgba(18, 14, 8, 0.05), 0 1px 4px rgba(18, 14, 8, 0.04);
--shadow-sm: var(--_shadow-sm);
--_shadow-md: 0 2px 8px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.04);
--_shadow-md: 0 2px 8px rgba(18, 14, 8, 0.09), 0 1px 2px rgba(18, 14, 8, 0.05);
--shadow-md: var(--_shadow-md);
--_shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.12), 0 2px 6px rgba(0, 0, 0, 0.04);
--_shadow-lg: 0 8px 24px rgba(18, 14, 8, 0.13), 0 2px 6px rgba(18, 14, 8, 0.05);
--shadow-lg: var(--_shadow-lg);
--_shadow-xl: 0 16px 48px rgba(0, 0, 0, 0.18), 0 4px 12px rgba(0, 0, 0, 0.06);
--_shadow-xl: 0 16px 48px rgba(18, 14, 8, 0.19), 0 4px 12px rgba(18, 14, 8, 0.07);
--shadow-xl: var(--_shadow-xl);
--_shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.08);
--_shadow-xs: 0 1px 2px rgba(18, 14, 8, 0.09);
--shadow-xs: var(--_shadow-xs);
/* --------------------------------------------------------