1 Commits
12 changed files with 51 additions and 37 deletions

No files matched your search

+6
View File
@@ -4,6 +4,12 @@ Alle Änderungen an Grotti. Format nach [Keep a Changelog](https://keepachangelo
## [Unreleased] ## [Unreleased]
## [2.2.1] – 2026-10-15
### Geändert
- Anleitungen mit relativen Bild- und Kapitelpfaden (`../web/static/doku/…`, `Anleitung-*.md`), damit Screenshots und Querverweise auch auf Git lesbar sind; die App schreibt sie beim Rendern auf `/static/…` bzw. `/doku/…` um.
## [2.2.0] – 2026-10-15 ## [2.2.0] – 2026-10-15
### Neu ### Neu
+4 -4
View File
@@ -2,7 +2,7 @@
Stand **15.10.2026**. Mehrfarb-Drucke brauchen vor dem Start eine Zuordnung Datei-Farbe → ACE-Platz und eine passende Spule am Drucker. Stand **15.10.2026**. Mehrfarb-Drucke brauchen vor dem Start eine Zuordnung Datei-Farbe → ACE-Platz und eine passende Spule am Drucker.
![ACE-Zuordnung beim Senden](/static/doku/ace-zuordnung.png) ![ACE-Zuordnung beim Senden](../web/static/doku/ace-zuordnung.png)
## Spule einlegen ## Spule einlegen
@@ -12,7 +12,7 @@ Stand **15.10.2026**. Mehrfarb-Drucke brauchen vor dem Start eine Zuordnung Date
Es gibt **kein freies Spulen-Dropdown** beim Start: Grotti nimmt die Rolle(n), die am Ziel-Drucker liegen. Material-Mismatch oder zu wenig Rest → Warnung vor dem Start. Es gibt **kein freies Spulen-Dropdown** beim Start: Grotti nimmt die Rolle(n), die am Ziel-Drucker liegen. Material-Mismatch oder zu wenig Rest → Warnung vor dem Start.
Etiketten mit QR: [Material und mehr](Anleitung-Material). Etiketten mit QR: [Material und mehr](Anleitung-Material.md).
## ACE-Map beim Senden ## ACE-Map beim Senden
@@ -35,5 +35,5 @@ Externe Spule / keine ACE-Slots: keine `.acm` nötig.
## Weiter ## Weiter
- [Dateien senden](Anleitung-Dateien) - [Dateien senden](Anleitung-Dateien.md)
- [Material](Anleitung-Material) - [Material](Anleitung-Material.md)
+6 -6
View File
@@ -2,7 +2,7 @@
Stand **15.10.2026**. Seite `/dateien` — Bibliothek links, Senden rechts. Stand **15.10.2026**. Seite `/dateien` — Bibliothek links, Senden rechts.
![Dateien: Bibliothek und Senden](/static/doku/dateien-flow.png) ![Dateien: Bibliothek und Senden](../web/static/doku/dateien-flow.png)
## Bibliothek ## Bibliothek
@@ -31,7 +31,7 @@ Unter Optionen u. a.:
- **Bettnetz / Auto-Level** beim MQTT-Start (Anycubic) - **Bettnetz / Auto-Level** beim MQTT-Start (Anycubic)
- Maschinen-Override, Projekt zuweisen - Maschinen-Override, Projekt zuweisen
- **ACE-Zuordnung** — siehe [ACE und Spulen](Anleitung-ACE) - **ACE-Zuordnung** — siehe [ACE und Spulen](Anleitung-ACE.md)
## Warum es dauert ## Warum es dauert
@@ -39,11 +39,11 @@ Große Dateien brauchen oft **eine Minute**. In der Sidebar unter **Senden** sie
## Nach dem Start ## Nach dem Start
- Fortschritt auf der [Wand](Anleitung-Wand) und in der Sidebar **Läuft jetzt** - Fortschritt auf der [Wand](Anleitung-Wand.md) und in der Sidebar **Läuft jetzt**
- Bei „Wenn frei“: Eintrag unter [Warteschlange](Anleitung-Warteschlange) - Bei „Wenn frei“: Eintrag unter [Warteschlange](Anleitung-Warteschlange.md)
- Später unter **Protokoll** mit **Nochmal** (inkl. gespeicherter ACE-Map) - Später unter **Protokoll** mit **Nochmal** (inkl. gespeicherter ACE-Map)
## Weiter ## Weiter
- [ACE und Spulen](Anleitung-ACE) - [ACE und Spulen](Anleitung-ACE.md)
- [Warteschlange](Anleitung-Warteschlange) - [Warteschlange](Anleitung-Warteschlange.md)
+4 -4
View File
@@ -34,7 +34,7 @@ copy config.example.json config.json
| `energy`, `telegram`, `alerts` | Kosten im Protokoll und Telegram — später auch unter Einstellungen. | | `energy`, `telegram`, `alerts` | Kosten im Protokoll und Telegram — später auch unter Einstellungen. |
| `secret_key` | Für Login-Sessions. Beim ersten Start wird ein Wert erzeugt, wenn leer. | | `secret_key` | Für Login-Sessions. Beim ersten Start wird ein Wert erzeugt, wenn leer. |
Drucker beim ersten Start über `drucker.json` (Seed). Danach pflegt man sie unter [Einstellungen](Anleitung-Einstellungen). Drucker beim ersten Start über `drucker.json` (Seed). Danach pflegt man sie unter [Einstellungen](Anleitung-Einstellungen.md).
```json ```json
[{ "name": "Kobra 3 da26", "host": "10.10.1.60" }] [{ "name": "Kobra 3 da26", "host": "10.10.1.60" }]
@@ -50,7 +50,7 @@ Die Familie (Kobra 3 oder S1) liest Grotti aus dem Namen.
Dann <http://127.0.0.1:8770/> öffnen. Beim ersten Start legst du den Admin-Benutzer an. Nach Code-Änderungen an Python oft neu starten. Dann <http://127.0.0.1:8770/> öffnen. Beim ersten Start legst du den Admin-Benutzer an. Nach Code-Änderungen an Python oft neu starten.
![Druckerwand nach dem Start](/static/doku/wand-uebersicht.png) ![Druckerwand nach dem Start](../web/static/doku/wand-uebersicht.png)
## Sicherheit ## Sicherheit
@@ -61,6 +61,6 @@ Dann <http://127.0.0.1:8770/> öffnen. Beim ersten Start legst du den Admin-Benu
## Weiter ## Weiter
- [Oberfläche](Anleitung-Oberflaeche) — Navigation und Sidebar - [Oberfläche](Anleitung-Oberflaeche.md) — Navigation und Sidebar
- [Dateien senden](Anleitung-Dateien) — erster Druck - [Dateien senden](Anleitung-Dateien.md) — erster Druck
- Ausführlich im `README.md` im Projektordner - Ausführlich im `README.md` im Projektordner
+4 -4
View File
@@ -2,11 +2,11 @@
Stand **15.10.2026**. Seite `/einstellungen` — Drucker, Automatik, Anzeige, Telegram, Energie. Stand **15.10.2026**. Seite `/einstellungen` — Drucker, Automatik, Anzeige, Telegram, Energie.
![Einstellungen: Drucker](/static/doku/einstellungen-drucker.png) ![Einstellungen: Drucker](../web/static/doku/einstellungen-drucker.png)
## Dieser Browser ## Dieser Browser
- **Desktop** oder **Regal (Touch)** — nur lokal im Browser, siehe [Oberfläche](Anleitung-Oberflaeche). - **Desktop** oder **Regal (Touch)** — nur lokal im Browser, siehe [Oberfläche](Anleitung-Oberflaeche.md).
## Automatik ## Automatik
@@ -40,5 +40,5 @@ Watt und Strompreis für die Kosten im **Protokoll**. Optional Trockner/Ausschus
## Weiter ## Weiter
- [Einrichtung](Anleitung-Einrichtung) (Config-Datei) - [Einrichtung](Anleitung-Einrichtung.md) (Config-Datei)
- [Störungen](Anleitung-Stoerungen) - [Störungen](Anleitung-Stoerungen.md)
+3 -3
View File
@@ -2,7 +2,7 @@
Stand **15.10.2026**. Spulen, Etiketten, Projekte, Protokoll, Kameras, Aktivität und Ideen. Stand **15.10.2026**. Spulen, Etiketten, Projekte, Protokoll, Kameras, Aktivität und Ideen.
![Material: Spulen](/static/doku/material-spule.png) ![Material: Spulen](../web/static/doku/material-spule.png)
## Material ## Material
@@ -38,5 +38,5 @@ Zeitstrahl: Starts, Schritte, Fertig, Fehler, Abbrüche, offline. Filter nach Dr
## Weiter ## Weiter
- [ACE und Spulen](Anleitung-ACE) - [ACE und Spulen](Anleitung-ACE.md)
- [Einstellungen](Anleitung-Einstellungen) - [Einstellungen](Anleitung-Einstellungen.md)
+3 -3
View File
@@ -8,7 +8,7 @@ Links (Desktop): **Drucker**, **Dateien**, **Kameras**, **Aktivität**, **Wartes
Unter ca. 760 px: untere Leiste mit den wichtigsten Seiten. Das Seitenmenü lässt sich zur Icon-Rail einklappen. Unter ca. 760 px: untere Leiste mit den wichtigsten Seiten. Das Seitenmenü lässt sich zur Icon-Rail einklappen.
![Seitenleiste mit Live-Boxen](/static/doku/sidebar-live.png) ![Seitenleiste mit Live-Boxen](../web/static/doku/sidebar-live.png)
## Live-Leiste ## Live-Leiste
@@ -33,5 +33,5 @@ Shortcut in der URL: `?shelf=1` bzw. `?shelf=0`. Nur dieser Browser (`localStora
## Weiter ## Weiter
- [Druckerwand](Anleitung-Wand) - [Druckerwand](Anleitung-Wand.md)
- [Dateien senden](Anleitung-Dateien) - [Dateien senden](Anleitung-Dateien.md)
+3 -3
View File
@@ -31,7 +31,7 @@ Was tun: Abbruch über Grotti (nicht nur am Display), auf der Wand den Task-Hinw
## ACE / „cannot parse“ ## ACE / „cannot parse“
ACE-Zuordnung unter Dateien → Optionen prüfen. Spulen am richtigen Platz. Siehe [ACE und Spulen](Anleitung-ACE). ACE-Zuordnung unter Dateien → Optionen prüfen. Spulen am richtigen Platz. Siehe [ACE und Spulen](Anleitung-ACE.md).
## Offline ## Offline
@@ -52,5 +52,5 @@ Oft noch Verarbeitung auf dem Drucker. In der Sidebar unter **Senden** den Forts
## Weiter ## Weiter
- [Druckerwand](Anleitung-Wand) - [Druckerwand](Anleitung-Wand.md)
- [Warteschlange](Anleitung-Warteschlange) - [Warteschlange](Anleitung-Warteschlange.md)
+6 -6
View File
@@ -2,7 +2,7 @@
Stand **15.10.2026**. Startseite `/` — eine Karte je Drucker. Klick öffnet das Cockpit. Stand **15.10.2026**. Startseite `/` — eine Karte je Drucker. Klick öffnet das Cockpit.
![Druckerwand](/static/doku/wand-uebersicht.png) ![Druckerwand](../web/static/doku/wand-uebersicht.png)
## Karte ## Karte
@@ -30,7 +30,7 @@ Während eines Abräum-Ablaufs blendet Grotti „Platte geräumt“ aus — der
URL mit Hash: `/#<host>` (z. B. nach Klick auf die Karte). URL mit Hash: `/#<host>` (z. B. nach Klick auf die Karte).
![Cockpit eines Druckers](/static/doku/cockpit.png) ![Cockpit eines Druckers](../web/static/doku/cockpit.png)
Inhalt: Inhalt:
@@ -45,10 +45,10 @@ Inhalt:
- Gesperrte Drucker (Einstellungen) starten keine neuen „wenn frei“-Jobs. - Gesperrte Drucker (Einstellungen) starten keine neuen „wenn frei“-Jobs.
- Live-Daten kommen mit wenigen Sekunden Verzögerung. - Live-Daten kommen mit wenigen Sekunden Verzögerung.
- Ein Task-Hinweis auf der Karte zeigt, wenn auf dem Drucker noch ein alter Auftrag hängt — siehe [Störungen](Anleitung-Stoerungen). - Ein Task-Hinweis auf der Karte zeigt, wenn auf dem Drucker noch ein alter Auftrag hängt — siehe [Störungen](Anleitung-Stoerungen.md).
## Weiter ## Weiter
- [Dateien senden](Anleitung-Dateien) - [Dateien senden](Anleitung-Dateien.md)
- [Warteschlange und Ablauf](Anleitung-Warteschlange) - [Warteschlange und Ablauf](Anleitung-Warteschlange.md)
- [Störungen](Anleitung-Stoerungen) - [Störungen](Anleitung-Stoerungen.md)
+3 -3
View File
@@ -2,7 +2,7 @@
Stand **15.10.2026**. Aufträge „wenn frei“, Priorität, und der Kobra-3-Ablauf (drucken → abkühlen → schieben → tasten). Stand **15.10.2026**. Aufträge „wenn frei“, Priorität, und der Kobra-3-Ablauf (drucken → abkühlen → schieben → tasten).
![Warteschlange](/static/doku/warteschlange.png) ![Warteschlange](../web/static/doku/warteschlange.png)
## Seite Warteschlange ## Seite Warteschlange
@@ -48,5 +48,5 @@ Aktueller Schritt: auf der Druckerkarte und in der Sidebar. Abbrechen an beiden
## Weiter ## Weiter
- [Druckerwand](Anleitung-Wand) - [Druckerwand](Anleitung-Wand.md)
- [Störungen](Anleitung-Stoerungen) - [Störungen](Anleitung-Stoerungen.md)
+1 -1
View File
@@ -1,3 +1,3 @@
"""Version von Grotti (SemVer). Bei jeder Änderung CHANGELOG.md mitführen.""" """Version von Grotti (SemVer). Bei jeder Änderung CHANGELOG.md mitführen."""
__version__ = "2.2.0" __version__ = "2.2.1"
+8
View File
@@ -519,7 +519,15 @@ def create_app(cfg):
return labels.get(name, name.replace("Anleitung-", "").replace("-", " ")) return labels.get(name, name.replace("Anleitung-", "").replace("-", " "))
def render_markdown(path): def render_markdown(path):
"""Markdown für die App: Git-relative Bild-/Kapitelpfade → App-URLs."""
text = path.read_text(encoding="utf-8") text = path.read_text(encoding="utf-8")
# docs/… → web/static/… im Repo; unter /doku als /static/…
text = text.replace("../web/static/", "/static/")
text = re.sub(
r"\]\((Anleitung-[A-Za-z0-9_-]+)(?:\.md)?\)",
r"](/doku/\1)",
text,
)
html = markdown.markdown(text, extensions=["tables", "fenced_code", "sane_lists"]) html = markdown.markdown(text, extensions=["tables", "fenced_code", "sane_lists"])
return Markup(html) return Markup(html)