mirror of
https://github.com/koala73/worldmonitor.git
synced 2026-04-25 17:14:57 +02:00
* docs(mintlify): add user-facing panel reference pages (PR 2)
Six new end-user pages under docs/panels/ for the shipped panels that
had no user-facing documentation in the published docs, per the plan
docs/plans/2026-04-19-001-feat-docs-user-facing-ia-refresh-plan.md.
All claims are grounded in the live component source + SEED_META +
handler dirs — no invented fields, counts, or refresh windows.
- panels/latest-brief.mdx — daily AI brief panel (ready/composing/
locked states). Hard-gated PRO (`premium: 'locked'`).
- panels/forecast.mdx — AI Forecasts panel (internal id `forecast`,
label "AI Forecasts"). Domain + macro-region filter pills; 10%
probability floor. Free on web, locked on desktop.
- panels/consumer-prices.mdx — 5-tab retail-price surface (Overview
/ Categories / Movers / Spread / Health) with market, basket, and
7/30/90-day controls. Free.
- panels/disease-outbreaks.mdx — WHO / ProMED / national health
ministries outbreak alerts with alert/warning/watch pills. Free.
- panels/radiation-watch.mdx — EPA RadNet + Safecast observations
with anomaly scoring and source-confidence synthesis. Free.
- panels/thermal-escalation.mdx — FIRMS/VIIRS thermal clusters with
persistence and conflict-adjacency flags. Free.
Also:
- docs/docs.json — new Panels nav group (Latest Brief, AI Forecasts,
Consumer Prices, Disease Outbreaks, Radiation Watch, Thermal
Escalation).
- docs/features.mdx — cross-link every panel name in the Cmd+K
inventory to its new page (and link Country Instability + Country
Resilience from the same list).
- docs/methodology/country-resilience-index.mdx — short "In the
dashboard" bridge section naming the three CRI surfaces
(Resilience widget, Country Deep-Dive, map choropleth) so the
methodology page doubles as the user-facing panel reference for
CRI. No separate docs/panels/country-resilience.mdx — keeps the
methodology page as the single source of truth.
* docs(panels): fix Latest Brief polling description
Reviewer catch: the panel does schedule a 60-second re-poll while
in the composing state. `COMPOSING_POLL_MS = 60_000` at
src/components/LatestBriefPanel.ts:78, and `scheduleComposingPoll()`
is called from `renderComposing()` at :366. The poll auto-promotes
the panel to ready without a manual refresh and is cleared when
the panel leaves composing. My earlier 'no polling timer' line was
right for the ready state but wrong as a blanket claim.
* docs(panels): fix variant-availability claims across all 6 panel pages
Reviewer catch on consumer-prices surfaced the same class of error
on 4 other panel pages: I described variant availability with loose
phrasing ('most variants', 'where X context is relevant', 'tech/
finance/happy opt-in') that didn't match the actual per-variant
panel registries in src/config/panels.ts.
Verified matrix against each *_PANELS block directly:
Panel | FULL | TECH | FINANCE | HAPPY | COMMODITY
consumer-prices | opt | - | def | - | def
latest-brief | def | def | def | - | def (all PRO-locked)
disease-outbreaks | def | - | - | - | -
radiation-watch | def | - | - | - | -
thermal-escalation | def | - | - | - | -
forecast | def | - | - | - | - (PRO-locked on desktop)
All 6 pages now name the exact variant blocks in src/config/panels.ts
that register them, so the claim is re-verifiable by grep rather than
drifting with future panel-registry changes.
* docs(panels): fix 5 reviewer findings — no invented controls/sources/keys
All fixes cross-checked against source.
- consumer-prices: no basket selector UI exists. The panel has a
market bar, a range bar, and tab/category affordances; basket is
derived from market selection (essentials-<code>, or DEFAULT_BASKET
for the 'all' aggregate view). Per
src/components/ConsumerPricesPanel.ts:120-123 and :216-229.
- disease-outbreaks: 'Row click opens advisory' was wrong. The only
interactive elements in-row are the source-name <a> link
(sanitised URL, target=_blank); clicking the row itself is a no-op
(the only content-level listener is for [data-filter] pills and
the search input). Per DiseaseOutbreaksPanel.ts:35-49,115-117.
- disease-outbreaks: upstream list was wrong. Actual seeder uses
WHO DON (JSON API), CDC HAN (RSS), Outbreak News Today
(aggregator), and ThinkGlobalHealth disease tracker
(ProMED-sourced, 90d lookback). Noted the in-panel tooltip's
shorter 'WHO, ProMED, health ministries' summary and gave the full
upstream list with the 72h Redis TTL. Per seed-disease-outbreaks
.mjs:31-38.
- radiation-watch: summary bar renders 6 cards, not 7 — Anomalies,
Elevated, Confirmed, Low Confidence, Conflicts, Spikes. The
CPM-derived indicator is a per-row badge (radiation-flag-converted
at :67), not a summary card. Moved the CPM reference to the
per-row badges list. Per RadiationWatchPanel.ts:85-112.
- latest-brief: Redis key shape corrected. The composer writes the
envelope to brief:{userId}:{issueSlot} (where issueSlot comes from
issueSlotInTz, not a plain date) and atomically writes a latest
pointer at brief:latest:{userId} → {issueSlot}. Readers resolve
via the pointer. 7-day TTL on both. Per
seed-digest-notifications.mjs:1103-1115 and
api/latest-brief.ts:80-89.
* docs(panels): Tier 1 — PRO/LLM panel reference pages (9)
Adds user-facing panel pages for the 9 PRO/LLM-backed surfaces flagged
in the extended audit. All claims grounded in component source +
src/config/panels.ts entries (with line cites).
- panels/chat-analyst.mdx — WM Analyst (conversational AI, 5 quick
actions, 4 domain scopes, POSTs /api/chat-analyst via premiumFetch).
- panels/market-implications.mdx — AI Market Implications trade signals
(LONG/SHORT/HEDGE × HIGH/MEDIUM/LOW, transmission paths, 120min
maxStaleMin, degrade-to-warn). Carries the repo's disclaimer verbatim.
- panels/deduction.mdx — Deduct Situation (opt-in PRO; 5s cooldown;
composes buildNewsContext + active framework).
- panels/daily-market-brief.mdx — Daily Market Brief (stanced items,
framework selector, live vs cached source badge).
- panels/regional-intelligence.mdx — Regional Intelligence Board
(7 BOARD_REGIONS, 6 structured blocks + narrative sections,
request-sequence arbitrator, opt-in PRO).
- panels/strategic-posture.mdx — AI Strategic Posture (cached posture
+ live military vessels → recalcPostureWithVessels; free on web,
enhanced on desktop).
- panels/stock-analysis.mdx — Premium Stock Analysis (per-ticker
deep dive: signal, targets, consensus, upgrades, insiders, sparkline).
- panels/stock-backtest.mdx — Premium Backtesting (longitudinal view;
live vs cached data badge).
- panels/wsb-ticker-scanner.mdx — WSB Ticker Scanner (retail sentiment
+ velocity score with 4-tier color bucketing).
All 9 are PRO (8 via apiKeyPanels allowlist at src/config/panels.ts:973,
strategic-posture is free-on-web/enhanced-on-desktop). Variant matrices
name the exact *_PANELS block registering each panel.
* docs(panels): Tier 2 — flagship free data panels (7)
Adds reference pages for 7 flagship free panels. Every claim grounded
in the panel component + src/config/panels.ts per-variant registration.
- panels/airline-intel.mdx — 6-tab aviation surface (ops/flights/
airlines/tracking/news/prices), 8 aviation RPCs, user watchlist.
- panels/tech-readiness.mdx — ranked country tech-readiness index with
6-hour in-panel refresh interval.
- panels/trade-policy.mdx — 6-tab trade-policy surface (restrictions/
tariffs/flows/barriers/revenue/comtrade).
- panels/supply-chain.mdx — composite stress + carriers + minerals +
Scenario Engine trigger surface (free panel, PRO scenario activation).
- panels/sanctions-pressure.mdx — OFAC SDN + Consolidated list
pressure rollup with new/vessels/aircraft summary cards and top-8
country rows.
- panels/hormuz-tracker.mdx — Hormuz chokepoint drill-down; status
indicator + per-series bar charts; references Scenario Engine's
hormuz-tanker-blockade template.
- panels/energy-crisis.mdx — IEA 2026 Energy Crisis Policy Response
Tracker; category/sector/status filters.
All 7 are free. Variant matrices name exact *_PANELS blocks
registering each panel.
* docs(panels): Tier 3 — compact panels (5)
Adds reference pages for 5 compact user-facing panels.
- panels/world-clock.mdx — 22 global market-centre clocks with
exchange labels + open/closed indicators (client-side only).
- panels/monitors.mdx — personal keyword alerts, localStorage-persisted;
links to Features → Custom Monitors for longer explanation.
- panels/oref-sirens.mdx — OREF civil-defence siren feed; active +
24h wave history; free on web, PRO-locked on desktop (_desktop &&
premium: 'locked' pattern).
- panels/telegram-intel.mdx — topic-tabbed Telegram channel mirror
via relay; free on web, PRO-locked on desktop.
- panels/fsi.mdx — US KCFSI + EU FSI stress composites with
four-level colour buckets (Low/Moderate/Elevated/High).
All 5 grounded in component source + variant registrations.
oref-sirens and telegram-intel correctly describe the _desktop &&
locking pattern rather than the misleading 'PRO' shorthand used
earlier for other desktop-locked panels.
* docs(panels): Tier 4 + 5 catalogue pages, nav re-grouping, features cross-links
Closes out the comprehensive panel-reference expansion. Two catalogue
pages cover the remaining ~60 panels collectively so they're all
searchable and findable without dedicated pages per feed/tile.
- panels/news-feeds.mdx — catalogue covering all content-stream panels:
regional news (africa/asia/europe/latam/us/middleeast/politics),
topical news (climate/crypto/economic/markets/mining/commodity/
commodities), tech/startup streams (startups/unicorns/accelerators/
fintech/ipo/layoffs/producthunt/regionalStartups/thinktanks/vcblogs/
defense-patents/ai-regulation/tech-hubs/ai/cloud/hardware/dev/
security/github), finance streams (bonds/centralbanks/derivatives/
forex/institutional/policy/fin-regulation/commodity-regulation/
analysis), happy variant streams (species/breakthroughs/progress/
spotlight/giving/digest/events/funding/counters/gov/renewable).
- panels/indicators-and-signals.mdx — catalogue covering compact
market-indicator tiles, correlation panels, and misc signal surfaces.
Grouped by function: sentiment, macro, calendars, market-structure,
commodity, crypto, regional economy, correlation panels, misc signals.
docs/docs.json — split the Panels group into three for navigability:
- Panels — AI & PRO (11 pages)
- Panels — Data & Tracking (16 pages)
- Panels — Catalogues (2 pages)
docs/features.mdx — Cmd+K inventory rewritten as per-family sub-lists
with links to every panel page (or catalogue page for the ones
that live in a catalogue). Replaces the prior run-on paragraph.
Every catalogue panel is also registered in at least one *_PANELS
block in src/config/panels.ts — the catalogue pages note this and
point readers to the config file for variant-availability details.
* docs(panels): fix airline-intel + world-clock source-of-truth errors
- airline-intel: refresh behavior section was wrong on two counts.
(1) The panel DOES have a polling timer: a 5-minute setInterval
in the constructor calling refresh() (which reloads ops + active
tab). (2) The 'prices' tab does NOT re-fetch on tab switch —
it's explicitly excluded from both tab-switch and auto-refresh
paths, loading only on explicit search-button click. Three
distinct refresh paths now documented with source line hints.
Per src/components/AirlineIntelPanel.ts ~:173 (setInterval),
:287 (prices tab-switch guard), :291 (refresh() prices skip).
- world-clock: the WORLD_CITIES list has 30 entries, not '~22'.
Replaced the approximate count with the exact number and a
:14-43 line-range cite so it's re-verifiable.
434 lines
12 KiB
JSON
434 lines
12 KiB
JSON
{
|
|
"$schema": "https://mintlify.com/schema.json",
|
|
"theme": "mint",
|
|
"name": "World Monitor",
|
|
"description": "AI-powered real-time global intelligence dashboard",
|
|
"logo": {
|
|
"dark": "/logo.png",
|
|
"light": "/logo.png",
|
|
"href": "https://www.worldmonitor.app"
|
|
},
|
|
"favicon": "/favicon.png",
|
|
"seo": {
|
|
"metatags": {
|
|
"og:image": "https://www.worldmonitor.app/favico/og-image.png",
|
|
"og:site_name": "World Monitor Documentation",
|
|
"og:type": "website",
|
|
"og:locale": "en_US",
|
|
"twitter:card": "summary_large_image",
|
|
"twitter:site": "@worldmonitorai",
|
|
"twitter:image": "https://www.worldmonitor.app/favico/og-image.png"
|
|
}
|
|
},
|
|
"colors": {
|
|
"primary": "#4ade80",
|
|
"light": "#4ade80",
|
|
"dark": "#22c55e"
|
|
},
|
|
"navbar": {
|
|
"links": [
|
|
{
|
|
"label": "Blog",
|
|
"href": "https://www.worldmonitor.app/blog"
|
|
},
|
|
{
|
|
"label": "Dashboard",
|
|
"href": "https://www.worldmonitor.app"
|
|
},
|
|
{
|
|
"label": "Pro",
|
|
"href": "https://www.worldmonitor.app/pro"
|
|
},
|
|
{
|
|
"label": "GitHub",
|
|
"href": "https://github.com/koala73/worldmonitor"
|
|
}
|
|
],
|
|
"primary": {
|
|
"type": "button",
|
|
"label": "Get Early Access",
|
|
"href": "https://www.worldmonitor.app/pro#waitlist"
|
|
}
|
|
},
|
|
"navigation": {
|
|
"tabs": [
|
|
{
|
|
"tab": "Documentation",
|
|
"groups": [
|
|
{
|
|
"group": "Getting Started",
|
|
"pages": [
|
|
"documentation",
|
|
"getting-started",
|
|
"architecture"
|
|
]
|
|
},
|
|
{
|
|
"group": "Usage",
|
|
"pages": [
|
|
"usage-quickstart",
|
|
"usage-auth",
|
|
"usage-rate-limits",
|
|
"usage-errors"
|
|
]
|
|
},
|
|
{
|
|
"group": "Platform & Features",
|
|
"pages": [
|
|
"overview",
|
|
"features",
|
|
"hotspots"
|
|
]
|
|
},
|
|
{
|
|
"group": "Intelligence & Analysis",
|
|
"pages": [
|
|
"signal-intelligence",
|
|
"ai-intelligence",
|
|
"country-instability-index",
|
|
"methodology/country-resilience-index",
|
|
"geographic-convergence",
|
|
"strategic-risk",
|
|
"algorithms"
|
|
]
|
|
},
|
|
{
|
|
"group": "Workflows",
|
|
"pages": [
|
|
"route-explorer",
|
|
"scenario-engine"
|
|
]
|
|
},
|
|
{
|
|
"group": "Map Layers",
|
|
"pages": [
|
|
"map-engine",
|
|
"orbital-surveillance",
|
|
"military-tracking",
|
|
"maritime-intelligence",
|
|
"natural-disasters",
|
|
"infrastructure-cascade",
|
|
"maps-and-geocoding",
|
|
"webcam-layer"
|
|
]
|
|
},
|
|
{
|
|
"group": "Finance",
|
|
"pages": [
|
|
"finance-data",
|
|
"premium-finance",
|
|
"premium-finance-search"
|
|
]
|
|
},
|
|
{
|
|
"group": "Panels — AI & PRO",
|
|
"pages": [
|
|
"panels/latest-brief",
|
|
"panels/forecast",
|
|
"panels/chat-analyst",
|
|
"panels/market-implications",
|
|
"panels/deduction",
|
|
"panels/daily-market-brief",
|
|
"panels/regional-intelligence",
|
|
"panels/strategic-posture",
|
|
"panels/stock-analysis",
|
|
"panels/stock-backtest",
|
|
"panels/wsb-ticker-scanner"
|
|
]
|
|
},
|
|
{
|
|
"group": "Panels — Data & Tracking",
|
|
"pages": [
|
|
"panels/consumer-prices",
|
|
"panels/disease-outbreaks",
|
|
"panels/radiation-watch",
|
|
"panels/thermal-escalation",
|
|
"panels/airline-intel",
|
|
"panels/tech-readiness",
|
|
"panels/trade-policy",
|
|
"panels/supply-chain",
|
|
"panels/sanctions-pressure",
|
|
"panels/hormuz-tracker",
|
|
"panels/energy-crisis",
|
|
"panels/world-clock",
|
|
"panels/monitors",
|
|
"panels/oref-sirens",
|
|
"panels/telegram-intel",
|
|
"panels/fsi"
|
|
]
|
|
},
|
|
{
|
|
"group": "Panels — Catalogues",
|
|
"pages": [
|
|
"panels/news-feeds",
|
|
"panels/indicators-and-signals"
|
|
]
|
|
},
|
|
{
|
|
"group": "Desktop Application",
|
|
"pages": [
|
|
"desktop-app"
|
|
]
|
|
},
|
|
{
|
|
"group": "MCP & Integrations",
|
|
"pages": [
|
|
"mcp",
|
|
"api-oauth",
|
|
"api-notifications"
|
|
]
|
|
},
|
|
{
|
|
"group": "HTTP API",
|
|
"pages": [
|
|
"api-platform",
|
|
"api-brief",
|
|
"api-commerce",
|
|
"api-scenarios",
|
|
"api-shipping-v2",
|
|
"api-proxies"
|
|
]
|
|
},
|
|
{
|
|
"group": "Developer Guide",
|
|
"pages": [
|
|
"contributing",
|
|
"authentication",
|
|
"adding-endpoints",
|
|
"api-key-deployment",
|
|
"release-packaging",
|
|
"cors",
|
|
"health-endpoints",
|
|
"relay-parameters",
|
|
"data-sources"
|
|
]
|
|
},
|
|
{
|
|
"group": "Legal",
|
|
"pages": [
|
|
"license"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"tab": "API Reference",
|
|
"groups": [
|
|
{
|
|
"group": "Geopolitical",
|
|
"pages": [
|
|
{
|
|
"group": "Conflicts",
|
|
"openapi": "api/ConflictService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Military",
|
|
"openapi": "api/MilitaryService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Unrest",
|
|
"openapi": "api/UnrestService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Intelligence",
|
|
"openapi": "api/IntelligenceService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Displacement",
|
|
"openapi": "api/DisplacementService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Cyber",
|
|
"openapi": "api/CyberService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Sanctions",
|
|
"openapi": "api/SanctionsService.openapi.yaml"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"group": "Natural Events",
|
|
"pages": [
|
|
{
|
|
"group": "Natural Disasters",
|
|
"openapi": "api/NaturalService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Seismology",
|
|
"openapi": "api/SeismologyService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Climate",
|
|
"openapi": "api/ClimateService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Wildfires",
|
|
"openapi": "api/WildfireService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Radiation",
|
|
"openapi": "api/RadiationService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Thermal",
|
|
"openapi": "api/ThermalService.openapi.yaml"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"group": "Economy & Markets",
|
|
"pages": [
|
|
{
|
|
"group": "Economic",
|
|
"openapi": "api/EconomicService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Markets",
|
|
"openapi": "api/MarketService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Trade",
|
|
"openapi": "api/TradeService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Supply Chain",
|
|
"openapi": "api/SupplyChainService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Consumer Prices",
|
|
"openapi": "api/ConsumerPricesService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Predictions",
|
|
"openapi": "api/PredictionService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Forecasts",
|
|
"openapi": "api/ForecastService.openapi.yaml"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"group": "Infrastructure & Transport",
|
|
"pages": [
|
|
{
|
|
"group": "Aviation",
|
|
"openapi": "api/AviationService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Maritime",
|
|
"openapi": "api/MaritimeService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Infrastructure",
|
|
"openapi": "api/InfrastructureService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Resilience",
|
|
"openapi": "api/ResilienceService.openapi.yaml"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"group": "Health & Environment",
|
|
"pages": [
|
|
{
|
|
"group": "Public Health",
|
|
"openapi": "api/HealthService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Imagery",
|
|
"openapi": "api/ImageryService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Webcams",
|
|
"openapi": "api/WebcamService.openapi.yaml"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"group": "Other",
|
|
"pages": [
|
|
{
|
|
"group": "News",
|
|
"openapi": "api/NewsService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Research",
|
|
"openapi": "api/ResearchService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Positive Events",
|
|
"openapi": "api/PositiveEventsService.openapi.yaml"
|
|
},
|
|
{
|
|
"group": "Giving",
|
|
"openapi": "api/GivingService.openapi.yaml"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"tab": "Changelog",
|
|
"groups": [
|
|
{
|
|
"group": "Changelog",
|
|
"pages": [
|
|
"changelog"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"footer": {
|
|
"socials": {
|
|
"github": "https://github.com/koala73/worldmonitor",
|
|
"discord": "https://discord.gg/re63kWKxaz",
|
|
"x": "https://x.com/worldmonitorai"
|
|
},
|
|
"links": [
|
|
{
|
|
"header": "World Monitor",
|
|
"items": [
|
|
{
|
|
"label": "Dashboard",
|
|
"href": "https://www.worldmonitor.app"
|
|
},
|
|
{
|
|
"label": "Pro",
|
|
"href": "https://www.worldmonitor.app/pro"
|
|
},
|
|
{
|
|
"label": "Blog",
|
|
"href": "https://www.worldmonitor.app/blog"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"header": "Community",
|
|
"items": [
|
|
{
|
|
"label": "GitHub",
|
|
"href": "https://github.com/koala73/worldmonitor"
|
|
},
|
|
{
|
|
"label": "Discord",
|
|
"href": "https://discord.gg/re63kWKxaz"
|
|
},
|
|
{
|
|
"label": "X",
|
|
"href": "https://x.com/worldmonitorai"
|
|
},
|
|
{
|
|
"label": "Status",
|
|
"href": "https://status.worldmonitor.app/"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|