homebridge-sonos-scenes 0.1.5 → 0.1.6

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 CHANGED
@@ -1,4 +1,10 @@
1
- # homebridge-sonos-scenes
1
+ <p align="center">
2
+ <img src="docs/assets/homebridge-sonos-scenes-icon-512x512.png" alt="homebridge-sonos-scenes icon" width="164">
3
+ </p>
4
+
5
+ <h1 align="center">homebridge-sonos-scenes</h1>
6
+
7
+ <p align="center">Homebridge plugin for Sonos workflow scenes and orchestration.</p>
2
8
 
3
9
  `homebridge-sonos-scenes` is a Homebridge plugin scaffold for Sonos workflow scenes.
4
10
 
@@ -37,7 +37,7 @@
37
37
  border: 1px solid rgba(22, 32, 51, 0.08);
38
38
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.05);
39
39
  background: white;
40
- overflow: hidden;
40
+ overflow: visible;
41
41
  }
42
42
 
43
43
  .scene-mode-panel .card-header {
@@ -45,6 +45,34 @@
45
45
  background: rgba(255, 255, 255, 0.65);
46
46
  }
47
47
 
48
+ .scene-section-header {
49
+ display: flex;
50
+ flex-wrap: wrap;
51
+ align-items: flex-start;
52
+ justify-content: space-between;
53
+ gap: 0.85rem 1rem;
54
+ padding: 1rem 1.15rem;
55
+ }
56
+
57
+ .scene-section-header-copy {
58
+ display: grid;
59
+ gap: 0.35rem;
60
+ min-width: 0;
61
+ flex: 1 1 260px;
62
+ }
63
+
64
+ .scene-section-actions {
65
+ display: flex;
66
+ flex-wrap: wrap;
67
+ gap: 0.65rem;
68
+ align-items: center;
69
+ justify-content: flex-end;
70
+ }
71
+
72
+ .scene-section-actions .btn {
73
+ white-space: nowrap;
74
+ }
75
+
48
76
  .scene-mode-panel .card-body {
49
77
  display: grid;
50
78
  gap: 1rem;
@@ -66,6 +94,8 @@
66
94
 
67
95
  .scene-mode-choice input {
68
96
  margin-right: 0.65rem;
97
+ accent-color: var(--scene-accent);
98
+ transform: scale(1.08);
69
99
  }
70
100
 
71
101
  .scene-mode-choice-title {
@@ -148,7 +178,7 @@
148
178
 
149
179
  .scene-card .scene-help,
150
180
  .scene-mode-panel .scene-help {
151
- color: #667085;
181
+ color: #556579;
152
182
  }
153
183
 
154
184
  .scene-list button {
@@ -334,7 +364,7 @@
334
364
  }
335
365
 
336
366
  .scene-inline-note {
337
- color: #667085;
367
+ color: #5f6f84;
338
368
  font-size: 0.88rem;
339
369
  line-height: 1.45;
340
370
  }
@@ -344,10 +374,10 @@
344
374
  align-items: center;
345
375
  gap: 0.4rem;
346
376
  flex-wrap: wrap;
377
+ position: relative;
347
378
  }
348
379
 
349
380
  .scene-info-tag {
350
- position: relative;
351
381
  display: inline-flex;
352
382
  align-items: center;
353
383
  justify-content: center;
@@ -370,10 +400,11 @@
370
400
 
371
401
  .scene-tooltip {
372
402
  position: absolute;
373
- top: 50%;
374
- left: calc(100% + 0.55rem);
375
- transform: translateY(-50%);
376
- width: min(320px, 70vw);
403
+ top: calc(100% + 0.45rem);
404
+ left: 0;
405
+ transform: none;
406
+ width: min(320px, calc(100vw - 4rem));
407
+ max-width: 100%;
377
408
  padding: 0.65rem 0.75rem;
378
409
  border-radius: 0.7rem;
379
410
  border: 1px solid rgba(170, 198, 255, 0.28);
@@ -400,15 +431,6 @@
400
431
  grid-template-columns: 1fr;
401
432
  }
402
433
  }
403
-
404
- @media (max-width: 720px) {
405
- .scene-tooltip {
406
- top: calc(100% + 0.45rem);
407
- left: 0;
408
- transform: none;
409
- width: min(280px, 78vw);
410
- }
411
- }
412
434
  </style>
413
435
 
414
436
  <div class="scene-shell">
@@ -444,12 +466,11 @@
444
466
 
445
467
  <section class="scene-mode-grid">
446
468
  <section class="scene-mode-panel card scene-card">
447
- <div class="card-header d-flex justify-content-between align-items-center">
448
- <div>
469
+ <div class="card-header scene-section-header">
470
+ <div class="scene-section-header-copy">
449
471
  <strong>Execution Mode</strong>
450
472
  <div class="scene-help">Choose whether scenes stay fully local or can use a self-hosted Sonos cloud broker later.</div>
451
473
  </div>
452
- <div id="cloud-mode-pill" class="scene-status-pill local">Local Only</div>
453
474
  </div>
454
475
  <div class="card-body d-grid gap-3">
455
476
  <label class="scene-mode-choice" data-mode-choice="local_only">
@@ -539,13 +560,15 @@
539
560
 
540
561
  <div class="scene-grid">
541
562
  <section class="card scene-card">
542
- <div class="card-header d-flex justify-content-between align-items-center">
543
- <div>
563
+ <div class="card-header scene-section-header">
564
+ <div class="scene-section-header-copy">
544
565
  <strong>Scenes</strong>
545
566
  <div class="scene-help">Each saved scene becomes a HomeKit switch plus a companion volume speaker.</div>
546
567
  <div class="scene-inline-note mt-2">Save scene changes in the editor, then use Homebridge&apos;s footer Save button when you&apos;re ready to write everything to `config.json`.</div>
547
568
  </div>
548
- <button class="btn btn-sm btn-outline-primary" id="new-scene-button" type="button">New Scene</button>
569
+ <div class="scene-section-actions">
570
+ <button class="btn btn-sm btn-outline-primary" id="new-scene-button" type="button">New Scene</button>
571
+ </div>
549
572
  </div>
550
573
  <div class="card-body">
551
574
  <div id="scene-list" class="scene-list"></div>
@@ -553,13 +576,13 @@
553
576
  </section>
554
577
 
555
578
  <section class="card scene-card">
556
- <div class="card-header d-flex justify-content-between align-items-center">
557
- <div>
579
+ <div class="card-header scene-section-header">
580
+ <div class="scene-section-header-copy">
558
581
  <strong>Scene Editor</strong>
559
582
  <div class="scene-help">Stable Sonos IDs are stored under the hood; the UI keeps room selection friendly.</div>
560
583
  <div class="scene-inline-note mt-2">Save Scene Changes updates this scene in the list above. Homebridge&apos;s footer Save button writes the full plugin config to disk.</div>
561
584
  </div>
562
- <div class="d-flex gap-2">
585
+ <div class="scene-section-actions">
563
586
  <button class="btn btn-sm btn-outline-danger" id="delete-scene-button" type="button">Delete</button>
564
587
  <button class="btn btn-sm btn-primary" id="save-scene-button" type="button">Save Scene Changes</button>
565
588
  </div>
@@ -791,7 +814,6 @@
791
814
  testButton: document.getElementById("test-button"),
792
815
  cloudModeInputs: Array.from(document.querySelectorAll("input[name='cloud-mode']")),
793
816
  cloudModeChoices: Array.from(document.querySelectorAll("[data-mode-choice]")),
794
- cloudModePill: document.getElementById("cloud-mode-pill"),
795
817
  cloudBrokerPanel: document.getElementById("cloud-broker-panel"),
796
818
  cloudBrokerCopy: document.getElementById("cloud-broker-copy"),
797
819
  cloudBrokerFields: document.getElementById("cloud-broker-fields"),
@@ -1021,8 +1043,6 @@
1021
1043
  });
1022
1044
 
1023
1045
  const isHybrid = cloud.mode === "local_plus_cloud";
1024
- elements.cloudModePill.textContent = isHybrid ? "Local + Cloud" : "Local Only";
1025
- elements.cloudModePill.className = `scene-status-pill ${isHybrid ? "pending" : "local"}`;
1026
1046
  elements.cloudBrokerPanel.classList.toggle("scene-cloud-hidden", !isHybrid);
1027
1047
  elements.cloudBrokerCopy.textContent = isHybrid
1028
1048
  ? "Only needed if you run your own broker. The settings below stay with this plugin config and are ignored whenever Local Only is active."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homebridge-sonos-scenes",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "Homebridge plugin for Sonos workflow scenes and orchestration.",
5
5
  "author": "applemanj",
6
6
  "homepage": "https://github.com/applemanj/homebridge-sonos-scenes#readme",