homebridge-nuheat2 1.2.13 → 1.2.14

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/CHANGELOG.md CHANGED
@@ -4,6 +4,12 @@ All notable changes to this project should be documented in this file
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [1.2.14] - 2026-04-27
8
+
9
+ ### Changed
10
+
11
+ - Make the custom Homebridge admin UI styles inherit the active Homebridge theme instead of forcing a separate dark design
12
+
7
13
  ## [1.2.13] - 2026-04-24
8
14
 
9
15
  ### Changed
@@ -1,20 +1,17 @@
1
- @import url("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;600&display=swap");
2
-
3
1
  :root {
4
- --bg: #111316;
5
- --panel: #1a1d22;
6
- --panel-soft: #22262d;
7
- --input: #111820;
8
- --text: #f4f7fb;
9
- --muted: #b6c0cc;
10
- --primary: #f3ba4d;
11
- --primary-text: #211400;
12
- --secondary: #2b313a;
13
- --border: #3a414c;
14
- --shadow: 0 16px 28px rgba(0, 0, 0, 0.28);
15
- --warning: #f3ba4d;
16
- --danger: #ff6b6b;
17
- --success: #4fd1a5;
2
+ --plugin-border: var(
3
+ --bs-border-color-translucent,
4
+ rgba(148, 163, 184, 0.28)
5
+ );
6
+ --plugin-strong-border: rgba(148, 163, 184, 0.42);
7
+ --plugin-subtle-surface: rgba(148, 163, 184, 0.08);
8
+ --plugin-accent: var(--bs-primary, #0a84ff);
9
+ --plugin-accent-surface: rgba(10, 132, 255, 0.08);
10
+ --plugin-warning-surface: rgba(245, 158, 11, 0.12);
11
+ --plugin-success-surface: rgba(34, 197, 94, 0.12);
12
+ --plugin-danger-surface: rgba(239, 68, 68, 0.12);
13
+ --plugin-tile-ink: currentColor;
14
+ --plugin-tile-muted: currentColor;
18
15
  }
19
16
 
20
17
  * {
@@ -23,41 +20,45 @@
23
20
 
24
21
  body {
25
22
  margin: 0;
26
- font-family: "Space Grotesk", "Segoe UI", sans-serif;
27
- background: linear-gradient(
28
- 180deg,
29
- rgba(243, 186, 77, 0.1),
30
- transparent 260px
31
- ),
32
- var(--bg);
33
- color: var(--text);
23
+ color: inherit;
24
+ background: transparent;
25
+ font: inherit;
34
26
  }
35
27
 
36
28
  .container {
37
29
  max-width: 920px;
38
30
  margin: 0 auto;
39
- padding: 28px 24px 24px;
31
+ padding: 24px;
40
32
  display: grid;
41
33
  gap: 18px;
34
+ color: inherit;
42
35
  }
43
36
 
44
37
  header h1 {
45
- font-size: 2.15rem;
46
- line-height: 1.1;
47
38
  margin: 0 0 8px;
39
+ font-size: 2rem;
40
+ line-height: 1.1;
41
+ }
42
+
43
+ .subtitle,
44
+ .help,
45
+ .muted {
46
+ color: currentColor;
47
+ opacity: 0.72;
48
48
  }
49
49
 
50
- .subtitle {
50
+ .subtitle,
51
+ .help {
51
52
  margin: 0;
52
- color: var(--muted);
53
+ line-height: 1.5;
53
54
  }
54
55
 
55
56
  .panel {
56
- background: var(--panel);
57
- border: 1px solid var(--border);
57
+ color: inherit;
58
+ background: transparent;
59
+ border: 1px solid var(--plugin-border);
58
60
  border-radius: 8px;
59
61
  padding: 22px;
60
- box-shadow: var(--shadow);
61
62
  }
62
63
 
63
64
  .panel h2 {
@@ -82,16 +83,6 @@ header h1 {
82
83
  gap: 16px;
83
84
  }
84
85
 
85
- .help {
86
- color: var(--muted);
87
- margin: 0;
88
- line-height: 1.5;
89
- }
90
-
91
- .muted {
92
- color: var(--muted);
93
- }
94
-
95
86
  .settings-grid,
96
87
  .split-grid {
97
88
  display: grid;
@@ -103,33 +94,29 @@ header h1 {
103
94
  .field {
104
95
  display: grid;
105
96
  gap: 7px;
106
- color: var(--text);
97
+ color: inherit;
107
98
  font-size: 0.95rem;
108
99
  font-weight: 600;
109
100
  }
110
101
 
102
+ .field input,
103
+ .field select {
104
+ width: 100%;
105
+ }
106
+
111
107
  .field small,
112
108
  .checkbox small {
113
- color: var(--muted);
109
+ color: currentColor;
114
110
  display: block;
115
111
  font-size: 0.82rem;
116
112
  font-weight: 400;
117
113
  line-height: 1.35;
118
- }
119
-
120
- select,
121
- input {
122
- width: 100%;
123
- padding: 12px 14px;
124
- border-radius: 7px;
125
- border: 1px solid var(--border);
126
- background: var(--input);
127
- color: var(--text);
128
- font-size: 1rem;
114
+ opacity: 0.72;
129
115
  }
130
116
 
131
117
  input::placeholder {
132
- color: #64748b;
118
+ color: currentColor;
119
+ opacity: 0.48;
133
120
  }
134
121
 
135
122
  .checkbox {
@@ -137,7 +124,7 @@ input::placeholder {
137
124
  align-items: flex-start;
138
125
  gap: 10px;
139
126
  margin-top: 18px;
140
- color: var(--text);
127
+ color: inherit;
141
128
  font-weight: 600;
142
129
  }
143
130
 
@@ -152,8 +139,7 @@ input::placeholder {
152
139
  }
153
140
 
154
141
  .readonly input {
155
- background: #111827;
156
- opacity: 0.75;
142
+ opacity: 0.68;
157
143
  }
158
144
 
159
145
  .actions {
@@ -164,31 +150,29 @@ input::placeholder {
164
150
  }
165
151
 
166
152
  button {
167
- border: none;
168
- border-radius: 7px;
169
- padding: 12px 20px;
170
- font-size: 0.95rem;
171
- font-weight: 600;
172
- cursor: pointer;
173
- transition:
174
- transform 0.15s ease,
175
- box-shadow 0.15s ease;
153
+ font: inherit;
176
154
  }
177
155
 
178
- button:hover {
179
- transform: translateY(-1px);
180
- box-shadow: 0 12px 24px rgba(243, 186, 77, 0.14);
156
+ button.primary,
157
+ button.secondary {
158
+ border-radius: 6px;
181
159
  }
182
160
 
183
- .primary {
184
- background: var(--primary);
185
- color: var(--primary-text);
161
+ button.primary {
162
+ color: var(--bs-btn-color, #fff);
163
+ background: var(--bs-primary, var(--plugin-accent));
164
+ border: 1px solid var(--bs-primary, var(--plugin-accent));
186
165
  }
187
166
 
188
- .secondary {
189
- background: var(--secondary);
190
- color: var(--text);
191
- border: 1px solid var(--border);
167
+ button.secondary {
168
+ color: inherit;
169
+ background: transparent;
170
+ border: 1px solid var(--plugin-border);
171
+ }
172
+
173
+ button.primary:hover,
174
+ button.secondary:hover {
175
+ filter: brightness(1.04);
192
176
  }
193
177
 
194
178
  .toast-container {
@@ -202,33 +186,37 @@ button:hover {
202
186
  }
203
187
 
204
188
  .toast {
205
- background: var(--panel);
206
- border: 1px solid var(--border);
189
+ color: inherit;
190
+ background: var(--bs-body-bg, var(--plugin-subtle-surface));
191
+ border: 1px solid var(--plugin-border);
207
192
  border-radius: 8px;
208
193
  padding: 12px 16px;
209
- box-shadow: var(--shadow);
210
194
  min-width: 220px;
211
195
  animation: slide-in 0.2s ease-out;
212
196
  }
213
197
 
214
198
  .toast.success {
215
- border-color: #22c55e;
199
+ background: var(--plugin-success-surface);
200
+ border-color: rgba(34, 197, 94, 0.42);
216
201
  }
217
202
 
218
203
  .toast.error {
219
- border-color: #ef4444;
204
+ background: var(--plugin-danger-surface);
205
+ border-color: rgba(239, 68, 68, 0.42);
220
206
  }
221
207
 
222
208
  .toast.warning {
223
- border-color: #f59e0b;
209
+ background: var(--plugin-warning-surface);
210
+ border-color: rgba(245, 158, 11, 0.42);
224
211
  }
225
212
 
226
213
  .list-panel,
227
214
  .diagnostic-card {
228
- border: 1px solid var(--border);
215
+ color: var(--plugin-tile-ink);
216
+ background: var(--plugin-subtle-surface);
217
+ border: 1px solid var(--plugin-border);
229
218
  border-radius: 8px;
230
219
  padding: 16px;
231
- background: var(--panel-soft);
232
220
  }
233
221
 
234
222
  .dynamic-list {
@@ -238,11 +226,12 @@ button:hover {
238
226
  }
239
227
 
240
228
  .empty-list {
241
- color: var(--muted);
242
- border: 1px dashed var(--border);
229
+ color: var(--plugin-tile-muted);
230
+ border: 1px dashed var(--plugin-strong-border);
243
231
  border-radius: 8px;
244
232
  padding: 14px;
245
233
  line-height: 1.45;
234
+ opacity: 0.78;
246
235
  }
247
236
 
248
237
  .config-row {
@@ -256,13 +245,14 @@ button:hover {
256
245
  display: inline-flex;
257
246
  align-items: center;
258
247
  gap: 8px;
259
- color: var(--muted);
248
+ color: var(--plugin-tile-muted);
260
249
  font-size: 0.86rem;
261
250
  white-space: nowrap;
251
+ opacity: 0.78;
262
252
  }
263
253
 
264
254
  .remove-row {
265
- padding: 10px 12px;
255
+ padding: 8px 12px;
266
256
  }
267
257
 
268
258
  .diagnostics-summary {
@@ -282,58 +272,50 @@ button:hover {
282
272
  }
283
273
 
284
274
  .diagnostic-card dt {
285
- color: var(--muted);
275
+ color: var(--plugin-tile-muted);
286
276
  font-size: 0.82rem;
287
277
  margin-bottom: 4px;
278
+ opacity: 0.72;
288
279
  }
289
280
 
290
281
  .diagnostic-card dd {
291
282
  margin: 0;
283
+ color: var(--plugin-tile-ink);
292
284
  word-break: break-word;
293
285
  }
294
286
 
295
- .pill {
287
+ .pill,
288
+ .status-pill {
296
289
  display: inline-flex;
297
290
  align-items: center;
291
+ border: 1px solid var(--plugin-border);
298
292
  border-radius: 999px;
299
- padding: 6px 10px;
300
- font-size: 0.8rem;
301
- border: 1px solid var(--border);
293
+ color: inherit;
294
+ background: transparent;
302
295
  white-space: nowrap;
303
296
  }
304
297
 
305
- .pill.good {
306
- background: rgba(34, 197, 94, 0.12);
307
- border-color: rgba(34, 197, 94, 0.4);
308
- color: #86efac;
309
- }
310
-
311
- .pill.warn {
312
- background: rgba(245, 158, 11, 0.12);
313
- border-color: rgba(245, 158, 11, 0.4);
314
- color: #fcd34d;
298
+ .pill {
299
+ padding: 6px 10px;
300
+ font-size: 0.8rem;
315
301
  }
316
302
 
317
303
  .status-pill {
318
- border: 1px solid var(--border);
319
- border-radius: 999px;
320
- color: var(--muted);
304
+ padding: 7px 11px;
321
305
  font-size: 0.82rem;
322
306
  font-weight: 600;
323
- padding: 7px 11px;
324
- white-space: nowrap;
325
307
  }
326
308
 
309
+ .pill.good,
327
310
  .status-pill.good {
328
- background: rgba(79, 209, 165, 0.12);
329
- border-color: rgba(79, 209, 165, 0.45);
330
- color: #9ff0d4;
311
+ background: var(--plugin-success-surface);
312
+ border-color: rgba(34, 197, 94, 0.42);
331
313
  }
332
314
 
315
+ .pill.warn,
333
316
  .status-pill.warn {
334
- background: rgba(243, 186, 77, 0.12);
335
- border-color: rgba(243, 186, 77, 0.45);
336
- color: #ffd98a;
317
+ background: var(--plugin-warning-surface);
318
+ border-color: rgba(245, 158, 11, 0.42);
337
319
  }
338
320
 
339
321
  @keyframes slide-in {
@@ -353,7 +335,7 @@ button:hover {
353
335
  }
354
336
 
355
337
  .container {
356
- padding: 22px 16px;
338
+ padding: 20px 16px;
357
339
  }
358
340
 
359
341
  .settings-grid,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homebridge-nuheat2",
3
- "version": "1.2.13",
3
+ "version": "1.2.14",
4
4
  "description": "Homebridge Platform for NuHeat Signature Thermostats",
5
5
  "main": "index.js",
6
6
  "scripts": {