Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7da895bbcd |
No files matched your search
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 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)
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Stand **15.10.2026**. Seite `/dateien` — Bibliothek links, Senden rechts.
|
Stand **15.10.2026**. Seite `/dateien` — Bibliothek links, Senden rechts.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 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)
|
||||||
@@ -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.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 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
|
||||||
@@ -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.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 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)
|
||||||
@@ -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
|
## 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)
|
||||||
@@ -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.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 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)
|
||||||
@@ -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)
|
||||||
@@ -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.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 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).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
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)
|
||||||
@@ -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).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 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
@@ -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"
|
||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user