The CCD motion reading stays at 0 (actual_total_move:0), so motion mode
only produced false "Rounout" messages. ENABLE_WIDTH keeps the flow
compensation and the runout on a missing width; clogs and breaks are
left to AFC's buffer fault detection (filament_error_sensitivity).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Klipper's G10 retracts only once until a G11, and nothing sends G11 on
this printer: the G10 in PRINT_WARMUP used up the retract, so PRINT_END
never retracted and the nozzle leaked while cooling down.
- _NOZZLE_RETRACT retracts and remembers the amount in the saved
variable nozzle_retract (survives restarts, capped at 15 mm).
PRINT_END retracts 5 mm, PRINT_WARMUP 2 mm, CANCEL_PRINT 5 mm plus the
park/PAUSE retract.
- _NOZZLE_UNRETRACT in PRINT_START pushes it back over the bucket before
the wipe.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- bd_pa_spoolman.cfg renames AFC's SET_SPOOL_ID, so klipper-macros.cfg
must be included after [include AFC/*.cfg]; the README said otherwise.
- install.sh links scripts/ as ~/printer_data/config/klipper-macros-scripts
so the scripts can be edited in Mainsail/Fluidd.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- RESUME is defined only in print/pause_resume.cfg; heat_soak.cfg's
duplicate replaced it (no unretract, no fan restore). It now runs
HEAT_SOAK_RESUME -> _RESUME_PRINT -> RESUME_BASE.
- PAUSE runs PAUSE_BASE first, then retracts and parks once (X20 Y345);
a parked flag makes resume undo only what PAUSE did.
- New _PRINT_CLEANUP shared by PRINT_END and CANCEL_PRINT: heaters incl.
iHEATER_OFF, fan, M221 S100, bdwidth off, mesh and skew cleared.
In PRINT_END it runs after RESTORE_GCODE_STATE so the flow reset sticks.
- Add CLAUDE.md and tools/effective_config.py.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>