mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-05-09 05:35:30 +02:00
[PR #721] [MERGED] v0.2.2 #1104
Labels
No labels
A1
automated
automated
bug
bug
Closed due to inactivity
contrib
dependencies
dependencies
duplicate
enhancement
feedback
hold
invalid
Notes
P1S
pull-request
security
security
ThumbsUp
user-report
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/bambuddy#1104
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/maziggy/bambuddy/pull/721
Author: @maziggy
Created: 3/16/2026
Status: ✅ Merged
Merged: 3/16/2026
Merged by: @maziggy
Base:
main← Head:0.2.2📝 Commits (10+)
ae9818cfeat(queue): show spool grams left in filament slot mappingf46c134Bumped version46f209eAdd SpoolBuddy AMS slot config, external slots, and dashboard redesign8f3d194Fix SpoolBuddy daemon crash when read_tag module is missing541f892Fix SpoolBuddy daemon failing to import hardware drivers12fe074Increase scale moving average window to reduce weight bouncing2811e2eRemove stability flipping as scale report trigger1543753Fix formatting of option elements in FilamentMapping8c9c0a7Minor Spoolbuddy frontend improvementsf7e65aaUpdated Spoolbuddy install script to strip down Raspbian📊 Changes
254 files changed (+44730 additions, -13827 deletions)
View changed files
📝
.github/workflows/ci.yml(+1 -1)📝
.github/workflows/security.yml(+1 -1)📝
CHANGELOG.md(+264 -1)📝
Dockerfile(+1 -0)📝
LICENSE(+661 -21)📝
README.md(+12 -2)📝
backend/app/api/routes/archives.py(+118 -14)📝
backend/app/api/routes/auth.py(+100 -18)➕
backend/app/api/routes/bug_report.py(+95 -0)📝
backend/app/api/routes/camera.py(+203 -112)📝
backend/app/api/routes/cloud.py(+82 -74)📝
backend/app/api/routes/groups.py(+1 -1)📝
backend/app/api/routes/inventory.py(+221 -32)📝
backend/app/api/routes/library.py(+4 -4)📝
backend/app/api/routes/maintenance.py(+18 -3)📝
backend/app/api/routes/metrics.py(+17 -0)📝
backend/app/api/routes/notifications.py(+14 -0)📝
backend/app/api/routes/printers.py(+196 -5)📝
backend/app/api/routes/projects.py(+4 -4)📝
backend/app/api/routes/settings.py(+10 -3)...and 80 more files
📄 Description
# Bambuddy v0.2.2
## Highlights
## New Features
dry_sf_reasonfrom firmware and surfaces HMS error codes for power issues.{eta}template variable to print start/progress notifications. Shows estimated wall-clock completion time based on the user's configured time format (12h/24h)./auth/meendpoint now accepts API keys, and the install script includes the API key in the kiosk URL for automatic authentication on boot.latest.## Fixed
db.flush()instead ofdb.commit(), so the file list was stale until page reload. Fixed the same race condition in folder create/update and file update endpoints.0. Now bypasses inventory when it says 0% but AMS hardware reports positive remain.compatible_printersfilter parsed JSON as semicolon-delimited, silently skipping all local presets. Removed the filter entirely.eth0:1) were invisible because the Docker image lackediproute2. Added it to the image.togglefor non-script entities so the badge click actually toggles the switch state.scalar_one_or_none()raisedMultipleResultsFoundwhen multiple smart plugs were assigned. Now fetches all plugs and returns the main power plug.smart_plugs.printer_idnow uses regex matching and also checks standalone UNIQUE indexes.slot_id - 1could never reach external spool IDs. Added position-based resolution using sorted available tray IDs. Contributed by @shrunbr.filament_idfor versioned setting IDs, ignoring variants. Added a cross-check that corrects the filament ID via reverse lookup.bed_temper, so cached temperature never dropped. The monitor now sends periodicpushallcommands to force fresh data.on_bed_cooledand 7 queue events), so they always defaulted to false regardless of user selection.parseUTCDatefor correct conversion.infofield parsing: decimal instead of hex, wrong bit extraction, and partial updates overwriting full map. All fixed.steel_rodcategory with appropriate maintenance tasks."any maskable"purpose, and added required screenshots to the manifest.status="completed"(actually printed) now count toward completion stats, excluding archived files.enum.StrEnumwhich was added in Python 3.11.CTRL_C_EVENTto the entire process group. Now spawns ffmpeg in its own process group.nozzle_idfilter that the single-printer path already had.tray_sub_brands(e.g. "PLA Basic", "PLA Matte") in all filament dropdowns, with separate dedup entries for different subtypes.total_layersandprint_time_secondsmetadata to determine if a.3mffile is sliced. Also passes the original filename when creating archives.0x4000are status indicators, not faults. Now skips them in both parsers.spool.assignmentsoutside the async greenlet. Now initializes the collection on new spools and eagerly loads it for existing ones.linkTagToSpoolendpoint with propertag_typeanddata_originvalues.tray_now=255(idle sentinel) before ext slot active check.RUNNINGandPAUSEstates. Status label correctly reads "Paused".filament_idresolution, andSlotPresetMappingsaving."aborted"status to"cancelled"before storing. A startup fixup converts existing bad rows.sync_from_db()now compares critical fields and restarts VPs when config changes are detected.inventory:*permissions to the frontend type definition.camera:viewpermission. Added proper process cleanup with background disconnect monitoring and periodic orphan scanning.for /fsyntax.scripts/tosys.pathat daemon startup and moved imports inside try/except blocks. Demoted hardware-not-available logs to INFO.decode(errors="replace")instead of being silently dropped.O1C2to all model ID maps across backend and frontend, fixing camera protocol, display names, and more.funfield from top-level MQTT payload.## Improved
inventory:view_assignmentspermission lets users see AMS spool assignments without accessing the full Inventory page.bambuddy_build_infogauge metric exposing version, Python version, platform, and architecture. Contributed by @sw1nn.--branchoption and interactive branch prompt for beta testers.videogroup for DSI backlight access.assign_spoolendpoint now correctly sends bothtray_info_idxandsetting_id.## Changed
## Security
dangerouslySetInnerHTMLwithout sanitization. Now sanitized with DOMPurify./api/v1/auth/setupendpoint could disable authentication without being authenticated. Now returns 403 when auth is already enabled.rtsps://URLs and added access codes to exact-match redaction.## Merged Pull Requests
## Community Contributors
bambuddy_build_infometric for version tracking and alerting.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.