Files
worldmonitor/docs/docs.json
Elie Habib 4c9888ac79 docs(mintlify): panel reference pages (PR 2) (#3213)
* 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.
2026-04-20 00:53:17 +04:00

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/"
}
]
}
]
}
}