diff --git a/CHANGELOG.md b/CHANGELOG.md index 86d61ed..c6fde45 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ All notable changes to **History** are listed here, newest first. +## v0.10.0 — 2026-10-11 21:25 +- **Fix world map style (#2)** — made the choropleth fill fully opaque (`fill-opacity` 0.85 → 1.0) and darkened the Natural Earth terrain raster (`raster-opacity` 0.5 → 0.15), so the raster's flat water tint and fine 1:10m coastline no longer bleed through countries and compete with the borders. +- **Strengthened country border lines** — border width 0.7 → 1.25, and the per-region stroke alphas raised (owned 0.10 → 0.30, unowned 0.06 → 0.14) so the vector borders read clearly as the dominant edge, with owned regions still more prominent than unowned ones. +- Fixes #2. + ## v0.9.0 — 2026-10-11 20:57 - **Reduced turn latency (prompt-level):** capped `recentEvents` in the turn prompt from the last 10 to the last 5 events, and added a HARD CONSTRAINT asking the reasoning model to keep its internal analysis brief before emitting the JSON. This shortens the chain-of-thought (the 170–223s turn driver) and lowers the risk of exhausting the 4000-token output budget before the answer (the original 502 failure mode). Reasoning stays enabled (`reasoning_effort: low`); the deterministic stub, the `TurnResult` contract, `max_tokens`, and `reasoning_effort` are all unchanged. diff --git a/package.json b/package.json index 08256d5..d1a2539 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "history", - "version": "0.9.0", + "version": "0.10.0", "private": true, "type": "module", "description": "AI-driven alternate-history simulator — the LLM is the world engine (Pax Historia style).", diff --git a/src/components/WorldMap.tsx b/src/components/WorldMap.tsx index d79db52..2cabae4 100644 --- a/src/components/WorldMap.tsx +++ b/src/components/WorldMap.tsx @@ -61,7 +61,7 @@ const INLINE_STYLE: maplibregl.StyleSpecification = { type: 'raster', source: 'terrain', paint: { - 'raster-opacity': 0.5, + 'raster-opacity': 0.15, 'raster-brightness-max': 0.8, 'raster-fade-duration': 200, }, @@ -124,11 +124,11 @@ function applyRegions(geo: FeatureCollection, regions: RegionMap, playerNationId f.properties.fill = r.color; f.properties.owner = r.owner; f.properties.ownerId = r.ownerId; - f.properties.stroke = 'rgba(255,255,255,0.10)'; + f.properties.stroke = 'rgba(255,255,255,0.30)'; f.properties.isPlayer = r.ownerId === playerNationId ? 1 : 0; } else { f.properties.fill = 'rgba(148,163,184,0.05)'; - f.properties.stroke = 'rgba(255,255,255,0.06)'; + f.properties.stroke = 'rgba(255,255,255,0.14)'; f.properties.owner = ''; f.properties.ownerId = ''; f.properties.isPlayer = 0; @@ -411,7 +411,7 @@ export default function WorldMap({ id: FILL_LAYER, type: 'fill', source: COUNTRIES_SOURCE, - paint: { 'fill-color': ['get', 'fill'], 'fill-opacity': 0.85 }, + paint: { 'fill-color': ['get', 'fill'], 'fill-opacity': 1.0 }, }); } if (!map.getLayer(LINE_LAYER)) { @@ -419,7 +419,7 @@ export default function WorldMap({ id: LINE_LAYER, type: 'line', source: COUNTRIES_SOURCE, - paint: { 'line-color': ['get', 'stroke'], 'line-width': 0.7, 'line-opacity': 0.95 }, + paint: { 'line-color': ['get', 'stroke'], 'line-width': 1.25, 'line-opacity': 0.95 }, }); } // NOTE: layers are added in bottom→top order (each appends on top). The