v2.9.1 - Bugfix release. No breaking changes.
Roomba+ v2.9.1
Bugfix release. No breaking changes.
Fixed
-
Completed missions could be misclassified as
stuck_and_resumed/stuck_and_abandoned.
bbrun,runtimeStats,bbchg3,pose, andlastCommandare separate
top-level MQTT keys fromcleanMissionStatus. A delta message that only
updatescleanMissionStatus(e.g. the mission-start phase transition) is
not guaranteed to carry any of them — reading them directly off that one
message silently substituted an empty/zero default for the robot's actual
last-known value. In practice this meant: a brand-new mission's nStuck
baseline could get read as0instead of the robot's true lifetime
count, so the very next message carryingbbrun(any nonzero count)
looked like a fresh stuck event — even on a completely clean run.
(#20) -
zones=[]recorded for clearly room-selected missions. Same root
cause, vialastCommand— a multi-roomclean_roommission could be
recorded with an empty zone list if the mission-start message didn't
happen to carrylastCommand. -
last_cleaned_rooms(and similar cloud-derived attributes) could get
stuck onunknownfor up to 24 hours. The post-mission cloud refresh
fired synchronously on mission end — exactly the moment iRobot's own
cloud has had the least possible time to ingest the mission. When that
single attempt missed, nothing retried until the next scheduled 24h
poll. Replaced with two fixed checkpoints (delayed first attempt, one
fallback ~10 minutes later) instead of one immediate, too-early attempt. -
translations/fr.jsonhad two Repair Issue keys misspelled
(error_reçurrence/cancellation_reçurrenceinstead of the ASCII
error_recurrence/cancellation_recurrenceevery other language file
andrepairs.pyitself use). French-locale users saw these two Repair
Issues untranslated.
Added
- Per-room floor area.
select.*zone-selector entities for Smart Map
robots now expose aregion_areas_m2attribute (room name → m²),
computed once from the same UMF geometry used for map rendering.
Internal
- Consolidated several feature/version-named test files into their domain
test files (no behavior change). - Added a regression guard that checks every
translation_keyused in
the integration's source againststrings.jsonand all 7 language
files, including an ASCII check on translation file keys — the class of
bug thefr.jsonfix above falls into.
Full test suite: 2776 passing.