Commit Graph

76 Commits

Author SHA1 Message Date
anoracleofra-code a771fe8cfb chore: update ChangelogModal for v0.7.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 06:37:15 -06:00
anoracleofra-code 4a14a2f078 v0.7.0: performance hardening — parallel fetches, deferred icons, AIS stability
Optimizations:
- Parallelized yfinance stock/oil fetches via ThreadPoolExecutor (~2s vs ~8s)
- AIS backoff reset after 200 successes; removed hot-loop pruning (lock contention)
- Single-pass ETag serialization (was double-serializing JSON)
- Deferred ~50 non-critical map icons via setTimeout(0)
- News feed animation capped at 15 items (was 100+ simultaneous)
- heapq.nlargest() for FIRMS fires (60K→5K) and internet outages
- Removed satellite duplication from fast endpoint
- Geopolitics interval 5min → 30min
- Ship counts single-pass memoized; color maps module-level constants
- Improved GDELT URL-to-headline extraction (skip gibberish slugs)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 06:25:31 -06:00
Shadowbroker c539a05d20 Merge pull request #35 from suranyami/feat/multi-arch-docker-and-backend-proxy
fix: resolve proxy gzip decoding and BACKEND_URL Docker override issues
2026-03-10 22:45:11 -06:00
David Parry 7ead58d453 Merge branch 'main' into feat/multi-arch-docker-and-backend-proxy 2026-03-11 15:05:55 +11:00
David Parry 036c62d2c0 fix: resolve proxy gzip decoding and BACKEND_URL Docker override issues
Two bugs introduced by the Next.js proxy Route Handler:

1. ERR_CONTENT_DECODING_FAILED — Node.js fetch() automatically
   decompresses gzip/br responses from the backend, but the proxy was
   still forwarding Content-Encoding and Content-Length headers to the
   browser. The browser would then try to decompress already-decompressed
   data and fail. Fixed by stripping Content-Encoding and Content-Length
   from upstream response headers.

2. BACKEND_URL shell env leak into Docker Compose — docker-compose.yml
   used ${BACKEND_URL:-http://backend:8000}, which was being overridden
   by BACKEND_URL=http://localhost:8000 set in .mise.local.toml for local
   dev. Inside the frontend container, localhost:8000 does not exist,
   causing all proxied requests to return 502. Fixed by hardcoding
   http://backend:8000 in docker-compose.yml so the shell environment
   cannot override it.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 15:00:50 +11:00
David Parry a3b18e23c1 feat: proxy backend API through Next.js using runtime BACKEND_URL
Previously, NEXT_PUBLIC_API_URL was a build-time Next.js variable, making
it impossible to configure the backend URL in docker-compose `environment`
without rebuilding the image.

This change introduces a proper server-side proxy:
- next.config.ts: adds a rewrite rule that forwards all /api/* requests
  to BACKEND_URL (read at server startup, not baked at build time).
  Defaults to http://localhost:8000 so local dev works without config.
- api.ts: API_BASE is now an empty string — all fetch calls use relative
  /api/... paths, which the Next.js server proxies to the backend.
- docker-compose.yml: replaces NEXT_PUBLIC_API_URL build arg with a
  runtime BACKEND_URL env var defaulting to http://backend:8000, using
  Docker's internal networking. Port 8000 no longer needs to be exposed.
- README: updates Docker setup docs, standalone compose example, and
  environment variable reference to reflect BACKEND_URL.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 14:18:30 +11:00
Shadowbroker 4c92fbe990 Merge pull request #33 from suranyami/feat/multi-arch-docker-and-backend-proxy
Feat/multi arch docker and backend URL as env var
2026-03-10 21:02:33 -06:00
David Parry b4c9e78cdd feat: proxy backend API through Next.js using runtime BACKEND_URL
Previously, NEXT_PUBLIC_API_URL was a build-time Next.js variable, making
it impossible to configure the backend URL in docker-compose `environment`
without rebuilding the image.

This change introduces a proper server-side proxy:
- next.config.ts: adds a rewrite rule that forwards all /api/* requests
  to BACKEND_URL (read at server startup, not baked at build time).
  Defaults to http://localhost:8000 so local dev works without config.
- api.ts: API_BASE is now an empty string — all fetch calls use relative
  /api/... paths, which the Next.js server proxies to the backend.
- docker-compose.yml: replaces NEXT_PUBLIC_API_URL build arg with a
  runtime BACKEND_URL env var defaulting to http://backend:8000, using
  Docker's internal networking. Port 8000 no longer needs to be exposed.
- README: updates Docker setup docs, standalone compose example, and
  environment variable reference to reflect BACKEND_URL.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 13:49:00 +11:00
David Parry e3e0db6f3d ci: build and publish multi-arch Docker images (amd64 + arm64)
Add `platforms: linux/amd64,linux/arm64` to both the frontend and
backend build-and-push steps. The existing setup-buildx-action already
enables QEMU-based cross-compilation, so no additional steps are needed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 13:48:24 +11:00
anoracleofra-code 950c308f04 v0.6.0: custom news feeds, data center map layer, performance hardening
New features:
- Custom RSS Feed Manager: add/remove/prioritize up to 20 news sources
  from the Settings panel with weight levels 1-5. Persists across restarts.
- Global Data Center Map Layer: 2,000+ DCs plotted worldwide with clustering,
  server-rack icons, and automatic internet outage cross-referencing.
- Imperative map rendering: high-volume layers bypass React reconciliation
  via direct setData() calls with debounced updates on dense layers.
- Enhanced /api/health with per-source freshness timestamps and counts.

Fixes:
- Data center coordinates fixed for 187 Southern Hemisphere entries
- Docker CORS_ORIGINS passthrough in docker-compose.yml
- Start scripts warn on Python 3.13+ compatibility
- Settings panel redesigned with tabbed UI (API Keys / News Feeds)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 15:27:20 -06:00
anoracleofra-code 195c6b64b9 v0.5.0: FIRMS fire hotspots, space weather, internet outages
New intelligence layers:
- NASA FIRMS VIIRS fire hotspots (5K+ global thermal anomalies, flame icons)
- NOAA space weather badge (Kp index in status bar)
- IODA regional internet outage monitoring (grey markers, BGP/ping only)

Key improvements:
- Fire clusters use flame-shaped icons (not circles) for clear differentiation
- Internet outages are region-level with reliable datasources only
- Removed radiation layer (no viable free real-time API)
- All outage markers grey to avoid color confusion with other layers
- Filtered out merit-nt telescope data that produced misleading percentages

Updated changelog modal, README, and package.json for v0.5.0.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 10:23:38 -06:00
anoracleofra-code 7cb926e227 feat: add FIRMS thermal, space weather, radiation, and internet outage layers
Add 4 new intelligence layers for v0.5:
- NASA FIRMS VIIRS thermal anomaly tiles (frontend-only WMTS)
- NOAA Space Weather Kp index badge in bottom bar
- Safecast radiation monitoring with clustered markers
- IODA internet outage alerts at country centroids

All use free keyless APIs. All layers default to off.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 09:01:35 -06:00
anoracleofra-code c4de39bb02 fix: remove defunct FLIR/NVG/CRT style presets, keep only DEFAULT and SATELLITE
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 04:53:17 -06:00
anoracleofra-code e7f3378b5a chore: remove debug/sample files from tracking, update .gitignore
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 04:31:21 -06:00
anoracleofra-code 41a7811360 fix: install backend Node.js deps (ws) in start scripts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 04:25:53 -06:00
anoracleofra-code 791ec971d9 fix: filter out TWR (tower/platform) ADS-B transponders from flight data
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 21:41:57 -06:00
anoracleofra-code d05bef8de5 chore: bump frontend version to 0.4.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 21:02:03 -06:00
anoracleofra-code c84cba927a fix: tag Docker images as latest + semver instead of branch name
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 20:55:06 -06:00
Shadowbroker ac040a307b Update README.md 2026-03-09 19:38:55 -06:00
Shadowbroker b0f91c4baf Update README.md 2026-03-09 19:36:59 -06:00
Shadowbroker 5a8f3813c8 Update README.md 2026-03-09 19:35:52 -06:00
Shadowbroker 35f6b5900e Update README.md 2026-03-09 19:34:42 -06:00
Shadowbroker c002d2fa1b Delete assets directory 2026-03-09 19:33:37 -06:00
Shadowbroker 65d1c2b715 Update README.md 2026-03-09 19:29:13 -06:00
Shadowbroker ab178747cc Update README.md 2026-03-09 19:25:20 -06:00
Shadowbroker 3713b214d5 Update README.md 2026-03-09 19:11:25 -06:00
Shadowbroker b1827b5fa6 Update README.md 2026-03-09 19:07:36 -06:00
Shadowbroker c4e48e2579 Add files via upload 2026-03-09 19:03:13 -06:00
Shadowbroker 1f3036e106 Create placeholder 2026-03-09 18:26:38 -06:00
Shadowbroker a0531362a9 Delete assets 2026-03-09 18:24:20 -06:00
Shadowbroker 23e1ad1b0d Create assets 2026-03-09 18:23:02 -06:00
Shadowbroker 83a7488740 Update README.md 2026-03-09 18:03:56 -06:00
anoracleofra-code 1cf7a31a63 merge: resolve conflicts with Podman compose PR 2026-03-09 17:48:22 -06:00
anoracleofra-code e89e992293 feat: v0.4 — satellite imagery, KiwiSDR radio, LOCATE bar & security cleanup
New features:
- NASA GIBS (MODIS Terra) daily satellite imagery with 30-day time slider
- Esri World Imagery high-res satellite layer (sub-meter, zoom 18+)
- KiwiSDR SDR receivers on map with embedded radio tuner
- Sentinel-2 intel card — right-click for recent satellite photo popup
- LOCATE bar — search by coordinates or place name (Nominatim geocoding)
- SATELLITE style preset in bottom bar cycling
- v0.4 changelog modal on first launch

Fixes:
- Satellite imagery renders below data icons (imagery-ceiling anchor)
- Sentinel-2 opens full-res PNG directly (not STAC catalog JSON)
- Light/dark theme: UI stays dark, only map basemap changes

Security:
- Removed test files with hardcoded API keys from tracking
- Removed .git_backup directory from tracking
- Updated .gitignore to exclude test files, dev scripts, cache files

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 17:46:33 -06:00
Shadowbroker ec3296f23a Merge pull request #23 from ttulttul/codex/podman-compose-and-css-fixes
Add Podman compose support and fix frontend production CSS
2026-03-09 15:38:57 -06:00
Ken Simpson f197ec0f20 Add Podman compose support and fix frontend production CSS 2026-03-09 11:51:37 -07:00
anoracleofra-code 85748a6fea docs: update description to multi-domain OSINT instead of full-spectrum geospatial 2026-03-09 09:30:31 -06:00
anoracleofra-code 28f92f1cb9 fix: start scripts now validate prerequisites and stop on failure
- Check for Python and Node.js before starting
- Stop with clear error message if pip install fails
- Recommend Python 3.10-3.12 (3.13+ has compatibility issues)
- Show version info at startup for easier debugging
- Updated README with Python version guidance
2026-03-09 09:25:57 -06:00
anoracleofra-code 14dc1a714d fix: add legacy-cgi dependency for Python 3.13+ compatibility
Python 3.13 deprecated and 3.14 removed the cgi module entirely.
feedparser imports it, causing ModuleNotFoundError on newer Python.
2026-03-09 08:45:40 -06:00
anoracleofra-code c9400785a4 fix: only show flight trail for selected no-route aircraft, not all planes 2026-03-09 08:14:42 -06:00
anoracleofra-code 7b4e907bd6 fix: show pip install errors in start.bat and loosen dependency pins for Python 3.13+
start.bat was silently swallowing pip errors. Strict version pins on
pydantic, fastapi, and uvicorn caused build failures on Python 3.13+
due to missing pre-built wheels.
2026-03-09 07:55:18 -06:00
anoracleofra-code 1d0ccdd55a fix: create .env file if missing when saving API keys
Docker users don't have a .env file by default, so the settings
page silently failed to save keys. Now creates it automatically.
2026-03-09 07:51:59 -06:00
anoracleofra-code ac995eb628 fix: render flight trails for all no-route aircraft instead of selected only 2026-03-09 07:50:39 -06:00
anoracleofra-code 2dcf7061d1 fix: Docker build failures — backend .dockerignore excluded package.json, frontend lock file missing hls.js
Backend: *.json glob in .dockerignore excluded package.json, causing
npm install to fail with ENOENT. Replaced with explicit exclusions.

Frontend: hls.js was added to package.json but package-lock.json was
not regenerated, causing npm ci to fail with EUSAGE sync error.
2026-03-09 06:30:20 -06:00
anoracleofra-code 7605b5f3a1 fix: include satellites in fast data endpoint payload
Satellites were missing from /api/live-data/fast response, causing
the frontend to show 0 satellites despite the backend having data.
2026-03-09 06:30:19 -06:00
anoracleofra-code f8c48830f5 fix: install ws module dependencies in backend Dockerfile for AIS proxy 2026-03-09 06:01:05 -06:00
anoracleofra-code e2e1cda5cb fix: document requirement for permissive CORS policy 2026-03-09 05:56:46 -06:00
anoracleofra-code fad9572959 fix: resolve security concerns in AIS proxy, GDELT parsing, and env key validation 2026-03-09 05:53:15 -06:00
anoracleofra-code b04b6908c2 fix: add node and curl dependencies to backend docker image 2026-03-09 05:41:43 -06:00
anoracleofra-code 4c846bf805 fix: use hls.js to support HLS video streams on non-Safari browsers 2026-03-09 01:35:48 -06:00