toga-ai 1.0.599 → 1.0.600

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.
@@ -6,7 +6,7 @@ project: Tools
6
6
  client: shared
7
7
  type: feature
8
8
  status: active
9
- updated: 2026-08-14
9
+ updated: 2026-08-18
10
10
  owners: [kyalamarthi, jcardinal]
11
11
  files:
12
12
  - tools/assets/clickup/sprint-dashboard.html
@@ -51,8 +51,9 @@ The existing sprint board was left byte-for-byte unchanged — its component was
51
51
  monitor poll is lifted into `Dashboard` and passed **down as props**, so the status panel and
52
52
  the alert watcher share **one** fetch loop rather than polling twice.
53
53
 
54
- Only the monitor fetch runs at `MONITOR_REFRESH_MS` (5s); sprint data stays on the page's
55
- existing 5-minute `AUTO_REFRESH_MS`.
54
+ Only the monitor fetch runs at `MONITOR_REFRESH_MS` (15s); sprint data stays on the page's
55
+ existing 5-minute `AUTO_REFRESH_MS`. At 15s, outage detection (beep/popup/blink) reacts within
56
+ ~15s, and the ~250 KB cross-origin poll costs ~1 MB/min per open tab.
56
57
 
57
58
  ### Upstream contract — OneUptime public status-page overview API
58
59
 
@@ -114,7 +115,7 @@ them up is the bug:
114
115
 
115
116
  | | Trigger | Drives | Why |
116
117
  |---|---|---|---|
117
- | **Event** | **Edge** — fires on the transition | beeps, popup, 5s blink | A level-triggered *event* re-alarms every 5s poll for a monitor that has been offline an hour, and the wall display becomes a siren nobody can silence. |
118
+ | **Event** | **Edge** — fires on the transition | beeps, popup, 5s blink | A level-triggered *event* re-alarms every 15s poll for a monitor that has been offline an hour, and the wall display becomes a siren nobody can silence. |
118
119
  | **State** | **Level** — follows current state | standing edge tint, status circle | An edge-triggered *state* would show a clean screen when you open the page during an existing outage. **The board must never look healthy while it isn't.** |
119
120
 
120
121
  **Event — `useMonitorAlerts`** compares each poll's non-operational rows against the previous
@@ -157,7 +158,7 @@ and no screen tint**: the level-triggered standing tint already clears itself wh
157
158
  the set, and a green "all clear" popup/flash would fight the "the board only shouts when something
158
159
  is wrong" design. So recovery is silent **visually** but audible. Two edge rules: the **first
159
160
  poll is still the baseline** (opening the page mid-outage does not chime), and if a bad-state
160
- change and a recovery land in the **same 5s poll the bad-state alert wins** that tick, avoiding
161
+ change and a recovery land in the **same 15s poll the bad-state alert wins** that tick, avoiding
161
162
  overlapping sounds (simultaneous transitions are rare).
162
163
 
163
164
  **State — `standingRole(model)`** returns `critical` if any row is offline, else `warning` if any
@@ -194,11 +195,10 @@ Standing and blinking differ in intensity **and in animation tempo**, which is w
194
195
  "still broken" distinguishable from "something just changed":
195
196
 
196
197
  - `.alert-flash` (standing) — 12px rim, **slowly breathes** its opacity 0 → 1 → 0 on a
197
- **7-second ease-in-out loop** (`@keyframes alert-breathe { 0%,100% { opacity: 0 } 50% {
198
- opacity: 1 } }`, applied `animation: alert-breathe 7s ease-in-out infinite`). It may sit on
199
- screen for hours, so the gentle 7s breathe draws a distant eye without reading as urgent. The
200
- tempo is deliberately slow: the values were tuned with the developer (0.5→0.92 over 10s was
201
- too subtle, full 0→1 over 10s too slow) to settle on full 0→1 over 7s.
198
+ **4-second ease-in-out loop** (`@keyframes alert-breathe { 0%,100% { opacity: 0 } 50% {
199
+ opacity: 1 } }`, applied `animation: alert-breathe 4s ease-in-out infinite` — a 4s cycle =
200
+ 2s fade-in / 2s fade-out). It may sit on screen for hours, so the gentle breathe draws a
201
+ distant eye without reading as urgent. The tempo was tuned with the developer.
202
202
  - `.alert-flash.is-blinking` (event) — 20px rim, `opacity: 1`, plus the fast **0.7s** pulse.
203
203
  Its compound selector (0,2,0) out-specifies the standing breathe (0,1,0), so a just-changed
204
204
  monitor shows the urgent fast blink, not the slow breathe.
@@ -245,7 +245,7 @@ Replace the direct browser → OneUptime poll with a small **server-side proxy e
245
245
  Tools app (e.g. `/v2/monitors/status/`) that fetches upstream, reduces the payload to the
246
246
  summary, and caches ~5s. Rationale:
247
247
 
248
- - The browser currently pulls **~250 KB every 5s (~3 MB/min per open tab)** to display about
248
+ - The browser currently pulls **~250 KB every 15s (~1 MB/min per open tab)** to display about
249
249
  six numbers; a proxy makes it ~1 KB.
250
250
  - One upstream fetch is shared across **all** open displays instead of one per tab.
251
251
  - It removes the cross-origin dependency, and therefore the CORS/autoplay coupling above.
@@ -254,6 +254,12 @@ summary, and caches ~5s. Rationale:
254
254
  alerting really wants (today the baseline resets every time a tab reloads).
255
255
 
256
256
  ## Change history
257
+ - 2026-08-18 — Wall-display cadence tuning. The standing edge-tint breathe cycle changed from
258
+ 5s to **4s** (`animation: alert-breathe 4s …` — 2s fade-in / 2s fade-out), and
259
+ `MONITOR_REFRESH_MS` changed from 5s to **15s**, so outage detection now reacts within ~15s
260
+ (was ~5s) and the ~250 KB cross-origin poll drops from ~3 MB/min to ~1 MB/min per open tab.
261
+ Also corrects prior doc drift: the breathe cycle had been documented as 7s but the code was
262
+ actually 5s. (jcardinal)
257
263
  - 2026-08-14 — Generalised alert-sound synthesis and added a **recovery chime**. The old
258
264
  `BEEP_COUNT`/`BEEP_HZ`/`BEEP_MS`/`BEEP_GAP_MS`/`BEEP_VOLUME` constants and the square-wave-only
259
265
  `playBeeps` were replaced by a single per-role `ALERT_SOUND` table (count / freq / per-beep
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toga-ai",
3
- "version": "1.0.599",
3
+ "version": "1.0.600",
4
4
  "description": "TOGA Technology Team Claude Knowledge System — shared AI coding harness with skills, knowledge base CLI, and project installer for Claude Code.",
5
5
  "keywords": [
6
6
  "claude",