3 Commits

Author SHA1 Message Date
hnzio f85ec81851 Release 1.2.2 2026-04-13 18:19:34 +02:00
hnzio bc31430a1e Simplify food builder wording in forms 2026-04-13 18:15:27 +02:00
hnzio 93793a456e Warm meal builder panels in dark mode 2026-04-13 18:14:46 +02:00
7 changed files with 47 additions and 7 deletions
+2 -2
View File
@@ -4,8 +4,8 @@
"author": "Florian Heinz", "author": "Florian Heinz",
"description": "Private Flask app for meals, shopping and gentle food planning", "description": "Private Flask app for meals, shopping and gentle food planning",
"tagline": "einfach essen planen", "tagline": "einfach essen planen",
"version": "1.2.1", "version": "1.2.2",
"upstreamVersion": "1.2.1", "upstreamVersion": "1.2.2",
"healthCheckPath": "/", "healthCheckPath": "/",
"httpPort": 8000, "httpPort": 8000,
"manifestVersion": 2, "manifestVersion": 2,
+28
View File
@@ -0,0 +1,28 @@
# Nouri 1.2.2
Nouri 1.2.2 ist ein kleiner Pflege-Release auf Basis von 1.2.1. Der Schwerpunkt lag auf einer stimmigeren Oberfläche im Dark Mode und einer klareren Sprache in der neuen Lebensmittel-Logik.
## Neu in 1.2.2
- Die Builder-Bereiche in der Mahlzeitenansicht wirken im Dark Mode jetzt ruhiger und wärmer.
- Die hellgrauen Flächen bei `Zuhause`, `Merkliste` und dem direkten Anlegen neuer Lebensmittel wurden an die restliche Nouri-Oberfläche angepasst.
- Die Sprache im Lebensmittel-Formular wurde vereinfacht:
- `Passt eher zu` heißt jetzt `Baustein`
- `Kohlenhydratquelle` wird in der UI als `Kohlenhydrate` angezeigt
## Enthaltene Feinschliffe seit 1.2.1
- Neue Datenlogik für Lebensmittel und Vorschläge:
- Grundtyp, Rolle in Vorschlägen, Tageszeiten, Vorschlagsstärke und Mahlzeitenkern wurden klarer getrennt.
- Die Builder-Ansichten wurden mit kartenbasierten Auswahlfeldern und zusätzlichen Icons überarbeitet.
- Navigation und unterstützende Texte wurden weiter beruhigt und vereinheitlicht.
## Technisch
- Cloudron-Version und Upstream-Version stehen jetzt auf `1.2.2`.
- Die interne Schema-Version und der App-Version-Fallback wurden auf `1.2.2` angehoben.
## Hinweis zum Update
- Beim Cloudron-Update sollte der `data`-Ordner weiterhin schreibbar sein, damit mögliche Datenbank-Updates sauber durchlaufen.
- Ein reguläres Cloudron-Update mit Backup ist für diesen Stand die sichere Variante.
+1 -1
View File
@@ -93,7 +93,7 @@ def load_app_version(root_dir: Path) -> str:
).strip() ).strip()
if manifest_version: if manifest_version:
return manifest_version return manifest_version
return "1.2.1" return "1.2.2"
def load_release_url() -> str: def load_release_url() -> str:
+1 -1
View File
@@ -45,7 +45,7 @@ DEFAULT_CATEGORY_BUILDERS = {
BUILDER_LABELS = { BUILDER_LABELS = {
"protein": "Proteinquelle", "protein": "Proteinquelle",
"carb": "Kohlenhydratquelle", "carb": "Kohlenhydrate",
"veg": "Gemüse / Ballaststoffquelle", "veg": "Gemüse / Ballaststoffquelle",
"nuts": "Nüsse", "nuts": "Nüsse",
"seeds": "Saaten", "seeds": "Saaten",
+1 -1
View File
@@ -15,7 +15,7 @@ from .constants import (
DEFAULT_CATEGORY_BUILDERS, DEFAULT_CATEGORY_BUILDERS,
) )
CURRENT_SCHEMA_VERSION = "1.2.1" CURRENT_SCHEMA_VERSION = "1.2.2"
ANIMAL_HINTS = ( ANIMAL_HINTS = (
"huhn", "huhn",
+12
View File
@@ -641,6 +641,18 @@ h3 {
border: 1px solid var(--line); border: 1px solid var(--line);
} }
[data-theme="dark"] .component-group,
[data-theme="dark"] .quick-food-panel {
background:
linear-gradient(
180deg,
color-mix(in srgb, var(--surface-soft) 74%, #4c413d 26%),
color-mix(in srgb, var(--surface) 94%, #2c2523 6%)
);
border-color: color-mix(in srgb, var(--line) 58%, rgba(243, 177, 125, 0.18) 42%);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03);
}
.quick-food-grid { .quick-food-grid {
display: grid; display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-columns: repeat(3, minmax(0, 1fr));
+2 -2
View File
@@ -53,7 +53,7 @@
{% if kind == 'food' %} {% if kind == 'food' %}
<label> <label>
Passt eher zu Baustein
<select name="base_type"> <select name="base_type">
{% for value, label in builder_options %} {% for value, label in builder_options %}
<option value="{{ value }}" {% if form_data.base_type == value %}selected{% endif %}>{{ label }}</option> <option value="{{ value }}" {% if form_data.base_type == value %}selected{% endif %}>{{ label }}</option>
@@ -232,7 +232,7 @@
<input type="text" name="quick_food_name" value="{{ form_data.quick_food_name }}" placeholder="z. B. Hüttenkäse"> <input type="text" name="quick_food_name" value="{{ form_data.quick_food_name }}" placeholder="z. B. Hüttenkäse">
</label> </label>
<label> <label>
Passt eher zu Baustein
<select name="quick_food_base_type"> <select name="quick_food_base_type">
{% for value, label in builder_options %} {% for value, label in builder_options %}
<option value="{{ value }}" {% if form_data.quick_food_base_type == value %}selected{% endif %}>{{ label }}</option> <option value="{{ value }}" {% if form_data.quick_food_base_type == value %}selected{% endif %}>{{ label }}</option>