10 KiB
10 KiB
Changelog
Alle Änderungen an Grotti. Format nach Keep a Changelog, Versionen nach SemVer.
[Unreleased]
Neu
- Cursor-Regel
.cursor/rules/grotti.mdc(Changelog, Doku, Version, Sicherheit).
[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/, AusnahmeGrottiError, Standard-Datenbankgrotti. - Oberfläche, CSS (
grotti.css), G-code-Viewer undlocalStorage-Schlüssel (mit Fallback vonfarm-display). - Doku-URLs ohne
Farm--Präfix (/doku/Abraeumen, …). - Git-Tags
vX.Y.Zstattfarm-vX.Y.Z.
Behoben
- Schieben: nach hinten nicht mehr mit
G0 Z2 F3000(Vollgas) senken — langsamF400; vor dem Senken Z ≥ ~15 mm prüfen. - Abkühlen: Slice-Ende hebt Z nicht — Park relativ Z+40, gekappt gegen
toolhead.axis_maximumZ. 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 entferntM84bei 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_clearwurde schon beim Start gesetzt. Jetzt erst bei Druckende (Watcher); Streifen bleibt während Heizen/Queue ausgeblendet. - Abräumen robust:
M84aus Upload streichen; Idle während Druck/Cool; nach M84SET_KINEMATICnur 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-cancelledbeim 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_mapund Bettnetz insendsfür „Nochmal“; Protokoll-Select sortiert nach Drucker.- three.js lokal; Toolpath-Cache unter
data/toolpath/; Tests untertests/. - 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; Toolpathversion5 (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,
PROBEMitte, keinG28 Z, danach Liftz_clear). - Drucker-Details als Cockpit: Kamera, Status, Steuerung, 3D-Pfad, Bettnetz; zuklappbar (
farm-desk-closed).
Behoben
- Cockpit: Kamera-Polling ließ
no-camund 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.6ohne 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=0und zeigte alle Drucker als „weg“. - Steuerung setzte Flow immer auf 100 %; jetzt
extrude_factorvom Drucker. - E-Stop nur noch bei aktivem Druck, Zwei-Klick, Hinweis auf Strom aus/an.
- Ablauf: Phase
startingvor 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_statusmit. - Live-Zustand kommt vom Watcher (eine Quelle).
- Summary „frei“ ignorierte belegte Platte; Queue-Status von außen nicht mehr frei auf
donesetzbar. - „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,M107nach Schieben. - MQTT-Druckstart-Timeout vs.
info/querytaskid; 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 (Artabbruch), „wieder erreichbar“, Einreihen und Abbrechen von Hand. GET /api/v1/ereignissefiltert nachhost,kind(kommagetrennt) undsince.- Dateien hochladen per Ziehen auf die Bibliothek.
- Handbuch unter
/dokumit Inhaltsverzeichnis;README.mdfü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_axesim Leerlauf galt als Fehler und blockierte Abläufe; hängenderprint_stats=errorwird 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).