chore: release v0.40.1
This commit is contained in:
@@ -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
|
||||
|
||||
Generated
+2
-2
@@ -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
@@ -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",
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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);
|
||||
|
||||
/* --------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user