@7365admin1/layer-common 4.122.0 → 4.122.1

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
@@ -1,5 +1,11 @@
1
1
  # @iservice365/layer-common
2
2
 
3
+ ## 4.122.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 811b0e5: Lift queue: after Connect gateway / New code, the card shows the ready-to-paste gateway settings (this app's address and the code) with Copy settings, Done, and three numbered setup steps; the Waiting line says what to check.
8
+
3
9
  ## 4.122.0
4
10
 
5
11
  ### Minor Changes
@@ -3228,11 +3234,11 @@ Monthly report: a month that had patrols opens the list of that month's patrol r
3228
3234
  `utils/console-tier.ts` + `composables/useConsoleTier.ts` mirror the server's
3229
3235
  own rule from two endpoints the console already calls, unprojected:
3230
3236
 
3231
- GET /api/members/user/:user/app/admin the Seven365 staff membership
3232
- GET /api/roles/id/:role that membership's role document
3237
+ GET /api/members/user/:user/app/admin the Seven365 staff membership
3238
+ GET /api/roles/id/:role that membership's role document
3233
3239
 
3234
- owner = member.type === "admin" && role.type === "admin" && role.default === true
3235
- staff = member.type === "admin" && role.type === "admin"
3240
+ owner = member.type === "admin" && role.type === "admin" && role.default === true
3241
+ staff = member.type === "admin" && role.type === "admin"
3236
3242
 
3237
3243
  `role.default` is the marker because it is the only property of a platform
3238
3244
  staff role no API caller can set - `role.controller.ts` validates create and
@@ -1272,6 +1272,9 @@ div.hero-editor__wp.hero-editor__sel, div.hero-editor__fid.hero-editor__sel { ou
1272
1272
  .hero-lift__gwreg { display: inline-block; margin: 4px 12px 0 0; font-family: monospace; }
1273
1273
  .hero-lift__gwact { margin-left: auto; display: flex; gap: 6px; }
1274
1274
  .hero-lift__gwcode { flex-basis: 100%; display: flex; align-items: center; flex-wrap: wrap; gap: 6px 10px; padding: 8px 10px; border: 1px solid rgb(var(--v-theme-warning)); }
1275
+ .hero-lift__gwini { flex-basis: 100%; margin: 0; padding: 8px 10px; font-family: monospace; font-size: 12px; white-space: pre-wrap; word-break: break-all; user-select: all; background: rgba(var(--v-theme-on-surface), 0.06); }
1276
+ .hero-lift__gwsteps { flex-basis: 100%; margin: 0; padding-left: 20px; font-size: 13px; }
1277
+ .hero-lift__gwsteps li { margin: 2px 0; }
1275
1278
  .hero-lift__gwcode code { font-family: monospace; word-break: break-all; user-select: all; }
1276
1279
  @media (max-width: 600px) {
1277
1280
  .hero-lift { grid-template-columns: 1fr; }
@@ -57,10 +57,18 @@
57
57
  <v-btn v-if="l.gateway" size="small" variant="text" :disabled="busy === `gw:${l.name}`" @click="disconnectGateway(l.name)">Disconnect</v-btn>
58
58
  </span>
59
59
  <div v-if="newCode?.lift === l.name" class="hero-lift__gwcode" role="alert">
60
- <b>Gateway code (shown once):</b>
61
- <code>{{ newCode.code }}</code>
62
- <v-btn size="x-small" variant="tonal" @click="copyCode">Copy</v-btn>
63
- <span class="hero-muted">Paste it as <code>code =</code> in the gateway's lift-gateway.ini, then start the gateway. This card turns Connected within seconds.</span>
60
+ <b>Gateway settings for {{ l.name }} - shown once, copy them now:</b>
61
+ <pre class="hero-lift__gwini">{{ gatewayIni }}</pre>
62
+ <span class="hero-lift__gwact">
63
+ <v-btn size="small" variant="tonal" @click="copyCode">Copy settings</v-btn>
64
+ <v-btn size="small" variant="text" @click="newCode = null">Done</v-btn>
65
+ </span>
66
+ <ol class="hero-lift__gwsteps">
67
+ <li>On the gateway (Raspberry Pi / PC), paste these two lines into the <code>[server]</code> section of <code>lift-gateway.ini</code>.</li>
68
+ <li>Check the link without the lift: <code>python3 lift_gateway.py -c lift-gateway.ini --simulate</code>. It prints "iService365 OK" and this card turns <b>Connected</b>.</li>
69
+ <li>Wire the lift board's MOD1 port, then run it without <code>--simulate</code>. Floor and door show once the lift's register list is in the <code>[decode]</code> section.</li>
70
+ </ol>
71
+ <span class="hero-muted">Lost the code? Press New code - the old one stops working.</span>
64
72
  </div>
65
73
  </div>
66
74
 
@@ -290,10 +298,14 @@ async function disconnectGateway(lift: string) {
290
298
  busy.value = "";
291
299
  }
292
300
  }
301
+ /** The gateway's [server] lines: this app's own address (it forwards /api to iService365) and the code. */
302
+ const gatewayIni = computed(() =>
303
+ newCode.value ? `url = ${typeof window !== "undefined" ? window.location.origin : ""}\ncode = ${newCode.value.code}` : "",
304
+ );
293
305
  async function copyCode() {
294
306
  try {
295
- await navigator.clipboard.writeText(newCode.value?.code ?? "");
296
- toast.value = "Code copied";
307
+ await navigator.clipboard.writeText(gatewayIni.value);
308
+ toast.value = "Settings copied";
297
309
  } catch {
298
310
  toast.value = "Select the code and copy it by hand.";
299
311
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@7365admin1/layer-common",
3
3
  "license": "MIT",
4
4
  "type": "module",
5
- "version": "4.122.0",
5
+ "version": "4.122.1",
6
6
  "author": "7365admin1",
7
7
  "main": "./nuxt.config.ts",
8
8
  "//files": "What a consumer extending this layer actually loads. Without this npm ships the whole working tree - the changesets, the CI workflows, the render harness in tools/ and any scratch directory that happened to exist at publish time. Nuxt resolves a layer by directory, so every runtime directory below has to stay listed; adding a new top-level runtime directory means adding it here too.",
@@ -1495,7 +1495,7 @@ export function liftGatewayLine(g: Record<string, any> | null) {
1495
1495
  waiting: {
1496
1496
  text: `Waiting for the gateway (code …${g.codeHint ?? ""})`,
1497
1497
  tone: "neutral",
1498
- help: "Put the code in the gateway's settings and start it. It turns Connected within seconds.",
1498
+ help: "The gateway has not sent anything yet. Check its lift-gateway.ini (url and code from Connect gateway), its network, and that the program is running.",
1499
1499
  },
1500
1500
  connected: { text: `Connected · last reading ${ago}`, tone: "success", help: "" },
1501
1501
  "no-lift": {