v0.4.3-pre-release #163
3dg1luk43
announced in
Announcements
Replies: 1 comment
-
|
Translations are broker. Working on fix |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
[0.4.3-PRE-RELEASE] - 2026-03-10
✨ Features
mdi:pot-steam,mdi:heat-pump).zh-Hant) translations for all configuration and options menus.Spinning Icon,Show State,Show Program, andShow Details.translate.pyto automatically update the frontend card'sTRANSLATIONSobject from language files, providing out-of-the-box localization for all 27+ supported languages.cycle_live) with per-cycle throttling, overrun protection caps, mobile-only payload routing, and automatic clear on cycle completion.🛠️ Improvements
SelectSelectordropdowns in the configuration flow now useSelectOptionDictwith explicit human-readable labels (e.g. "Split a Cycle (Find gaps)", "Export All Data", "Confirm - Correct Detection"). Previously, raw internal values such as"split"or"auto_label_cycles"were displayed directly in the UI.strings.jsonanden.jsonthat were no longer backed by selectors in the config flow (assign_mode, export/import mode, cycle history editor actions, and several management menu entries). Reduces translator noise and prevents spurious untranslated keys in other languages.manage_phase_catalogaction labels and descriptions to Swedish, Tamil, Telugu, and Simplified Chinese.enumdevice class ([BUG] State and Program only lists and no diagram #157).SelectSelector, enabling natively localized menu options across all supported languages.notify_fire_eventsoption to control emission of cycle start/end events.DEFAULT_MAX_DEFERRAL_SECONDSto 4 hours to prevent long silent Eco drying phases from being cut off.NO_UPDATE_ACTIVE_TIMEOUTto 4 hours.MIN_OFF_GAPto 1 hour to prevent fragmentation when no profile is matched.SuggestionEngineis now aware of the configured device type and uses device-specific safety floors foroff_delayrecommendations, preventing it from suggesting dangerously short timeouts for dishwashers.sensor.<device>_current_phase) so active phase is visible in normal entity views without enabling diagnostics.🐛 Bug Fixes
en.jsonwithstrings.jsonto ensure a canonical source of truth for translations.start_energy_thresholdandend_energy_thresholdwere incorrectly defaulting to 0.0W in the detector configuration, which could lead to premature cycle ends in noisy environments. They now correctly respect device-specific constant defaults.SelectSelectorentry with aNonevalue would cause aKeyErrorduring form processing. Such entries are now silently skipped.async_rebuild_envelopeincorrectly computingmin_durationandmax_durationfrom the outlier-filtered duration set.min/maxnow reflect the true observed range of all cycles; onlyavg_durationuses the IQR-filtered set for robustness. This means deleting an outlier cycle now correctly recalculates the profile's duration range.{comparison_data}) to prevent missing-value translation errors during feedback review.device_type) so similarly named phases remain deterministic.Contexttoscript.async_run, resolving runtime errors like "Running script requires passing in a context".STATE_ENDING(not onlyRUNNING/PAUSED) until cycle completion.wash_phaseregistry entry to prevent misleading duplicate/legacy phase sensors.🧪 Tests
MagicMock-based hass objects with realHomeAssistantinstances frompytest_homeassistant_custom_componentacross all new test modules. OnlyProfileStoreandCycleDetectorare patched as true external I/O boundaries.test_manager_event_payload_and_ghosts.py): CoversEVENT_CYCLE_ENDEDpayload field exclusion (power_data,debug_data,power_trace) and ghost-cycle energy threshold detection using real HA event bus listeners.test_migration_harness.py): Validatesasync_migrate_entryfield movement (data → options), idempotency on re-run, and no-op behaviour when already at the latest schema version.test_manager_precompletion_harness.py): Pins the ambiguity gate — notifications are suppressed when_last_match_ambiguous=True, sent exactly once when unambiguous, and not re-sent on subsequent calls.test_manager_matching_harness.py): Covers the full persistence-counter state machine inside_async_do_perform_matching: single-call accumulation, below-threshold staying atdetecting..., threshold commit, profile-change counter reset, high-confidence override bypassing persistence, and ambiguous-result gating.test_manager_live_notifications.py): Added focused coverage for mobile-only routing, payload keys, overrun cap enforcement, away-mode deferred live coalescing, clear-on-end behavior,STATE_ENDINGsupport, one-time pre-match waiting message, and post-match periodic update activation.This discussion was created from the release v0.4.3-pre-release.
Beta Was this translation helpful? Give feedback.
All reactions