Skip to content

feat(energy-atlas): expose Atlas panels on FULL variant + CMD+K#3364

Merged
koala73 merged 2 commits into
mainfrom
feat/atlas-panels-full-variant-exposure
Apr 24, 2026
Merged

feat(energy-atlas): expose Atlas panels on FULL variant + CMD+K#3364
koala73 merged 2 commits into
mainfrom
feat/atlas-panels-full-variant-exposure

Conversation

@koala73

@koala73 koala73 commented Apr 24, 2026

Copy link
Copy Markdown
Owner

Summary

What changed

  • src/config/commands.ts — 3 new panel:* entries with broad keyword coverage (oil/gas/nord stream/druzhba/spr/lng/ugs/rationing/stations closed/…).
  • src/config/panels.ts — added the 3 panel keys to FULL_PANELS with priority 2, slotted beside energy-crisis.

Duplicate registrations (FULL_PANELS p=2 and ENERGY_PANELS p=1) are intentional: ALL_PANELS resolves via FULL-last spread so the merge is safe; VARIANT_DEFAULTS['energy'] still reads from ENERGY_PANELS so the future energy subdomain surfaces them at top.

Test plan

  • npm run typecheck — clean
  • npm run test:data — 6692/6692 pass
  • Manual: CMD+K "pipeline" → "Panel: Oil & Gas Pipeline Status" shows, opens the panel with 75 gas + 75 oil rows
  • Manual: CMD+K "storage" / "spr" / "lng" → "Panel: Strategic Storage Atlas" opens with 200 facilities
  • Manual: CMD+K "fuel shortages" → "Panel: Global Fuel Shortage Registry" opens with 29 entries

Context

Part of the docs/internal/energy-atlas-registry-expansion.md follow-up. The plan doc's Phase A claimed the UI was "NOT STARTED"; actually 3/4 panels shipped in #3294. This PR closes the "invisible on worldmonitor.app" gap by wiring exposure + CMD+K. Remaining gaps tracked separately (EnergyDisruptionsPanel, CountryDeepDive disruptions section, Phase B V5 keys, Phase C energy.worldmonitor.app variant).

Three Atlas panels (PipelineStatusPanel, StorageFacilityMapPanel,
FuelShortagePanel) shipped in PR #3294 but were registered only in
ENERGY_PANELS — invisible on worldmonitor.app because the energy
variant subdomain is not yet wired. Additionally, no CMD+K entries
existed for them, so command-palette search for "pipeline" or
"storage" returned nothing.

Changes:
- src/config/commands.ts: add panel:pipeline-status,
  panel:storage-facility-map, panel:fuel-shortages with relevant
  keywords (oil/gas/nord stream/druzhba/spr/lng/ugs/rationing/…).
- src/config/panels.ts: add the 3 panel keys to FULL_PANELS with
  priority 2 so they appear in the main worldmonitor.app drawer
  under the existing energy-crisis block. ENERGY_PANELS keeps its
  own priority-1 copies so the future energy.worldmonitor.app
  subdomain still surfaces them top of list.

Unblocks the plan's announcement gate item "UI: at least one Atlas
panel renders registry data on worldmonitor.app in a browser."

Part of docs/internal/energy-atlas-registry-expansion.md follow-up.
@vercel

vercel Bot commented Apr 24, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
worldmonitor Ready Ready Preview, Comment Apr 24, 2026 5:34am

Request Review

@greptile-apps

greptile-apps Bot commented Apr 24, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR wires three Atlas panels (pipeline-status, storage-facility-map, fuel-shortages) — shipped in #3294 but only registered in ENERGY_PANELS — into FULL_PANELS and the CMD+K command palette, making them immediately reachable on worldmonitor.app. The dual-registration in ALL_PANELS is safe: FULL_PANELS spreads last so it wins on key conflicts, and VARIANT_DEFAULTS['energy'] still reads from ENERGY_PANELS directly.

Confidence Score: 5/5

Safe to merge — all findings are P2 style/discoverability suggestions that do not block functionality.

No P0 or P1 issues found. The logic around ALL_PANELS merge order is correct, the FULL variant exposure is clean, and the CMD+K entries follow existing patterns. Three P2 notes (icon encoding consistency, spr keyword overlap, PANEL_CATEGORY_MAP omission) are minor and do not affect runtime behavior.

No files require special attention.

Important Files Changed

Filename Overview
src/config/commands.ts Adds 3 CMD+K entries for pipeline-status, storage-facility-map, and fuel-shortages; minor icon encoding inconsistency and an 'spr' keyword collision with panel:oil-inventories.
src/config/panels.ts Adds 3 Atlas panels to FULL_PANELS at priority 2 with enabled:true; dual-registration with ENERGY_PANELS is safe given FULL-last spread in ALL_PANELS; new panels not added to PANEL_CATEGORY_MAP (pre-existing pattern).

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A["ENERGY_PANELS\n(pipeline-status p=1\nstorage-facility-map p=1\nfuel-shortages p=1)"] -->|spread first| M
    B["FULL_PANELS\n(pipeline-status p=2 NEW\nstorage-facility-map p=2 NEW\nfuel-shortages p=2 NEW)"] -->|spread last wins| M["ALL_PANELS\n(unified registry)"]
    M --> C{"SITE_VARIANT?"}
    C -->|energy| D["VARIANT_DEFAULTS['energy']\n-> ENERGY_PANELS keys\n(p=1, high priority)"]
    C -->|full| E["VARIANT_DEFAULTS['full']\n-> FULL_PANELS keys\n(p=2, now visible)"]
    F["COMMANDS (CMD+K)\npanel:pipeline-status NEW\npanel:storage-facility-map NEW\npanel:fuel-shortages NEW"] --> G["getAllCommands()\n-> rendered in command palette"]
Loading

Reviews (1): Last reviewed commit: "feat(energy-atlas): expose Atlas panels ..." | Re-trigger Greptile

Comment thread src/config/commands.ts Outdated
{ id: 'panel:oil-inventories', keywords: ['oil inventories', 'crude stocks', 'spr', 'strategic petroleum', 'eia inventories', 'iea stocks', 'days of cover', 'oil reserves', 'gas storage'], label: 'Panel: Oil Inventories', icon: '\u{1F6E2}\uFE0F', category: 'panels' },
{ id: 'panel:energy-crisis', keywords: ['energy crisis', 'iea policy', 'crisis response', 'hormuz policy', 'fuel rationing', 'conservation measures'], label: 'Panel: Energy Crisis Policies', icon: '\u{26A1}', category: 'panels' },
{ id: 'panel:pipeline-status', keywords: ['pipelines', 'pipeline status', 'oil pipelines', 'gas pipelines', 'nord stream', 'druzhba', 'sabotage', 'pipeline registry'], label: 'Panel: Oil & Gas Pipeline Status', icon: '\u{1F6E2}️', category: 'panels' },
{ id: 'panel:storage-facility-map', keywords: ['storage', 'storage facilities', 'strategic storage', 'spr', 'lng terminals', 'ugs', 'tank farms', 'storage atlas'], label: 'Panel: Strategic Storage Atlas', icon: '\u{1F6E2}️', category: 'panels' },

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 spr keyword already claimed by panel:oil-inventories

panel:storage-facility-map adds 'spr' as a keyword, but line 105 already registers 'spr' under panel:oil-inventories. CMD+K search for "spr" will surface both panels simultaneously. The PR description calls out "spr" as a target trigger specifically for Strategic Storage Atlas, so this may be an unintentional overlap.

Suggested change
{ id: 'panel:storage-facility-map', keywords: ['storage', 'storage facilities', 'strategic storage', 'spr', 'lng terminals', 'ugs', 'tank farms', 'storage atlas'], label: 'Panel: Strategic Storage Atlas', icon: '\u{1F6E2}', category: 'panels' },
{ id: 'panel:storage-facility-map', keywords: ['storage', 'storage facilities', 'strategic storage', 'lng terminals', 'ugs', 'tank farms', 'storage atlas'], label: 'Panel: Strategic Storage Atlas', icon: '\u{1F6E2}\uFE0F', category: 'panels' },

Comment thread src/config/commands.ts Outdated
Comment on lines +107 to +108
{ id: 'panel:pipeline-status', keywords: ['pipelines', 'pipeline status', 'oil pipelines', 'gas pipelines', 'nord stream', 'druzhba', 'sabotage', 'pipeline registry'], label: 'Panel: Oil & Gas Pipeline Status', icon: '\u{1F6E2}️', category: 'panels' },
{ id: 'panel:storage-facility-map', keywords: ['storage', 'storage facilities', 'strategic storage', 'spr', 'lng terminals', 'ugs', 'tank farms', 'storage atlas'], label: 'Panel: Strategic Storage Atlas', icon: '\u{1F6E2}️', category: 'panels' },

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Icon encoding inconsistency

The two new pipeline and storage entries use '\u{1F6E2}️' — a Unicode escape followed by a raw U+FE0F variation-selector character in the source. All other energy panel icons in this file (e.g. panel:energy-complex, panel:oil-inventories) use the fully-escaped form '\u{1F6E2}\uFE0F'. Both render identically at runtime, but mixing raw and escaped variation selectors is inconsistent within the file.

Suggested change
{ id: 'panel:pipeline-status', keywords: ['pipelines', 'pipeline status', 'oil pipelines', 'gas pipelines', 'nord stream', 'druzhba', 'sabotage', 'pipeline registry'], label: 'Panel: Oil & Gas Pipeline Status', icon: '\u{1F6E2}', category: 'panels' },
{ id: 'panel:storage-facility-map', keywords: ['storage', 'storage facilities', 'strategic storage', 'spr', 'lng terminals', 'ugs', 'tank farms', 'storage atlas'], label: 'Panel: Strategic Storage Atlas', icon: '\u{1F6E2}', category: 'panels' },
{ id: 'panel:pipeline-status', keywords: ['pipelines', 'pipeline status', 'oil pipelines', 'gas pipelines', 'nord stream', 'druzhba', 'sabotage', 'pipeline registry'], label: 'Panel: Oil & Gas Pipeline Status', icon: '\u{1F6E2}\uFE0F', category: 'panels' },
{ id: 'panel:storage-facility-map', keywords: ['storage', 'storage facilities', 'strategic storage', 'lng terminals', 'ugs', 'tank farms', 'storage atlas'], label: 'Panel: Strategic Storage Atlas', icon: '\u{1F6E2}\uFE0F', category: 'panels' },

Comment thread src/config/panels.ts
Comment on lines +80 to +82
'pipeline-status': { name: 'Oil & Gas Pipeline Status', enabled: true, priority: 2 },
'storage-facility-map': { name: 'Strategic Storage Atlas', enabled: true, priority: 2 },
'fuel-shortages': { name: 'Global Fuel Shortage Registry', enabled: true, priority: 2 },

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 New panels absent from PANEL_CATEGORY_MAP

pipeline-status, storage-facility-map, and fuel-shortages are now enabled in FULL_PANELS but are not listed in any category inside PANEL_CATEGORY_MAP (lines 1203–1309). Based on the map's comment, only panels referenced there appear in the category-filtered panel browser in the settings UI. Users browsing categories won't find these panels unless they arrive via CMD+K or the full unsorted panel list.

The nearest existing category is marketsFinance (which lists energy-complex, commodities, etc.). Adding the three keys there — or to a new energyAtlas category — would complete the discoverability story this PR is aiming for. Note that hormuz-tracker and energy-crisis have the same gap, so this is a pre-existing pattern; just worth addressing together.

Reviewer found that the original PR wiring let CMD+K "spr" and "lng"
route to the wrong panel because matchCommands() (SearchModal.ts:273)
ranks by exact/prefix/substring then keeps array-insertion order on
ties. Storage-atlas was declared AFTER the colliding entries.

Collisions:
- "spr": panel:oil-inventories (line 105) had exact 'spr' → tied
  with the new storage-facility-map (line 108) → insertion order
  kept oil-inventories winning.
- "lng": panel:hormuz-tracker (line 135) has exact 'lng' →
  storage-facility-map only had substring 'lng terminals' (score 1)
  → hormuz won outright.

Fix:
- Remove 'spr' from oil-inventories keywords. The SPR as a *site
  list* semantically belongs to Strategic Storage Atlas. Stock-level
  queries still route to oil-inventories via 'strategic petroleum'
  (the word 'spr' is not a substring of 'strategic petroleum', so
  no fallback score leaks).
- Add exact 'lng' to storage-facility-map. Both it and hormuz-tracker
  now score 3 on 'lng'; stable sort preserves declaration order,
  so storage (line 108) outranks hormuz (line 135). Hormuz still
  matches via 'hormuz', 'strait of hormuz', 'tanker', 'shipping'.
@koala73
koala73 merged commit c517b2f into main Apr 24, 2026
10 checks passed
@koala73
koala73 deleted the feat/atlas-panels-full-variant-exposure branch April 24, 2026 05:35
koala73 added a commit that referenced this pull request Apr 24, 2026
…p) (#3365)

Two P2 findings on the now-merged #3364:

1. Icon encoding inconsistency. The two new pipeline/storage entries
   mixed '\u{1F6E2}' + raw VS16 (U+FE0F) while every other panel in
   the file uses '\u{1F6E2}️'. Same runtime glyph, but mixed
   encoding is lint-noisy. Normalize to the escaped form.

2. PANEL_CATEGORY_MAP gap. pipeline-status, storage-facility-map and
   fuel-shortages were registered in FULL_PANELS + CMD+K but absent
   from PANEL_CATEGORY_MAP, so users browsing the settings category
   picker didn't see them. Add to marketsFinance alongside
   energy-complex. While here, close the same pre-existing gap for
   hormuz-tracker and energy-crisis — reviewer explicitly called
   these out as worth addressing together.

The third P2 (spr keyword collision with oil-inventories) was fixed
in commit 83de09f before the review finalised.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant