@camstack/addon-provider-bosch 0.1.42 → 0.1.44

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.
@@ -1,5 +1,5 @@
1
- import { A as RecordIntegrationInstances, B as array, F as entryBody, H as literal, K as string, M as customAction, N as defineCustomActions, P as defineEntryKind, Q as EventCategory, R as rowsDepsOver, U as number, V as boolean, W as object, X as DeviceType, Z as errMsg, a as BaseDevice, h as deviceAdoptionCapability, i as testBoschInstance, k as waterHeaterCapability, n as boschRowsPorts, o as BaseDeviceProvider, p as climateControlCapability, r as keepBodyKeys, t as boschRowsMigration, u as VendorLoginProxy, x as integrationInstancesCapability, z as _enum } from "../bosch-instances-BmvHlGiY.mjs";
2
- import { a as createSignInAttemptStore, i as openSignInProxy, n as cascadeRemoveDevicesForIntegration, o as loginFailureForAttempt, r as createSignInClaims, s as parseOAuthCallback, t as setIntegrationDevicesOnline } from "../account-integration-offline-cC99EePp.mjs";
1
+ import { A as customAction, B as number, D as waterHeaterCapability, I as rowsDepsOver, J as errMsg, L as _enum, M as defineEntryKind, N as entryBody, O as RecordIntegrationInstances, R as array, U as string, V as object, Y as EventCategory, a as BaseDevice, d as climateControlCapability, i as testBoschInstance, j as defineCustomActions, n as boschRowsPorts, o as BaseDeviceProvider, p as deviceAdoptionCapability, q as DeviceType, r as keepBodyKeys, t as boschRowsMigration, y as integrationInstancesCapability, z as literal } from "../bosch-instances-C8FRjQzC.mjs";
2
+ import { a as loginFailureForAttempt, i as createSignInAttemptStore, n as cascadeRemoveDevicesForIntegration, o as parseOAuthCallback, r as buildSignInGuideFields, s as HOMECOM_REDIRECT_URI, t as setIntegrationDevicesOnline } from "../account-integration-offline-IHodWmhD.mjs";
3
3
  import { createHash, randomBytes } from "node:crypto";
4
4
  //#region src/homecom/config.ts
5
5
  var HOMECOM_BRANDS = ["bosch", "buderus"];
@@ -45,23 +45,22 @@ var HIDDEN_UNTIL_ADVANCED = {
45
45
  field: "__hidden__",
46
46
  equals: "yes"
47
47
  };
48
- var HOMECOM_CODE_HELP = "If the page does not finish, copy the address it stops on (it starts with com.bosch.tt.dashtt.pointt://app/login?code=) or only the code, and paste it in the box under the sign-in button.";
48
+ var HOMECOM_SIGN_IN_GUIDE = {
49
+ i18nPrefix: "homecom.s_account",
50
+ keyPrefix: "__homecom",
51
+ providerName: "SingleKey ID",
52
+ redirectStart: `${HOMECOM_REDIRECT_URI}?code=`
53
+ };
49
54
  function buildHomeComFormSchema() {
50
55
  return { sections: [{
51
56
  id: "account",
52
57
  title: "HomeCom account",
53
58
  titleKey: "provider-bosch:homecom.s_account.title",
54
- description: "Sign in with your SingleKey ID. A new tab opens the sign-in page through this hub and finishes on its own.",
59
+ description: "Sign in with your SingleKey ID in your own browser, then paste the address the browser stops on.",
55
60
  descriptionKey: "provider-bosch:homecom.s_account.description",
56
61
  columns: 1,
57
62
  fields: [
58
- {
59
- type: "info",
60
- key: "__homecom-code-help",
61
- label: HOMECOM_CODE_HELP,
62
- labelKey: "provider-bosch:homecom.s_account.__homecom-code-help.label",
63
- content: ""
64
- },
63
+ ...buildSignInGuideFields(HOMECOM_SIGN_IN_GUIDE),
65
64
  {
66
65
  type: "account-sign-in",
67
66
  addonId: "bosch-homecom",
@@ -71,7 +70,6 @@ function buildHomeComFormSchema() {
71
70
  providerLabel: "SingleKey ID",
72
71
  beginAction: "beginSignIn",
73
72
  completeAction: "finishSignIn",
74
- claimAction: "claimSignIn",
75
73
  signOutAction: "signOut",
76
74
  accountKey: "accountLabel",
77
75
  countKey: "gatewayCount",
@@ -214,27 +212,6 @@ var homeComActions = defineCustomActions({
214
212
  kind: "mutation",
215
213
  auth: "admin"
216
214
  }),
217
- /**
218
- * The form asks while the proxied login page is open: `pending` until the hub captured the
219
- * app-scheme redirect and finished the exchange, then the same fields `finishSignIn` returns.
220
- * Claimed once. A failed exchange answers with its operator-facing message as an error.
221
- */
222
- claimSignIn: customAction(object({ attemptId: string().min(1) }), object({
223
- pending: boolean(),
224
- token: string().optional().meta({ secret: true }),
225
- refresh: string().optional().meta({ secret: true }),
226
- username: string().optional().meta({ secret: true }),
227
- accountLabel: string().optional(),
228
- gatewayCount: number().optional(),
229
- summary: string().optional(),
230
- gatewayId: string().optional(),
231
- brand: HomeComBrandSchema.optional(),
232
- region: HomeComRegionSchema.optional(),
233
- choices: array(gatewayChoice).optional()
234
- }), {
235
- kind: "mutation",
236
- auth: "admin"
237
- }),
238
215
  signOut: customAction(object({}), object({
239
216
  signedOut: literal(true),
240
217
  summary: string()
@@ -301,7 +278,6 @@ function unsupportedDeviceTypeMessage(deviceType) {
301
278
  * names `pointt.gateway.resource.dashapp`, and the Bosch app sends `style_id=tt_bsch`.
302
279
  */
303
280
  var HOMECOM_CLIENT_ID = "762162C0-FA2D-4540-AE66-6489F189FADC";
304
- var HOMECOM_REDIRECT_URI = "com.bosch.tt.dashtt.pointt://app/login";
305
281
  var HOMECOM_AUTHORIZE_URL = "https://singlekey-id.com/auth/connect/authorize";
306
282
  var HOMECOM_TOKEN_URL = "https://singlekey-id.com/auth/connect/token";
307
283
  var HOMECOM_STYLE_ID = "tt_bsch";
@@ -1225,42 +1201,6 @@ function finishedFromGateways(tokens, resolved, listFailure) {
1225
1201
  }
1226
1202
  var homeComSignInAttempts = createSignInAttemptStore();
1227
1203
  //#endregion
1228
- //#region src/homecom/homecom-sign-in-proxy.ts
1229
- /**
1230
- * SingleKey ID serves the HomeCom login page; its scripts and styles come from `cdn.singlekey-id.com`
1231
- * as `type=module` + `crossorigin` files, which the CDN does not CORS-enable for another origin —
1232
- * served from the hub origin through the proxy they load, loaded directly they are refused and the
1233
- * page has no script (only the email field, no way to continue).
1234
- */
1235
- var HOMECOM_LOGIN_HOSTS = ["singlekey-id.com", "cdn.singlekey-id.com"];
1236
- var HOMECOM_APP_SCHEME = HOMECOM_REDIRECT_URI.slice(0, HOMECOM_REDIRECT_URI.indexOf("://") + 3);
1237
- var homeComSignInClaims = createSignInClaims();
1238
- /** Start an attempt whose `authorizeUrl` is the hub-relative proxied login page. */
1239
- function beginHomeComProxiedSignIn(deps) {
1240
- const nowMs = deps.nowMs ?? (() => Date.now());
1241
- const published = publishHomeComSignIn(homeComSignInAttempts, nowMs());
1242
- if (deps.proxy === null) return published;
1243
- const entry = openSignInProxy({
1244
- proxy: deps.proxy,
1245
- claims: homeComSignInClaims,
1246
- addonId: deps.addonId,
1247
- attemptId: published.attemptId,
1248
- authorizeUrl: published.authorizeUrl,
1249
- hosts: HOMECOM_LOGIN_HOSTS,
1250
- appScheme: HOMECOM_APP_SCHEME,
1251
- finish: (callback) => finishHomeComSignIn({
1252
- attemptId: published.attemptId,
1253
- callback,
1254
- nowMs: nowMs()
1255
- }, homeComSignInAttempts, deps.fetchFn !== void 0 ? { fetchFn: deps.fetchFn } : {}),
1256
- nowMs
1257
- });
1258
- return {
1259
- attemptId: published.attemptId,
1260
- authorizeUrl: entry
1261
- };
1262
- }
1263
- //#endregion
1264
1204
  //#region src/homecom/homecom-token-persist.ts
1265
1205
  /**
1266
1206
  * Patch the integration's record, one write at a time per integration. Refuses (and says so,
@@ -1964,7 +1904,13 @@ function buildHomeComInstances(records, deps) {
1964
1904
  role: "devices",
1965
1905
  instanceMode: "multiple",
1966
1906
  kind: "account",
1967
- canTest: true
1907
+ canTest: true,
1908
+ kinds: [{
1909
+ id: "connection",
1910
+ label: "Bosch HomeCom",
1911
+ functionCap: "device-provider",
1912
+ role: "devices"
1913
+ }]
1968
1914
  },
1969
1915
  formSchema: () => buildHomeComFormSchema(),
1970
1916
  initialBody: (name) => ({ name }),
@@ -2181,8 +2127,6 @@ var BoschHomeComProviderAddon = class extends BaseDeviceProvider {
2181
2127
  };
2182
2128
  clients = null;
2183
2129
  instances = null;
2184
- loginProxy = null;
2185
- loginPlane = null;
2186
2130
  constructor() {
2187
2131
  super({});
2188
2132
  }
@@ -2201,7 +2145,6 @@ var BoschHomeComProviderAddon = class extends BaseDeviceProvider {
2201
2145
  tester: this.buildConnectionTestProvider()
2202
2146
  });
2203
2147
  this.instances = built;
2204
- await this.serveLoginProxy();
2205
2148
  const persistDeps = {
2206
2149
  read: (id) => homeComStoredOf(built.instances, id),
2207
2150
  patch: (id, patch) => built.handle.patch(id, patch),
@@ -2236,19 +2179,9 @@ var BoschHomeComProviderAddon = class extends BaseDeviceProvider {
2236
2179
  customActions: homeComActions,
2237
2180
  actionHandlers: {
2238
2181
  beginSignIn: async () => ({
2239
- ...beginHomeComProxiedSignIn({
2240
- proxy: this.loginProxy,
2241
- addonId: this.ctx.id
2242
- }),
2243
- summary: "Open the sign-in page and sign in."
2182
+ ...publishHomeComSignIn(homeComSignInAttempts, Date.now()),
2183
+ summary: "Open the sign-in page, sign in, then paste the address the browser stops on."
2244
2184
  }),
2245
- claimSignIn: async (input) => {
2246
- const claim = homeComSignInClaims.claim(input.attemptId, Date.now());
2247
- return claim.state === "pending" ? { pending: true } : {
2248
- pending: false,
2249
- ...claim.result
2250
- };
2251
- },
2252
2185
  finishSignIn: async (input) => finishHomeComSignIn({
2253
2186
  attemptId: input.attemptId,
2254
2187
  callback: input.callback,
@@ -2261,27 +2194,7 @@ var BoschHomeComProviderAddon = class extends BaseDeviceProvider {
2261
2194
  }
2262
2195
  };
2263
2196
  }
2264
- /** The hub's HTTPS face for the vendor's login pages (D955): admin session only. */
2265
- async serveLoginProxy() {
2266
- const proxy = new VendorLoginProxy({
2267
- addonId: this.ctx.id,
2268
- logger: this.ctx.logger
2269
- });
2270
- try {
2271
- this.loginPlane = await this.ctx.dataPlane?.serve({
2272
- prefix: "vendor-login",
2273
- access: "admin",
2274
- handler: proxy.handler
2275
- }) ?? null;
2276
- if (this.loginPlane !== null) this.loginProxy = proxy;
2277
- } catch (err) {
2278
- this.ctx.logger.warn("HomeCom login proxy failed to serve — sign-in falls back to paste", { meta: { error: errMsg(err) } });
2279
- }
2280
- }
2281
2197
  async onShutdown() {
2282
- await this.loginPlane?.dispose().catch(() => void 0);
2283
- this.loginPlane = null;
2284
- this.loginProxy = null;
2285
2198
  try {
2286
2199
  await this.clients?.shutdown();
2287
2200
  } catch (err) {
package/dist/shc/addon.js CHANGED
@@ -2,7 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  //#region \0rolldown/runtime.js
3
3
  var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
4
4
  //#endregion
5
- const require_bosch_instances = require("../bosch-instances-CINVxMF_.js");
5
+ const require_bosch_instances = require("../bosch-instances-CXMUquuA.js");
6
6
  let node_crypto = require("node:crypto");
7
7
  let node_https = require("node:https");
8
8
  let node_child_process = require("node:child_process");
@@ -279,7 +279,13 @@ function buildShcInstances(records, deps) {
279
279
  role: "devices",
280
280
  instanceMode: "multiple",
281
281
  kind: "controller",
282
- canTest: true
282
+ canTest: true,
283
+ kinds: [{
284
+ id: "connection",
285
+ label: "Bosch Smart Home",
286
+ functionCap: "device-provider",
287
+ role: "devices"
288
+ }]
283
289
  },
284
290
  formSchema: () => buildConnectionFormSchema(),
285
291
  initialBody: (name) => ({ name }),
@@ -1,4 +1,4 @@
1
- import { A as RecordIntegrationInstances, B as array, D as switchCapability, F as entryBody, H as literal, K as string, M as customAction, N as defineCustomActions, O as temperatureSensorCapability, P as defineEntryKind, Q as EventCategory, R as rowsDepsOver, U as number, W as object, X as DeviceType, Z as errMsg, a as BaseDevice, d as batteryCapability, h as deviceAdoptionCapability, i as testBoschInstance, n as boschRowsPorts, o as BaseDeviceProvider, p as climateControlCapability, r as keepBodyKeys, t as boschRowsMigration, x as integrationInstancesCapability, y as heatingValveCapability, z as _enum } from "../bosch-instances-BmvHlGiY.mjs";
1
+ import { A as customAction, B as number, E as temperatureSensorCapability, I as rowsDepsOver, J as errMsg, L as _enum, M as defineEntryKind, N as entryBody, O as RecordIntegrationInstances, R as array, T as switchCapability, U as string, V as object, Y as EventCategory, _ as heatingValveCapability, a as BaseDevice, d as climateControlCapability, i as testBoschInstance, j as defineCustomActions, l as batteryCapability, n as boschRowsPorts, o as BaseDeviceProvider, p as deviceAdoptionCapability, q as DeviceType, r as keepBodyKeys, t as boschRowsMigration, y as integrationInstancesCapability, z as literal } from "../bosch-instances-C8FRjQzC.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { request } from "node:https";
@@ -280,7 +280,13 @@ function buildShcInstances(records, deps) {
280
280
  role: "devices",
281
281
  instanceMode: "multiple",
282
282
  kind: "controller",
283
- canTest: true
283
+ canTest: true,
284
+ kinds: [{
285
+ id: "connection",
286
+ label: "Bosch Smart Home",
287
+ functionCap: "device-provider",
288
+ role: "devices"
289
+ }]
284
290
  },
285
291
  formSchema: () => buildConnectionFormSchema(),
286
292
  initialBody: (name) => ({ name }),
package/i18n/en.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "bosch-home-connect.name": "Bosch Home Connect",
4
4
  "bosch-homecom.name": "Bosch HomeCom",
5
5
  "homecom.s_account.title": "HomeCom account",
6
- "homecom.s_account.description": "Sign in with your SingleKey ID. A new tab opens the sign-in page through this hub and finishes on its own.",
6
+ "homecom.s_account.description": "Sign in with your SingleKey ID in your own browser, then paste the address the browser stops on.",
7
7
  "homecom.s_account.__homecom-sign-in.label": "HomeCom",
8
8
  "homecom.s_account.accountLabel.label": "Account",
9
9
  "homecom.s_account.gatewayCount.label": "Gateways",
@@ -15,7 +15,7 @@
15
15
  "homecom.s_account.brand.label": "Brand",
16
16
  "homecom.s_account.region.label": "Region",
17
17
  "home-connect.s_gateway.title": "Home Connect",
18
- "home-connect.s_gateway.description": "Sign in with your Home Connect account. A new tab opens the sign-in page through this hub and finishes on its own.",
18
+ "home-connect.s_gateway.description": "Sign in with your Home Connect account in your own browser, then paste the address the browser stops on.",
19
19
  "home-connect.s_gateway.__home-connect-sign-in.label": "Home Connect",
20
20
  "home-connect.s_gateway.accountLabel.label": "Account",
21
21
  "home-connect.s_gateway.appliances.label": "Appliances",
@@ -32,6 +32,21 @@
32
32
  "shc.s_connection.token.label": "Controller token",
33
33
  "shc.s_connection.sslCertificate.label": "Client certificate (PEM)",
34
34
  "shc.s_connection.sslKey.label": "Client private key (PEM)",
35
- "homecom.s_account.__homecom-code-help.label": "If the page does not finish, copy the address it stops on (it starts with com.bosch.tt.dashtt.pointt://app/login?code=) or only the code, and paste it in the box under the sign-in button.",
36
- "homecom.s_account.gatewayId.description": "Filled from the account. Type one only when you need to override the choice."
35
+ "homecom.s_account.gatewayId.description": "Filled from the account. Type one only when you need to override the choice.",
36
+ "homecom.s_account.__homecom-guide-open.label": "1. Click “Sign in with SingleKey ID”. The sign-in page opens in a new tab of your own browser (it cannot be shown inside CamStack).",
37
+ "homecom.s_account.__homecom-guide-login.label": "2. Sign in there with your SingleKey ID: email, password and the one-time code if you are asked for one.",
38
+ "homecom.s_account.__homecom-guide-redirect.label": "3. When you finish, the browser tries to open the Bosch app and fails or shows an empty page. That is expected: the address it tried to open is what CamStack needs. It starts with com.bosch.tt.dashtt.pointt://app/login?code=",
39
+ "homecom.s_account.__homecom-guide-chrome.label": "Chrome, Edge, Brave: before you sign in press F12, open Network and tick “Preserve log”. After the failure pick the last request whose address starts with com.bosch.tt.dashtt.pointt://app/login?code= and use right click, Copy, Copy URL (or copy the address from the error line in the Console).",
40
+ "homecom.s_account.__homecom-guide-firefox.label": "Firefox: before you sign in press F12, open Network, open the gear menu and enable “Persist Logs”. After the failure right click the last request, Copy Value, Copy URL.",
41
+ "homecom.s_account.__homecom-guide-safari.label": "Safari: enable the Develop menu (Settings, Advanced), then Develop, Show Web Inspector, Network, and keep “Preserve Log” on. After the failure copy the address of the last request. Safari may also show the address in its “cannot open” message.",
42
+ "homecom.s_account.__homecom-guide-phone.label": "Phone or tablet: the failed address often stays in the address bar; press and hold it to copy. If it does not, repeat the sign-in from a computer.",
43
+ "homecom.s_account.__homecom-guide-paste.label": "4. Paste the whole address (or only the code after “code=”) in the box that appears under the button. The sign-in completes by itself; the code is valid for about ten minutes.",
44
+ "home-connect.s_gateway.__home-connect-guide-open.label": "1. Click “Sign in with Home Connect”. The sign-in page opens in a new tab of your own browser (it cannot be shown inside CamStack).",
45
+ "home-connect.s_gateway.__home-connect-guide-login.label": "2. Sign in there with your SingleKey ID: email, password and the one-time code if you are asked for one.",
46
+ "home-connect.s_gateway.__home-connect-guide-redirect.label": "3. When you finish, the browser tries to open the Bosch app and fails or shows an empty page. That is expected: the address it tried to open is what CamStack needs. It starts with hcauth://auth/prod?code=",
47
+ "home-connect.s_gateway.__home-connect-guide-chrome.label": "Chrome, Edge, Brave: before you sign in press F12, open Network and tick “Preserve log”. After the failure pick the last request whose address starts with hcauth://auth/prod?code= and use right click, Copy, Copy URL (or copy the address from the error line in the Console).",
48
+ "home-connect.s_gateway.__home-connect-guide-firefox.label": "Firefox: before you sign in press F12, open Network, open the gear menu and enable “Persist Logs”. After the failure right click the last request, Copy Value, Copy URL.",
49
+ "home-connect.s_gateway.__home-connect-guide-safari.label": "Safari: enable the Develop menu (Settings, Advanced), then Develop, Show Web Inspector, Network, and keep “Preserve Log” on. After the failure copy the address of the last request. Safari may also show the address in its “cannot open” message.",
50
+ "home-connect.s_gateway.__home-connect-guide-phone.label": "Phone or tablet: the failed address often stays in the address bar; press and hold it to copy. If it does not, repeat the sign-in from a computer.",
51
+ "home-connect.s_gateway.__home-connect-guide-paste.label": "4. Paste the whole address (or only the code after “code=”) in the box that appears under the button. The sign-in completes by itself; the code is valid for about ten minutes."
37
52
  }
package/i18n/it.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "bosch-home-connect.name": "Bosch Home Connect",
4
4
  "bosch-homecom.name": "Bosch HomeCom",
5
5
  "homecom.s_account.title": "Account HomeCom",
6
- "homecom.s_account.description": "Accedi con il tuo SingleKey ID. Si apre una nuova scheda con la pagina di accesso tramite questo hub e si conclude da sola.",
6
+ "homecom.s_account.description": "Accedi con il tuo SingleKey ID nel tuo browser, poi incolla l'indirizzo su cui il browser si ferma.",
7
7
  "homecom.s_account.__homecom-sign-in.label": "HomeCom",
8
8
  "homecom.s_account.accountLabel.label": "Account",
9
9
  "homecom.s_account.gatewayCount.label": "Gateway",
@@ -15,7 +15,7 @@
15
15
  "homecom.s_account.brand.label": "Marchio",
16
16
  "homecom.s_account.region.label": "Regione",
17
17
  "home-connect.s_gateway.title": "Home Connect",
18
- "home-connect.s_gateway.description": "Accedi con il tuo account Home Connect. Si apre una nuova scheda con la pagina di accesso tramite questo hub e si conclude da sola.",
18
+ "home-connect.s_gateway.description": "Accedi con il tuo account Home Connect nel tuo browser, poi incolla l'indirizzo su cui il browser si ferma.",
19
19
  "home-connect.s_gateway.__home-connect-sign-in.label": "Home Connect",
20
20
  "home-connect.s_gateway.accountLabel.label": "Account",
21
21
  "home-connect.s_gateway.appliances.label": "Elettrodomestici",
@@ -32,6 +32,21 @@
32
32
  "shc.s_connection.token.label": "Token del controller",
33
33
  "shc.s_connection.sslCertificate.label": "Certificato client (PEM)",
34
34
  "shc.s_connection.sslKey.label": "Chiave privata client (PEM)",
35
- "homecom.s_account.__homecom-code-help.label": "Se la pagina non si conclude, copia l indirizzo su cui si ferma (inizia con com.bosch.tt.dashtt.pointt://app/login?code=) oppure solo il codice, e incollalo nel riquadro sotto il pulsante di accesso.",
36
- "homecom.s_account.gatewayId.description": "Compilato dall'account. Scrivilo solo se devi sostituire la scelta."
35
+ "homecom.s_account.gatewayId.description": "Compilato dall'account. Scrivilo solo se devi sostituire la scelta.",
36
+ "homecom.s_account.__homecom-guide-open.label": "1. Clicca “Accedi con SingleKey ID”. La pagina di accesso si apre in una nuova scheda del tuo browser (non può essere mostrata dentro CamStack).",
37
+ "homecom.s_account.__homecom-guide-login.label": "2. Accedi lì con il tuo SingleKey ID: email, password e il codice monouso se richiesto.",
38
+ "homecom.s_account.__homecom-guide-redirect.label": "3. Al termine il browser prova ad aprire l'app Bosch e fallisce o mostra una pagina vuota. È normale: l'indirizzo che ha provato ad aprire è quello che serve a CamStack. Inizia con com.bosch.tt.dashtt.pointt://app/login?code=",
39
+ "homecom.s_account.__homecom-guide-chrome.label": "Chrome, Edge, Brave: prima di accedere premi F12, apri Network e spunta “Preserve log”. Dopo il fallimento scegli l'ultima richiesta il cui indirizzo inizia con com.bosch.tt.dashtt.pointt://app/login?code= e usa tasto destro, Copy, Copy URL (oppure copia l'indirizzo dalla riga d'errore nella Console).",
40
+ "homecom.s_account.__homecom-guide-firefox.label": "Firefox: prima di accedere premi F12, apri Network, apri il menu a ingranaggio e attiva “Persist Logs”. Dopo il fallimento fai clic destro sull'ultima richiesta, Copy Value, Copy URL.",
41
+ "homecom.s_account.__homecom-guide-safari.label": "Safari: attiva il menu Sviluppo (Impostazioni, Avanzate), poi Sviluppo, Mostra Web Inspector, Network, e lascia attivo “Preserve Log”. Dopo il fallimento copia l'indirizzo dell'ultima richiesta. Safari può mostrare l'indirizzo anche nel messaggio “impossibile aprire”.",
42
+ "homecom.s_account.__homecom-guide-phone.label": "Telefono o tablet: l'indirizzo che ha fallito spesso resta nella barra degli indirizzi; tienilo premuto per copiarlo. Se non c'è, ripeti l'accesso da un computer.",
43
+ "homecom.s_account.__homecom-guide-paste.label": "4. Incolla l'indirizzo intero (o solo il codice dopo “code=”) nella casella che compare sotto il pulsante. L'accesso si completa da solo; il codice vale circa dieci minuti.",
44
+ "home-connect.s_gateway.__home-connect-guide-open.label": "1. Clicca “Accedi con Home Connect”. La pagina di accesso si apre in una nuova scheda del tuo browser (non può essere mostrata dentro CamStack).",
45
+ "home-connect.s_gateway.__home-connect-guide-login.label": "2. Accedi lì con il tuo SingleKey ID: email, password e il codice monouso se richiesto.",
46
+ "home-connect.s_gateway.__home-connect-guide-redirect.label": "3. Al termine il browser prova ad aprire l'app Bosch e fallisce o mostra una pagina vuota. È normale: l'indirizzo che ha provato ad aprire è quello che serve a CamStack. Inizia con hcauth://auth/prod?code=",
47
+ "home-connect.s_gateway.__home-connect-guide-chrome.label": "Chrome, Edge, Brave: prima di accedere premi F12, apri Network e spunta “Preserve log”. Dopo il fallimento scegli l'ultima richiesta il cui indirizzo inizia con hcauth://auth/prod?code= e usa tasto destro, Copy, Copy URL (oppure copia l'indirizzo dalla riga d'errore nella Console).",
48
+ "home-connect.s_gateway.__home-connect-guide-firefox.label": "Firefox: prima di accedere premi F12, apri Network, apri il menu a ingranaggio e attiva “Persist Logs”. Dopo il fallimento fai clic destro sull'ultima richiesta, Copy Value, Copy URL.",
49
+ "home-connect.s_gateway.__home-connect-guide-safari.label": "Safari: attiva il menu Sviluppo (Impostazioni, Avanzate), poi Sviluppo, Mostra Web Inspector, Network, e lascia attivo “Preserve Log”. Dopo il fallimento copia l'indirizzo dell'ultima richiesta. Safari può mostrare l'indirizzo anche nel messaggio “impossibile aprire”.",
50
+ "home-connect.s_gateway.__home-connect-guide-phone.label": "Telefono o tablet: l'indirizzo che ha fallito spesso resta nella barra degli indirizzi; tienilo premuto per copiarlo. Se non c'è, ripeti l'accesso da un computer.",
51
+ "home-connect.s_gateway.__home-connect-guide-paste.label": "4. Incolla l'indirizzo intero (o solo il codice dopo “code=”) nella casella che compare sotto il pulsante. L'accesso si completa da solo; il codice vale circa dieci minuti."
37
52
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-bosch",
3
- "version": "0.1.42",
3
+ "version": "0.1.44",
4
4
  "description": "Bosch smart-home device-provider addons for CamStack — SHC, Home Connect, and HomeCom cloud integrations (scaffold)",
5
5
  "keywords": [
6
6
  "camstack",
@@ -132,7 +132,7 @@
132
132
  }
133
133
  ],
134
134
  "requires": {
135
- "server": ">=1.2.788"
135
+ "server": ">=1.2.819"
136
136
  }
137
137
  },
138
138
  "files": [