154 lines
10 KiB
Markdown
154 lines
10 KiB
Markdown
# Changelog
|
||
|
||
Alle Änderungen an Grotti. Format nach [Keep a Changelog](https://keepachangelog.com/de/1.1.0/), Versionen nach [SemVer](https://semver.org/lang/de/).
|
||
|
||
## [Unreleased]
|
||
|
||
### Neu
|
||
|
||
- Cursor-Regel `.cursor/rules/grotti.mdc` (Changelog, Doku, Version, Sicherheit).
|
||
- Doku [Anycubic-Stack](docs/Anycubic-Stack.md): Schichten gklib/gkapi/Rinkhals, MQTT Start/Stop/10101, ACE/`.acm`, FIRMWARE_RESTART — aus Klipper-go und Rinkhals-Quellcode.
|
||
- Doku [Glossar](docs/Glossar.md): Moonraker, Mainsail, gklib, Rinkhals, OctoPrint und Nachbarn.
|
||
|
||
## [2.0.0] – 2026-10-15
|
||
|
||
### Neu
|
||
|
||
- Einstellungen: **FQDN** (öffentliche Basis-URL) für QR-Codes auf Spulen-Etiketten; leer = Request-Host.
|
||
|
||
### Geändert
|
||
|
||
- Umbenennung Farm → **Grotti**, eigenes Repo.
|
||
- Python-Paket `farm/` → `grotti/`, Ausnahme `GrottiError`, Standard-Datenbank `grotti`.
|
||
- Oberfläche, CSS (`grotti.css`), G-code-Viewer und `localStorage`-Schlüssel (mit Fallback von `farm-display`).
|
||
- Doku-URLs ohne `Farm-`-Präfix (`/doku/Abraeumen`, …).
|
||
- Git-Tags `vX.Y.Z` statt `farm-vX.Y.Z`.
|
||
|
||
### Behoben
|
||
|
||
- Schieben: nach hinten nicht mehr mit `G0 Z2 F3000` (Vollgas) senken — langsam `F400`; vor dem Senken Z ≥ ~15 mm prüfen.
|
||
- Abkühlen: Slice-Ende hebt Z nicht — Park relativ **Z+40**, gekappt gegen `toolhead.axis_maximum` Z. Hub wird geprüft; sonst Abbruch vor Schieben.
|
||
|
||
## [1.4.0] – 2026-10-15
|
||
|
||
### Neu
|
||
|
||
- Anzeige **Desktop / Regal (Touch)** in Einstellungen (nur dieser Browser, `localStorage`); Shortcut `?shelf=1`.
|
||
- Seitenmenü einklappbar (Icon-Rail).
|
||
- Bibliothek: G-code-Footer-Metadaten (`slice_meta`: Schicht, Düse, Temps, …); Chips + Info-Popup.
|
||
- Warteschlange zeigt Direktstarts unter „Läuft“ (wie Sidebar „Läuft jetzt“).
|
||
- Cockpit: Bauraumtemperatur und zusätzliche Lüfter wenn Moonraker sie liefert; Icons für Düse/Bett/Lüfter.
|
||
- Ablauf: Three.js-Draufsicht der Schiebe-Bahn.
|
||
- Seitenfuß: © by dominic@gundel.dev.
|
||
- Interne Notizen zu Markt, Recht und Homepage unter `intern/` (nicht unter `/doku`).
|
||
- Doku: Voraussetzungen (Moonraker, Kobra 3 und Kobra S1) und Haftung (Entwurf).
|
||
- Statische Homepage-Vorschau `site/index.html`. Die Wand unter `/` bleibt.
|
||
- Doku Abräumen: Slice-Ende Kobra 3 Present `X250 Y220` + `M84`; Farm entfernt `M84` bei Ablauf mit Cool/Sweep.
|
||
|
||
### Geändert
|
||
|
||
- Cockpit ohne leere Kamera-Fläche wenn Kamera zu oder fehlt (`cam-collapsed`, eine Spalte).
|
||
- Schieben: Default/Limit **Y hinten 250**; Tasten-Grenze vorübergehend **3,0 mm** (Düsen-Klumpen).
|
||
|
||
### Behoben
|
||
|
||
- Druckwarteschlange startete nur **einen** Drucker pro Tick (~8 s). Mehrere freie Drucker starten jetzt im selben Durchlauf parallel (Upload je Host im Worker).
|
||
- Nach Druckstart kurz „Platte belegt“: `needs_clear` wurde schon beim Start gesetzt. Jetzt erst bei Druckende (Watcher); Streifen bleibt während Heizen/Queue ausgeblendet.
|
||
- Abräumen robust: `M84` aus Upload streichen; Idle während Druck/Cool; nach M84 `SET_KINEMATIC` nur mit echter XYZ; Schieben erst Y hinten dann Z; kein Extra-Mitten-Pass; Tasten mit Mesh/`Result is z=` (keine Fake-Z).
|
||
- Abkühlen-Park: Retry + Meldung; Anzeige zeigt wieder Warte-Temps (nicht nur „Mitte“).
|
||
- Druckstart: Worker weg → erneut starten; kein Jump auf Cool bei stale `complete`; kurzes Moonraker-`cancelled` beim LeviQ zählt nicht; `keep_motors`/`row`-Bug behoben.
|
||
|
||
## [1.3.0] – 2026-10-14
|
||
|
||
### Neu
|
||
|
||
- Cockpit: **Objekte ausschließen** (Klipper Exclude-Object) — Polygone im 3D-Pfad, Liste, Zwei-Klick → `EXCLUDE_OBJECT` (Whitelist, nur printing/paused). Ohne `[exclude_object]` oder DEFINEs bleibt das Panel aus.
|
||
- Seite **Warteschlange**: wartend, laufend, Fehler und Historie; Priorität und Abbrechen.
|
||
- Automatik-Schalter und Drucker „gesperrt“ (Einstellungen): kein neuer „wenn frei“-Start.
|
||
- Spulen an den Ort: Unique-Platz je Drucker, Auflösung beim Start, Material-Prüfung Datei vs. Rolle, „Einlegen“/„Ins Regal“, Material-Liste nach Ort.
|
||
- Senden zeigt eingelegte Rollen je Ziel-Drucker statt freiem Spulen-Dropdown; Projektwahl im Flow.
|
||
- `ace_map` und Bettnetz in `sends` für „Nochmal“; Protokoll-Select sortiert nach Drucker.
|
||
- three.js lokal; Toolpath-Cache unter `data/toolpath/`; Tests unter `tests/`.
|
||
- Watcher: Protokoll-Abgleich und Spulenabzug nach „fertig“; ACE-Abzug anteilig je Platz.
|
||
- Seitenleiste „Aufgaben“: Drucker mit belegter Platte, die kein Ablauf räumt, mit Knopf „geräumt“ (Zwei-Klick). `GET /api/v1/aufgaben`.
|
||
- Gestoppter Ablauf lässt sich in der Seitenleiste ab dem Schritt fortsetzen, an dem er stand (▶).
|
||
- Druckerkarte zeigt einen gestoppten Ablauf als roten Streifen mit „Weiter ab …“ und „Verwerfen“.
|
||
|
||
### Geändert
|
||
|
||
- 3D-Pfad: freieres Orbit, Zoom delta-basiert (Chrome), Schwenken/Pinch, Doppelklick-Reset; gedruckt leicht verdickt, Rest transparent; Fortschritt nach Datei-`progress`; Toolpath `version` 5 (segmenttreu, `E.39`/`Z.6`); Bettgitter 10 mm mit mm-Sprites und Legende.
|
||
- UI-Polish: konsistentes Icon-Set (Lucide-Stil), kürzere Microcopy, einheitliche Seitenköpfe/Buttons, kompakte Tabellen, Formular-Feldraster, Empty-States, ruhigere Sidebar und Mobile-Nav.
|
||
- **Material**: Reiter Spulen / Sorten. Spulen-Liste ohne dauerhaft offenes Formular. Sorten CRUD per API. Ort zeigt Drucker + ACE/extern. Scan im Seitenkopf.
|
||
- Bestätigungen überall Zwei-Klick (`armButton`), Rückmeldungen über Toast. Wortwahl „offline“ / „Auslastung“ vereinheitlicht.
|
||
- Ablauf-Standard: Drucken → Abkühlen → Schieben → **Tasten** (Mesh aus, relativ +5 mm, `PROBE` Mitte, kein `G28 Z`, danach Lift `z_clear`).
|
||
- Drucker-Details als Cockpit: Kamera, Status, Steuerung, 3D-Pfad, Bettnetz; zuklappbar (`farm-desk-closed`).
|
||
|
||
### Behoben
|
||
|
||
- Cockpit: Kamera-Polling ließ `no-cam` und Layout ruckeln; 3D-Orbit sprang zurück. Kamera lädt vor und behält das letzte Bild; Pfad setzt die Ansicht nur beim ersten Laden zurück.
|
||
- Toolpath-Parser ignorierte `E.39`/`Z.6` ohne führende Null — Extrusion/Infill fehlten fast komplett.
|
||
- Ablauf hing nach Farm-Neustart bei „tastet Mitte…“ / „räumt ab…“: Worker fehlte, Phase blieb stehen — Schieben/Tasten starten erneut.
|
||
- Kameras-Seite holte `live=0` und zeigte alle Drucker als „weg“.
|
||
- Steuerung setzte Flow immer auf 100 %; jetzt `extrude_factor` vom Drucker.
|
||
- E-Stop nur noch bei aktivem Druck, Zwei-Klick, Hinweis auf Strom aus/an.
|
||
- Ablauf: Phase `starting` vor Upload, Timeout wenn der Druck nicht anläuft; lange Schritte in Worker-Threads.
|
||
- „Nächster freier“ übernahm die ACE-Map eines anderen Druckers.
|
||
- Drucker Host ändern/löschen zieht Queue, Ereignisse und `bed_status` mit.
|
||
- Live-Zustand kommt vom Watcher (eine Quelle).
|
||
- Summary „frei“ ignorierte belegte Platte; Queue-Status von außen nicht mehr frei auf `done` setzbar.
|
||
- „Läuft jetzt“ zeigte nur Queue-Aufträge; Direktstarts stehen mit Fortschritt dabei.
|
||
- Abkühlen: Idle-Timeout / `SET_KINEMATIC_POSITION`, Anzeige mit Zielwerten, Düse zur Mitte, `M107` nach Schieben.
|
||
- MQTT-Druckstart-Timeout vs. `info/query` taskid; Prüfen/Timeouts/Bettnetz; Karten- und Sidebar-Randfälle.
|
||
|
||
## [1.1.0] – 2026-10-13
|
||
|
||
### Neu
|
||
|
||
- Live-Leiste in der Sidebar: „Läuft jetzt“, „Wartet“, „Alerts“ und „Senden“ mit Zählern, scrollbar, immer sichtbar.
|
||
- Druckerkarte zeigt laufenden Ablauf mit Schrittleiste (Drucken, Abkühlen, Schieben, Prüfen), Wiederholung und Abbrechen; wartende Jobs je Drucker.
|
||
- Seite **Aktivität**: alle Ereignisse als Zeitstrahl, Filter nach Drucker, Art und Zeitraum.
|
||
- Ereignisse für jeden Ablauf-Schritt, jede Wiederholung, geräumte Fehler und Abbrüche (Art `ablauf`). Telegram dafür abschaltbar (Standard aus).
|
||
- Senden als Flow: Datei, Ziel (Drucker-Chips mit Live-Zustand), Start (Jetzt, Wenn frei, Nächster freier) mit Zwei-Klick-Bestätigung. Ablauf als eigener Reiter.
|
||
- Version im Sidebar-Fuß, `GET /api/v1/version`, dieser Changelog und die Technik-Doku unter `/doku`.
|
||
- Designsystem: Zustandsfarben, Chips, Schrittleiste, Kacheln, Temperaturbalken, Hinweise, Toasts.
|
||
- Ereignisse auch für Druckstart, Pause, Fortsetzen (Art `start`), Abbruch (Art `abbruch`), „wieder erreichbar“, Einreihen und Abbrechen von Hand.
|
||
- `GET /api/v1/ereignisse` filtert nach `host`, `kind` (kommagetrennt) und `since`.
|
||
- Dateien hochladen per Ziehen auf die Bibliothek.
|
||
- Handbuch unter `/doku` mit Inhaltsverzeichnis; `README.md` für Einrichtung und API.
|
||
|
||
### Geändert
|
||
|
||
- Druckerkarte neu geordnet: Fertig-Uhrzeit groß, Fortschritt mit Prozent, drei Kacheln statt Zahlenzeile, IP und Mainsail im Detailteil.
|
||
- Technik-Doku liegt jetzt im Tool unter `docs/`; das Tool ist vom übrigen Repo unabhängig.
|
||
- Alerts in der Sidebar verlinken auf die Aktivität. Ablauf-Schritte und Starts zählen nicht als Alert (gleich als gelesen gespeichert).
|
||
- Telegram-Schalter „Ablauf-Schritte“ und „Druckstart und Pause“ in den Einstellungen; Abbrüche laufen unter „Fehler“.
|
||
- Die Queue räumt einen hängenden Fehler nur noch, wenn für den Drucker wirklich ein Auftrag wartet.
|
||
- Auf dem Handy wird „Wartet“ ausgeblendet, solange nichts wartet.
|
||
|
||
### Behoben
|
||
|
||
- Queue und Ablauf waren in der Sidebar unter dem Bildschirmrand abgeschnitten.
|
||
- Ereignisse gingen durch die 30-s-Entprellung verloren; entprellt wird nur noch Telegram.
|
||
- Leeres `homed_axes` im Leerlauf galt als Fehler und blockierte Abläufe; hängender `print_stats=error` wird vor dem Start geräumt.
|
||
|
||
## [1.0.0] – 2026-10-13
|
||
|
||
Erster festgehaltener Stand.
|
||
|
||
### Neu
|
||
|
||
- Druckerwand mit Live-Zustand über Moonraker, Kamera, Bettnetz, 3D-Pfad und leichter Steuerung (Temperatur, Speed, Flow, Lüfter, E-Stop).
|
||
- Dateien: Bibliothek mit Suche und Filter, Upload, Ordnerüberwachung, Metadaten aus G-code und 3MF.
|
||
- Senden im Hintergrund mit Fortschritt an mehrere Drucker, ACE-Zuordnung mit `.acm`, Bettnetz vor dem Druck per Anycubic-MQTT.
|
||
- Warteschlange „wenn frei“ mit Priorität; Ablauf für Kobra 3 (Drucken, Abkühlen, Schieben, Prüfen, mehrfach).
|
||
- „Platte geräumt“ als Quittierung, die „wenn frei“ freigibt.
|
||
- Material, Spulen, ACE-Plätze, Etiketten; Projekte mit Kalkulation; Protokoll mit Spulenabzug und „Nochmal“.
|
||
- Einstellungen: Druckernamen, Telegram-Alerts, Energie.
|
||
|
||
### Behoben
|
||
|
||
- Hängender Fehlerzustand: „Fehler löschen“ statt Firmware-Restart (GoKlipper deadlockt bei `FIRMWARE_RESTART`).
|
||
- Heizung aus nach Druckfehler.
|
||
- Rinkhals-Kopfzeile vor dem Upload, damit die Kobra die Datei nicht doppelt liest.
|
||
- Nach Abbruch zusätzlich MQTT-Stop, sonst blieb der Anycubic-Task aktiv (10101).
|