bambuddy/backend/tests/unit
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
..
core fix(asyncio): track strong refs on orphan create_task sites 2026-06-06 10:41:28 +02:00
services 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
utils fix(spoolman): split mid-print usage across AMS backup switch (#1793) 2026-07-01 09:50:30 +02:00
__init__.py
test_a2l_ams_lite_2619.py fix(a2l): normalise AMS Lite unit 16->6 so slots load and deduct (#a2l-am-unit-16) 2026-07-21 10:21:11 +02:00
test_accessory_plug_queue_stall_2629.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_ams_alarm_gating.py feat(ams): gate humidity/temperature alarms on AMS-has-filament (#1619) 2026-06-04 11:30:26 +02:00
test_ams_assignment_lock.py fix(inventory): serialise spool auto-assign per printer to fix Postgres race 2026-04-26 09:40:02 +02:00
test_ams_mapping_unresolved_2589.py fix(filament): don't dispatch an unresolved AMS mapping to the external spool (#2589) 2026-07-18 08:11:44 +02:00
test_ams_tray_tar_parse_2587.py feat(ams): name the expected slot when a paused print hits an AMS runout (#2587) 2026-07-18 13:06:01 +02:00
test_archive_file_path_guard.py Fix archive endpoints crash with "Is a directory" for BambuStudio prints (#475) 2026-02-21 11:35:18 +01:00
test_archive_filtering.py Security hardening (maziggy/bambuddy-security #5) 2026-07-16 07:50:51 +02:00
test_archive_plate_2603.py fix(queue): persist selected plate to the archive; reconcile archive on offline stop (#2603) 2026-07-19 09:29:54 +02:00
test_archive_run_aggregation.py fix(archives): #1608 suppress card time-accuracy badge for multi-run archives 2026-06-03 10:14:57 +02:00
test_assignment_verification_2582.py feat(ams): confirm spool assignments landed instead of fire-and-forget (#2582) 2026-07-21 08:46:02 +02:00
test_asyncio_handlers.py fix(#1113): silence Windows asyncio Proactor cleanup-RST noise 2026-04-27 16:14:31 +02:00
test_auth_fail_closed.py fix(security): GHSA-6mf4-q26m-47pv — fail-closed on auth-probe DB errors (CVSS 9.8) 2026-05-30 13:49:09 +02:00
test_bambu_mqtt_cfg_parse.py feat(ams-backup): add status badge + toggle, fix prefer-lowest (#1766) 2026-06-20 12:07:20 +02:00
test_bed_jog.py fix(jog): stop disabling firmware endstops; warn that limits aren't enforced (#2579) 2026-07-16 15:21:47 +02:00
test_bug_report.py [Feature] Redesign bug report debug log capture flow 2026-03-20 14:18:24 +01:00
test_bulk_spool_create.py Add bulk spool addition and stock spools 2026-02-21 10:39:18 +01:00
test_camera_ffmpeg_termination.py fix(camera): bound the post-kill wait on ffmpeg cleanup (#2580) 2026-07-17 07:03:10 +02:00
test_camera_stderr_summary.py fix(camera): capture ffmpeg stderr when an RTSP stream stalls (#1395) 2026-05-22 10:02:41 +02:00
test_cancellation_cascade_recovery_migration.py fix(queue): cancelled prints no longer block require_previous_success chain (#1667) 2026-06-06 13:40:56 +02:00
test_cancelled_pool_filter.py fix: cancel-safe get_db + drop sqlalchemy.pool cancellation noise 2026-04-27 16:32:10 +02:00
test_capture_pid_tracking.py fix(obico): exclude snapshot capture PIDs from stream cleanup (#172) 2026-04-17 08:38:22 +02:00
test_catalog_bulk_delete.py Add bulk delete for spool and color catalog entries (#646) 2026-03-07 10:13:40 +01:00
test_check_previous_success.py fix(queue): close #1818 — Resume after failure clears the gate 2026-06-25 09:00:57 +02:00
test_cli.py fix(install): make SpoolBuddy kiosk usable on first boot in full-mode install 2026-04-18 08:14:53 +02:00
test_cloud_token_expiry.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_code_quality.py fix(test): stop sys.modules-deleting backend.app.main in test_code_quality 2026-05-24 12:51:24 +02:00
test_color_utils.py fix(inventory): fix usage tracking for remapped AMS slots and slicer prints 2026-02-16 15:46:32 +01:00
test_config_env_warnings.py feat(encryption): MFA at-rest encryption auto-bootstrap with status UI (#1219) (#1231) 2026-05-08 09:01:51 +02:00
test_cost_tracking.py fix(cost): top-up untracked filament at default rate so multi-color 2026-05-15 15:43:37 +02:00
test_cover_coalescing_2572.py fix(db): release scheduler/cloud/cover sessions across slow I/O, add LIFO pool (#2572) 2026-07-18 16:15:09 +02:00
test_db_dialect.py Feature/spoolman inventory UI (#1241) 2026-05-08 11:52:42 +02:00
test_db_pool_and_auth_cache.py fix(db): configurable pool, auth_enabled cache, single-checkout auth (#2572) 2026-07-18 13:48:14 +02:00
test_diagnostic_snapshot.py ● feat(support): include sanitized connection / VP / log-health diagnostics in support bundle and bug report (#1506 follow-up) 2026-05-24 10:16:30 +02:00
test_energy_snapshots.py fix(energy): date-range energy in total mode + restart-resilient per-print tracking (#941) 2026-04-11 11:14:54 +02:00
test_extract_video_last_frame.py fix(photo): source finish photo from forced timelapse + cleanup (#1397) 2026-06-05 13:53:26 +02:00
test_failure_reason_derivation.py fix: cancel = layer shift, stuck "1 problem", and dropped child-logger logs 2026-04-26 14:24:28 +02:00
test_fallback_archive_mqtt_filament.py fix(archives): resolve raw_data wrapper in fallback-archive filament extraction (#1533 follow-up) 2026-05-29 10:55:41 +02:00
test_ffmpeg_rtsp_timeout_flag.py fix(camera): probe ffmpeg for the right RTSP socket-timeout flag (#1504) 2026-05-24 08:49:21 +02:00
test_filament_fields_options.py fix(profiles): add PLA-CF + Bambu CF/GF/specialty variants to filament_type select (#1686) 2026-06-09 07:38:59 +02:00
test_filament_info_single_flight_2572.py fix(db): release scheduler/cloud/cover sessions across slow I/O, add LIFO pool (#2572) 2026-07-18 16:15:09 +02:00
test_filename_validation.py fix(dispatch): align SD cleanup with upload path so doubled-extension library rows don't leave ghost prints (#1542) 2026-05-28 08:40:43 +02:00
test_finish_photo_from_timelapse.py fix(photo): source finish photo from forced timelapse + cleanup (#1397) 2026-06-05 13:53:26 +02:00
test_finish_photo_moment_sync.py fix(finish-photo): bank in-print frame for FINISH-state fallback (#1867) 2026-07-09 08:17:59 +02:00
test_firmware_versions.py fix(firmware-check): bypass Cloudflare TLS-fingerprint gate via curl_cffi (#1666) 2026-06-06 13:30:13 +02:00
test_force_color_plate_scope_migration.py fix(queue): scope force-colour overrides to the plate the item prints (#2551) 2026-07-13 09:18:17 +02:00
test_gcode_injection.py feat(gcode-injection): per-VP opt-in auto-print injection toggle (#1516) (#1656) 2026-06-19 11:29:07 +02:00
test_get_db_cancel_safety.py fix: cancel-safe get_db + drop sqlalchemy.pool cancellation noise 2026-04-27 16:32:10 +02:00
test_git_providers.py feat(#1239): Update Gitea and Forgejo due to API changes from initial cut (#1255) 2026-05-11 12:27:41 +02:00
test_github_backup_schemas.py feat(backup): Extend Backup to other Git providers (#1160) 2026-05-03 08:12:36 +02:00
test_hms_error_summary.py ● fix(#1111): advance queue item when print fails before reaching RUNNING 2026-04-24 16:02:55 +02:00
test_homeassistant_settings.py
test_http_utils.py fix(http): RFC 6266-encode Content-Disposition so non-ASCII filenames don't crash response (issue #1245) 2026-05-08 14:06:40 +02:00
test_inventory_remain_endpoint.py feat(ams-backup): add status badge + toggle, fix prefer-lowest (#1766) 2026-06-20 12:07:20 +02:00
test_jti_revoked_session_reuse_2572.py fix(db): configurable pool, auth_enabled cache, single-checkout auth (#2572) 2026-07-18 13:48:14 +02:00
test_launcher_shutdown_config.py fix(shutdown): exec uvicorn as PID 1 in Docker, and bound the graceful-shutdown wait 2026-07-11 14:44:45 +02:00
test_layer_timelapse_expected_archive.py refactor(timelapse): extract _maybe_start_layer_timelapse + rewrite test 2026-05-16 14:35:47 +02:00
test_ldap_migration.py fix(auth): make password_hash nullable on upgraded SQLite installs (#794) 2026-04-11 11:33:49 +02:00
test_library_classify_file_type.py ● fix(library): #1600 thumbnail extraction for external-folder .gcode.3mf 2026-06-02 14:51:08 +02:00
test_library_file_path_guard.py feat: add embedded GCode viewer (#963) 2026-04-22 11:14:42 +02:00
test_library_file_type_backfill_migration.py ● fix(library): #1600 thumbnail extraction for external-folder .gcode.3mf 2026-06-02 14:51:08 +02:00
test_library_print_name.py fix(library): show the filename, not the embedded 3MF Title (#1489) 2026-05-22 10:22:14 +02:00
test_local_backup.py fix(backup): diagnose an unwritable backup path instead of quoting errno 30 (#2544) 2026-07-12 08:44:53 +02:00
test_local_config.py feat(system): NTP-gate state on /api/v1/system/appliance 2026-06-22 14:23:30 +02:00
test_location_migration.py feat(inventory): structured storage locations catalog (#1505) 2026-06-17 11:33:23 +02:00
test_location_service.py feat(inventory): structured storage locations catalog (#1505) 2026-06-17 11:33:23 +02:00
test_log_error_detection.py
test_logging_filters.py feat(observability): trace ID column on every log line + X-Trace-Id header 2026-04-26 10:01:17 +02:00
test_maintenance_rod_filtering.py [Fix] Remove incorrect "Lubricate Carbon Rods" maintenance task (#755) 2026-03-19 08:40:24 +01:00
test_makerworld_routes.py fix(cloud): stop reporting an expired Bambu Cloud sign-in as connected (issue #2562) 2026-07-14 11:29:56 +02:00
test_makerworld_s3_tls.py fix(cloud): stop reporting an expired Bambu Cloud sign-in as connected (issue #2562) 2026-07-14 11:29:56 +02:00
test_mfa_helpers.py Revert "feat(oidc): Azure Entra ID support — configurable email claim & verification + Remember Me persistent login (#1103)" 2026-04-24 16:48:59 +02:00
test_mqtt_debug_on_change.py fix(queue): upload to printers in parallel, cap wedge retries, make debug logs survive a farm 2026-07-14 10:35:58 +02:00
test_no_fail_open_in_auth.py fix(security): WebSocket auth gate + audit-driven hardening sweep 2026-06-02 10:02:17 +02:00
test_no_hardcoded_secrets.py fix(security): WebSocket auth gate + audit-driven hardening sweep 2026-06-02 10:02:17 +02:00
test_no_unsafe_path_joins.py fix(slicer-presets): #1581 SliceModal refresh + invalidate on local-profile delete/import 2026-06-02 12:42:16 +02:00
test_notification_plate_scope.py fix(notifications): scope completion notification to printed plate on multi-plate 3MFs (#1785) 2026-06-20 08:28:44 +02:00
test_obico_detection.py fix(obico): Failure Detection status panel shows thresholds for the selected sensitivity (#1469) 2026-05-21 08:45:59 +02:00
test_obico_smoothing.py feat(obico): AI print-failure detection via self-hosted Obico ML API (#172) 2026-04-13 09:54:26 +02:00
test_oidc_icon_helpers.py feat(auth): proxy OIDC provider icons server-side (#1333) (#1342) 2026-05-15 08:50:37 +02:00
test_oidc_icon_migration_pg.py feat(auth): proxy OIDC provider icons server-side (#1333) (#1342) 2026-05-15 08:50:37 +02:00
test_oidc_icon_service.py feat(auth): proxy OIDC provider icons server-side (#1333) (#1342) 2026-05-15 08:50:37 +02:00
test_oidc_icon_validation.py feat(auth): proxy OIDC provider icons server-side (#1333) (#1342) 2026-05-15 08:50:37 +02:00
test_opentag3d.py Feature/spoolman inventory UI (#1241) 2026-05-08 11:52:42 +02:00
test_orca_profiles.py Fix AMS slot showing wrong material for "Support for" profiles 2026-03-03 13:34:03 +01:00
test_orphan_auth_cleanup_migration.py feat(auth): SSO autologin + disable local username/password login (#1589) 2026-06-25 14:54:27 +02:00
test_permissions.py Add inventory:view_assignments permission so admins can grant users 2026-03-07 09:17:26 +01:00
test_permissions_stats_filter.py Add per-user statistics filtering (#730) 2026-03-31 12:13:58 +02:00
test_phantom_print_hardening.py fix(queue): prevent duplicate dispatch and stale progress on batch prints 2026-04-22 17:48:53 +02:00
test_plate_object_extraction.py
test_plug_datetimes_are_naive_utc.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_postgres_restore_drop_cascade.py fix(restore): drop tables with CASCADE so orphan FKs can't abort restore 2026-04-29 11:17:43 +02:00
test_print_log.py fix(stats): don't bank the disconnect gap as print time on reconnect (#2592) 2026-07-18 09:58:21 +02:00
test_print_log_backfill_migration.py fix(stats): backfill PrintLogEntry.cost/energy/archive_id for pre-#1378 rows (#1390) 2026-05-17 09:30:02 +02:00
test_print_speed.py [Feature] Add quick print speed control to printer card (#256) 2026-03-18 11:13:27 +01:00
test_print_start_assigns_printer_id_to_vp_archive.py Fix: capture timelapse baseline on expected-archive on_print_start branch (#1403 follow-up) 2026-05-20 08:12:17 +02:00
test_print_start_expected_promotion.py fix(usage): scope 3MF filament tracking to dispatched plate (#1697) 2026-06-09 09:16:36 +02:00
test_printer_manager_status_broadcast.py feat(ams-backup): add status badge + toggle, fix prefer-lowest (#1766) 2026-06-20 12:07:20 +02:00
test_printer_models.py fix(diagnostic): skip external-storage check on P1S/P1P instead of fail (#2524) 2026-07-09 08:43:59 +02:00
test_printer_offline_notification.py fix(notifications): capture the snapshot outside the DB session (#2572) 2026-07-16 09:20:12 +02:00
test_printer_schema.py fix(printers): normalize serial numbers + diagnose connect-but-no-reports (#1465) 2026-05-21 08:30:17 +02:00
test_printer_sensor_history.py feat(heater-history): track nozzle / bed / chamber readings + per-tile chart-icon overlay opens history modal 2026-06-20 12:55:24 +02:00
test_project_settings_sentinel_sanitiser.py fix(slicer): strip "-1" inherit sentinels from project_settings.config (#1201) 2026-05-04 10:34:36 +02:00
test_pushover_priority.py fix(notifications): send Pushover retry/expire for Emergency priority (#2586) 2026-07-17 10:02:19 +02:00
test_reconcile_stale_active_prints.py fix(reconcile): don't synthesize aborted PRINT COMPLETE on the bare-connect edge before push_status arrives (#1679) 2026-06-08 08:18:13 +02:00
test_reprint_clears_stale_timelapse.py fix(notifications): reprint-from-archive sent original print's finish photo (#1707) 2026-06-11 09:23:03 +02:00
test_reprint_updates_subtask_id.py fix(notifications): false-positive Print Stopped on reprint after MQTT reconnect (#1807) 2026-06-25 11:07:29 +02:00
test_resolve_expected_tray_2587.py feat(ams): name the expected slot when a paused print hits an AMS runout (#2587) 2026-07-18 13:06:01 +02:00
test_restore_sqlite_wal_safety.py fix(restore): replace shutil.copy2 with SQLite backup API to prevent WAL leftover (#1211, #668) 2026-05-05 16:00:22 +02:00
test_route_auth_coverage.py feat(system): appliance locale defaults endpoint + frontend i18n bootstrap 2026-06-22 14:13:44 +02:00
test_run_filament_helper.py fix(stats): scope per-run filament to the printed plate, not the whole 3MF (#2614) 2026-07-20 11:52:18 +02:00
test_run_filament_plate_scope_2614.py fix(stats): scope per-run filament to the printed plate, not the whole 3MF (#2614) 2026-07-20 11:52:18 +02:00
test_run_with_retry.py Fix ghost jobs from SQLite lock on print completion (#897) 2026-04-07 09:20:58 +02:00
test_runtime_tracking_pause.py fix(maintenance): paused prints no longer accumulate runtime hours (#1521) 2026-05-25 09:04:47 +02:00
test_safe_path.py security: harden path-traversal class across routes + services; fifth CI backstop 2026-06-02 12:12:54 +02:00
test_scheduler_ams_mapping.py fix(scheduler): skip per-nozzle filter under FTS so dispatch feeds the right spool (#2186) 2026-07-07 12:17:46 +02:00
test_scheduler_auto_drying.py fix(drying): don't stop a running AMS dry on an unreliable humidity re-check (#1892) 2026-07-05 09:32:02 +02:00
test_scheduler_backup_gate.py fix(scheduler): skip per-nozzle filter under FTS so dispatch feeds the right spool (#2186) 2026-07-07 12:17:46 +02:00
test_scheduler_busy_defer_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_scheduler_busy_only.py [Fix] Suppress spurious "waiting for filament" notification when printers are busy (#753) 2026-03-20 11:34:23 +01:00
test_scheduler_cancel_race.py feat(print-options): add "Auto" state to bed levelling, flow & nozzle-offset calibration 2026-07-20 17:55:56 +02:00
test_scheduler_cleanup_library.py feat(print-options): add "Auto" state to bed levelling, flow & nozzle-offset calibration 2026-07-20 17:55:56 +02:00
test_scheduler_clear_plate.py fix(scheduler): default require_plate_clear to False to match schema/UI (#1865) 2026-07-07 10:07:47 +02:00
test_scheduler_concurrent_dispatch.py fix(queue): make upload concurrency a refillable pool, not a per-batch cap (#2602) 2026-07-19 08:34:38 +02:00
test_scheduler_dispatch_hold.py fix(scheduler): post-dispatch hold prevents H2D Pro double-fire (#1157) 2026-04-28 17:19:17 +02:00
test_scheduler_filament_deficit.py fix(queue): persist "Print Anyway" so scheduler stops re-flagging it 2026-06-09 10:43:07 +02:00
test_scheduler_filament_override.py Add filament override for model-based queue assignment (#486) 2026-02-22 16:43:16 +01:00
test_scheduler_force_color_ams_fallback.py Merge pull request #1440 from Person2099/fix/filament-override-ams-mapping-dispatch 2026-05-20 11:25:45 +02:00
test_scheduler_inventory_remain.py fix(scheduler): use inventory weight for "Prefer Lowest Filament" sort (#1508) 2026-05-24 09:18:38 +02:00
test_scheduler_model_mismatch.py fix(queue): enforce sliced-model compatibility on cross-model dispatch (#2578) 2026-07-17 06:51:51 +02:00
test_scheduler_nozzle_mismatch.py feat(print-options): add "Auto" state to bed levelling, flow & nozzle-offset calibration 2026-07-20 17:55:56 +02:00
test_scheduler_power_plug_pick_2629.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_scheduler_preheat.py fix(db): release scheduler/cloud/cover sessions across slow I/O, add LIFO pool (#2572) 2026-07-18 16:15:09 +02:00
test_scheduler_reassign_race_2615.py fix(queue): claim a queue item before dispatch so it can't be reassigned mid-upload (#2615) 2026-07-20 12:30:39 +02:00
test_scheduler_release_conn_before_ftp_2572.py fix(db): release scheduler/cloud/cover sessions across slow I/O, add LIFO pool (#2572) 2026-07-18 16:15:09 +02:00
test_scheduler_watchdog.py fix(queue): upload to printers in parallel, cap wedge retries, make debug logs survive a farm 2026-07-14 10:35:58 +02:00
test_settings_dedupe_migration.py Post work PR #1070 2026-04-24 13:24:00 +02:00
test_sidebar_settings.py feat: Centralise sidebar ordering and add page visibility options (#1673) 2026-06-17 12:04:57 +02:00
test_slice_process_support_patch.py fix(slicer): preserve PVA-for-support intent across re-slice of source 3MF (#1881) 2026-07-02 11:32:22 +02:00
test_slice_request_bed_type.py feat(slicing): build-plate override in the SliceModal (#1337) 2026-05-14 15:28:41 +02:00
test_slice_request_schema.py remove(slicer): drop bundle import; fix cloud preset type/from for CLI (#1712) 2026-06-12 10:14:06 +02:00
test_slicer_presets.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_settings.py Add configurable slicer preference — Bambu Studio or OrcaSlicer (#313) 2026-02-10 09:38:06 +01:00
test_slot_preset_key.py fix(ams): HT slot shows "Generic" after configuring custom preset (#1053) 2026-04-20 17:32:34 +02:00
test_smart_plug_power_flag_migration_2629.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_sponsor_prompt_service.py test: silence Bandit B108 on hardcoded /tmp test-fixture paths 2026-06-28 13:52:05 +02:00
test_spool_schemas_colors.py feat(inventory): multi-colour gradients, transparency, visual effects (#1154) 2026-04-29 09:13:33 +02:00
test_spool_schemas_rgba.py feat(#729): per-spool category + low-stock threshold override 2026-04-25 13:24:49 +02:00
test_spool_schemas_storage_location.py fix(inventory): persist storage_location for internal spools (#1291) 2026-05-12 16:02:24 +02:00
test_spoolbuddy_schema_validation.py Feature/spoolman inventory UI (#1241) 2026-05-08 11:52:42 +02:00
test_spoolbuddy_ssh.py fix(spoolbuddy): lower /update permission to INVENTORY_UPDATE so kiosk's own Settings -> Update button works 2026-05-08 14:28:41 +02:00
test_spoolbuddy_system_stats.py Fixed backend/tests/unit/test_spoolbuddy_system_stats.py 2026-03-26 16:35:29 +01:00
test_spoolman_clear_location.py Fix Spoolman location not cleared on auto-sync when spool removed from AMS (#921) 2026-04-09 08:16:54 +02:00
test_spoolman_extra_lock.py Feature/spoolman inventory UI (#1241) 2026-05-08 11:52:42 +02:00
test_spoolman_inventory_helpers.py fix(inventory): "Reset usage to 0" preserves remaining in both modes (#1390) 2026-05-18 08:51:27 +02:00
test_spoolman_inventory_methods.py feat(inventory): structured storage locations catalog (#1505) 2026-06-17 11:33:23 +02:00
test_spoolman_no3mf_remain_fallback.py feat(spoolman): remain%-delta fallback for no-3MF "Untitled" prints (#1820) 2026-06-25 10:46:57 +02:00
test_spoolman_slot_ddl.py fix(spoolman): allow AMS-HT ams_id range in slot-assignment table (#1274) 2026-05-12 08:48:30 +02:00
test_spoolman_stale_tag_cleanup.py fix(spoolman): clear stale fallback-tag links on assign + link, prefer slot-assignment over tag-link in UI (#1457) 2026-05-20 11:00:54 +02:00
test_spoolman_tracking.py fix(inventory): record the mapped spool's material, not the sliced type (#2563) 2026-07-15 07:29:16 +02:00
test_ssrf_guard.py Feature/spoolman inventory UI (#1241) 2026-05-08 11:52:42 +02:00
test_subtask_archive_resume.py fix(archive): stop duplicating the job on a backend restart mid-print (#1485) 2026-05-22 09:05:25 +02:00
test_support_bundle_rotated_logs.py fix(queue): upload to printers in parallel, cap wedge retries, make debug logs survive a farm 2026-07-14 10:35:58 +02:00
test_support_helpers.py chore(tests): silence bandit B104 on redaction-sentinel asserts 2026-06-14 10:58:02 +02:00
test_sync_ams_weights.py fix: prevent spool weight corruption, add AMS weight sync, fix extruder_id 2026-02-15 15:47:41 +01:00
test_systemd_backup_paths.py fix(backup): diagnose an unwritable backup path instead of quoting errno 30 (#2544) 2026-07-12 08:44:53 +02:00
test_temperature_fan_presets.py feat: Update printer card UI for structure and readability (#1661) 2026-06-18 11:46:07 +02:00
test_threemf_tools.py follow-up(queue): cache per-plate 3MF metadata so queue polling stops re-parsing every row (#2573) 2026-07-17 08:26:23 +02:00
test_timelapse_baseline_restart_recovery.py fix(test): snapshot _timelapse_baselines inside the patch context to dodge CI race 2026-05-24 12:30:12 +02:00
test_timelapse_match.py fix(archives): scan_timelapse picked stale video at false offset (#1278) 2026-05-12 09:20:53 +02:00
test_trace.py fix: cancel = layer shift, stuck "1 problem", and dropped child-logger logs 2026-04-26 14:24:28 +02:00
test_upload_progress_bridge.py feat(toast): restore upload-progress toast for scheduler dispatches (#1625 follow-up) 2026-06-27 11:28:00 +02:00
test_url_safety.py feat(auth): proxy OIDC provider icons server-side (#1333) (#1342) 2026-05-15 08:50:37 +02:00
test_usage_tracker.py fix(inventory): record the mapped spool's material, not the sliced type (#2563) 2026-07-15 07:29:16 +02:00
test_use_ams_reconcile_2595.py fix(dispatch): honor a resolved AMS mapping over a stale use_ams=false (#2595) 2026-07-18 13:18:59 +02:00
test_user_notifications.py Post work PR #693 2026-03-17 12:24:36 +01:00
test_user_print_template_rename_migration.py feat(notifications): template-driven finish-photo email embed + user_print_* rename (#1792) 2026-06-22 11:15:39 +02:00
test_vp_access_code_sync_migration.py fix(vp): auto-derive access code from target printer in non-proxy modes 2026-06-05 17:19:16 +02:00
test_vp_certificate_rotation.py fix(virtual-printer): #1558 Send pre-flight + slicer-surface audit bundle 2026-05-30 13:34:10 +02:00
test_vp_delete_cleanup.py fix(virtual-printer): #1558 Send pre-flight + slicer-surface audit bundle 2026-05-30 13:34:10 +02:00
test_vp_ftp_port.py [Fix] Virtual Printer FTP routed to wrong VP with different access codes (#735) 2026-03-18 09:04:31 +01:00
test_vp_ftp_stor.py fix(vp): stop uvloop from silently truncating VP FTP uploads (#1896) 2026-07-05 10:32:13 +02:00
test_vp_mode_rename_migration.py fix(virtual-printer): #1429 net.info[*].ip cache leak + mode wire-value rename 2026-06-02 14:33:20 +02:00
test_vp_mqtt_bridge.py feat(vp): mirror live print progress to the slicer (#1887) 2026-07-11 10:06:03 +02:00
test_vp_mqtt_server.py fix(vp): evict MQTT clients on drain timeout + tighten TCP keepalive (#1872) 2026-07-02 10:13:01 +02:00
test_vp_tls_ciphers.py fix(virtual-printer): #1610 add Bambu cipher pin to every slicer-facing TLS context 2026-06-03 10:04:37 +02:00
test_vp_wire_dump.py debug(vp): env-flagged command-flow trace for slicer↔printer #1622 round-2 triage 2026-06-11 13:35:20 +02:00
test_ws_broadcast_to_user.py feat(toast): restore upload-progress toast for scheduler dispatches (#1625 follow-up) 2026-06-27 11:28:00 +02:00