mirror of
https://github.com/koala73/worldmonitor.git
synced 2026-04-26 01:24:59 +02:00
* feat: premium panel gating, code cleanup, and backend simplifications
Recovered stranded changes from fix/desktop-premium-error-unification.
Premium gating:
- Add premium field ('locked'|'enhanced') to PanelConfig and LayerDefinition
- Panel.showLocked() with lock icon, CTA button, and _locked guard
- PRO badge for enhanced panels when no WM API key
- Exponential backoff auto-retry on showError() (15s→30s→60s→180s cap)
- Gate oref-sirens and telegram-intel panels behind WM API key
- Lock gpsJamming and iranAttacks layer toggles, badge ciiChoropleth
- Add tauri-titlebar drag region for custom titlebar
Code cleanup:
- Extract inline CSS from AirlineIntelPanel, WorldClockPanel to panels.css
- Remove unused showGeoError() from CountryBriefPage
- Remove dead geocodeFailed/retryBtn/closeBtn locale keys (20 files)
- Clean up var names and inline styles across 6 components
Backend:
- Remove seed-meta throttle from redis.ts (unnecessary complexity)
- Risk scores: call handler functions directly instead of raw Redis reads
- Update OpenRouter model to gpt-oss-safeguard-20b:nitro
- Add direct UCDP API fetching with version probing
Config:
- Remove titleBarStyle: Overlay from tauri.conf.json
- Add build:pro and build-sidecar-handlers to build:desktop
- Remove DXB/RUH from default aviation watchlist
- Simplify reverse-geocode (remove AbortController wrapper)
* fix: cast handler requests to any for API tsconfig compat
* fix: revert stale changes that conflict with merged PRs
Reverts files to main versions where old branch changes would
overwrite intentional fixes from PRs #1134, #1138, #1144, #1154:
- news/_shared.ts: keep gemini-2.5-flash model (not stale gpt-oss)
- redis.ts: keep seed-meta throttle from PR #1138
- reverse-geocode.ts: keep AbortController timeout from PR #1134
- CountryBriefPage.ts: keep showGeoError() from PR #1134
- country-intel.ts: keep showGeoError usage from PR #1134
- get-risk-scores.ts: revert non-existent imports
- watchlist.ts: keep DXB/RUH airports from PR #1144
- locales: restore geocodeFailed/retryBtn/closeBtn keys
* fix: neutralize language, parallel override loading, fetch timeout
- Rename conflict zone from "War" to "Border Conflict", intensity high→medium
- Rewrite description to factual language (no "open war" claim)
- Load country boundary overrides in parallel with main GeoJSON
- Neutralize comments/docs: reference Natural Earth source, remove political terms
- Add 60s timeout to Natural Earth fetch script (~24MB download)
- Add trailing newline to GeoJSON override file
* fix: restore caller messages in Panel errors and vessel expansion in popups
- Move UCDP direct-fetch cooldown after successful fetch to avoid
suppressing all data for 10 minutes on a single failure
- Use caller-provided messages in showError/showRetrying instead of
discarding them; respect autoRetrySeconds parameter
- Restore cluster-toggle click handler and expandable vessel list
in military cluster popups
79 lines
2.3 KiB
JSON
79 lines
2.3 KiB
JSON
{
|
|
"$schema": "https://schema.tauri.app/config/2",
|
|
"productName": "World Monitor",
|
|
"mainBinaryName": "world-monitor",
|
|
"version": "2.5.25",
|
|
"identifier": "app.worldmonitor.desktop",
|
|
"build": {
|
|
"beforeDevCommand": "npm run build:sidecar-sebuf && npm run dev",
|
|
"beforeBuildCommand": "npm run build:desktop",
|
|
"frontendDist": "../dist",
|
|
"devUrl": "http://localhost:3000"
|
|
},
|
|
"app": {
|
|
"windows": [
|
|
{
|
|
"title": "World Monitor",
|
|
"width": 1440,
|
|
"height": 900,
|
|
"minWidth": 1200,
|
|
"minHeight": 720,
|
|
"resizable": true,
|
|
"fullscreen": false,
|
|
"backgroundColor": [
|
|
26,
|
|
28,
|
|
30,
|
|
255
|
|
]
|
|
}
|
|
],
|
|
"security": {
|
|
"csp": "default-src 'self'; connect-src 'self' https: http://localhost:5173 http://127.0.0.1:* ws: wss: blob: data:; img-src 'self' data: blob: https:; style-src 'self' 'unsafe-inline'; script-src 'self' 'wasm-unsafe-eval' https://www.youtube.com; worker-src 'self' blob:; font-src 'self' data: https:; media-src 'self' data: blob: https: http://127.0.0.1:* http://localhost:*; frame-src 'self' http://127.0.0.1:* http://localhost:* https://worldmonitor.app https://tech.worldmonitor.app https://www.youtube.com https://www.youtube-nocookie.com;"
|
|
}
|
|
},
|
|
"bundle": {
|
|
"active": true,
|
|
"targets": [
|
|
"app",
|
|
"dmg",
|
|
"nsis",
|
|
"msi",
|
|
"appimage"
|
|
],
|
|
"category": "Productivity",
|
|
"shortDescription": "World Monitor desktop app (supports World and Tech variants)",
|
|
"longDescription": "World Monitor desktop app for real-time global intelligence. Build with VITE_VARIANT=tech to package Tech Monitor branding and dataset defaults.",
|
|
"icon": [
|
|
"icons/32x32.png",
|
|
"icons/128x128.png",
|
|
"icons/128x128@2x.png",
|
|
"icons/icon.icns",
|
|
"icons/icon.ico"
|
|
],
|
|
"resources": [
|
|
"../api",
|
|
"sidecar/local-api-server.mjs",
|
|
"sidecar/package.json",
|
|
"sidecar/node",
|
|
"../data",
|
|
"../src/config"
|
|
],
|
|
"windows": {
|
|
"digestAlgorithm": "sha256",
|
|
"timestampUrl": "https://timestamp.digicert.com",
|
|
"nsis": {
|
|
"installerHooks": "nsis/installer-hooks.nsh"
|
|
}
|
|
},
|
|
"macOS": {
|
|
"hardenedRuntime": true
|
|
},
|
|
"linux": {
|
|
"appimage": {
|
|
"bundleMediaFramework": true
|
|
}
|
|
}
|
|
}
|
|
}
|