chore: release v0.23.16
This commit is contained in:
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [0.23.16] - 2026-04-24
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Design tokens: replaced all remaining hardcoded color and size values in `layout.css`, `glass.css`, `dashboard.css`, and `reminders.css` with CSS custom properties
|
||||||
|
- Design tokens: added `--text-2xs`, `--color-overlay-glass`, `--color-backdrop-glass`, `--glass-border-overlay`, `--glass-highlight-mid`, `--glass-inset-bottom-base`, `--glass-inset-bottom-hover`, `--glass-inset-thumb`, and `--glass-inset-input` to `tokens.css`
|
||||||
|
|
||||||
## [0.23.15] - 2026-04-24
|
## [0.23.15] - 2026-04-24
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|||||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "oikos",
|
"name": "oikos",
|
||||||
"version": "0.23.15",
|
"version": "0.23.16",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "oikos",
|
"name": "oikos",
|
||||||
"version": "0.23.15",
|
"version": "0.23.16",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bcrypt": "^6.0.0",
|
"bcrypt": "^6.0.0",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "oikos",
|
"name": "oikos",
|
||||||
"version": "0.23.15",
|
"version": "0.23.16",
|
||||||
"description": "Self-hosted family planner - calendar, tasks, shopping, meal planning, budget and more. Private, open-source, no subscription.",
|
"description": "Self-hosted family planner - calendar, tasks, shopping, meal planning, budget and more. Private, open-source, no subscription.",
|
||||||
"main": "server/index.js",
|
"main": "server/index.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|||||||
@@ -1102,7 +1102,7 @@
|
|||||||
.widget-customize-btn:hover,
|
.widget-customize-btn:hover,
|
||||||
.widget-customize-btn:focus-visible {
|
.widget-customize-btn:focus-visible {
|
||||||
background: var(--color-glass-hover);
|
background: var(--color-glass-hover);
|
||||||
outline: 2px solid rgba(255, 255, 255, 0.5);
|
outline: 2px solid var(--glass-highlight-mid);
|
||||||
outline-offset: 2px;
|
outline-offset: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -90,7 +90,7 @@
|
|||||||
/* Blur nur wenn unterstützt */
|
/* Blur nur wenn unterstützt */
|
||||||
@supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px)) {
|
@supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px)) {
|
||||||
.modal-overlay {
|
.modal-overlay {
|
||||||
background-color: rgba(0, 0, 0, 0.30);
|
background-color: var(--color-overlay-glass);
|
||||||
backdrop-filter: var(--blur-xs) saturate(120%);
|
backdrop-filter: var(--blur-xs) saturate(120%);
|
||||||
-webkit-backdrop-filter: var(--blur-xs) saturate(120%);
|
-webkit-backdrop-filter: var(--blur-xs) saturate(120%);
|
||||||
}
|
}
|
||||||
@@ -151,14 +151,14 @@
|
|||||||
box-shadow:
|
box-shadow:
|
||||||
var(--shadow-lg),
|
var(--shadow-lg),
|
||||||
var(--glass-inset-elevated),
|
var(--glass-inset-elevated),
|
||||||
inset 0 -1px 0 rgba(0, 0, 0, 0.12);
|
var(--glass-inset-bottom-base);
|
||||||
}
|
}
|
||||||
|
|
||||||
.fab:hover {
|
.fab:hover {
|
||||||
box-shadow:
|
box-shadow:
|
||||||
var(--shadow-lg),
|
var(--shadow-lg),
|
||||||
var(--glass-inset-strong),
|
var(--glass-inset-strong),
|
||||||
inset 0 -1px 0 rgba(0, 0, 0, 0.16);
|
var(--glass-inset-bottom-hover);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ================================================================
|
/* ================================================================
|
||||||
@@ -226,7 +226,7 @@ textarea.form-input {
|
|||||||
border-color: var(--color-accent);
|
border-color: var(--color-accent);
|
||||||
box-shadow:
|
box-shadow:
|
||||||
0 0 0 3px color-mix(in srgb, var(--color-accent) 20%, transparent),
|
0 0 0 3px color-mix(in srgb, var(--color-accent) 20%, transparent),
|
||||||
inset 0 1px 2px rgba(0, 0, 0, 0.04);
|
var(--glass-inset-input);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ================================================================
|
/* ================================================================
|
||||||
@@ -242,7 +242,7 @@ textarea.form-input {
|
|||||||
background-color: color-mix(in srgb, var(--neutral-800) 90%, transparent);
|
background-color: color-mix(in srgb, var(--neutral-800) 90%, transparent);
|
||||||
backdrop-filter: var(--blur-sm);
|
backdrop-filter: var(--blur-sm);
|
||||||
-webkit-backdrop-filter: var(--blur-sm);
|
-webkit-backdrop-filter: var(--blur-sm);
|
||||||
border: 1px solid rgba(255, 255, 255, 0.10);
|
border: 1px solid var(--glass-border-overlay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -282,8 +282,7 @@ textarea.form-input {
|
|||||||
.toggle__track::after {
|
.toggle__track::after {
|
||||||
box-shadow:
|
box-shadow:
|
||||||
var(--shadow-sm),
|
var(--shadow-sm),
|
||||||
inset 0 1px 0 rgba(255, 255, 255, 0.90),
|
var(--glass-inset-thumb);
|
||||||
inset 0 -1px 0 rgba(0, 0, 0, 0.08);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.toggle input:checked + .toggle__track::after {
|
.toggle input:checked + .toggle__track::after {
|
||||||
@@ -297,7 +296,7 @@ textarea.form-input {
|
|||||||
.fab-backdrop--visible {
|
.fab-backdrop--visible {
|
||||||
backdrop-filter: var(--blur-xs);
|
backdrop-filter: var(--blur-xs);
|
||||||
-webkit-backdrop-filter: var(--blur-xs);
|
-webkit-backdrop-filter: var(--blur-xs);
|
||||||
background: rgba(0, 0, 0, 0.18);
|
background: var(--color-backdrop-glass);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -169,7 +169,7 @@
|
|||||||
display: none;
|
display: none;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
inset: 0;
|
inset: 0;
|
||||||
background-color: rgba(0, 0, 0, 0.4);
|
background-color: var(--color-overlay);
|
||||||
z-index: calc(var(--z-nav) + 1);
|
z-index: calc(var(--z-nav) + 1);
|
||||||
backdrop-filter: blur(2px);
|
backdrop-filter: blur(2px);
|
||||||
-webkit-backdrop-filter: blur(2px);
|
-webkit-backdrop-filter: blur(2px);
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
border-radius: var(--radius-full, 9999px);
|
border-radius: var(--radius-full, 9999px);
|
||||||
background: var(--color-priority-urgent);
|
background: var(--color-priority-urgent);
|
||||||
color: var(--color-text-on-accent);
|
color: var(--color-text-on-accent);
|
||||||
font-size: 10px;
|
font-size: var(--text-2xs);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
line-height: 16px;
|
line-height: 16px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|||||||
@@ -220,7 +220,9 @@
|
|||||||
--color-overlay: var(--_color-overlay);
|
--color-overlay: var(--_color-overlay);
|
||||||
--_color-overlay-light: rgba(0, 0, 0, 0.2);
|
--_color-overlay-light: rgba(0, 0, 0, 0.2);
|
||||||
--color-overlay-light: var(--_color-overlay-light);
|
--color-overlay-light: var(--_color-overlay-light);
|
||||||
|
--color-overlay-glass: rgba(0, 0, 0, 0.30); /* Glass-Modal-Overlay (zwischen overlay-light und overlay) */
|
||||||
--color-backdrop-fab: rgba(0, 0, 0, 0.25);
|
--color-backdrop-fab: rgba(0, 0, 0, 0.25);
|
||||||
|
--color-backdrop-glass: rgba(0, 0, 0, 0.18); /* Subtiler FAB-Backdrop hinter Glass */
|
||||||
|
|
||||||
/* Glass-Overlays (fuer Elemente auf farbigen Hintergruenden) */
|
/* Glass-Overlays (fuer Elemente auf farbigen Hintergruenden) */
|
||||||
--color-glass: rgba(255, 255, 255, 0.18);
|
--color-glass: rgba(255, 255, 255, 0.18);
|
||||||
@@ -262,6 +264,7 @@
|
|||||||
--font-mono: 'SF Mono', 'Fira Code', 'Fira Mono', 'Roboto Mono', monospace;
|
--font-mono: 'SF Mono', 'Fira Code', 'Fira Mono', 'Roboto Mono', monospace;
|
||||||
|
|
||||||
/* Size-Skala */
|
/* Size-Skala */
|
||||||
|
--text-2xs: 0.625rem; /* 10px - Sehr kleine Badges (z.B. Erinnerungs-Zähler) */
|
||||||
--text-xs: 0.75rem; /* 12px - Minimum, Captions, Badges, Nav-Labels */
|
--text-xs: 0.75rem; /* 12px - Minimum, Captions, Badges, Nav-Labels */
|
||||||
--text-sm: 0.8125rem; /* 13px - Small/Secondary */
|
--text-sm: 0.8125rem; /* 13px - Small/Secondary */
|
||||||
--text-base: 0.9375rem; /* 15px - Body (Desktop) */
|
--text-base: 0.9375rem; /* 15px - Body (Desktop) */
|
||||||
@@ -380,6 +383,7 @@
|
|||||||
--glass-border: var(--_glass-border);
|
--glass-border: var(--_glass-border);
|
||||||
--_glass-border-subtle: rgba(255, 255, 255, 0.35);
|
--_glass-border-subtle: rgba(255, 255, 255, 0.35);
|
||||||
--glass-border-subtle: var(--_glass-border-subtle);
|
--glass-border-subtle: var(--_glass-border-subtle);
|
||||||
|
--glass-border-overlay: rgba(255, 255, 255, 0.10); /* immer-dunkle Surfaces (Toasts, Overlays) */
|
||||||
|
|
||||||
/* a2) Glass-Hintergründe: Vibrancy-Stufe (transparenter, mehr Durchschein) */
|
/* a2) Glass-Hintergründe: Vibrancy-Stufe (transparenter, mehr Durchschein) */
|
||||||
--_glass-bg-card: rgba(255, 255, 255, 0.52);
|
--_glass-bg-card: rgba(255, 255, 255, 0.52);
|
||||||
@@ -412,6 +416,7 @@
|
|||||||
--glass-highlight: var(--_glass-highlight);
|
--glass-highlight: var(--_glass-highlight);
|
||||||
--_glass-highlight-subtle: rgba(255, 255, 255, 0.35);
|
--_glass-highlight-subtle: rgba(255, 255, 255, 0.35);
|
||||||
--glass-highlight-subtle: var(--_glass-highlight-subtle);
|
--glass-highlight-subtle: var(--_glass-highlight-subtle);
|
||||||
|
--glass-highlight-mid: rgba(255, 255, 255, 0.50); /* Mittlere Stärke für Outlines auf dunklen Surfaces */
|
||||||
|
|
||||||
/* d2) Inset-Specular: Oberrand-Sheen für Glass-Elemente (volle inset-Kurzform) */
|
/* d2) Inset-Specular: Oberrand-Sheen für Glass-Elemente (volle inset-Kurzform) */
|
||||||
--glass-inset-soft: inset 0 1px 0 rgba(255, 255, 255, 0.18);
|
--glass-inset-soft: inset 0 1px 0 rgba(255, 255, 255, 0.18);
|
||||||
@@ -420,6 +425,13 @@
|
|||||||
--glass-inset-elevated: inset 0 1px 0 rgba(255, 255, 255, 0.28);
|
--glass-inset-elevated: inset 0 1px 0 rgba(255, 255, 255, 0.28);
|
||||||
--glass-inset-strong: inset 0 1px 0 rgba(255, 255, 255, 0.32);
|
--glass-inset-strong: inset 0 1px 0 rgba(255, 255, 255, 0.32);
|
||||||
|
|
||||||
|
/* d3) Dark-Inset-Specular: Unterrand-Schatten (komplementär zu den White-Insets oben) */
|
||||||
|
--glass-inset-bottom-base: inset 0 -1px 0 rgba(0, 0, 0, 0.12);
|
||||||
|
--glass-inset-bottom-hover: inset 0 -1px 0 rgba(0, 0, 0, 0.16);
|
||||||
|
--glass-inset-thumb: inset 0 1px 0 rgba(255, 255, 255, 0.90),
|
||||||
|
inset 0 -1px 0 rgba(0, 0, 0, 0.08);
|
||||||
|
--glass-inset-input: inset 0 1px 2px rgba(0, 0, 0, 0.04);
|
||||||
|
|
||||||
/* e) Glass-Schatten */
|
/* e) Glass-Schatten */
|
||||||
--_glass-shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(255, 255, 255, 0.55);
|
--_glass-shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(255, 255, 255, 0.55);
|
||||||
--glass-shadow-sm: var(--_glass-shadow-sm);
|
--glass-shadow-sm: var(--_glass-shadow-sm);
|
||||||
|
|||||||
Reference in New Issue
Block a user