1
0
Fork 0
mirror of https://github.com/maziggy/bambuddy.git synced 2026-05-09 08:25:54 +02:00

[PR #411] [MERGED] v0.2.0 #1040

Closed
opened 2026-05-07 00:15:38 +02:00 by BreizhHardware · 0 comments

📋 Pull Request Information

Original PR: https://github.com/maziggy/bambuddy/pull/411
Author: @maziggy
Created: 2/17/2026
Status: Merged
Merged: 2/17/2026
Merged by: @maziggy

Base: mainHead: 0.2.0b


📝 Commits (10+)

  • edefce6 Bumped version
  • 905e609 Bumped version
  • 40f4e60 Remove print() debugging from external_camera.py
  • ced51e0 Implement currency symbol handling and update related components
  • 8570e10 Merge branch '0.2.0b' into fix/ext-cam-print-2026-02
  • 0e6f4cc Merge pull request #330 from jeffsf/fix/ext-cam-print-2026-02
  • 09d8e7d Fix external camera not used for snapshot + stream dropping (#325)
  • 0fe2bb1 Fix timelapse baseline race condition (#315)
  • 253bee1 Fix nozzle rack text unreadable on light filament colors (#300)
  • 8e09e4f Add additional currency options for cost tracking (#329)

📊 Changes

187 files changed (+34297 additions, -10838 deletions)

View changed files

📝 .gitignore (+2 -0)
BETA_TEST_PLAN.md (+139 -0)
📝 CHANGELOG.md (+81 -0)
📝 CONTRIBUTING.md (+1 -0)
📝 DOCKERHUB.md (+1 -1)
📝 Dockerfile (+1 -0)
📝 README.md (+17 -6)
📝 backend/app/api/routes/archives.py (+68 -19)
📝 backend/app/api/routes/camera.py (+19 -0)
📝 backend/app/api/routes/cloud.py (+109 -3)
backend/app/api/routes/inventory.py (+1063 -0)
📝 backend/app/api/routes/kprofiles.py (+3 -0)
📝 backend/app/api/routes/library.py (+8 -1)
📝 backend/app/api/routes/maintenance.py (+98 -15)
📝 backend/app/api/routes/notifications.py (+2 -0)
backend/app/api/routes/print_log.py (+129 -0)
📝 backend/app/api/routes/print_queue.py (+11 -0)
📝 backend/app/api/routes/printers.py (+271 -56)
📝 backend/app/api/routes/settings.py (+11 -2)
📝 backend/app/api/routes/spoolman.py (+47 -3)

...and 80 more files

📄 Description

v0.2.0

Bambuddy v0.2.0 Release Notes

Highlights

The biggest update yet — Spool Inventory with AMS slot assignment and 3MF-based usage tracking, print queue clear plate confirmation, print log timeline, dual-nozzle AMS mapping improvements, timelapse management, notification thumbnails, and 30+ bug fixes including phantom prints, inventory weight corruption, and universal slicer-initiated print tracking.


New Features

Spool Inventory — AMS Slot Assignment, Weight Editing & 3MF-Based Usage Tracking (#336)

  • Built-in spool inventory with AMS slot assignment — hover over any non-Bambu-Lab slot to assign/unassign spools
  • Edit remaining filament weight when adding or editing a spool
  • All spools (Bambu Lab and third-party) now use 3MF slicer estimates as the primary tracking source
  • Per-filament used_g from archived 3MF provides precise per-spool consumption
  • Failed prints use per-layer G-code analysis for accurate partial usage up to the exact failure layer
  • AMS remain% delta is the final fallback for G-code-only prints

Notification Templates — Filament Usage Variables (#336)

  • {filament_grams}, {filament_details}, and {progress} variables for print_complete, print_failed, and print_stopped events
  • Per-filament breakdown with AMS slot info (e.g. "AMS-A T1 PLA: 12.4g | AMS-A T3 PETG: 2.8g")
  • Webhook payloads include filament_used, filament_details, and progress fields

Print Queue: Clear Plate Confirmation (#410)

  • When a print finishes or fails and more items are queued, the printer card shows a "Clear Plate & Start Next" button
  • Scheduler no longer auto-starts the next print — user must confirm the plate has been cleared first
  • State persists across page refresh via the printer status API

Print Log

  • New timeline view on the Archives page showing chronological table of all print activity
  • Columns: date/time, print name, printer, user, status, duration, filament
  • Filtering by search text, printer, user, status, and date range with configurable pagination

Bed Cooled Notification (#378)

  • New notification event when the bed cools below a configurable threshold (default 35°C) after a print completes
  • Background task polls bed temperature every 15 seconds; cancels on new print or disconnect

Printer Status Summary Bar — Next Available & Availability Count (#354)

  • Status bar shows "X available" count and "Next available" indicator with printer name, progress bar, and remaining time
  • Real-time updates via WebSocket

Nozzle-Aware AMS Filament Mapping for Dual-Nozzle Printers (#318)

  • Reads nozzle assignments from 3MF and constrains filament matching to AMS trays on the correct nozzle via ams_extruder_map
  • Applies to print scheduler, reprint modal, queue modal, and multi-printer selection
  • L/R nozzle badges shown in filament mapping UI

**Dual External Spool Support **

  • Two external spool holders (Ext-L and Ext-R) fully supported with grid display
  • Applies to printer card, filament mapping, print scheduler, usage tracking, and inventory

AMS Slot Configuration — Model Filtering & Pre-Population

  • Configure modal filters filament presets by connected printer model
  • Re-configuring pre-selects the saved preset, color, and active K-profile

Notification Thumbnails for Telegram & ntfy (#372)

  • Print thumbnails now attached to Telegram (sendPhoto API) and ntfy (binary PUT) notifications automatically

Clear HMS Errors

  • New "Clear Errors" button in HMS error modal sends clean_print_error MQTT command
  • Permission-gated to printers:control

Sync Spool Weights from AMS

  • Force-sync all inventory spool weights from live AMS remain% values in Settings → Filament Tracking

External Links: Open in New Tab (#338)

  • External sidebar links can optionally open in a new tab instead of an iframe — fixes sites with X-Frame-Options: SAMEORIGIN

K-Profiles View — Accurate Filament Name Resolution

  • Filament names resolved from builtin tables and user cloud presets instead of raw IDs like "GFU99"

Improved

Virtual Printer: Port 3000 Bind/Detect Server

  • BambuStudio/OrcaSlicer now require a bind/detect handshake on port 3000 — added BindServer for all server modes
  • Docker users in bridge mode need -p 3000:3000

Timelapse — AVI Format Support & Upload/Remove (#405, #406)

  • P1-series .avi timelapses now detected; auto-converted to MP4 via FFmpeg in background
  • New "Upload Timelapse" and "Remove Timelapse" context menu items for manual correction

Skip Objects: Click-to-Enlarge Lightbox (#396)

  • Clicking the skip objects image opens a fullscreen lightbox (up to 600px)

Skip Objects: Confirmation Dialog (#346)

  • Warning modal before skipping an object — shows name and warns action is irreversible

SQLite WAL Mode for Database Reliability

  • Write-Ahead Logging with 5-second busy timeout reduces "database is locked" errors

Reduce Log Noise (#365, #374)

  • 58 MQTT diagnostic messages downgraded from INFO to DEBUG
  • Debug log volume reduced ~90% by suppressing sqlalchemy/aiosqlite noise
  • Print command tracing added for phantom print investigation

External Camera Not Used for Snapshot + Stream Dropping (#325)

  • Snapshot endpoint now checks external camera first; MJPEG/RTSP streams retry on timeout instead of dropping

Default Color Catalog Expanded to 638 Colors Across 20 Brands

  • Added Overture, Sunlu, Creality, Elegoo, Jayo, Inland, Eryone, ColorFabb, Fillamentum, FormFutura, Fiberlogy, MatterHackers, Protopasta, 3DXTECH, Sakata3D

Additional Currency Options (#329, #333)

  • 17 additional currencies: HKD, INR, KRW, SEK, NOK, DKK, PLN, BRL, TWD, SGD, NZD, MXN, CZK, THB, ZAR, RUB

Other Improvements

  • File downloads preserve original filenames with special characters (#334)
  • Printer card cover image updates between prints without page reload
  • Telegram bold formatting no longer breaks on underscores (#332)
  • Nozzle rack text uses dark color on light filament backgrounds (#300)
  • Email settings moved under Authentication tab
  • Inventory confirmation modals for delete & archive actions
  • Usage tracking diagnostic logging for mapping investigation (#364)

Fixed

  • Phantom Prints on Power Cycle (#374) — Uploaded 3MF files left on SD card root caused auto-start on reboot; now deleted after print completion with retry logic
  • Inventory Spool Weight Resets After Print — AMS remain% sync no longer overwrites precise usage-tracker values; also handles remain=0 on printer power-off
  • Spool Edit Form Overwrites Usage-Tracked Weight — Form only includes weight_used when explicitly changed
  • Inventory Usage Wrong Tray for Slicer-Initiated Prints (#364) — Now subscribes to MQTT request topic to capture ams_mapping from any source (BambuStudio, OrcaSlicer,
    Bambu Handy); fail-safe for printers that reject the subscription
  • Inventory Usage Not Tracked for Remapped AMS Slots (#364) — Reprint/library/queue AMS mappings now stored and used as highest-priority source
  • Queue Items Stuck in "Printing" After Print Completes — Queue status update moved before archive lookup early return
  • 3MF Usage Tracking Broken for Queue Prints from File Manager (#364) — Scheduler now creates archive from library file before uploading
  • Queued Jobs Incorrectly Skipped After Duplicate Detection (#341) — Removed overly broad 4-hour duplicate detection check
  • Schedule Print Allows No Plate Selected for Multi-Plate Files (#394) — Auto-selects first plate by default
  • Queue Widget Shows "Archive #null" for File Manager Prints (#364) — Falls back to library_file_name
  • Archive Duplicate Badge Misses Name-Based Duplicates (#315) — Now also matches by print name
  • Loose Archive Name Matching (#374) — Tightened to exact print_name match
  • Reprint Fails for Archives Without 3MF (#376) — Backend returns clear error; frontend disables buttons with tooltip
  • Update Check Runs When Disabled (#367) — Backend returns early when setting is disabled
  • Archive List View Not Labeling Failed Prints (#365) — Added inline status badge
  • AMS Slot Configuration Overwritten on Startup — Compares spool RFID before unlinking; preserves existing assignments
  • AMS Slot Configure Overwrites RFID Spool State — Skips filament setting command for RFID spools
  • K-Profile Selection Corrupts Existing Profiles on X1C/P1S — Removed problematic setting_id field
  • Bambu Lab Spool Detection False Positives — Uses only RFID identifiers, not tray_info_idx
  • AMS Slot Configure — Black Color Not Pre-Populated — Removed unnecessary hex 000000 guard
  • Spool Form Scrollbar Flicker in Edge (#364) — Added scrollbar-gutter: stable
  • Stale Inventory Assignments After Switching to Spoolman — Bulk-deletes assignments on mode switch
  • Bulk Archive Delete Race Condition — Database record deleted first, files after commit
  • Maintenance Tasks Wrong Rod Type (#351) — Carbon rods for X1/P1/P2S, linear rails for A1/H2
  • FTP Disconnect Raises EOFError — Now catches EOFError alongside OSError and ftplib.Error
  • RFID Spool Data Erased by AMS Updates — tag_uid/tray_uuid preserved during periodic updates
  • Spool Assignments Falsely Unlinked Due to Color Variation — Color similarity function with tolerance threshold instead of exact hex match
  • Firmware Upload Uses Wrong Filename on Cache Hit — Caches using original filename

Testing

  • Mock FTPS Server & 67 FTP Test Cases — Covers every known FTP failure mode: connection, upload (chunked transfercmd), download, model-specific behavior (X1C session
    reuse, A1 prot_c fallback), and failure injection
  • Nozzle Rack Tests — 7 backend tests (MQTT parsing) + 3 frontend tests (rack rendering)

Community Contributors

Thank you to everyone who contributed to this release!

  • @Keybored02 (Matteo Parenti) — Storage usage metering (#383), material mismatch check (#361), spool card improvements & Italian locale (#360), soft-delete for
    maintenance tasks (#359), R nozzle hover card filament info (#357), archive card clipping fix (#387), mobile view fix (#382)
  • @aneopsy (AneoPsy) — Queue plate name display (#401), currently printing job details (#395), queue weight display (#356), 3MF usage tracking tests
  • @sbcrumb (SBCrumb) — Discord notification thumbnails (#350), duplicate HMS error fix (#348)
  • @devzwf (DevZwF) — French localization (#353)
  • @bnap00 (Bharat Parsiya) — Currency symbol handling (#331)
  • @jeffsf (Jeff Kletsky) — Clean MQTT/smart plug shutdown (#328), external camera cleanup (#330)
  • @nmori (Mori Naoyuki) — Windows launcher fix (#381)


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/maziggy/bambuddy/pull/411 **Author:** [@maziggy](https://github.com/maziggy) **Created:** 2/17/2026 **Status:** ✅ Merged **Merged:** 2/17/2026 **Merged by:** [@maziggy](https://github.com/maziggy) **Base:** `main` ← **Head:** `0.2.0b` --- ### 📝 Commits (10+) - [`edefce6`](https://github.com/maziggy/bambuddy/commit/edefce67febac49419f3745a5c9e8ea3193b096d) Bumped version - [`905e609`](https://github.com/maziggy/bambuddy/commit/905e609e19db36c64bea3546c4d6741411f0b276) Bumped version - [`40f4e60`](https://github.com/maziggy/bambuddy/commit/40f4e60f0492e59c66f73f50fc9f1f317e2929ab) Remove print() debugging from external_camera.py - [`ced51e0`](https://github.com/maziggy/bambuddy/commit/ced51e06fb3a5c6850aec1bec21fc21a0fcd8f41) Implement currency symbol handling and update related components - [`8570e10`](https://github.com/maziggy/bambuddy/commit/8570e10f0588a9f9f43dc2a252cebb010134a5a5) Merge branch '0.2.0b' into fix/ext-cam-print-2026-02 - [`0e6f4cc`](https://github.com/maziggy/bambuddy/commit/0e6f4cc6946c52c51b54955c413318bf778d7adc) Merge pull request #330 from jeffsf/fix/ext-cam-print-2026-02 - [`09d8e7d`](https://github.com/maziggy/bambuddy/commit/09d8e7d682466da87f8f4b723f92b5bd9b44dfb9) Fix external camera not used for snapshot + stream dropping (#325) - [`0fe2bb1`](https://github.com/maziggy/bambuddy/commit/0fe2bb134229ec861a0ba041e8f0b60ed8202373) Fix timelapse baseline race condition (#315) - [`253bee1`](https://github.com/maziggy/bambuddy/commit/253bee18a1cccb7f1f8c4189de4535ffe8b7a899) Fix nozzle rack text unreadable on light filament colors (#300) - [`8e09e4f`](https://github.com/maziggy/bambuddy/commit/8e09e4fb65e6a7c7cda72899bb9a6feeaf591c29) Add additional currency options for cost tracking (#329) ### 📊 Changes **187 files changed** (+34297 additions, -10838 deletions) <details> <summary>View changed files</summary> 📝 `.gitignore` (+2 -0) ➕ `BETA_TEST_PLAN.md` (+139 -0) 📝 `CHANGELOG.md` (+81 -0) 📝 `CONTRIBUTING.md` (+1 -0) 📝 `DOCKERHUB.md` (+1 -1) 📝 `Dockerfile` (+1 -0) 📝 `README.md` (+17 -6) 📝 `backend/app/api/routes/archives.py` (+68 -19) 📝 `backend/app/api/routes/camera.py` (+19 -0) 📝 `backend/app/api/routes/cloud.py` (+109 -3) ➕ `backend/app/api/routes/inventory.py` (+1063 -0) 📝 `backend/app/api/routes/kprofiles.py` (+3 -0) 📝 `backend/app/api/routes/library.py` (+8 -1) 📝 `backend/app/api/routes/maintenance.py` (+98 -15) 📝 `backend/app/api/routes/notifications.py` (+2 -0) ➕ `backend/app/api/routes/print_log.py` (+129 -0) 📝 `backend/app/api/routes/print_queue.py` (+11 -0) 📝 `backend/app/api/routes/printers.py` (+271 -56) 📝 `backend/app/api/routes/settings.py` (+11 -2) 📝 `backend/app/api/routes/spoolman.py` (+47 -3) _...and 80 more files_ </details> ### 📄 Description v0.2.0 **Bambuddy v0.2.0 Release Notes** **Highlights** The biggest update yet — Spool Inventory with AMS slot assignment and 3MF-based usage tracking, print queue clear plate confirmation, print log timeline, dual-nozzle AMS mapping improvements, timelapse management, notification thumbnails, and 30+ bug fixes including phantom prints, inventory weight corruption, and universal slicer-initiated print tracking. --- **New Features** **Spool Inventory — AMS Slot Assignment, Weight Editing & 3MF-Based Usage Tracking (#336)** - Built-in spool inventory with AMS slot assignment — hover over any non-Bambu-Lab slot to assign/unassign spools - Edit remaining filament weight when adding or editing a spool - All spools (Bambu Lab and third-party) now use 3MF slicer estimates as the primary tracking source - Per-filament used_g from archived 3MF provides precise per-spool consumption - Failed prints use per-layer G-code analysis for accurate partial usage up to the exact failure layer - AMS remain% delta is the final fallback for G-code-only prints **Notification Templates — Filament Usage Variables (#336)** - {filament_grams}, {filament_details}, and {progress} variables for print_complete, print_failed, and print_stopped events - Per-filament breakdown with AMS slot info (e.g. "AMS-A T1 PLA: 12.4g | AMS-A T3 PETG: 2.8g") - Webhook payloads include filament_used, filament_details, and progress fields **Print Queue: Clear Plate Confirmation (#410)** - When a print finishes or fails and more items are queued, the printer card shows a "Clear Plate & Start Next" button - Scheduler no longer auto-starts the next print — user must confirm the plate has been cleared first - State persists across page refresh via the printer status API **Print Log** - New timeline view on the Archives page showing chronological table of all print activity - Columns: date/time, print name, printer, user, status, duration, filament - Filtering by search text, printer, user, status, and date range with configurable pagination **Bed Cooled Notification (#378)** - New notification event when the bed cools below a configurable threshold (default 35°C) after a print completes - Background task polls bed temperature every 15 seconds; cancels on new print or disconnect **Printer Status Summary Bar — Next Available & Availability Count (#354)** - Status bar shows "X available" count and "Next available" indicator with printer name, progress bar, and remaining time - Real-time updates via WebSocket **Nozzle-Aware AMS Filament Mapping for Dual-Nozzle Printers (#318)** - Reads nozzle assignments from 3MF and constrains filament matching to AMS trays on the correct nozzle via ams_extruder_map - Applies to print scheduler, reprint modal, queue modal, and multi-printer selection - L/R nozzle badges shown in filament mapping UI **Dual External Spool Support ** - Two external spool holders (Ext-L and Ext-R) fully supported with grid display - Applies to printer card, filament mapping, print scheduler, usage tracking, and inventory **AMS Slot Configuration — Model Filtering & Pre-Population** - Configure modal filters filament presets by connected printer model - Re-configuring pre-selects the saved preset, color, and active K-profile **Notification Thumbnails for Telegram & ntfy (#372)** - Print thumbnails now attached to Telegram (sendPhoto API) and ntfy (binary PUT) notifications automatically **Clear HMS Errors** - New "Clear Errors" button in HMS error modal sends clean_print_error MQTT command - Permission-gated to printers:control **Sync Spool Weights from AMS** - Force-sync all inventory spool weights from live AMS remain% values in Settings → Filament Tracking **External Links: Open in New Tab (#338)** - External sidebar links can optionally open in a new tab instead of an iframe — fixes sites with X-Frame-Options: SAMEORIGIN **K-Profiles View — Accurate Filament Name Resolution** - Filament names resolved from builtin tables and user cloud presets instead of raw IDs like "GFU99" --- **Improved** **Virtual Printer: Port 3000 Bind/Detect Server** - BambuStudio/OrcaSlicer now require a bind/detect handshake on port 3000 — added BindServer for all server modes - Docker users in bridge mode need -p 3000:3000 **Timelapse — AVI Format Support & Upload/Remove (#405, #406)** - P1-series .avi timelapses now detected; auto-converted to MP4 via FFmpeg in background - New "Upload Timelapse" and "Remove Timelapse" context menu items for manual correction **Skip Objects: Click-to-Enlarge Lightbox (#396)** - Clicking the skip objects image opens a fullscreen lightbox (up to 600px) **Skip Objects: Confirmation Dialog (#346)** - Warning modal before skipping an object — shows name and warns action is irreversible **SQLite WAL Mode for Database Reliability** - Write-Ahead Logging with 5-second busy timeout reduces "database is locked" errors **Reduce Log Noise (#365, #374)** - 58 MQTT diagnostic messages downgraded from INFO to DEBUG - Debug log volume reduced ~90% by suppressing sqlalchemy/aiosqlite noise - Print command tracing added for phantom print investigation **External Camera Not Used for Snapshot + Stream Dropping (#325)** - Snapshot endpoint now checks external camera first; MJPEG/RTSP streams retry on timeout instead of dropping **Default Color Catalog Expanded to 638 Colors Across 20 Brands** - Added Overture, Sunlu, Creality, Elegoo, Jayo, Inland, Eryone, ColorFabb, Fillamentum, FormFutura, Fiberlogy, MatterHackers, Protopasta, 3DXTECH, Sakata3D **Additional Currency Options (#329, #333)** - 17 additional currencies: HKD, INR, KRW, SEK, NOK, DKK, PLN, BRL, TWD, SGD, NZD, MXN, CZK, THB, ZAR, RUB **Other Improvements** - File downloads preserve original filenames with special characters (#334) - Printer card cover image updates between prints without page reload - Telegram bold formatting no longer breaks on underscores (#332) - Nozzle rack text uses dark color on light filament backgrounds (#300) - Email settings moved under Authentication tab - Inventory confirmation modals for delete & archive actions - Usage tracking diagnostic logging for mapping investigation (#364) --- **Fixed** - Phantom Prints on Power Cycle (#374) — Uploaded 3MF files left on SD card root caused auto-start on reboot; now deleted after print completion with retry logic - Inventory Spool Weight Resets After Print — AMS remain% sync no longer overwrites precise usage-tracker values; also handles remain=0 on printer power-off - Spool Edit Form Overwrites Usage-Tracked Weight — Form only includes weight_used when explicitly changed - Inventory Usage Wrong Tray for Slicer-Initiated Prints (#364) — Now subscribes to MQTT request topic to capture ams_mapping from any source (BambuStudio, OrcaSlicer, Bambu Handy); fail-safe for printers that reject the subscription - Inventory Usage Not Tracked for Remapped AMS Slots (#364) — Reprint/library/queue AMS mappings now stored and used as highest-priority source - Queue Items Stuck in "Printing" After Print Completes — Queue status update moved before archive lookup early return - 3MF Usage Tracking Broken for Queue Prints from File Manager (#364) — Scheduler now creates archive from library file before uploading - Queued Jobs Incorrectly Skipped After Duplicate Detection (#341) — Removed overly broad 4-hour duplicate detection check - Schedule Print Allows No Plate Selected for Multi-Plate Files (#394) — Auto-selects first plate by default - Queue Widget Shows "Archive #null" for File Manager Prints (#364) — Falls back to library_file_name - Archive Duplicate Badge Misses Name-Based Duplicates (#315) — Now also matches by print name - Loose Archive Name Matching (#374) — Tightened to exact print_name match - Reprint Fails for Archives Without 3MF (#376) — Backend returns clear error; frontend disables buttons with tooltip - Update Check Runs When Disabled (#367) — Backend returns early when setting is disabled - Archive List View Not Labeling Failed Prints (#365) — Added inline status badge - AMS Slot Configuration Overwritten on Startup — Compares spool RFID before unlinking; preserves existing assignments - AMS Slot Configure Overwrites RFID Spool State — Skips filament setting command for RFID spools - K-Profile Selection Corrupts Existing Profiles on X1C/P1S — Removed problematic setting_id field - Bambu Lab Spool Detection False Positives — Uses only RFID identifiers, not tray_info_idx - AMS Slot Configure — Black Color Not Pre-Populated — Removed unnecessary hex 000000 guard - Spool Form Scrollbar Flicker in Edge (#364) — Added scrollbar-gutter: stable - Stale Inventory Assignments After Switching to Spoolman — Bulk-deletes assignments on mode switch - Bulk Archive Delete Race Condition — Database record deleted first, files after commit - Maintenance Tasks Wrong Rod Type (#351) — Carbon rods for X1/P1/P2S, linear rails for A1/H2 - FTP Disconnect Raises EOFError — Now catches EOFError alongside OSError and ftplib.Error - RFID Spool Data Erased by AMS Updates — tag_uid/tray_uuid preserved during periodic updates - Spool Assignments Falsely Unlinked Due to Color Variation — Color similarity function with tolerance threshold instead of exact hex match - Firmware Upload Uses Wrong Filename on Cache Hit — Caches using original filename --- **Testing** - Mock FTPS Server & 67 FTP Test Cases — Covers every known FTP failure mode: connection, upload (chunked transfercmd), download, model-specific behavior (X1C session reuse, A1 prot_c fallback), and failure injection - Nozzle Rack Tests — 7 backend tests (MQTT parsing) + 3 frontend tests (rack rendering) **Community Contributors** Thank you to everyone who contributed to this release! - @Keybored02 (Matteo Parenti) — Storage usage metering (#383), material mismatch check (#361), spool card improvements & Italian locale (#360), soft-delete for maintenance tasks (#359), R nozzle hover card filament info (#357), archive card clipping fix (#387), mobile view fix (#382) - @aneopsy (AneoPsy) — Queue plate name display (#401), currently printing job details (#395), queue weight display (#356), 3MF usage tracking tests - @sbcrumb (SBCrumb) — Discord notification thumbnails (#350), duplicate HMS error fix (#348) - @devzwf (DevZwF) — French localization (#353) - @bnap00 (Bharat Parsiya) — Currency symbol handling (#331) - @jeffsf (Jeff Kletsky) — Clean MQTT/smart plug shutdown (#328), external camera cleanup (#330) - @nmori (Mori Naoyuki) — Windows launcher fix (#381) --- --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
BreizhHardware 2026-05-07 00:15:38 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/bambuddy-maziggy-1#1040
No description provided.