v0.3.8 - Model profiles (extensible per-machine behaviour)
Internal refactor + docs, no functional change for supported machines.
- Per-model behaviour now lives in one class per machine family (
model_profiles.py:SoulProfile,ElettaProfile) instead ofif is_elettabranches across the coordinator. Adding first-class support for a new model is now a singleModelProfilesubclass. - Unknown models default to learn-and-replay (works on any Coffee Link machine once taught), avoiding the silent-failure an unrecognised model used to hit.
- README: "Adding a new machine model" - exactly what diagnostics to capture (device id, Last Captured Command per drink + wake, recipe dump) so a new machine can be added.
PrimaDonna Soul (synthesize) and Eletta Explore (learn-and-replay) behaviour unchanged. 41 unit tests pass.