singularity-forge/web
Jeremy McSpadden 2175f59522 fix(contracts): add isWorkspaceEvent guard + close routeLiveInteractionEvent exhaustiveness gap (#2878)
Fixes two contract violations found in audit (closes #2875):

1. `isWorkspaceEvent()` type guard added next to WorkspaceEvent type definition.
   Applied at stream.onmessage JSON.parse boundary — replaces unsafe `as WorkspaceEvent`
   cast with validated parse + explicit error path for malformed payloads.

2. `routeLiveInteractionEvent()` switch extended with explicit cases for all three
   previously unhandled WorkspaceEvent variants:
   - bridge_status: handled upstream with early return, never reaches router
   - live_state_invalidation: handled upstream via handleLiveStateInvalidation
   - extension_error: terminal line produced by summarizeEvent, no live state update needed
2026-03-27 14:29:38 -06:00
..
app feat(web): Dark mode contrast — raise token floor and flatten opacity tier system (#2734) 2026-03-26 16:17:03 -06:00
components fix: detect monorepo roots in project discovery to prevent workspace fragmentation (#2849) 2026-03-27 09:55:00 -06:00
hooks feat(web): browser-based web interface (#1717) 2026-03-21 12:16:54 -06:00
lib fix(contracts): add isWorkspaceEvent guard + close routeLiveInteractionEvent exhaustiveness gap (#2878) 2026-03-27 14:29:38 -06:00
public feat(web): browser-based web interface (#1717) 2026-03-21 12:16:54 -06:00
styles feat(web): browser-based web interface (#1717) 2026-03-21 12:16:54 -06:00
.gitignore feat(web): browser-based web interface (#1717) 2026-03-21 12:16:54 -06:00
components.json feat(web): browser-based web interface (#1717) 2026-03-21 12:16:54 -06:00
eslint.config.mjs feat(web): browser-based web interface (#1717) 2026-03-21 12:16:54 -06:00
next-env.d.ts feat(web): browser-based web interface (#1717) 2026-03-21 12:16:54 -06:00
next.config.mjs feat(web): browser-based web interface (#1717) 2026-03-21 12:16:54 -06:00
package-lock.json feat(web): browser-based web interface (#1717) 2026-03-21 12:16:54 -06:00
package.json feat(web): browser-based web interface (#1717) 2026-03-21 12:16:54 -06:00
postcss.config.mjs feat(web): browser-based web interface (#1717) 2026-03-21 12:16:54 -06:00
proxy.ts feat(web): browser-based web interface (#1717) 2026-03-21 12:16:54 -06:00
tsconfig.json feat(web): browser-based web interface (#1717) 2026-03-21 12:16:54 -06:00