@camstack/addon-provider-velux 0.2.22 → 0.2.23

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/dist/addon.js CHANGED
@@ -26252,9 +26252,21 @@ var RecordingLocationUsageSchema = object({
26252
26252
  * previously rendered as two identical "disks" with a nonsensical used
26253
26253
  * split — hydrate attribution across aliases is arbitrary by nature. */
26254
26254
  locationIds: array(string()).optional(),
26255
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
26255
+ /**
26256
+ * Filesystem root of the physical volume this row accounts — the only
26257
+ * operator-legible identity when a location has no `displayName` yet, and
26258
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
26259
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
26260
+ * it, and this schema must keep validating that older provider's payload.
26261
+ */
26262
+ root: string().optional(),
26263
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
26264
+ * the footage's SHARE of the volume, not how full the volume is — the disk
26265
+ * also holds everything that is not recordings. Volume fill is
26266
+ * `(totalBytes - availableBytes) / totalBytes`. */
26256
26267
  usedBytes: number(),
26257
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
26268
+ /** Free bytes on the location's volume; null when capacity is unknown
26269
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
26258
26270
  availableBytes: number().nullable(),
26259
26271
  /** Total bytes of the location's volume; null when unknown. */
26260
26272
  totalBytes: number().nullable()
@@ -26266,7 +26278,15 @@ var RecordingStorageUsageSchema = object({
26266
26278
  nodeId: string(),
26267
26279
  totalUsedBytes: number(),
26268
26280
  devices: array(RecordingDeviceUsageSchema),
26269
- locations: array(RecordingLocationUsageSchema)
26281
+ /**
26282
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
26283
+ * of the payload without it: the hub serves this method through a BAKED
26284
+ * router, so a hub whose framework train predates a change to this array
26285
+ * strips it out of an answer a newer recorder happily produced. A UI that
26286
+ * dereferences it unconditionally crashes the whole Storage page over a
26287
+ * missing disk bar.
26288
+ */
26289
+ locations: array(RecordingLocationUsageSchema).optional()
26270
26290
  });
26271
26291
  /**
26272
26292
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -37051,8 +37071,14 @@ Object.freeze({
37051
37071
  "network-access": "ingress",
37052
37072
  "smtp-provider": "email"
37053
37073
  });
37074
+ /** Schema defaults — an untouched sub-field must author exactly these. */
37075
+ var NC_AUDIO_DEFAULTS = {
37076
+ hitPercent: 60,
37077
+ samplingSeconds: 10
37078
+ };
37054
37079
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
37055
37080
  new Set(["devices", "classes"]);
37081
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
37056
37082
  /**
37057
37083
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
37058
37084
  *
package/dist/addon.mjs CHANGED
@@ -26251,9 +26251,21 @@ var RecordingLocationUsageSchema = object({
26251
26251
  * previously rendered as two identical "disks" with a nonsensical used
26252
26252
  * split — hydrate attribution across aliases is arbitrary by nature. */
26253
26253
  locationIds: array(string()).optional(),
26254
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
26254
+ /**
26255
+ * Filesystem root of the physical volume this row accounts — the only
26256
+ * operator-legible identity when a location has no `displayName` yet, and
26257
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
26258
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
26259
+ * it, and this schema must keep validating that older provider's payload.
26260
+ */
26261
+ root: string().optional(),
26262
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
26263
+ * the footage's SHARE of the volume, not how full the volume is — the disk
26264
+ * also holds everything that is not recordings. Volume fill is
26265
+ * `(totalBytes - availableBytes) / totalBytes`. */
26255
26266
  usedBytes: number(),
26256
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
26267
+ /** Free bytes on the location's volume; null when capacity is unknown
26268
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
26257
26269
  availableBytes: number().nullable(),
26258
26270
  /** Total bytes of the location's volume; null when unknown. */
26259
26271
  totalBytes: number().nullable()
@@ -26265,7 +26277,15 @@ var RecordingStorageUsageSchema = object({
26265
26277
  nodeId: string(),
26266
26278
  totalUsedBytes: number(),
26267
26279
  devices: array(RecordingDeviceUsageSchema),
26268
- locations: array(RecordingLocationUsageSchema)
26280
+ /**
26281
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
26282
+ * of the payload without it: the hub serves this method through a BAKED
26283
+ * router, so a hub whose framework train predates a change to this array
26284
+ * strips it out of an answer a newer recorder happily produced. A UI that
26285
+ * dereferences it unconditionally crashes the whole Storage page over a
26286
+ * missing disk bar.
26287
+ */
26288
+ locations: array(RecordingLocationUsageSchema).optional()
26269
26289
  });
26270
26290
  /**
26271
26291
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -37050,8 +37070,14 @@ Object.freeze({
37050
37070
  "network-access": "ingress",
37051
37071
  "smtp-provider": "email"
37052
37072
  });
37073
+ /** Schema defaults — an untouched sub-field must author exactly these. */
37074
+ var NC_AUDIO_DEFAULTS = {
37075
+ hitPercent: 60,
37076
+ samplingSeconds: 10
37077
+ };
37053
37078
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
37054
37079
  new Set(["devices", "classes"]);
37080
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
37055
37081
  /**
37056
37082
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
37057
37083
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-velux",
3
- "version": "0.2.22",
3
+ "version": "0.2.23",
4
4
  "description": "Velux KLF-200 device-provider addon for CamStack — local-gateway window + shutter covers (positional, no tilt)",
5
5
  "keywords": [
6
6
  "camstack",