Files
grotti/CHANGELOG.md
T

12 KiB
Raw Permalink Blame History

Changelog

Alle Änderungen an Grotti. Format nach Keep a Changelog, Versionen nach SemVer.

[Unreleased]

[2.2.0] – 2026-10-15

Neu

  • Benutzerverwaltung: lokaler Login (Admin/Operator), Bootstrap „Ersten Admin anlegen“, Session-Cookies, CSRF, Login-Rate-Limit.
  • API-Tokens (grt_…) unter Einstellungen für App, Home-Automation und MCP; Shared-config.token bleibt als Migrationsbrücke (Admin).
  • MCP-Server (python -m grotti.mcp_server): Lesen + bestätigte Steuer-Tools; GROTTI_MCP_READ_ONLY; Doku docs/internal/MCP.md.
  • OIDC-Platzhalter in Config (oauth) für späteren Anschluss.
  • Schema: users, api_tokens, oauth_identities.
  • Logo / Favicon: Markenzeichen in der Sidebar und als Favicon (web/static/brand/).
  • Login: statt Nutzhinweis wechselnde Ingenieurszitate (ein Zitat pro Tag).
  • Umfangreiche Bedienungsanleitung unter /doku (docs/Anleitung-*.md) mit UI-Screenshots.
  • Task-Hygiene wie Rinkhals (Kobra 3 und S1): ensure_task_free vor Start; bei 10101 cancel + Retry.
  • Live-Snapshot anycubic_task auf der Wand.
  • Cursor-Regel .cursor/rules/grotti.mdc.

Geändert

  • /doku zeigt nur noch Anleitung-*.md; Technik/Debug unter docs/internal/ (nicht in der App). Changelog nicht mehr in der UI.
  • Anleitungen ohne interne Stack-/Debug-Details.
  • HTML und API hinter Auth (außer Setup/Login); kein Token mehr im Meta-Tag.
  • Kamera im Cockpit: Layout-Klassen bleiben erhalten; ohne erreichbare Webcam kein Platzreservierung; has_camera im Drucker-Payload.
  • POST /api/v1/druck-queue braucht confirm: true (wie Senden).

Behoben

  • Cockpit: periodisches Layout-Ruckeln durch className-Reset der Kamera-Folds.
  • Kameras-Seite und leere Flotte: echte Empty-States statt Raw-API-URL / leerem Raster.
  • Spulen-Etikett: QR-Code wieder sichtbar — qrcode.min.js lokal.

[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 [email protected].
  • 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).