iobroker.alias-workbench 0.10.0 → 0.12.0
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 +58 -98
- package/admin/css/werkbank.css +88 -0
- package/admin/i18n/de.json +766 -1
- package/admin/i18n/en.json +766 -1
- package/admin/i18n/es.json +766 -1
- package/admin/i18n/fr.json +766 -1
- package/admin/i18n/it.json +766 -1
- package/admin/i18n/nl.json +766 -1
- package/admin/i18n/pl.json +766 -1
- package/admin/i18n/pt.json +766 -1
- package/admin/i18n/ru.json +766 -1
- package/admin/i18n/uk.json +766 -1
- package/admin/i18n/zh-cn.json +766 -1
- package/admin/js/ablage.js +118 -0
- package/admin/js/attrappe.js +749 -0
- package/admin/js/baum.js +52 -5
- package/admin/js/detail.js +64 -3
- package/admin/js/entwurf.js +246 -31
- package/admin/js/ergebnis.js +77 -2
- package/admin/js/katalog.js +235 -40
- package/admin/js/mqtt.js +297 -27
- package/admin/js/musternamen.js +70 -26
- package/admin/js/objekte.js +2 -0
- package/admin/js/quellentausch.js +823 -16
- package/admin/js/schreiben.js +3 -2
- package/admin/js/sprache.js +11 -8
- package/admin/js/vorlagen.js +8 -3
- package/admin/js/vorlagenblatt.js +228 -64
- package/admin/js/werte.js +294 -5
- package/admin/js/zielleiste.js +19 -10
- package/admin/js/zuordnung.js +8 -7
- package/admin/js/zustand.js +32 -0
- package/admin/js/zustandsliste.js +9 -2
- package/admin/tab.html +24 -0
- package/admin/vorlagen/hm-dimmer.json +32 -8
- package/admin/vorlagen/hm-fensterkontakt-hm.json +20 -5
- package/admin/vorlagen/hm-fensterkontakt-hmip.json +28 -7
- package/admin/vorlagen/hm-heizgruppe.json +38 -11
- package/admin/vorlagen/hm-heizkoerper.json +42 -12
- package/admin/vorlagen/hm-rollladen.json +28 -7
- package/admin/vorlagen/hm-schaltaktor-lampe.json +24 -6
- package/admin/vorlagen/hm-schaltaktor-mehrfach.json +32 -8
- package/admin/vorlagen/hm-schaltaktor-steckdose.json +24 -6
- package/admin/vorlagen/hm-temperatur-feuchte.json +8 -2
- package/admin/vorlagen/hm-wandthermostat.json +36 -9
- package/admin/vorlagen/messpunkt.json +40 -10
- package/admin/vorlagen/tasmota-lampe.json +48 -12
- package/admin/vorlagen/tasmota-mehrfach.json +40 -10
- package/admin/vorlagen/tasmota-rgb.json +36 -9
- package/admin/vorlagen/tasmota-steckdose.json +56 -14
- package/io-package.json +41 -28
- package/package.json +3 -3
- package/admin/sprachen/de.json +0 -685
- package/admin/sprachen/en.json +0 -685
package/io-package.json
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "alias-workbench",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.12.0",
|
|
5
5
|
"news": {
|
|
6
|
+
"0.12.0": {
|
|
7
|
+
"de": "**Quelle tauschen**\n* Der Tausch fragt jetzt dieselbe Erkennung wie der Baum: Vorlage oder Detektor am **neuen** Gerät, statt Pfad und Namen der alten Quelle. Von einer Matter-Steckdose zurück auf MQTT fand er vorher 0 von 7 Punkten, jetzt 6.\n* Die Formeln wandern mit — sie gehören zur Quelle, nicht zum Alias. Eine JSON-Formel auf einer blanken Zahl ergab vorher stillschweigend `null`, und vier Messwerte standen leer, ohne dass irgendwo ein Fehler erschien.\n* Einen Punkt, den keine Stufe findet, kann man selbst aus einer Liste benennen. Formel, Einheit und Wertebereich bleiben dann unberührt — mit Hinweis, dass sie zu prüfen sind.\n* Wechselt die Einheit, stehen beide aktuellen Werte nebeneinander, dazu zwei freie Felder für Einheit und Faktor mit Vorschau. Umgerechnet wird nichts von allein: die Beschriftung am Gerät kann falsch sein.\n* Passt die gemerkte Vorlage nicht mehr zum neuen Gerät, sagt der Dialog warum und bietet an, sie zu lösen.\n\n**Baum**\n* Mehrere Zweige lassen sich als **ein** Gerät auswählen — mit Strg-Klick, über das Rechtsklickmenü oder einen Knopf im Kopf. Matter verteilt eine Steckdose auf zwei Endpoints; einzeln ergibt jeder nur ein halbes Gerät.\n* Rechtsklick auf einen Knoten gibt den Teilbaum als Attrappe aus: Objekte und Werte in einer Datei, um anderswo ein Gerät nachzubauen, das man nicht besitzt.\n* Vor dem Ausgeben zeigt die Werkbank jede Zeile, die in die Datei geht, und hebt hervor, was wie eine Kennung aussieht.\n* Eingelesen wird eine Attrappe immer unter `0_userdata.0.wb-attrappe` — nie am Originalpfad.",
|
|
8
|
+
"en": "**Swapping the source**\n* Swapping now asks the same recognition as the tree: template or detector on the **new** device, instead of the path and names of the old source. From a Matter socket back to MQTT it previously found 0 of 7 points, now 6.\n* The formulas come along — they belong to the source, not to the alias. A JSON formula on a plain number silently yielded `null`, leaving four readings empty without any error anywhere.\n* A point no stage can find can be named by hand from a list. Formula, unit and value range are then left untouched — with a note that they need checking.\n* When the unit changes, both current values sit side by side, along with two free fields for unit and factor with a live preview. Nothing is converted on its own: the labelling on the device can be wrong.\n* If the remembered template no longer fits the new device, the dialog says why and offers to drop it.\n\n**Tree**\n* Several branches can be selected as **one** device — by Ctrl-click, from the context menu or with a button in the header. Matter spreads a socket across two endpoints; on its own each yields only half a device.\n* Right-clicking a node exports the subtree as a mock device: objects and values in one file, to rebuild a device you do not own somewhere else.\n* Before exporting, the workbench shows every row that goes into the file and highlights whatever looks like an identifier.\n* A mock device is always imported under `0_userdata.0.wb-attrappe` — never at the original path.",
|
|
9
|
+
"ru": "**Замена источника**\n* Замена теперь обращается к тому же распознаванию, что и дерево: шаблон или детектор на **новом** устройстве вместо пути и имён старого источника. С розетки Matter обратно на MQTT раньше находилось 0 из 7 точек, теперь 6.\n* Формулы переходят вместе с источником — они принадлежат ему, а не алиасу. Формула JSON на простом числе молча давала `null`, и четыре измерения оставались пустыми без единой ошибки.\n* Точку, которую не нашла ни одна ступень, можно указать вручную из списка. Формула, единица и диапазон при этом остаются нетронутыми — с примечанием, что их следует проверить.\n* При смене единицы оба текущих значения стоят рядом, плюс два свободных поля для единицы и множителя с предпросмотром. Ничего не пересчитывается само: подпись на устройстве может быть неверной.\n* Если запомненный шаблон больше не подходит новому устройству, диалог объясняет почему и предлагает его отвязать.\n\n**Дерево**\n* Несколько веток можно выбрать как **одно** устройство — Ctrl-кликом, через контекстное меню или кнопкой в заголовке. Matter распределяет розетку по двум конечным точкам; по отдельности каждая даёт лишь половину устройства.\n* Правый клик по узлу выгружает поддерево как макет устройства: объекты и значения в одном файле, чтобы собрать в другом месте устройство, которого у вас нет.\n* Перед выгрузкой верстак показывает каждую строку, попадающую в файл, и выделяет то, что похоже на идентификатор.\n* Макет всегда загружается в `0_userdata.0.wb-attrappe` — никогда по исходному пути.",
|
|
10
|
+
"pt": "**Trocar a origem**\n* A troca usa agora o mesmo reconhecimento que a árvore: modelo ou detetor no aparelho **novo**, em vez do caminho e dos nomes da origem antiga. De uma tomada Matter de volta para MQTT encontrava antes 0 de 7 pontos, agora 6.\n* As fórmulas acompanham — pertencem à origem, não ao alias. Uma fórmula JSON sobre um número simples devolvia `null` em silêncio, deixando quatro medições vazias sem qualquer erro.\n* Um ponto que nenhuma etapa encontra pode ser indicado à mão a partir de uma lista. Fórmula, unidade e intervalo ficam intactos — com aviso de que devem ser verificados.\n* Se a unidade mudar, os dois valores atuais ficam lado a lado, com dois campos livres para unidade e fator e pré-visualização. Nada é convertido sozinho: o rótulo no aparelho pode estar errado.\n* Se o modelo memorizado já não servir ao novo aparelho, o diálogo diz porquê e oferece removê-lo.\n\n**Árvore**\n* Vários ramos podem ser escolhidos como **um** aparelho — com Ctrl+clique, pelo menu de contexto ou por um botão no cabeçalho. O Matter divide uma tomada por dois endpoints; isolado, cada um dá só meio aparelho.\n* Clicar com o botão direito num nó exporta a sub-árvore como aparelho fictício: objetos e valores num ficheiro, para recriar noutro lado um aparelho que não se tem.\n* Antes de exportar, a bancada mostra cada linha que vai para o ficheiro e realça o que parece um identificador.\n* Um aparelho fictício é sempre importado para `0_userdata.0.wb-attrappe` — nunca para o caminho original.",
|
|
11
|
+
"nl": "**Bron wisselen**\n* Het wisselen gebruikt nu dezelfde herkenning als de boom: sjabloon of detector op het **nieuwe** apparaat, in plaats van pad en namen van de oude bron. Van een Matter-stekker terug naar MQTT vond het eerder 0 van 7 punten, nu 6.\n* De formules gaan mee — ze horen bij de bron, niet bij de alias. Een JSON-formule op een kaal getal gaf stilletjes `null`, en vier metingen bleven leeg zonder enige foutmelding.\n* Een punt dat geen enkele stap vindt, kun je zelf uit een lijst aanwijzen. Formule, eenheid en waardebereik blijven dan onaangeroerd — met de notitie dat ze gecontroleerd moeten worden.\n* Wisselt de eenheid, dan staan beide actuele waarden naast elkaar, plus twee vrije velden voor eenheid en factor met voorbeeld. Er wordt niets vanzelf omgerekend: het label op het apparaat kan fout zijn.\n* Past het onthouden sjabloon niet meer bij het nieuwe apparaat, dan zegt het dialoogvenster waarom en biedt aan het los te laten.\n\n**Boom**\n* Meerdere takken zijn als **één** apparaat te kiezen — met Ctrl-klik, via het contextmenu of met een knop in de kop. Matter verdeelt een stekker over twee endpoints; los geeft elk maar een half apparaat.\n* Rechtsklik op een knoop exporteert de deelboom als nagebootst apparaat: objecten en waarden in één bestand, om elders een apparaat na te bouwen dat je niet hebt.\n* Voor het exporteren toont de werkbank elke regel die in het bestand komt en markeert wat op een identificatie lijkt.\n* Een nagebootst apparaat komt altijd onder `0_userdata.0.wb-attrappe` terecht — nooit op het oorspronkelijke pad.",
|
|
12
|
+
"fr": "**Échanger la source**\n* L’échange interroge désormais la même reconnaissance que l’arbre : modèle ou détecteur sur le **nouvel** appareil, au lieu du chemin et des noms de l’ancienne source. D’une prise Matter vers MQTT, il trouvait auparavant 0 point sur 7, maintenant 6.\n* Les formules suivent — elles appartiennent à la source, pas à l’alias. Une formule JSON sur un nombre brut renvoyait `null` en silence, laissant quatre mesures vides sans la moindre erreur.\n* Un point qu’aucune étape ne trouve peut être désigné à la main dans une liste. Formule, unité et plage restent alors intactes — avec une note indiquant qu’il faut les vérifier.\n* Si l’unité change, les deux valeurs actuelles sont côte à côte, avec deux champs libres pour l’unité et le facteur et un aperçu. Rien n’est converti tout seul : l’étiquette sur l’appareil peut être fausse.\n* Si le modèle mémorisé ne convient plus au nouvel appareil, la boîte de dialogue dit pourquoi et propose de le détacher.\n\n**Arbre**\n* Plusieurs branches peuvent être choisies comme **un seul** appareil — par Ctrl-clic, depuis le menu contextuel ou avec un bouton dans l’en-tête. Matter répartit une prise sur deux points de terminaison ; isolé, chacun ne donne qu’un demi-appareil.\n* Un clic droit sur un nœud exporte le sous-arbre comme appareil fictif : objets et valeurs dans un fichier, pour reconstruire ailleurs un appareil qu’on ne possède pas.\n* Avant l’export, l’établi montre chaque ligne qui ira dans le fichier et met en évidence ce qui ressemble à un identifiant.\n* Un appareil fictif est toujours importé sous `0_userdata.0.wb-attrappe` — jamais au chemin d’origine.",
|
|
13
|
+
"it": "**Scambiare l’origine**\n* Lo scambio interroga ora lo stesso riconoscimento dell’albero: modello o rilevatore sul dispositivo **nuovo**, invece del percorso e dei nomi della vecchia origine. Da una presa Matter di nuovo a MQTT trovava prima 0 punti su 7, ora 6.\n* Le formule seguono — appartengono all’origine, non all’alias. Una formula JSON su un numero semplice restituiva `null` in silenzio, lasciando quattro misure vuote senza alcun errore.\n* Un punto che nessuna fase trova può essere indicato a mano da un elenco. Formula, unità e intervallo restano intatti — con una nota che vanno verificati.\n* Se l’unità cambia, i due valori attuali stanno affiancati, con due campi liberi per unità e fattore e un’anteprima. Nulla viene convertito da solo: l’etichetta sul dispositivo può essere sbagliata.\n* Se il modello memorizzato non si adatta più al nuovo dispositivo, la finestra spiega perché e propone di scollegarlo.\n\n**Albero**\n* Più rami si possono scegliere come **un** dispositivo — con Ctrl-clic, dal menu contestuale o con un pulsante nell’intestazione. Matter distribuisce una presa su due endpoint; da solo ognuno dà solo mezzo dispositivo.\n* Il clic destro su un nodo esporta il sottoalbero come dispositivo fittizio: oggetti e valori in un file, per ricostruire altrove un dispositivo che non si possiede.\n* Prima dell’esportazione il banco mostra ogni riga che finirà nel file ed evidenzia ciò che sembra un identificativo.\n* Un dispositivo fittizio viene sempre importato sotto `0_userdata.0.wb-attrappe` — mai nel percorso originale.",
|
|
14
|
+
"es": "**Cambiar la fuente**\n* El cambio usa ahora el mismo reconocimiento que el árbol: plantilla o detector en el aparato **nuevo**, en lugar de la ruta y los nombres de la fuente antigua. De un enchufe Matter de vuelta a MQTT encontraba antes 0 de 7 puntos, ahora 6.\n* Las fórmulas acompañan — pertenecen a la fuente, no al alias. Una fórmula JSON sobre un número simple devolvía `null` en silencio, dejando cuatro medidas vacías sin error alguno.\n* Un punto que ninguna etapa encuentra se puede indicar a mano desde una lista. Fórmula, unidad y rango quedan intactos — con el aviso de que hay que comprobarlos.\n* Si cambia la unidad, los dos valores actuales aparecen juntos, con dos campos libres para unidad y factor y vista previa. Nada se convierte solo: la etiqueta del aparato puede estar mal.\n* Si la plantilla recordada ya no encaja con el nuevo aparato, el diálogo dice por qué y ofrece soltarla.\n\n**Árbol**\n* Varias ramas se pueden elegir como **un** aparato — con Ctrl+clic, desde el menú contextual o con un botón en la cabecera. Matter reparte un enchufe entre dos endpoints; por separado cada uno da solo medio aparato.\n* El clic derecho en un nodo exporta el subárbol como aparato simulado: objetos y valores en un archivo, para reconstruir en otro sitio un aparato que no se tiene.\n* Antes de exportar, el banco muestra cada fila que irá al archivo y resalta lo que parece un identificador.\n* Un aparato simulado se importa siempre bajo `0_userdata.0.wb-attrappe` — nunca en la ruta original.",
|
|
15
|
+
"pl": "**Zamiana źródła**\n* Zamiana pyta teraz to samo rozpoznanie co drzewo: szablon albo detektor na **nowym** urządzeniu, zamiast ścieżki i nazw starego źródła. Z gniazdka Matter z powrotem na MQTT znajdowała wcześniej 0 z 7 punktów, teraz 6.\n* Formuły wędrują razem — należą do źródła, nie do aliasu. Formuła JSON na zwykłej liczbie po cichu dawała `null`, a cztery pomiary stały puste bez żadnego błędu.\n* Punkt, którego nie znajdzie żadny etap, można wskazać ręcznie z listy. Formuła, jednostka i zakres pozostają wtedy nietknięte — z uwagą, że trzeba je sprawdzić.\n* Gdy zmienia się jednostka, obie bieżące wartości stoją obok siebie, a do tego dwa wolne pola na jednostkę i mnożnik z podglądem. Nic nie przelicza się samo: opis na urządzeniu może być błędny.\n* Jeśli zapamiętany szablon nie pasuje już do nowego urządzenia, okno mówi dlaczego i proponuje go odpiąć.\n\n**Drzewo**\n* Kilka gałęzi można wybrać jako **jedno** urządzenie — Ctrl+klikiem, z menu kontekstowego albo przyciskiem w nagłówku. Matter dzieli gniazdko na dwa endpointy; osobno każdy daje tylko pół urządzenia.\n* Prawy klik na węźle eksportuje poddrzewo jako urządzenie zastępcze: obiekty i wartości w jednym pliku, by gdzie indziej odtworzyć urządzenie, którego się nie ma.\n* Przed eksportem warsztat pokazuje każdy wiersz, który trafi do pliku, i wyróżnia to, co wygląda na identyfikator.\n* Urządzenie zastępcze wczytuje się zawsze pod `0_userdata.0.wb-attrappe` — nigdy w pierwotnej ścieżce.",
|
|
16
|
+
"uk": "**Заміна джерела**\n* Заміна тепер звертається до того самого розпізнавання, що й дерево: шаблон або детектор на **новому** пристрої замість шляху та назв старого джерела. З розетки Matter назад на MQTT раніше знаходилося 0 із 7 точок, тепер 6.\n* Формули переходять разом — вони належать джерелу, а не аліасу. Формула JSON на звичайному числі мовчки давала `null`, і чотири вимірювання стояли порожніми без жодної помилки.\n* Точку, якої не знайшов жоден ступінь, можна вказати вручну зі списку. Формула, одиниця та діапазон при цьому лишаються недоторканими — із приміткою, що їх варто перевірити.\n* Якщо змінюється одиниця, обидва поточні значення стоять поруч, плюс два вільні поля для одиниці та множника з попереднім переглядом. Нічого не перераховується само: підпис на пристрої може бути хибним.\n* Якщо запам’ятований шаблон більше не підходить новому пристрою, діалог пояснює чому і пропонує його відв’язати.\n\n**Дерево**\n* Кілька гілок можна обрати як **один** пристрій — Ctrl-кліком, через контекстне меню або кнопкою в заголовку. Matter розподіляє розетку по двох кінцевих точках; окремо кожна дає лише половину пристрою.\n* Правий клік на вузлі вивантажує піддерево як макет пристрою: об’єкти та значення в одному файлі, щоб в іншому місці відтворити пристрій, якого немає.\n* Перед вивантаженням верстат показує кожен рядок, що потрапить у файл, і виділяє те, що схоже на ідентифікатор.\n* Макет завжди завантажується під `0_userdata.0.wb-attrappe` — ніколи за початковим шляхом.",
|
|
17
|
+
"zh-cn": "**更换数据源**\n* 换源现在使用与树相同的识别方式:在**新**设备上用模板或检测器,而不是旧数据源的路径和名称。把 Matter 插座换回 MQTT,以前 7 个数据点一个都没找到,现在找到 6 个。\n* 公式一并迁移——公式属于数据源,不属于别名。作用在纯数字上的 JSON 公式会悄悄得出 `null`,四个测量值变成空的,而且哪里都不报错。\n* 任何环节都找不到的数据点,可以自己从列表里指定。此时公式、单位和取值范围保持不变——并提示需要核对。\n* 单位发生变化时,两个当前数值并排显示,另有单位和倍率两个自由输入框,边输入边预览。不会自动换算:设备上的标注可能是错的。\n* 如果记住的模板不再适合新设备,对话框会说明原因,并提供解除的选项。\n\n**树**\n* 多个分支可以作为**一个**设备选中——按住 Ctrl 单击、通过右键菜单,或用标题栏里的按钮。Matter 把一个插座拆到两个端点上;单独看,每个都只是半个设备。\n* 右键点击节点可把子树导出为模拟设备:对象和数值存入一个文件,以便在别处重建一台自己没有的设备。\n* 导出前,工作台会显示将写入文件的每一行,并高亮看起来像标识符的内容。\n* 模拟设备始终导入到 `0_userdata.0.wb-attrappe` 之下——绝不写回原路径。"
|
|
18
|
+
},
|
|
19
|
+
"0.11.0": {
|
|
20
|
+
"en": "**Templates**\n* Shipped templates can now be opened row by row, read-only — no working copy is needed to look at their fallback sources, formulas and notes.\n* The \"must be present\" mark now shows whether the row itself is mandatory, not whether its read path appears in the recognition list. Counted across all 16 templates, 15 showed the wrong number.\n* The checkbox in the expanded row no longer silently edits the recognition list.\n* The row overview marks rows that have fallback read paths (\"+3 fallback\").\n* The device type is a search field instead of a 52-entry dropdown; typing finds both names, `socket` and `Steckdose`.\n* Template notes are German and English. The tab shows the admin language, otherwise English.\n* Fixed: the HmIP radiator and heating-group templates read the valve opening from `1.VALVE_STATE`. On HmIP that is a state code 0-8, not a percentage — a thermostat reporting code 4 showed \"4 %\". They now read `1.LEVEL`.\n\n**Value list**\n* The detail row has a value list field (`common.states`). Until now it could only be inherited from a template, although the workbench wrote it all along. Where the source carries one and the draft does not, a button offers to take it over, and \"yields\" shows the text instead of the bare number. Both deviation comparisons include it.\n\n**Identifiers and languages**\n* Object ids no longer contain umlauts: `Küche` in the name field becomes `Kueche`. Rooms and functions keep theirs.\n* One dictionary for the settings page and the tab, in all eleven languages, at `admin/i18n/`. The tab used to keep its own, German and English only.\n\n**MQTT**\n* The card says whether the device is reporting: a red \"offline\" chip on the broker's last will, a yellow \"not reporting\" chip when no telemetry arrived within three telemetry periods, and nothing when there is no information.\n* \"Ask the device\" also fetches the device IP and the telemetry period, and the button appears whenever one of the three is missing.\n* The telemetry period is asked for and remembered — Tasmota does not put it in `tele/STATE`, measured across 36 devices.\n* `Status 5` is requested twice, like `Status 11`: on first contact the MQTT adapter only creates the answer object and discards the value.\n* A Tasmota on the factory FullTopic `%prefix%/%topic%/` is treated as one device instead of three unconnected branches, so the shipped templates apply unchanged.\n* Only the factory prefixes `cmnd`/`stat`/`tele` count as a prefix. A fallback for renamed ones merged unrelated nodes — on a live installation it joined the L1 phases of eight AC sources into one device.\n\n**Admin enumerations**\n* The room and function catalogue works again under Admin 8.0.x: 58 room and 62 function templates, translated and with icons, read from the Admin bundles in both notations. Under Admin 7 nothing changes.\n* The result is kept in the adapter's file area and only fetched again when Admin rewrites its bundles, recognised by the bundle names rather than the version number. Second opening of the tab: 404 instead of 2,255 KB under Admin 8.0.14.\n* The pattern names come from the same store, so it is fetched once instead of twice.\n* Fixed: the \"n sources\" chip counted one device twice when one source sits below another — `Solar.Balkon.Einspeisung` showed \"4 sources\" although the HM600 is a single inverter.\n* Fixed: a German leftover in the English tab — a hand-added row without a name showed \"(ohne Namen)\".\n\n**Repository review**\n* Node.js 22 or newer, the meta object name in English and German, the admin dependency declared, and object ids restricted to unaccented letters, digits, `-` and `_`.",
|
|
21
|
+
"de": "**Vorlagen**\n* Mitgelieferte Vorlagen lassen sich zeilenweise aufklappen, nur zum Lesen — um Ersatzquellen, Formeln und Hinweise zu sehen, braucht es keine eigene Kopie mehr.\n* Die Marke „muss da sein\" zeigt jetzt, ob die Zeile selbst Pflicht ist, nicht ob ihr Lesepfad in der Erkennungsliste steht. Über alle 16 Vorlagen gezählt zeigten 15 die falsche Zahl.\n* Das Kästchen in der aufgeklappten Zeile ändert die Erkennungsliste nicht mehr stillschweigend.\n* Die Zeilenübersicht markiert Zeilen mit Ersatz-Lesepfaden („+3 Ersatz\").\n* Der Gerätetyp ist ein Suchfeld statt einer Liste mit 52 Einträgen; Tippen findet beide Namen, `socket` und `Steckdose`.\n* Vorlagentexte stehen auf Deutsch und Englisch. Der Reiter zeigt die Admin-Sprache, sonst Englisch.\n* Behoben: die HmIP-Vorlagen für Heizkörper und Heizgruppe lasen die Ventilstellung aus `1.VALVE_STATE`. Bei HmIP ist das ein Zustandscode 0-8, kein Prozentwert — ein Thermostat mit Code 4 zeigte „4 %\". Jetzt lesen sie `1.LEVEL`.\n\n**Werteliste**\n* Die Detailzeile hat ein Feld für die Werteliste (`common.states`). Bisher ließ sie sich nur von einer Vorlage erben, obwohl die Werkbank sie immer schon schrieb. Trägt die Quelle eine und der Entwurf nicht, bietet ein Knopf die Übernahme an, und „ergibt\" zeigt den Text statt der nackten Zahl. Beide Abweichungsvergleiche nehmen sie mit.\n\n**Kennungen und Sprachen**\n* Objektkennungen tragen keine Umlaute mehr: `Küche` im Namensfeld wird zu `Kueche`. Räume und Funktionen behalten ihre.\n* Ein Wörterbuch für Einstellungsseite und Reiter, in allen elf Sprachen, unter `admin/i18n/`. Der Reiter hatte bisher sein eigenes, nur deutsch und englisch.\n\n**MQTT**\n* Die Karte sagt, ob das Gerät sich meldet: ein rotes „offline\" beim letzten Willen des Brokers, ein gelbes „meldet sich nicht\", wenn binnen dreier Telemetrietakte nichts kam, und nichts, wenn es keine Auskunft gibt.\n* „Gerät nachfragen\" holt auch die Geräte-IP und den Telemetrietakt, und der Knopf erscheint, sobald eines der drei fehlt.\n* Der Telemetrietakt wird erfragt und behalten — Tasmota legt ihn nicht in `tele/STATE`, an 36 Geräten gemessen.\n* `Status 5` wird zweimal erfragt, wie `Status 11`: beim ersten Kontakt legt der MQTT-Adapter nur das Antwortobjekt an und verwirft den Wert.\n* Eine Tasmota mit dem Werks-FullTopic `%prefix%/%topic%/` gilt als ein Gerät statt als drei unverbundene Zweige, so dass die mitgelieferten Vorlagen unverändert greifen.\n* Nur die Werksnamen `cmnd`/`stat`/`tele` zählen als Prefix. Ein Ersatzweg für umbenannte warf Fremdes zusammen — an einer laufenden Anlage verband er die L1-Phasen von acht Wechselstromquellen zu einem Gerät.\n\n**Aufzählungen vom Admin**\n* Der Raum- und Funktionskatalog kommt unter Admin 8.0.x wieder an: 58 Raum- und 62 Funktionsvorlagen, übersetzt und mit Bild, aus den Bündeln des Admin in beiden Schreibweisen gelesen. Unter Admin 7 ändert sich nichts.\n* Das Ergebnis liegt in der Dateiablage des Adapters und wird erst neu geholt, wenn der Admin seine Bündel neu schreibt — erkannt an den Bündelnamen, nicht an der Versionsnummer. Beim zweiten Öffnen des Reiters: 404 statt 2.255 KB unter Admin 8.0.14.\n* Die Musternamen kommen aus derselben Ablage, sie wird also einmal geholt statt zweimal.\n* Behoben: der Chip „n Quellen\" zählte ein Gerät doppelt, wenn eine Quelle unter einer anderen liegt — `Solar.Balkon.Einspeisung` zeigte „4 Quellen\", obwohl der HM600 ein Wechselrichter ist.\n* Behoben: ein deutscher Rest im englischen Reiter — eine von Hand ergänzte Zeile ohne Namen zeigte „(ohne Namen)\".\n\n**Aufnahmeprüfung**\n* Node.js 22 oder neuer, der Name des Meta-Objekts auf Englisch und Deutsch, die Admin-Abhängigkeit eingetragen, und Objektkennungen auf Buchstaben ohne Zeichen, Ziffern, `-` und `_` beschränkt.",
|
|
22
|
+
"ru": "**Шаблоны**\n* Поставляемые шаблоны теперь открываются построчно, только для чтения — чтобы увидеть резервные источники, формулы и примечания, своя копия больше не нужна.\n* Отметка «должно присутствовать» показывает, обязательна ли сама строка, а не стоит ли её путь чтения в списке распознавания. Из 16 шаблонов 15 показывали неверное число.\n* Флажок в раскрытой строке больше не меняет список распознавания незаметно.\n* В обзоре строк отмечены строки с резервными путями чтения («+3 резерв»).\n* Тип устройства стал полем поиска вместо списка из 52 записей; при вводе находятся оба имени, `socket` и `Steckdose`.\n* Примечания шаблонов на немецком и английском. Вкладка показывает язык админки, иначе английский.\n* Исправлено: шаблоны HmIP для радиатора и отопительной группы читали положение клапана из `1.VALVE_STATE`. У HmIP это код состояния 0-8, а не проценты — термостат с кодом 4 показывал «4 %». Теперь читается `1.LEVEL`.\n\n**Список значений**\n* В строке подробностей есть поле списка значений (`common.states`). До сих пор его можно было только унаследовать от шаблона, хотя верстак всегда его записывал. Если источник его несёт, а черновик нет, кнопка предлагает перенять его, и «даёт» показывает текст вместо голого числа. Оба сравнения отклонений включают его.\n\n**Идентификаторы и языки**\n* Идентификаторы объектов больше не содержат умляутов: `Küche` в поле имени становится `Kueche`. Помещения и функции сохраняют свои.\n* Один словарь для страницы настроек и вкладки, на всех одиннадцати языках, в `admin/i18n/`. У вкладки раньше был свой, только немецкий и английский.\n\n**MQTT**\n* Карточка сообщает, отвечает ли устройство: красный «offline» при последней воле брокера, жёлтый «не отвечает», если за три периода телеметрии ничего не пришло, и ничего, когда сведений нет.\n* «Спросить устройство» получает также IP устройства и период телеметрии, и кнопка появляется, как только отсутствует одно из трёх.\n* Период телеметрии запрашивается и запоминается — Tasmota не кладёт его в `tele/STATE`, измерено на 36 устройствах.\n* `Status 5` запрашивается дважды, как `Status 11`: при первом контакте MQTT-адаптер создаёт только объект ответа и отбрасывает значение.\n* Tasmota с заводским FullTopic `%prefix%/%topic%/` считается одним устройством вместо трёх несвязанных ветвей, поэтому поставляемые шаблоны работают без изменений.\n* Префиксом считаются только заводские `cmnd`/`stat`/`tele`. Резервный путь для переименованных соединял чужое — на действующей установке он объединил фазы L1 восьми источников переменного тока в одно устройство.\n\n**Перечисления из админки**\n* Каталог помещений и функций снова приходит под Admin 8.0.x: 58 шаблонов помещений и 62 функций, переведённые и с иконками, прочитанные из бандлов админки в обеих записях. Под Admin 7 ничего не меняется.\n* Результат лежит в файловом хранилище адаптера и запрашивается заново только тогда, когда админка перезаписывает свои бандлы — распознаётся по именам бандлов, а не по номеру версии. При втором открытии вкладки: 404 вместо 2255 КБ под Admin 8.0.14.\n* Имена шаблонов берутся из того же хранилища, поэтому оно запрашивается один раз вместо двух.\n* Исправлено: чип «n источников» считал одно устройство дважды, когда один источник лежит под другим — `Solar.Balkon.Einspeisung` показывал «4 источника», хотя HM600 — один инвертор.\n* Исправлено: немецкий остаток в английской вкладке — добавленная вручную строка без имени показывала «(ohne Namen)».\n\n**Проверка для репозитория**\n* Node.js 22 или новее, имя мета-объекта на английском и немецком, зависимость от админки объявлена, идентификаторы объектов ограничены буквами без диакритики, цифрами, `-` и `_`.",
|
|
23
|
+
"pt": "**Modelos**\n* Os modelos fornecidos podem agora ser abertos linha a linha, apenas para leitura — para ver fontes alternativas, fórmulas e notas já não é necessária uma cópia própria.\n* A marca «deve estar presente» mostra agora se a própria linha é obrigatória, não se o seu caminho de leitura consta da lista de reconhecimento. Em 16 modelos, 15 mostravam o número errado.\n* A caixa de seleção na linha expandida já não altera a lista de reconhecimento em silêncio.\n* A vista geral das linhas marca as linhas com caminhos de leitura alternativos («+3 alternativos»).\n* O tipo de dispositivo é um campo de pesquisa em vez de uma lista de 52 entradas; ao escrever encontram-se os dois nomes, `socket` e `Steckdose`.\n* As notas dos modelos estão em alemão e inglês. O separador mostra o idioma do admin, caso contrário inglês.\n* Corrigido: os modelos HmIP do radiador e do grupo de aquecimento liam a posição da válvula de `1.VALVE_STATE`. No HmIP isso é um código de estado 0-8, não uma percentagem — um termostato com o código 4 mostrava «4 %». Agora leem `1.LEVEL`.\n\n**Lista de valores**\n* A linha de detalhe tem um campo para a lista de valores (`common.states`). Até agora só podia ser herdada de um modelo, embora a bancada sempre a tenha escrito. Quando a fonte a traz e o rascunho não, um botão oferece assumi-la, e «resulta» mostra o texto em vez do número nu. Ambas as comparações de desvio a incluem.\n\n**Identificadores e idiomas**\n* Os ids de objetos já não contêm tremas: `Küche` no campo do nome torna-se `Kueche`. Áreas e funções mantêm os seus.\n* Um dicionário para a página de configuração e para o separador, em todos os onze idiomas, em `admin/i18n/`. O separador tinha antes o seu próprio, apenas alemão e inglês.\n\n**MQTT**\n* O cartão diz se o dispositivo está a comunicar: um chip vermelho «offline» na última vontade do broker, um chip amarelo «não comunica» quando nada chegou em três períodos de telemetria, e nada quando não há informação.\n* «Perguntar ao dispositivo» obtém também o IP do dispositivo e o período de telemetria, e o botão aparece sempre que falte um dos três.\n* O período de telemetria é pedido e guardado — o Tasmota não o coloca em `tele/STATE`, medido em 36 dispositivos.\n* `Status 5` é pedido duas vezes, como `Status 11`: no primeiro contacto o adaptador MQTT apenas cria o objeto de resposta e descarta o valor.\n* Um Tasmota com o FullTopic de fábrica `%prefix%/%topic%/` conta como um dispositivo em vez de três ramos desligados, pelo que os modelos fornecidos se aplicam sem alterações.\n* Só os prefixos de fábrica `cmnd`/`stat`/`tele` contam como prefixo. Uma alternativa para os renomeados juntava coisas alheias — numa instalação em funcionamento uniu as fases L1 de oito fontes de corrente alterna num só dispositivo.\n\n**Enumerações do admin**\n* O catálogo de áreas e funções volta a chegar no Admin 8.0.x: 58 modelos de área e 62 de função, traduzidos e com ícone, lidos dos bundles do admin em ambas as notações. No Admin 7 nada muda.\n* O resultado fica no armazenamento de ficheiros do adaptador e só é buscado de novo quando o admin reescreve os seus bundles — reconhecido pelos nomes dos bundles, não pelo número da versão. Na segunda abertura do separador: 404 em vez de 2255 KB no Admin 8.0.14.\n* Os nomes dos padrões vêm do mesmo armazenamento, pelo que é buscado uma vez em vez de duas.\n* Corrigido: o chip «n fontes» contava um dispositivo duas vezes quando uma fonte está abaixo de outra — `Solar.Balkon.Einspeisung` mostrava «4 fontes», embora o HM600 seja um único inversor.\n* Corrigido: um resto alemão no separador inglês — uma linha acrescentada à mão sem nome mostrava «(ohne Namen)».\n\n**Revisão para o repositório**\n* Node.js 22 ou mais recente, o nome do objeto meta em inglês e alemão, a dependência do admin declarada, e os ids de objetos limitados a letras sem acento, dígitos, `-` e `_`.",
|
|
24
|
+
"nl": "**Sjablonen**\n* Meegeleverde sjablonen kunnen nu regel voor regel worden opengeklapt, alleen om te lezen — om alternatieve bronnen, formules en opmerkingen te zien is geen eigen kopie meer nodig.\n* Het kenmerk «moet aanwezig zijn» toont nu of de regel zelf verplicht is, niet of het leespad in de herkenningslijst staat. Van de 16 sjablonen toonden er 15 het verkeerde getal.\n* Het vinkje in de uitgeklapte regel wijzigt de herkenningslijst niet meer stilzwijgend.\n* Het regeloverzicht markeert regels met alternatieve leespaden («+3 alternatief»).\n* Het apparaattype is een zoekveld in plaats van een lijst met 52 items; typen vindt beide namen, `socket` en `Steckdose`.\n* Sjabloontoelichtingen staan in het Duits en Engels. Het tabblad toont de admintaal, anders Engels.\n* Opgelost: de HmIP-sjablonen voor radiator en verwarmingsgroep lazen de ventielstand uit `1.VALVE_STATE`. Bij HmIP is dat een statuscode 0-8, geen percentage — een thermostaat met code 4 toonde «4 %». Nu lezen ze `1.LEVEL`.\n\n**Waardelijst**\n* De detailregel heeft een veld voor de waardelijst (`common.states`). Tot nu toe kon die alleen van een sjabloon worden geërfd, hoewel de werkbank hem altijd al schreef. Draagt de bron er een en het ontwerp niet, dan biedt een knop de overname aan, en «levert» toont de tekst in plaats van het kale getal. Beide afwijkingsvergelijkingen nemen hem mee.\n\n**Identificaties en talen**\n* Object-ids bevatten geen umlauten meer: `Küche` in het naamveld wordt `Kueche`. Ruimtes en functies houden de hunne.\n* Eén woordenboek voor de instellingenpagina en het tabblad, in alle elf talen, in `admin/i18n/`. Het tabblad had voorheen zijn eigen, alleen Duits en Engels.\n\n**MQTT**\n* De kaart zegt of het apparaat zich meldt: een rode «offline» bij de laatste wil van de broker, een gele «meldt zich niet» wanneer binnen drie telemetrieperiodes niets aankwam, en niets wanneer er geen informatie is.\n* «Apparaat vragen» haalt ook het IP van het apparaat en de telemetrieperiode op, en de knop verschijnt zodra een van de drie ontbreekt.\n* De telemetrieperiode wordt opgevraagd en bewaard — Tasmota zet die niet in `tele/STATE`, gemeten over 36 apparaten.\n* `Status 5` wordt tweemaal opgevraagd, zoals `Status 11`: bij het eerste contact maakt de MQTT-adapter alleen het antwoordobject aan en verwerpt de waarde.\n* Een Tasmota met het fabrieks-FullTopic `%prefix%/%topic%/` geldt als één apparaat in plaats van drie losse takken, zodat de meegeleverde sjablonen onveranderd werken.\n* Alleen de fabrieksnamen `cmnd`/`stat`/`tele` gelden als prefix. Een uitwijk voor hernoemde namen voegde vreemde knopen samen — op een werkende installatie verbond die de L1-fasen van acht wisselstroombronnen tot één apparaat.\n\n**Opsommingen uit de admin**\n* De catalogus van ruimtes en functies komt onder Admin 8.0.x weer binnen: 58 ruimte- en 62 functiesjablonen, vertaald en met pictogram, uit de bundels van de admin in beide notaties gelezen. Onder Admin 7 verandert niets.\n* Het resultaat ligt in de bestandsopslag van de adapter en wordt pas opnieuw gehaald wanneer de admin zijn bundels herschrijft — herkend aan de bundelnamen, niet aan het versienummer. Bij het tweede openen van het tabblad: 404 in plaats van 2255 KB onder Admin 8.0.14.\n* De patroonnamen komen uit dezelfde opslag, die dus eenmaal wordt gehaald in plaats van tweemaal.\n* Opgelost: de chip «n bronnen» telde één apparaat dubbel wanneer een bron onder een andere ligt — `Solar.Balkon.Einspeisung` toonde «4 bronnen», hoewel de HM600 één omvormer is.\n* Opgelost: een Duits restje in het Engelse tabblad — een met de hand toegevoegde regel zonder naam toonde «(ohne Namen)».\n\n**Toetsing voor het repository**\n* Node.js 22 of nieuwer, de naam van het meta-object in het Engels en Duits, de admin-afhankelijkheid vastgelegd, en object-ids beperkt tot letters zonder teken, cijfers, `-` en `_`.",
|
|
25
|
+
"fr": "**Modèles**\n* Les modèles fournis s'ouvrent maintenant ligne par ligne, en lecture seule — pour voir les sources de repli, les formules et les notes, il n'est plus nécessaire d'en faire une copie.\n* La marque « doit être présent » indique désormais si la ligne elle-même est obligatoire, et non si son chemin de lecture figure dans la liste de reconnaissance. Sur les 16 modèles, 15 affichaient le mauvais nombre.\n* La case à cocher de la ligne dépliée ne modifie plus la liste de reconnaissance en silence.\n* L'aperçu des lignes signale celles qui ont des chemins de lecture de repli (« +3 repli »).\n* Le type d'appareil est un champ de recherche au lieu d'une liste de 52 entrées ; la saisie trouve les deux noms, `socket` et `Steckdose`.\n* Les notes des modèles sont en allemand et en anglais. L'onglet affiche la langue de l'admin, sinon l'anglais.\n* Corrigé : les modèles HmIP du radiateur et du groupe de chauffage lisaient la position de la vanne depuis `1.VALVE_STATE`. Chez HmIP il s'agit d'un code d'état 0-8, pas d'un pourcentage — un thermostat au code 4 affichait « 4 % ». Ils lisent maintenant `1.LEVEL`.\n\n**Liste de valeurs**\n* La ligne de détail possède un champ pour la liste de valeurs (`common.states`). Jusqu'ici elle ne pouvait qu'être héritée d'un modèle, alors que l'atelier l'écrivait depuis toujours. Si la source en porte une et le brouillon non, un bouton propose de la reprendre, et « donne » affiche le texte au lieu du nombre nu. Les deux comparaisons d'écart l'incluent.\n\n**Identifiants et langues**\n* Les identifiants d'objets ne contiennent plus de trémas : `Küche` dans le champ du nom devient `Kueche`. Les pièces et les fonctions gardent les leurs.\n* Un seul dictionnaire pour la page de réglages et pour l'onglet, dans les onze langues, sous `admin/i18n/`. L'onglet avait auparavant le sien, allemand et anglais seulement.\n\n**MQTT**\n* La carte indique si l'appareil se signale : une puce rouge « hors ligne » sur les dernières volontés du broker, une puce jaune « ne se signale pas » quand rien n'est arrivé en trois périodes de télémétrie, et rien quand il n'y a pas d'information.\n* « Interroger l'appareil » récupère aussi l'IP de l'appareil et la période de télémétrie, et le bouton apparaît dès qu'il manque l'un des trois.\n* La période de télémétrie est demandée et conservée — Tasmota ne la met pas dans `tele/STATE`, mesuré sur 36 appareils.\n* `Status 5` est demandé deux fois, comme `Status 11` : au premier contact, l'adaptateur MQTT ne crée que l'objet de réponse et jette la valeur.\n* Un Tasmota avec le FullTopic d'usine `%prefix%/%topic%/` compte comme un seul appareil au lieu de trois branches sans lien, de sorte que les modèles fournis s'appliquent sans changement.\n* Seuls les préfixes d'usine `cmnd`/`stat`/`tele` comptent comme préfixe. Un repli pour ceux renommés réunissait des nœuds étrangers — sur une installation en service, il a joint les phases L1 de huit sources de courant alternatif en un seul appareil.\n\n**Énumérations de l'admin**\n* Le catalogue des pièces et des fonctions arrive de nouveau sous Admin 8.0.x : 58 modèles de pièce et 62 de fonction, traduits et avec icône, lus dans les bundles de l'admin dans les deux notations. Sous Admin 7, rien ne change.\n* Le résultat reste dans l'espace de fichiers de l'adaptateur et n'est récupéré de nouveau que lorsque l'admin réécrit ses bundles — reconnu aux noms des bundles, non au numéro de version. À la deuxième ouverture de l'onglet : 404 au lieu de 2 255 Ko sous Admin 8.0.14.\n* Les noms des motifs viennent du même espace, qui est donc récupéré une fois au lieu de deux.\n* Corrigé : la puce « n sources » comptait un appareil deux fois lorsqu'une source se trouve sous une autre — `Solar.Balkon.Einspeisung` affichait « 4 sources » alors que le HM600 est un seul onduleur.\n* Corrigé : un reste d'allemand dans l'onglet anglais — une ligne ajoutée à la main sans nom affichait « (ohne Namen) ».\n\n**Examen pour le dépôt**\n* Node.js 22 ou plus récent, le nom de l'objet méta en anglais et en allemand, la dépendance à l'admin déclarée, et les identifiants d'objets limités aux lettres sans signe, aux chiffres, `-` et `_`.",
|
|
26
|
+
"it": "**Modelli**\n* I modelli forniti si aprono ora riga per riga, in sola lettura — per vedere fonti di riserva, formule e note non serve più una copia propria.\n* Il segno «deve essere presente» mostra ora se la riga stessa è obbligatoria, non se il suo percorso di lettura compare nell'elenco di riconoscimento. Su 16 modelli, 15 mostravano il numero sbagliato.\n* La casella nella riga espansa non modifica più l'elenco di riconoscimento in silenzio.\n* La panoramica delle righe segnala quelle con percorsi di lettura di riserva («+3 riserva»).\n* Il tipo di dispositivo è un campo di ricerca invece di un elenco di 52 voci; digitando si trovano entrambi i nomi, `socket` e `Steckdose`.\n* Le note dei modelli sono in tedesco e inglese. La scheda mostra la lingua dell'admin, altrimenti l'inglese.\n* Corretto: i modelli HmIP del radiatore e del gruppo di riscaldamento leggevano la posizione della valvola da `1.VALVE_STATE`. In HmIP è un codice di stato 0-8, non una percentuale — un termostato con codice 4 mostrava «4 %». Ora leggono `1.LEVEL`.\n\n**Elenco di valori**\n* La riga di dettaglio ha un campo per l'elenco di valori (`common.states`). Finora si poteva solo ereditare da un modello, pur essendo sempre stato scritto dal banco di lavoro. Se la fonte ne porta uno e la bozza no, un pulsante ne propone l'assunzione, e «dà» mostra il testo invece del numero nudo. Entrambi i confronti di scostamento lo includono.\n\n**Identificativi e lingue**\n* Gli id degli oggetti non contengono più dieresi: `Küche` nel campo del nome diventa `Kueche`. Stanze e funzioni mantengono le proprie.\n* Un unico dizionario per la pagina delle impostazioni e per la scheda, in tutte e undici le lingue, in `admin/i18n/`. La scheda ne aveva prima uno proprio, solo tedesco e inglese.\n\n**MQTT**\n* La scheda dice se il dispositivo si segnala: un chip rosso «offline» sull'ultima volontà del broker, un chip giallo «non si segnala» quando entro tre periodi di telemetria non è arrivato nulla, e nulla quando non c'è informazione.\n* «Chiedi al dispositivo» recupera anche l'IP del dispositivo e il periodo di telemetria, e il pulsante compare appena manca uno dei tre.\n* Il periodo di telemetria viene richiesto e conservato — Tasmota non lo mette in `tele/STATE`, misurato su 36 dispositivi.\n* `Status 5` viene richiesto due volte, come `Status 11`: al primo contatto l'adattatore MQTT crea solo l'oggetto di risposta e scarta il valore.\n* Un Tasmota con il FullTopic di fabbrica `%prefix%/%topic%/` conta come un solo dispositivo invece di tre rami slegati, così i modelli forniti si applicano senza modifiche.\n* Solo i prefissi di fabbrica `cmnd`/`stat`/`tele` contano come prefisso. Un ripiego per quelli rinominati uniava nodi estranei — su un impianto in funzione ha unito le fasi L1 di otto sorgenti in corrente alternata in un unico dispositivo.\n\n**Enumerazioni dell'admin**\n* Il catalogo di stanze e funzioni arriva di nuovo con Admin 8.0.x: 58 modelli di stanza e 62 di funzione, tradotti e con icona, letti dai bundle dell'admin in entrambe le notazioni. Con Admin 7 non cambia nulla.\n* Il risultato resta nell'area file dell'adattatore e viene recuperato di nuovo solo quando l'admin riscrive i suoi bundle — riconosciuto dai nomi dei bundle, non dal numero di versione. Alla seconda apertura della scheda: 404 invece di 2255 KB con Admin 8.0.14.\n* I nomi dei modelli provengono dalla stessa area, che viene quindi recuperata una volta invece di due.\n* Corretto: il chip «n fonti» contava un dispositivo due volte quando una fonte si trova sotto un'altra — `Solar.Balkon.Einspeisung` mostrava «4 fonti» pur essendo l'HM600 un unico inverter.\n* Corretto: un residuo tedesco nella scheda inglese — una riga aggiunta a mano senza nome mostrava «(ohne Namen)».\n\n**Esame per il repository**\n* Node.js 22 o più recente, il nome dell'oggetto meta in inglese e tedesco, la dipendenza dall'admin dichiarata, e gli id degli oggetti limitati a lettere senza segno, cifre, `-` e `_`.",
|
|
27
|
+
"es": "**Plantillas**\n* Las plantillas suministradas se abren ahora línea por línea, solo para leer — para ver fuentes de reserva, fórmulas y notas ya no hace falta una copia propia.\n* La marca «debe estar presente» muestra ahora si la línea misma es obligatoria, no si su ruta de lectura figura en la lista de reconocimiento. De las 16 plantillas, 15 mostraban el número equivocado.\n* La casilla de la línea desplegada ya no modifica la lista de reconocimiento en silencio.\n* El resumen de líneas marca las que tienen rutas de lectura de reserva («+3 reserva»).\n* El tipo de dispositivo es un campo de búsqueda en lugar de una lista de 52 entradas; al escribir se encuentran ambos nombres, `socket` y `Steckdose`.\n* Las notas de las plantillas están en alemán e inglés. La pestaña muestra el idioma del admin, si no, inglés.\n* Corregido: las plantillas HmIP del radiador y del grupo de calefacción leían la posición de la válvula de `1.VALVE_STATE`. En HmIP eso es un código de estado 0-8, no un porcentaje — un termostato con el código 4 mostraba «4 %». Ahora leen `1.LEVEL`.\n\n**Lista de valores**\n* La línea de detalle tiene un campo para la lista de valores (`common.states`). Hasta ahora solo podía heredarse de una plantilla, aunque el banco de trabajo la escribía desde siempre. Si la fuente lleva una y el borrador no, un botón ofrece asumirla, y «resulta» muestra el texto en vez del número desnudo. Ambas comparaciones de desviación la incluyen.\n\n**Identificadores e idiomas**\n* Los id de objetos ya no contienen diéresis: `Küche` en el campo del nombre pasa a `Kueche`. Las habitaciones y funciones conservan las suyas.\n* Un único diccionario para la página de ajustes y para la pestaña, en los once idiomas, en `admin/i18n/`. La pestaña tenía antes el suyo, solo alemán e inglés.\n\n**MQTT**\n* La tarjeta dice si el dispositivo se comunica: un chip rojo «offline» con la última voluntad del broker, un chip amarillo «no se comunica» cuando en tres periodos de telemetría no llegó nada, y nada cuando no hay información.\n* «Preguntar al dispositivo» obtiene también la IP del dispositivo y el periodo de telemetría, y el botón aparece en cuanto falta uno de los tres.\n* El periodo de telemetría se pregunta y se guarda — Tasmota no lo pone en `tele/STATE`, medido en 36 dispositivos.\n* `Status 5` se pide dos veces, como `Status 11`: en el primer contacto el adaptador MQTT solo crea el objeto de respuesta y descarta el valor.\n* Un Tasmota con el FullTopic de fábrica `%prefix%/%topic%/` cuenta como un solo dispositivo en vez de tres ramas sueltas, de modo que las plantillas suministradas se aplican sin cambios.\n* Solo los prefijos de fábrica `cmnd`/`stat`/`tele` cuentan como prefijo. Un recurso para los renombrados juntaba nodos ajenos — en una instalación en marcha unió las fases L1 de ocho fuentes de corriente alterna en un solo dispositivo.\n\n**Enumeraciones del admin**\n* El catálogo de habitaciones y funciones vuelve a llegar con Admin 8.0.x: 58 plantillas de habitación y 62 de función, traducidas y con icono, leídas de los bundles del admin en ambas notaciones. Con Admin 7 no cambia nada.\n* El resultado queda en el área de archivos del adaptador y solo se vuelve a buscar cuando el admin reescribe sus bundles — reconocido por los nombres de los bundles, no por el número de versión. En la segunda apertura de la pestaña: 404 en lugar de 2255 KB con Admin 8.0.14.\n* Los nombres de los patrones vienen de la misma área, que por tanto se busca una vez en lugar de dos.\n* Corregido: el chip «n fuentes» contaba un dispositivo dos veces cuando una fuente está debajo de otra — `Solar.Balkon.Einspeisung` mostraba «4 fuentes» aunque el HM600 es un solo inversor.\n* Corregido: un resto alemán en la pestaña inglesa — una línea añadida a mano sin nombre mostraba «(ohne Namen)».\n\n**Revisión para el repositorio**\n* Node.js 22 o posterior, el nombre del objeto meta en inglés y alemán, la dependencia del admin declarada, y los id de objetos limitados a letras sin signo, dígitos, `-` y `_`.",
|
|
28
|
+
"pl": "**Szablony**\n* Dostarczone szablony można teraz rozwijać wiersz po wierszu, tylko do czytania — aby zobaczyć źródła zastępcze, formuły i uwagi, własna kopia nie jest już potrzebna.\n* Znacznik „musi być obecne\" pokazuje teraz, czy sam wiersz jest obowiązkowy, a nie czy jego ścieżka odczytu znajduje się na liście rozpoznawania. Z 16 szablonów 15 pokazywało złą liczbę.\n* Pole wyboru w rozwiniętym wierszu nie zmienia już listy rozpoznawania po cichu.\n* Przegląd wierszy oznacza wiersze z zastępczymi ścieżkami odczytu („+3 zastępcze\").\n* Typ urządzenia to pole wyszukiwania zamiast listy 52 pozycji; wpisywanie znajduje obie nazwy, `socket` i `Steckdose`.\n* Uwagi szablonów są po niemiecku i angielsku. Zakładka pokazuje język admina, w przeciwnym razie angielski.\n* Naprawiono: szablony HmIP grzejnika i grupy grzewczej czytały położenie zaworu z `1.VALVE_STATE`. W HmIP to kod stanu 0-8, a nie procent — termostat z kodem 4 pokazywał „4 %\". Teraz czytają `1.LEVEL`.\n\n**Lista wartości**\n* Wiersz szczegółów ma pole listy wartości (`common.states`). Dotąd można ją było tylko odziedziczyć po szablonie, chociaż warsztat zapisywał ją od zawsze. Gdy źródło ją nosi, a projekt nie, przycisk proponuje przejęcie, a „daje\" pokazuje tekst zamiast samej liczby. Oba porównania odchyleń ją uwzględniają.\n\n**Identyfikatory i języki**\n* Identyfikatory obiektów nie zawierają już umlautów: `Küche` w polu nazwy staje się `Kueche`. Pomieszczenia i funkcje zachowują swoje.\n* Jeden słownik dla strony ustawień i dla zakładki, we wszystkich jedenastu językach, w `admin/i18n/`. Zakładka miała wcześniej własny, tylko niemiecki i angielski.\n\n**MQTT**\n* Karta mówi, czy urządzenie się zgłasza: czerwony chip „offline\" przy ostatniej woli brokera, żółty „nie zgłasza się\", gdy w trzech okresach telemetrii nic nie przyszło, i nic, gdy nie ma informacji.\n* „Zapytaj urządzenie\" pobiera też IP urządzenia i okres telemetrii, a przycisk pojawia się, gdy brakuje jednego z trzech.\n* Okres telemetrii jest pytany i zapamiętywany — Tasmota nie umieszcza go w `tele/STATE`, zmierzone na 36 urządzeniach.\n* `Status 5` jest pytany dwa razy, jak `Status 11`: przy pierwszym kontakcie adapter MQTT tworzy tylko obiekt odpowiedzi i odrzuca wartość.\n* Tasmota z fabrycznym FullTopic `%prefix%/%topic%/` liczy się jako jedno urządzenie zamiast trzech niepowiązanych gałęzi, więc dostarczone szablony działają bez zmian.\n* Tylko fabryczne prefiksy `cmnd`/`stat`/`tele` liczą się jako prefiks. Rozwiązanie zastępcze dla zmienionych nazw łączyło obce węzły — na działającej instalacji połączyło fazy L1 ośmiu źródeł prądu przemiennego w jedno urządzenie.\n\n**Wyliczenia z admina**\n* Katalog pomieszczeń i funkcji znów dochodzi pod Admin 8.0.x: 58 szablonów pomieszczeń i 62 funkcji, przetłumaczonych i z ikoną, czytanych z bundli admina w obu zapisach. Pod Admin 7 nic się nie zmienia.\n* Wynik leży w obszarze plików adaptera i jest pobierany ponownie tylko wtedy, gdy admin przepisuje swoje bundle — rozpoznawane po nazwach bundli, nie po numerze wersji. Przy drugim otwarciu zakładki: 404 zamiast 2255 KB pod Admin 8.0.14.\n* Nazwy wzorców pochodzą z tego samego obszaru, więc jest on pobierany raz zamiast dwa razy.\n* Naprawiono: chip „n źródeł\" liczył jedno urządzenie podwójnie, gdy jedno źródło leży pod drugim — `Solar.Balkon.Einspeisung` pokazywał „4 źródła\", choć HM600 to jeden falownik.\n* Naprawiono: niemiecka pozostałość w angielskiej zakładce — dodany ręcznie wiersz bez nazwy pokazywał „(ohne Namen)\".\n\n**Sprawdzenie do repozytorium**\n* Node.js 22 lub nowszy, nazwa obiektu meta po angielsku i niemiecku, zadeklarowana zależność od admina, a identyfikatory obiektów ograniczone do liter bez znaków, cyfr, `-` i `_`.",
|
|
29
|
+
"uk": "**Шаблони**\n* Постачені шаблони тепер відкриваються рядок за рядком, лише для читання — щоб побачити резервні джерела, формули та примітки, власна копія вже не потрібна.\n* Позначка «мусить бути присутнім» показує тепер, чи обов'язковий сам рядок, а не чи стоїть його шлях читання у списку розпізнавання. З 16 шаблонів 15 показували хибне число.\n* Галочка у розгорнутому рядку більше не змінює список розпізнавання непомітно.\n* Огляд рядків позначає рядки з резервними шляхами читання («+3 резерв»).\n* Тип пристрою — це поле пошуку замість списку з 52 записів; набір знаходить обидві назви, `socket` і `Steckdose`.\n* Примітки шаблонів є німецькою та англійською. Вкладка показує мову адмінки, інакше англійську.\n* Виправлено: шаблони HmIP радіатора та групи опалення читали положення клапана з `1.VALVE_STATE`. У HmIP це код стану 0-8, а не відсоток — термостат із кодом 4 показував «4 %». Тепер читається `1.LEVEL`.\n\n**Список значень**\n* Рядок подробиць має поле списку значень (`common.states`). Досі його можна було лише успадкувати від шаблону, хоча верстак завжди його записував. Якщо джерело його несе, а чернетка ні, кнопка пропонує перейняти, а «дає» показує текст замість голого числа. Обидва порівняння відхилень його враховують.\n\n**Ідентифікатори та мови**\n* Ідентифікатори об'єктів більше не містять умляутів: `Küche` в полі назви стає `Kueche`. Приміщення та функції зберігають свої.\n* Один словник для сторінки налаштувань і для вкладки, усіма одинадцятьма мовами, у `admin/i18n/`. Раніше вкладка мала власний, лише німецький та англійський.\n\n**MQTT**\n* Картка каже, чи пристрій озивається: червоний чип «offline» за останньою волею брокера, жовтий «не озивається», коли за три періоди телеметрії нічого не надійшло, і нічого, коли немає відомостей.\n* «Запитати пристрій» отримує також IP пристрою та період телеметрії, і кнопка з'являється, щойно бракує одного з трьох.\n* Період телеметрії запитується та запам'ятовується — Tasmota не кладе його в `tele/STATE`, виміряно на 36 пристроях.\n* `Status 5` запитується двічі, як `Status 11`: під час першого контакту адаптер MQTT створює лише об'єкт відповіді та відкидає значення.\n* Tasmota із заводським FullTopic `%prefix%/%topic%/` рахується як один пристрій замість трьох непов'язаних гілок, тож постачені шаблони працюють без змін.\n* Префіксом вважаються лише заводські `cmnd`/`stat`/`tele`. Резервний шлях для перейменованих поєднував чужі вузли — на робочій установці він з'єднав фази L1 восьми джерел змінного струму в один пристрій.\n\n**Перелічення з адмінки**\n* Каталог приміщень і функцій знову надходить під Admin 8.0.x: 58 шаблонів приміщень і 62 функцій, перекладених і з піктограмою, прочитаних із бандлів адмінки в обох записах. Під Admin 7 нічого не змінюється.\n* Результат лежить у файловому сховищі адаптера й запитується знову лише тоді, коли адмінка перезаписує свої бандли — розпізнається за назвами бандлів, а не за номером версії. При другому відкриванні вкладки: 404 замість 2255 КБ під Admin 8.0.14.\n* Назви шаблонів походять із того самого сховища, тож його запитують один раз замість двох.\n* Виправлено: чип «n джерел» рахував один пристрій двічі, коли одне джерело лежить під іншим — `Solar.Balkon.Einspeisung` показував «4 джерела», хоча HM600 — один інвертор.\n* Виправлено: німецький залишок в англійській вкладці — доданий вручну рядок без назви показував «(ohne Namen)».\n\n**Перевірка для репозиторію**\n* Node.js 22 або новіший, назва мета-об'єкта англійською та німецькою, оголошена залежність від адмінки, а ідентифікатори об'єктів обмежені літерами без знаків, цифрами, `-` та `_`.",
|
|
30
|
+
"zh-cn": "**模板**\n* 随附模板现在可以逐行展开,仅供阅读——查看备用来源、公式和注释不再需要先做副本。\n* 「必须存在」标记现在显示该行本身是否必填,而不是其读取路径是否出现在识别列表中。16 个模板中有 15 个此前显示了错误的数字。\n* 展开行中的复选框不再悄悄修改识别列表。\n* 行概览标出带有备用读取路径的行(「+3 备用」)。\n* 设备类型改为搜索字段,不再是 52 项的下拉列表;输入可同时找到 `socket` 和 `Steckdose` 两个名称。\n* 模板注释提供德语和英语。标签页显示管理界面语言,否则显示英语。\n* 已修复:HmIP 散热器和采暖组模板从 `1.VALVE_STATE` 读取阀门开度。在 HmIP 中这是 0-8 的状态码,而不是百分比——报告代码 4 的恒温器显示「4 %」。现在读取 `1.LEVEL`。\n\n**取值列表**\n* 详情行新增取值列表字段(`common.states`)。此前只能从模板继承,尽管工作台一直在写入它。若来源带有而草稿没有,按钮会提供接管,并且「得出」显示文本而不是裸数字。两个偏差比较都包含它。\n\n**标识符与语言**\n* 对象 ID 不再包含变音符号:名称字段中的 `Küche` 变为 `Kueche`。房间和功能保留其原名。\n* 设置页面与标签页共用一个词典,涵盖全部十一种语言,位于 `admin/i18n/`。标签页此前有自己的词典,仅德语和英语。\n\n**MQTT**\n* 卡片说明设备是否在上报:代理发布遗嘱时显示红色「offline」,三个遥测周期内未收到数据时显示黄色「未上报」,没有信息时则不显示。\n* 「询问设备」现在也获取设备 IP 和遥测周期,三者缺一即出现按钮。\n* 遥测周期会主动询问并记住——Tasmota 不会把它放进 `tele/STATE`,在 36 台设备上实测确认。\n* `Status 5` 像 `Status 11` 一样询问两次:首次接触时 MQTT 适配器只创建应答对象并丢弃数值。\n* 使用出厂 FullTopic `%prefix%/%topic%/` 的 Tasmota 现在算作一台设备,而不是三条互不相连的分支,随附模板因此无需改动即可套用。\n* 只有出厂前缀 `cmnd`/`stat`/`tele` 算作前缀。为改名前缀设置的备用方案会把无关节点合并——在一套运行中的系统上,它把八个交流电源的 L1 相位合成了一台设备。\n\n**来自管理界面的枚举**\n* 房间和功能目录在 Admin 8.0.x 下重新可用:58 个房间模板和 62 个功能模板,已翻译并带图标,以两种写法从管理界面的 bundle 中读取。在 Admin 7 下没有变化。\n* 结果保存在适配器的文件区,只有管理界面重写其 bundle 时才会重新获取——依据 bundle 名称识别,而不是版本号。第二次打开标签页时:在 Admin 8.0.14 下为 404 KB,而非 2255 KB。\n* 模式名称来自同一存储,因此只获取一次而不是两次。\n* 已修复:当一个来源位于另一个来源之下时,「n 个来源」标签会把一台设备数两次——`Solar.Balkon.Einspeisung` 显示「4 个来源」,而 HM600 只是一台逆变器。\n* 已修复:英文标签页中的德语残留——手动添加的无名称行显示「(ohne Namen)」。\n\n**仓库审核**\n* Node.js 22 或更新版本,元对象名称提供英语和德语,已声明管理界面依赖,并将对象 ID 限制为不带变音符号的字母、数字、`-` 和 `_`。"
|
|
31
|
+
},
|
|
6
32
|
"0.10.0": {
|
|
7
33
|
"en": "**Detection and patterns**\n* Picking another pattern re-ticks the rows and leaves them alone while the new pattern does not apply yet.\n* Guessing gives every datapoint one slot only, and a contradicting unit rules a slot out — a start delay in seconds does not become an actual temperature.\n* The pattern field names what is really missing, groups included (“SET / SET_HEATING / SET_COOLING”). The legend says why a pattern does not apply and offers the matching button.\n* The hint “might fit better” only suggests patterns that apply afterwards.\n* For “Information” the field reads “✓ 24 points” instead of “24/31 filled” — that pattern takes any number of points.\n* The message “No remaining datapoint fits” no longer sits above the orange legend and names the rows decided by hand.\n\n**Free slots**\n* A slot can be created once, and every slot is listed once.\n* “Suggest free slots” now sits in the blue box next to the pattern; the button for the whole device is called “Load all datapoints of the device” and sits above the list.\n\n**The detail row of a point**\n* New: “Name” and “Slot in the pattern” — the slot fills in role, type, unit and value list.\n* “reads from” and “writes to” are wider, the formula is called “read formula” and sits below.\n* If the slot already belongs to another row, the workbench says so instead of blaming the type. A pure measured value no longer gets a write target.\n\n**Templates**\n* “Apply template values” no longer deletes a value list.\n* A template without a name can be imported and then named.\n* A skipped row gives the reason: point missing, no JSON, or field missing.\n* “Update template” leaves the detection as it was; an exported template can be imported again.\n\n**Source swap**\n* If one point fails, the note on the alias stays on the old source — the swap can be finished afterwards.\n* The greyed-out button gives its own reason.\n* The hint “one level up” only appears where it helps.\n\n**Deleting and moving**\n* The delete dialog only warns about channels that really lie below the alias.\n* After a move the source knows its alias again right away; “to the source →” no longer jumps somewhere vague.\n\n**Room and function**\n* A room is found in the middle of a device name too (“Heizung_Badezimmer INT0000001”).\n* Picking with the keyboard works like the mouse, and the offer “file it under … as well?” no longer opens a row of its own.\n* If rooms and functions cannot be loaded, the fields say so themselves.\n\n**Tasmota and MQTT**\n* The IP is found on older firmware too (`tele.INFO2` in both forms).\n* The card no longer claims a switched-off point sends; “allow sending” switches the link back on as well.\n* Creating several send points at once yields the same objects as creating them one by one — `POWER`, `Fade` and `LedTable` as `mixed`, so the write formula takes effect.\n* A HomeMatic actuator without a template no longer drags maintenance points along.\n* “Ask” for SetOption59 only counts what arrived after sending; if no answer comes, “No answer …” is shown and the button stays for a re-check.\n* The “MQTT device” card opens again on devices without a row from `tele/…`.\n\n**Display**\n* The number on a tree node counts what lies below it.\n* A node without an object of its own is marked “VIR”, the device card sorts like the tree.\n* A button reads along and stays a button; the misleading “never changes” badge is gone.\n* JSON fields with a dot in their name can be selected.",
|
|
8
34
|
"de": "**Erkennung und Muster**\n* Ein anderes Muster zu wählen setzt die Haken neu und lässt sie stehen, solange das neue Muster noch nicht greift.\n* Beim Vorschlagen bekommt jeder Datenpunkt nur einen Platz, und eine widersprechende Einheit schließt einen Platz aus — eine Startverzögerung in Sekunden wird keine Ist-Temperatur.\n* Das Musterfeld nennt, was wirklich fehlt, auch als Gruppe („SET / SET_HEATING / SET_COOLING“). Die Legende sagt, warum ein Muster nicht greift, und bietet den passenden Knopf gleich an.\n* Der Hinweis „… würde evtl. besser passen“ empfiehlt nur noch Muster, die danach auch greifen.\n* Bei „Information“ steht „✓ 24 Punkte“ statt „24/31 belegt“ — dieses Muster nimmt beliebig viele Punkte auf.\n* Die Meldung „Kein übriger Datenpunkt passt“ steht nicht mehr über der orangen Legende und nennt die von Hand entschiedenen Zeilen beim Namen.\n\n**Freie Plätze**\n* Ein Platz lässt sich nur einmal anlegen, und jeder Platz steht nur einmal in der Liste.\n* „Freie Plätze vorschlagen“ steht jetzt im blauen Kasten bei der Erkennung; der Knopf für den ganzen Bestand heißt „Alle Datenpunkte des Geräts laden“ und steht über der Liste.\n\n**Die Detailzeile eines Punkts**\n* Neu: „Name“ und „Platz im Muster“ — der Platz trägt Rolle, Typ, Einheit und Werteliste ein.\n* „liest aus“ und „schreibt auf“ sind breiter, die Formel heißt „Leseformel“ und steht darunter.\n* Gehört der Platz schon einer anderen Zeile, sagt die Werkbank das, statt einen falschen Typ anzumahnen. Ein reiner Messwert bekommt kein Schreibziel mehr.\n\n**Vorlagen**\n* „Werte der Vorlage übernehmen“ löscht keine Werteliste mehr.\n* Eine Vorlage ohne Namen lässt sich einlesen und dann auch benennen.\n* Eine weggelassene Zeile nennt den Grund: Punkt fehlt, kein JSON, oder Feld fehlt.\n* „Vorlage aktualisieren“ lässt die Erkennung, wie sie war; eine ausgegebene Vorlage lässt sich wieder einlesen.\n\n**Quellentausch**\n* Scheitert ein Punkt, bleibt der Vermerk am Alias auf der alten Quelle — der Tausch lässt sich danach zu Ende bringen.\n* Der ausgegraute Knopf nennt seinen eigenen Grund.\n* Der Hinweis „eine Ebene höher“ erscheint nur noch, wo er hilft.\n\n**Löschen und Verlegen**\n* Der Löschdialog warnt nur vor Kanälen, die wirklich unter dem Alias liegen.\n* Nach dem Verlegen kennt die Quelle ihren Alias sofort wieder; „zur Quelle →“ springt nicht mehr ins Ungefähre.\n\n**Raum und Funktion**\n* Ein Raum wird auch mitten im Gerätenamen gefunden („Heizung_Badezimmer INT0000001“).\n* Mit der Tastatur gewählt wirkt wie mit der Maus, und das Angebot „auch unter … ablegen?“ braucht keine eigene Zeile mehr.\n* Fehlen Räume und Funktionen, sagen das die Felder selbst.\n\n**Tasmota und MQTT**\n* Die IP wird auch bei älterer Firmware gefunden (`tele.INFO2` in beiden Formen).\n* Die Karte behauptet nicht mehr, ein abgeschalteter Punkt sende; „senden erlauben“ schaltet die Verknüpfung gleich mit ein.\n* Mehrere Sendepunkte auf einmal anzulegen ergibt dieselben Objekte wie einzeln — `POWER`, `Fade` und `LedTable` als `mixed`, damit die Schreibformel wirkt.\n* Ein HomeMatic-Aktor ohne Vorlage bringt keinen Wartungskram mehr mit.\n* „nachfragen“ bei SetOption59 wertet nur, was nach dem Senden kam; bleibt die Antwort aus, steht „Keine Antwort …“ da, und der Knopf bleibt zum Nachprüfen stehen.\n* Die Karte „MQTT-Gerät“ klappt auch an Geräten ohne Zeile aus `tele/…` wieder auf.\n\n**Anzeige**\n* Die Zahl am Baumknoten zählt, was darunter liegt.\n* Ein Knoten ohne eigenes Objekt trägt „VIR“, die Geräte-Karte sortiert wie der Baum.\n* Ein Taster liest mit und bleibt ein Taster; die irreführende Marke „ändert sich nie“ ist weg.\n* JSON-Felder mit einem Punkt im Namen lassen sich auswählen.",
|
|
@@ -67,32 +93,6 @@
|
|
|
67
93
|
"pl": "* Źródła kompilacji przeniesiono z `src/` do `src-admin/`. ioBroker rezerwuje tę nazwę dla źródeł interfejsu, które są pakowane do `admin/` i nigdy nie trafiają do użytkownika, a kontrola adapterów pomija takie katalogi przy szukaniu brakujących zależności. Dlatego `@iobroker/type-detector` pozostaje w `devDependencies`, gdzie jest jego miejsce: esbuild wbudowuje go w `admin/detector.js` podczas kompilacji, a w czasie działania nikt go nie ładuje. Użytkownik otrzymuje gotowy plik 71 KB, a nie pakiet 548 KB (W5042)\n* Strona ustawień pobiera teraz tłumaczenia z `admin/i18n/` — słownika, który ioBroker czyta sam (`\"i18n\": true`) i z którym radzi sobie Weblate. Jedenaście języków, które i tak już nosiła, przeniosło się tam bez zmian; ani jedno słowo nie zostało przetłumaczone na nowo. Zakładka zachowuje własny słownik, teraz w `admin/sprachen/`: 588 kluczy po niemiecku i angielsku, a nieznany język wraca do angielskiego. Dwa słowniki, dwa zadania — to nazwę `i18n` sprawdza kontrola adapterów i oczekuje tam wszystkich jedenastu języków (W5603, W5614, W5015)\n* Wpisy changelogu do 0.9.7 i 0.9.8 są teraz kompletne we wszystkich jedenastu językach. Dziewięć z nich niosło tylko skrót — angielski tekst do 0.9.7 liczy 3000 znaków z pięcioma nagłówkami i 22 punktami, rosyjski miał 480 bez żadnej struktury. Test porównuje teraz każdy wpis z angielskim oryginałem pod względem długości, nagłówków i liczby punktów (W1145)\n* Dwa dodatki po stronie programistycznej, w samym adapterze niewidoczne: `.vscode/settings.json` podpina schematy JSON, dzięki czemu błędy w `io-package.json` czy `jsonConfig.json` rzucają się w oczy już podczas pisania, a nie dopiero w kontroli adapterów (S4036). A aktualizacja GitHub Actions nie chodzi już w trybie `monthly` — to pyta pierwszego dnia miesiąca, w tej samej chwili co wszyscy inni; harmonogram cron rozkłada obciążenie i zachowuje miesięczny rytm (S8906)\n* Typ danych podąża teraz za rolą. Miejsce we wzorcu określa nie tylko rolę, ale i typ, a oba znajdują się w tym samym rekordzie type-detectora — wybierając rolę, od razu dostaje się pasujący typ. Tam, gdzie miejsce dopuszcza kilka typów, nie ustawia się nic; tam, gdzie nie określa żadnego, każdy wybór pozostaje słuszny. Jeśli typ mimo to nie pasuje do miejsca, warsztat to mówi, zamiast milczeć: w wierszu („oczekuje number”), jako ostrzeżenie pod nim i w polu wzorca, które teraz podaje powód — „✕ CONSUMPTION: typ mixed zamiast number” — zamiast suchego „nie pasuje”. Wcześniej punkt z właściwą rolą i niewłaściwym typem bezgłośnie wypadał ze wzorca, a całe urządzenie rozpoznawano jako coś mniejszego Gdy rola trafia w kilka miejsc różniących się typem — kierunek jazdy rolety zajmuje DIRECTION jako wartość logiczną, a DIRECTION_ENUM jako liczbę — warsztat wybiera miejsce, którego typ pasuje, a obie postacie uchodzą za właściwe.\n* Przy zapisie szablonu nie giną już cele zapisu. Każdy element wykonawczy, który prowadzi własny stan, zapisuje do tego samego punktu, który odczytuje — roleta, ściemniacz i termostat używają do tego 1.LEVEL. Właśnie w tym przypadku zapis wyrzucał ścieżkę zapisu, a zbudowany z niego alias pokazywał położenie, ale nie dawał się już przestawić. Wiersze, które tylko zapisują — STOP rolety — wypadały całkowicie. Przy Tasmocie nigdy tego nie było widać, bo tam czyta się tele.STATE, a zapisuje cmnd.POWER. Typ urządzenia w arkuszu szablonu cierpiał na drugie przeoczenie: trzy wzorce nazywają się inaczej niż ich typ (blinds/blind, mediaPlayer/media, levelSlider/slider), przez co roleta twierdziła, że nie ma żadnego typu",
|
|
68
94
|
"uk": "* Вихідні файли збірки перенесено з `src/` до `src-admin/`. ioBroker закріпив цю назву за джерелами інтерфейсу, які збираються в `admin/` і ніколи не потрапляють до користувача, а перевірка адаптерів пропускає такі каталоги під час пошуку відсутніх залежностей. Тому `@iobroker/type-detector` залишається в `devDependencies` — саме там йому й місце: esbuild вбудовує його в `admin/detector.js` під час збірки, а під час роботи його ніхто не завантажує. Користувач отримує готовий файл на 71 КБ, а не пакет на 548 КБ (W5042)\n* Сторінка налаштувань бере переклади з `admin/i18n/` — словника, який ioBroker читає сам (`\"i18n\": true`) і з яким уміє працювати Weblate. Одинадцять мов, які вона й так несла, переїхали туди без змін: жодного слова не перекладали заново. Вкладка зберігає власний словник, тепер у `admin/sprachen/`: 588 ключів німецькою та англійською, а невідома мова відкочується до англійської. Два словники — два завдання: саме назву `i18n` перевіряє контролер адаптерів і чекає там усі одинадцять мов (W5603, W5614, W5015)\n* Записи переліку змін до 0.9.7 і 0.9.8 тепер повні всіма одинадцятьма мовами. Дев'ять із них несли лише стислий виклад: англійський текст до 0.9.7 має 3 000 знаків із п'ятьма заголовками та 22 пунктами, російський мав 480 без жодної структури. Новий тест звіряє кожен запис з англійським оригіналом за довжиною, заголовками та кількістю пунктів (W1145)\n* Два доповнення для розробки, у самому адаптері невидимі: `.vscode/settings.json` під'єднує схеми JSON, тож помилки в `io-package.json` чи `jsonConfig.json` впадають в око вже під час набору, а не лише в перевірці адаптерів (S4036). А оновлення GitHub Actions більше не йде за `monthly` — це запит першого числа місяця, тієї самої миті, що й у всіх інших; розклад cron розподіляє навантаження й зберігає місячний ритм (S8906)\n* Тип даних тепер слідує за роллю. Місце в шаблоні задає не лише роль, а й тип, і обидва лежать в одному записі type-detector — обираючи роль, ви одразу отримуєте потрібний тип. Там, де місце допускає кілька типів, не встановлюється нічого; там, де воно не задає жодного, будь-який вибір лишається правильним. Якщо тип усе ж не пасує до місця, верстак про це каже, а не мовчить: у рядку («очікується number»), попередженням під ним і в полі шаблону, яке тепер називає причину — «✕ CONSUMPTION: тип mixed замість number» — замість голого «не пасує». Раніше точка з правильною роллю та хибним типом безшумно випадала з шаблону, і весь пристрій розпізнавався як щось менше Якщо роль влучає в кілька місць, що різняться типом, — напрям руху ролети лежить на DIRECTION як логічне значення і на DIRECTION_ENUM як число, — верстак обирає те місце, чий тип пасує, і обидві форми вважаються правильними.\n* Під час збереження шаблону більше не втрачаються цілі запису. Кожен виконавчий пристрій, що веде власний стан, пише в ту саму точку, яку читає: ролета, димер і термостат використовують для цього 1.LEVEL. Саме в цьому випадку збереження відкидало шлях запису, і побудований аліас показував положення, але вже не піддавався керуванню. Рядки, що лише пишуть, — STOP ролети — випадали повністю. На Tasmota це ніколи не проявлялося, бо там читається tele.STATE, а пишеться cmnd.POWER. Тип пристрою в аркуші шаблону страждав від другого недогляду: три шаблони звуться інакше, ніж їхній тип (blinds/blind, mediaPlayer/media, levelSlider/slider), і ролета через це стверджувала, що типу в неї немає зовсім",
|
|
69
95
|
"zh-cn": "* 构建源码已从 `src/` 移至 `src-admin/`。ioBroker 用这个名称专指那些会被打包进 `admin/`、从不随适配器分发给用户的前端源码,适配器检查器在查找缺失依赖时会跳过这类目录。因此 `@iobroker/type-detector` 保留在 `devDependencies` 中,这正是它应在的位置:esbuild 在构建时将它内联进 `admin/detector.js`,运行时没有任何代码会加载它。用户拿到的是 71 KB 的成品文件,而不是 548 KB 的整个软件包(W5042)\n* 设置页面现在从 `admin/i18n/` 取用翻译——这是 ioBroker 自己读取的词典(`\"i18n\": true`),Weblate 也能处理它。页面原本就携带的十一种语言原封不动地迁了过去,没有一个词是重新翻译的。选项卡保留自己的词典,现位于 `admin/sprachen/`:588 个键,德语和英语,遇到未知语言则回退为英语。两个词典,两种职责——适配器检查器查看的正是 `i18n` 这个名字,并期望其中有全部十一种语言(W5603、W5614、W5015)\n* 0.9.7 和 0.9.8 的更新日志条目现已在全部十一种语言中补全。其中九种此前只有一段简短摘要——0.9.7 的英文正文有 3000 个字符、五个小标题和 22 个条目,俄文版却只有 480 个字符,毫无层次。现在有一项测试会按长度、小标题和条目数量,将每条记录与英文原文逐一比对(W1145)\n* 两项面向开发的补充,在适配器本身完全看不到:`.vscode/settings.json` 接入了 JSON 模式,`io-package.json` 或 `jsonConfig.json` 中的错误在输入时就会显现,而不必等到适配器检查器(S4036)。另外 GitHub Actions 的更新不再使用 `monthly`——那会在每月一号、和所有人同一时刻发起询问;改用 cron 计划既分散了负载,又保持每月一次的节奏(S8906)\n* 数据类型现在跟随角色。模式中的位置不仅规定角色,也规定类型,两者就存放在 type-detector 的同一条记录里——因此选定角色时会一并设好对应的类型。位置允许多种类型时不作设定;位置未规定类型时,任何选择都仍然正确。若类型终究与位置不符,工作台会明说而不再沉默:在该行显示「需要 number」,其下给出警告,模式字段也会说明原因——「✕ CONSUMPTION:类型 mixed 而非 number」——而不再只是干巴巴的「不匹配」。此前,角色正确而类型错误的数据点会悄无声息地掉出模式,整台设备也随之被识别为更次要的类型当同一角色命中多个类型不同的位置时——卷帘的行进方向在 DIRECTION 上是布尔值,在 DIRECTION_ENUM 上是数字——工作台会挑选类型相符的那个位置,两种形式都算正确。\n* 保存模板时不再丢失写入目标。凡是自己维护状态的执行器,写入的正是它读取的那个点——卷帘、调光器和恒温器都用 1.LEVEL。恰恰在这种情况下,保存会把写入路径丢掉,由此生成的别名只能显示位置、再也无法调节。只写不读的行——卷帘的 STOP——则整行消失。在 Tasmota 上从未暴露,因为那里读的是 tele.STATE、写的是 cmnd.POWER。模板页中的设备类型还有第二处疏忽:有三个模式的名称与其类型不同(blinds/blind、mediaPlayer/media、levelSlider/slider),因此卷帘一直声称自己没有任何类型"
|
|
70
|
-
},
|
|
71
|
-
"0.9.8": {
|
|
72
|
-
"en": "* The changelog only lists versions that actually exist on npm. The entries 0.9.1 to 0.9.6 were local intermediate steps and were never published; their content is now summarised under 0.9.7. Found by the repochecker (E2004, E1032)\n* The README no longer describes how to add the adapter by hand — in the official repository it is picked from the adapter list (E6013)\n* `dependabot.yml` gets a seven-day cooldown for npm packages: what appears today is proposed a week later. If a compromised release is pulled within that time, it never arrives here (E8915). And `@types/node` stays on its major version — the types must match the Node release the adapter runs on (E8917)",
|
|
73
|
-
"de": "* Der Changelog nennt nur noch Fassungen, die es auf npm wirklich gibt. Die Einträge 0.9.1 bis 0.9.6 waren lokale Zwischenstände und wurden nie veröffentlicht; ihr Inhalt steht jetzt zusammengefasst bei 0.9.7. Gefunden vom Repochecker (E2004, E1032)\n* Die README beschreibt nicht mehr, wie man den Adapter von Hand hinzufügt — im offiziellen Repository wählt man ihn aus der Adapterliste (E6013)\n* `dependabot.yml` bekommt eine Abkühlzeit von sieben Tagen für npm-Pakete: Was heute erscheint, wird erst in einer Woche vorgeschlagen. Wird eine kompromittierte Fassung in dieser Zeit zurückgezogen, kommt sie hier nie an (E8915). Und `@types/node` bleibt bei seiner Hauptversion — die Typen müssen zu der Node-Fassung passen, unter der der Adapter läuft (E8917)",
|
|
74
|
-
"ru": "* В списке изменений теперь указаны только те версии, которые действительно существуют на npm. Записи с 0.9.1 по 0.9.6 были локальными промежуточными шагами и никогда не публиковались; их содержимое собрано в 0.9.7. Найдено проверкой репозитория (E2004, E1032)\n* README больше не описывает, как добавить адаптер вручную — в официальном репозитории его выбирают из списка адаптеров (E6013)\n* `dependabot.yml` получает семидневную выдержку для npm-пакетов: то, что вышло сегодня, будет предложено лишь через неделю. Если скомпрометированный выпуск за это время отзовут, сюда он так и не попадёт (E8915). А `@types/node` остаётся на своей мажорной версии — типы должны соответствовать той версии Node, под которой работает адаптер (E8917)",
|
|
75
|
-
"pt": "* O changelog lista apenas versões que existem mesmo no npm. As entradas 0.9.1 a 0.9.6 foram passos intermédios locais e nunca foram publicadas; o seu conteúdo está agora resumido em 0.9.7. Detetado pelo verificador do repositório (E2004, E1032)\n* O README já não descreve como adicionar o adaptador à mão — no repositório oficial escolhe-se a partir da lista de adaptadores (E6013)\n* O `dependabot.yml` passa a ter sete dias de arrefecimento para pacotes npm: o que aparece hoje só é proposto uma semana depois. Se uma versão comprometida for retirada nesse período, nunca chega aqui (E8915). E o `@types/node` mantém-se na sua versão maior — os tipos têm de corresponder à versão do Node em que o adaptador corre (E8917)",
|
|
76
|
-
"nl": "* De changelog noemt alleen nog versies die echt op npm staan. De vermeldingen 0.9.1 tot 0.9.6 waren lokale tussenstappen en zijn nooit gepubliceerd; hun inhoud staat nu samengevat bij 0.9.7. Gevonden door de repochecker (E2004, E1032)\n* De README beschrijft niet langer hoe je de adapter met de hand toevoegt — in het officiële repository kies je hem uit de adapterlijst (E6013)\n* `dependabot.yml` krijgt een afkoeltijd van zeven dagen voor npm-pakketten: wat vandaag verschijnt, wordt pas een week later voorgesteld. Wordt een gecompromitteerde versie binnen die tijd teruggetrokken, dan komt zij hier nooit aan (E8915). En `@types/node` blijft op zijn hoofdversie — de typen moeten passen bij de Node-versie waaronder de adapter draait (E8917)",
|
|
77
|
-
"fr": "* Le changelog ne cite plus que des versions qui existent vraiment sur npm. Les entrées 0.9.1 à 0.9.6 étaient des étapes intermédiaires locales et n'ont jamais été publiées ; leur contenu est désormais résumé sous 0.9.7. Détecté par le vérificateur de dépôt (E2004, E1032)\n* Le README n'explique plus comment ajouter l'adaptateur à la main — dans le dépôt officiel, on le choisit dans la liste des adaptateurs (E6013)\n* `dependabot.yml` reçoit un délai de refroidissement de sept jours pour les paquets npm : ce qui paraît aujourd'hui n'est proposé qu'une semaine plus tard. Si une version compromise est retirée pendant ce délai, elle n'arrive jamais ici (E8915). Et `@types/node` reste sur sa version majeure — les types doivent correspondre à la version de Node sous laquelle tourne l'adaptateur (E8917)",
|
|
78
|
-
"it": "* Il changelog elenca solo versioni che esistono davvero su npm. Le voci da 0.9.1 a 0.9.6 erano passi intermedi locali e non sono mai state pubblicate; il loro contenuto è ora riassunto sotto 0.9.7. Rilevato dal controllo del repository (E2004, E1032)\n* Il README non descrive più come aggiungere l'adapter a mano — nel repository ufficiale lo si sceglie dall'elenco degli adapter (E6013)\n* `dependabot.yml` riceve sette giorni di raffreddamento per i pacchetti npm: ciò che esce oggi viene proposto solo una settimana dopo. Se una versione compromessa viene ritirata in quel periodo, qui non arriva mai (E8915). E `@types/node` resta alla sua versione maggiore: i tipi devono corrispondere alla versione di Node su cui gira l'adapter (E8917)",
|
|
79
|
-
"es": "* El changelog solo menciona versiones que existen realmente en npm. Las entradas 0.9.1 a 0.9.6 fueron pasos intermedios locales y nunca se publicaron; su contenido está ahora resumido en 0.9.7. Detectado por el verificador del repositorio (E2004, E1032)\n* El README ya no describe cómo añadir el adaptador a mano: en el repositorio oficial se elige de la lista de adaptadores (E6013)\n* `dependabot.yml` recibe un enfriamiento de siete días para los paquetes npm: lo que aparece hoy se propone una semana después. Si una versión comprometida se retira en ese plazo, aquí no llega nunca (E8915). Y `@types/node` se queda en su versión mayor: los tipos deben coincidir con la versión de Node bajo la que corre el adaptador (E8917)",
|
|
80
|
-
"pl": "* Changelog wymienia już tylko wersje, które naprawdę istnieją w npm. Wpisy od 0.9.1 do 0.9.6 były lokalnymi krokami pośrednimi i nigdy nie zostały opublikowane; ich treść jest teraz zebrana w 0.9.7. Wykryte przez kontrolę repozytorium (E2004, E1032)\n* README nie opisuje już, jak dodać adapter ręcznie — w oficjalnym repozytorium wybiera się go z listy adapterów (E6013)\n* `dependabot.yml` otrzymuje siedmiodniowy okres wystudzenia dla pakietów npm: to, co ukazuje się dziś, zostanie zaproponowane dopiero za tydzień. Jeśli w tym czasie wycofa się naruszone wydanie, nigdy tu nie trafi (E8915). A `@types/node` pozostaje przy swojej wersji głównej — typy muszą pasować do wersji Node, pod którą działa adapter (E8917)",
|
|
81
|
-
"uk": "* У переліку змін тепер лишилися тільки версії, які справді є на npm. Записи від 0.9.1 до 0.9.6 були локальними проміжними кроками й ніколи не публікувалися; їхній зміст зібрано в 0.9.7. Виявлено перевіркою репозиторію (E2004, E1032)\n* README більше не описує, як додати адаптер вручну — в офіційному репозиторії його обирають зі списку адаптерів (E6013)\n* `dependabot.yml` отримує семиденну витримку для npm-пакетів: те, що виходить сьогодні, пропонується лише через тиждень. Якщо скомпрометований випуск за цей час відкличуть, сюди він так і не потрапить (E8915). А `@types/node` лишається на своїй мажорній версії — типи мають відповідати тій версії Node, під якою працює адаптер (E8917)",
|
|
82
|
-
"zh-cn": "* 更新日志现在只列出 npm 上确实存在的版本。0.9.1 至 0.9.6 这些条目只是本地的中间步骤,从未发布过;它们的内容已归入 0.9.7。由仓库检查器发现(E2004、E1032)\n* README 不再说明如何手动添加适配器——在官方仓库中,直接从适配器列表里选取即可(E6013)\n* `dependabot.yml` 为 npm 包设置了七天冷却期:今天发布的版本,一周后才会被提议采用。若某个被植入后门的版本在这段时间内被撤回,它就永远不会到达这里(E8915)。另外 `@types/node` 保持在当前主版本——类型必须与适配器实际运行的 Node 版本相匹配(E8917)"
|
|
83
|
-
},
|
|
84
|
-
"0.9.7": {
|
|
85
|
-
"en": "Seven packages from a code review — 45 fixes between 0.9.0 and this release. The intermediate steps 0.9.1 to 0.9.6 stayed local and were never published; they are summarised here.\n\n**Data loss and failure paths**\n* An enumeration error now stops a move. Previously the old alias was deleted anyway — and afterwards it was gone while the new one sat in no enumeration at all\n* A partial failure while deleting no longer turns the retry button into a prop: only what really went is dropped\n* Orphaned points are deleted on the second attempt too\n* A load error on the enumerations leaves the previous state standing instead of emptying it — and while they are unknown, nothing is written. Before, one hiccup could drop an alias out of every room and function\n* A load error on your own templates is reported instead of swallowed; otherwise the next save would have replaced an existing template with version 1\n\n**Connection and display**\n* The tab works again after a dropped connection. The admin's WebSocket fires `connect` once per page lifetime and `reconnect` afterwards — nobody listened, and neither object nor state changes arrived\n* Template mode no longer rebuilds itself every second, and where the selection goes, its subscriptions go too\n* “Differs from the alias” now also shows in alias mode — where it says the most\n* Switching sources quickly no longer fetches the wrong value; the source jump list never appears twice\n* Object names follow the admin language; the function match looks at every language and no longer creates a duplicate\n\n**Templates**\n* A broken name hint no longer takes down the whole source view — including the nested form `(a+)+` where the expression engine stalls\n* The formula of a fallback source survives updating, an unknown device type no longer throws\n* Importing checks more than id and states; a hand-typed id no longer replaces someone else's template\n* The `%N%` placeholder only hits the output number now, not every trailing digit\n* The blind gets its STOP: a button press has no state to read, and that case was unknown to template application — **not a single** blind alias ever had one\n* ON_TIME finds its slot (four templates carried the wrong role)\n\n**MQTT and Tasmota**\n* An empty `custom` entry no longer takes anything down, `enabled: false` counts as switched off\n* No more false “cannot publish” for ioBroker.mqtt and sonoff — there, publishing capability is simply unknown, not denied\n* “Answer received” only for a real answer; `Vcc` and `Command` are not commands\n\n**Speed, measured on a production system with 24,786 objects**\n* The search box no longer blocks: **236 ms per keystroke → 0**, the whole tree **263 → 67 ms**\n* A redraw no longer costs half a second — binary search instead of linear scans: drawing a source **15.8 → 1.6 ms**, an alias with 50 points **51.9 → 14.2 ms**\n* A read formula can no longer freeze the tab for good\n* What is subscribed is what is read — before, a single alias could subscribe to half an adapter",
|
|
86
|
-
"de": "Sieben Pakete aus einem Code-Review — 45 behobene Fehler zwischen 0.9.0 und dieser Fassung. Die Zwischenstände 0.9.1 bis 0.9.6 waren lokal und wurden nie veröffentlicht; hier stehen sie zusammengefasst.\n\n**Datenverlust und Fehlerpfade**\n* Ein Fehler an den Aufzählungen hält das Verlegen jetzt auf. Vorher lief das Löschen des alten Alias trotzdem — danach war er weg und der neue stand in keiner Aufzählung mehr\n* Ein Teilfehler beim Löschen macht den Wiederholen-Knopf nicht mehr zur Attrappe: Es wird nur ausgetragen, was wirklich weg ist\n* Verwaiste Punkte werden auch beim zweiten Anlauf gelöscht\n* Ein Ladefehler bei den Aufzählungen lässt den alten Stand stehen, statt ihn zu leeren — und solange sie unbekannt sind, wird nichts geschrieben. Vorher konnte ein Aussetzer beim Laden dazu führen, dass ein Alias aus allen Räumen und Funktionen fiel\n* Ein Ladefehler bei den eigenen Vorlagen wird gemeldet statt verschwiegen; vorher hätte das nächste Speichern eine vorhandene Vorlage mit Version 1 ersetzt\n\n**Verbindung und Anzeige**\n* Nach einem Verbindungsabbruch arbeitet der Reiter wieder. Der WebSocket des Admin feuert `connect` nur einmal pro Seitenleben, danach `reconnect` — das hörte niemand, und es kamen weder Objekt- noch Wertänderungen an\n* Der Vorlagenmodus baut sich nicht mehr im Sekundentakt neu auf, und wo die Auswahl fällt, fallen auch ihre Abos\n* „Weicht vom Alias ab“ erscheint jetzt auch im Aliasmodus — dort, wo die Marke am meisten sagt\n* Ein schneller Quellenwechsel holt keinen fremden Wert mehr, die Quellen-Sprungliste steht nie doppelt\n* Objektnamen folgen der Adminsprache; der Funktionsabgleich sieht alle Sprachfassungen an und legt keinen Doppelgänger mehr an\n\n**Vorlagen**\n* Ein kaputter Namenshinweis legt nicht mehr die ganze Quellenansicht lahm — samt der verschachtelten Form `(a+)+`, an der die Ausdrucks-Maschine hängenbleibt\n* Die Formel einer Ersatzquelle überlebt das Aktualisieren, ein unbekannter Gerätetyp wirft nicht mehr\n* Das Einlesen prüft mehr als Kennung und Zustände; eine von Hand eingetippte Kennung ersetzt keine fremde Vorlage mehr\n* Der Platzhalter `%N%` trifft nur noch die Ausgangsnummer, nicht jede Endziffer\n* Der Rollladen bekommt seinen STOP: Ein Tastendruck hat keinen Zustand zum Lesen, und diesen Fall kannte das Anwenden nicht — **kein einziger** Rollladen-Alias hatte je einen\n* ON_TIME findet seinen Platz (vier Vorlagen trugen die falsche Rolle)\n\n**MQTT und Tasmota**\n* Ein leerer `custom`-Eintrag legt nichts mehr lahm, `enabled: false` gilt als abgeschaltet\n* Kein falsches „kann nicht senden“ mehr bei ioBroker.mqtt und sonoff — dort ist die Sendefähigkeit schlicht unbekannt, nicht verneint\n* „Antwort erhalten“ nur noch bei einer echten Antwort; `Vcc` und `Command` sind keine Befehle\n\n**Tempo, am Produktivsystem mit 24.786 Objekten gemessen**\n* Das Suchfeld blockiert nicht mehr: **236 ms je Anschlag → 0**, der ganze Baum **263 → 67 ms**\n* Ein Neuzeichnen kostet keine halbe Sekunde mehr — Binärsuche statt linearer Scans: Zeichnen einer Quelle **15,8 → 1,6 ms**, eines Alias mit 50 Punkten **51,9 → 14,2 ms**\n* Eine Leseformel kann den Reiter nicht mehr dauerhaft einfrieren\n* Abonniert wird, was gelesen wird — vorher konnte ein einziger Alias den halben Adapter abonnieren",
|
|
87
|
-
"ru": "Семь пакетов из код-ревью — 45 исправлений между 0.9.0 и этим выпуском. Промежуточные шаги с 0.9.1 по 0.9.6 остались локальными и никогда не публиковались; здесь они собраны вместе.\n\n**Потеря данных и пути отказа**\n* Ошибка в перечислениях теперь останавливает перенос. Раньше старый алиас всё равно удалялся — и после этого его не было, а новый не значился ни в одном перечислении\n* Частичный сбой при удалении больше не превращает кнопку повтора в бутафорию: снимается только то, что действительно исчезло\n* Осиротевшие точки удаляются и со второй попытки\n* Ошибка загрузки перечислений оставляет прежнее состояние на месте, вместо того чтобы его очистить, — и пока они неизвестны, ничего не записывается. Раньше одна заминка могла выбросить алиас из всех комнат и функций\n* Об ошибке загрузки собственных шаблонов теперь сообщается, а не умалчивается; иначе следующее сохранение заменило бы существующий шаблон версией 1\n\n**Соединение и отображение**\n* После обрыва связи вкладка снова работает. WebSocket админки выдаёт `connect` один раз за время жизни страницы, а дальше только `reconnect` — этого никто не слушал, и не приходили ни изменения объектов, ни изменения значений\n* Режим шаблонов больше не перестраивается ежесекундно, и вместе с выбором переезжают его подписки\n* «Отличается от алиаса» показывается теперь и в режиме алиаса — там, где эта пометка говорит больше всего\n* Быстрое переключение источников больше не подтягивает чужое значение; список перехода по источникам не появляется дважды\n* Имена объектов следуют языку админки; сопоставление функций смотрит на все языковые варианты и больше не создаёт двойников\n\n**Шаблоны**\n* Сломанная подсказка имени больше не выводит из строя весь вид источника — включая вложенную форму `(a+)+`, на которой застревает движок выражений\n* Формула запасного источника переживает обновление, неизвестный тип устройства больше не приводит к ошибке\n* Импорт проверяет не только идентификатор и состояния; идентификатор, введённый вручную, больше не заменяет чужой шаблон\n* Подстановка `%N%` попадает только в номер выхода, а не в любую последнюю цифру\n* Рольставня получает свой STOP: у нажатия кнопки нет состояния для чтения, и этот случай применение шаблонов не знало — **ни у одного** алиаса рольставни его никогда не было\n* ON_TIME находит своё место (четыре шаблона несли неверную роль)\n\n**MQTT и Tasmota**\n* Пустая запись `custom` больше ничего не ломает, `enabled: false` считается выключением\n* Больше никаких ложных «не может отправлять» для ioBroker.mqtt и sonoff — там способность к отправке просто неизвестна, а не отрицается\n* «Ответ получен» — только при настоящем ответе; `Vcc` и `Command` не являются командами\n\n**Скорость, измерено на боевой системе с 24 786 объектами**\n* Поле поиска больше не блокирует: **236 мс на нажатие → 0**, всё дерево **263 → 67 мс**\n* Перерисовка больше не стоит полсекунды — бинарный поиск вместо линейных проходов: отрисовка источника **15,8 → 1,6 мс**, алиаса с 50 точками **51,9 → 14,2 мс**\n* Формула чтения больше не может намертво подвесить вкладку\n* Подписываемся на то, что читаем, — раньше один-единственный алиас мог подписаться на половину адаптера",
|
|
88
|
-
"pt": "Sete pacotes de uma revisão de código — 45 correções entre 0.9.0 e esta versão. Os passos intermédios 0.9.1 a 0.9.6 ficaram locais e nunca foram publicados; estão aqui resumidos.\n\n**Perda de dados e caminhos de falha**\n* Um erro nas enumerações passa a interromper a mudança. Antes o alias antigo era apagado à mesma — e depois tinha desaparecido, enquanto o novo não constava de enumeração nenhuma\n* Uma falha parcial ao apagar já não transforma o botão de repetir num adereço: só é retirado o que realmente desapareceu\n* Os pontos órfãos são apagados também à segunda tentativa\n* Um erro ao carregar as enumerações deixa o estado anterior de pé em vez de o esvaziar — e enquanto forem desconhecidas, nada é escrito. Antes, um soluço podia deixar um alias fora de todas as divisões e funções\n* Um erro ao carregar os modelos próprios é comunicado em vez de silenciado; caso contrário, a gravação seguinte teria substituído um modelo existente pela versão 1\n\n**Ligação e apresentação**\n* O separador volta a funcionar depois de uma quebra de ligação. O WebSocket do Admin dispara `connect` uma única vez por vida da página e `reconnect` depois disso — ninguém escutava, e não chegavam alterações nem de objetos nem de valores\n* O modo de modelos já não se reconstrói a cada segundo, e onde vai a seleção vão também as suas subscrições\n* «Difere do alias» aparece agora também no modo de alias — onde a marca diz mais\n* Trocar de fonte rapidamente já não vai buscar o valor errado; a lista de salto entre fontes nunca aparece duas vezes\n* Os nomes dos objetos seguem o idioma do Admin; a correspondência de funções olha para todos os idiomas e já não cria um duplicado\n\n**Modelos**\n* Uma dica de nome avariada já não derruba a vista de fontes inteira — incluindo a forma aninhada `(a+)+`, onde o motor de expressões encrava\n* A fórmula de uma fonte de reserva sobrevive à atualização, um tipo de dispositivo desconhecido já não rebenta\n* A importação verifica mais do que o id e os estados; um id escrito à mão já não substitui o modelo de outra pessoa\n* O marcador `%N%` só acerta no número da saída, já não em qualquer dígito final\n* O estore recebe o seu STOP: premir um botão não tem estado para ler, e esse caso era desconhecido da aplicação de modelos — **nenhum** alias de estore alguma vez teve um\n* O ON_TIME encontra o seu lugar (quatro modelos levavam a função errada)\n\n**MQTT e Tasmota**\n* Uma entrada `custom` vazia já não derruba nada, `enabled: false` conta como desligado\n* Acabaram os falsos «não consegue publicar» no ioBroker.mqtt e no sonoff — aí a capacidade de publicar é simplesmente desconhecida, não negada\n* «Resposta recebida» apenas para uma resposta a sério; `Vcc` e `Command` não são comandos\n\n**Velocidade, medida num sistema de produção com 24 786 objetos**\n* A caixa de pesquisa deixou de bloquear: **236 ms por tecla → 0**, a árvore inteira **263 → 67 ms**\n* Redesenhar já não custa meio segundo — pesquisa binária em vez de varrimentos lineares: desenhar uma fonte **15,8 → 1,6 ms**, um alias com 50 pontos **51,9 → 14,2 ms**\n* Uma fórmula de leitura já não pode congelar o separador de vez\n* Subscreve-se o que se lê — antes, um único alias podia subscrever meio adaptador",
|
|
89
|
-
"nl": "Zeven pakketten uit een codereview — 45 correcties tussen 0.9.0 en deze versie. De tussenstappen 0.9.1 tot 0.9.6 bleven lokaal en zijn nooit gepubliceerd; hier staan ze samengevat.\n\n**Gegevensverlies en foutpaden**\n* Een fout bij de opsommingen houdt het verplaatsen nu tegen. Voorheen werd het oude alias toch verwijderd — en daarna was het weg, terwijl het nieuwe in geen enkele opsomming stond\n* Een gedeeltelijke fout bij het verwijderen maakt van de herhaalknop geen decorstuk meer: alleen wat echt weg is, wordt uitgeschreven\n* Verweesde punten worden ook bij de tweede poging verwijderd\n* Een laadfout bij de opsommingen laat de vorige stand staan in plaats van hem te legen — en zolang ze onbekend zijn, wordt er niets geschreven. Eerder kon één hapering een alias uit alle ruimtes en functies laten vallen\n* Een laadfout bij de eigen sjablonen wordt gemeld in plaats van ingeslikt; anders had de volgende keer opslaan een bestaand sjabloon door versie 1 vervangen\n\n**Verbinding en weergave**\n* Na een verbroken verbinding werkt het tabblad weer. De WebSocket van de Admin vuurt `connect` één keer per paginaleven af en daarna `reconnect` — daar luisterde niemand naar, en er kwamen object- noch waardewijzigingen binnen\n* De sjabloonmodus bouwt zichzelf niet meer elke seconde opnieuw op, en waar de selectie heen gaat, gaan haar abonnementen mee\n* «Wijkt af van het alias» verschijnt nu ook in de aliasmodus — daar waar het het meest zegt\n* Snel van bron wisselen haalt geen verkeerde waarde meer op; de spronglijst van bronnen staat nooit dubbel\n* Objectnamen volgen de Admin-taal; de functievergelijking kijkt naar alle taalvarianten en maakt geen dubbelganger meer aan\n\n**Sjablonen**\n* Een kapotte naamhint legt niet meer de hele bronweergave plat — inclusief de geneste vorm `(a+)+`, waarop de expressiemachine vastloopt\n* De formule van een vervangende bron overleeft het bijwerken, een onbekend apparaattype gooit geen fout meer\n* Het inlezen controleert meer dan id en toestanden; een met de hand getypt id vervangt niet langer andermans sjabloon\n* De plaatshouder `%N%` raakt nu alleen het uitgangsnummer, niet elk eindcijfer\n* Het rolluik krijgt zijn STOP: een toetsdruk heeft geen toestand om te lezen, en dat geval kende het toepassen van sjablonen niet — **geen enkel** rolluik-alias heeft er ooit een gehad\n* ON_TIME vindt zijn plek (vier sjablonen droegen de verkeerde rol)\n\n**MQTT en Tasmota**\n* Een lege `custom`-vermelding legt niets meer plat, `enabled: false` geldt als uitgeschakeld\n* Geen vals «kan niet verzenden» meer bij ioBroker.mqtt en sonoff — daar is het verzendvermogen simpelweg onbekend, niet ontkend\n* «Antwoord ontvangen» alleen nog bij een echt antwoord; `Vcc` en `Command` zijn geen commando's\n\n**Snelheid, gemeten op een productiesysteem met 24.786 objecten**\n* Het zoekveld blokkeert niet meer: **236 ms per toetsaanslag → 0**, de hele boom **263 → 67 ms**\n* Opnieuw tekenen kost geen halve seconde meer — binair zoeken in plaats van lineair scannen: een bron tekenen **15,8 → 1,6 ms**, een alias met 50 punten **51,9 → 14,2 ms**\n* Een leesformule kan het tabblad niet meer blijvend bevriezen\n* Er wordt geabonneerd op wat gelezen wordt — eerder kon één enkel alias zich op een halve adapter abonneren",
|
|
90
|
-
"fr": "Sept lots issus d'une revue de code — 45 corrections entre 0.9.0 et cette version. Les étapes intermédiaires 0.9.1 à 0.9.6 sont restées locales et n'ont jamais été publiées ; elles sont résumées ici.\n\n**Perte de données et chemins d'erreur**\n* Une erreur sur les énumérations interrompt désormais le déplacement. Auparavant l'ancien alias était supprimé quand même — et ensuite il avait disparu, tandis que le nouveau ne figurait dans aucune énumération\n* Un échec partiel lors de la suppression ne transforme plus le bouton « réessayer » en décor : seul ce qui est réellement parti est retiré\n* Les points orphelins sont supprimés aussi à la deuxième tentative\n* Une erreur de chargement des énumérations laisse l'état précédent en place au lieu de le vider — et tant qu'elles sont inconnues, rien n'est écrit. Avant, un seul hoquet pouvait faire tomber un alias hors de toutes les pièces et fonctions\n* Une erreur de chargement de vos propres modèles est signalée au lieu d'être avalée ; sinon l'enregistrement suivant aurait remplacé un modèle existant par la version 1\n\n**Connexion et affichage**\n* L'onglet refonctionne après une coupure de connexion. Le WebSocket de l'Admin émet `connect` une seule fois par vie de page, puis `reconnect` — personne n'écoutait, et ni les changements d'objets ni ceux de valeurs n'arrivaient\n* Le mode modèles ne se reconstruit plus chaque seconde, et là où va la sélection vont aussi ses abonnements\n* « Diffère de l'alias » s'affiche maintenant aussi en mode alias — là où la mention dit le plus\n* Changer de source rapidement ne récupère plus une valeur étrangère ; la liste de saut entre sources n'apparaît jamais en double\n* Les noms d'objets suivent la langue de l'Admin ; la correspondance des fonctions examine toutes les langues et ne crée plus de doublon\n\n**Modèles**\n* Une indication de nom cassée ne met plus à terre toute la vue des sources — y compris la forme imbriquée `(a+)+`, sur laquelle le moteur d'expressions se bloque\n* La formule d'une source de secours survit à la mise à jour, un type d'appareil inconnu ne lève plus d'erreur\n* L'import vérifie plus que l'identifiant et les états ; un identifiant saisi à la main ne remplace plus le modèle d'autrui\n* Le marqueur `%N%` ne touche plus que le numéro de sortie, et non chaque chiffre final\n* Le volet obtient son STOP : un appui sur un bouton n'a aucun état à lire, et ce cas était inconnu de l'application des modèles — **aucun** alias de volet n'en a jamais eu\n* ON_TIME trouve sa place (quatre modèles portaient le mauvais rôle)\n\n**MQTT et Tasmota**\n* Une entrée `custom` vide ne met plus rien à terre, `enabled: false` compte comme désactivé\n* Plus de faux « ne peut pas publier » pour ioBroker.mqtt et sonoff — là, la capacité de publication est simplement inconnue, et non refusée\n* « Réponse reçue » uniquement pour une vraie réponse ; `Vcc` et `Command` ne sont pas des commandes\n\n**Rapidité, mesurée sur un système de production de 24 786 objets**\n* Le champ de recherche ne bloque plus : **236 ms par frappe → 0**, l'arbre entier **263 → 67 ms**\n* Un redessin ne coûte plus une demi-seconde — recherche binaire au lieu de parcours linéaires : dessiner une source **15,8 → 1,6 ms**, un alias de 50 points **51,9 → 14,2 ms**\n* Une formule de lecture ne peut plus figer l'onglet durablement\n* On s'abonne à ce qu'on lit — auparavant, un seul alias pouvait s'abonner à la moitié d'un adaptateur",
|
|
91
|
-
"it": "Sette pacchetti da una revisione del codice — 45 correzioni tra la 0.9.0 e questa versione. I passi intermedi dalla 0.9.1 alla 0.9.6 sono rimasti locali e non sono mai stati pubblicati; qui sono riassunti.\n\n**Perdita di dati e percorsi d'errore**\n* Un errore sulle enumerazioni ora ferma lo spostamento. Prima il vecchio alias veniva comunque cancellato — e dopo non c'era più, mentre il nuovo non compariva in nessuna enumerazione\n* Un fallimento parziale durante la cancellazione non riduce più il pulsante «riprova» a una finta: viene tolto solo ciò che è davvero sparito\n* I punti orfani vengono cancellati anche al secondo tentativo\n* Un errore di caricamento delle enumerazioni lascia in piedi lo stato precedente invece di svuotarlo — e finché sono sconosciute non viene scritto nulla. Prima bastava un singhiozzo perché un alias cadesse fuori da tutte le stanze e le funzioni\n* Un errore di caricamento dei modelli propri viene segnalato anziché ingoiato; altrimenti il salvataggio successivo avrebbe sostituito un modello esistente con la versione 1\n\n**Connessione e visualizzazione**\n* Dopo un'interruzione della connessione la scheda torna a funzionare. Il WebSocket dell'Admin emette `connect` una sola volta per vita della pagina e poi `reconnect` — nessuno lo ascoltava, e non arrivavano né modifiche di oggetti né di valori\n* La modalità modelli non si ricostruisce più ogni secondo, e dove va la selezione vanno anche le sue sottoscrizioni\n* «Differisce dall'alias» compare ora anche in modalità alias — dove il segno dice di più\n* Cambiare sorgente rapidamente non recupera più un valore altrui; l'elenco di salto tra sorgenti non appare mai due volte\n* I nomi degli oggetti seguono la lingua dell'Admin; il confronto delle funzioni guarda tutte le lingue e non crea più un doppione\n\n**Modelli**\n* Un suggerimento di nome rotto non manda più in blocco l'intera vista delle sorgenti — compresa la forma annidata `(a+)+`, sulla quale il motore delle espressioni si inchioda\n* La formula di una sorgente di riserva sopravvive all'aggiornamento, un tipo di dispositivo sconosciuto non solleva più errori\n* L'importazione controlla più di id e stati; un id digitato a mano non sostituisce più il modello di qualcun altro\n* Il segnaposto `%N%` colpisce solo il numero dell'uscita, non ogni cifra finale\n* La tapparella ottiene il suo STOP: la pressione di un tasto non ha stato da leggere, e l'applicazione dei modelli non conosceva questo caso — **nemmeno un** alias di tapparella ne ha mai avuto uno\n* ON_TIME trova il suo posto (quattro modelli portavano il ruolo sbagliato)\n\n**MQTT e Tasmota**\n* Una voce `custom` vuota non manda più in blocco nulla, `enabled: false` vale come spento\n* Niente più falsi «non può pubblicare» per ioBroker.mqtt e sonoff — lì la capacità di pubblicare è semplicemente sconosciuta, non negata\n* «Risposta ricevuta» solo per una risposta vera; `Vcc` e `Command` non sono comandi\n\n**Velocità, misurata su un sistema di produzione con 24 786 oggetti**\n* La casella di ricerca non blocca più: **236 ms per battuta → 0**, l'intero albero **263 → 67 ms**\n* Un ridisegno non costa più mezzo secondo — ricerca binaria invece di scansioni lineari: disegnare una sorgente **15,8 → 1,6 ms**, un alias con 50 punti **51,9 → 14,2 ms**\n* Una formula di lettura non può più congelare la scheda per sempre\n* Si sottoscrive ciò che si legge — prima un singolo alias poteva sottoscrivere mezzo adapter",
|
|
92
|
-
"es": "Siete paquetes de una revisión de código: 45 correcciones entre la 0.9.0 y esta versión. Los pasos intermedios 0.9.1 a 0.9.6 quedaron en local y nunca se publicaron; aquí están resumidos.\n\n**Pérdida de datos y caminos de error**\n* Un error en las enumeraciones detiene ahora el traslado. Antes el alias antiguo se borraba igualmente, y después ya no estaba, mientras el nuevo no figuraba en ninguna enumeración\n* Un fallo parcial al borrar ya no convierte el botón de reintento en un decorado: solo se retira lo que realmente desapareció\n* Los puntos huérfanos se borran también al segundo intento\n* Un error al cargar las enumeraciones deja en pie el estado anterior en lugar de vaciarlo, y mientras sean desconocidas no se escribe nada. Antes, un solo tropiezo podía dejar un alias fuera de todas las habitaciones y funciones\n* Un error al cargar las plantillas propias se comunica en vez de silenciarse; de lo contrario, el siguiente guardado habría sustituido una plantilla existente por la versión 1\n\n**Conexión y presentación**\n* Tras una caída de la conexión, la pestaña vuelve a funcionar. El WebSocket del Admin lanza `connect` una sola vez por vida de la página y `reconnect` después; nadie escuchaba, y no llegaban ni cambios de objetos ni de valores\n* El modo de plantillas ya no se reconstruye cada segundo, y adonde va la selección van también sus suscripciones\n* «Difiere del alias» aparece ahora también en el modo alias, que es donde más dice\n* Cambiar de fuente rápidamente ya no trae un valor ajeno; la lista de salto entre fuentes nunca aparece dos veces\n* Los nombres de objeto siguen el idioma del Admin; la comparación de funciones mira todos los idiomas y ya no crea un duplicado\n\n**Plantillas**\n* Una pista de nombre rota ya no tumba toda la vista de fuentes, incluida la forma anidada `(a+)+`, en la que el motor de expresiones se atasca\n* La fórmula de una fuente de reserva sobrevive a la actualización, un tipo de dispositivo desconocido ya no lanza error\n* La importación comprueba más que el id y los estados; un id escrito a mano ya no sustituye la plantilla de otra persona\n* El marcador `%N%` solo acierta en el número de salida, no en cualquier dígito final\n* La persiana recibe su STOP: pulsar un botón no tiene estado que leer, y ese caso era desconocido para la aplicación de plantillas: **ni un solo** alias de persiana lo tuvo nunca\n* ON_TIME encuentra su sitio (cuatro plantillas llevaban el rol equivocado)\n\n**MQTT y Tasmota**\n* Una entrada `custom` vacía ya no tumba nada, `enabled: false` cuenta como apagado\n* Se acabaron los falsos «no puede publicar» en ioBroker.mqtt y sonoff: allí la capacidad de publicar es simplemente desconocida, no denegada\n* «Respuesta recibida» solo ante una respuesta de verdad; `Vcc` y `Command` no son comandos\n\n**Velocidad, medida en un sistema de producción con 24 786 objetos**\n* El cuadro de búsqueda ya no bloquea: **236 ms por pulsación → 0**, el árbol entero **263 → 67 ms**\n* Un redibujado ya no cuesta medio segundo: búsqueda binaria en lugar de recorridos lineales; dibujar una fuente **15,8 → 1,6 ms**, un alias con 50 puntos **51,9 → 14,2 ms**\n* Una fórmula de lectura ya no puede congelar la pestaña para siempre\n* Se suscribe lo que se lee: antes, un único alias podía suscribir medio adaptador",
|
|
93
|
-
"pl": "Siedem pakietów z przeglądu kodu — 45 poprawek między 0.9.0 a tym wydaniem. Kroki pośrednie od 0.9.1 do 0.9.6 pozostały lokalne i nigdy nie zostały opublikowane; tutaj są zebrane razem.\n\n**Utrata danych i ścieżki błędów**\n* Błąd przy wyliczeniach zatrzymuje teraz przenoszenie. Wcześniej stary alias i tak był usuwany — a potem już go nie było, podczas gdy nowy nie figurował w żadnym wyliczeniu\n* Częściowe niepowodzenie przy usuwaniu nie zamienia już przycisku ponowienia w atrapę: wypisywane jest tylko to, co naprawdę zniknęło\n* Osierocone punkty są usuwane także przy drugim podejściu\n* Błąd wczytywania wyliczeń pozostawia poprzedni stan, zamiast go opróżniać — a dopóki są nieznane, nic nie jest zapisywane. Wcześniej jedno potknięcie mogło wyrzucić alias ze wszystkich pomieszczeń i funkcji\n* Błąd wczytywania własnych szablonów jest zgłaszany, a nie przemilczany; w przeciwnym razie kolejny zapis zastąpiłby istniejący szablon wersją 1\n\n**Połączenie i wyświetlanie**\n* Po zerwaniu połączenia zakładka znowu działa. WebSocket Admina wysyła `connect` tylko raz na czas życia strony, a potem `reconnect` — nikt tego nie słuchał i nie docierały ani zmiany obiektów, ani wartości\n* Tryb szablonów nie przebudowuje się już co sekundę, a wraz z wyborem przenoszą się jego subskrypcje\n* „Różni się od aliasu\" pojawia się teraz także w trybie aliasu — tam, gdzie mówi najwięcej\n* Szybka zmiana źródła nie pobiera już obcej wartości; lista skoków między źródłami nigdy nie pojawia się podwójnie\n* Nazwy obiektów podążają za językiem Admina; dopasowanie funkcji patrzy na wszystkie wersje językowe i nie tworzy już sobowtóra\n\n**Szablony**\n* Zepsuta podpowiedź nazwy nie unieruchamia już całego widoku źródeł — łącznie z zagnieżdżoną postacią `(a+)+`, na której zacina się silnik wyrażeń\n* Formuła źródła zastępczego przeżywa aktualizację, nieznany typ urządzenia nie wyrzuca już błędu\n* Wczytywanie sprawdza więcej niż identyfikator i stany; ręcznie wpisany identyfikator nie zastępuje już cudzego szablonu\n* Wypełniacz `%N%` trafia tylko w numer wyjścia, a nie w każdą końcową cyfrę\n* Roleta dostaje swój STOP: naciśnięcie przycisku nie ma stanu do odczytu, a tego przypadku stosowanie szablonów nie znało — **ani jeden** alias rolety nigdy go nie miał\n* ON_TIME znajduje swoje miejsce (cztery szablony niosły niewłaściwą rolę)\n\n**MQTT i Tasmota**\n* Pusty wpis `custom` już niczego nie unieruchamia, `enabled: false` liczy się jako wyłączone\n* Koniec z fałszywym „nie może wysyłać\" przy ioBroker.mqtt i sonoff — tam zdolność wysyłania jest po prostu nieznana, a nie zaprzeczona\n* „Odpowiedź otrzymana\" tylko przy prawdziwej odpowiedzi; `Vcc` i `Command` nie są poleceniami\n\n**Szybkość, zmierzona na systemie produkcyjnym z 24 786 obiektami**\n* Pole wyszukiwania już nie blokuje: **236 ms na naciśnięcie → 0**, całe drzewo **263 → 67 ms**\n* Przerysowanie nie kosztuje już pół sekundy — wyszukiwanie binarne zamiast przebiegów liniowych: narysowanie źródła **15,8 → 1,6 ms**, aliasu z 50 punktami **51,9 → 14,2 ms**\n* Formuła odczytu nie może już trwale zamrozić zakładki\n* Subskrybowane jest to, co czytane — wcześniej pojedynczy alias potrafił zasubskrybować pół adaptera",
|
|
94
|
-
"uk": "Сім пакетів із код-рев'ю — 45 виправлень між 0.9.0 і цим випуском. Проміжні кроки з 0.9.1 до 0.9.6 лишилися локальними й ніколи не публікувалися; тут вони зібрані разом.\n\n**Втрата даних і шляхи відмов**\n* Помилка в переліках тепер зупиняє перенесення. Раніше старий аліас усе одно видалявся — і після цього його не було, а новий не значився в жодному переліку\n* Часткова невдача під час видалення більше не перетворює кнопку повтору на бутафорію: знімається лише те, що справді зникло\n* Осиротілі точки видаляються й з другої спроби\n* Помилка завантаження переліків лишає попередній стан на місці, замість того щоб його спорожнити, — і поки вони невідомі, нічого не записується. Раніше одна затримка могла викинути аліас з усіх кімнат і функцій\n* Про помилку завантаження власних шаблонів тепер повідомляють, а не замовчують; інакше наступне збереження замінило б наявний шаблон версією 1\n\n**З'єднання та відображення**\n* Після обриву зв'язку вкладка знову працює. WebSocket адмінки видає `connect` лише раз за час життя сторінки, а далі тільки `reconnect` — цього ніхто не слухав, і не надходили ні зміни об'єктів, ні зміни значень\n* Режим шаблонів більше не перебудовується щосекунди, і разом з вибором переїжджають його підписки\n* «Відрізняється від аліаса» показується тепер і в режимі аліаса — там, де ця позначка каже найбільше\n* Швидке перемикання джерел більше не підтягує чуже значення; список переходу між джерелами ніколи не з'являється двічі\n* Імена об'єктів ідуть за мовою адмінки; зіставлення функцій дивиться на всі мовні варіанти й більше не створює двійника\n\n**Шаблони**\n* Зламана підказка імені більше не виводить з ладу весь вигляд джерела — разом із вкладеною формою `(a+)+`, на якій застрягає рушій виразів\n* Формула запасного джерела переживає оновлення, невідомий тип пристрою більше не спричиняє помилку\n* Імпорт перевіряє не лише ідентифікатор і стани; ідентифікатор, введений вручну, більше не заміняє чужий шаблон\n* Підстановка `%N%` влучає лише в номер виходу, а не в будь-яку останню цифру\n* Ролета отримує свій STOP: натискання кнопки не має стану для читання, і цього випадку застосування шаблонів не знало — **жоден** аліас ролети його ніколи не мав\n* ON_TIME знаходить своє місце (чотири шаблони несли хибну роль)\n\n**MQTT і Tasmota**\n* Порожній запис `custom` більше нічого не ламає, `enabled: false` вважається вимкненим\n* Більше жодних хибних «не може надсилати» для ioBroker.mqtt і sonoff — там здатність надсилати просто невідома, а не заперечена\n* «Відповідь отримано» — лише за справжньої відповіді; `Vcc` і `Command` не є командами\n\n**Швидкість, виміряно на робочій системі з 24 786 об'єктами**\n* Поле пошуку більше не блокує: **236 мс на натискання → 0**, усе дерево **263 → 67 мс**\n* Перемальовування більше не коштує пів секунди — двійковий пошук замість лінійних проходів: малювання джерела **15,8 → 1,6 мс**, аліаса з 50 точками **51,9 → 14,2 мс**\n* Формула читання більше не може назавжди заморозити вкладку\n* Підписуємося на те, що читаємо, — раніше один-єдиний аліас міг підписатися на половину адаптера",
|
|
95
|
-
"zh-cn": "一次代码评审带来的七个修复包——0.9.0 到本版本之间共 45 处修正。中间版本 0.9.1 至 0.9.6 只留在本地、从未发布,其内容汇总于此。\n\n**数据丢失与故障路径**\n* 枚举出错时现在会中止迁移。此前旧别名照样被删除——之后它已不存在,而新别名却不属于任何枚举\n* 删除过程中的部分失败不再把「重试」按钮变成摆设:只有真正消失的条目才会被注销\n* 孤立的数据点在第二次尝试时同样会被删除\n* 枚举加载失败时保留原有状态,而不是将其清空——并且在枚举未知期间不写入任何内容。以前一次卡顿就可能让某个别名从所有房间和功能中掉出去\n* 自建模板加载失败会被报告而非吞掉;否则下一次保存就会用版本 1 覆盖已有模板\n\n**连接与显示**\n* 连接中断后选项卡可以继续工作。Admin 的 WebSocket 在每个页面生命周期内只触发一次 `connect`,之后只有 `reconnect`——此前无人监听,对象变更和值变更都收不到\n* 模板模式不再每秒重建一次,选择移到哪里,它的订阅就跟到哪里\n* 「与别名不一致」现在在别名模式下同样显示——那正是这个标记最有意义的地方\n* 快速切换源不再取到别处的值;源跳转列表不会重复出现\n* 对象名称跟随 Admin 语言;功能比对会查看所有语言版本,不再创建重复项\n\n**模板**\n* 损坏的名称提示不再拖垮整个源视图——包括嵌套形式 `(a+)+`,表达式引擎会在它上面卡死\n* 备用源的公式在更新后得以保留,未知设备类型不再抛出异常\n* 导入时检查的不只是 id 和状态;手动输入的 id 不会再覆盖他人的模板\n* 占位符 `%N%` 现在只匹配输出编号,而不是任意末尾数字\n* 卷帘拿到了它的 STOP:按键动作没有可读取的状态,而模板应用此前并不认识这种情况——**没有一个**卷帘别名曾经有过\n* ON_TIME 找到了自己的位置(四个模板带着错误的角色)\n\n**MQTT 与 Tasmota**\n* 空的 `custom` 条目不再拖垮任何东西,`enabled: false` 视为已关闭\n* ioBroker.mqtt 和 sonoff 不再出现错误的「无法发送」——在那里发送能力只是未知,而非被否定\n* 只有收到真正的回复才显示「已收到回复」;`Vcc` 和 `Command` 并不是命令\n\n**速度,在拥有 24 786 个对象的生产系统上实测**\n* 搜索框不再阻塞:**每次按键 236 毫秒 → 0**,整棵树 **263 → 67 毫秒**\n* 重绘不再耗费半秒——以二分查找取代线性扫描:绘制一个源 **15.8 → 1.6 毫秒**,含 50 个数据点的别名 **51.9 → 14.2 毫秒**\n* 读取公式不会再让选项卡永久冻结\n* 订阅的正是要读取的内容——此前单个别名就可能订阅半个适配器"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|
|
@@ -191,6 +191,19 @@
|
|
|
191
191
|
"ikonErsetzen": true,
|
|
192
192
|
"vorlagenVomAdmin": true
|
|
193
193
|
},
|
|
194
|
-
"objects": [
|
|
194
|
+
"objects": [
|
|
195
|
+
{
|
|
196
|
+
"_id": "alias-workbench.0",
|
|
197
|
+
"type": "meta",
|
|
198
|
+
"common": {
|
|
199
|
+
"name": {
|
|
200
|
+
"en": "Alias Workbench — Storage",
|
|
201
|
+
"de": "Alias-Werkbank — Ablage"
|
|
202
|
+
},
|
|
203
|
+
"type": "meta.user"
|
|
204
|
+
},
|
|
205
|
+
"native": {}
|
|
206
|
+
}
|
|
207
|
+
],
|
|
195
208
|
"instanceObjects": []
|
|
196
209
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.alias-workbench",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "Creates aliases the comfortable way — devices that vis, Alexa and the device adapter understand. Templates do the work: shipped ones for HomeMatic and Tasmota, your own for everything else. Live values while you build, dry run before anything is written.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Ricardo Hipp",
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
"type-detector"
|
|
14
14
|
],
|
|
15
15
|
"engines": {
|
|
16
|
-
"node": ">=
|
|
16
|
+
"node": ">= 22.0.0"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@iobroker/eslint-config": "^2.3.4",
|
|
20
|
-
"@iobroker/testing": "^
|
|
20
|
+
"@iobroker/testing": "^6.2.2",
|
|
21
21
|
"@iobroker/type-detector": "^6.0.0",
|
|
22
22
|
"esbuild": "^0.28.2"
|
|
23
23
|
},
|