signalk-masterbus 0.1.0 → 0.2.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 +38 -1
- package/bin/darwin-arm64/masterbus-signalk +0 -0
- package/bin/darwin-x64/masterbus-signalk +0 -0
- package/bin/linux-arm/masterbus-signalk +0 -0
- package/bin/linux-arm64/masterbus-signalk +0 -0
- package/bin/linux-x64/masterbus-signalk +0 -0
- package/bin/win32-x64/masterbus-signalk.exe +0 -0
- package/package.json +2 -2
- package/plugin/config.d.ts +0 -3
- package/plugin/config.d.ts.map +1 -1
- package/plugin/config.js +4 -2
- package/plugin/config.js.map +1 -1
- package/plugin/index.d.ts +5 -0
- package/plugin/index.d.ts.map +1 -1
- package/plugin/index.js +18 -2
- package/plugin/index.js.map +1 -1
- package/public/assets/index-CS38Ntzt.css +1 -0
- package/public/assets/index-D7yUPbrK.js +49 -0
- package/public/index.html +2 -2
- package/public/assets/index-D5ZZgo9o.js +0 -49
- package/public/assets/index-rkv4IC1b.css +0 -1
package/README.md
CHANGED
|
@@ -51,7 +51,44 @@ tarball), set `api_listen` and `api_token` in its `config.ini`, and give
|
|
|
51
51
|
the plugin the host, ports and token. Everything below works the same.
|
|
52
52
|
|
|
53
53
|
A container is not required and not offered: the daemon needs the CAN
|
|
54
|
-
interface or the USB device, which a container only complicates.
|
|
54
|
+
interface or the USB device, which a container only complicates. (Signal K
|
|
55
|
+
itself may well run in one: with host networking the container shares the
|
|
56
|
+
host's CAN interface, and bundled mode works inside it.)
|
|
57
|
+
|
|
58
|
+
### Switching between bundled and external
|
|
59
|
+
|
|
60
|
+
In **Server → Plugin Config → MasterBus**, the first setting, _Where the
|
|
61
|
+
MasterBus daemon runs_, selects the mode; fill in that mode's section and
|
|
62
|
+
save. Signal K restarts the plugin on save: bundled mode stops its child
|
|
63
|
+
daemon, external mode just disconnects. The other mode's settings are kept
|
|
64
|
+
but ignored, so switching back later needs no retyping.
|
|
65
|
+
|
|
66
|
+
**Going to external** needs a daemon already running on the machine wired
|
|
67
|
+
to the bus, with its API enabled in its `config.ini`:
|
|
68
|
+
|
|
69
|
+
```ini
|
|
70
|
+
listen = 0.0.0.0:3009
|
|
71
|
+
api_listen = 0.0.0.0:3010
|
|
72
|
+
api_token = <something long and random>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Both ports must be reachable from the Signal K host. The token is
|
|
76
|
+
mandatory on any address other than loopback; the daemon refuses to start
|
|
77
|
+
without one. Give the plugin the host, the two ports and the same token.
|
|
78
|
+
|
|
79
|
+
**Going to bundled** needs only the selection, provided the Signal K host
|
|
80
|
+
is the one wired to the bus. Transport on auto-detect picks a plugged-in
|
|
81
|
+
USB link, else the only CAN interface; set it explicitly when the machine
|
|
82
|
+
has several.
|
|
83
|
+
|
|
84
|
+
Two things are not automatic:
|
|
85
|
+
|
|
86
|
+
- The modes do not share a mapping. Bundled mode edits `mapping.json`
|
|
87
|
+
under the plugin's data directory; external mode edits the one on the
|
|
88
|
+
daemon's machine, through its API. Copy the file across when moving.
|
|
89
|
+
- A generic "Signal K over TCP" data connection to port 3009, left over from
|
|
90
|
+
running the daemon as a sidecar, must be disabled, or every value arrives
|
|
91
|
+
twice with two different sources.
|
|
55
92
|
|
|
56
93
|
## Telling it what to publish
|
|
57
94
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "signalk-masterbus",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"masterbusDaemon": "0.4.
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"masterbusDaemon": "0.4.2",
|
|
5
5
|
"description": "Mastervolt MasterBus for Signal K: publish battery, charger and inverter values, edit the mapping in the browser, and switch devices from Signal K",
|
|
6
6
|
"main": "plugin/index.js",
|
|
7
7
|
"type": "module",
|
package/plugin/config.d.ts
CHANGED
package/plugin/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,UAAU,CAAA;AACzC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAA;AAE9C,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,SAAS,EAAE,SAAS,CAAA;IACpB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,aAAa,CAAA;IACtB,QAAQ,EAAE,cAAc,CAAA;IACxB,yEAAyE;IACzE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED,eAAO,MAAM,QAAQ,EAAE,MAiBtB,CAAA;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAWpD;AAED,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuGlB,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,UAAU,CAAA;AACzC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAA;AAE9C,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,SAAS,EAAE,SAAS,CAAA;IACpB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,aAAa,CAAA;IACtB,QAAQ,EAAE,cAAc,CAAA;IACxB,yEAAyE;IACzE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED,eAAO,MAAM,QAAQ,EAAE,MAiBtB,CAAA;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAWpD;AAED,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuGlB,CAAA;AAKD,eAAO,MAAM,SAAS;;;;;;CAErB,CAAA"}
|
package/plugin/config.js
CHANGED
|
@@ -136,8 +136,10 @@ export const SCHEMA = {
|
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
};
|
|
139
|
+
// The installer code is a number, and the form has no password widget for
|
|
140
|
+
// numbers ("No widget 'password' for type 'number'" takes the whole page
|
|
141
|
+
// down), so only the token is masked.
|
|
139
142
|
export const UI_SCHEMA = {
|
|
140
|
-
external: { token: { 'ui:widget': 'password' } }
|
|
141
|
-
installerCode: { 'ui:widget': 'password' }
|
|
143
|
+
external: { token: { 'ui:widget': 'password' } }
|
|
142
144
|
};
|
|
143
145
|
//# sourceMappingURL=config.js.map
|
package/plugin/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiCH,MAAM,CAAC,MAAM,QAAQ,GAAW;IAC9B,IAAI,EAAE,SAAS;IACf,OAAO,EAAE;QACP,SAAS,EAAE,MAAM;QACjB,UAAU,EAAE,EAAE;QACd,eAAe,EAAE,EAAE;QACnB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,EAAE;KACf;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,EAAE;KACV;IACD,aAAa,EAAE,IAAI;CACpB,CAAA;AAED,yEAAyE;AACzE,MAAM,UAAU,YAAY,CAAC,MAAe;IAC1C,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAoB,CAAA;IAC3C,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QACpD,OAAO,EAAE,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE;QACtD,QAAQ,EAAE,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE;QACzD,aAAa,EACX,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC;YACrE,CAAC,CAAC,CAAC,CAAC,aAAa;YACjB,CAAC,CAAC,IAAI;KACX,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,iCAAiC;YACxC,WAAW,EACT,uFAAuF;gBACvF,gFAAgF;gBAChF,oEAAoE;YACtE,IAAI,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;YAC7B,SAAS,EAAE,CAAC,uBAAuB,EAAE,2BAA2B,CAAC;YACjE,OAAO,EAAE,SAAS;SACnB;QACD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,gBAAgB;YACvB,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,WAAW;oBAClB,WAAW,EACT,mFAAmF;wBACnF,0CAA0C;oBAC5C,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;oBAC5B,SAAS,EAAE,CAAC,aAAa,EAAE,mBAAmB,EAAE,qBAAqB,CAAC;oBACtE,OAAO,EAAE,MAAM;iBAChB;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,QAAQ;oBACf,WAAW,EAAE,2EAA2E;oBACxF,OAAO,EAAE,EAAE;iBACZ;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,4BAA4B;oBACnC,WAAW,EACT,mFAAmF;wBACnF,oFAAoF;wBACpF,UAAU;oBACZ,OAAO,EAAE,EAAE;iBACZ;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,qBAAqB;oBAC5B,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,KAAK;iBACf;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,wBAAwB;oBAC/B,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,KAAK;iBACf;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,qCAAqC;oBAC5C,WAAW,EACT,gFAAgF;wBAChF,oCAAoC;oBACtC,OAAO,EAAE,EAAE;iBACZ;aACF;SACF;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,iBAAiB;YACxB,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE;gBAC7D,OAAO,EAAE;oBACP,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,UAAU;oBACjB,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,KAAK;iBACf;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,aAAa;oBACpB,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,KAAK;iBACf;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,WAAW;oBAClB,WAAW,EAAE,6CAA6C;oBAC1D,OAAO,EAAE,EAAE;iBACZ;aACF;SACF;QACD,aAAa,EAAE;YACb,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;YACxB,KAAK,EAAE,gBAAgB;YACvB,WAAW,EACT,kFAAkF;gBAClF,iDAAiD;YACnD,OAAO,EAAE,IAAI;SACd;KACF;CACF,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/plugin/index.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { Plugin, ServerAPI } from '@signalk/server-api';
|
|
2
2
|
export declare const PLUGIN_ID = "signalk-masterbus";
|
|
3
|
+
/** This plugin's own version and the masterbus version it bundles. */
|
|
4
|
+
export declare const VERSIONS: {
|
|
5
|
+
plugin: string;
|
|
6
|
+
daemon: string;
|
|
7
|
+
};
|
|
3
8
|
/**
|
|
4
9
|
* Mastervolt MasterBus for Signal K.
|
|
5
10
|
*
|
package/plugin/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAgB,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAU1E,eAAO,MAAM,SAAS,sBAAsB,CAAA;AAE5C,sEAAsE;AACtE,eAAO,MAAM,QAAQ,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAWnD,CAAA;AAKJ;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CA8LrD"}
|
package/plugin/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
1
2
|
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
2
4
|
import { DaemonClient } from './client.js';
|
|
3
5
|
import { SCHEMA, UI_SCHEMA, withDefaults } from './config.js';
|
|
4
6
|
import { DaemonManager, errMsg, resolveBinary } from './daemon.js';
|
|
@@ -6,6 +8,17 @@ import { PutBridge } from './put-bridge.js';
|
|
|
6
8
|
import { registerRoutes } from './router.js';
|
|
7
9
|
import { StreamForwarder } from './stream-forwarder.js';
|
|
8
10
|
export const PLUGIN_ID = 'signalk-masterbus';
|
|
11
|
+
/** This plugin's own version and the masterbus version it bundles. */
|
|
12
|
+
export const VERSIONS = (() => {
|
|
13
|
+
try {
|
|
14
|
+
const own = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', 'package.json');
|
|
15
|
+
const pkg = JSON.parse(fs.readFileSync(own, 'utf8'));
|
|
16
|
+
return { plugin: pkg.version ?? '?', daemon: pkg.masterbusDaemon ?? '?' };
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return { plugin: '?', daemon: '?' };
|
|
20
|
+
}
|
|
21
|
+
})();
|
|
9
22
|
/** How often the daemon is asked for its status and the mapping re-synced. */
|
|
10
23
|
const POLL_MS = 10_000;
|
|
11
24
|
/**
|
|
@@ -34,6 +47,7 @@ export default function plugin(app) {
|
|
|
34
47
|
// notices and does not resurrect anything.
|
|
35
48
|
let generation = 0;
|
|
36
49
|
const summary = () => ({
|
|
50
|
+
versions: VERSIONS,
|
|
37
51
|
mode: config?.mode ?? null,
|
|
38
52
|
connected: client !== null && lastStatus !== null,
|
|
39
53
|
daemon: daemon ? { running: daemon.running, recentLog: daemon.recentLog } : null,
|
|
@@ -43,7 +57,9 @@ export default function plugin(app) {
|
|
|
43
57
|
putPaths: bridge?.paths ?? []
|
|
44
58
|
});
|
|
45
59
|
const statusLine = (s) => {
|
|
46
|
-
const where = config?.mode === 'bundled'
|
|
60
|
+
const where = config?.mode === 'bundled'
|
|
61
|
+
? `Bundled daemon ${s.version}`
|
|
62
|
+
: `Daemon ${s.version} at ${client?.endpoint.host}`;
|
|
47
63
|
const problems = s.diagnostics.errors > 0
|
|
48
64
|
? `; ${s.diagnostics.errors} mapping entr${s.diagnostics.errors === 1 ? 'y' : 'ies'} skipped, see the editor`
|
|
49
65
|
: '';
|
|
@@ -159,7 +175,7 @@ export default function plugin(app) {
|
|
|
159
175
|
id: PLUGIN_ID,
|
|
160
176
|
name: 'MasterBus',
|
|
161
177
|
description: 'Mastervolt MasterBus: publish battery, charger and inverter values, edit the mapping ' +
|
|
162
|
-
|
|
178
|
+
`in the browser, and switch devices from Signal K. Bundles masterbus-signalk ${VERSIONS.daemon}.`,
|
|
163
179
|
schema: SCHEMA,
|
|
164
180
|
uiSchema: UI_SCHEMA,
|
|
165
181
|
start(options) {
|
package/plugin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--bg: #e4e5e6;--panel: #ffffff;--text: #29363d;--muted: #73818f;--line: #c2cfd6;--accent: #003399;--accent-text: #ffffff;--ok: #3a9d5d;--warn: #a67c00;--err: #d9534f;--sel: #f0f3f5;--mono: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;color-scheme:light}*{box-sizing:border-box}body{margin:0;font:14px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text)}button,input,select{font:inherit;color:inherit}button{border:1px solid var(--line);background:var(--panel);border-radius:6px;padding:4px 10px;cursor:pointer}button.primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}a.button{display:inline-block;border:1px solid var(--line);border-radius:6px;padding:4px 10px;color:var(--accent);text-decoration:none;background:var(--panel)}a.button:hover{background:var(--sel)}input[type=text],input[type=number],select{border:1px solid var(--line);border-radius:6px;padding:4px 8px;background:var(--panel)}code,.mono{font-family:var(--mono);font-size:12.5px}.app{display:grid;grid-template-rows:auto 1fr;height:100vh}header.top{display:flex;gap:16px;align-items:center;padding:10px 16px;border-bottom:1px solid var(--line);background:var(--panel);flex-wrap:wrap}header.top h1{font-size:16px;margin:0}header.top .status{color:var(--muted);flex:1;min-width:200px}header.top .status.err{color:var(--err)}.body{display:grid;grid-template-columns:280px 1fr;min-height:0}@media(max-width:700px){.body{grid-template-columns:1fr;grid-template-rows:auto 1fr}}aside.devices{border-right:1px solid var(--line);overflow:auto;background:var(--panel)}aside.devices .dev{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:8px 12px;background:transparent}aside.devices .dev.sel{background:var(--sel)}aside.devices .dev .name{font-weight:600}aside.devices .dev .meta{color:var(--muted);font-size:12px}main.fields{overflow:auto;padding:12px 16px}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.toolbar .spacer{flex:1}.dirty{color:var(--warn);font-weight:600}table.fields{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--line)}table.fields th,table.fields td{padding:5px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}table.fields th{font-weight:600;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.03em}table.fields tr.menu td{background:var(--sel);font-weight:600}table.fields td.path{font-family:var(--mono);font-size:12.5px;word-break:break-all}table.fields td.num{text-align:right;font-family:var(--mono);white-space:nowrap}.tag{display:inline-block;padding:0 6px;border-radius:10px;font-size:11px;border:1px solid var(--line);color:var(--muted);margin-left:4px}.diag{margin-top:14px;padding:8px 12px;border:1px solid var(--line);border-radius:6px;background:var(--panel)}.diag li{margin:2px 0}.sev-error{color:var(--err)}.sev-warning{color:var(--warn)}.sev-info{color:var(--muted)}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;padding:16px}.modal{background:var(--panel);border-radius:10px;padding:16px 18px;width:min(640px,100%);max-height:90vh;overflow:auto;box-shadow:0 10px 40px #0000004d}.modal h2{margin:0 0 4px;font-size:16px}.modal .sub{color:var(--muted);margin-bottom:12px}.modal label.row{display:flex;gap:8px;align-items:center;margin:8px 0}.modal input.path{width:100%;font-family:var(--mono)}.hint{margin:6px 0 10px;padding:6px 10px;border-radius:6px;border:1px solid var(--line)}.hint.ok{border-color:var(--ok)}.hint.warn{border-color:var(--warn)}.hint.err{border-color:var(--err)}.table-edit{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;align-items:center;margin:6px 0 10px}.actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}.empty{color:var(--muted);padding:24px;text-align:center}
|