iobroker.alias-workbench 0.11.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 +19 -7
- package/admin/css/werkbank.css +73 -0
- package/admin/i18n/de.json +65 -0
- package/admin/i18n/en.json +65 -0
- package/admin/i18n/es.json +65 -0
- package/admin/i18n/fr.json +65 -0
- package/admin/i18n/it.json +65 -0
- package/admin/i18n/nl.json +65 -0
- package/admin/i18n/pl.json +65 -0
- package/admin/i18n/pt.json +65 -0
- package/admin/i18n/ru.json +65 -0
- package/admin/i18n/uk.json +65 -0
- package/admin/i18n/zh-cn.json +65 -0
- package/admin/js/attrappe.js +749 -0
- package/admin/js/baum.js +52 -5
- package/admin/js/entwurf.js +133 -6
- package/admin/js/ergebnis.js +77 -2
- package/admin/js/quellentausch.js +823 -16
- package/admin/js/sprache.js +4 -0
- package/admin/js/zustand.js +28 -0
- package/admin/tab.html +24 -0
- package/io-package.json +14 -14
- package/package.json +2 -2
package/admin/js/sprache.js
CHANGED
|
@@ -148,6 +148,10 @@ export function beschrifteHtml() {
|
|
|
148
148
|
setz('#res .empty', tr('help.sources'));
|
|
149
149
|
setz('#btn-dry-write', tr('write.now'));
|
|
150
150
|
setz('#dlg-checks h3', tr('check.title'));
|
|
151
|
+
setz('#mock-titel', tr('tree.exportMock'));
|
|
152
|
+
setz('#btn-mock-go', tr('mock.save'));
|
|
153
|
+
setz('#mockin-titel', tr('tree.importMock'));
|
|
154
|
+
setz('#btn-mockin-go', tr('mockin.create'));
|
|
151
155
|
document.querySelectorAll('dialog [data-close]').forEach(function (b) {
|
|
152
156
|
b.textContent = tr('write.close');
|
|
153
157
|
});
|
package/admin/js/zustand.js
CHANGED
|
@@ -28,6 +28,25 @@ export var S = {
|
|
|
28
28
|
aliasKaputt: {},
|
|
29
29
|
werte: {},
|
|
30
30
|
current: null,
|
|
31
|
+
/* Mehrere Zweige als EIN Geraet.
|
|
32
|
+
|
|
33
|
+
Manche Adapter verteilen ein Geraet auf Geschwisterzweige: Matter
|
|
34
|
+
legt eine Steckdose als Ordner mit zwei `device` darunter ab - der
|
|
35
|
+
Schalter in `OnOffPlugInUnit-1`, die Messwerte in
|
|
36
|
+
`ElectricalSensor-2` (gemessen am Produktivsystem 13.10.2026). Der
|
|
37
|
+
Ordner selbst traegt keine Datenpunkte und ist damit nicht
|
|
38
|
+
waehlbar, und jeder Endpoint einzeln ergibt ein halbes Geraet.
|
|
39
|
+
|
|
40
|
+
`S.current` bleibt EIN Knoten - hier der gemeinsame Elternknoten -,
|
|
41
|
+
und `S.zweige` sagt, welche seiner Zweige dazugehoeren. `null`
|
|
42
|
+
heisst „alle", also genau das bisherige Verhalten. Eine Liste
|
|
43
|
+
daraus zu machen haette `S.current` an 91 Stellen beruehrt, ohne
|
|
44
|
+
dass irgendeine davon besser geworden waere.
|
|
45
|
+
|
|
46
|
+
Die Auswahl ist fluechtig: sie ueberlebt keinen Seitenneustart. */
|
|
47
|
+
zweige: null,
|
|
48
|
+
/* Einmalige Rueckmeldung aus dem Baum an die rechte Seite. */
|
|
49
|
+
zweigMeldung: '',
|
|
31
50
|
openRow: null,
|
|
32
51
|
entwurf: null,
|
|
33
52
|
baum: null,
|
|
@@ -50,6 +69,15 @@ export var S = {
|
|
|
50
69
|
tauschPlan: null,
|
|
51
70
|
tauschWeg: {},
|
|
52
71
|
tauschFilter: '',
|
|
72
|
+
/* Fuer welches Ziel die Werte schon geholt sind - Stufe 5 braucht sie. */
|
|
73
|
+
tauschWerte: null,
|
|
74
|
+
/* Von Hand benannte Ziele beim Tausch: Alias-Punkt -> Punkt am neuen Geraet. */
|
|
75
|
+
tauschHand: {},
|
|
76
|
+
/* Was beim Tausch mit einer gewechselten Einheit geschehen soll:
|
|
77
|
+
Alias-Punkt -> nichts | einheit | rechnen. */
|
|
78
|
+
tauschEinheit: {},
|
|
79
|
+
/* Soll der Tausch die Formeln des neuen Geraets uebernehmen? */
|
|
80
|
+
tauschMerkung: null,
|
|
53
81
|
loeschListe: [],
|
|
54
82
|
loeschZiel: null,
|
|
55
83
|
loeschAlleAusgaenge: false,
|
package/admin/tab.html
CHANGED
|
@@ -166,6 +166,30 @@
|
|
|
166
166
|
<div class="dfoot"><button class="btn" data-close>Close</button></div>
|
|
167
167
|
</dialog>
|
|
168
168
|
|
|
169
|
+
<!-- Vor dem Ausgeben einer Attrappe: was geht in die Datei. Die Texte
|
|
170
|
+
werden zur Laufzeit gesetzt. -->
|
|
171
|
+
<dialog id="dlg-mock" style="max-width:880px;width:calc(100% - 32px);">
|
|
172
|
+
<h3 id="mock-titel">Export as mock device</h3>
|
|
173
|
+
<div class="dbody" id="mock-body"></div>
|
|
174
|
+
<div class="dfoot">
|
|
175
|
+
<button class="btn" data-close>Close</button>
|
|
176
|
+
<button class="btn primary" id="btn-mock-go">Save file</button>
|
|
177
|
+
</div>
|
|
178
|
+
</dialog>
|
|
179
|
+
|
|
180
|
+
<!-- Eine Attrappe einlesen: was entstehen wuerde, steht vorher da. Ein
|
|
181
|
+
eigener Dialog, nicht der Trockenlauf des Alias — der verlangt
|
|
182
|
+
`alias.` als Ziel, die Attrappe landet unter 0_userdata.0. -->
|
|
183
|
+
<dialog id="dlg-mockin" style="max-width:880px;width:calc(100% - 32px);">
|
|
184
|
+
<h3 id="mockin-titel">Import mock device</h3>
|
|
185
|
+
<div class="dbody" id="mockin-body"></div>
|
|
186
|
+
<div class="dfoot">
|
|
187
|
+
<button class="btn" data-close>Close</button>
|
|
188
|
+
<button class="btn primary" id="btn-mockin-go">Create now</button>
|
|
189
|
+
</div>
|
|
190
|
+
</dialog>
|
|
191
|
+
<input type="file" id="datei-attrappe" accept=".json,application/json" hidden>
|
|
192
|
+
|
|
169
193
|
<!-- Wer im Baum weiterklickt, verlor bis zum 06.09.2026 seine Aenderungen
|
|
170
194
|
ohne ein Wort (Ricardo). Der Text wird zur Laufzeit gesetzt. -->
|
|
171
195
|
<dialog id="dlg-leave">
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
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
|
+
},
|
|
6
19
|
"0.11.0": {
|
|
7
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 `_`.",
|
|
8
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.",
|
|
@@ -80,19 +93,6 @@
|
|
|
80
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",
|
|
81
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), і ролета через це стверджувала, що типу в неї немає зовсім",
|
|
82
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),因此卷帘一直声称自己没有任何类型"
|
|
83
|
-
},
|
|
84
|
-
"0.9.8": {
|
|
85
|
-
"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)",
|
|
86
|
-
"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)",
|
|
87
|
-
"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)",
|
|
88
|
-
"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)",
|
|
89
|
-
"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)",
|
|
90
|
-
"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)",
|
|
91
|
-
"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)",
|
|
92
|
-
"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)",
|
|
93
|
-
"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)",
|
|
94
|
-
"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)",
|
|
95
|
-
"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)"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|
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",
|
|
@@ -17,7 +17,7 @@
|
|
|
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
|
},
|