diff --git a/CHANGELOG.md b/CHANGELOG.md index b7c776dc3..39feeae98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ All notable changes to Bambuddy will be documented in this file. +## [0.1.6b14] - 2026-01-17 + +### Fixed +- **Chamber temp showing on printers without sensor in multi-printer setups** - Fixed regression where A1/P1S chamber temperature would appear after adding a second printer: + - Root cause: REST API `/printers/{id}/status` endpoint wasn't filtering chamber temp by model + - WebSocket broadcasts filtered correctly, but initial REST fetch didn't + - Now both REST and WebSocket consistently filter chamber temp for P1P/P1S/A1/A1Mini + - Fixes [#82](https://github.com/maziggy/bambuddy/issues/82) (multi-printer regression) + ## [0.1.6b13] - 2026-01-16 ### Fixed diff --git a/backend/app/api/routes/printers.py b/backend/app/api/routes/printers.py index f45fc69d3..0f0663e9d 100644 --- a/backend/app/api/routes/printers.py +++ b/backend/app/api/routes/printers.py @@ -30,7 +30,7 @@ from backend.app.services.bambu_ftp import ( get_storage_info_async, list_files_async, ) -from backend.app.services.printer_manager import get_derived_status_name, printer_manager +from backend.app.services.printer_manager import get_derived_status_name, printer_manager, supports_chamber_temp logger = logging.getLogger(__name__) router = APIRouter(prefix="/printers", tags=["printers"]) @@ -338,6 +338,14 @@ async def get_printer_status(printer_id: int, db: AsyncSession = Depends(get_db) tray_now = state.tray_now logger.debug(f"Using tray_now directly as global ID: {tray_now}") + # Filter out chamber temp for models that don't have a real sensor + # P1P, P1S, A1, A1Mini report meaningless chamber_temper values + temperatures = state.temperatures + if not supports_chamber_temp(printer.model): + temperatures = { + k: v for k, v in temperatures.items() if k not in ("chamber", "chamber_target", "chamber_heating") + } + return PrinterStatus( id=printer_id, name=printer.name, @@ -350,7 +358,7 @@ async def get_printer_status(printer_id: int, db: AsyncSession = Depends(get_db) remaining_time=state.remaining_time, layer_num=state.layer_num, total_layers=state.total_layers, - temperatures=state.temperatures, + temperatures=temperatures, cover_url=cover_url, hms_errors=hms_errors, ams=ams_units,