@camstack/addon-provider-reolink 1.2.25 → 1.2.26

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
@@ -13427,11 +13427,33 @@ var NotificationFormatSchema = _enum([
13427
13427
  * Named by INTENT, never by glyph. "check" would tie the vocabulary to one
13428
13428
  * renderer's icon set; "acknowledge" survives an adapter that draws it
13429
13429
  * differently.
13430
+ *
13431
+ * ── A TOKEN IS NOT A WIRE VALUE ─────────────────────────────────────
13432
+ *
13433
+ * These names are for US. **No adapter may forward one verbatim.** Each maps
13434
+ * the whole set onto its own renderer's vocabulary through a
13435
+ * `Record<NotificationActionIcon, string>` — a Record, never a lookup with a
13436
+ * fallback, so adding a member here fails every adapter's build until someone
13437
+ * decides its glyph, which is the only place that decision can be made
13438
+ * honestly.
13439
+ *
13440
+ * This paragraph is the bug. Zentik declared `actionIcons: true` and passed
13441
+ * `disarm` straight through; iOS feeds that string to
13442
+ * `UNNotificationActionIcon(systemImageName:)`, `disarm` is not an SF Symbol,
13443
+ * and every snooze and alarm button arrived BLANK. A pass-through is not a
13444
+ * mapping, and "the field is documented" is not "the value renders".
13445
+ *
13446
+ * Adding a member is TRAIN-BOUND. The enum lives in the published
13447
+ * `@camstack/server` closure and the cap seam validates against the HUB's copy,
13448
+ * so an addon that emits a token the running hub does not know does not lose an
13449
+ * icon — its whole `send` fails Zod validation and the notification never
13450
+ * arrives. Never emit a new token from an addon before the train carrying it.
13430
13451
  */
13431
13452
  var NotificationActionIconSchema = _enum([
13432
13453
  "acknowledge",
13433
13454
  "dismiss",
13434
13455
  "silence",
13456
+ "snooze",
13435
13457
  "view",
13436
13458
  "play",
13437
13459
  "open",
@@ -13439,9 +13461,13 @@ var NotificationActionIconSchema = _enum([
13439
13461
  "lock",
13440
13462
  "unlock",
13441
13463
  "arm",
13464
+ "arm-home",
13465
+ "arm-away",
13466
+ "arm-night",
13442
13467
  "disarm",
13443
13468
  "light",
13444
- "alert"
13469
+ "alert",
13470
+ "camera"
13445
13471
  ]);
13446
13472
  /** A single tap-through action button. */
13447
13473
  var NotificationActionSchema = object({
@@ -13641,6 +13667,24 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
13641
13667
  targetId: string(),
13642
13668
  enabled: boolean()
13643
13669
  }), _void(), { kind: "mutation" });
13670
+ new Set([
13671
+ {
13672
+ id: "person",
13673
+ name: "Person"
13674
+ },
13675
+ {
13676
+ id: "vehicle",
13677
+ name: "Vehicle"
13678
+ },
13679
+ {
13680
+ id: "animal",
13681
+ name: "Animal"
13682
+ },
13683
+ {
13684
+ id: "package",
13685
+ name: "Package"
13686
+ }
13687
+ ].map((l) => l.id));
13644
13688
  var COCO_TO_MACRO = {
13645
13689
  mapping: {
13646
13690
  person: "person",
@@ -14476,6 +14520,8 @@ var NcSystemEventKindSchema = _enum([
14476
14520
  "alarm-triggered",
14477
14521
  "alarm-armed",
14478
14522
  "alarm-disarmed",
14523
+ "alarm-arming",
14524
+ "alarm-arm-refused",
14479
14525
  "camera-online",
14480
14526
  "camera-offline",
14481
14527
  "camera-disabled",
@@ -17748,6 +17794,22 @@ var detectionFpsField = {
17748
17794
  default: 10,
17749
17795
  step: 1
17750
17796
  };
17797
+ /**
17798
+ * The occupancy re-check interval. DEFAULT 300 s (2026-08-13 — was 30 s).
17799
+ *
17800
+ * The recheck is now on by default (a parked car is invisible to occupancy
17801
+ * rules until the stationary registry has been rebuilt by motion, which after a
17802
+ * restart may be never on a quiet camera). Each cycle re-subscribes a detection
17803
+ * session — an RTSP re-dial — so the switch is only affordable at a WIDE
17804
+ * interval: 300 s is ~12 re-dials an hour per camera, against 120 at the old
17805
+ * 30 s. A parked car is therefore counted within 5 minutes of a restart.
17806
+ *
17807
+ * Why not wider: `max` is 300 and raising it is TRAIN-BOUND, not addon-bound —
17808
+ * the host validates `attachCamera` against ITS copy of this schema, so a
17809
+ * runner asked for 600 would be rejected by the hub until a `@camstack/server`
17810
+ * carrying the wider bound is installed everywhere. 300 is the widest value
17811
+ * that ships with an addon deploy.
17812
+ */
17751
17813
  var occupancyRecheckSecField = {
17752
17814
  min: 0,
17753
17815
  max: 300,
@@ -17949,15 +18011,21 @@ var RunnerCameraConfigSchema = object({
17949
18011
  */
17950
18012
  onboardMotionDrivesAnalyzer: boolean().default(true),
17951
18013
  /**
17952
- * Master toggle for the occupancy re-check. When `false` (DEFAULT) the runner
17953
- * never arms the periodic recheck timer, regardless of `occupancyRecheckSec`
17954
- * this is off by default because the recheck re-subscribes a detection session
17955
- * every N seconds while `watching`, a major source of pull-decoder re-dial
17956
- * churn (each cycle creates+tears a session → RTSP re-dial → latency). The
18014
+ * Master toggle for the occupancy re-check. When `false` the runner never arms
18015
+ * the periodic recheck timer, regardless of `occupancyRecheckSec`; the
17957
18016
  * `occupancyRecheckSec` / `occupancyRecheckFrames` sliders only take effect
17958
18017
  * (and only render) when this is enabled.
18018
+ *
18019
+ * DEFAULT `true` since 2026-08-13 (was `false`). It was off because the
18020
+ * recheck re-subscribes a detection session every N seconds while `watching`
18021
+ * — each cycle creates+tears a session ⇒ an RTSP re-dial ⇒ latency, a major
18022
+ * pull-decoder churn source. What that bought was a blind spot: a STATIONARY
18023
+ * object is counted only while the stationary registry holds it, and the
18024
+ * registry rebuilds from motion, so after a restart a parked car was invisible
18025
+ * to every occupancy rule until something moved in front of it. The churn is
18026
+ * now paid on the interval instead — see `occupancyRecheckSecField`.
17959
18027
  */
17960
- occupancyRecheckEnabled: boolean().default(false),
18028
+ occupancyRecheckEnabled: boolean().default(true),
17961
18029
  occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
17962
18030
  occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
17963
18031
  /**
package/dist/addon.mjs CHANGED
@@ -13422,11 +13422,33 @@ var NotificationFormatSchema = _enum([
13422
13422
  * Named by INTENT, never by glyph. "check" would tie the vocabulary to one
13423
13423
  * renderer's icon set; "acknowledge" survives an adapter that draws it
13424
13424
  * differently.
13425
+ *
13426
+ * ── A TOKEN IS NOT A WIRE VALUE ─────────────────────────────────────
13427
+ *
13428
+ * These names are for US. **No adapter may forward one verbatim.** Each maps
13429
+ * the whole set onto its own renderer's vocabulary through a
13430
+ * `Record<NotificationActionIcon, string>` — a Record, never a lookup with a
13431
+ * fallback, so adding a member here fails every adapter's build until someone
13432
+ * decides its glyph, which is the only place that decision can be made
13433
+ * honestly.
13434
+ *
13435
+ * This paragraph is the bug. Zentik declared `actionIcons: true` and passed
13436
+ * `disarm` straight through; iOS feeds that string to
13437
+ * `UNNotificationActionIcon(systemImageName:)`, `disarm` is not an SF Symbol,
13438
+ * and every snooze and alarm button arrived BLANK. A pass-through is not a
13439
+ * mapping, and "the field is documented" is not "the value renders".
13440
+ *
13441
+ * Adding a member is TRAIN-BOUND. The enum lives in the published
13442
+ * `@camstack/server` closure and the cap seam validates against the HUB's copy,
13443
+ * so an addon that emits a token the running hub does not know does not lose an
13444
+ * icon — its whole `send` fails Zod validation and the notification never
13445
+ * arrives. Never emit a new token from an addon before the train carrying it.
13425
13446
  */
13426
13447
  var NotificationActionIconSchema = _enum([
13427
13448
  "acknowledge",
13428
13449
  "dismiss",
13429
13450
  "silence",
13451
+ "snooze",
13430
13452
  "view",
13431
13453
  "play",
13432
13454
  "open",
@@ -13434,9 +13456,13 @@ var NotificationActionIconSchema = _enum([
13434
13456
  "lock",
13435
13457
  "unlock",
13436
13458
  "arm",
13459
+ "arm-home",
13460
+ "arm-away",
13461
+ "arm-night",
13437
13462
  "disarm",
13438
13463
  "light",
13439
- "alert"
13464
+ "alert",
13465
+ "camera"
13440
13466
  ]);
13441
13467
  /** A single tap-through action button. */
13442
13468
  var NotificationActionSchema = object({
@@ -13636,6 +13662,24 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
13636
13662
  targetId: string(),
13637
13663
  enabled: boolean()
13638
13664
  }), _void(), { kind: "mutation" });
13665
+ new Set([
13666
+ {
13667
+ id: "person",
13668
+ name: "Person"
13669
+ },
13670
+ {
13671
+ id: "vehicle",
13672
+ name: "Vehicle"
13673
+ },
13674
+ {
13675
+ id: "animal",
13676
+ name: "Animal"
13677
+ },
13678
+ {
13679
+ id: "package",
13680
+ name: "Package"
13681
+ }
13682
+ ].map((l) => l.id));
13639
13683
  var COCO_TO_MACRO = {
13640
13684
  mapping: {
13641
13685
  person: "person",
@@ -14471,6 +14515,8 @@ var NcSystemEventKindSchema = _enum([
14471
14515
  "alarm-triggered",
14472
14516
  "alarm-armed",
14473
14517
  "alarm-disarmed",
14518
+ "alarm-arming",
14519
+ "alarm-arm-refused",
14474
14520
  "camera-online",
14475
14521
  "camera-offline",
14476
14522
  "camera-disabled",
@@ -17743,6 +17789,22 @@ var detectionFpsField = {
17743
17789
  default: 10,
17744
17790
  step: 1
17745
17791
  };
17792
+ /**
17793
+ * The occupancy re-check interval. DEFAULT 300 s (2026-08-13 — was 30 s).
17794
+ *
17795
+ * The recheck is now on by default (a parked car is invisible to occupancy
17796
+ * rules until the stationary registry has been rebuilt by motion, which after a
17797
+ * restart may be never on a quiet camera). Each cycle re-subscribes a detection
17798
+ * session — an RTSP re-dial — so the switch is only affordable at a WIDE
17799
+ * interval: 300 s is ~12 re-dials an hour per camera, against 120 at the old
17800
+ * 30 s. A parked car is therefore counted within 5 minutes of a restart.
17801
+ *
17802
+ * Why not wider: `max` is 300 and raising it is TRAIN-BOUND, not addon-bound —
17803
+ * the host validates `attachCamera` against ITS copy of this schema, so a
17804
+ * runner asked for 600 would be rejected by the hub until a `@camstack/server`
17805
+ * carrying the wider bound is installed everywhere. 300 is the widest value
17806
+ * that ships with an addon deploy.
17807
+ */
17746
17808
  var occupancyRecheckSecField = {
17747
17809
  min: 0,
17748
17810
  max: 300,
@@ -17944,15 +18006,21 @@ var RunnerCameraConfigSchema = object({
17944
18006
  */
17945
18007
  onboardMotionDrivesAnalyzer: boolean().default(true),
17946
18008
  /**
17947
- * Master toggle for the occupancy re-check. When `false` (DEFAULT) the runner
17948
- * never arms the periodic recheck timer, regardless of `occupancyRecheckSec`
17949
- * this is off by default because the recheck re-subscribes a detection session
17950
- * every N seconds while `watching`, a major source of pull-decoder re-dial
17951
- * churn (each cycle creates+tears a session → RTSP re-dial → latency). The
18009
+ * Master toggle for the occupancy re-check. When `false` the runner never arms
18010
+ * the periodic recheck timer, regardless of `occupancyRecheckSec`; the
17952
18011
  * `occupancyRecheckSec` / `occupancyRecheckFrames` sliders only take effect
17953
18012
  * (and only render) when this is enabled.
18013
+ *
18014
+ * DEFAULT `true` since 2026-08-13 (was `false`). It was off because the
18015
+ * recheck re-subscribes a detection session every N seconds while `watching`
18016
+ * — each cycle creates+tears a session ⇒ an RTSP re-dial ⇒ latency, a major
18017
+ * pull-decoder churn source. What that bought was a blind spot: a STATIONARY
18018
+ * object is counted only while the stationary registry holds it, and the
18019
+ * registry rebuilds from motion, so after a restart a parked car was invisible
18020
+ * to every occupancy rule until something moved in front of it. The churn is
18021
+ * now paid on the interval instead — see `occupancyRecheckSecField`.
17954
18022
  */
17955
- occupancyRecheckEnabled: boolean().default(false),
18023
+ occupancyRecheckEnabled: boolean().default(true),
17956
18024
  occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
17957
18025
  occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
17958
18026
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-reolink",
3
- "version": "1.2.25",
3
+ "version": "1.2.26",
4
4
  "description": "Reolink camera device provider addon for CamStack — native Baichuan protocol",
5
5
  "keywords": [
6
6
  "camstack",