maziggy 6cdf4eb2d0 Tests: 21 in the new test_api_key_own_rows.py. Before the change, 8 of them failed; the rest pass either way because they check refusals and unchanged behaviour. All 7 mutations were killed. In the #3256 tests (test_api_key_queue_acts_as_owner.py), I tightened the bulk assertion and fixed the outdated docstring. The wiki's API keys page had documented the old refusal; that block is rewritten. hai 2 días
..
git_providers 306b9ba7fd Accept Forgejo tokens scoped to a single repository (#2775) hai 2 meses
model_providers 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 hai 4 días
virtual_printer 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 hai 2 días
__init__.py 09677861ba Added screenshots hai 10 meses
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 hai 3 días
ams_slot_presence.py 905bda4f3f fix(ams): read the firmware presence bit, not the tray state (issue #3084) hai 1 mes
announcements.py 3fae2b402b Announcements: history, collapsed list, instant refresh, footer icon hai 3 semanas
archive.py bd692ac3c7 fix(stats): date filters use calendar days in the browser's time zone instead of UTC days; the Statistics page sends its zone, and the date-filtered archive, statistics and inventory-statistics endpoints take an optional tz (Bambuddy's own TZ when omitted) hai 2 días
archive_comparison.py f43be8098e Security hardening (maziggy/bambuddy-security #29) hai 1 semana
archive_cost_estimate.py ac4806f029 fix: a failed first run no longer leaves the archive at its partial cost (built-in inventory); completion stops the start cost estimate before writing the real cost; 2FA/SSO logins report LDAP/OIDC users' auth source; a fault in both print_error and HMS is listed once; a refused H2D load's tray target expires; refused K-profile re-applies are logged; the cloud filament-name map is fetched once per account without holding a DB connection; the library edit route refuses folder changes across the external boundary; a slow slice-progress answer is not reported as an unreachable sidecar hai 2 días
archive_purge.py 0033001945 fix(db): SQLite applies the ON DELETE rules of archives, library files, queue jobs, batches and projects hai 1 semana
backup_path.py 5bbfeefa65 fix(backup): diagnose an unwritable backup path instead of quoting errno 30 (#2544) hai 3 meses
bambu_cloud.py bdd3111547 fix(cloud): report an unreachable Bambu Cloud as 502, not as a server error or wrong credentials hai 1 semana
bambu_cloud_credentials.py 036f0a688f Merge pull request #2845 from pascalheidmann/refactor/modular-import hai 1 mes
bambu_ftp.py 27003de368 fix(ftp): a slow folder listing is reported as slow instead of "printer unavailable", and a refresh joins the listing still running instead of starting another; printer file times without a year are dated against UTC, so evening files on hosts behind UTC are not dated a year back hai 2 días
bambu_mqtt.py ac4806f029 fix: a failed first run no longer leaves the archive at its partial cost (built-in inventory); completion stops the start cost estimate before writing the real cost; 2FA/SSO logins report LDAP/OIDC users' auth source; a fault in both print_error and HMS is listed once; a refused H2D load's tray target expires; refused K-profile re-applies are logged; the cloud filament-name map is fetched once per account without holding a DB connection; the library edit route refuses folder changes across the external boundary; a slow slice-progress answer is not reported as an unreachable sidecar hai 2 días
bug_report.py 346b58ed8f fix(settings): printer temperature history retention gets a setting; no retention can wipe history; bug reports keep no email hai 4 días
camera.py d3827e646a Security hardening (maziggy/bambuddy-security #23) hai 1 semana
camera_diagnose.py a735f8c43a chore: Python 3.11 is the minimum, and the installer finds or installs it hai 1 semana
camera_fanout.py 31888777ae fix(camera): external cameras share one stream per printer hai 5 días
camera_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 hai 2 días
camera_profiles.py 2315b8fb5d Count camera reconnects in a row, not for the life of the stream hai 3 semanas
color_catalog_lookup.py cb924e5c4a Match a Bambu roll to its own product line, not just its colour (issue #2907) (#2944) hai 3 semanas
design_settings.py 7e77bf5833 Take the layer height from the plate that actually printed hai 2 meses
diagnostic_snapshot.py a735f8c43a chore: Python 3.11 is the minimum, and the installer finds or installs it hai 1 semana
discovery.py 3a5f802cdc fix(diagnostics): read the subnet the host is actually on (issue #3092) hai 1 mes
drying_preflight.py b04d753186 (Post work): parked AMS drying timers and translated drying failures (issue #2896) hai 3 semanas
email_service.py afdd950b63 Security hardening (maziggy/bambuddy-security #15) hai 1 semana
energy_plug.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 hai 4 días
energy_price.py b596b55456 Take the electricity price from Home Assistant and cost energy hour by hour (#1251) hai 2 semanas
export.py 6c8a821bca Add a wear cost per printing hour to printers (#694) hai 2 semanas
external_camera.py 4a1f602bf2 fix(camera): a frozen external RTSP camera is reconnected hai 5 días
failure_analysis.py bd692ac3c7 fix(stats): date filters use calendar days in the browser's time zone instead of UTC days; the Statistics page sends its zone, and the date-filtered archive, statistics and inventory-statistics endpoints take an optional tz (Bambuddy's own TZ when omitted) hai 2 días
filament_deficit.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 hai 2 días
filament_requirements.py 3954d3a7e6 Choose which rack nozzle each filament prints from on an H2C (#1784) hai 2 meses
finance_balance.py c39e678204 Security hardening (maziggy/bambuddy-security #12) hai 1 semana
finance_billing.py b2ed37b6c3 fix(finance): a print whose user was deleted while it ran is billed to its cost centre hai 1 semana
finance_budget.py f761a3ae97 fix(queue): every way of adding a job announces it, applies the default print options and keeps its cost centre hai 5 días
finance_defaults.py 4a85e033c0 fix(finance): show the currency the install is configured for (issue #3123) hai 1 mes
firmware_check.py ae3c27f3df fix(firmware): log an unreachable Bambu Lab site once, not on every firmware check hai 1 semana
firmware_update.py 741539a740 chore(api): remove dead firmware WS progress, the delete-all plate calibration route and unused client wrappers hai 4 días
ftp_profiles.py cc39acfc74 Ask a printer that refuses FTPS what it actually said (issue #2780) hai 2 meses
github_backup.py 5cda4c6913 fix(backup): a Git restore brings back a print that was running at backup time as cancelled ("No status update received") instead of a print that failed on the next reconnect, and an archive this instance still has keeps its own status on overwrite; each spool's last-used time is backed up and restored hai 2 días
github_restore.py 5cda4c6913 fix(backup): a Git restore brings back a print that was running at backup time as cancelled ("No status update received") instead of a print that failed on the next reconnect, and an archive this instance still has keeps its own status on overwrite; each spool's last-used time is backed up and restored hai 2 días
ha_sensor_manager.py 54af3146a3 [Feature]: Bind Home Assistant sensors to storage locations (dryboxes/bins) (#2827) hai 1 mes
hms_actions.py 3ddf8d847e [Feature]: HMS Actions (#1743) hai 3 meses
hms_errors.py 033eff1254 Show Bambu's own HMS descriptions and the real alert level (issue #2728) hai 3 semanas
homeassistant.py d3827e646a Security hardening (maziggy/bambuddy-security #23) hai 1 semana
inventory_mode.py 08a58b1ef4 Keep both modes' slot assignments across an inventory mode switch (issue #2812) hai 1 mes
kprofile_drift.py 578add28d8 fix(printers): a printer added after a delete starts clean hai 1 semana
label_renderer.py b5cd369f51 chore: remove dead code and fail CI on unused frontend files hai 1 semana
layer_timelapse.py b10fd5ed1a fix(updates,timelapse): a hung update step or slow timelapse stitch no longer gets stuck or loses its work hai 5 días
ldap_service.py 29e6d28205 Resolve LDAP groups on lldap and OpenLDAP (#3197) hai 3 semanas
library_folder_access.py 6cdf4eb2d0 Tests: 21 in the new test_api_key_own_rows.py. Before the change, 8 of them failed; the rest pass either way because they check refusals and unchanged behaviour. All 7 mutations were killed. In the #3256 tests (test_api_key_queue_acts_as_owner.py), I tightened the bulk assertion and fixed the outdated docstring. The wiki's API keys page had documented the old refusal; that block is rewritten. hai 2 días
library_trash.py a3ba9994fe fix(queue): orders and groupings show as finished however their last job ended hai 6 días
local_backup.py 5bbfeefa65 fix(backup): diagnose an unwritable backup path instead of quoting errno 30 (#2544) hai 3 meses
location_ha_sensor_manager.py 54af3146a3 [Feature]: Bind Home Assistant sensors to storage locations (dryboxes/bins) (#2827) hai 1 mes
location_service.py b5cd369f51 chore: remove dead code and fail CI on unused frontend files hai 1 semana
log_health.py 604fa44593 Explain Bambu Cloud's CAPTCHA challenge instead of repeating it (#2790) hai 2 meses
log_reader.py a51283ad76 Security hardening (maziggy/bambuddy-security #19) hai 1 semana
long_lived_tokens.py 258db95483 fix(overlay): authenticate the OBS overlay with a token when login is enabled (#2613) hai 3 meses
loop_watchdog.py 774eba73c8 feat(diagnostics): event-loop stall watchdog to catch silent backend freezes hai 5 meses
material_number.py 71d4b2f70d Material number as a first-class spool field (#2994) hai 3 semanas
mesh_combine.py b67c9b572c Add "Combine to 3MF" for slicing several STLs on one plate (#3162) hai 3 semanas
mqtt_relay.py dbb560dfb6 fix(mqtt-relay): publish the documented events, from every place they happen hai 1 semana
mqtt_smart_plug.py 47795649ae fix(smart-plugs): power alerts are sent, checked in the background, once per crossing hai 1 semana
network_utils.py b5cd369f51 chore: remove dead code and fail CI on unused frontend files hai 1 semana
notification_service.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 hai 2 días
notify_client.py b42d39ffcc Add native Notify! alerts, Live Activities and Lock Screen widgets (#3265) hai 1 semana
notify_live_activities.py 578add28d8 fix(printers): a printer added after a delete starts clean hai 1 semana
notify_widgets.py b42d39ffcc Add native Notify! alerts, Live Activities and Lock Screen widgets (#3265) hai 1 semana
notify_worker.py b42d39ffcc Add native Notify! alerts, Live Activities and Lock Screen widgets (#3265) hai 1 semana
obico_actions.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 hai 4 días
obico_detection.py 578add28d8 fix(printers): a printer added after a delete starts clean hai 1 semana
obico_smoothing.py eec7793955 feat(obico): AI print-failure detection via self-hosted Obico ML API (#172) hai 6 meses
oidc_group_sync.py 45921b7a56 Limit groups to selected printers (issue #1727) hai 3 semanas
oidc_icon.py 8a7598f6b5 feat(auth): proxy OIDC provider icons server-side (#1333) (#1342) hai 5 meses
opentag3d.py b30a283184 Feature/spoolman inventory UI (#1241) hai 5 meses
orca_cloud.py 00251fe808 feat(orca-cloud): pair via RFC 8628 device flow, replacing the paste-based sign-in hai 3 meses
orca_profiles.py 330d77198a Fix AMS slot showing wrong material for "Support for" profiles hai 7 meses
pdf_thumbnail.py 86bd9e1bd4 fix(file-manager): harden the merged previews - PDF.js legacy build, server PDF thumbnails, STEP progress (issue #2976) hai 3 semanas
pipeline_eligibility.py 918aa26ffa fix(queue): models matched without regard to case when adding jobs and in pipelines, stored in the printers' spelling; webhook reprints reuse the slicer's AMS slots; a multi-plate file queued without a plate stores the plate that prints hai 3 días
pipeline_job_status.py 176161f0d2 fix(pipelines): a pipeline run remembers how each copy ended hai 1 semana
plate_detection.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 hai 4 días
plate_thumbnail.py bdbfa5d8fd fix(library): STL thumbnails are made off the event loop, one at a time hai 5 días
plug_energy.py 47795649ae fix(smart-plugs): power alerts are sent, checked in the background, once per crossing hai 1 semana
plug_energy_history.py aba00598bb fix(smart-plugs): read a REST plug's lifetime counter, and derive Today/Yesterday from it (issue #2539) hai 3 meses
power_alerts.py 47795649ae fix(smart-plugs): power alerts are sent, checked in the background, once per crossing hai 1 semana
preset_resolver.py cf98daa0bb Security hardening (maziggy/bambuddy-security #10) hai 2 semanas
print_batch.py f761a3ae97 fix(queue): every way of adding a job announces it, applies the default print options and keeps its cost centre hai 5 días
print_confirmation.py 1c316e2ad6 Answer the outcome prompt by reacting to the Telegram message (#3129) hai 3 semanas
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 hai 2 días
print_cost_estimate.py 141ec5dbb3 fix(spoolman): failed prints are logged with their spool cost, queue estimates use Spoolman prices hai 6 días
print_defaults.py f761a3ae97 fix(queue): every way of adding a job announces it, applies the default print options and keeps its cost centre hai 5 días
print_dispatch_context.py db6cdb0745 fix(camera): take the finish photo when the print ends, not when its last layer starts (#2547) hai 2 meses
print_log.py 461c3f045d fix(archives): a cost set through the API or by Recalculate reaches the run that had it; edits during a reprint leave the previous run alone; archive cost bounded; a 422 survives Infinity/NaN hai 3 días
print_scheduler.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 hai 3 días
print_storage.py ebc72e1d41 fix(archives): keep the project name when the wrong-plate guard rejects a 3MF (issue #3126) hai 1 mes
printer_diagnostic.py a36c0009a5 fix(diagnostics): name the stalled step when a bundle's connection check times out (issue #3164) hai 3 semanas
printer_file_cache.py 026acaf511 fix(printers): the plate picker downloads a printer's 3MF once hai 5 días
printer_manager.py 808e461c52 fix(printers): live updates carry the airduct (cooling/heating) mode, also when it is the only change on an idle printer, and each H2C rack slot's filament type; the recovered-3MF Spoolman tests no longer depend on plate ids another test left behind hai 2 días
printer_media.py 7a2fd80b91 fix(ftp): printer downloads stop at their deadline, fit the file's size and say what failed hai 5 días
process_overrides.py f0500578bd Edit the full print-parameter set from the slice dialog hai 2 meses
queue_announcements.py f761a3ae97 fix(queue): every way of adding a job announces it, applies the default print options and keeps its cost centre hai 5 días
queue_item_printer.py 2699bebc37 fix(queue): a job moved to another printer drops the old printer's settings hai 6 días
queue_position.py e9627e44a2 Start queued jobs in list order, whether pinned or "Any <model>" (#3200) hai 3 semanas
rest_smart_plug.py a51283ad76 Security hardening (maziggy/bambuddy-security #19) hai 1 semana
secret_fields.py b1be388a7d Security hardening (maziggy/bambuddy-security #18) hai 1 semana
slice_dispatch.py 6cdf4eb2d0 Tests: 21 in the new test_api_key_own_rows.py. Before the change, 8 of them failed; the rest pass either way because they check refusals and unchanged behaviour. All 7 mutations were killed. In the #3256 tests (test_api_key_queue_acts_as_owner.py), I tightened the bulk assertion and fixed the outdated docstring. The wiki's API keys page had documented the old refusal; that block is rewritten. hai 2 días
slice_output_check.py 4f10d15584 Record the colour a slice is actually printed in (issue #2977) hai 1 mes
slice_preview.py 9a837d19a1 fix(slicer): strip zero-valued filament-index sentinels, and sanitise the preview slice too (issue #3030) hai 1 mes
slicer_3mf_convert.py 83142c726c fix(slice): report a finished slice once, not once per queued poll hai 2 meses
slicer_api.py d120a804ff fix(slicer): name the sidecar service in the update command (#2802) hai 2 meses
slicer_filament_resolver.py 02e39b18b9 Configure Orca Cloud filaments with their own filament ID (#3216) hai 2 semanas
slot_kprofile.py 53ef17dc56 fix(spoolman): slot assignments are verified, and the spool's own preset is used for the slot hai 6 días
slot_nozzle.py 113f08a1a1 fix(printers): REST and WebSocket share the AMS serialiser, override picker sees both nozzles without an AMS hai 5 días
slot_preset_writer.py 02e39b18b9 Configure Orca Cloud filaments with their own filament ID (#3216) hai 2 semanas
slot_unlink_grace.py 3497cf0d46 Hold an automatic slot unlink until the slot stays empty (issue #3186) hai 3 semanas
smart_plug_manager.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 hai 4 días
sponsor_prompt.py 31e61cebd7 feat(sponsor-prompt): lower print/archive/cost thresholds to fire for typical new installs hai 3 meses
spool_assignment_notifications.py 08a58b1ef4 Keep both modes' slot assignments across an inventory mode switch (issue #2812) hai 1 mes
spool_csv.py 5edbe7586d fix(inventory): deleting a spool frees and announces its slots; scale, AMS and manual weight syncs and a finished print's usage refresh other tabs and the printer cards; a deleted printer's spool assignments go with it on SQLite; a pre-assigned slot the printer could not be told about is retried; CSV last_used is stored in UTC hai 3 días
spool_drying.py 84f320b859 Remember when each spool was last dried (#2863) hai 2 semanas
spool_filament_preset.py 53ef17dc56 fix(spoolman): slot assignments are verified, and the spool's own preset is used for the slot hai 6 días
spool_tag_matcher.py 23d04c8645 fix(inventory): archived or deleted spools release their AMS slots, safely in both modes hai 6 días
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 hai 2 días
spoolman.py f7bd06641a fix(inventory): a used weight entered for a new spool is kept; Spoolman last_used means print use; the slot K picker accounts for nozzle flow hai 4 días
spoolman_slot_sync.py fcc20cb62c fix(spoolman): AMS syncs write only the slots whose spool they changed and keep a spool assigned meanwhile; the Sync buttons announce slot changes and update the slot preset; a new Spoolman spool is not seeded from leftover built-in assignments hai 2 días
spoolman_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" hai 2 días
stl_thumbnail.py bdbfa5d8fd fix(library): STL thumbnails are made off the event loop, one at a time hai 5 días
stock_forecast.py 318430f0f4 Give the two stock alerts something that fires them (issue #2955) (#3196) hai 3 semanas
supplier_links.py 053cfa73ad Suppliers as a managed list with per-spool assignments (#2996) hai 3 semanas
tag_conflict.py 0db028f9e6 fix(inventory): one structured 409 for a tag another spool holds (issue #3110) hai 1 mes
tasmota.py 3daae22f3d Security hardening (maziggy/bambuddy-security #8) hai 2 meses
telegram_reactions.py 1c316e2ad6 Answer the outcome prompt by reacting to the Telegram message (#3129) hai 3 semanas
timelapse_processor.py d4477e9b71 Log ffmpeg's error instead of its build banner hai 1 mes
usage_tracker.py ac4806f029 fix: a failed first run no longer leaves the archive at its partial cost (built-in inventory); completion stops the start cost estimate before writing the real cost; 2FA/SSO logins report LDAP/OIDC users' auth source; a fault in both print_error and HMS is listed once; a refused H2D load's tray target expires; refused K-profile re-applies are logged; the cloud filament-name map is fetched once per account without holding a DB connection; the library edit route refuses folder changes across the external boundary; a slow slice-progress answer is not reported as an unreachable sidecar hai 2 días