Skip to content

v2.9.1 - Bugfix release. No breaking changes.

Choose a tag to compare

@johnnyh1975 johnnyh1975 released this 25 Jun 16:53
5c965a7

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, and lastCommand are separate
    top-level MQTT keys from cleanMissionStatus. A delta message that only
    updates cleanMissionStatus (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 as 0 instead of the robot's true lifetime
    count, so the very next message carrying bbrun (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, via lastCommand — a multi-room clean_room mission could be
    recorded with an empty zone list if the mission-start message didn't
    happen to carry lastCommand.

  • last_cleaned_rooms (and similar cloud-derived attributes) could get
    stuck on unknown for 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.json had two Repair Issue keys misspelled
    (error_reçurrence/cancellation_reçurrence instead of the ASCII
    error_recurrence/cancellation_recurrence every other language file
    and repairs.py itself 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 a region_areas_m2 attribute (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_key used in
    the integration's source against strings.json and all 7 language
    files, including an ASCII check on translation file keys — the class of
    bug the fr.json fix above falls into.

Full test suite: 2776 passing.