|
|
@@ -1008,6 +1008,7 @@ export function SettingsPage() {
|
|
|
(settings.default_vibration_cali ?? true) !== (localSettings.default_vibration_cali ?? true) ||
|
|
|
(settings.default_layer_inspect ?? false) !== (localSettings.default_layer_inspect ?? false) ||
|
|
|
(settings.default_timelapse ?? false) !== (localSettings.default_timelapse ?? false) ||
|
|
|
+ (settings.default_nozzle_offset_cali ?? true) !== (localSettings.default_nozzle_offset_cali ?? true) ||
|
|
|
(settings.stagger_group_size ?? 2) !== (localSettings.stagger_group_size ?? 2) ||
|
|
|
(settings.stagger_interval_minutes ?? 5) !== (localSettings.stagger_interval_minutes ?? 5) ||
|
|
|
(settings.require_plate_clear ?? false) !== (localSettings.require_plate_clear ?? false);
|
|
|
@@ -1092,6 +1093,7 @@ export function SettingsPage() {
|
|
|
default_vibration_cali: localSettings.default_vibration_cali,
|
|
|
default_layer_inspect: localSettings.default_layer_inspect,
|
|
|
default_timelapse: localSettings.default_timelapse,
|
|
|
+ default_nozzle_offset_cali: localSettings.default_nozzle_offset_cali,
|
|
|
stagger_group_size: localSettings.stagger_group_size,
|
|
|
stagger_interval_minutes: localSettings.stagger_interval_minutes,
|
|
|
require_plate_clear: localSettings.require_plate_clear,
|
|
|
@@ -4057,12 +4059,15 @@ export function SettingsPage() {
|
|
|
{t('settings.defaultPrintOptionsDescription', 'Set default values for print options when starting new prints. These can be overridden per print in the print dialog.')}
|
|
|
</p>
|
|
|
{[
|
|
|
- { key: 'default_bed_levelling' as const, label: t('settings.defaultBedLevelling', 'Bed Levelling'), desc: t('settings.defaultBedLevellingDesc', 'Auto-level bed before print'), fallback: true },
|
|
|
- { key: 'default_flow_cali' as const, label: t('settings.defaultFlowCali', 'Flow Calibration'), desc: t('settings.defaultFlowCaliDesc', 'Calibrate extrusion flow'), fallback: false },
|
|
|
- { key: 'default_vibration_cali' as const, label: t('settings.defaultVibrationCali', 'Vibration Calibration'), desc: t('settings.defaultVibrationCaliDesc', 'Reduce ringing artifacts'), fallback: true },
|
|
|
- { key: 'default_layer_inspect' as const, label: t('settings.defaultLayerInspect', 'First Layer Inspection'), desc: t('settings.defaultLayerInspectDesc', 'AI inspection of first layer'), fallback: false },
|
|
|
- { key: 'default_timelapse' as const, label: t('settings.defaultTimelapse', 'Timelapse'), desc: t('settings.defaultTimelapseDesc', 'Record timelapse video'), fallback: false },
|
|
|
- ].map(({ key, label, desc, fallback }) => (
|
|
|
+ { key: 'default_bed_levelling' as const, label: t('settings.defaultBedLevelling', 'Bed Levelling'), desc: t('settings.defaultBedLevellingDesc', 'Auto-level bed before print'), fallback: true, dualNozzleOnly: false },
|
|
|
+ { key: 'default_flow_cali' as const, label: t('settings.defaultFlowCali', 'Flow Calibration'), desc: t('settings.defaultFlowCaliDesc', 'Calibrate extrusion flow'), fallback: false, dualNozzleOnly: false },
|
|
|
+ { key: 'default_vibration_cali' as const, label: t('settings.defaultVibrationCali', 'Vibration Calibration'), desc: t('settings.defaultVibrationCaliDesc', 'Reduce ringing artifacts'), fallback: true, dualNozzleOnly: false },
|
|
|
+ { key: 'default_layer_inspect' as const, label: t('settings.defaultLayerInspect', 'First Layer Inspection'), desc: t('settings.defaultLayerInspectDesc', 'AI inspection of first layer'), fallback: false, dualNozzleOnly: false },
|
|
|
+ { key: 'default_timelapse' as const, label: t('settings.defaultTimelapse', 'Timelapse'), desc: t('settings.defaultTimelapseDesc', 'Record timelapse video'), fallback: false, dualNozzleOnly: false },
|
|
|
+ { key: 'default_nozzle_offset_cali' as const, label: t('settings.defaultNozzleOffsetCali', 'Nozzle Offset Calibration'), desc: t('settings.defaultNozzleOffsetCaliDesc', 'Calibrate nozzle offsets between extruders'), fallback: true, dualNozzleOnly: true },
|
|
|
+ ]
|
|
|
+ .filter(({ dualNozzleOnly }) => !dualNozzleOnly || (printers || []).some(p => p.nozzle_count === 2))
|
|
|
+ .map(({ key, label, desc, fallback }) => (
|
|
|
<div key={key} className="flex items-center justify-between">
|
|
|
<div className="flex-1 mr-4">
|
|
|
<p className="text-sm text-white">{label}</p>
|