Build/runtime hardening and dependency security updates#286
Conversation
|
@toasterbook88 is attempting to deploy a commit to the Elie Team on Vercel. A member of the Team first needs to authorize it. |
There was a problem hiding this comment.
Pull request overview
This PR hardens the build/runtime pipeline by reducing noisy Vite build warnings, adding browser shims for Node-only transitive imports, simplifying RSS freshness tracking, and patching a transitive dependency vulnerability via npm overrides.
Changes:
- Add Vite aliases and browser shim modules to avoid
child_process-related bundler warnings from transitive dependencies. - Refine Rollup manual chunking for ML and geospatial (map/deck) dependencies and raise the chunk-size warning threshold.
- Replace a dynamic import in RSS freshness tracking with a static import, and add an npm override to force a patched
fast-xml-parser.
Reviewed changes
Copilot reviewed 5 out of 6 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| vite.config.ts | Adds aliases for Node-only modules, tunes chunking strategy, and reduces chunk-size warning noise. |
| src/shims/child-process.ts | Introduces a browser-safe shim for Node’s child_process import surface. |
| src/shims/child-process-proxy.ts | Shims loaders.gl’s Node-only ChildProcessProxy to prevent browser build warnings. |
| src/services/rss.ts | Simplifies freshness recording by switching to a static dataFreshness import. |
| package.json | Adds an npm override to force a patched fast-xml-parser version. |
| package-lock.json | Locks updated transitive versions (fast-xml-parser, strnum) consistent with the override. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| "youtubei.js": "^16.0.1" | ||
| }, | ||
| "overrides": { | ||
| "fast-xml-parser": "^5.3.6" |
There was a problem hiding this comment.
The override uses a caret range (^5.3.6), which means a future npm install could pick up a newer (untested) fast-xml-parser 5.x version and change the dependency graph unexpectedly. If the goal is specifically to pin a patched version for a known vulnerability, consider overriding to an exact version (e.g. the lockfile’s 5.3.7) for maximum reproducibility.
| "fast-xml-parser": "^5.3.6" | |
| "fast-xml-parser": "5.3.7" |
| export function spawn(): never { | ||
| throw new Error('child_process.spawn is not available in browser environments.'); | ||
| } | ||
|
|
||
| export default { spawn }; |
There was a problem hiding this comment.
The shimmed spawn export has a zero-arg signature, which is narrower than Node’s child_process.spawn and can break type-checking (or runtime call sites) if any dependency calls it with arguments. Consider accepting the usual (command, args?, options?) (or a ..._args: unknown[] rest param) and still throwing, so the shim is drop-in compatible while remaining browser-safe.
| async start(): Promise<{}> { | ||
| throw new Error('ChildProcessProxy is not available in browser environments.'); | ||
| } | ||
|
|
||
| async stop(): Promise<void> {} | ||
|
|
||
| async exit(_statusCode: number = 0): Promise<void> {} |
There was a problem hiding this comment.
ChildProcessProxy.start() is declared as Promise<{}> but always throws, and stop()/exit() are currently silent no-ops. To avoid masking unexpected runtime usage (and to make the type contract clearer), consider making all three methods throw with a Promise<never>/never-style return (or at least have stop/exit throw as well).
| async start(): Promise<{}> { | |
| throw new Error('ChildProcessProxy is not available in browser environments.'); | |
| } | |
| async stop(): Promise<void> {} | |
| async exit(_statusCode: number = 0): Promise<void> {} | |
| async start(): Promise<never> { | |
| throw new Error('ChildProcessProxy is not available in browser environments.'); | |
| } | |
| async stop(): Promise<never> { | |
| throw new Error('ChildProcessProxy is not available in browser environments.'); | |
| } | |
| async exit(_statusCode: number = 0): Promise<never> { | |
| throw new Error('ChildProcessProxy is not available in browser environments.'); | |
| } |
|
FYI: the only failing checks on this PR are Vercel authorization contexts (external to code changes in this fork).\n\nLocal validation for this branch is green:\n- npm run typecheck\n- npm run build\n- npm audit (0 vulnerabilities)\n- npm run test:sidecar\n- npm run test:e2e:runtime\n- npm run test:e2e:full\n- npm run test:e2e:tech\n- npm run test:e2e:visual:full\n- npm run test:e2e:visual:tech |
|
Triage note (February 24, 2026): current failing checks on this PR are Vercel authorization status contexts (Vercel - worldmonitor variants) rather than code or test failures. The same pattern appears across multiple open PRs, so this likely needs repo or team-level Vercel GitHub integration reauthorization to unblock checks globally. |
|
Validation note (February 24, 2026): local build passes on this branch ( |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Update (February 24, 2026): rebased this PR branch onto current base branch, resolved conflicts, and force-pushed branch |
## What's Changed ### Performance - perf: defer YouTube/map init and stagger data loads to reduce blocking time (#287) ### Features - feat: universal country detection — CII scoring for all countries (#344) - feat: add Mexico as CII hotspot for cartel/security monitoring (#327) - feat: add Mexico and LatAm security feeds for instability coverage (#325) - feat: add category pills and search filter to Panels tab (#322) - feat: consolidate settings into unified tabbed modal (#319) - feat: add Island Times (Palau) RSS feed (#317) - feat: add AI Flow settings popup for web-only AI provider control (#314) - feat: optional channels with tab-based region browse UI (#295) - feat: custom channel management (#282) - feat: add Bild RSS feed scoped to German locale (#312) ### Bug Fixes - fix: suppress notification sound when popup alerts are disabled - fix: prevent entity conflation in pane summarization (#341) - fix: add Mexico to COUNTRY_BOUNDS and COUNTRY_ALIASES (#338) - fix: make OpenSky cache TTLs env-configurable (#333) - fix: serialize OpenSky requests with global 429 cooldown (#332) - fix: replace RSSHub feeds with native/Google News alternatives (#331) - fix: OpenSky auth resilience — retry, IPv4, no negative cache on auth fail (#329) - fix: add CARTO and OpenStreetMap attribution to map (#323) - fix: add drag cleanup handlers and suppress click after drag-drop (#315) - fix: replace HTML5 drag API with mouse events for WKWebView (#313) - fix: open channel settings as inline modal instead of separate window (#311) - fix: sync YouTube live panel mute state with native player controls (#285) - fix: strip Ollama reasoning tokens from summaries (#299) - fix: open external links in system browser on Tauri desktop (#297) - fix: add User-Agent and Cloudflare 403 detection to secret validation (#296) - fix: infra cost optimizations round 2 (#275) - fix: enforce military bbox filtering (#284) - fix: infrastructure cost optimizations across caching, polling, batching (#283) - fix: circuit breaker persistent cache with safety fixes (#281) - fix: immediately refresh stale services when tab regains focus (#277) ### Security - Security hardening: SSRF protection, auth gating, and token generation (#343) - Harden Railway relay auth, caching, and proxy routing (#320) - Build/runtime hardening and dependency security updates (#286) - fix: harden embed postMessage origin check (#302)
## What's Changed ### Performance - perf: defer YouTube/map init and stagger data loads (#287) ### Features - feat: universal country detection — CII scoring for all countries (#344) - feat: add Mexico as CII hotspot (#327) - feat: add Mexico and LatAm security feeds (#325) - feat: add category pills and search filter to Panels tab (#322) - feat: consolidate settings into unified tabbed modal (#319) - feat: optional channels with tab-based region browse UI (#295) - feat: custom channel management (#282) ### Bug Fixes - fix: suppress notification sound when popup alerts are disabled - fix: prevent entity conflation in pane summarization (#341) - fix: add Mexico to COUNTRY_BOUNDS and COUNTRY_ALIASES (#338) - fix: OpenSky cache TTLs, serialization, and auth resilience (#329-#333) - fix: replace RSSHub feeds with native/Google News alternatives (#331) - fix: replace HTML5 drag API with mouse events for WKWebView (#313) - fix: sync YouTube mute state with native player controls (#285) - fix: strip Ollama reasoning tokens from summaries (#299) - fix: infra cost optimizations (#275, #283) - fix: circuit breaker persistent cache (#281) - fix: immediately refresh stale services on tab focus (#277) ### Security - Security hardening: SSRF protection, auth gating, token generation (#343) - Harden Railway relay auth, caching, and proxy routing (#320) - Build/runtime hardening and dependency security updates (#286)
…346) * fix: suppress notification sound when popup alerts are disabled Badge playSound() was firing on new findings regardless of the "Pop up new alerts" toggle. Gate sound on popupEnabled so both the modal and audio respect the user preference. * chore: bump version to 2.5.7 with changelog ## What's Changed ### Performance - perf: defer YouTube/map init and stagger data loads (#287) ### Features - feat: universal country detection — CII scoring for all countries (#344) - feat: add Mexico as CII hotspot (#327) - feat: add Mexico and LatAm security feeds (#325) - feat: add category pills and search filter to Panels tab (#322) - feat: consolidate settings into unified tabbed modal (#319) - feat: optional channels with tab-based region browse UI (#295) - feat: custom channel management (#282) ### Bug Fixes - fix: suppress notification sound when popup alerts are disabled - fix: prevent entity conflation in pane summarization (#341) - fix: add Mexico to COUNTRY_BOUNDS and COUNTRY_ALIASES (#338) - fix: OpenSky cache TTLs, serialization, and auth resilience (#329-#333) - fix: replace RSSHub feeds with native/Google News alternatives (#331) - fix: replace HTML5 drag API with mouse events for WKWebView (#313) - fix: sync YouTube mute state with native player controls (#285) - fix: strip Ollama reasoning tokens from summaries (#299) - fix: infra cost optimizations (#275, #283) - fix: circuit breaker persistent cache (#281) - fix: immediately refresh stale services on tab focus (#277) ### Security - Security hardening: SSRF protection, auth gating, token generation (#343) - Harden Railway relay auth, caching, and proxy routing (#320) - Build/runtime hardening and dependency security updates (#286)
…oala73#346) * fix: suppress notification sound when popup alerts are disabled Badge playSound() was firing on new findings regardless of the "Pop up new alerts" toggle. Gate sound on popupEnabled so both the modal and audio respect the user preference. * chore: bump version to 2.5.7 with changelog ## What's Changed ### Performance - perf: defer YouTube/map init and stagger data loads (koala73#287) ### Features - feat: universal country detection — CII scoring for all countries (koala73#344) - feat: add Mexico as CII hotspot (koala73#327) - feat: add Mexico and LatAm security feeds (koala73#325) - feat: add category pills and search filter to Panels tab (koala73#322) - feat: consolidate settings into unified tabbed modal (koala73#319) - feat: optional channels with tab-based region browse UI (koala73#295) - feat: custom channel management (koala73#282) ### Bug Fixes - fix: suppress notification sound when popup alerts are disabled - fix: prevent entity conflation in pane summarization (koala73#341) - fix: add Mexico to COUNTRY_BOUNDS and COUNTRY_ALIASES (koala73#338) - fix: OpenSky cache TTLs, serialization, and auth resilience (koala73#329-koala73#333) - fix: replace RSSHub feeds with native/Google News alternatives (koala73#331) - fix: replace HTML5 drag API with mouse events for WKWebView (koala73#313) - fix: sync YouTube mute state with native player controls (koala73#285) - fix: strip Ollama reasoning tokens from summaries (koala73#299) - fix: infra cost optimizations (koala73#275, koala73#283) - fix: circuit breaker persistent cache (koala73#281) - fix: immediately refresh stale services on tab focus (koala73#277) ### Security - Security hardening: SSRF protection, auth gating, token generation (koala73#343) - Harden Railway relay auth, caching, and proxy routing (koala73#320) - Build/runtime hardening and dependency security updates (koala73#286)
* Simplify RSS freshness update to static import * Refine vendor chunking for map stack in Vite build * Patch transitive XML parser vulnerability via npm override * Shim Node child_process for browser bundle warnings * Filter known onnxruntime eval warning in Vite build * test: add loaders XML/WMS parser regression coverage * chore: align fast-xml-parser override with merged dependency set --------- Co-authored-by: Elie Habib <[email protected]>
…oala73#346) * fix: suppress notification sound when popup alerts are disabled Badge playSound() was firing on new findings regardless of the "Pop up new alerts" toggle. Gate sound on popupEnabled so both the modal and audio respect the user preference. * chore: bump version to 2.5.7 with changelog ## What's Changed ### Performance - perf: defer YouTube/map init and stagger data loads (koala73#287) ### Features - feat: universal country detection — CII scoring for all countries (koala73#344) - feat: add Mexico as CII hotspot (koala73#327) - feat: add Mexico and LatAm security feeds (koala73#325) - feat: add category pills and search filter to Panels tab (koala73#322) - feat: consolidate settings into unified tabbed modal (koala73#319) - feat: optional channels with tab-based region browse UI (koala73#295) - feat: custom channel management (koala73#282) ### Bug Fixes - fix: suppress notification sound when popup alerts are disabled - fix: prevent entity conflation in pane summarization (koala73#341) - fix: add Mexico to COUNTRY_BOUNDS and COUNTRY_ALIASES (koala73#338) - fix: OpenSky cache TTLs, serialization, and auth resilience (koala73#329-koala73#333) - fix: replace RSSHub feeds with native/Google News alternatives (koala73#331) - fix: replace HTML5 drag API with mouse events for WKWebView (koala73#313) - fix: sync YouTube mute state with native player controls (koala73#285) - fix: strip Ollama reasoning tokens from summaries (koala73#299) - fix: infra cost optimizations (koala73#275, koala73#283) - fix: circuit breaker persistent cache (koala73#281) - fix: immediately refresh stale services on tab focus (koala73#277) ### Security - Security hardening: SSRF protection, auth gating, token generation (koala73#343) - Harden Railway relay auth, caching, and proxy routing (koala73#320) - Build/runtime hardening and dependency security updates (koala73#286)
This PR batches maintenance work validated locally:
Validation run: