bambuddy/backend/tests/unit/services
maziggy fdd6ec416f fix(slicer): classify filament profiles by their real printer scope, not just their name (#2628 follow-up)
Slicing for a P2S failed with "filament preset Bambu PLA Basic @BBL X1C 0.2
nozzle (slot 1) is not compatible with printer Bambu Lab P2S 0.4 nozzle" —
naming a profile shown nowhere in the dialog. The picked profile was
"Overture PLA Matte @0.2", whose inheritance chain roots in that X1C profile.

The dialog classifies a profile by its compatible_printers list and falls back
to reading the printer out of its name. That name carries no model, and the
list — present on the imported copy — is not shipped by every source: Bambu
Cloud omits it deliberately (rate limits), and Orca Cloud shipped it but
Bambuddy only mined filament type and colour from the same content.

Orca Cloud entries now carry their own compatible_printers, and the existing
same-name enrichment bridge carries the list onto entries that lack one, in
both directions between the cloud tiers. A bare "@<size>" name tag is read as
a nozzle size as a last resort: it can rule a printer out but never rules one
in, and implausible values are ignored rather than guessed at.
2026-07-22 10:44:05 +02:00
..
__init__.py
conftest.py
mock_ftp_server.py
test_archive_copy.py
test_archive_display_stem.py
test_archive_plate_validation.py
test_archive_service.py fix(slicer): preserve PVA-for-support intent across re-slice of source 3MF (#1881) 2026-07-02 11:32:22 +02:00
test_attach_timelapse_safe_path.py
test_backup_path.py fix(backup): diagnose an unwritable backup path instead of quoting errno 30 (#2544) 2026-07-12 08:44:53 +02:00
test_bambu_cloud.py fix(cloud): send required ?version= param on singular GET/DELETE of slicer setting endpoint (#1815) 2026-07-01 08:37:31 +02:00
test_bambu_ftp.py fix(ftp): stop a slow upload from being retried on top of itself (#2529) 2026-07-11 09:05:49 +02:00
test_bambu_mqtt.py fix(smart-plugs): don't blank printer state when an accessory plug switches off (#2629) 2026-07-22 09:57:27 +02:00
test_camera_diagnose.py
test_camera_fanout.py fix(camera): stop /camera/stop from letting a second socket open (#2521) 2026-07-14 11:52:56 +02:00
test_camera_profiles.py
test_camera_tls_proxy.py
test_email_service.py
test_external_camera.py fix(camera): transcode non-JPEG external snapshots to JPEG (#1902) 2026-07-06 07:54:30 +02:00
test_external_spool_change.py fix(inventory): reconcile external-spool assignment when its filament type changes (#2575) 2026-07-16 09:47:21 +02:00
test_filament_deficit.py feat(deficit): backup-aware filament deficit check, colour-strict (#1762) 2026-06-22 10:00:02 +02:00
test_filament_requirements.py
test_ftp_profiles.py fix(ftp): cap H2C FTPS to TLS 1.2 so the sliced 3MF downloads reliably (#2582) 2026-07-18 09:33:22 +02:00
test_hms_actions.py fix(hms): wrong-plate Ignore actually ignores + buttons read as buttons + ack-detection survives transient re-pause (#1869) 2026-06-29 10:59:29 +02:00
test_hms_errors.py
test_homeassistant_list_entities.py
test_label_renderer.py feat(labels): scannable QR on 203 dpi thermal printers + monochrome mode (#1870) 2026-07-07 10:31:19 +02:00
test_layer_timelapse.py
test_ldap_service.py
test_log_health.py
test_long_lived_tokens.py fix(overlay): authenticate the OBS overlay with a token when login is enabled (#2613) 2026-07-20 13:04:35 +02:00
test_loop_watchdog.py
test_makerworld.py fix(cloud): only sign out on Bambu's real token-expiry 401, not any 401 2026-07-21 07:26:19 +02:00
test_mqtt_smart_plug_subscribe.py
test_network_utils.py fix(vp): populate bind-interface list on macOS (route non-Linux to psutil) 2026-07-06 13:03:22 +02:00
test_notification_service.py fix(db): stop holding pooled connections across FTP/camera/SMTP work (#2572) 2026-07-18 09:10:08 +02:00
test_obico_actions.py feat(notifications): dedicate AI Failure Detection notification event (#1794) 2026-06-22 08:15:29 +02:00
test_orca_cloud.py feat(orca-cloud): pair via RFC 8628 device flow, replacing the paste-based sign-in 2026-07-17 08:16:35 +02:00
test_plate_detection.py
test_plate_thumbnail.py
test_plug_energy_history.py fix(smart-plugs): read a REST plug's lifetime counter, and derive Today/Yesterday from it (issue #2539) 2026-07-11 14:22:31 +02:00
test_preset_resolver.py
test_printable_objects_plate.py fix(skip-objects): scope the object list to the plate being printed (#2522) 2026-07-11 09:18:35 +02:00
test_printer_diagnostic.py fix(diagnostic): skip external-storage check on P1S/P1P instead of fail (#2524) 2026-07-09 08:43:59 +02:00
test_printer_manager.py fix(smart-plugs): don't blank printer state when an accessory plug switches off (#2629) 2026-07-22 09:57:27 +02:00
test_rest_smart_plug.py fix(smart-plugs): read a REST plug's lifetime counter, and derive Today/Yesterday from it (issue #2539) 2026-07-11 14:22:31 +02:00
test_slice_dispatch_progress.py
test_slice_preview.py
test_slicer_3mf_convert.py fix(slicer): classify filament profiles by their real printer scope, not just their name (#2628 follow-up) 2026-07-22 10:44:05 +02:00
test_slicer_api.py
test_slicer_filament_resolver.py fix(spoolbuddy): close #1815 — preserve PFUS/PFCN setting_id in resolver 2026-06-25 09:26:33 +02:00
test_slot_preset_writer.py
test_smart_plug_manager.py fix(smart-plugs): don't blank printer state when an accessory plug switches off (#2629) 2026-07-22 09:57:27 +02:00
test_spool_assignment_notifications.py
test_spool_tag_matcher.py
test_spoolman_service.py
test_spoolman_tracking.py
test_spoolman_tray_split.py fix(spoolman): split mid-print usage across AMS backup switch (#1793) 2026-07-01 09:50:30 +02:00
test_start_print_busy_guard_2598.py fix(dispatch): don't send start-print to a busy printer; scheduler defers (#2598) 2026-07-18 16:41:15 +02:00
test_stl_thumbnail.py
test_tailscale.py
test_tasmota.py
test_usage_tracker.py
test_virtual_printer.py feat(print-options): add "Auto" state to bed levelling, flow & nozzle-offset calibration 2026-07-20 17:55:56 +02:00
test_vp_diagnostic.py
test_vp_ftp_port_slicing.py