iobroker.yamaha 2.7.1 → 2.7.2
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 +6 -10
- package/admin/i18n/de.json +2 -0
- package/admin/i18n/en.json +2 -0
- package/admin/i18n/es.json +2 -0
- package/admin/i18n/fr.json +2 -0
- package/admin/i18n/it.json +2 -0
- package/admin/i18n/nl.json +2 -0
- package/admin/i18n/pl.json +2 -0
- package/admin/i18n/pt.json +2 -0
- package/admin/i18n/ru.json +2 -0
- package/admin/i18n/uk.json +2 -0
- package/admin/i18n/zh-cn.json +2 -0
- package/build/lib/lifecycle/discovery-schema.js +1 -1
- package/build/lib/lifecycle/discovery-schema.js.map +1 -1
- package/build/lib/xml/device-controller.js +13 -1
- package/build/lib/xml/device-controller.js.map +3 -3
- package/build/lib/xml/protocol.js +17 -0
- package/build/lib/xml/protocol.js.map +2 -2
- package/build/lib/yxc/device-controller.js +48 -5
- package/build/lib/yxc/device-controller.js.map +2 -2
- package/build/lib/yxc/object-mapper.js +45 -12
- package/build/lib/yxc/object-mapper.js.map +2 -2
- package/io-package.json +14 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -108,6 +108,12 @@ On the very first contact the adapter asks the receiver which functions it suppo
|
|
|
108
108
|
Placeholder for the next version (at the beginning of the line):
|
|
109
109
|
### **WORK IN PROGRESS**
|
|
110
110
|
-->
|
|
111
|
+
### 2.7.2 (2026-09-09)
|
|
112
|
+
|
|
113
|
+
- (krobipd) Fixed: The volume readout now follows the scale the receiver is actually showing, so a receiver set to numbers no longer reports them as decibels.
|
|
114
|
+
- (krobipd) New: Inputs now appear under the names the receiver carries for them, so a socket named “Apple TV” reads that way instead of HDMI1.
|
|
115
|
+
- (krobipd) Changed: After this update every receiver is asked about its abilities once more, so the first start takes a little longer than usual.
|
|
116
|
+
|
|
111
117
|
### 2.7.1 (2026-09-09)
|
|
112
118
|
|
|
113
119
|
- (krobipd) Improved: The first connection asks a receiver only what its generation can answer, so zones, trigger sockets and per-input settings follow the device, not a catalogue.
|
|
@@ -132,16 +138,6 @@ On the very first contact the adapter asks the receiver which functions it suppo
|
|
|
132
138
|
|
|
133
139
|
- (krobipd) Changed: installing straight from GitHub is no longer offered — the adapter is built before publishing, so it is installed from the ioBroker repository instead
|
|
134
140
|
|
|
135
|
-
### 2.5.0 (2026-09-07)
|
|
136
|
-
|
|
137
|
-
- (krobipd) Fixed: switching off a datapoint group now clears it in every zone — turning off "Sound" used to leave the zone 2/3/4 sound datapoints standing, and "Playback" left 304 of them
|
|
138
|
-
- (krobipd) Fixed: folders explain themselves on all three protocols now — on MusicCast and older XML receivers the explanation was missing, so a speaker or soundbar got almost none
|
|
139
|
-
- (krobipd) Improved: numeric datapoints carry the limits the device itself declares, so a slider offers exactly the range the receiver accepts instead of an open number field
|
|
140
|
-
- (krobipd) New: 61 setup datapoints of the 2010 receiver generation — speaker configuration, HDMI and lip-sync settings, trigger assignment, subwoofer trim, YPAO volume and the RDS clock
|
|
141
|
-
- (krobipd) New: the device-wide MusicCast settings are readable and writable — automatic standby, display brightness and the two HDMI outputs, created only where the device really offers them
|
|
142
|
-
- (krobipd) Fixed: bass, treble and subwoofer trim showed doubled values on MusicCast receivers — that scale counts in half decibels and was labelled as decibels
|
|
143
|
-
- (krobipd) Fixed: a receiver that was in standby when the adapter started could end up with an empty media menu until the next restart
|
|
144
|
-
|
|
145
141
|
[Older changelogs can be found there](CHANGELOG_OLD.md)
|
|
146
142
|
|
|
147
143
|
## History
|
package/admin/i18n/de.json
CHANGED
|
@@ -256,6 +256,7 @@
|
|
|
256
256
|
"volume": "Lautstärke",
|
|
257
257
|
"descVolume": "Wie laut die Zone spielt: die beiden Text-Protokolle melden Dezibel, MusicCast seine eigene Schrittzahl — die Einheit sagt, welche.",
|
|
258
258
|
"volumeDB": "Lautstärke (dB)",
|
|
259
|
+
"volumeDisplay": "Lautstärke (Anzeige)",
|
|
259
260
|
"volumeDisplayMode": "Lautstärke-Anzeigeart",
|
|
260
261
|
"volumeInterlock": "Lautstärke-Kopplung",
|
|
261
262
|
"yncaControlPort": "YNCA-Steuerport",
|
|
@@ -384,6 +385,7 @@
|
|
|
384
385
|
"descElapsedTime": "In Sekunden, damit man damit rechnen kann; die lesbare Form steht daneben.",
|
|
385
386
|
"descTotalTime": "In Sekunden, damit man damit rechnen kann; die lesbare Form steht daneben.",
|
|
386
387
|
"descVolumeDB": "Dieselbe Lautstärke, wie sie das Display des Receivers zeigt, in Dezibel.",
|
|
388
|
+
"descVolumeDisplay": "Dieselbe Lautstärke, wie sie das Display des Receivers zeigt, in der gerade eingestellten Skala.",
|
|
387
389
|
"descVolumeDisplayMode": "Ob der Receiver die Lautstärke in Dezibel oder als schlichte Zahl anzeigt.",
|
|
388
390
|
"descAudioSelect": "Von welcher Buchse der aktuelle Eingang seinen Ton nimmt: automatisch, HDMI, koaxial/optisch oder analog.",
|
|
389
391
|
"descLinkControl": "Wägt Stabilität gegen Verzögerung ab, wenn an verbundene Geräte gestreamt wird.",
|
package/admin/i18n/en.json
CHANGED
|
@@ -256,6 +256,7 @@
|
|
|
256
256
|
"volume": "Volume",
|
|
257
257
|
"descVolume": "How loud the zone plays: the two text protocols report decibels, MusicCast its own step count — the unit tells you which.",
|
|
258
258
|
"volumeDB": "Volume (dB)",
|
|
259
|
+
"volumeDisplay": "Volume (display)",
|
|
259
260
|
"volumeDisplayMode": "Volume display mode",
|
|
260
261
|
"volumeInterlock": "Volume interlock",
|
|
261
262
|
"yncaControlPort": "YNCA control port",
|
|
@@ -384,6 +385,7 @@
|
|
|
384
385
|
"descElapsedTime": "In seconds, so it can be calculated with; a readable form sits next to it.",
|
|
385
386
|
"descTotalTime": "In seconds, so it can be calculated with; a readable form sits next to it.",
|
|
386
387
|
"descVolumeDB": "The same volume as the receiver's own display shows it, in decibels.",
|
|
388
|
+
"descVolumeDisplay": "The same volume the receiver's display shows, in whichever scale it is set to.",
|
|
387
389
|
"descVolumeDisplayMode": "Whether the receiver shows volume in decibels or as a plain number.",
|
|
388
390
|
"descAudioSelect": "Which terminal's sound the current input uses: automatic, HDMI, coaxial/optical or analogue.",
|
|
389
391
|
"descLinkControl": "Trades stability against delay when streaming to linked devices.",
|
package/admin/i18n/es.json
CHANGED
|
@@ -256,6 +256,7 @@
|
|
|
256
256
|
"volume": "Volumen",
|
|
257
257
|
"descVolume": "Lo alto que suena la zona: los dos protocolos de texto dan decibelios, MusicCast sus propios pasos — la unidad indica cuál.",
|
|
258
258
|
"volumeDB": "Volumen (dB)",
|
|
259
|
+
"volumeDisplay": "Volumen (pantalla)",
|
|
259
260
|
"volumeDisplayMode": "Modo de visualización del volumen",
|
|
260
261
|
"volumeInterlock": "Bloqueo de volumen",
|
|
261
262
|
"yncaControlPort": "Puerto de control YNCA",
|
|
@@ -384,6 +385,7 @@
|
|
|
384
385
|
"descElapsedTime": "En segundos, para poder calcular; la forma legible está al lado.",
|
|
385
386
|
"descTotalTime": "En segundos, para poder calcular; la forma legible está al lado.",
|
|
386
387
|
"descVolumeDB": "El mismo volumen que muestra la pantalla del receptor, en decibelios.",
|
|
388
|
+
"descVolumeDisplay": "El mismo volumen que muestra la pantalla del receptor, en la escala seleccionada actualmente.",
|
|
387
389
|
"descVolumeDisplayMode": "Si el receptor muestra el volumen en decibelios o como número.",
|
|
388
390
|
"descAudioSelect": "De qué terminal toma el sonido la entrada actual: automático, HDMI, coaxial/óptico o analógico.",
|
|
389
391
|
"descLinkControl": "Equilibra estabilidad y retardo al transmitir a aparatos enlazados.",
|
package/admin/i18n/fr.json
CHANGED
|
@@ -256,6 +256,7 @@
|
|
|
256
256
|
"volume": "Volume",
|
|
257
257
|
"descVolume": "Le niveau sonore de la zone : les deux protocoles texte donnent des décibels, MusicCast ses propres pas — l'unité indique lequel.",
|
|
258
258
|
"volumeDB": "Volume (dB)",
|
|
259
|
+
"volumeDisplay": "Volume (afficheur)",
|
|
259
260
|
"volumeDisplayMode": "Mode d'affichage du volume",
|
|
260
261
|
"volumeInterlock": "Verrouillage du volume",
|
|
261
262
|
"yncaControlPort": "Port de commande YNCA",
|
|
@@ -384,6 +385,7 @@
|
|
|
384
385
|
"descElapsedTime": "En secondes, pour pouvoir calculer ; la forme lisible est à côté.",
|
|
385
386
|
"descTotalTime": "En secondes, pour pouvoir calculer ; la forme lisible est à côté.",
|
|
386
387
|
"descVolumeDB": "Le même volume que l'afficheur de l'ampli, en décibels.",
|
|
388
|
+
"descVolumeDisplay": "Le même volume que l'afficheur de l'ampli, dans l'échelle actuellement réglée.",
|
|
387
389
|
"descVolumeDisplayMode": "Si l'ampli affiche le volume en décibels ou en nombre simple.",
|
|
388
390
|
"descAudioSelect": "De quelle prise l'entrée actuelle tire son son : automatique, HDMI, coaxiale/optique ou analogique.",
|
|
389
391
|
"descLinkControl": "Arbitre entre stabilité et latence lors de la diffusion vers les appareils liés.",
|
package/admin/i18n/it.json
CHANGED
|
@@ -256,6 +256,7 @@
|
|
|
256
256
|
"volume": "Volume",
|
|
257
257
|
"descVolume": "Quanto forte suona la zona: i due protocolli testuali danno decibel, MusicCast i propri passi — l'unità dice quale.",
|
|
258
258
|
"volumeDB": "Volume (dB)",
|
|
259
|
+
"volumeDisplay": "Volume (display)",
|
|
259
260
|
"volumeDisplayMode": "Modalità di visualizzazione del volume",
|
|
260
261
|
"volumeInterlock": "Blocco volume",
|
|
261
262
|
"yncaControlPort": "Porta di controllo YNCA",
|
|
@@ -384,6 +385,7 @@
|
|
|
384
385
|
"descElapsedTime": "In secondi, così è calcolabile; la forma leggibile è accanto.",
|
|
385
386
|
"descTotalTime": "In secondi, così è calcolabile; la forma leggibile è accanto.",
|
|
386
387
|
"descVolumeDB": "Lo stesso volume mostrato dal display del ricevitore, in decibel.",
|
|
388
|
+
"descVolumeDisplay": "Lo stesso volume mostrato dal display del ricevitore, nella scala attualmente impostata.",
|
|
387
389
|
"descVolumeDisplayMode": "Se il ricevitore mostra il volume in decibel o come numero.",
|
|
388
390
|
"descAudioSelect": "Da quale terminale l'ingresso corrente prende l'audio: automatico, HDMI, coassiale/ottico o analogico.",
|
|
389
391
|
"descLinkControl": "Bilancia stabilità e ritardo nello streaming verso apparecchi collegati.",
|
package/admin/i18n/nl.json
CHANGED
|
@@ -256,6 +256,7 @@
|
|
|
256
256
|
"volume": "Volume",
|
|
257
257
|
"descVolume": "Hoe hard de zone speelt: de twee tekstprotocollen geven decibel, MusicCast zijn eigen stappen — de eenheid zegt welke.",
|
|
258
258
|
"volumeDB": "Volume (dB)",
|
|
259
|
+
"volumeDisplay": "Volume (display)",
|
|
259
260
|
"volumeDisplayMode": "Weergavemodus volume",
|
|
260
261
|
"volumeInterlock": "Volumekoppeling",
|
|
261
262
|
"yncaControlPort": "YNCA-besturingspoort",
|
|
@@ -384,6 +385,7 @@
|
|
|
384
385
|
"descElapsedTime": "In seconden, zodat ermee gerekend kan worden; de leesbare vorm staat ernaast.",
|
|
385
386
|
"descTotalTime": "In seconden, zodat ermee gerekend kan worden; de leesbare vorm staat ernaast.",
|
|
386
387
|
"descVolumeDB": "Hetzelfde volume als op het display van de receiver, in decibel.",
|
|
388
|
+
"descVolumeDisplay": "Hetzelfde volume als op het display van de receiver, in de nu ingestelde schaal.",
|
|
387
389
|
"descVolumeDisplayMode": "Of de receiver het volume in decibel of als getal toont.",
|
|
388
390
|
"descAudioSelect": "Van welke aansluiting de huidige ingang zijn geluid neemt: automatisch, HDMI, coaxiaal/optisch of analoog.",
|
|
389
391
|
"descLinkControl": "Weegt stabiliteit tegen vertraging af bij streamen naar gekoppelde apparaten.",
|
package/admin/i18n/pl.json
CHANGED
|
@@ -256,6 +256,7 @@
|
|
|
256
256
|
"volume": "Głośność",
|
|
257
257
|
"descVolume": "Jak głośno gra strefa: dwa protokoły tekstowe podają decybele, MusicCast własne kroki — jednostka mówi, który z nich.",
|
|
258
258
|
"volumeDB": "Głośność (dB)",
|
|
259
|
+
"volumeDisplay": "Głośność (wyświetlacz)",
|
|
259
260
|
"volumeDisplayMode": "Tryb wyświetlania głośności",
|
|
260
261
|
"volumeInterlock": "Sprzężenie głośności",
|
|
261
262
|
"yncaControlPort": "Port sterowania YNCA",
|
|
@@ -384,6 +385,7 @@
|
|
|
384
385
|
"descElapsedTime": "W sekundach, by dało się liczyć; czytelna forma obok.",
|
|
385
386
|
"descTotalTime": "W sekundach, by dało się liczyć; czytelna forma obok.",
|
|
386
387
|
"descVolumeDB": "Ta sama głośność co na wyświetlaczu amplitunera, w decybelach.",
|
|
388
|
+
"descVolumeDisplay": "Ta sama głośność co na wyświetlaczu amplitunera, w aktualnie ustawionej skali.",
|
|
387
389
|
"descVolumeDisplayMode": "Czy amplituner pokazuje głośność w decybelach, czy jako liczbę.",
|
|
388
390
|
"descAudioSelect": "Z którego gniazda bieżące wejście pobiera dźwięk: automatycznie, HDMI, koncentryczne/optyczne lub analogowe.",
|
|
389
391
|
"descLinkControl": "Równoważy stabilność i opóźnienie przy przesyłaniu do połączonych urządzeń.",
|
package/admin/i18n/pt.json
CHANGED
|
@@ -256,6 +256,7 @@
|
|
|
256
256
|
"volume": "Volume",
|
|
257
257
|
"descVolume": "Quão alto a zona toca: os dois protocolos de texto dão decibéis, o MusicCast os seus próprios passos — a unidade indica qual.",
|
|
258
258
|
"volumeDB": "Volume (dB)",
|
|
259
|
+
"volumeDisplay": "Volume (visor)",
|
|
259
260
|
"volumeDisplayMode": "Modo de exibição do volume",
|
|
260
261
|
"volumeInterlock": "Bloqueio de volume",
|
|
261
262
|
"yncaControlPort": "Porta de controlo YNCA",
|
|
@@ -384,6 +385,7 @@
|
|
|
384
385
|
"descElapsedTime": "Em segundos, para poder calcular; a forma legível está ao lado.",
|
|
385
386
|
"descTotalTime": "Em segundos, para poder calcular; a forma legível está ao lado.",
|
|
386
387
|
"descVolumeDB": "O mesmo volume que o visor do recetor mostra, em decibéis.",
|
|
388
|
+
"descVolumeDisplay": "O mesmo volume que o visor do recetor mostra, na escala atualmente selecionada.",
|
|
387
389
|
"descVolumeDisplayMode": "Se o recetor mostra o volume em decibéis ou como número simples.",
|
|
388
390
|
"descAudioSelect": "De que terminal o som da entrada atual vem: automático, HDMI, coaxial/ótico ou analógico.",
|
|
389
391
|
"descLinkControl": "Equilibra estabilidade e atraso ao transmitir para aparelhos ligados.",
|
package/admin/i18n/ru.json
CHANGED
|
@@ -256,6 +256,7 @@
|
|
|
256
256
|
"volume": "Громкость",
|
|
257
257
|
"descVolume": "Насколько громко играет зона: два текстовых протокола дают децибелы, MusicCast — свои шаги; единица измерения показывает, что именно.",
|
|
258
258
|
"volumeDB": "Громкость (дБ)",
|
|
259
|
+
"volumeDisplay": "Громкость (дисплей)",
|
|
259
260
|
"volumeDisplayMode": "Режим отображения громкости",
|
|
260
261
|
"volumeInterlock": "Связка громкости",
|
|
261
262
|
"yncaControlPort": "Порт управления YNCA",
|
|
@@ -384,6 +385,7 @@
|
|
|
384
385
|
"descElapsedTime": "В секундах, чтобы с этим можно было считать; читаемая форма рядом.",
|
|
385
386
|
"descTotalTime": "В секундах, чтобы с этим можно было считать; читаемая форма рядом.",
|
|
386
387
|
"descVolumeDB": "Та же громкость, что показывает дисплей ресивера, в децибелах.",
|
|
388
|
+
"descVolumeDisplay": "Та же громкость, что показывает дисплей ресивера, в текущей выбранной шкале.",
|
|
387
389
|
"descVolumeDisplayMode": "Показывает ли ресивер громкость в децибелах или простым числом.",
|
|
388
390
|
"descAudioSelect": "Звук какого разъёма использует текущий вход: автоматически, HDMI, коаксиальный/оптический или аналоговый.",
|
|
389
391
|
"descLinkControl": "Баланс стабильности и задержки при передаче на связанные устройства.",
|
package/admin/i18n/uk.json
CHANGED
|
@@ -256,6 +256,7 @@
|
|
|
256
256
|
"volume": "Гучність",
|
|
257
257
|
"descVolume": "Наскільки гучно грає зона: два текстові протоколи дають децибели, MusicCast — власні кроки; одиниця показує, що саме.",
|
|
258
258
|
"volumeDB": "Гучність (дБ)",
|
|
259
|
+
"volumeDisplay": "Гучність (дисплей)",
|
|
259
260
|
"volumeDisplayMode": "Режим показу гучності",
|
|
260
261
|
"volumeInterlock": "Зв'язка гучності",
|
|
261
262
|
"yncaControlPort": "Порт керування YNCA",
|
|
@@ -384,6 +385,7 @@
|
|
|
384
385
|
"descElapsedTime": "У секундах, щоб можна було рахувати; зручна форма поруч.",
|
|
385
386
|
"descTotalTime": "У секундах, щоб можна було рахувати; зручна форма поруч.",
|
|
386
387
|
"descVolumeDB": "Та сама гучність, що на дисплеї ресивера, у децибелах.",
|
|
388
|
+
"descVolumeDisplay": "Та сама гучність, що на дисплеї ресивера, у поточно вибраній шкалі.",
|
|
387
389
|
"descVolumeDisplayMode": "Чи показує ресивер гучність у децибелах, чи простим числом.",
|
|
388
390
|
"descAudioSelect": "Звук якого роз'єму використовує поточний вхід: автоматично, HDMI, коаксіальний/оптичний чи аналоговий.",
|
|
389
391
|
"descLinkControl": "Баланс стабільності та затримки при передачі на пов'язані пристрої.",
|
package/admin/i18n/zh-cn.json
CHANGED
|
@@ -256,6 +256,7 @@
|
|
|
256
256
|
"volume": "音量",
|
|
257
257
|
"descVolume": "该区域的音量:两种文本协议给出分贝,MusicCast 给出自身的步进值,单位标明是哪一种。",
|
|
258
258
|
"volumeDB": "音量 (dB)",
|
|
259
|
+
"volumeDisplay": "音量(显示)",
|
|
259
260
|
"volumeDisplayMode": "音量显示方式",
|
|
260
261
|
"volumeInterlock": "音量联动",
|
|
261
262
|
"yncaControlPort": "YNCA 控制端口",
|
|
@@ -384,6 +385,7 @@
|
|
|
384
385
|
"descElapsedTime": "以秒为单位便于计算;易读形式在旁边。",
|
|
385
386
|
"descTotalTime": "以秒为单位便于计算;易读形式在旁边。",
|
|
386
387
|
"descVolumeDB": "与功放显示屏一致的音量,单位分贝。",
|
|
388
|
+
"descVolumeDisplay": "与功放显示屏一致的音量,采用当前设置的刻度。",
|
|
387
389
|
"descVolumeDisplayMode": "功放以分贝还是普通数字显示音量。",
|
|
388
390
|
"descAudioSelect": "当前输入使用哪个端子的声音:自动、HDMI、同轴/光纤或模拟。",
|
|
389
391
|
"descLinkControl": "向联动设备串流时在稳定性与延迟之间取舍。",
|
|
@@ -21,7 +21,7 @@ __export(discovery_schema_exports, {
|
|
|
21
21
|
DISCOVERY_SCHEMA: () => DISCOVERY_SCHEMA
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(discovery_schema_exports);
|
|
24
|
-
const DISCOVERY_SCHEMA =
|
|
24
|
+
const DISCOVERY_SCHEMA = 2;
|
|
25
25
|
// Annotate the CommonJS export names for ESM import in node:
|
|
26
26
|
0 && (module.exports = {
|
|
27
27
|
DISCOVERY_SCHEMA
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/lib/lifecycle/discovery-schema.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * The version of the adapter's DISCOVERY LOGIC \u2014 how it turns device answers into objects,\n * dropdowns and bounds. Persisted with every per-device memory (`native.probeCache`,\n * `native.yncaAvail`); a memory learned under another schema is discarded on load, so the\n * device is re-learned on its next connect with the current logic (cold path, \u2264 32 s over\n * YNCA, objects correct in the same start). A memory without the field is schema 0 \u2014 every\n * installation before 2.6.0 \u2014 and is re-learned once by the first release that carries this.\n *\n * Bump it when a release changes what discovery PRODUCES (a new declaration source, a changed\n * candidate list, a new derivation rule); leave it alone when only values, logging or the wire\n * paths change. `discovery-schema.test.ts` holds the object inventory's shape against it in both\n * directions \u2014 output changed on a released schema without a bump fails, a bump without a change\n * fails \u2014 with the stamp `test/discovery-schema.json`. (2.6.0: the adapter-VERSION trigger was\n * rejected in the advisor round \u2014 every patch release would re-sweep every device for a result\n * the schema bump already guarantees when discovery really changed. Since 2.7.0 a transport can\n * ask for a re-coordination within the session, so a late object does materialise \u2014 but that is\n * ADDITIVE; a changed discovery LOGIC still needs the cold re-learn this constant triggers.)\n */\nexport const DISCOVERY_SCHEMA =
|
|
4
|
+
"sourcesContent": ["/**\n * The version of the adapter's DISCOVERY LOGIC \u2014 how it turns device answers into objects,\n * dropdowns and bounds. Persisted with every per-device memory (`native.probeCache`,\n * `native.yncaAvail`); a memory learned under another schema is discarded on load, so the\n * device is re-learned on its next connect with the current logic (cold path, \u2264 32 s over\n * YNCA, objects correct in the same start). A memory without the field is schema 0 \u2014 every\n * installation before 2.6.0 \u2014 and is re-learned once by the first release that carries this.\n *\n * Bump it when a release changes what discovery PRODUCES (a new declaration source, a changed\n * candidate list, a new derivation rule); leave it alone when only values, logging or the wire\n * paths change. `discovery-schema.test.ts` holds the object inventory's shape against it in both\n * directions \u2014 output changed on a released schema without a bump fails, a bump without a change\n * fails \u2014 with the stamp `test/discovery-schema.json`. (2.6.0: the adapter-VERSION trigger was\n * rejected in the advisor round \u2014 every patch release would re-sweep every device for a result\n * the schema bump already guarantees when discovery really changed. Since 2.7.0 a transport can\n * ask for a re-coordination within the session, so a late object does materialise \u2014 but that is\n * ADDITIVE; a changed discovery LOGIC still needs the cold re-learn this constant triggers.)\n */\nexport const DISCOVERY_SCHEMA = 2;\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBO,MAAM,mBAAmB;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -78,6 +78,11 @@ class XmlDeviceController {
|
|
|
78
78
|
createdChannels = /* @__PURE__ */ new Set();
|
|
79
79
|
/** The per-zone `Input_Sel_Item` lists and the device description, kept for a mid-session build. */
|
|
80
80
|
inputsByZone = /* @__PURE__ */ new Map();
|
|
81
|
+
/**
|
|
82
|
+
* Per zone: the label the device carries for each input value (`<Title>`, e.g. HDMI1 → "Apple
|
|
83
|
+
* TV"). The dropdown shows these, the value written to the device stays the protocol's own.
|
|
84
|
+
*/
|
|
85
|
+
inputLabelsByZone = /* @__PURE__ */ new Map();
|
|
81
86
|
deviceDescriptor = { programs: [], sleep: [], adaptiveDrc: [] };
|
|
82
87
|
/**
|
|
83
88
|
* The spelling this device answers its amplifier block with (see XmlDialect) — learned from
|
|
@@ -138,6 +143,7 @@ class XmlDeviceController {
|
|
|
138
143
|
this.zones = answered.map((probe) => probe.zone);
|
|
139
144
|
const model = config.model;
|
|
140
145
|
const inputsByZone = /* @__PURE__ */ new Map();
|
|
146
|
+
const inputLabels = /* @__PURE__ */ new Map();
|
|
141
147
|
for (const zone of this.zones) {
|
|
142
148
|
const body = await this.probeXml(
|
|
143
149
|
`xmlInputs:${zone.key}`,
|
|
@@ -145,6 +151,7 @@ class XmlDeviceController {
|
|
|
145
151
|
"<Input><Input_Sel_Item>GetParam</Input_Sel_Item></Input>"
|
|
146
152
|
);
|
|
147
153
|
inputsByZone.set(zone.key, (0, import_protocol.parseInputList)(body));
|
|
154
|
+
inputLabels.set(zone.key, (0, import_protocol.parseInputLabels)(body));
|
|
148
155
|
}
|
|
149
156
|
const descriptor = await this.probeDescriptor();
|
|
150
157
|
this.zoneCommands = {
|
|
@@ -163,6 +170,7 @@ class XmlDeviceController {
|
|
|
163
170
|
this.zoneFields.set(zone.key, fields);
|
|
164
171
|
}
|
|
165
172
|
this.inputsByZone = inputsByZone;
|
|
173
|
+
this.inputLabelsByZone = inputLabels;
|
|
166
174
|
this.deviceDescriptor = descriptor;
|
|
167
175
|
const createdChannels = this.createdChannels;
|
|
168
176
|
for (const zone of this.zones) {
|
|
@@ -725,7 +733,11 @@ class XmlDeviceController {
|
|
|
725
733
|
const declaredList = this.declaredListFor(entry.state, zone.key, inputsByZone, descriptor);
|
|
726
734
|
const declared = declaredList !== void 0 && declaredList.length > 0;
|
|
727
735
|
if (declared) {
|
|
728
|
-
|
|
736
|
+
const labels = entry.state === "input" ? this.inputLabelsByZone.get(zone.key) : void 0;
|
|
737
|
+
common.states = Object.fromEntries(declaredList.map((value) => {
|
|
738
|
+
var _a2;
|
|
739
|
+
return [value, (_a2 = labels == null ? void 0 : labels[value]) != null ? _a2 : value];
|
|
740
|
+
}));
|
|
729
741
|
}
|
|
730
742
|
if (entry.state === "sound.dialogueLevel" && descriptor.dialogueLevel) {
|
|
731
743
|
common.min = descriptor.dialogueLevel.min;
|