mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-09-29 18:51:43 +02:00
feat(deficit): backup-aware filament deficit check, colour-strict (#1762)
When the printer reports ams_filament_backup=True, compute_deficit_for_queue_item pools remaining_grams across spools matching (preset, colour) on the same printer (scoped per extruder on dual-nozzle) before declaring a per-slot shortfall. Identity is strict: same slicer_filament preset AND same colour (alpha-normalised). Two PETG HF spools in different colours are NOT pooled — the firmware would swap correctly but the print would change colour mid-run. Spoolman side mirrors the rule via filament.id + color_hex. Backup OFF falls back to the pre-PR per-slot accounting line-for-line. 8 new test cases in TestFilamentDeficitBackupAware pin pool covers, pool insufficient, different presets, backup-OFF regression, dual- extruder side scoping, no-preset never pairs, colour-strict, and alpha-hex normalisation. The 8 pre-existing test_filament_deficit.py cases stay green. feat(printers): AMS Filament Backup modal with BS-style ring per pair Badge click on the Filaments section header (#1766) now opens a modal: filament-colour ring per backup pair, material name + rotation count in the centre, slot labels distributed around the colour band on contrast-aware pills. Closely modelled on Bambu Studio's Auto Refill widget. Lone slots are intentionally not listed. R / L badges per ring when the extruder map carries two distinct values; collapses to no- badge rendering for single-nozzle printers misflagged as dual. Esc keypress closes the modal. Theme-aware via CSS variables matching AMSHistoryModal. computeBackupGroups helper in utils/amsHelpers defensively dedupes duplicate ams.id entries observed on switch-VP aggregations. 10 modal render cases pin: Esc closes / unmount nulls the listener / ring renders for pairs and omits lone slots / R-L badges only when extruder map has distinct values / empty state / toggle gating. 13 frontend cases pin computeBackupGroups identity rules. feat(printers): active-print P-N pill on AMS slot tiles during RUNNING While the printer is mid-print, each AMS slot tile referenced by status.ams_mapping carries a small "P1 / P2 / P3" pill in the top- right corner, naming which print-slot is mapped to that AMS slot. Catches the #1762 comment-2 scenario: a queue job set for "any X1C" staged to a printer with mismatched filament, no way to verify mid- print. Same wire data (status.ams_mapping is already on the wire) — the addition is purely surface. The existing ring-bambu-green highlight for effectiveTrayNow keeps its meaning (currently extruding RIGHT NOW); the pill is the per-slot static assignment for the active print. chore(scheduler): log Print Anyway short-circuit at INFO _block_on_filament_deficit logs at INFO when it honours item.skip_filament_check, so a future "Print Anyway didn't work" report (third commenter on #1762 hit this shape) has actionable evidence in the standard support bundle without DEBUG. Bundled because the deficit fix makes the original symptom disappear for users with backup ON.
This commit is contained in:
@@ -143,6 +143,8 @@ const DE_COGNATES = [
|
||||
'Name', 'Status', 'Tag', 'Tags', 'Online', 'Offline', 'Standard', 'Modus',
|
||||
'Stop', 'Reset', 'Test', 'Code', 'Token', 'Server', 'Port', 'Bug', 'Job',
|
||||
'Bambu Cloud', 'Orca Cloud', // brand names — same in every locale
|
||||
'AMS Filament Backup', // Bambu Lab product/firmware feature name
|
||||
|
||||
'Pause', 'Power', 'System', 'Problem', 'Designer', 'Extruder', 'Firmware',
|
||||
'Material', 'Original', 'Position', 'Webhook', 'Workflow', 'Slicer',
|
||||
'Region', 'Normal', 'Orange', 'Branch', 'Budget', 'Commit', 'Global',
|
||||
@@ -171,6 +173,7 @@ const DE_COGNATES = [
|
||||
// French cognates — many UI labels overlap with English exactly.
|
||||
const FR_COGNATES = [
|
||||
'Bambu Cloud', 'Orca Cloud', // brand names — same in every locale
|
||||
'AMS Filament Backup', // Bambu Lab product/firmware feature name
|
||||
'Status', 'Tag', 'Tags', 'Online', 'Offline', 'Standard', 'Filament',
|
||||
'Filaments', 'Software', 'Hardware', 'Stop', 'Reset', 'Test', 'Code',
|
||||
'Token', 'Server', 'Port', 'Plate', 'Layer', 'Active', 'Total', 'Avatar',
|
||||
@@ -209,6 +212,7 @@ const FR_COGNATES = [
|
||||
// Italian cognates.
|
||||
const IT_COGNATES = [
|
||||
'Bambu Cloud', 'Orca Cloud', // brand names — same in every locale
|
||||
'AMS Filament Backup', // Bambu Lab product/firmware feature name
|
||||
'Email', // common loanword in Italian, used verbatim in UI labels
|
||||
'Status', 'Tag', 'Tags', 'Online', 'Offline', 'Standard', 'Filament',
|
||||
'Filaments', 'Software', 'Hardware', 'Stop', 'Reset', 'Test', 'Code',
|
||||
@@ -249,6 +253,7 @@ const JA_COGNATES = [
|
||||
// Portuguese (BR) cognates.
|
||||
const PT_BR_COGNATES = [
|
||||
'Bambu Cloud', 'Orca Cloud', // brand names — same in every locale
|
||||
'AMS Filament Backup', // Bambu Lab product/firmware feature name
|
||||
'Status', 'Tag', 'Tags', 'Online', 'Offline', 'Standard', 'Filament',
|
||||
'Software', 'Hardware', 'Stop', 'Reset', 'Test', 'Code', 'Token', 'Server',
|
||||
'Port', 'Plate', 'Layer', 'Modal', 'Pin', 'Pro', 'Mini', 'Studio', 'Cache',
|
||||
@@ -316,6 +321,7 @@ const KO_COGNATES = [
|
||||
// Spanish cognates — words/phrases that are genuinely identical in Spanish.
|
||||
const ES_COGNATES = [
|
||||
'Bambu Cloud', 'Orca Cloud', // brand names — same in every locale
|
||||
'AMS Filament Backup', // Bambu Lab product/firmware feature name
|
||||
'Error', 'Firmware', 'General', 'Control', 'Total', 'total', 'Material',
|
||||
'Material:', 'Color', 'Hex', 'Local', 'Global', 'China', 'Editable',
|
||||
'Normal', 'Metal', 'Multicolor', 'Proxy', 'Host', 'Factor', 'Original',
|
||||
@@ -335,6 +341,7 @@ const ES_COGNATES = [
|
||||
const TR_COGNATES = [
|
||||
'Filament', 'Firmware', 'Disk', 'Hex', 'Test', 'Port', 'Model', 'Metal',
|
||||
'Bambu Cloud', 'Orca Cloud', // brand names — same in every locale
|
||||
'AMS Filament Backup', // Bambu Lab product/firmware feature name
|
||||
'Min', 'Normal', 'Platform', 'Net', 'Trend', 'Commit', 'Global', 'Proxy',
|
||||
'N/A', 'email',
|
||||
'STARTTLS (Port 587)', 'SSL/TLS (Port 465)',
|
||||
|
||||
Reference in New Issue
Block a user