@elitedcs/ghl-mcp 3.52.2 → 3.53.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,23 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.53.1 — Laptops stop eating install slots; "cancelled" stops lying
4
+
5
+ Reported by Carlos Boyd, who hit his install cap with two physical machines.
6
+
7
+ - **Device identity is stable now.** The fingerprint was derived from the
8
+ machine hostname, and a Mac's `.local` hostname changes with the network
9
+ (new Wi-Fi, DHCP, a name collision) — so the same laptop could present a new
10
+ identity and claim another install slot. Identity is now a random id
11
+ persisted in the config dir, so it survives reinstalls and renames. On
12
+ upgrade it ADOPTS the fingerprint from the existing cached attestation, so no
13
+ current install loses the slot it already holds. `legacyDeviceFingerprint()`
14
+ is kept for reference.
15
+ - **Install-limit is no longer reported as "cancelled".** Both conditions come
16
+ back from the gate as 403, and the client labelled both `cancelled`, so a
17
+ full machine list read as a billing failure — two contradictory lines in the
18
+ same block. `install_limit` is its own reason, and the gate prints the
19
+ server's own sentence instead of a reason code beside it.
20
+
3
21
  ## 3.52.1 — Docs: positioning vs. HighLevel's official Anthropic MCP
4
22
 
5
23
  No behavior changes; README only.
@@ -48,7 +48,11 @@ var CredentialsSchema = import_zod.z.object({
48
48
  // hand-crafted-credentials.json bypass that existed through v3.23.0).
49
49
  // Optional in the schema only so files written by earlier versions still
50
50
  // parse — index.ts's gate forces a re-validate when the field is missing.
51
- signed_attestation: import_zod.z.string().optional()
51
+ signed_attestation: import_zod.z.string().optional(),
52
+ /** Stable machine id (2026-07-28). Replaces the hostname-derived
53
+ * fingerprint, which changed with the network on laptops and silently ate
54
+ * install slots. Written once and reused forever. */
55
+ device_id: import_zod.z.string().optional()
52
56
  });
53
57
  function appDataDir() {
54
58
  const override = process.env.GHL_MCP_CONFIG_DIR?.trim();