Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1256 commits
Select commit Hold shift + click to select a range
f864812
feat: add llms.txt and llms-full.txt for LLM discoverability
koala73 Feb 19, 2026
3551984
feat(i18n): add Turkish language support (14th language)
koala73 Feb 19, 2026
5faf469
fix: restore update link fallback and PWA nav precache
koala73 Feb 19, 2026
b0372d7
Fix wide-screen panel layout gaps and drag reorder behavior
koala73 Feb 19, 2026
8821db0
fix(sentry): filter Safari "Importing a module script failed" noise
koala73 Feb 19, 2026
4a5a32b
Fix ultrawide map height mismatch and re-enable map resize
koala73 Feb 19, 2026
84a3735
feat(i18n): add theater name translations and webcam region localizat…
koala73 Feb 19, 2026
705be56
feat(i18n): localize remaining hardcoded English in 6 panel components
koala73 Feb 19, 2026
9fd166a
feat: add Ollama (OpenAI-compatible) local LLM summarization support
claude Feb 19, 2026
c2fe564
test: add Ollama provider tests across endpoint, sidecar, and chain l…
claude Feb 19, 2026
1fd0515
refactor: unify summarization providers behind common interfaces
claude Feb 19, 2026
080af26
fix: resolve TS build errors and add missing Ollama keys to Rust keyring
koala73 Feb 19, 2026
33e0b60
fix: harden OpenAI-compatible endpoint flow for Ollama/LM Studio
koala73 Feb 19, 2026
4cff5bf
fix: show URL and model inputs as plaintext instead of masked passwor…
koala73 Feb 19, 2026
1a08d8a
feat: split settings into LLMs and API Keys tabs, fix keychain vault …
koala73 Feb 19, 2026
4ca00c6
docs: add Ollama/local LLM coverage to community promotion guide
koala73 Feb 19, 2026
73492ac
fix(sentry): null guard getProjection crash and add 6 noise filters
koala73 Feb 19, 2026
bd8c94c
fix: resolve markdown lint errors in docs
koala73 Feb 19, 2026
3520530
Add Ollama support to summarization chain with shared handler factory…
koala73 Feb 19, 2026
5b4b9dd
fix(map): clear PathLayer cache on toggle-off to prevent stale WebGL …
koala73 Feb 19, 2026
493b8cf
feat: add 5 defense/intel RSS feeds (Military Times, Task & Purpose, …
koala73 Feb 19, 2026
def8de9
feat: add Koeberg nuclear power plant (South Africa) to facilities map
koala73 Feb 19, 2026
c7aeabb
release: v2.5.0 — Ollama/LM Studio local LLM support, settings tabs, …
koala73 Feb 19, 2026
8fe2271
fix: sync Cargo.toml version to 2.5.0 (was missed in release commit)
koala73 Feb 19, 2026
1ca0319
fix: add Desktop app (Linux), LLMs settings, and live webcams to bug …
koala73 Feb 19, 2026
3905094
fix: replace Polymarket prod proxy with local Vite middleware plugin
koala73 Feb 19, 2026
a2c0256
fix: implement live-stream detection in youtubeLivePlugin dev middleware
claude Feb 19, 2026
16bc9d5
Fix setInterval clock leak in startHeaderClock()
claude Feb 19, 2026
3008b68
chore: sync package-lock.json with package.json version
claude Feb 19, 2026
d60a4c2
feat: pre-render critical CSS skeleton in index.html for instant perc…
claude Feb 19, 2026
02d60fe
perf: tree-shake unused locale files from initial bundle
claude Feb 19, 2026
bb8c180
fix: replace hardcoded English strings with i18n t() calls
claude Feb 19, 2026
8896373
chore: sync package-lock.json version to 2.5.0
claude Feb 19, 2026
9c6fa07
fix: internationalize verification checklist labels
claude Feb 19, 2026
a1b4b9a
perf: add CSS contain: content to .panel for layout isolation
claude Feb 19, 2026
d85f1b7
perf: add will-change hints to animated elements for GPU compositing
claude Feb 19, 2026
be92813
chore: update package-lock.json
claude Feb 19, 2026
539b92e
fix(runtime): block cloud fallback for local-only api routes
lawyered0 Feb 20, 2026
50c3abb
fix(pwa): prevent stale HTML precache regression
lawyered0 Feb 19, 2026
b70cacc
fix(pwa): disable default navigateFallback in generated SW
lawyered0 Feb 19, 2026
a2ba2a0
fix: update Sentry noise filters for CSP regex and truncated loads
koala73 Feb 20, 2026
d799aca
Add Linux-safe fallback when DeckGL WebGL2 is unavailable
koala73 Feb 20, 2026
638c938
docs(runtime): document local-only API boundary
koala73 Feb 20, 2026
2ca033f
fix(runtime+pwa): block local-secret cloud fallback and stale HTML pr…
koala73 Feb 20, 2026
1384f0c
Handle per-cluster render failures in NewsPanel
koala73 Feb 20, 2026
dd4a2d5
Fix deep-link polling retries and timeout error
koala73 Feb 20, 2026
653d2cf
Add build-time Brotli precompression for static assets
koala73 Feb 20, 2026
035bcd0
Debounce panel content updates to reduce rerenders
koala73 Feb 20, 2026
69a1dc4
fix: harden map fallback and add regression coverage
koala73 Feb 20, 2026
e83f45d
WebGL2/DeckGL fails (Linux Mint example) (#142)
koala73 Feb 20, 2026
c10c22e
Fix memory leak: properly clear clock interval on cleanup (#143)
koala73 Feb 20, 2026
64f833b
fix: scope videoId and isLive to same videoDetails block
claude Feb 20, 2026
01695ed
Add i18n support for UI components and new features (#151)
koala73 Feb 20, 2026
ff9a1e1
Implement YouTube live stream detection via HTML parsing (#144)
koala73 Feb 20, 2026
3fbc06e
Track missing backend feeds in data freshness
koala73 Feb 20, 2026
918a96f
Missing GDELT Doc in Data Freshness Tracker (#165)
koala73 Feb 20, 2026
ce4accc
Add Brotli pre-compression for Vite build assets (#162)
koala73 Feb 20, 2026
0e7d707
Merge main into tree-shake-locale-files, resolve workbox conflict
claude Feb 20, 2026
d417520
Optimize i18n bundle with lazy-loaded locale files (#167)
koala73 Feb 20, 2026
7b3e56c
Add Brotli-first API compression for sidecar and nginx
koala73 Feb 20, 2026
ef8a40b
Add Brotli-first compression for local API sidecar and Nginx proxy (#…
koala73 Feb 20, 2026
1eb2932
Handle per-cluster render failures in NewsPanel (#159)
koala73 Feb 20, 2026
ea2079f
Fix deep-link polling from retrying indefinitely (#160)
koala73 Feb 20, 2026
af6292c
Add CSS containment to panel elements for performance (#152)
koala73 Feb 20, 2026
65e3c66
PERF-010: Debounce Panel.setContent to reduce re-renders (#163)
koala73 Feb 20, 2026
cd12f4f
Optimize GPU memory usage with will-change CSS property (#155)
koala73 Feb 20, 2026
375527a
Add skeleton loading screen to prevent FOUC (#146)
koala73 Feb 20, 2026
893279b
feat: integrate USNI fleet tracker and add parser tests
koala73 Feb 20, 2026
6d94e5e
fix: widen SW globIgnore to exclude all ML JS chunks
koala73 Feb 20, 2026
e882033
Add IndexedDB-backed persistent API caching
koala73 Feb 20, 2026
d7ef62c
fix: use graph edges for infra cascade capacity instead of hardcoded 0.1
koala73 Feb 20, 2026
c2503fc
IndexedDB-backed persistent cache + stale-while-revalidate API respon…
koala73 Feb 20, 2026
cb24b22
fix(sidecar): deduplicate Vary header tokens with appendVary helper
koala73 Feb 20, 2026
cf492c9
perf: split i18next, sentry, and panels into separate chunks
koala73 Feb 20, 2026
c7e753b
perf: move inline panel styles to panels.css, loaded once via main.cs…
koala73 Feb 20, 2026
b14a994
fix: update Sentry noise filters for Safari fullscreen and deck.gl nu…
koala73 Feb 20, 2026
ad82544
feat: abort in-flight fetch requests on panel destroy and page hide
koala73 Feb 20, 2026
a890151
refactor: replace innerHTML with programmatic DOM via h() hyperscript
koala73 Feb 20, 2026
b6905ae
fix: suppress maplibre-internal TypeErrors in Sentry beforeSend
koala73 Feb 20, 2026
52f1ffd
fix: add Sentry noise filter for Android WebView bridge errors
koala73 Feb 20, 2026
bf5e0ea
fix: stabilize E2E tests and fix InvestmentsPanel event delegation
koala73 Feb 20, 2026
d5a726a
fix: shared fetch abort isolation and USNI vessel augmentation
koala73 Feb 20, 2026
3e393f1
perf: reduce Vercel costs — extend API cache TTLs and skip non-code b…
koala73 Feb 20, 2026
8760187
refactor: extract duplicate layerToSource mapping to LAYER_TO_SOURCE …
koala73 Feb 20, 2026
9846afe
perf: add bot protection middleware and robots.txt to reduce API abuse
koala73 Feb 20, 2026
fb3a99b
fix: harden API routes, batch FRED requests, and sanitize tooltip HTML
koala73 Feb 20, 2026
56b1175
fix: use per-entry TTL for UCDP fallbackCache to expire partial resul…
koala73 Feb 20, 2026
a6894c7
fix: derive cache headers from partial flag on cache hits & widen Loa…
koala73 Feb 20, 2026
d311060
release: v2.5.1 — batch FRED, parallel UCDP, partial cache TTL, bot m…
koala73 Feb 20, 2026
d9b20ef
fix: sentry triage — quota guard, video ID validation, map race condi…
koala73 Feb 20, 2026
5b1c61b
Proto-first API rebuild: sebuf contracts, handlers, gateway, and gene…
SebastienMelki Feb 20, 2026
a8f6ab7
fix: prevent Vercel build skip when previous SHA is empty
koala73 Feb 20, 2026
62a1e03
release: v2.5.2 — quota guard, map race fixes, Vercel build skip fix
koala73 Feb 20, 2026
42beac5
docs: expand README with proto-first API, cable health, OG images, an…
koala73 Feb 20, 2026
37c94e1
perf: faster panel loading — instant flat render, higher concurrency …
Rau1CS Feb 21, 2026
6c38bd8
fix(sidecar): preserve Request body semantics in ipv4 shim (#205)
lawyered0 Feb 21, 2026
4c4da45
fix(sidecar): preserve request body on cloud fallback (#209)
lawyered0 Feb 21, 2026
6912079
fix: sentry triage — noise filters and formatOilValue NaN guard
koala73 Feb 21, 2026
a5f70e5
fix: harden OpenSky auth flow and proxy fallback
koala73 Feb 21, 2026
85ac512
security: escape user-facing strings in innerHTML template literals
koala73 Feb 21, 2026
b27c025
feat(i18n): add Thai and Vietnamese localization
koala73 Feb 21, 2026
1b53eaf
fix(relay): add in-flight request dedup for OpenSky and RSS endpoints
koala73 Feb 21, 2026
c239234
feat(crypto): add XRP (Ripple) to crypto panel
koala73 Feb 21, 2026
cd092f6
fix(feeds): replace dead RSS endpoints with Google News fallbacks
koala73 Feb 21, 2026
baa6375
fix(crypto): serve stale prices on CoinGecko failure instead of $0
koala73 Feb 21, 2026
ff22fc8
fix: remove dead /api/opensky fallback route (closes #212)
koala73 Feb 21, 2026
0562439
feat(feeds): add native-language feeds for th, vi, tr, pl, ru locales…
koala73 Feb 21, 2026
01da79b
perf(rss-proxy): increase CDN cache TTL to reduce origin invocations
koala73 Feb 21, 2026
5911fb0
feat: API key gating for desktop cloud fallback + registration (#215)
koala73 Feb 21, 2026
0013f20
feat: redesign settings World Monitor tab + sidecar RSS proxy + v2.5.3
koala73 Feb 21, 2026
517448a
fix: World Monitor tab first, registration proxy, empty key guard
koala73 Feb 21, 2026
b2da861
fix: registration via direct Convex call + compact WM tab layout
koala73 Feb 21, 2026
3735033
Add PostHog analytics with privacy-first design (#216)
koala73 Feb 21, 2026
e882a00
Fix deployment build: make WORLDMONITOR_API_KEY optional (#217)
koala73 Feb 21, 2026
04d13bb
fix: restore API-key gate and block fallback on config import failure…
koala73 Feb 21, 2026
34a4705
fix(csp): allow PostHog scripts from us-assets.i.posthog.com
koala73 Feb 21, 2026
0723bc3
fix(api): sanitize og-story level input (#219)
lawyered0 Feb 21, 2026
845e6e9
Add cable health scoring via sebuf InfrastructureService (#220)
SebastienMelki Feb 21, 2026
7eeb1ae
fix(i18n): add cable health evidence key to all locales
koala73 Feb 21, 2026
4e1a5b8
fix(ucdp): add negative cache, version cache, and stale-on-error fall…
koala73 Feb 21, 2026
f6b9d4c
fix(settings): skip API key re-verification when no keys were changed
koala73 Feb 21, 2026
56c9c9b
chore: add docs/internal/ to .gitignore
koala73 Feb 21, 2026
1e699e9
fix(analytics): proxy PostHog through own domain to bypass ad blockers
koala73 Feb 21, 2026
bac8789
fix(market): harden Yahoo Finance resilience and UCDP retry logic
koala73 Feb 22, 2026
2ec2ce4
chore: add TODO for Yahoo Finance cloud relay fallback
koala73 Feb 22, 2026
434c48f
chore: bump version to 2.5.4
koala73 Feb 22, 2026
e737d24
fix: add missing showRetrying method to Panel base class (#224)
koala73 Feb 22, 2026
6391fb9
Fix Vercel build failure when previous deploy SHA is missing (#225)
koala73 Feb 22, 2026
cd4d6a2
fix: shorten vercel.json ignoreCommand to fit 256-char limit
SebastienMelki Feb 22, 2026
dd2877b
docs: add community guidelines (contributing, code of conduct, securi…
SebastienMelki Feb 22, 2026
17901a0
Update .env.example (#228)
SebastienMelki Feb 22, 2026
37f755b
Format Rust code and fix Windows focus handling (#242)
koala73 Feb 23, 2026
1014168
feat: Upstash Redis shared caching + cache key contamination fixes (#…
koala73 Feb 23, 2026
6f68bb1
fix: reduce dedup coordinate rounding from 0.5° to 0.1° (~10km) (#235)
haosenwang1018 Feb 23, 2026
776613d
Fix Linux rendering issues and improve monospace font fallbacks (#243)
koala73 Feb 23, 2026
e92c404
fix: layer help, SW ingest routing, toggle colors, v2.5.5 (#244)
koala73 Feb 23, 2026
ae45b91
fix: correct Vietnam flag country code in language selector (#245)
koala73 Feb 23, 2026
e797587
fix: sentry triage + SW POST method for PostHog ingest (#246)
koala73 Feb 23, 2026
e9dc2f9
fix: restrict SW route patterns to same-origin only (#247)
koala73 Feb 23, 2026
ad4e897
fix: whitelist social preview bots + restrict SW routes to same-origi…
koala73 Feb 23, 2026
66456c4
feat: add Greek (Ελληνικά) locale (#256)
koala73 Feb 23, 2026
b88787c
fix: allow http:// origin from tauri.localhost for Windows CORS (#262)
koala73 Feb 23, 2026
13f1212
Optimize AIS relay: backpressure queue, spatial indexing, response ca…
koala73 Feb 23, 2026
4fb0d13
Fix GLib symbol mismatch when running as AppImage on newer distros (#…
koala73 Feb 23, 2026
7064780
Add Brasil Paralelo source (#260)
pedroddomingues Feb 23, 2026
96a1f22
fix: add negative caching + cascade-resistant dedup to RSS proxy (#270)
koala73 Feb 23, 2026
e681951
feat: add Nigeria feeds and Greek locale feeds (#271)
koala73 Feb 23, 2026
f462556
chore: bump version to 2.5.6 with changelog (#272)
koala73 Feb 23, 2026
caee7f7
fix: immediately refresh stale services when tab regains focus (#277)
elzalem Feb 23, 2026
53309c6
fix: circuit breaker persistent cache with safety fixes (#281)
koala73 Feb 23, 2026
93ea828
feat(live): custom channel management with review fixes (#282)
koala73 Feb 23, 2026
1a62ada
fix: infrastructure cost optimizations across caching, polling, and b…
koala73 Feb 23, 2026
13e86fb
fix: enforce military bbox filtering and add behavioral cache tests (…
koala73 Feb 23, 2026
a0531fa
Add GATRA integration layer with connector, panel, and map layer
ghifiardi Feb 24, 2026
dfe1f52
Wire GATRA SOC panel into App and MapContainer
ghifiardi Feb 24, 2026
b47d633
Rewrite README for GATRA integration, fix cyber variant env
ghifiardi Feb 24, 2026
7c6bdf0
Sanitize and anonymize telco provider references
ghifiardi Feb 24, 2026
618a6cd
Add CVE Feed, Ransomware Tracker, and IoC Lookup panels
ghifiardi Feb 24, 2026
01affb8
Connect GATRA SOC panel to real BigQuery data
ghifiardi Feb 24, 2026
65230b2
Add multi-strategy BigQuery fallback for GATRA data
ghifiardi Feb 24, 2026
b7e8f03
Add verbose strategy error reporting to gatra-data API
ghifiardi Feb 24, 2026
91cbf08
Fix BigQuery queries to match actual table schemas
ghifiardi Feb 24, 2026
9ec22f1
Fix siem_events SQL: use JSON_VALUE directly instead of STRING()
ghifiardi Feb 24, 2026
1629213
Optimize SIEM query and merge all data sources
ghifiardi Feb 24, 2026
cc51a9c
Improve MITRE mapping and hide debug info by default
ghifiardi Feb 24, 2026
af26da9
Sanitize all telco provider references from GATRA data
ghifiardi Feb 24, 2026
3f9455e
Make GATRA SOC panel respect time range filter
ghifiardi Feb 24, 2026
7fcf65c
Integrate ACLED conflict data into GATRA SOC correlation engine
ghifiardi Feb 24, 2026
97a0086
Use rich GATRA state tables with time-rebase for fresh dashboard data
ghifiardi Feb 25, 2026
b6b5fad
Add GATRA integration layer with connector, panel, and map layer
ghifiardi Feb 24, 2026
aa31d63
Wire GATRA SOC panel into App and MapContainer
ghifiardi Feb 24, 2026
7fb89fd
Rewrite README for GATRA integration, fix cyber variant env
ghifiardi Feb 24, 2026
d284065
Sanitize and anonymize telco provider references
ghifiardi Feb 24, 2026
26549ea
Add CVE Feed, Ransomware Tracker, and IoC Lookup panels
ghifiardi Feb 24, 2026
b56e755
Connect GATRA SOC panel to real BigQuery data
ghifiardi Feb 24, 2026
9e1da76
Add multi-strategy BigQuery fallback for GATRA data
ghifiardi Feb 24, 2026
f273692
Add verbose strategy error reporting to gatra-data API
ghifiardi Feb 24, 2026
8dccd90
Fix BigQuery queries to match actual table schemas
ghifiardi Feb 24, 2026
d67a358
Fix siem_events SQL: use JSON_VALUE directly instead of STRING()
ghifiardi Feb 24, 2026
874a80f
Optimize SIEM query and merge all data sources
ghifiardi Feb 24, 2026
1df4736
Improve MITRE mapping and hide debug info by default
ghifiardi Feb 24, 2026
1a605d6
Sanitize all telco provider references from GATRA data
ghifiardi Feb 24, 2026
a8a273d
Make GATRA SOC panel respect time range filter
ghifiardi Feb 24, 2026
bad4966
Integrate ACLED conflict data into GATRA SOC correlation engine
ghifiardi Feb 24, 2026
9503f56
Use rich GATRA state tables with time-rebase for fresh dashboard data
ghifiardi Feb 25, 2026
459cf57
Sanitize sensitive terms from GATRA data and rebrand API references
ghifiardi Feb 25, 2026
3059435
Add CII Score Panel for GATRA Cyber variant
ghifiardi Feb 25, 2026
3d1ca51
Fix CII Monitor panel visibility in cyber variant
ghifiardi Feb 25, 2026
16c959a
Add Prediction Market Signals panel for GATRA Cyber variant
ghifiardi Feb 25, 2026
c1c975b
Broaden Predictive Signals keyword filter and fix data wiring
ghifiardi Feb 25, 2026
850d7c9
Fix CVE Feed showing 1999 data — add date range to NVD API query
ghifiardi Feb 25, 2026
0f39f6d
Add Manifold Markets fallback for Prediction Signals panel
ghifiardi Feb 25, 2026
9b39638
Redesign Prediction Signals panel for actionable threat intelligence
ghifiardi Feb 26, 2026
98f6429
Add SOC COMMS chat panel for GATRA Cyber variant
ghifiardi Feb 26, 2026
8bbddb0
Fix SOC Chat: deduplicate alerts, broaden TAA triggers, fix card wrap…
ghifiardi Feb 26, 2026
e2ed143
Fix SOC Chat scroll lock and ADA response coverage
ghifiardi Feb 26, 2026
1bec968
Align SOC Chat messages near input area instead of top
ghifiardi Feb 26, 2026
4e3b46f
Fix SOC Chat drawer clipping at bottom edge
ghifiardi Feb 26, 2026
f9d03bf
Fix SOC Chat z-index to render above Vercel Live toolbar
ghifiardi Feb 26, 2026
c79db45
Fix SOC Chat messages to start from top, not bottom
ghifiardi Feb 26, 2026
a24a218
Hide Vercel Live toolbar with CSS
ghifiardi Feb 26, 2026
c7ceb17
Block Vercel Live toolbar via CSP instead of CSS
ghifiardi Feb 26, 2026
c02f8f3
Overhaul SOC Chat agent responses for richer contextual output
ghifiardi Feb 26, 2026
9d6fdaa
Fix CRA: always give status report for inquiries, only act on explici…
ghifiardi Feb 26, 2026
88c676d
RVA: use real CVE feed data and broaden trigger patterns
ghifiardi Feb 26, 2026
abc2184
Expand SOC Chat with broad cybersecurity topics and general knowledge…
ghifiardi Feb 26, 2026
0138ddc
Enrich SOC Chat responses with detailed explanations and contextual n…
ghifiardi Feb 26, 2026
07134d6
Wire live threat intelligence services into SOC Chat
ghifiardi Feb 26, 2026
a771b18
Fix IOC scanner to extract IOCs from natural language messages
ghifiardi Feb 26, 2026
0768a4f
Add IOC lookup as ADA handler fallback for robust detection
ghifiardi Feb 26, 2026
875334c
Add error handling and debug logging to agent routing
ghifiardi Feb 26, 2026
fe52936
Remove debug console.log from SOC Chat routing
ghifiardi Feb 26, 2026
ee95712
Add YAML-based playbook engine with 5 investigation playbooks
ghifiardi Feb 26, 2026
47e1ef7
Add IOC agent handler for playbook steps with live threat lookups
ghifiardi Feb 26, 2026
a30c4eb
Add A2A Security Monitor panel for agent-to-agent protocol monitoring
ghifiardi Feb 26, 2026
79f477a
Anonymize internal organization references in A2A mock data
ghifiardi Feb 26, 2026
55446ee
Add A2A agent card at /.well-known/agent.json
ghifiardi Feb 26, 2026
5fe33fe
Add GATRA itself to A2A registry with real agent card URL
ghifiardi Feb 26, 2026
115c01f
Add A2A Agent Card Validator edge function with panel UI
ghifiardi Feb 26, 2026
242479a
Add A2A JSON-RPC handler at /a2a endpoint
ghifiardi Feb 26, 2026
e2f4f08
Add full security middleware to A2A JSON-RPC handler (Phase 3)
ghifiardi Feb 26, 2026
53d3baa
Add role impersonation and privilege escalation injection detection
ghifiardi Feb 26, 2026
93f5047
Add live A2A Console, Endpoint Health, and Security Test Suite (Phase 4)
ghifiardi Feb 26, 2026
7299305
Connect skill router to real backends (IOC + TAA)
ghifiardi Feb 27, 2026
4a94928
Handle VirusTotal rate limiting and improve IOC diagnostics
ghifiardi Feb 27, 2026
f988993
Integrate CII-Aware Trust Policy Engine into A2A middleware
ghifiardi Feb 27, 2026
9119066
Add CII trust policy TypeScript library and test suite (36 tests)
ghifiardi Feb 27, 2026
4a795a8
Fix Indonesia Cyber (BSSN) panel: replace dead feeds with working sou…
ghifiardi Feb 27, 2026
06e594f
Merge remote-tracking branch 'gatra/main'
ghifiardi Feb 27, 2026
90fdb01
Fix double-encoded feed URLs for Indonesia Cyber panel
ghifiardi Feb 27, 2026
0876a59
Add comprehensive A2A infrastructure and CII trust policy documentation
ghifiardi Feb 27, 2026
930f991
Add privacy-preserving Personal Security Posture panel
ghifiardi Feb 27, 2026
16a3025
Add auto-scan to Security Posture: breach check, DNS security, browse…
ghifiardi Feb 27, 2026
56e550a
feat(map): add drill-down deep-zoom + 360° orbit rotation
ghifiardi Mar 3, 2026
7533726
feat(map): add Iran war theater + cyber ops conflict zones
ghifiardi Mar 5, 2026
449f40a
fix(map): add drill-down & orbit to SVG map, fix CSS selectors
ghifiardi Mar 5, 2026
969ace3
feat(soc): fix APT query handling, add VirusTotal IOC integration
ghifiardi Mar 5, 2026
23cae8b
fix(rss-proxy): add cybersecurity feed domains to allowlist
ghifiardi Mar 5, 2026
bf1a605
fix(rss-proxy): add Mandiant redirect domain (cloudblog.withgoogle.com)
ghifiardi Mar 5, 2026
2724122
feat: live Gulf air traffic — all flights over MENA/CENTCOM region
ghifiardi Mar 5, 2026
2851a76
fix: increase OpenSky timeout + split Gulf bbox for reliability
ghifiardi Mar 5, 2026
b31a0a3
fix: switch flights proxy from Edge to Node.js serverless runtime
ghifiardi Mar 5, 2026
b5855d5
fix: use Node.js https module for OpenSky proxy (not fetch API)
ghifiardi Mar 5, 2026
75ddb86
fix: deploy flights proxy to Frankfurt (fra1) — OpenSky blocks US IPs
ghifiardi Mar 5, 2026
aebc7f5
feat: switch Gulf flights from OpenSky to airplanes.live
ghifiardi Mar 5, 2026
2b0b087
debug: add console logging for Gulf flights data flow
ghifiardi Mar 5, 2026
4691598
feat: call airplanes.live directly from client (CORS: *)
ghifiardi Mar 5, 2026
423790f
fix: use /api/flights proxy for Gulf air traffic instead of direct br…
ghifiardi Mar 6, 2026
652739d
fix: enable Gulf Air Traffic for cyber variant and improve fetch resi…
ghifiardi Mar 6, 2026
9a9ce10
feat: wire CISA KEV live feed + reduce serverless polling
ghifiardi Mar 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
32 changes: 32 additions & 0 deletions .claudedocs/sentry-triage/2026-02-19.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Sentry Triage — 2026-02-19

Commit: `09174fd` on `main`

## Issues Triaged (5)

### ACTIONABLE — Fixed in Code

| ID | Title | Events | Users | Fix |
|---|---|---|---|---|
| WORLDMONITOR-1G | `Error: ML request unload-model timed out after 120000ms` | 30 | 27 | Wrapped `unloadModel()` in try/catch; timeout no longer leaks as unhandled rejection. Cleans up `loadedModels` set on failure. |
| WORLDMONITOR-1F | `Error: ML request unload-model timed out after 120000ms` | 9 | 9 | Same root cause as 1G (different release build hash). |
| WORLDMONITOR-1K | `TypeError: this.player.playVideo is not a function` | 1 | 1 | Added optional chaining (`playVideo?.()`, `pauseVideo?.()`) in `LiveNewsPanel.ts`. YT IFrame API player object may not have methods ready during initialization race. |

### NOISE — Filtered

| ID | Title | Events | Users | Filter |
|---|---|---|---|---|
| WORLDMONITOR-1J | `InternalError: too much recursion` | 1 | 1 | i18next internal `translate -> extractFromKey` cycle on Firefox 147. Added `/too much recursion/` to `ignoreErrors`. |
| WORLDMONITOR-1H | `TypeError: Cannot read properties of null (reading 'id')` | 1 | 1 | maplibre-gl internal render crash (`_drawLayers -> renderLayers`). Extended `beforeSend` regex to suppress null `id`/`type` when stack is in map chunk. |

## Files Modified

| File | Change |
|---|---|
| `src/services/ml-worker.ts` | `unloadModel()`: try/catch around `this.request()`, clean `loadedModels` on failure |
| `src/components/LiveNewsPanel.ts` | Optional chaining on `playVideo?.()` and `pauseVideo?.()` |
| `src/main.ts` | Added `/too much recursion/` to `ignoreErrors`; extended maplibre `beforeSend` filter for null `id`/`type` |

## Sentry Status

All 5 issues marked **resolved (in next release)** via API. They will auto-reopen if errors recur after deployment.
141 changes: 141 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
# ============================================
# World Monitor — Environment Variables
# ============================================
# Copy this file to .env.local and fill in the values you need.
# All keys are optional — the dashboard works without them,
# but the corresponding features will be disabled.
#
# cp .env.example .env.local
#
# ============================================


# ------ AI Summarization (Vercel) ------

# Groq API (primary — 14,400 req/day on free tier)
# Get yours at: https://console.groq.com/
GROQ_API_KEY=

# OpenRouter API (fallback — 50 req/day on free tier)
# Get yours at: https://openrouter.ai/
OPENROUTER_API_KEY=


# ------ Cross-User Cache (Vercel — Upstash Redis) ------

# Used to deduplicate AI calls and cache risk scores across visitors.
# Create a free Redis database at: https://upstash.com/
UPSTASH_REDIS_REST_URL=
UPSTASH_REDIS_REST_TOKEN=


# ------ Market Data (Vercel) ------

# Finnhub (primary stock quotes — free tier available)
# Register at: https://finnhub.io/
FINNHUB_API_KEY=


# ------ Energy Data (Vercel) ------

# U.S. Energy Information Administration (oil prices, production, inventory)
# Register at: https://www.eia.gov/opendata/
EIA_API_KEY=


# ------ Economic Data (Vercel) ------

# FRED (Federal Reserve Economic Data)
# Register at: https://fred.stlouisfed.org/docs/api/api_key.html
FRED_API_KEY=


# ------ Aircraft Tracking (Vercel) ------

# Wingbits aircraft enrichment (owner, operator, type)
# Contact: https://wingbits.com/
WINGBITS_API_KEY=


# ------ Conflict & Protest Data (Vercel) ------

# ACLED (Armed Conflict Location & Event Data — free for researchers)
# Register at: https://acleddata.com/
ACLED_ACCESS_TOKEN=


# ------ Internet Outages (Vercel) ------

# Cloudflare Radar API (requires free Cloudflare account with Radar access)
CLOUDFLARE_API_TOKEN=


# ------ Satellite Fire Detection (Vercel) ------

# NASA FIRMS (Fire Information for Resource Management System)
# Register at: https://firms.modaps.eosdis.nasa.gov/
NASA_FIRMS_API_KEY=


# ------ Railway Relay (scripts/ais-relay.cjs) ------
# The relay server handles AIS vessel tracking and OpenSky aircraft data.
# Deploy on Railway with: node scripts/ais-relay.cjs

# AISStream API key for live vessel positions
# Get yours at: https://aisstream.io/
AISSTREAM_API_KEY=

# OpenSky Network OAuth2 credentials (higher rate limits for cloud IPs)
# Register at: https://opensky-network.org/
OPENSKY_CLIENT_ID=
OPENSKY_CLIENT_SECRET=


# ------ Railway Relay Connection (Vercel → Railway) ------

# Server-side URL (https://) — used by Vercel edge functions to reach the relay
WS_RELAY_URL=

# Client-side URL (wss://) — used by the browser to connect via WebSocket
VITE_WS_RELAY_URL=


# ------ Public Data Sources (no keys required) ------

# UCDP (Uppsala Conflict Data Program) — public API, no auth
# UNHCR (UN Refugee Agency) — public API, no auth (CC BY 4.0)
# Open-Meteo — public API, no auth (processes Copernicus ERA5)
# WorldPop — public API, optional key for higher rate limits
# WORLDPOP_API_KEY=


# ------ Site Configuration ------

# Site variant: "full" (worldmonitor.app) or "tech" (tech.worldmonitor.app)
VITE_VARIANT=full

# Client-side Sentry DSN (optional). Leave empty to disable error reporting.
VITE_SENTRY_DSN=

# PostHog product analytics (optional). Leave empty to disable analytics.
VITE_POSTHOG_KEY=
VITE_POSTHOG_HOST=

# Map interaction mode:
# - "flat" keeps pitch/rotation disabled (2D interaction)
# - "3d" enables pitch/rotation interactions (default)
VITE_MAP_INTERACTION_MODE=3d


# ------ Desktop Cloud Fallback (Vercel) ------

# Comma-separated list of valid API keys for desktop cloud fallback.
# Generate with: openssl rand -hex 24 | sed 's/^/wm_/'
WORLDMONITOR_VALID_KEYS=


# ------ Registration DB (Convex) ------

# Convex deployment URL for email registration storage.
# Set up at: https://dashboard.convex.dev/
CONVEX_URL=
1 change: 1 addition & 0 deletions .env.production
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
VITE_VARIANT=cyber
88 changes: 88 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
name: Bug Report
description: Report a bug in World Monitor
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to report a bug! Please fill out the sections below so we can reproduce and fix it.
- type: dropdown
id: variant
attributes:
label: Variant
description: Which variant are you using?
options:
- worldmonitor.app (Full / Geopolitical)
- tech.worldmonitor.app (Tech / Startup)
- finance.worldmonitor.app (Finance)
- Desktop app (Windows)
- Desktop app (macOS)
- Desktop app (Linux)
validations:
required: true

- type: dropdown
id: area
attributes:
label: Affected area
description: Which part of the app is affected?
options:
- Map / Globe
- News panels / RSS feeds
- AI Insights / World Brief
- Market Radar / Crypto
- Service Status
- Trending Keywords
- Country Brief pages
- Live video streams
- Desktop app (Tauri)
- Settings / API keys
- Settings / LLMs (Ollama, Groq, OpenRouter)
- Live webcams
- Other
validations:
required: true

- type: textarea
id: description
attributes:
label: Bug description
description: A clear description of what the bug is.
placeholder: Describe the bug...
validations:
required: true

- type: textarea
id: steps
attributes:
label: Steps to reproduce
description: Steps to reproduce the behavior.
placeholder: |
1. Go to '...'
2. Click on '...'
3. Scroll down to '...'
4. See error
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected behavior
description: What you expected to happen.
validations:
required: true

- type: textarea
id: screenshots
attributes:
label: Screenshots / Console errors
description: If applicable, add screenshots or paste browser console errors.

- type: input
id: browser
attributes:
label: Browser & OS
description: e.g. Chrome 120 on Windows 11, Safari 17 on macOS Sonoma
placeholder: Chrome 120 on Windows 11
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Documentation
url: https://github.com/koala73/worldmonitor/blob/main/docs/DOCUMENTATION.md
about: Read the full documentation before opening an issue
- name: Discussions
url: https://github.com/koala73/worldmonitor/discussions
about: Ask questions and share ideas in Discussions
55 changes: 55 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Feature Request
description: Suggest a new feature or improvement
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Have an idea for World Monitor? We'd love to hear it!
- type: dropdown
id: area
attributes:
label: Feature area
description: Which area does this feature relate to?
options:
- Map / Globe / Data layers
- News panels / RSS feeds
- AI / Intelligence analysis
- Market data / Crypto
- Desktop app
- UI / UX
- API / Backend
- Other
validations:
required: true

- type: textarea
id: description
attributes:
label: Description
description: A clear description of the feature you'd like.
placeholder: I'd like to see...
validations:
required: true

- type: textarea
id: problem
attributes:
label: Problem it solves
description: What problem does this feature address? What's the use case?
placeholder: This would help with...
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: Have you considered any alternative solutions or workarounds?

- type: textarea
id: context
attributes:
label: Additional context
description: Any mockups, screenshots, links, or references that help illustrate the idea.
Loading