Raise the chamber-temperature ceiling from 60 to 65 C

Every field that takes a chamber target stopped at 60: the per-filament
chamber map and per-print override in Preheat & Heat Soak, the chamber
quick-select presets, and the printer-card chamber control. 60 is the
X1E's ceiling and the X1E was the only heated-chamber model when that
limit was written; the H2 series and X2D heat to 65, so the top of their
range was unreachable.

The ceiling now lives in one constant per side (MAX_CHAMBER_TEMP_C in
backend/app/utils/printer_models.py and frontend/src/utils/printer.ts)
rather than as a literal at each call site. X1E firmware clamps a higher
request to its own maximum, so a shared ceiling is safe.

Also fixes a live bug at PrintersPage.tsx:7985: parsePresetTriple was
bounded to 60 there, and it rejects the whole triple on any out-of-range
entry, so a saved 65 preset would have silently reverted the printer
card to the defaults while Settings still showed 65.
This commit is contained in:
maziggy
2026-08-03 08:52:23 +02:00
parent ad375f6ca7
commit b04664c64a
16 changed files with 285 additions and 168 deletions
@@ -12,6 +12,7 @@ import {
CALIBRATION_MODE_ACTIVE,
CALIBRATION_MODE_INACTIVE,
} from '../../utils/calibrationMode';
import { MAX_CHAMBER_TEMP_C } from '../../utils/printer';
type OptionConfig = {
key: keyof PrintOptionsType;
@@ -79,7 +80,7 @@ export function PrintOptionsPanel({
if (Number.isNaN(parsed)) return;
onChange({
...options,
preheat_chamber_target_override: Math.max(0, Math.min(60, parsed)),
preheat_chamber_target_override: Math.max(0, Math.min(MAX_CHAMBER_TEMP_C, parsed)),
});
};
@@ -188,7 +189,7 @@ export function PrintOptionsPanel({
<input
type="number"
min={0}
max={60}
max={MAX_CHAMBER_TEMP_C}
step={1}
value={options.preheat_chamber_target_override ?? ''}
onChange={(e) => handlePreheatTarget(e.target.value)}