@gotcos/glasses-server 6.37.0 → 6.37.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/.env.example CHANGED
@@ -182,12 +182,17 @@ BIND_HOST=0.0.0.0
182
182
  # WITHOUT the COS operations pipeline (no COS_SCRIPTS_DIR). Spawns one
183
183
  # `claude -p --model haiku` per meeting, at the end of finalization.
184
184
  #
185
- # Default OFF. With it off you still get the deterministic tier speakers,
186
- # talk-time, word count, opening excerpt which costs nothing and always runs.
185
+ # Default ON since 6.37.0. Set to 0 to opt out; only a literal 0 disables.
186
+ # With it off you still get the deterministic tier speakers, talk-time, word
187
+ # count, opening excerpt — which costs nothing and always runs.
188
+ #
189
+ # This spends tokens on YOUR provider plan, unlike the display toggles. It is
190
+ # bounded by a per-day cap (below) counted only on a validated summary, a
191
+ # circuit breaker, a minimum word floor, a single-slot queue and a wall budget.
187
192
  #
188
193
  # Never runs when COS_SCRIPTS_DIR is set: overwriting the summary section would
189
194
  # erase the markers sync_meetings.py uses to decide what to process.
190
- # COS_MEETING_SUMMARY=1
195
+ # COS_MEETING_SUMMARY=0
191
196
  #
192
197
  # Calls per local day before the summariser falls back to the deterministic
193
198
  # tier for the rest of the day. Default 40.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,27 @@
1
+ ## 6.37.1
2
+
3
+ Standalone meeting summaries default ON.
4
+
5
+ 6.37.0 shipped everything else in this release — the honest summary slot, the
6
+ two enrichment tiers, the voice-profile name validator, and Continue threads /
7
+ video uploads / adaptive audio cleanup all defaulting on — but it went out with
8
+ COS_MEETING_SUMMARY still defaulting OFF. That meant the headline fix, a meeting
9
+ that comes back with a real summary, reached nobody unless they found an
10
+ undocumented environment variable.
11
+
12
+ Only a literal '0' disables, so a stray or malformed value cannot silently
13
+ switch summaries off.
14
+
15
+ This is a different class of default from the display toggles in 6.37.0: it
16
+ spends tokens on the USER'S OWN provider plan. Every control in the module is
17
+ load-bearing rather than decorative — a per-day cap counted only on a validated
18
+ summary, a circuit breaker with its own accounting, a minimum word floor, a
19
+ single-slot queue, and a wall budget that keeps finalization under COS Control's
20
+ 90s restart proof.
21
+
22
+ No other change. Anyone already on 6.37.0 who set COS_MEETING_SUMMARY=1 by hand
23
+ is unaffected.
24
+
1
25
  ## 6.37.0
2
26
 
3
27
  Meetings recorded without the COS operations pipeline now get a real summary,
@@ -64,8 +88,11 @@ Two enrichment tiers, both standalone-only:
64
88
  with talk-time split, opening excerpt. Fabricates nothing:
65
89
  topics/decisions/actions come back empty rather than guessed.
66
90
 
67
- llm COS_MEETING_SUMMARY=1, default OFF. One `claude -p --model haiku`
68
- per meeting at the ops_pending phase of finalization.
91
+ llm DEFAULT ON. One `claude -p --model haiku` per meeting at the
92
+ ops_pending phase of finalization. Set COS_MEETING_SUMMARY=0 to
93
+ opt out; only a literal 0 disables. This spends tokens on the
94
+ USER'S OWN provider plan, which is why every control below is
95
+ load-bearing rather than decorative.
69
96
 
70
97
  It runs at ops_pending specifically because batch HQ transcription replaces the
71
98
  whole transcript; summarising earlier would describe text the file no longer
@@ -79,7 +106,7 @@ erase them and the pipeline would skip the meeting entirely -- losing domain
79
106
  reclassification, task extraction and the operations copy.
80
107
 
81
108
  COST CONTROLS
82
- - COS_MEETING_SUMMARY, read live (not frozen at module load)
109
+ - COS_MEETING_SUMMARY, read live (not frozen at module load), default ON
83
110
  - haiku pinned explicitly, so it can never inherit an Opus session default
84
111
  - own daily cap (COS_MEETING_SUMMARY_DAILY_CAP, default 40), never shared
85
112
  with the archive counter; committed only after a validated summary, so a
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gotcos/glasses-server",
3
- "version": "6.37.0",
3
+ "version": "6.37.1",
4
4
  "description": "COS Glasses — self-hosted AI heads-up-display server for Even G2 smart glasses, powered by Claude Code, Codex, or Cursor Agent CLI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -87,10 +87,19 @@ export const meetingSummaryBreaker = breaker
87
87
 
88
88
  /** Read LIVE, not at module load. COS Control rebuilds the runtime plist
89
89
  * environment on update, and tests flip this per-case; a module-scope const
90
- * would freeze the value at import and make both untestable. */
90
+ * would freeze the value at import and make both untestable.
91
+ *
92
+ * DEFAULT ON since 6.37.0 (Miles 2026-08-25). Shipping this off meant the
93
+ * headline fix — a meeting that comes back with a real summary — reached
94
+ * nobody unless they found an undocumented env var.
95
+ *
96
+ * Unlike the display toggles that flipped on in the same release, this one
97
+ * spends tokens on the USER'S OWN provider plan, which is why every control in
98
+ * this module is load-bearing: a per-day cap committed only on a validated
99
+ * result, a breaker with its own accounting, a minimum word floor, a
100
+ * single-slot queue, and a wall budget. Only a literal '0' disables. */
91
101
  export function meetingSummaryLLMEnabled(): boolean {
92
- const raw = process.env.COS_MEETING_SUMMARY?.trim()
93
- return raw === '1' || raw?.toLowerCase() === 'true'
102
+ return process.env.COS_MEETING_SUMMARY?.trim() !== '0'
94
103
  }
95
104
 
96
105
  // ── Transcript parsing ──────────────────────────────────────