Skip to content

Gantry 0.9.0

Latest

Choose a tag to compare

@parametryczny parametryczny released this 30 Aug 11:53
· 26 commits to main since this release

Dalej dopracowujemy wygląd i wydajność oraz sukcesywnie dodajemy personalizację. W tym wydaniu dochodzą też duże rzeczy: śledzenie fizycznych rolek filamentu w Spoolbase (z automatycznym odejmowaniem wagi po wydruku), podgląd floty w przeglądarce, synchronizacja między komputerami, a na macOS uniwersalny build (Intel + Apple Silicon). Na Windows dochodzi natywny efekt szkła i dopracowanie karty do parytetu 1:1 z macOS.

Najważniejsze: to wydanie domyka parytet na trzech platformach. Linux dostaje pełny komplet nowości i nadrabia to, co dotąd było tylko na macOS/Windows: widok „Szczegóły”, automatyzacje ze sterowaniem i podgląd kamery na żywo, a do tego fizyczne rolki z odejmowaniem wagi, podgląd floty w przeglądarce, synchronizację i efekt szkła. Ten sam zestaw funkcji i ten sam układ karty działają teraz na macOS, Windows i Linux; różni się tylko natywny rendering każdego systemu (czcionki, sposób realizacji frosted‑glass).

Fizyczne rolki filamentu (nowość)

Do tej pory Spoolbase znał tylko rodzaje filamentu. Teraz możesz prowadzić konkretne rolki z wagą, przypisane do slotów AMS/EXT. Stan należy do rolki, nie do slotu, więc gdy przełożysz ją do innej drukarki, gramy jadą razem z nią.

Jak dodać filament do AMS, krok po kroku:

  1. Kliknij pastylkę slotu (fasolkę AMS albo EXT) na karcie drukarki. Otworzy się panel przypisania dla tego slotu (np. „AMS A2").
  2. Panel pokazuje materiał widziany przez AMS, aktualnie przypisaną rolkę (albo „Brak") i listę Twoich rolek.
  3. Masz już rolkę w bazie? Wybierz ją z listy. Pasujące materiałem i kolorem są na górze i podświetlone. Jeśli rolka jest w innej drukarce, Gantry zapyta „Przenieść tutaj?" i zwolni poprzedni slot.
  4. Nowa rolka? Kliknij „+ Nowa rolka":
    • wybierz filament ze swojego katalogu Spoolbase (albo „Nowa definicja z AMS", która weźmie materiał i kolor prosto z drukarki),
    • podaj ilość na start: 1000, 750, 500 g albo własną wartość,
    • gotowe. Rolka dostaje własne ID, np. SP-00001.
  5. Od teraz slot pokazuje realny procent i gramy (liczone lokalnie z pozostałej wagi), w kolorze wybranego filamentu, nawet dla filamentu bez RFID.
  6. Wymiana lub zdjęcie: kliknij slot ponownie i użyj „Odepnij", albo przypisz inną rolkę.
  7. Przenoszenie między drukarkami: wyjmujesz rolkę, w drugiej drukarce klikasz slot i wybierasz tę samą rolkę (SP-000xx). Stan zostaje bez zmian.

Działa dla AMS i zewnętrznej szpuli (EXT), wspólnie dla wszystkich drukarek, dane są trwale zapisywane. Jedna rolka może być tylko w jednym miejscu naraz.

Jeśli do slotu z ręcznie przypisaną rolką włożysz rolkę z tagiem NFC/RFID, Gantry rozpozna, że tamta rolka została wyjęta, i automatycznie odpina przypisaną (wraca do magazynu). Na karcie pojawia się wtedy krótka informacja z przyciskiem OK, np. „SP-00003 wróciła do magazynu (wykryto tag NFC w AMS A3)".

Automatyczne odejmowanie wagi po wydruku (nowość)

Po zakończonym wydruku Gantry odejmuje realnie zużyty filament od przypisanej rolki, lokalnie i bez chmury:

  • Klipper / Moonraker: realne filament_used (mm) przeliczone na gramy (Ø1,75),
  • Bambu: used_g z wydrukowanego pliku .gcode.3mf pobranego po lokalnym FTPS (bez logowania do chmury, bez chmury Bambu).

Odejmowanie jest idempotentne per zadanie, więc reconnect, restart albo dwa komputery patrzące na tę samą drukarkę nie policzą zużycia podwójnie.

Gramy z AMS (tag NFC/RFID)

  • nowy przełącznik w Ustawieniach, w sekcji „Karty drukarek": „Gramy na rolce (AMS NFC / Spoolbase)", domyślnie wyłączony,
  • po włączeniu pod slotem widać pozostałe gramy: dla rolek Bambu z tagiem RFID/NFC liczone z odczytu tagu (tray_weight × remain%), a dla rolek przypisanych w Spoolbase z ich wagi,
  • rolka bez tagu i bez przypisania nie ma skąd wziąć wagi (można przypisać rolkę Spoolbase).

Podgląd floty w przeglądarce (nowość)

  • lekki, tylko do odczytu serwer WWW w sieci lokalnej: całą flotę widać z telefonu albo innego komputera w tej samej sieci Wi-Fi, bez logowania i bez chmury,
  • na żywo przez WebSocket (push przy każdej zmianie), z automatycznym fallbackiem na odpytywanie,
  • ta sama estetyka co aplikacja: karty, kolorowe temperatury, sloty AMS/EXT, procent,
  • w Ustawieniach nowa sekcja z adresami (<nazwa>.local i IP), kodem QR do zeskanowania telefonem oraz przełącznikiem włączania serwera (wyłączony = zero otwartych portów).

Synchronizacja między komputerami (nowość)

  • dwukierunkowa synchronizacja Spoolbase, listy drukarek i ustawień między Twoimi komputerami, tylko w sieci lokalnej (bez chmury),
  • parowanie przez wspólny token: kopiujesz go z jednego komputera na drugi i podajesz adres, reszta dzieje się sama,
  • scalanie „ostatni wygrywa" po czasie; zużycie filamentu jest idempotentne, więc wspólny wydruk nie odejmie się podwójnie,
  • kody dostępu do drukarek nie są przesyłane (zostają w Keychain każdego komputera).

Uniwersalny build macOS i niższy próg systemu

  • aplikacja macOS jest teraz uniwersalna (Apple Silicon + Intel) — koniec z przekreśloną ikoną i komunikatem „tylko na układach Apple" na Intelu,
  • obniżony próg do macOS 13 (Ventura): jedyne API blokujące starsze systemy (efekt „liquid glass") ma teraz łagodny fallback.

Windows: natywny efekt szkła i parytet karty z macOS

  • główny dymek to teraz prawdziwy Desktop Acrylic (rozmyte tło pulpitu pod ciemnym, półprzezroczystym tintem, zaokrąglone rogi); przełącznik Przezroczystość (Mała / Średnia / Duża) steruje tylko siłą tintu, bez restartu, z fallbackiem na solidny ciemny panel,
  • karta dopracowana do macOS: wordmark GANTRY i licznik „X drukarek · Y pracuje", ikona wykresu zamiast napisu „Szczegóły", uchwyt przeciągania i „⋯" w zaokrąglonych pigułkach, temperatury z „/ —" przy braku wartości zadanej, kreskowanie pustych slotów, karta offline bez dublowania komunikatu.

Linux: parytet funkcji z macOS

  • widok „Szczegóły”: wykres temperatur w czasie (dysza / stół / komora), temperatury z wartościami zadanymi, wentylatory (części / aux / komora), poziom prędkości i średnica dyszy, moduły AMS/EXT oraz postęp / warstwy / ETA; wejście z ikony wykresu na karcie i z menu,
  • automatyzacje ze sterowaniem: reguły per drukarka (wyzwalacz: po warstwie / po % / na stan; akcja: światło komory, pauza/wznów/stop, powiadomienie, własna komenda MQTT/G‑code, skrypt), odpalane raz na wydruk; akcje „komenda” i „skrypt” są domyślnie wyłączone i wymagają jednorazowej zgody (kill‑switch w Ustawieniach),
  • podgląd kamery na żywo: Bambu przez RTSPS:322 (ffmpeg jako dekoder H.264, akceptacja self‑signed), Klipper/Moonraker jako MJPEG czytany natywnie; wejście z karty i z Szczegółów,
  • fizyczne rolki w Spoolbase: klik w slot AMS/EXT otwiera panel przypisania (rolka z katalogu, nowa rolka, przeniesienie istniejącej, ustawienie pozostałych gramów, odłączenie do magazynu); slot pokazuje kolor i gramy przypisanej rolki,
  • automatyczne odejmowanie wagi po wydruku (Klipper realnie z filament_used, Bambu z used_g w .gcode.3mf pobieranym po FTPS), idempotentne per zadanie,
  • auto‑odpięcie przy włożeniu rolki z tagiem NFC/RFID, z krótką informacją na karcie i przyciskiem OK,
  • podgląd floty w przeglądarce i dwukierunkowa synchronizacja (Spoolbase, katalog filamentów, lista drukarek i ustawienia) w sieci lokalnej, zgodna z macOS/Windows,
  • frosted‑glass dymka tray (rozmycie na KWin, przezroczystość w innych środowiskach).

Personalizacja

  • Przełącznik kolumn 1 / 2 w nagłówku (szeroka lub ostatnia samotna karta zajmuje pełną szerokość, zasada 2-2-1).
  • „Karty drukarek" w Ustawieniach: włącz albo wyłącz Nazwę pliku, Postęp, Temperatury, Filamenty / AMS (a teraz również Gramy na rolce).
  • „Dostosuj…" w Szczegółach: ukryj moduły (Kamera, AMS, Temperatury, Wentylatory, Sterowanie), przestawiaj kafle, wróć do domyślnego układu.

Spokojniejsze, płaskie karty

  • Stonowana kolorystyka: stan czyta się z tekstu i ikony, kolor niosą tylko wartości temperatur i realne kolory filamentu.
  • Płaski układ: zamiast pudełek w pudełku sekcje (zadanie, temperatury, filamenty) rozdzielają długie, cienkie linie. Między urządzeniami (AMS, HT, EXT) delikatna pionowa kreska.
  • Temperatury: kolor tylko na liczbie (dysza, stół, komora), a kafel komory znika, gdy nie ma czujnika.
  • Filamenty: procent wewnątrz kolorowej fasolki z auto-kontrastem, poziom wypełnia się od dołu z delikatną falą, a każdy kafelek ma cienki obrys, więc pusta lub 0% rolka nie ginie.
  • Sloty pojedyncze (AMS HT / EXT) to szerszy, wyśrodkowany prostokąt skalujący się z kartą (35% kolumny, min 60 px); grupa AMS jest ~3× szersza od pojedynczej, a dwie pojedyncze obok siebie (HT + EXT) są równe. Sloty nie migają ani nie skaczą przy odświeżaniu.

Offline

  • Gdy drukarka traci połączenie, jej karta przygasa i pokazuje komunikat błędu. Menu i Szczegóły dalej są dostępne.

Poprawki

  • Nazwa pliku po wydruku: karta pokazuje nazwę zadania tylko podczas druku; po zakończeniu i w bezczynności wraca „BRAK AKTYWNEGO ZADANIA" (koniec ze starą nazwą wiszącą po zakończeniu i po odświeżeniu).
  • [#27] Fałszywy „Filament low" dla rolek bez chipa: ostrzeżenie (czerwona kropka i powiadomienie) odpala się tylko przy wiarygodnym odczycie poziomu, czyli tag RFID/NFC (waga) albo przypisana rolka Spoolbase; rolka bez chipa (remain=0 „nieznane") już nie wywoła alarmu.

Pod maską

  • Segmentowy pasek postępu, licznik warstw przy ETA (pełna nazwa pliku przestała się ucinać).
  • Kompaktowy nagłówek i węższe okno, więcej drukarek na ekranie.

English

We keep polishing the look and performance and steadily add personalization. This release also brings big things: physical filament spool tracking in Spoolbase (with automatic weight decrement after a print), a web dashboard for the fleet, sync between computers, and on macOS a universal build (Intel + Apple Silicon). Windows gains a native glass effect and a card refined to 1:1 parity with macOS.

Most importantly, this release closes the three‑platform parity. Linux gets the full set of new features and catches up on what used to be macOS/Windows only: the Details view, automations with control, and the live camera, plus physical spools with weight decrement, the web dashboard, sync and the glass effect. The same feature set and the same card layout now run on macOS, Windows and Linux; only each system's native rendering differs (fonts, how frosted‑glass is done).

Physical filament spools (new)

Until now Spoolbase only knew filament types. Now you can track specific spools with weight, assigned to AMS/EXT slots. State belongs to the spool, not the slot, so when you move it to another printer the grams travel with it. Click a slot to assign from your catalogue, create a new spool (with a starting weight), move an existing spool in, set the remaining grams, or detach it back to storage. Works for AMS and the external spool (EXT), shared across all printers, stored persistently. One spool can be in one place at a time.

If you insert an RFID/NFC spool into a slot that still holds a manually assigned one, Gantry detects the swap and auto‑detaches the stale assignment (it returns to storage), with a short OK notice on the card.

Automatic weight decrement after a print (new)

After a finished print Gantry subtracts the real filament used from the assigned spool, locally:

  • Klipper / Moonraker: real filament_used (mm) converted to grams (Ø1.75),
  • Bambu: used_g from the printed .gcode.3mf fetched over the printer's local FTPS (no Bambu cloud).

The decrement is idempotent per job, so a reconnect, a restart, or two computers watching the same printer never double‑count.

Grams from AMS (NFC/RFID tag)

  • a new Settings toggle, "Grams on spool (AMS NFC / Spoolbase)", off by default,
  • when on, the slot shows remaining grams: for Bambu spools with an RFID/NFC tag computed from the tag (tray_weight × remain%), and for spools assigned in Spoolbase from their own weight,
  • a spool with no tag and no assignment has no source of weight (assign a Spoolbase spool).

Web dashboard for the fleet (new)

  • a light, read‑only local‑network web server: see the whole fleet from a phone or another computer on the same Wi‑Fi, no login and no cloud,
  • live over WebSocket (push on every change), with an automatic polling fallback,
  • the same look as the app: cards, coloured temperatures, AMS/EXT slots, percent,
  • a Settings section with addresses (<name>.local and IP), a QR code, and an on/off toggle (off means zero open ports).

Sync between computers (new)

  • two‑way sync of Spoolbase, the filament catalogue, the printer list and settings between your own computers, local network only (no cloud),
  • pairing via a shared token: copy it to the other computer and give the address, the rest is automatic,
  • last‑write‑wins merge by time; filament usage is idempotent, so a shared print does not decrement twice,
  • printer access codes are never sent (they stay in each computer's secure store).

macOS universal build and lower system floor

  • the macOS app is now universal (Apple Silicon + Intel): no more crossed‑out icon on Intel,
  • lowered to macOS 13 (Ventura): the only API that blocked older systems (the liquid‑glass effect) now has a gentle fallback.

Windows: native glass and card parity with macOS

  • the main flyout is now real Desktop Acrylic (blurred desktop under a dark, semi‑transparent tint, rounded corners); a Transparency (Low / Medium / High) switch controls only the tint strength, no restart, with a solid dark fallback,
  • the card refined to macOS: GANTRY wordmark and an "X printers · Y active" counter, a chart icon instead of the word "Details", drag handle and "⋯" in rounded pills, temperatures with "/ —" when no target, hatching for empty slots, offline card without a duplicated message.

Linux: feature parity with macOS

  • Details view: rolling temperature graph (nozzle / bed / chamber), temperatures with targets, fans (part / aux / chamber), speed level and nozzle diameter, AMS/EXT modules and progress / layers / ETA; opened from the chart icon on the card and from the menu,
  • automations with control: per‑printer rules (trigger: at layer / at % / on state; action: chamber light, pause/resume/stop, notification, a custom MQTT/G‑code command, a script), fired once per print; the command and script actions are off by default and need a one‑time approval (kill‑switch in Settings),
  • live camera: Bambu over RTSPS:322 (ffmpeg as the H.264 decoder, self‑signed accepted), Klipper/Moonraker as MJPEG read natively; opened from the card and from Details,
  • physical spools in Spoolbase: click an AMS/EXT slot to open the assign panel (from catalogue, new spool, move an existing one, set remaining grams, detach to storage); the slot shows the assigned spool's colour and grams,
  • automatic weight decrement after a print (Klipper from filament_used, Bambu from used_g in the .gcode.3mf over FTPS), idempotent per job,
  • auto‑detach when an NFC/RFID spool is inserted, with a short on‑card notice and OK,
  • the web dashboard and two‑way sync (Spoolbase, filament catalogue, printer list and settings) on the local network, compatible with macOS/Windows,
  • frosted‑glass tray flyout (blur on KWin, transparency elsewhere).

Personalization

  • a 1 / 2 column switch in the header (a wide or last lone card takes the full width, 2‑2‑1 rule),
  • "Printer cards" in Settings: turn File name, Progress, Temperatures, Filaments / AMS on or off (and now also Grams on spool),
  • "Customize…" in Details: hide modules (Camera, AMS, Temperatures, Fans, Control), reorder tiles, reset to the default layout.

Calmer, flat cards

  • toned‑down colour: state reads from text and icon, colour is carried only by temperature values and real filament colours,
  • flat layout: instead of boxes inside boxes, long thin lines separate the sections (job, temperatures, filaments), with a subtle vertical line between modules (AMS, HT, EXT),
  • temperatures: colour only on the number (nozzle, bed, chamber), and the chamber tile disappears when there is no sensor,
  • filaments: percent inside the coloured pill with auto‑contrast, the level fills from the bottom with a gentle wave, and each tile has a thin outline so an empty or 0% spool does not vanish,
  • single slots (AMS HT / EXT) are a wider, centred rectangle that scales with the card (35% of the column, min 60 px); an AMS group is about 3× wider than a single, and two singles side by side (HT + EXT) are equal. Slots no longer flicker or jump on refresh.

Offline

  • when a printer loses connection its card dims and shows an error message. The menu and Details stay available.

Fixes

  • File name after a print: the card shows the job name only while printing; after it finishes and when idle it returns to "NO ACTIVE JOB" (no more stale name lingering after a finish or a refresh),
  • [#27] False "Filament low" for chipless spools: the warning (red dot and notification) fires only on a trustworthy level reading, i.e. an RFID/NFC tag (weight) or an assigned Spoolbase spool; a chipless spool (remain=0 "unknown") no longer triggers a false alarm.

Under the hood

  • segmented progress bar, a layer counter next to the ETA (the full file name no longer gets clipped),
  • a compact header and a narrower window, more printers on screen.