29 KiB
29 KiB
Changelog
Alle Änderungen an Grotti. Format nach Keep a Changelog, Versionen nach SemVer.
[Unreleased]
[3.5.0] – 2026-10-19
Neu
- Doku: interne Makro-Referenz
docs/internal/Makros-Kobra.md(Nicht-tun, Vanilla-Klipper-Alltag, ACE, LeviQ/Wipe für S1 und K3). - Pagination: Dateien, Protokoll, Material, Aufträge, Warteschlange, Aktivität, Projekte — max. 40 Zeilen pro Seite (Zurück/Weiter).
- Logging:
log_levelin der Config; Kernpfade schreiben nach stdout (unter systemd →journalctl -u grotti). - Debian-Paket:
packaging/build-deb.shbaut.debmit venv, systemd-Unit und PostgreSQL-postinst(Peer-Auth). Anleitung:docs/Anleitung-Installation-Pi.md.
Geändert
- Config:
GROTTI_CONFIGbzw./etc/grotti/config.jsonfür Paket-Install; sonst Repo-config.json. - README: Banner, Badges, Feature-Übersicht und Community-Screenshots oben; Setup/API darunter; Pi-
.deb-Hinweis.
Behoben
- Queue „braucht Eryone PLA Lite“ trotz PLA-Spule: Basis-Profil (ohne Meta/Matte/Silk) matcht nach Typ; Slice-Hex-Farbe (
#26A69A) blockiert Lagerfarbe „Grau“ nicht mehr. - Dateien Info-Popup: Details-Popup wird nicht mehr vom Bibliothek-Scroll abgeschnitten; Position fixed mit Flip nach oben, besserer Kontrast.
[3.4.0] – 2026-10-18
Neu
- Dateien: Umbenennen in der Bibliothek (Stift-Icon; Endung bleibt erhalten).
Behoben
- Queue „druckt schon“ bei Folgejobs: Einfach-Druck bleibt
runningbis Moonraker fertig — nicht mehr sofortdonenach Start (sonst startete der nächste Job zu früh). - Bedarf „443 g fehlen“ trotz voller Spulen: Slice-Farbe
#26A69Amatchte nicht Lagerfarbe „Grau“ → Rest 0. Bei Hex-Farbe zählt jetzt der Rest gleicher Sorte; archivierte Spulen nicht. - Falsches „Material nachlegen“ bei manueller Pause: Anycubic meldet
active_filament.empty=trueauch ohne Runout (tool/gate= −1). Heuristik nur noch bei Meldung/reason_for_pause/10107, aktivem Tool + differenziertemgate_status, oder G-code-Store. - gklib 10111 nach Einfarbig-Upload: Orca-Zeile
; filament_colour_typewird beim Senden entfernt (nur Einfarbig; Multicolor unangetastet). - Protokoll „druckt“ nach Offline: Live-Läufe werden bei anhaltendem Offline als
interruptedgeschlossen (z. B. gklib-Shutdown). - Sorte „Sunlu PLA“ vs. Eryone PLA: Basis-Profil ohne Meta/Matte/Silk matcht nach Material-Typ (Marke egal); Varianten bleiben streng.
[3.3.0] – 2026-10-18
Neu
- Projekte
/projekte: Arbeitsmappe mit Ordner unter dem Slice-Pfad (projects.folder); G-code-Zuordnung per Sync; Upload weiterer Dateien (STEP/STL/PDF/…); Nav unter Verwalten. - Dateien: Uploads in Slice-Ordner verschieben (werden Watch); Löschen für Upload und Watch (nur unter Slice/
eingang); kompaktere Bibliothek-Filter. - Material: Filter Sorte/Farbe; leere/archivierte Spulen ausgeblendet (Filter Archiv); Buttons Leer, Archivieren, Wiederherstellen (
archived_at). - Wand: kleines Kamera-Snapshot-Thumb auf jeder Karte (nie Stream); Menüpunkt Kameras entfernt,
/kameras→ Wand.
Geändert
- Technik-Cockpit: kompakte Fact-Chips; Steuerung in Gruppen Heizung / Druck / ACE-Plätze.
- Protokoll: kurze Dateinamen, festere Spaltenbreiten.
- Statistik: kompakte Filter inkl. Farbe, Auto-Laden, KPI Primär/Sekundär.
- Orca-Login: Session 30 Tage (überlebt App-Fenster schließen); kein zweites Chrome mit demselben Profil (sonst erneutes Anmelden).
- Druckbericht: Kosten-Torte und Tabelle inkl. Filament (nicht nur Strom); Summe = Material + Energie.
- Dateien: Starten / Einreihen / Ablauf mit einem Klick (kein Zwei-Klick mehr). API weiter mit
confirm: true. - Senden: Zwei Start-Modi statt drei — Dieser Drucker (frei → sofort, sonst Warteschlange) und Nächster passender (Grotti wählt nach Sorte).
- Material-Routing: Match auf Katalog-Sorte aus Orca-
filament_settings_id(PLA Meta ≠ Matte ≠ Silk); falsche Variante wartet mit Grund. Farbe bleibt soft. Bei Auto-Wahl baut Grotti die ACE-Map aus den Spulen am Claim-Drucker. Bestehende Dateien: Dateien neu lesen. - Wand: Bei Filament-Pause Hinweis, die neue Rolle unter Material dem Drucker zuzuweisen — sonst zählt der Verbrauch weiter zur alten Spule.
- Anleitung Material/ACE: Rollenwechsel während Pause klargestellt.
Behoben
- Orca/Anycubic öffnet zwei Browserfenster: Nachbearbeitung läuft oft 2× — Debounce (~25 s) öffnet nur noch eines. Deep-Link lädt fehlende
paint_indexnach (ACE zeigt sonst fälschlich T0/T1). - Dateien-Tab hängt nach Orca: 3D-Pfad erst nach ACE/Senden (Idle); Debounce ignoriert Anycubic-Zeitstempel im Dateinamen; erneuter Export aktualisiert den offenen Tab statt ein zweites Fenster.
- Orca/Anycubic → Desktop-Fenster:
orca_sendenöffnet Grotti als Chrome/Edge-App (browser: app). Anycubic-Dialog nur vermeiden durch G-code exportieren, nicht Remote Print / Aufgabe starten. - Anleitung Orca: Grotti unter Gerät per Device-UI-URL (
http://127.0.0.1:8770/); Upload-zum-Host weiter meiden. - ACE-Map mit Lücken-T (Bambu/Anycubic): UI behält Slicer-
Tn(z. B. T1+T10). Beim Senden verdichtet Grotti auf T0…n und schreibt passende.acm— sonst gklib 10011700 invalid filament id bzw. Hang bei Map-Mismatch. Senden prüft Map gegen T-Befehle. Bestehende Dateien: Dateien neu lesen. - 10011700 trotz dichter UI-Map: Verdichtung hängt am G-code (
T1/T10), nicht daran, ob die Map schon 0/1 zeigt — sonst blieb T10 auf dem Drucker. Grotti neu starten, Clip erneut senden. - Abräumen ließ Lauf offen: Urteil und Platte waren quittiert, der Live-Lauf blieb
in_progress(Moonraker-History oft ohne Endzeit). Abräumen und Watcher (printing→complete) schließen den Lauf jetzt alscompletedinkl. Materialabzug. - Rollenwechsel während Pause: Einlegen hängt Abschnitte/Ereignisse auch an offene History-Jobs (nicht nur
live:). Send-Spule und Lauf-Spule werden mitgezogen; Abzug bevorzugt die Rolle am Drucker statt eines veralteten Send-Hints.
[3.2.0] – 2026-10-18
Neu
- Jetzt-Liste / Topbar-Chips / Mobile-Tab
/jetzt: Platte räumen, Queue-Fehler, Bedarf, Wartung, Aufträge, Material-Wartegründe; Farm-ETA; Filament-Pause → „Material nachlegen“. GET /api/v1/jetzt,GET /api/v1/prognose,GET /api/v1/suche(Ctrl+K).- Filament-Pause: Pause + ACE/
mmu/Runout-Hinweis → Eventspule, Jetzt-Eintrag, Alert. - Druckbericht: Strom-Aufschlüsselung (Grundlast / Düse / Bett / Trockner) mit Tortendiagramm.
- Material-Routing: „Nächster freier“ bevorzugt passende Rolle/Farbe/Rest; sonst Wartegrund in der Queue.
- Termine (
due_at) sortieren die Warteschlange vor der Priorität. - Auto-Retry (einmal, Einstellung) bei Queue-/Ablauf-Fehler.
- Gleich nochmal drucken im Abräumen-Dialog.
- Tagesbericht 7 Uhr (Telegram/ntfy) und Push bei Wartung fällig, Bedarf, Auftrag überfällig.
- Kosten pro Teil und Stück-Yield in Bericht, Auftrag und Statistik.
- Undo-Toast beim Entfernen aus der Warteschlange; Ctrl+K-Suche.
- Design-Polish: Lucide-Icons (
icons.svg), Schrift Inter, Tokens/Komponenten; Topbar und Sidebar-Gruppen. - Kamera-Stream: Snapshot oder MJPEG in Einstellungen und auf der Kameras-Seite.
- Community-Screenshots unter
docs/community/. - Einstellungen: Abschnitts-Navigation, Autosave, Drucker als Karten mit Dialog.
- Cockpit: Alltag oben, Technik-Fold (Steuerung, Verlauf, 3D, Bettnetz) standardmäßig zu.
Geändert
- Live-Status in der Topbar (Chips + Popover); Mobile-Tab Jetzt.
- PA12-CF in Grotti als PA12-CF; am ACE als PA6-CF (ACE kennt den Typ nicht).
- Falsche Sorte warnt in Dateien, hält die Queue nicht an; zu wenig Rest blockiert weiter.
- Alert-Hygiene:
spule/start/authquiet; Sidebar-Label „Meldungen“. - Status als Chip; Einstellungen-Nav mit Icons; Autosave; Light-Theme;
tabular-nums. - Begriffe: Queue-Eintrag = Druck; Empty-States mit Handlung; Primär-/Danger-Buttons.
- Cool-Park blockiert den Queue-Tick nicht mehr (Worker).
- Kunden und Positionen bearbeiten/löschen unter Aufträge.
projekte.html/ideen.htmlentfernt (Redirect bleibt).
Behoben
- Bedarf/Wartung/Auftrag-Spam: Ops-Alerts Dedup-Art und Event-
kindstimmten nicht überein (jede Minute derselbe Hinweis). - Platte belegt nach Neustart: Watcher setzte bereits Quittiertes wieder auf
needs_clear. - „Pausiert“ nach Abbruch/Offline: Live-Lauf blieb offen bei Offline→standby.
- Regal-Modus: Sidebar-Menü unter Desktop-Breite ausgeblendet.
[3.1.0] – 2026-10-18
Neu
- Bedarf in der UI: Sidebar-Warnung, Karte unter Material, Chip in der Warteschlange.
- Start-Zeitfenster je Drucker in den Einstellungen (Queue nur im Fenster).
- HT/NT-Tarif in den Energie-Einstellungen.
- ntfy-Test wie bei Telegram.
- Helles Theme (Dunkel / Hell / System) pro Browser.
- Statistik: Balkendiagramme Druckzeit/Verbrauch, Empty-State ohne Daten.
- Wartung: KPIs, Empty-State, Reset mit Bestätigung (
armButton).
Geändert
- Cockpit und Warteschlange nutzen SSE/
createPollerstatt hartem 5‑s-Intervall. - Shared-
config.tokenwird nicht mehr als Auth akzeptiert — nur noch Session undgrt_…-Tokens. - Legacy-Alias
GET /api/druckerentfernt (nur/api/v1/drucker).
Behoben
- SSE unter waitress: Hop-by-Hop-Header
Connectionentfernt (sonst Fehler auf/api/v1/stream). - Bedarf: Material/Farbe aus
files.filamentsstatt nicht existierender Spalten. - Chrome: Service-Worker lieferte bei Fehlern die Startseite statt der angeklickten Route; „Mehr“-Dialog blockierte die Navigation; SSE und Poller liefen parallel und stauten Verbindungen.
[3.0.0] – 2026-10-18
Major: neue Tabellen (Aufträge, Wartung), Projekte/Ideen → Aufträge, Navigation umgebaut, Dev-Server → waitress, Schema über Migrationen.
Vor dem Update: pg_dump der Datenbank. Danach Grotti starten (Migrationen 003–009 laufen automatisch).
Neu
- Aufträge: Kunden, Positionen (Datei × Menge), Fortschritt, Einreihen, Lieferschein; Migration aus Projekten/Ideen; API
/api/v1/kunden,/api/v1/auftraege; MCP-Lesetools. - Ausschuss-Pflicht: Dialog beim „Platte geräumt“ (Urteil, Grund, Stückzahlen).
- Wartung: Laufzähler und Verschleißteile, Seite
/wartung. - Bedarf: Queue vs. Spulenrest (
GET /api/v1/bedarf). - ntfy neben Telegram; Backup-ZIP (pg_dump + data/); Zeitfenster je Drucker; optional HT/NT-Tarif.
- SSE Live-Stream
/api/v1/stream, Verbindungsbanner, PWA-Manifest/Service-Worker. - Migrationen unter
grotti/migrations/, Connection-Pool, Indizes, Sample-Retention. - Mobile-Nav mit „Mehr“-Sheet; Anleitungen Aufträge und Wartung.
Geändert
- Server: waitress; Threads starten in
server.main(). - Navigation: Aufträge statt Projekte/Ideen; Wartung; Dateien-/Statistik-Icons.
- Kontrast
--faint,prefers-reduced-motion, Touch-Ziele, Print-CSS. - Upload-Whitelist, Host-Validierung, ProxyFix, Settings-Lock,
?token=nur Bilder. - Spulenabzug History ohne blinde Rate; Chargen-Locks; MCP
temp/percent.
Behoben
- Hängende Queue-Starts nach Neustart; Worker-Rollback;
snapshot()-Exceptions. - Toast-Dedupe; ACE-Map bei Send-Vorbereitung; Spulenwarnung mit ACE.
[2.10.0] – 2026-10-18
Neu
- Einstellungen: Slice-Ordner (
watch_dir) setzen; Repo-Ordnerslice/als Standard (Inhalt gitignored). - Orca-Nachbearbeitung:
scripts/orca_senden.pylädt den Export nach Grotti und öffnet/dateien?file=…(Drucker, ACE, Einreihen in der UI); Anleitung unter Doku. - Bibliothek: Ordner unter dem Slice-Pfad anlegen und Watch-Dateien verschieben (ID/Projekt bleiben); API
…/dateien/ordner,…/verschieben. - Bibliothek: Filter Material und Ordner, Sortierung (Neueste / Name / Material / Ordner / Druckzeit / Gewicht), Suche auch in Material und Projekt; Filter bleiben im Browser; Gruppenköpfe bei Sort Material/Ordner.
- Cockpit: Verlauf (Temp/ED) des aktuellen oder letzten Drucks, Link zum Bericht; gemeinsame Chart-Hilfe in
api.js. - Druckbericht-Verlauf: Zeitachse (links °C, rechts ED %), gestrichelte Soll-Linien, Einschaltdauer Düse/Bett; Aufheizen wird dichter erfasst.
- Stromschätzung aus ED: Einstellungen → Düse-/Bett-Watt; Bericht zeigt kWh (ED oder pauschal).
- Einstellungen → Dieser Browser: Zeitzone für Anzeigezeiten (Browser automatisch oder z. B. Europe/Berlin).
Geändert
- Energie-Defaults: Grundlast 40 W (Elektronik), Düse 60 W, Bett 220 W; Hinweis in den Einstellungen, wenn Düse/Bett 0 (nur pauschal).
- Druckbericht: Start/Ende als lesbare Ortszeit (
17.10.2026, 15:09 – 15:46) statt ISO. - Sidebar Läuft jetzt: eine Zeile pro Drucker (Name · % · Fertig-Uhr), Fortschritt in der Zeile; Klick öffnet die Warteschlange, × bricht ab.
- Spulenakte: KPI-Kacheln statt Fließtext; Druckzeilen mit Datum, Charge
D-…, Kurzname, Gramm und Status. - Material-Spulenformular: Marke, Chargen und Technik unter „Weitere Angaben“ eingeklappt.
- Druck-Etikett: „Soll … g“ statt „Ziel“ (Slicer-Filamentmenge, wie im Bericht).
- Tasten-Grenze im Ablauf: dokumentierter Default 3 mm (kalt an der Düse sonst Fehlalarm); Anleitung und Technik-Notiz angepasst.
requirements.txtmit festen Versionen;requirements-dev.txtmit pytest.- Unbenutzte Helfer entfernt (
printers.load_printers, Mesh-Vergleich 3×3,fetch_bed_mesh,last_sample_at, …).
Behoben
- Druckbericht: Objekt-Etiketten kollidieren nicht mehr, wenn dieselbe Chargennummer schon an einem anderen Lauf hängt (Seite
/protokoll/<id>lieferte 500). - Orca-Nachbearbeitung: Export unter dem Slice-Ordner (inkl. Unterordner) wird als Watch-Datei übernommen statt flachem Upload; Temp-Dateien
.gcode.pperkannt. - Material: Rest-Gramm im Spulenformular akzeptiert Dezimalwerte (Abzug lieferte z. B. 501,34 g — Browser blockierte bei
step=1).
[2.5.1] – 2026-10-17
Neu
- Cockpit-Steuerung: ACE-Trockner starten/stoppen (Temp, Dauer), nur wenn ein ACE hängt.
- Cockpit-Steuerung: bestückte ACE-Plätze mit Sorte und Farbe aus Grotti an den Drucker schreiben.
- Wand-Kacheln zeigen das Druck-Vorschaubild (Moonraker-Thumbnail) in der Job-Zeile.
- Druckbericht
/protokoll/<id>: Soll/Ist-Gramm, Spulenanteile, Temperaturverlauf, Ereignisse, Charge. - Statistik
/statistik: Auslastung, Erfolg, Verbrauch, Ausschuss, Schätztreue; CSV-Export. - Spulenakte unter Material: verdruckte Gramm, Ausschuss, Leer-in aus dem Wochenverbrauch.
- Etiketten pro Druck oder Objekt (
D-YYYYMMDD-nnnn), QR auf den Bericht; Scan vonD-…öffnet den Bericht. - Spulenabzug nach Ist (
filament_used); Abbruch nur anteilig; Mehrfarb-Anteile als Schätzwert; Rest darf ins Minus. - Rollenwechsel während Druck/Pause (Einlegen) teilt den Verbrauch in Abschnitte.
Geändert
- Statistik: Zeitraum per Knopf (Tag, Woche, Monat, Gestern, Letzte Woche, Letzter Monat, Alles); Bis-Datum zählt inklusiv; CSV übernimmt denselben Filter.
- Druck-Charge
D-…wieder während des Laufs (Protokoll, Wand-Etikett, Bericht); Adoption übernimmt die Nummer auf den History-Job. Ausschuss: gedruckte Bögen verwerfen, Charge bleibt. - Dateien → ACE-Zuordnung: Platz-Dropdown zeigt bei bekannter Spule Material, Farbe, Name und Restgramm.
Behoben
- Spulenakte blieb leer: Abzug schrieb oft kein
run_spools(hängende History-Läufe, Abzug vor Akte-Tabelle); Nachzug ohne erneuten Rest-Abzug, Abzug schreibtrun_spoolsvordeducted. - Protokoll: keine Doppel-„druckt“-Zeilen mehr (Live + History); Watcher hängt am History-Job, sobald Moonraker ihn kennt; Liste blendet überzählige Live-Zeilen aus.
- Platte geräumt:
needs_clearnach Watcher-Ende und History-Sync (nur wenn kein Live-Druck); neuer Druckstart bricht alte Live-Läufe ab. - Druck-Etikett: Material schon während des Laufs (Send/ACE/Spule); QR bleibt im 70‑mm-Bogen.
- Druckstart: Dateien mit altem
stored_path(z. B. nach Umzug von3DP/…/Uebersichtnach Grotti) werden unterdata/eingang/<name>wiedergefunden statt „liegt nicht mehr auf der Platte“. - Wand/Sidebar: Dateiname springt nicht mehr alle paar Sekunden, wenn Moonraker kurz keinen Namen liefert; 3D-Pfad-Caption flackert nicht mehr mit „wird gelesen …“.
- Dateien: Hinweis zu fehlendem ACE-Trailer nur noch bei Mehrfarb (nicht als Warnung bei Monoteilen).
- 3D-Pfad wirkte gesprenkelt: Ausdünnen behält ganze Schichten dicht (statt Stichproben entlang der Bahn); keine Parallel-Offsets.
- Toolpath-API mit
Cache-Control: no-store, damit der Browser keinen alten Pfad behält. - Senden: Dateinamen mit Nicht-ASCII (z. B. CJK) werden für Moonraker/Rinkhals auf ASCII normalisiert — sonst Fehler 10115 „gcode … not found“.
[2.2.2] – 2026-10-15
Behoben
- 3D-Pfad: bei großen G-codes zerbrach das Ausdünnen die Segment-Paare — Viewer zeigte nur Objekt-Umrisse, keinen Druckfortschritt (grün/grau).
[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
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.tokenbleibt als Migrationsbrücke (Admin). - MCP-Server (
python -m grotti.mcp_server): Lesen + bestätigte Steuer-Tools;GROTTI_MCP_READ_ONLY; Dokudocs/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_freevor Start; bei 10101 cancel + Retry. - Live-Snapshot
anycubic_taskauf der Wand. - Cursor-Regel
.cursor/rules/grotti.mdc.
Geändert
/dokuzeigt nur nochAnleitung-*.md; Technik/Debug unterdocs/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_cameraim Drucker-Payload. POST /api/v1/druck-queuebrauchtconfirm: 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.jslokal.
[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).