maziggy ba93abdb9d fix(spoolbuddy): writing a sticker no longer replaces a Bambu spool's AMS link in Spoolman (refused with the reason on Spoolman before 0.27, and such spools are not listed as untagged); the colour-name warning only appears when the name is really missing; an update stops when installing dependencies times out instead of restarting the daemon and reporting success vor 2 Tagen
..
core 0dfcff5925 Keep the RTSPS proxy's handler set off the server object (issue #3001) vor 1 Monat
services b9b62f739f fix(virtual-printer): a late slicer update leaves a queue job the scheduler already claimed alone (its archive still keeps the slicer's AMS pick); a backup restore really stops the virtual printers; the legacy PUT /settings/virtual-printer refuses the settings it no longer applies and is no longer blocked by stale legacy values vor 2 Tagen
utils 922f781a4b Fill in missing generic filament IDs and fix support-filament setting IDs (#3273) vor 1 Woche
__init__.py ff53e62ef8 Add comprehensive automated testing infrastructure vor 10 Monaten
test_3mf_fallback_matching.py fe2bc43720 test: run the backend suite on PostgreSQL too; fix the project import priority vor 1 Woche
test_3mf_files_for_print.py bb0bf03f68 fix(archives): an offline stop is logged and its real end replaces it; one log entry per run; untracked completions and print start find the print's own archive and 3MF vor 3 Tagen
test_a2l_ams_lite_2619.py 5a9415e2e1 fix(ams): Load and Unload work on an AMS-HT vor 4 Tagen
test_a2l_captured_mapping.py be0ad787b4 fix(a2l): AMS Lite trays in captured and slicer mappings keep their global id vor 5 Tagen
test_accessory_plug_queue_stall_2629.py 56accd24de fix(smart-plugs): don't blank printer state when an accessory plug switches off (#2629) vor 3 Monaten
test_ams_alarm_gating.py 6c0292b09a fix(ams): show a parked drying command as not started instead of an active cycle (#3096) vor 3 Wochen
test_ams_assignment_lock.py 5b34997dfa fix(inventory): hand assign, unassign and add-from-slot wait for the printer's slot lock; the AMS remain sync and a print's usage no longer overwrite a weight set by hand or weighed meanwhile; a spool deleted while a print is charged is skipped vor 3 Tagen
test_ams_ht_load_unload.py 5a9415e2e1 fix(ams): Load and Unload work on an AMS-HT vor 4 Tagen
test_ams_humidity_index_guard_3140.py 113f08a1a1 fix(printers): REST and WebSocket share the AMS serialiser, override picker sees both nozzles without an AMS vor 5 Tagen
test_ams_mapping_per_printer_2799.py dc72a0daea fix(virtual-printer): queued prints keep the slicer's options, not another printer's nozzles vor 5 Tagen
test_ams_mapping_unresolved_2589.py 47a2a77cd3 fix(filament): don't dispatch an unresolved AMS mapping to the external spool (#2589) vor 3 Monaten
test_ams_slot_location_cleanup.py 537b4d2509 Stop offering AMS slots as places to store a spool vor 2 Monaten
test_ams_temp_alarm_dispatch_2905.py c3677865b6 Give the AMS temperature alarm its own threshold (issue #2905) (#2943) vor 1 Monat
test_ams_tray_tar_parse_2587.py e77e10896f feat(ams): name the expected slot when a paused print hits an AMS runout (#2587) vor 3 Monaten
test_announcements_service.py 3fae2b402b Announcements: history, collapsed list, instant refresh, footer icon vor 3 Wochen
test_archive_bed_temperature_2989.py c001f596bf Read the bed temperature from the plate the project is sliced for (issue #2989) vor 1 Monat
test_archive_delete_no_3mf_dirs_2968.py d4477e9b71 Log ffmpeg's error instead of its build banner vor 1 Monat
test_archive_file_path_guard.py 055243683c Fix archive endpoints crash with "Is a directory" for BambuStudio prints (#475) vor 8 Monaten
test_archive_filtering.py b342124f0e fix(timelapse): a video goes to the run it belongs to (scan stops on a newer run, claimed videos left out of matching, camera video replaces the printer's without orphaning it); every timelapse change refreshes open Archives pages vor 3 Tagen
test_archive_nozzle_temperature_of_the_plate.py 879acdbf1f fix(archives): archives made without their 3MF store #RRGGBB colours (existing ones repaired at startup), find AMS-HT filament and are priced from their spools once the 3MF arrives; nozzle temperature of the printed plate vor 3 Tagen
test_archive_plate_2603.py 0033001945 fix(db): SQLite applies the ON DELETE rules of archives, library files, queue jobs, batches and projects vor 1 Woche
test_archive_print_plate.py 12422a7c7e fix(archive): runs of another plate are logged and charged for that plate vor 6 Tagen
test_archive_run_aggregation.py cc25cbe774 fix(archives): #1608 suppress card time-accuracy badge for multi-run archives vor 4 Monaten
test_archive_updated_scope.py f43be8098e Security hardening (maziggy/bambuddy-security #29) vor 1 Woche
test_archived_spool_slots_migration.py 23d04c8645 fix(inventory): archived or deleted spools release their AMS slots, safely in both modes vor 6 Tagen
test_assign_uses_model_preset_override.py a7b563334e Configure a spool's filament preset and K profile per nozzle vor 1 Monat
test_assignment_verification_2582.py 2e74f2ad41 feat(ams): confirm spool assignments landed instead of fire-and-forget (#2582) vor 3 Monaten
test_asyncio_handlers.py 56800589ff fix(#1113): silence Windows asyncio Proactor cleanup-RST noise vor 5 Monaten
test_auth_fail_closed.py 845ad39b19 fix(security): GHSA-6mf4-q26m-47pv — fail-closed on auth-probe DB errors (CVSS 9.8) vor 4 Monaten
test_bambu_mqtt_cfg_parse.py e7dd899963 Read AMS Filament Backup from home_flag on printers without cfg (#3259) vor 2 Wochen
test_bed_jog.py 2c7c97c130 fix(jog): send the nozzle-bed gap the API promises on every model (issue #1334) vor 1 Monat
test_bed_temperature_backfill_2989.py b0ecb8fd88 Repair the bed temperature on archives written before the fix (issue #2989) vor 1 Monat
test_billing_run_id_migration.py bf525661d3 Three fixes on top of the billing branch, all found by running the suite against vor 2 Monaten
test_bug_report.py dc4d77b93a [Feature] Redesign bug report debug log capture flow vor 7 Monaten
test_bug_report_no_email_stored.py 346b58ed8f fix(settings): printer temperature history retention gets a setting; no retention can wipe history; bug reports keep no email vor 4 Tagen
test_bulk_spool_create.py 053cfa73ad Suppliers as a managed list with per-spool assignments (#2996) vor 3 Wochen
test_bundled_compatible_printers_2982.py e9daa2124e Match slicer presets on what they declare, not what they are named (issue #2982) vor 1 Monat
test_callmebot_url_encoding.py ce9853c056 fix(printing): a plate check that could not run says so; the archive recovery download follows the file size; an unconfirmed upload is read back; broken MakerWorld downloads are refused; bulk-edit toast reflects the result; CallMeBot values are encoded vor 4 Tagen
test_camera_ffmpeg_termination.py 18cc906fad fix(camera): drain ffmpeg's pipes during teardown (#NNNN) vor 2 Monaten
test_camera_frozen_output_3218.py e0149ae4ac Restart a camera stream that keeps repeating one frame (#3218, #3189) vor 2 Wochen
test_camera_janitor_spares_reconnect.py cf0ba31f19 fix(camera): the plate check holds the chamber light like other camera uses, so a live view opened meanwhile keeps it; captures use the live frame of a watched single-client external camera; a reconnecting X1C live view is not ended by the cleanup; camera test/diagnose/plate routes release their DB connection before capturing vor 2 Tagen
test_camera_reconnect_budget.py 4a1f602bf2 fix(camera): a frozen external RTSP camera is reconnected vor 5 Tagen
test_camera_stderr_summary.py 056f06a396 fix(camera): capture ffmpeg stderr when an RTSP stream stalls (#1395) vor 5 Monaten
test_camera_stderr_tail.py d3827e646a Security hardening (maziggy/bambuddy-security #23) vor 1 Woche
test_camera_stop_spares_live_external.py 31888777ae fix(camera): external cameras share one stream per printer vor 5 Tagen
test_camera_stream_registry_isolation.py f26bcbbcce fix(camera): one registry key per stream, not per printer (issue #2707) vor 2 Monaten
test_camera_usb_stream_cleanup.py 217ab5f53a fix(camera): the orphan cleanup only kills ffmpeg this Bambuddy started vor 5 Tagen
test_cancel_during_dispatch.py 010361f378 fix(queue): a job cancelled while it is being sent stays cancelled vor 6 Tagen
test_cancellation_cascade_recovery_migration.py edaf7c4559 fix(queue): cancelled prints no longer block require_previous_success chain (#1667) vor 4 Monaten
test_cancelled_pool_filter.py 9884018497 fix: cancel-safe get_db + drop sqlalchemy.pool cancellation noise vor 5 Monaten
test_capture_pid_tracking.py d3827e646a Security hardening (maziggy/bambuddy-security #23) vor 1 Woche
test_catalog_bulk_delete.py a7ddc483b3 Add bulk delete for spool and color catalog entries (#646) vor 7 Monaten
test_chamber_temp_ceiling.py b04664c64a Raise the chamber-temperature ceiling from 60 to 65 C vor 2 Monaten
test_check_postgres_upgrade.py 1927e077f3 ci: check that upgrading a PostgreSQL database gives a fresh install's schema vor 1 Woche
test_check_previous_success.py 2fe9896917 fix(queue): close #1818 — Resume after failure clears the gate vor 3 Monaten
test_cli.py 6a627a85e1 fix(api-keys): a deleted key's connections and links don't pass to the next key vor 1 Woche
test_cloud_captcha_2790.py 036f0a688f Merge pull request #2845 from pascalheidmann/refactor/modular-import vor 1 Monat
test_cloud_token_expiry.py 036f0a688f Merge pull request #2845 from pascalheidmann/refactor/modular-import vor 1 Monat
test_cloud_totp_csrf.py dd171252dc fix(cloud): complete the CSRF handshake on Bambu Cloud TOTP sign-in (#2696) vor 2 Monaten
test_code_quality.py ccc354f347 refactor(models): declare the notification models' columns with Mapped[] vor 1 Woche
test_color_utils.py 73912d4f05 Let a clear spool stay clear on the way to Spoolman (issue #2912) (#2924) vor 1 Monat
test_completion_queue_item_match.py fe2bc43720 test: run the backend suite on PostgreSQL too; fix the project import priority vor 1 Woche
test_completion_subtask_match_2829.py 71a98800e1 Close the queue run of a file whose name ends in a space (#3241) vor 2 Wochen
test_compose_dir_setting.py 689f5276e4 Show the compose directory in the Docker update command (#2664) vor 2 Monaten
test_config_env_warnings.py ad785a95cb fix(queue): withdraw an expected print when the command never goes out vor 2 Monaten
test_confirm_link_unattended_fetch_1898.py b9e3fdc84f Post work PR #3047 vor 3 Wochen
test_confirm_page_escaping.py 098fa5273f Security hardening vor 2 Wochen
test_confirm_token_retirement_migration_1898.py 44c7e6fb39 Post-print outcome confirmation: good/reject verdicts, one-tap links, yield stats (#3047) vor 3 Wochen
test_conftest_query_cancellations.py fa5f300a4d test: test scripts run the build, type check and lint exits; finish query cancellations and release the app engine per test; refresh the type-check baseline vor 4 Tagen
test_connection_watchdog.py 3abab1fd45 fix(printers): recover MQTT sessions that stopped reconnecting (#2732) vor 2 Monaten
test_cost_tracking.py bb0bf03f68 fix(archives): an offline stop is logged and its real end replaces it; one log entry per run; untracked completions and print start find the print's own archive and 3MF vor 3 Tagen
test_cover_coalescing_2572.py cfecfa360e Restore the skip-objects list after a restart mid-print vor 2 Monaten
test_cover_rechecks_3mf_cache_2957.py 7c10412f99 Refuse a same-named 3MF that contradicts the running print (issue #2957) vor 1 Monat
test_db_dialect.py cfb5c54f19 Security hardening (maziggy/bambuddy-security #13) vor 1 Woche
test_db_pool_and_auth_cache.py 3ce9b917cb fix(db): cap SQLite pool fd bill + raise container nofile — prevents fd-exhaustion DB corruption (#2884) vor 2 Wochen
test_db_session_timezone.py fe2bc43720 test: run the backend suite on PostgreSQL too; fix the project import priority vor 1 Woche
test_debug_start_logs_no_credentials.py 487b48c5af Security hardening (maziggy/bambuddy-security #16) vor 1 Woche
test_design_settings.py 7e77bf5833 Take the layer height from the plate that actually printed vor 2 Monaten
test_diagnostic_snapshot.py a36c0009a5 fix(diagnostics): name the stalled step when a bundle's connection check times out (issue #3164) vor 3 Wochen
test_dispatch_claim_recovery.py ad785a95cb fix(queue): withdraw an expected print when the command never goes out vor 2 Monaten
test_donor_3mf_validation_2957.py fe2bc43720 test: run the backend suite on PostgreSQL too; fix the project import priority vor 1 Woche
test_download_deadline_and_gate_2957.py ce9853c056 fix(printing): a plate check that could not run says so; the archive recovery download follows the file size; an unconfirmed upload is read back; broken MakerWorld downloads are refused; bulk-edit toast reflects the result; CallMeBot values are encoded vor 4 Tagen
test_drying_preflight.py d37ce94f81 Feature: Scheduled drying (#2703) vor 2 Monaten
test_energy_plug_selection_2859.py 5a05e03c8e Use the printer's own plug for energy when several are linked (issue #2859) vor 2 Monaten
test_energy_price_1251.py b596b55456 Take the electricity price from Home Assistant and cost energy hour by hour (#1251) vor 2 Wochen
test_energy_snapshots.py b1be388a7d Security hardening (maziggy/bambuddy-security #18) vor 1 Woche
test_expected_print_creator_cleared.py dad7fea37b fix(notifications): the daily digest goes out during quiet hours and a failed one keeps its events for the next (dropped after two days); a deleted queued archive no longer leaves its creator to be named on a later print; a print closed at reconnect reports no actual duration; the template editor knows the print outcome confirmation and names every event vor 2 Tagen
test_expected_print_rollback.py 3b7c287f68 fix(queue): a print is charged with its own plate and AMS mapping (a fresh dispatch replaces a never-started one's, a failed send leaves a running plate's, completion drains the mapping) vor 3 Tagen
test_external_camera_live_frame_reuse.py d9da60dd8d fix(camera): reuse the live view's frame for external-camera captures (#2707) vor 2 Monaten
test_external_camera_rtsp_probe_3082.py 9fc2c6df2d fix(camera): stream an external RTSP camera that describes itself late (issue #3082) vor 1 Monat
test_external_camera_rtsp_redirects.py d3827e646a Security hardening (maziggy/bambuddy-security #23) vor 1 Woche
test_external_camera_ssrf.py 930a6661d7 Security hardening (maziggy/bambuddy-security #21) vor 1 Woche
test_external_dispatch_detection.py 89ea337612 Recognise our own print dispatch instead of guessing at a magic number vor 2 Monaten
test_external_mapping_on_ams_printer_3239.py 57dd8651d8 Match a location job's trays on the printer it gets (#3239) vor 2 Wochen
test_external_spool_mapping_3087.py 5be18ff57a fix(queue): print a plate whose filaments are all on the external spool (issue #3087) vor 1 Monat
test_external_spool_usage_3166.py 37502719b7 Fix external-spool usage charged to an AMS spool (#3166) vor 3 Wochen
test_extract_video_last_frame.py 12d17bfbe7 fix(photo): source finish photo from forced timelapse + cleanup (#1397) vor 4 Monaten
test_failed_start_releases_printer.py e965d22f38 A queued print that never starts no longer marks the printer's next print as started by Bambuddy. vor 6 Tagen
test_failure_reason_derivation.py a6ce26205a Give the AI's own halt a name in the archive (issue #2946) (#2954) vor 3 Wochen
test_fallback_3mf_transfer_retry_3063.py a4cfbd4212 fix(archives): come back for a 3MF whose transfer ran out of time (issue #3063) vor 1 Monat
test_fallback_archive_mqtt_filament.py 879acdbf1f fix(archives): archives made without their 3MF store #RRGGBB colours (existing ones repaired at startup), find AMS-HT filament and are priced from their spools once the 3MF arrives; nozzle temperature of the printed plate vor 3 Tagen
test_fallback_archive_recovery_2957.py 879acdbf1f fix(archives): archives made without their 3MF store #RRGGBB colours (existing ones repaired at startup), find AMS-HT filament and are priced from their spools once the 3MF arrives; nozzle temperature of the printed plate vor 3 Tagen
test_fallback_name_keeps_project_3126.py ebc72e1d41 fix(archives): keep the project name when the wrong-plate guard rejects a 3MF (issue #3126) vor 1 Monat
test_fallback_timelapse_baseline_2957.py 59d2713acf Give a no-3MF archive the timelapse baseline it never took (issue #2957) vor 1 Monat
test_fd_limit_2883.py 3ce9b917cb fix(db): cap SQLite pool fd bill + raise container nofile — prevents fd-exhaustion DB corruption (#2884) vor 2 Wochen
test_ffmpeg_output_summary.py d4477e9b71 Log ffmpeg's error instead of its build banner vor 1 Monat
test_ffmpeg_rtsp_timeout_flag.py eae96da56e fix(camera): probe ffmpeg for the right RTSP socket-timeout flag (#1504) vor 5 Monaten
test_filament_colour_2977.py 4f10d15584 Record the colour a slice is actually printed in (issue #2977) vor 1 Monat
test_filament_fields_options.py bfbf5d59af fix(profiles): add PLA-CF + Bambu CF/GF/specialty variants to filament_type select (#1686) vor 4 Monaten
test_filament_finish.py 26e9a05707 fix(queue): a plate printed from the external spool keeps the AMS off on multi-plate files; slot reuse respects the finish; any-model VPs keep the AMS on; cloud filament id read from the preset too vor 4 Tagen
test_filament_info_single_flight_2572.py e4866937c3 Security hardening (maziggy/bambuddy-security #36) vor 6 Tagen
test_filament_type_equivalence.py e6842e1d3c Rank near-colour matches by how they look, and share one filament type table (#2804) vor 2 Monaten
test_filename_validation.py 6d316c5593 fix(dispatch): align SD cleanup with upload path so doubled-extension library rows don't leave ghost prints (#1542) vor 4 Monaten
test_finish_photo_from_timelapse.py 432e956eff fix(camera): rotate every still exactly once, and cover the sources that let ffmpeg write the file vor 2 Monaten
test_finish_photo_link_auth.py 919aa69f83 Make the {finish_photo_url} link open with authentication on vor 3 Wochen
test_finish_photo_moment_sync.py 71a98800e1 Close the queue run of a file whose name ends in a space (#3241) vor 2 Wochen
test_firmware_versions.py 4bcab89eee fix(firmware-check): bypass Cloudflare TLS-fingerprint gate via curl_cffi (#1666) vor 4 Monaten
test_force_color_plate_scope_migration.py a0d4b3d837 fix(queue): scope force-colour overrides to the plate the item prints (#2551) vor 3 Monaten
test_forget_printer.py 175758d25a fix(maintenance): a printer's time offline is not counted as print time; duplicate maintenance items are merged on upgrade and prevented by a unique index; the "performed" response honours the item's own interval type vor 2 Tagen
test_fts_kprofile_routing.py c5e0055864 Track which nozzle each AMS feeds through the Filament Track Switch vor 2 Monaten
test_gcode_injection.py b414af6b1c feat(gcode-injection): per-VP opt-in auto-print injection toggle (#1516) (#1656) vor 4 Monaten
test_generic_filament_ids.py 922f781a4b Fill in missing generic filament IDs and fix support-filament setting IDs (#3273) vor 1 Woche
test_get_db_cancel_safety.py 9884018497 fix: cancel-safe get_db + drop sqlalchemy.pool cancellation noise vor 5 Monaten
test_git_providers.py 306b9ba7fd Accept Forgejo tokens scoped to a single repository (#2775) vor 2 Monaten
test_git_providers_restore.py 0be6ccd090 fix(backup): stop Gitea's tree pager failing open on a missing total_count (#2656) vor 2 Monaten
test_github_backup_cloud_profiles.py 036f0a688f Merge pull request #2845 from pascalheidmann/refactor/modular-import vor 1 Monat
test_github_backup_preset_secrets.py b1be388a7d Security hardening (maziggy/bambuddy-security #18) vor 1 Woche
test_github_backup_schemas.py e45f967616 feat(backup): Extend Backup to other Git providers (#1160) vor 5 Monaten
test_github_backup_settings_secrets.py 473cdf3f0e Security hardening (maziggy/bambuddy-security #41) vor 5 Tagen
test_github_backup_spool_fields.py 19bd258672 fix(backup): a Git backup includes each spool's "Total Consumed" reset point and a restore brings it back (an older backup keeps the live one) vor 3 Tagen
test_github_restore.py 19bd258672 fix(backup): a Git backup includes each spool's "Total Consumed" reset point and a restore brings it back (an older backup keeps the live one) vor 3 Tagen
test_github_restore_numbers.py 3c2ab99635 fix(archives): re-sliced archives read as not printed with a cost; restore checks its numbers; prints are bound under one set of names vor 4 Tagen
test_github_restore_secret_destination.py 047fe0df49 Security hardening (maziggy/bambuddy-security #20) vor 1 Woche
test_github_restore_validation.py 8701e2b6b3 Security hardening (maziggy/bambuddy-security #18) vor 1 Woche
test_h2d_tray_now_same_frame_g11.py e3824097fa fix(mqtt): an H2D's active slot is read against the same message's nozzle data, and older nozzle data no longer overrules it vor 4 Tagen
test_ha_scripts_on_automatic_switch.py 1de2d51634 fix(smart-plugs): Home Assistant scripts linked to a printer run when Bambuddy switches its power plug off or on by schedule, not only by hand vor 4 Tagen
test_ha_sensor_alert_template_rename_migration_2824.py 54af3146a3 [Feature]: Bind Home Assistant sensors to storage locations (dryboxes/bins) (#2827) vor 1 Monat
test_ha_sensor_manager_1148.py 54af3146a3 [Feature]: Bind Home Assistant sensors to storage locations (dryboxes/bins) (#2827) vor 1 Monat
test_history_retention_minimum.py 346b58ed8f fix(settings): printer temperature history retention gets a setting; no retention can wipe history; bug reports keep no email vor 4 Tagen
test_hms_description_surfaces.py 6988a30eae Carry a fault's description in the status response (issue #2926) vor 1 Monat
test_hms_error_summary.py 033eff1254 Show Bambu's own HMS descriptions and the real alert level (issue #2728) vor 3 Wochen
test_homeassistant_settings.py eda1f5a9e7 Home Assistant: add environment variable configuration support vor 8 Monaten
test_http_utils.py 55cc64c87d Add printer video downloads and range selection (#2853) vor 2 Monaten
test_internal_printer_jobs.py c9c13b6440 fix(archives): the A1/A1 Mini/P1/A2L built-in calibration is not archived as a print vor 4 Tagen
test_internal_storage_probe_2856.py 4e79f9c2f7 Fill in a fallback archive when the 3MF finally arrives (issue #2957) vor 1 Monat
test_invalidate_all_sessions.py fe2bc43720 test: run the backend suite on PostgreSQL too; fix the project import priority vor 1 Woche
test_inventory_remain_endpoint.py 5649f836da fix(spoolman): the print dialog's cost estimate and each slot's grams left come from the spool bound to the slot, priced the way the print is charged, instead of the built-in assignments; they refresh when a slot's assignment changes vor 2 Tagen
test_jti_revoked_session_reuse_2572.py 5afdaa83d1 fix(db): configurable pool, auth_enabled cache, single-checkout auth (#2572) vor 3 Monaten
test_kprofile_ack_state_g7.py f45cc599f3 fix(kprofiles): an AMS change leaves the K-profile to the lost-selection check; command answers no longer change the nozzle; unconfirmed writes say so and edits read back; skip refusals are logged; stop-drying toast says sent vor 4 Tagen
test_launcher_shutdown_config.py 08df660f6c Replace the embedded G-code viewer with the slicer's own renderer vor 2 Monaten
test_layer_timelapse_attach.py b342124f0e fix(timelapse): a video goes to the run it belongs to (scan stops on a newer run, claimed videos left out of matching, camera video replaces the printer's without orphaning it); every timelapse change refreshes open Archives pages vor 3 Tagen
test_layer_timelapse_expected_archive.py 5db4c75ca0 fix(camera): apply camera_rotation to layer-timelapse frames too vor 2 Monaten
test_ldap_migration.py 3d893b22f3 fix(auth): make password_hash nullable on upgraded SQLite installs (#794) vor 6 Monaten
test_library_classify_file_type.py a837a3acbd ● fix(library): #1600 thumbnail extraction for external-folder .gcode.3mf vor 4 Monaten
test_library_file_path_guard.py 3adce435ee feat: add embedded GCode viewer (#963) vor 6 Monaten
test_library_file_type_backfill_migration.py a837a3acbd ● fix(library): #1600 thumbnail extraction for external-folder .gcode.3mf vor 4 Monaten
test_library_photo_move.py 12dddada0a File Manager: external link, notes and photos on library files (#3128) vor 3 Wochen
test_library_print_name.py fe2bc43720 test: run the backend suite on PostgreSQL too; fix the project import priority vor 1 Woche
test_local_backup.py 5bbfeefa65 fix(backup): diagnose an unwritable backup path instead of quoting errno 30 (#2544) vor 3 Monaten
test_local_config.py 4dcd37bc87 feat(system): NTP-gate state on /api/v1/system/appliance vor 4 Monaten
test_location_ha_sensor_manager_2824.py 54af3146a3 [Feature]: Bind Home Assistant sensors to storage locations (dryboxes/bins) (#2827) vor 1 Monat
test_location_ha_sensor_unique_binding_migration_2824.py 54af3146a3 [Feature]: Bind Home Assistant sensors to storage locations (dryboxes/bins) (#2827) vor 1 Monat
test_location_migration.py af5d24e289 feat(inventory): structured storage locations catalog (#1505) vor 4 Monaten
test_location_service.py 537b4d2509 Stop offering AMS slots as places to store a spool vor 2 Monaten
test_log_credential_redaction.py 929e89d6ce Security hardening (maziggy/bambuddy-security #17) vor 1 Woche
test_log_error_detection.py b99536cc33 Remove unused imports, variables, and fix minor CodeQL findings vor 8 Monaten
test_logging_filters.py 1878d2aab5 feat(observability): trace ID column on every log line + X-Trace-Id header vor 5 Monaten
test_main_plug_rank_2830.py 9a2b811566 Show the plug that powers the printer in the card's Power row (#2830) vor 2 Monaten
test_maintenance_rod_filtering.py dfb995bfe9 [Fix] Remove incorrect "Lubricate Carbon Rods" maintenance task (#755) vor 7 Monaten
test_makerworld_routes.py 036f0a688f Merge pull request #2845 from pascalheidmann/refactor/modular-import vor 1 Monat
test_makerworld_s3_tls.py 036f0a688f Merge pull request #2845 from pascalheidmann/refactor/modular-import vor 1 Monat
test_material_number_migration.py 71d4b2f70d Material number as a first-class spool field (#2994) vor 3 Wochen
test_media_scope_matches_media_gate.py d1f50973c6 Security hardening (maziggy/bambuddy-security #37) vor 6 Tagen
test_mesh_combine.py b67c9b572c Add "Combine to 3MF" for slicing several STLs on one plate (#3162) vor 3 Wochen
test_mfa_helpers.py ba1c97c808 feat: Two-Factor Authentication (TOTP, Email OTP) and OIDC/SSO – full implementation with admin UI (#933) vor 6 Monaten
test_migration_error_classification_2949.py fe2bc43720 test: run the backend suite on PostgreSQL too; fix the project import priority vor 1 Woche
test_model_assign_drops_nozzle_mapping.py 3c2ab99635 fix(archives): re-sliced archives read as not printed with a cost; restore checks its numbers; prints are bound under one set of names vor 4 Tagen
test_model_metadata.py fe2bc43720 test: run the backend suite on PostgreSQL too; fix the project import priority vor 1 Woche
test_model_provider_registry.py 036f0a688f Merge pull request #2845 from pascalheidmann/refactor/modular-import vor 1 Monat
test_mqtt_client_retirement_3068.py 8e9821dd2a fix(mqtt): never wait for a wedged paho network thread (issue #3068) vor 1 Monat
test_mqtt_debug_on_change.py ce807fb1cc fix(queue): upload to printers in parallel, cap wedge retries, make debug logs survive a farm vor 3 Monaten
test_mqtt_relay_events.py 1de2d51634 fix(smart-plugs): Home Assistant scripts linked to a printer run when Bambuddy switches its power plug off or on by schedule, not only by hand vor 4 Tagen
test_natural_sort.py 54af3146a3 [Feature]: Bind Home Assistant sensors to storage locations (dryboxes/bins) (#2827) vor 1 Monat
test_nearest_colour_match_2804.py e6842e1d3c Rank near-colour matches by how they look, and share one filament type table (#2804) vor 2 Monaten
test_no_3mf_archive_paths.py fe2bc43720 test: run the backend suite on PostgreSQL too; fix the project import priority vor 1 Woche
test_no_fail_open_in_auth.py b7d7c82501 fix(security): WebSocket auth gate + audit-driven hardening sweep vor 4 Monaten
test_no_hardcoded_secrets.py b7d7c82501 fix(security): WebSocket auth gate + audit-driven hardening sweep vor 4 Monaten
test_no_unsafe_path_joins.py 171848a0fc fix(slicer-presets): #1581 SliceModal refresh + invalidate on local-profile delete/import vor 4 Monaten
test_not_null_update_schemas.py 8e5116fe20 fix(api): null for a field that can't be empty leaves it unchanged vor 1 Woche
test_notification_plate_scope.py 2f6007a148 fix(notifications): scope completion notification to printed plate on multi-plate 3MFs (#1785) vor 4 Monaten
test_notification_provider_field_parity.py 4fdc55b884 Let the two stock alert toggles reach the database (issue #2945) (#2956) vor 3 Wochen
test_notification_template_sample_data.py 54af3146a3 [Feature]: Bind Home Assistant sensors to storage locations (dryboxes/bins) (#2827) vor 1 Monat
test_notify_callback_isolation.py b42d39ffcc Add native Notify! alerts, Live Activities and Lock Screen widgets (#3265) vor 1 Woche
test_notify_no_archive_duration.py dad7fea37b fix(notifications): the daily digest goes out during quiet hours and a failed one keeps its events for the next (dropped after two days); a deleted queued archive no longer leaves its creator to be named on a later print; a print closed at reconnect reports no actual duration; the template editor knows the print outcome confirmation and names every event vor 2 Tagen
test_nozzle_rack_mapping_2800.py 45dc139c41 Print an H2C two-nozzle plate from the carriage it was levelled on vor 2 Monaten
test_nozzle_rack_positions_1784.py 3954d3a7e6 Choose which rack nozzle each filament prints from on an H2C (#1784) vor 2 Monaten
test_obico_detection.py d2ea32ef6f Add Bambuddy Internal URL for Obico snapshots (#3255) vor 2 Wochen
test_obico_smoothing.py eec7793955 feat(obico): AI print-failure detection via self-hosted Obico ML API (#172) vor 6 Monaten
test_oidc_env_managed_migration.py e3cada51ac feat(oidc): add is_env_managed column to oidc_providers vor 2 Monaten
test_oidc_env_provider.py e3cada51ac feat(oidc): add is_env_managed column to oidc_providers vor 2 Monaten
test_oidc_env_reader.py aef4f3a3e9 fix(oidc): strip the required BAMBUDDY_OIDC_* values and register the local-login bypass vor 2 Monaten
test_oidc_icon_helpers.py 8a7598f6b5 feat(auth): proxy OIDC provider icons server-side (#1333) (#1342) vor 5 Monaten
test_oidc_icon_migration_pg.py 8a7598f6b5 feat(auth): proxy OIDC provider icons server-side (#1333) (#1342) vor 5 Monaten
test_oidc_icon_service.py 8a7598f6b5 feat(auth): proxy OIDC provider icons server-side (#1333) (#1342) vor 5 Monaten
test_oidc_icon_validation.py 8a7598f6b5 feat(auth): proxy OIDC provider icons server-side (#1333) (#1342) vor 5 Monaten
test_opentag3d.py b30a283184 Feature/spoolman inventory UI (#1241) vor 5 Monaten
test_orca_cloud_refresh.py f3b1c59169 fix(orca-cloud): close the HTTP client when an authenticated build fails vor 1 Monat
test_orca_profiles.py 330d77198a Fix AMS slot showing wrong material for "Support for" profiles vor 7 Monaten
test_orphan_auth_cleanup_migration.py 70857af393 feat(auth): SSO autologin + disable local username/password login (#1589) vor 3 Monaten
test_outbound_url_ssrf_guards.py 930a6661d7 Security hardening (maziggy/bambuddy-security #21) vor 1 Woche
test_override_color_match_equivalent_types.py a6a4b7648c fix(queue): an override counts an equivalent filament type in its colour; preheat and keep-warm heat the bed for the plate the job prints; queue colour names and the colour name saved with an override follow the filament's product line vor 3 Tagen
test_pdf_thumbnail.py 86bd9e1bd4 fix(file-manager): harden the merged previews - PDF.js legacy build, server PDF thumbnails, STEP progress (issue #2976) vor 3 Wochen
test_perceptual_color_distance.py e6842e1d3c Rank near-colour matches by how they look, and share one filament type table (#2804) vor 2 Monaten
test_permissions.py f66bd26f6e Add inventory:view_assignments permission so admins can grant users vor 7 Monaten
test_permissions_stats_filter.py ec0ae162e8 Add per-user statistics filtering (#730) vor 6 Monaten
test_pg_columns_set_from_model.py 4588e7632c fix(db): give older PostgreSQL databases a new install's defaults and NOT NULLs vor 1 Woche
test_pg_migration_quiet_log.py 824e6c6e3a Stop every start from logging ~320 errors on PostgreSQL vor 1 Woche
test_pg_test_schema_reset.py be7182ae9b test(postgres): build the test schema once per worker and empty it between tests vor 5 Tagen
test_phantom_print_hardening.py 44a5c7a7f5 test(queue,billing,vp): pin dispatch failures, creator scope and busy-printer holds, aborted-print usage fallbacks, end-to-end print completion and billing, VP MQTT pre-login and rate-limit guards; test schema loads every model vor 3 Tagen
test_pipeline_job_status_writers.py 176161f0d2 fix(pipelines): a pipeline run remembers how each copy ended vor 1 Woche
test_plate_check_chamber_light.py cf0ba31f19 fix(camera): the plate check holds the chamber light like other camera uses, so a live view opened meanwhile keeps it; captures use the live frame of a watched single-client external camera; a reconnecting X1C live view is not ended by the cleanup; camera test/diagnose/plate routes release their DB connection before capturing vor 2 Tagen
test_plate_clear_mqtt_notification.py 05d87a9740 Release the plate-clear gate on a powered-down printer (issue #2864) vor 2 Monaten
test_plate_detection_failure_reason.py ce9853c056 fix(printing): a plate check that could not run says so; the archive recovery download follows the file size; an unconfirmed upload is read back; broken MakerWorld downloads are refused; bulk-edit toast reflects the result; CallMeBot values are encoded vor 4 Tagen
test_plate_gcode_selection.py 89dde591f2 Resolve dispatch plate_id from the archive instead of assuming 1 (#2951) vor 3 Wochen
test_plate_object_extraction.py b99536cc33 Remove unused imports, variables, and fix minor CodeQL findings vor 8 Monaten
test_plug_datetimes_are_naive_utc.py b596b55456 Take the electricity price from Home Assistant and cost energy hour by hour (#1251) vor 2 Wochen
test_pool_fits_server.py 56e067753a fix(db): PostgreSQL pool default fits a stock server vor 2 Wochen
test_postgres_restore_drop_cascade.py b5cd369f51 chore: remove dead code and fail CI on unused frontend files vor 1 Woche
test_power_alerts.py 47795649ae fix(smart-plugs): power alerts are sent, checked in the background, once per crossing vor 1 Woche
test_previous_success_per_printer.py 3542005110 test: register sqlite_only and docker marks in pytest.ini, drop redundant asyncio marks vor 5 Tagen
test_print_control.py ab5ccc1082 fix(printers): a Stop on an idle printer no longer marks it as user-stopped, so a later failed print is not reported as cancelled; Configure Slot warns when a manual K value could not be sent; Skip Objects and the connection diagnostic release their DB connection before talking to the printer vor 2 Tagen
test_print_log.py 44c7e6fb39 Post-print outcome confirmation: good/reject verdicts, one-tap links, yield stats (#3047) vor 3 Wochen
test_print_log_backfill_migration.py 481d43638d fix(db): add the foreign keys older PostgreSQL databases are missing vor 1 Woche
test_print_speed.py 0e712c72a1 [Feature] Add quick print speed control to printer card (#256) vor 7 Monaten
test_print_start_assigns_printer_id_to_vp_archive.py bfd3fc755d Fix: capture timelapse baseline on expected-archive on_print_start branch (#1403 follow-up) vor 5 Monaten
test_print_start_expected_promotion.py 72044e3a53 fix(usage): scope 3MF filament tracking to dispatched plate (#1697) vor 4 Monaten
test_print_start_skips_unreachable_storage_2780.py a4cfbd4212 fix(archives): come back for a 3MF whose transfer ran out of time (issue #3063) vor 1 Monat
test_print_start_subtask_with_extension_3009.py 5b62df754a Find the file of a print started from the printer's screen on the first try (#3009) vor 2 Wochen
test_print_storage_2780.py 5dd7bd213f Read a print's destination from the report topic, not just the request one (issue #1820) vor 1 Monat
test_printable_objects_releases_db.py ab5ccc1082 fix(printers): a Stop on an idle printer no longer marks it as user-stopped, so a later failed print is not reported as cancelled; Configure Slot warns when a manual K value could not be sent; Skip Objects and the connection diagnostic release their DB connection before talking to the printer vor 2 Tagen
test_printer_camera_rtsp_redirects.py d3827e646a Security hardening (maziggy/bambuddy-security #23) vor 1 Woche
test_printer_camera_url_redaction.py 929e89d6ce Security hardening (maziggy/bambuddy-security #17) vor 1 Woche
test_printer_kill_switch.py cacaaf4dae fix(printers): live status carries nozzles, firmware, developer mode and the print's AMS mapping; run-out hint narrows by nozzle; AMS-HT is its unit id; rotate check sees loaded slots vor 4 Tagen
test_printer_maintenance_unique_migration.py 175758d25a fix(maintenance): a printer's time offline is not counted as print time; duplicate maintenance items are merged on upgrade and prevented by a unique index; the "performed" response honours the item's own interval type vor 2 Tagen
test_printer_manager_status_broadcast.py cacaaf4dae fix(printers): live status carries nozzles, firmware, developer mode and the print's AMS mapping; run-out hint narrows by nozzle; AMS-HT is its unit id; rotate check sees loaded slots vor 4 Tagen
test_printer_manager_tray_carryover_2876.py dd50c51c1b Stop waking printers that cannot print the queued job (issue #2876) vor 2 Monaten
test_printer_media.py 55cc64c87d Add printer video downloads and range selection (#2853) vor 2 Monaten
test_printer_model_codes.py ad3b5f1982 Map the P-series model codes to the right printers vor 3 Wochen
test_printer_models.py 18938a10ee fix(kprofiles): stop reporting rejected K-profile writes as saved vor 2 Monaten
test_printer_offline_notification.py cacaaf4dae fix(printers): live status carries nozzles, firmware, developer mode and the print's AMS mapping; run-out hint narrows by nozzle; AMS-HT is its unit id; rotate check sees loaded slots vor 4 Tagen
test_printer_schema.py 01787eb1e6 fix(printers): normalize serial numbers + diagnose connect-but-no-reports (#1465) vor 5 Monaten
test_printer_scope.py be915fa308 fix(auth): taking away live updates or camera access through a group ends them vor 1 Woche
test_printer_sensor_history.py dd6696470f Security hardening (maziggy/bambuddy-security #28) vor 1 Woche
test_printer_status_fields_g6.py cacaaf4dae fix(printers): live status carries nozzles, firmware, developer mode and the print's AMS mapping; run-out hint narrows by nozzle; AMS-HT is its unit id; rotate check sees loaded slots vor 4 Tagen
test_process_overrides.py f0500578bd Edit the full print-parameter set from the slice dialog vor 2 Monaten
test_progress_milestones_3211.py 995b4ada59 Count progress milestones from the first layer (#3211) vor 3 Wochen
test_project_settings_sentinel_sanitiser.py 9a837d19a1 fix(slicer): strip zero-valued filament-index sentinels, and sanitise the preview slice too (issue #3030) vor 1 Monat
test_pushover_priority.py 1555fad539 fix(notifications): send Pushover retry/expire for Emergency priority (#2586) vor 3 Monaten
test_query_token_redaction.py 929e89d6ce Security hardening (maziggy/bambuddy-security #17) vor 1 Woche
test_queued_plate_bed_temperature.py a6a4b7648c fix(queue): an override counts an equivalent filament type in its colour; preheat and keep-warm heat the bed for the plate the job prints; queue colour names and the colour name saved with an override follow the filament's product line vor 3 Tagen
test_reconcile_stale_active_prints.py d0d6a659e9 fix(reconcile): don't synthesize aborted PRINT COMPLETE on the bare-connect edge before push_status arrives (#1679) vor 4 Monaten
test_refused_header_redaction.py d3827e646a Security hardening (maziggy/bambuddy-security #23) vor 1 Woche
test_refused_header_response_mask.py d3827e646a Security hardening (maziggy/bambuddy-security #23) vor 1 Woche
test_refused_project_file_ack.py 2b5cd87c7f fix(queue): pipeline cancel stops the preheat and frees the budget; an offline stop frees the budget; the SD cleanup at a print's end is bounded to 45 s; a refused print start is logged and retried at once without a reconnect vor 3 Tagen
test_remain_delta_silence_1820.py 0623cc46df Repair no-3MF archives' photos and their silent filament writes (#1820) vor 2 Monaten
test_report_topic_project_file_1820.py cacaaf4dae fix(printers): live status carries nozzles, firmware, developer mode and the print's AMS mapping; run-out hint narrows by nozzle; AMS-HT is its unit id; rotate check sees loaded slots vor 4 Tagen
test_reprint_clears_stale_timelapse.py 219d8a4a8c Keep other plates' timelapses on a shared archive and keep a long print's plate until it completes (#3275) vor 1 Woche
test_reprint_unplated_timelapse.py 3c2ab99635 fix(archives): re-sliced archives read as not printed with a cost; restore checks its numbers; prints are bound under one set of names vor 4 Tagen
test_reprint_updates_subtask_id.py 5c673620f3 fix(notifications): false-positive Print Stopped on reprint after MQTT reconnect (#1807) vor 3 Monaten
test_request_topic_probe_2953.py 935d4b5bbf Charge the tray the printer said it used, not the first one loaded (issue #2953) vor 1 Monat
test_requirements_lock.py 56c131ef01 chore(deps): pin what ships in requirements.lock and install it everywhere vor 1 Woche
test_resolve_expected_tray_2587.py e77e10896f feat(ams): name the expected slot when a paused print hits an AMS runout (#2587) vor 3 Monaten
test_restore_project_values.py 369ce6e1b5 fix(settings): restoring an old SQLite backup onto PostgreSQL no longer fails on project values vor 1 Woche
test_restore_schema_compat.py a10d5430de fix(settings): remove the "Save thumbnails" and "Notification Language" controls, which nothing read (the API keeps both fields); a SQLite-to-PostgreSQL restore fills empty required timestamps in UTC instead of the host's local time vor 2 Tagen
test_restore_sqlite_wal_safety.py b5c7b1a8a8 fix(restore): replace shutil.copy2 with SQLite backup API to prevent WAL leftover (#1211, #668) vor 5 Monaten
test_rfid_assign_picks_the_right_hotend.py e5a18bf58b Key a K profile on its nozzle's flow type vor 1 Monat
test_rfid_core_weight_repair_2909.py b38022ec5c Draw a spool the way the AMS described it, and correct the tare it was added with vor 2 Monaten
test_rfid_refresh_ack_3206.py 1cc4bae5d2 Report a refused RFID refresh, and fall back to M620 R (#3206) vor 3 Wochen
test_route_auth_coverage.py 69c2ff1b44 test(auth): pin disabled keys, ended sessions on every gate, own-only key owners, long-lived token scope, model targets of limited keys; stricter route-auth backstop vor 3 Tagen
test_run_estimate_plate.py 12422a7c7e fix(archive): runs of another plate are logged and charged for that plate vor 6 Tagen
test_run_filament_helper.py 4436349a03 fix(stats): scope per-run filament to the printed plate, not the whole 3MF (#2614) vor 3 Monaten
test_run_filament_plate_scope_2614.py 4436349a03 fix(stats): scope per-run filament to the printed plate, not the whole 3MF (#2614) vor 3 Monaten
test_run_with_retry.py 2d9a56b3d0 Fix ghost jobs from SQLite lock on print completion (#897) vor 6 Monaten
test_runtime_tracking_pause.py 554a73070f fix(maintenance): paused prints no longer accumulate runtime hours (#1521) vor 5 Monaten
test_safe_path.py 396e9aa09e security: harden path-traversal class across routes + services; fifth CI backstop vor 4 Monaten
test_scheduled_drying_model.py d37ce94f81 Feature: Scheduled drying (#2703) vor 2 Monaten
test_scheduled_drying_routes.py b04d753186 (Post work): parked AMS drying timers and translated drying failures (issue #2896) vor 3 Wochen
test_scheduled_drying_schema.py d37ce94f81 Feature: Scheduled drying (#2703) vor 2 Monaten
test_scheduler_ams_mapping.py 70312b0a11 fix(scheduler): skip per-nozzle filter under FTS so dispatch feeds the right spool (#2186) vor 3 Monaten
test_scheduler_auto_drying.py e05a917445 fix(notifications,drying): printer-limited channels get only their printer's events; blocking mode pre-dries for scheduled jobs; model jobs say "(drying)"; remove dead load-tray state vor 4 Tagen
test_scheduler_backup_gate.py 70312b0a11 fix(scheduler): skip per-nozzle filter under FTS so dispatch feeds the right spool (#2186) vor 3 Monaten
test_scheduler_block_mode_predry.py e05a917445 fix(notifications,drying): printer-limited channels get only their printer's events; blocking mode pre-dries for scheduled jobs; model jobs say "(drying)"; remove dead load-tray state vor 4 Tagen
test_scheduler_busy_defer_2598.py a4795c5ca3 Let API keys read and run slicer pipelines (#1425 follow-up) vor 2 Monaten
test_scheduler_busy_only.py 35ce075486 [Fix] Suppress spurious "waiting for filament" notification when printers are busy (#753) vor 7 Monaten
test_scheduler_busy_reasons_3018.py 0a3e341584 Map each printer against its own AMS, and stop dispatching a job whose filament is not loaded (#2799) (#2803) vor 2 Wochen
test_scheduler_cancel_race.py a4795c5ca3 Let API keys read and run slicer pipelines (#1425 follow-up) vor 2 Monaten
test_scheduler_chamber_soak.py f86f5a7c34 feat(queue): keep the chamber warm between prints and skip redundant soak vor 2 Monaten
test_scheduler_check_queue_holds.py 44a5c7a7f5 test(queue,billing,vp): pin dispatch failures, creator scope and busy-printer holds, aborted-print usage fallbacks, end-to-end print completion and billing, VP MQTT pre-login and rate-limit guards; test schema loads every model vor 3 Tagen
test_scheduler_class_target_smart_plug_2786.py dd50c51c1b Stop waking printers that cannot print the queued job (issue #2876) vor 2 Monaten
test_scheduler_cleanup_library.py bff7f68106 Put back a slot's K-profile when the printer loses it (#3219) vor 2 Wochen
test_scheduler_clear_plate.py d37ce94f81 Feature: Scheduled drying (#2703) vor 2 Monaten
test_scheduler_concurrent_dispatch.py 222f28c7f8 fix(tests): assemble the upload batch instead of racing a sleep vor 3 Wochen
test_scheduler_cross_model_variants.py 57dd8651d8 Match a location job's trays on the printer it gets (#3239) vor 2 Wochen
test_scheduler_dispatch_failures.py 44a5c7a7f5 test(queue,billing,vp): pin dispatch failures, creator scope and busy-printer holds, aborted-print usage fallbacks, end-to-end print completion and billing, VP MQTT pre-login and rate-limit guards; test schema loads every model vor 3 Tagen
test_scheduler_dispatch_hold.py 724bc92c22 fix(scheduler): post-dispatch hold prevents H2D Pro double-fire (#1157) vor 5 Monaten
test_scheduler_drying_plate_hold_2801.py 71709c16aa Stop tearing down AMS drying for a print that cannot start (#2801) vor 2 Monaten
test_scheduler_effective_plate_id.py 89dde591f2 Resolve dispatch plate_id from the archive instead of assuming 1 (#2951) vor 3 Wochen
test_scheduler_external_spool_nozzle_2771.py 945d4ca6eb Route external spools to a nozzle when the printer has no AMS (#2771) vor 2 Monaten
test_scheduler_filament_deficit.py e05a917445 fix(notifications,drying): printer-limited channels get only their printer's events; blocking mode pre-dries for scheduled jobs; model jobs say "(drying)"; remove dead load-tray state vor 4 Tagen
test_scheduler_filament_override.py 38af5df050 Add filament override for model-based queue assignment (#486) vor 8 Monaten
test_scheduler_force_color_ams_fallback.py 800c45536e fix(scheduler): pin the force-color variant when selecting the AMS slot (#2650) vor 3 Monaten
test_scheduler_global_queue_order_3200.py e9627e44a2 Start queued jobs in list order, whether pinned or "Any <model>" (#3200) vor 3 Wochen
test_scheduler_ha_interlock_1148.py 48244bcfcf fix(queue): tell a pinned queue item why it is waiting (issue #3074) vor 1 Monat
test_scheduler_inventory_remain.py 03896d1af0 fix(scheduler): use inventory weight for "Prefer Lowest Filament" sort (#1508) vor 5 Monaten
test_scheduler_keep_warm.py a6a4b7648c fix(queue): an override counts an equivalent filament type in its colour; preheat and keep-warm heat the bed for the plate the job prints; queue colour names and the colour name saved with an override follow the filament's product line vor 3 Tagen
test_scheduler_model_filament_short_3137.py dc72a0daea fix(virtual-printer): queued prints keep the slicer's options, not another printer's nozzles vor 5 Tagen
test_scheduler_model_job_drying_c5.py e05a917445 fix(notifications,drying): printer-limited channels get only their printer's events; blocking mode pre-dries for scheduled jobs; model jobs say "(drying)"; remove dead load-tray state vor 4 Tagen
test_scheduler_model_mismatch.py ad3b5f1982 Map the P-series model codes to the right printers vor 3 Wochen
test_scheduler_nozzle_mismatch.py 4961990a7a Let a print start on a nozzle the printer can fetch (issue #2885) vor 2 Monaten
test_scheduler_pinned_waiting_reason_3074.py e05a917445 fix(notifications,drying): printer-limited channels get only their printer's events; blocking mode pre-dries for scheduled jobs; model jobs say "(drying)"; remove dead load-tray state vor 4 Tagen
test_scheduler_power_plug_pick_2629.py 56accd24de fix(smart-plugs): don't blank printer state when an accessory plug switches off (#2629) vor 3 Monaten
test_scheduler_preheat.py a6a4b7648c fix(queue): an override counts an equivalent filament type in its colour; preheat and keep-warm heat the bed for the plate the job prints; queue colour names and the colour name saved with an override follow the filament's product line vor 3 Tagen
test_scheduler_preheat_ams_mapping_2886.py a6a4b7648c fix(queue): an override counts an equivalent filament type in its colour; preheat and keep-warm heat the bed for the plate the job prints; queue colour names and the colour name saved with an override follow the filament's product line vor 3 Tagen
test_scheduler_preheat_fast_path.py a6a4b7648c fix(queue): an override counts an equivalent filament type in its colour; preheat and keep-warm heat the bed for the plate the job prints; queue colour names and the colour name saved with an override follow the filament's product line vor 3 Tagen
test_scheduler_reassign_race_2615.py 64f9d04c80 fix(queue): claim a queue item before dispatch so it can't be reassigned mid-upload (#2615) vor 3 Monaten
test_scheduler_release_conn_before_ftp_2572.py a6a4b7648c fix(queue): an override counts an equivalent filament type in its colour; preheat and keep-warm heat the bed for the plate the job prints; queue colour names and the colour name saved with an override follow the filament's product line vor 3 Tagen
test_scheduler_scheduled_drying.py b04d753186 (Post work): parked AMS drying timers and translated drying failures (issue #2896) vor 3 Wochen
test_scheduler_scheduled_drying_check_queue.py d37ce94f81 Feature: Scheduled drying (#2703) vor 2 Monaten
test_scheduler_snapshot_races.py abc971a718 fix(queue): a job edited during a scheduler round waits for the next one instead of being dispatched or mapped from the stale copy; the claim requires the selected printer; bulk edit rechecks the claim; no transaction held through a power-on wait vor 3 Tagen
test_scheduler_upload_requeue_3210.py d4f66d99a4 Keep queued jobs when a printer refuses the upload (#3210) vor 3 Wochen
test_scheduler_watchdog.py 2b5cd87c7f fix(queue): pipeline cancel stops the preheat and frees the budget; an offline stop frees the budget; the SD cleanup at a print's end is bounded to 45 s; a refused print start is logged and retried at once without a reconnect vor 3 Tagen
test_sd_cleanup_file_in_use_3009.py cdb78f1321 Never delete the SD-card file the printer is printing (#3009) vor 2 Wochen
test_send_all_timelapse_per_plate_3275.py 219d8a4a8c Keep other plates' timelapses on a shared archive and keep a long print's plate until it completes (#3275) vor 1 Woche
test_settings_dedupe_migration.py 9c5c2a765f Post work PR #1070 vor 6 Monaten
test_shared_tray_usage_3230.py 5b34997dfa fix(inventory): hand assign, unassign and add-from-slot wait for the printer's slot lock; the AMS remain sync and a print's usage no longer overwrite a weight set by hand or weighed meanwhile; a spool deleted while a print is charged is skipped vor 3 Tagen
test_shutdown_cancel_log_filter.py df52e8873e fix(logging): a stream closed at shutdown is one INFO line, not an ERROR traceback vor 5 Tagen
test_sidebar_settings.py 48d3f68ae6 feat: Centralise sidebar ordering and add page visibility options (#1673) vor 4 Monaten
test_skip_objects_confirmation_g7.py f45cc599f3 fix(kprofiles): an AMS change leaves the K-profile to the lost-selection check; command answers no longer change the nozzle; unconfirmed writes say so and edits read back; skip refusals are logged; stop-drying toast says sent vor 4 Tagen
test_skip_objects_survive_restart.py cfecfa360e Restore the skip-objects list after a restart mid-print vor 2 Monaten
test_slice_backstop_wiring_2838.py f3b6a503bd fix(profiles): read the companion files that hold a preset's real gcode vor 2 Monaten
test_slice_external_folder_output.py 3dc681d9f1 fix(slicer): write slice output to the source's external folder (#2810) vor 2 Monaten
test_slice_output_check_2838.py f3b6a503bd fix(profiles): read the companion files that hold a preset's real gcode vor 2 Monaten
test_slice_output_name_2832.py aff737999f Build the slice output's path from a name a folder can have (#2832) vor 2 Monaten
test_slice_process_support_patch.py b1f5ec9642 Let one checkbox say where a slice's settings come from (issue #2942) vor 1 Monat
test_slice_request_bed_type.py ccf985abfc feat(slicing): build-plate override in the SliceModal (#1337) vor 5 Monaten
test_slice_request_schema.py e95c42c021 Add auto-orient and auto-arrange to server-side slicing (#2548) vor 2 Monaten
test_slice_unresolved_filament_2977.py 4f10d15584 Record the colour a slice is actually printed in (issue #2977) vor 1 Monat
test_sliced_3mf_named_as_source_2993.py 2e405afcd1 Decide whether a 3MF is sliced by looking inside it (issue #2993) vor 1 Monat
test_sliced_3mf_reclassify_migration_2993.py 2e405afcd1 Decide whether a 3MF is sliced by looking inside it (issue #2993) vor 1 Monat
test_slicer_preset_values.py b6027b7138 Say why a preset's values are unavailable, not just that they are vor 2 Monaten
test_slicer_presets.py 3acc52d938 Slice with a printer preset saved under a name of its own (#3250) vor 2 Wochen
test_slicer_settings.py 8d42b05f62 Add configurable slicer preference — Bambu Studio or OrcaSlicer (#313) vor 8 Monaten
test_slicer_stall_timeout.py ce3e59884a fix(slicer): bound slices by silence, not by total slicing time (#2730) vor 2 Monaten
test_slicer_upload_size_rejection.py d120a804ff fix(slicer): name the sidecar service in the update command (#2802) vor 2 Monaten
test_slot_nozzle_resolution.py e5a18bf58b Key a K profile on its nozzle's flow type vor 1 Monat
test_slot_preset_key.py 87a5aa36e9 fix(ams): HT slot shows "Generic" after configuring custom preset (#1053) vor 6 Monaten
test_smart_plug_power_flag_migration_2629.py 4588e7632c fix(db): give older PostgreSQL databases a new install's defaults and NOT NULLs vor 1 Woche
test_spawn_patch_does_not_leak_coroutines.py a4795c5ca3 Let API keys read and run slicer pipelines (#1425 follow-up) vor 2 Monaten
test_sponsor_prompt_service.py 8f4c8375cb test: silence Bandit B108 on hardcoded /tmp test-fixture paths vor 3 Monaten
test_spool_drying_record_2863.py 84f320b859 Remember when each spool was last dried (#2863) vor 2 Wochen
test_spool_filament_preset_cascade.py a7b563334e Configure a spool's filament preset and K profile per nozzle vor 1 Monat
test_spool_schemas_colors.py a34beaa599 feat(inventory): multi-colour gradients, transparency, visual effects (#1154) vor 5 Monaten
test_spool_schemas_rgba.py 4304a42542 feat(#729): per-spool category + low-stock threshold override vor 6 Monaten
test_spool_schemas_storage_location.py 1d6e1b9e88 fix(inventory): persist storage_location for internal spools (#1291) vor 5 Monaten
test_spool_usage_spool_migration.py e1714b5115 fix(inventory): deleting a spool keeps its usage history; spool ids are never reused vor 1 Woche
test_spoolbuddy_schema_validation.py b30a283184 Feature/spoolman inventory UI (#1241) vor 5 Monaten
test_spoolbuddy_ssh.py ba93abdb9d fix(spoolbuddy): writing a sticker no longer replaces a Bambu spool's AMS link in Spoolman (refused with the reason on Spoolman before 0.27, and such spools are not listed as untagged); the colour-name warning only appears when the name is really missing; an update stops when installing dependencies times out instead of restarting the daemon and reporting success vor 2 Tagen
test_spoolbuddy_system_stats.py 67f91d94de v0.2.2.2 (#830) vor 6 Monaten
test_spoolman_clear_location.py 813d9dde38 Fix Spoolman location not cleared on auto-sync when spool removed from AMS (#921) vor 6 Monaten
test_spoolman_extra_lock.py b30a283184 Feature/spoolman inventory UI (#1241) vor 5 Monaten
test_spoolman_failed_run_cost.py 141ec5dbb3 fix(spoolman): failed prints are logged with their spool cost, queue estimates use Spoolman prices vor 6 Tagen
test_spoolman_inventory_helpers.py 2e30470dfb fix(spoolman): Cost/kg in the inventory and on the SpoolBuddy spool card shows the rate prints are charged, falling back to the filament price when the spool has none (or 0) vor 2 Tagen
test_spoolman_inventory_methods.py b6521e93f8 Let a spool keep its own empty weight (issue #2908) (#3011) vor 3 Wochen
test_spoolman_multi_colors_2967.py 699fc419fe Paint an AMS slot card with the spool's colours, not the tray's (issue #2967) vor 1 Monat
test_spoolman_no3mf_remain_fallback.py 1a2560270f fix(spoolman): a failed print that switched to the backup spool charges each spool its share vor 6 Tagen
test_spoolman_partial_usage_layer_reset.py 44a5c7a7f5 test(queue,billing,vp): pin dispatch failures, creator scope and busy-printer holds, aborted-print usage fallbacks, end-to-end print completion and billing, VP MQTT pre-login and rate-limit guards; test schema loads every model vor 3 Tagen
test_spoolman_recovered_3mf_tracking.py 005b34af6d deleted. Nothing would have been charged twice, but that printer would have looked mid-print to later spool archiving. It's closed using the "completion in progress" vor 2 Tagen
test_spoolman_settings_value_coercion.py 88dc56d6e1 Security hardening (maziggy/bambuddy-security #7) vor 2 Monaten
test_spoolman_slot_ddl.py af52c4f2ff fix(spoolman): allow AMS-HT ams_id range in slot-assignment table (#1274) vor 5 Monaten
test_spoolman_stale_tag_cleanup.py 12b0c138f7 fix(spoolman): clear stale fallback-tag links on assign + link, prefer slot-assignment over tag-link in UI (#1457) vor 5 Monaten
test_spoolman_tracking.py fb69a665d8 fix(spoolman): concurrent copies of an archive are charged, unfed slots charge nothing vor 6 Tagen
test_spoolman_tray_now_migration_1820.py 0623cc46df Repair no-3MF archives' photos and their silent filament writes (#1820) vor 2 Monaten
test_sqlite_autoincrement.py fe2bc43720 test: run the backend suite on PostgreSQL too; fix the project import priority vor 1 Woche
test_sqlite_fk.py fe2bc43720 test: run the backend suite on PostgreSQL too; fix the project import priority vor 1 Woche
test_sqlite_import_sequences.py 6b017efe1c fix(db): SQLite no longer reuses the ids of users, API keys, printers, archives and camera tokens vor 1 Woche
test_sqlite_orphan_cleanup.py 0033001945 fix(db): SQLite applies the ON DELETE rules of archives, library files, queue jobs, batches and projects vor 1 Woche
test_ssrf_guard.py b30a283184 Feature/spoolman inventory UI (#1241) vor 5 Monaten
test_state_writers.py 5b34997dfa fix(inventory): hand assign, unassign and add-from-slot wait for the printer's slot lock; the AMS remain sync and a print's usage no longer overwrite a weight set by hand or weighed meanwhile; a spool deleted while a print is charged is skipped vor 3 Tagen
test_static_assets.py 89a9a81195 Compress and cache the web interface's asset files (#3175) vor 2 Wochen
test_status_broadcast_ams_slot_config.py cacaaf4dae fix(printers): live status carries nozzles, firmware, developer mode and the print's AMS mapping; run-out hint narrows by nozzle; AMS-HT is its unit id; rotate check sees loaded slots vor 4 Tagen
test_stock_alert_template_migration_2955.py 318430f0f4 Give the two stock alerts something that fires them (issue #2955) (#3196) vor 3 Wochen
test_subtask_archive_resume.py 29774ff975 fix(archive): a print of a file whose last print was never closed gets its own archive vor 6 Tagen
test_supplier_tables_migration.py 053cfa73ad Suppliers as a managed list with per-spool assignments (#2996) vor 3 Wochen
test_support_bundle_rotated_logs.py ce807fb1cc fix(queue): upload to printers in parallel, cap wedge retries, make debug logs survive a farm vor 3 Monaten
test_support_helpers.py 3480d39434 Browse a Manyfold library and import its files (issue #1471) vor 2 Wochen
test_sync_ams_weights.py be569f7577 fix: prevent spool weight corruption, add AMS weight sync, fix extruder_id vor 8 Monaten
test_systemd_backup_paths.py e70fbfb961 fix(spoolbuddy): unregistered devices register again, refused requests stop blocking the buffer vor 6 Tagen
test_tag_normalization_tray_uuid.py 12e543b1b4 Fix SpoolBuddy reading the filament type as the Bambu spool ID (#984) vor 2 Wochen
test_telegram_forum_topic.py 6cda236dce feat(notifications): optional Telegram forum topic via message_thread_id (#1518) vor 2 Monaten
test_telegram_outcome_buttons_1898.py 44c7e6fb39 Post-print outcome confirmation: good/reject verdicts, one-tap links, yield stats (#3047) vor 3 Wochen
test_temperature_fan_presets.py b04664c64a Raise the chamber-temperature ceiling from 60 to 65 C vor 2 Monaten
test_threemf_tools.py 454457a0af Attribute filament correctly when AMS backup swaps spools mid-print vor 2 Monaten
test_timelapse_baseline_restart_recovery.py 9a397f46e9 implemented pr feedback #2 vor 2 Monaten
test_timelapse_match.py 4ee4bdb0d3 fix(archives): scan_timelapse picked stale video at false offset (#1278) vor 5 Monaten
test_timelapse_scan_2704.py b342124f0e fix(timelapse): a video goes to the run it belongs to (scan stops on a newer run, claimed videos left out of matching, camera video replaces the printer's without orphaning it); every timelapse change refreshes open Archives pages vor 3 Tagen
test_timelapse_scan_newer_run.py b342124f0e fix(timelapse): a video goes to the run it belongs to (scan stops on a newer run, claimed videos left out of matching, camera video replaces the printer's without orphaning it); every timelapse change refreshes open Archives pages vor 3 Tagen
test_tls_proxy_teardown_2968.py a735f8c43a chore: Python 3.11 is the minimum, and the installer finds or installs it vor 1 Woche
test_trace.py 88b5f56eb2 fix: cancel = layer shift, stuck "1 problem", and dropped child-logger logs vor 5 Monaten
test_unnamed_print_stage_logging.py d1c65a6659 Report a print stage we cannot name at the default log level vor 2 Monaten
test_updater_step_timeouts.py b10fd5ed1a fix(updates,timelapse): a hung update step or slow timelapse stitch no longer gets stuck or loses its work vor 5 Tagen
test_upload_progress_bridge.py 9033b0f81e feat(toast): restore upload-progress toast for scheduler dispatches (#1625 follow-up) vor 3 Monaten
test_url_safety.py 930a6661d7 Security hardening (maziggy/bambuddy-security #21) vor 1 Woche
test_usage_tracker.py 12422a7c7e fix(archive): runs of another plate are logged and charged for that plate vor 6 Tagen
test_usage_tracker_charge_race.py 5b34997dfa fix(inventory): hand assign, unassign and add-from-slot wait for the printer's slot lock; the AMS remain sync and a print's usage no longer overwrite a weight set by hand or weighed meanwhile; a spool deleted while a print is charged is skipped vor 3 Tagen
test_usage_tracker_restart_recovery.py 12422a7c7e fix(archive): runs of another plate are logged and charged for that plate vor 6 Tagen
test_use_ams_reconcile_2595.py 26e9a05707 fix(queue): a plate printed from the external spool keeps the AMS off on multi-plate files; slot reuse respects the finish; any-model VPs keep the AMS on; cloud filament id read from the preset too vor 4 Tagen
test_user_notifications.py a6d307d739 Post work PR #693 vor 7 Monaten
test_user_print_template_rename_migration.py 7e6b390d74 feat(notifications): template-driven finish-photo email embed + user_print_* rename (#1792) vor 4 Monaten
test_variant_group_backfill_migration.py da07c5884b Add variant-group data model for cross-model queue alternatives (#671) vor 2 Monaten
test_vp_access_code_sync_migration.py 19073f5c84 fix(vp): auto-derive access code from target printer in non-proxy modes vor 4 Monaten
test_vp_certificate_rotation.py 597762685c fix(virtual-printer): #1558 Send pre-flight + slicer-surface audit bundle vor 4 Monaten
test_vp_delete_cleanup.py 8a6faab0d2 Security hardening (maziggy/bambuddy-security #34) vor 6 Tagen
test_vp_ftp_port.py fc746ae218 [Fix] Virtual Printer FTP routed to wrong VP with different access codes (#735) vor 7 Monaten
test_vp_ftp_stor.py 7d4dfd5a7d fix(vp): stop uvloop from silently truncating VP FTP uploads (#1896) vor 3 Monaten
test_vp_mode_rename_migration.py 5d6d928b3f fix(virtual-printer): #1429 net.info[*].ip cache leak + mode wire-value rename vor 4 Monaten
test_vp_mqtt_bridge.py 9d35a4e8c6 Mark four test-side bandit false positives vor 1 Monat
test_vp_mqtt_server.py 44a5c7a7f5 test(queue,billing,vp): pin dispatch failures, creator scope and busy-printer holds, aborted-print usage fallbacks, end-to-end print completion and billing, VP MQTT pre-login and rate-limit guards; test schema loads every model vor 3 Tagen
test_vp_tls_ciphers.py 9cc4b6aa60 fix(virtual-printer): #1610 add Bambu cipher pin to every slicer-facing TLS context vor 4 Monaten
test_vp_wire_dump.py 19eed8eba0 debug(vp): env-flagged command-flow trace for slicer↔printer #1622 round-2 triage vor 4 Monaten
test_wallet_currency_drop_migration.py 4a85e033c0 fix(finance): show the currency the install is configured for (issue #3123) vor 1 Monat
test_wallet_transactions_user_migration.py c39e678204 Security hardening (maziggy/bambuddy-security #12) vor 1 Woche
test_webhook_endpoint_list.py 132dcbde06 fix(settings): the webhook endpoint list shows the endpoints that exist vor 1 Woche
test_ws_broadcast_to_user.py 45921b7a56 Limit groups to selected printers (issue #1727) vor 3 Wochen