iobroker.laundrylens 0.4.36 → 0.4.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/io-package.json +14 -14
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -132,6 +132,10 @@ This also works inside the conditional `[...]` blocks: `[🌡️ Outside: {state
|
|
|
132
132
|
|
|
133
133
|
### **WORK IN PROGRESS**
|
|
134
134
|
|
|
135
|
+
### 0.4.37 (2026-10-03)
|
|
136
|
+
- Fix: three test files added in recent releases (`test_show_probable_program.js`, `test_cycle_finish_exception_guard.js`, `test_cycle_boundary_reset.js`) called the bare global `setTimeout()`/`setInterval()` directly in their fake-adapter mocks - the same mistake made and fixed before in other test files, missed again when writing these new ones. Brought in line with the native-timer-alias pattern used everywhere else in this suite (review checker E5004/E5005)
|
|
137
|
+
- Fix: `@iobroker/testing` devDependency bumped to `^6.3.0` (current; was `^6.2.2`)
|
|
138
|
+
|
|
135
139
|
### 0.4.36 (2026-10-03)
|
|
136
140
|
- Fix: follow-up to 0.4.34's `needsFeedback` fix, reported live - deleting a cycle (e.g. an unconfirmed one someone just discards without confirming/correcting it first) could also leave `needsFeedback` stuck on `true` forever, since only `confirmCycle`/`correctCycle` had been covered. `clearAllData` and `importConfig` had the same gap (both can also replace `cycleHistory`/profiles wholesale). All three now also re-sync `needsFeedback`; `clearAllData`/`importConfig` additionally re-sync `availablePrograms`
|
|
137
141
|
- Covered by 3 new test cases extending `tests/test_programs_and_feedback_sync.js`
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "laundrylens",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.37",
|
|
5
5
|
"news": {
|
|
6
|
+
"0.4.37": {
|
|
7
|
+
"en": "Fix: three test files added in recent releases (test_show_probable_program.js, test_cycle_finish_exception_guard.js, test_cycle_boundary_reset.js) called the bare global setTimeout()/setInterval() directly in their fake-adapter mocks, which the review checker's plain-timer-usage check flags - brought in line with the native-timer-alias pattern already used everywhere else in this test suite. Fix: bumped the @iobroker/testing devDependency to the current version (6.3.0).",
|
|
8
|
+
"de": "Fix: drei in juengeren Releases hinzugefuegte Testdateien (test_show_probable_program.js, test_cycle_finish_exception_guard.js, test_cycle_boundary_reset.js) riefen in ihren Fake-Adapter-Mocks das nackte globale setTimeout()/setInterval() direkt auf, was die Pruefung des Review-Checkers auf rohe Timer-Aufrufe meldet - an das in dieser Testsuite ueberall sonst verwendete native-Timer-Alias-Muster angeglichen. Fix: die devDependency @iobroker/testing auf die aktuelle Version (6.3.0) angehoben.",
|
|
9
|
+
"ru": "Исправление: три тестовых файла, добавленных в недавних релизах (test_show_probable_program.js, test_cycle_finish_exception_guard.js, test_cycle_boundary_reset.js), напрямую вызывали голый глобальный setTimeout()/setInterval() в своих фиктивных адаптерах, что отмечает проверка чекера на использование простых таймеров - приведено в соответствие с шаблоном нативных алиасов таймеров, уже используемым повсюду в этом наборе тестов. Исправление: devDependency @iobroker/testing обновлена до текущей версии (6.3.0).",
|
|
10
|
+
"pt": "Correcao: tres arquivos de teste adicionados em versoes recentes (test_show_probable_program.js, test_cycle_finish_exception_guard.js, test_cycle_boundary_reset.js) chamavam diretamente o setTimeout()/setInterval() global simples em seus mocks de adaptador falso, o que o verificador de revisao sinaliza - alinhados ao padrao de alias nativo de temporizador ja usado em todo o resto desta suite de testes. Correcao: a devDependency @iobroker/testing foi atualizada para a versao atual (6.3.0).",
|
|
11
|
+
"nl": "Fix: drie testbestanden die in recente releases zijn toegevoegd (test_show_probable_program.js, test_cycle_finish_exception_guard.js, test_cycle_boundary_reset.js) riepen in hun fake-adapter mocks rechtstreeks de kale globale setTimeout()/setInterval() aan, wat de controle van de review-checker op kaal timergebruik signaleert - in lijn gebracht met het native-timer-aliaspatroon dat al overal elders in deze testsuite wordt gebruikt. Fix: de devDependency @iobroker/testing bijgewerkt naar de huidige versie (6.3.0).",
|
|
12
|
+
"fr": "Correction : trois fichiers de test ajoutes dans des versions recentes (test_show_probable_program.js, test_cycle_finish_exception_guard.js, test_cycle_boundary_reset.js) appelaient directement le setTimeout()/setInterval() global brut dans leurs mocks de faux adaptateur, ce que signale la verification du checker sur l'utilisation brute des timers - alignes sur le modele d'alias natif de timer deja utilise partout ailleurs dans cette suite de tests. Correction : la devDependency @iobroker/testing mise a jour vers la version actuelle (6.3.0).",
|
|
13
|
+
"it": "Correzione: tre file di test aggiunti nelle release recenti (test_show_probable_program.js, test_cycle_finish_exception_guard.js, test_cycle_boundary_reset.js) chiamavano direttamente il setTimeout()/setInterval() globale nudo nei loro mock di adattatore fittizio, cosa segnalata dal controllo del checker sull'uso di timer semplici - allineati allo schema di alias nativo del timer gia usato ovunque nel resto di questa suite di test. Correzione: la devDependency @iobroker/testing aggiornata alla versione attuale (6.3.0).",
|
|
14
|
+
"es": "Correccion: tres archivos de prueba anadidos en versiones recientes (test_show_probable_program.js, test_cycle_finish_exception_guard.js, test_cycle_boundary_reset.js) llamaban directamente al setTimeout()/setInterval() global simple en sus mocks de adaptador simulado, lo que la verificacion del checker sobre uso de temporizadores simples marca - alineados con el patron de alias nativo de temporizador ya usado en el resto de esta suite de pruebas. Correccion: la devDependency @iobroker/testing actualizada a la version actual (6.3.0).",
|
|
15
|
+
"pl": "Poprawka: trzy pliki testowe dodane w ostatnich wydaniach (test_show_probable_program.js, test_cycle_finish_exception_guard.js, test_cycle_boundary_reset.js) wywolywaly bezposrednio goly globalny setTimeout()/setInterval() w swoich atrapach adaptera, co zglasza kontrola checkera dotyczaca uzycia prostych timerow - dostosowano do wzorca aliasow natywnych timera uzywanego juz wszedzie indziej w tym zestawie testow. Poprawka: zaktualizowano devDependency @iobroker/testing do aktualnej wersji (6.3.0).",
|
|
16
|
+
"uk": "Виправлення: три тестові файли, доданi в останніх релізах (test_show_probable_program.js, test_cycle_finish_exception_guard.js, test_cycle_boundary_reset.js), напряму викликали голий глобальний setTimeout()/setInterval() у своїх фіктивних адаптерах, що позначає перевірка чекера на використання простих таймерів - приведено у відповідність із шаблоном нативних псевдонімів таймера, який уже використовується всюди в цьому наборі тестів. Виправлення: devDependency @iobroker/testing оновлено до поточної версії (6.3.0).",
|
|
17
|
+
"zh-cn": "修复:最近版本中新增的三个测试文件(test_show_probable_program.js、test_cycle_finish_exception_guard.js、test_cycle_boundary_reset.js)在其伪造适配器中直接调用了原生的全局 setTimeout()/setInterval(),这会被审查检查器的简单计时器使用检测标记——现已与本测试套件中其余部分一致使用原生计时器别名写法。修复:将 @iobroker/testing 开发依赖升级到当前版本(6.3.0)。"
|
|
18
|
+
},
|
|
6
19
|
"0.4.36": {
|
|
7
20
|
"en": "Follow-up to 0.4.34's needsFeedback fix: deleting a cycle (e.g. an unconfirmed one someone just discards without confirming/correcting it first), clearing all data, or importing a config could also leave needsFeedback stuck on true, since only confirmCycle/correctCycle had been covered. Now also re-synced after deleteCycle, clearAllData and importConfig (the latter two also re-sync availablePrograms, since they can add/replace profiles too).",
|
|
8
21
|
"de": "Folgefix zum needsFeedback-Fix aus 0.4.34: Das Löschen eines Zyklus (z. B. eines unbestätigten, den man einfach verwirft, ohne ihn vorher zu bestätigen/korrigieren), das Löschen aller Daten oder der Import einer Konfiguration konnten needsFeedback ebenfalls dauerhaft auf true belassen, da bisher nur confirmCycle/correctCycle abgedeckt waren. Wird jetzt auch nach deleteCycle, clearAllData und importConfig synchronisiert (die letzten beiden synchronisieren zusätzlich availablePrograms, da sie auch Programme hinzufügen/ersetzen können).",
|
|
@@ -80,19 +93,6 @@
|
|
|
80
93
|
"pl": "Poprawka: prawdziwe zgloszenie bledu - zakladka administratora pokazywala suszarke jako wylaczona, podczas gdy datapoint stanu nadal pokazywal \"Running\". Przyczyna: sciezka szybkiego zakonczenia cyklu suszarki przy ochronie przed gnieceniem (\"power drop\" - wymusza zakonczenie cyklu 45s po nagłym spadku mocy, aby zareagowac szybciej niz czekajac na pelne opoznienie wylaczenia) ustawiala stan wewnetrzny na wylaczony bezposrednio, ale nigdy nie powiadamiala o tym reszty adaptera - dlatego datapointy state/stateText/running/program/phase pozostawaly zamrozone na ostatniej wartosci sprzed spadku, mimo ze status na zywo odczytywany przez zakladke administratora byl juz poprawny. Naprawiono, wywolujac to samo powiadomienie, ktore wywoluje juz normalne przejscie konca cyklu. Jesli widzisz to teraz, ponowne uruchomienie adaptera natychmiast czysci utkniete wartosci bez czekania na kolejny cykl.",
|
|
81
94
|
"uk": "Виправлення: реальне повідомлення про помилку - вкладка адміністратора показувала сушарку вимкненою, тоді як датапоінт стану все ще показував \"Running\". Причина: шлях швидкого завершення циклу сушарки при захисті від зминання (\"power drop\" - примусово завершує цикл через 45 секунд після різкого падіння потужності, щоб реагувати швидше за повне очікування затримки вимкнення) встановлював внутрішній стан на вимкнено напряму, але ніколи не повідомляв про це решту адаптера - тому датапоінти state/stateText/running/program/phase залишалися замороженими на останньому значенні до падіння, хоча живий статус, який читає вкладка адміністратора, вже був коректним. Виправлено викликом того самого сповіщення, яке вже викликає звичайний перехід у кінці циклу. Якщо ви бачите це зараз, перезапуск адаптера негайно очищує застряглі значення без очікування наступного циклу.",
|
|
82
95
|
"zh-cn": "修复:一个真实的问题反馈——管理标签页显示烘干机已关闭,但状态数据点仍显示「Running」。根本原因:烘干机的防皱「功率骤降」快速结束路径(在功率突然下降 45 秒后强制结束周期,以比等待完整关闭延迟更快地做出反应)直接将内存中的状态设为关闭,但从未通知适配器的其余部分——因此 state/stateText/running/program/phase 数据点一直冻结在骤降前的最后一个值,尽管管理标签页读取的实时状态早已正确。修复方法是触发与正常周期结束转换相同的通知。如果你现在正遇到这个问题,重启适配器即可立即清除卡住的值,无需等待下一个周期。"
|
|
83
|
-
},
|
|
84
|
-
"0.4.30": {
|
|
85
|
-
"en": "Fix: elapsedTime declares role \"value.interval\", which requires its value in seconds, but it was computed and stored in minutes everywhere (the state definition's unit, the one-time migration for existing installs, main.js's periodic update, and the live snapshot the admin tab reads via getStatus). All four now consistently use seconds, matching timeRemaining/totalDuration. Fix: removed the sinon devDependency again - it's already provided transitively via @iobroker/testing, so listing it directly was redundant (review checker E0063). Fix: a second test file's fake-adapter timers reworked to use this suite's established native-setTimeout/setInterval alias pattern (review checker E5004/E5005).",
|
|
86
|
-
"de": "Fix: elapsedTime deklariert die Rolle \"value.interval\", die einen Wert in Sekunden erfordert, wurde aber ueberall in Minuten berechnet und gespeichert (die unit der State-Definition, die einmalige Migration fuer bestehende Installationen, das periodische Update in main.js sowie der Live-Snapshot, den der Admin-Tab ueber getStatus liest). Alle vier Stellen nutzen jetzt konsistent Sekunden, passend zu timeRemaining/totalDuration. Fix: die devDependency sinon wieder entfernt - sie wird bereits transitiv ueber @iobroker/testing bereitgestellt, die direkte Auflistung war daher ueberfluessig (Review-Checker E0063). Fix: die Fake-Adapter-Timer einer weiteren Testdatei auf das in dieser Suite etablierte native-setTimeout/setInterval-Alias-Muster umgestellt (Review-Checker E5004/E5005).",
|
|
87
|
-
"ru": "Исправление: elapsedTime объявляет роль \"value.interval\", которая требует значение в секундах, но оно везде вычислялось и хранилось в минутах (unit в определении состояния, разовая миграция для существующих установок, периодическое обновление в main.js и живой снимок, который вкладка администратора читает через getStatus). Теперь все четыре места единообразно используют секунды, как timeRemaining/totalDuration. Исправление: devDependency sinon снова удалена - она уже предоставляется транзитивно через @iobroker/testing, поэтому её прямое указание было избыточным (чекер ревью E0063). Исправление: таймеры фиктивного адаптера ещё одного тестового файла переведены на принятый в этом наборе тестов шаблон нативных алиасов setTimeout/setInterval (чекер ревью E5004/E5005).",
|
|
88
|
-
"pt": "Correcao: elapsedTime declara o papel \"value.interval\", que exige o valor em segundos, mas era calculado e armazenado em minutos em todos os lugares (a unit da definicao do estado, a migracao unica para instalacoes existentes, a atualizacao periodica em main.js e o snapshot ao vivo que a aba de administracao le via getStatus). Os quatro agora usam segundos de forma consistente, como timeRemaining/totalDuration. Correcao: a devDependency sinon foi removida novamente - ja e fornecida de forma transitiva via @iobroker/testing, entao listar diretamente era redundante (verificador de revisao E0063). Correcao: os temporizadores do adaptador simulado de outro arquivo de teste foram ajustados para o padrao de alias nativo setTimeout/setInterval ja estabelecido nesta suite (verificador de revisao E5004/E5005).",
|
|
89
|
-
"nl": "Fix: elapsedTime declareert de rol \"value.interval\", die de waarde in seconden vereist, maar werd overal in minuten berekend en opgeslagen (de unit van de state-definitie, de eenmalige migratie voor bestaande installaties, de periodieke update in main.js en de live-snapshot die het admin-tabblad via getStatus leest). Alle vier gebruiken nu consistent seconden, zoals timeRemaining/totalDuration. Fix: de devDependency sinon opnieuw verwijderd - deze wordt al transitief geleverd via @iobroker/testing, dus direct vermelden was overbodig (review-checker E0063). Fix: de nep-adaptertimers van nog een testbestand omgezet naar het in deze suite gevestigde native-setTimeout/setInterval-aliaspatroon (review-checker E5004/E5005).",
|
|
90
|
-
"fr": "Correction : elapsedTime declare le role \"value.interval\", qui exige une valeur en secondes, mais celle-ci etait calculee et stockee en minutes partout (l'unit de la definition d'etat, la migration ponctuelle pour les installations existantes, la mise a jour periodique dans main.js et l'instantane en direct que l'onglet admin lit via getStatus). Les quatre utilisent desormais les secondes de maniere coherente, comme timeRemaining/totalDuration. Correction : la devDependency sinon a ete retiree de nouveau - elle est deja fournie de maniere transitive via @iobroker/testing, la lister directement etait donc redondant (verificateur de revue E0063). Correction : les timers du faux adaptateur d'un autre fichier de test ont ete alignes sur le modele d'alias natif setTimeout/setInterval deja etabli dans cette suite (verificateur de revue E5004/E5005).",
|
|
91
|
-
"it": "Correzione: elapsedTime dichiara il ruolo \"value.interval\", che richiede il valore in secondi, ma veniva calcolato e memorizzato ovunque in minuti (l'unit della definizione dello stato, la migrazione una tantum per le installazioni esistenti, l'aggiornamento periodico in main.js e lo snapshot live letto dalla scheda admin tramite getStatus). Tutti e quattro ora usano in modo coerente i secondi, come timeRemaining/totalDuration. Correzione: la devDependency sinon e stata rimossa di nuovo - e gia fornita in modo transitivo tramite @iobroker/testing, quindi elencarla direttamente era ridondante (checker di revisione E0063). Correzione: i timer del finto adattatore di un altro file di test sono stati allineati allo schema di alias nativo setTimeout/setInterval gia stabilito in questa suite (checker di revisione E5004/E5005).",
|
|
92
|
-
"es": "Correccion: elapsedTime declara el rol \"value.interval\", que exige el valor en segundos, pero se calculaba y almacenaba en minutos en todas partes (la unit de la definicion del estado, la migracion unica para instalaciones existentes, la actualizacion periodica en main.js y la instantanea en vivo que la pestana de administracion lee mediante getStatus). Los cuatro usan ahora segundos de forma consistente, igual que timeRemaining/totalDuration. Correccion: se elimino de nuevo la devDependency sinon - ya se proporciona de forma transitiva via @iobroker/testing, por lo que listarla directamente era redundante (verificador de revision E0063). Correccion: los temporizadores del adaptador simulado de otro archivo de prueba se ajustaron al patron de alias nativo setTimeout/setInterval ya establecido en esta suite (verificador de revision E5004/E5005).",
|
|
93
|
-
"pl": "Poprawka: elapsedTime deklaruje role \"value.interval\", ktora wymaga wartosci w sekundach, ale wszedzie byla obliczana i przechowywana w minutach (unit definicji stanu, jednorazowa migracja dla istniejacych instalacji, okresowa aktualizacja w main.js oraz zrzut na zywo odczytywany przez zakladke admina przez getStatus). Wszystkie cztery miejsca uzywaja teraz spojnie sekund, tak jak timeRemaining/totalDuration. Poprawka: usunieto ponownie devDependency sinon - jest juz dostarczana tranzytywnie przez @iobroker/testing, wiec bezposrednie jej wymienianie bylo zbedne (checker przegladu E0063). Poprawka: timery falszywego adaptera w kolejnym pliku testowym dostosowano do juz ustalonego w tym zestawie wzorca aliasow natywnych setTimeout/setInterval (checker przegladu E5004/E5005).",
|
|
94
|
-
"uk": "Виправлення: elapsedTime оголошує роль \"value.interval\", яка вимагає значення в секундах, але воно всюди обчислювалося і зберігалося в хвилинах (unit у визначенні стану, одноразова міграція для наявних інсталяцій, періодичне оновлення в main.js та живий знімок, який вкладка адміністратора читає через getStatus). Тепер усі чотири місця узгоджено використовують секунди, як timeRemaining/totalDuration. Виправлення: devDependency sinon знову видалено - вона вже надається транзитивно через @iobroker/testing, тому пряме зазначення було зайвим (чекер перегляду E0063). Виправлення: таймери фіктивного адаптера ще одного тестового файлу переведено на вже усталений у цьому наборі шаблон нативних псевдонімів setTimeout/setInterval (чекер перегляду E5004/E5005).",
|
|
95
|
-
"zh-cn": "修复:elapsedTime 声明的角色为「value.interval」,该角色要求数值以秒为单位,但此前在所有位置都以分钟计算和存储(状态定义的 unit、面向现有安装的一次性迁移、main.js 中的周期性更新,以及管理标签页通过 getStatus 读取的实时快照)。现在这四处已统一改为秒,与 timeRemaining/totalDuration 保持一致。修复:再次移除了 sinon 这一开发依赖——它已经通过 @iobroker/testing 间接提供,直接列出属于多余(审查检查器 E0063)。修复:另一个测试文件中伪造适配器的计时器已改为本测试套件中已确立的原生 setTimeout/setInterval 别名写法(审查检查器 E5004/E5005)。"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.laundrylens",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.37",
|
|
4
4
|
"description": "ioBroker adapter that detects washing machine and dryer cycles via smart plug power measurement, matches them against learned programs and estimates remaining time",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "backfisch88",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@iobroker/adapter-core": "^3.4.3"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@iobroker/testing": "^6.
|
|
39
|
+
"@iobroker/testing": "^6.3.0",
|
|
40
40
|
"@iobroker/eslint-config": "^2.3.4",
|
|
41
41
|
"@iobroker/adapter-dev": "^1.5.0",
|
|
42
42
|
"@alcalzone/release-script": "^5.2.1",
|