Skip to content

feat: polish World Lab command bar and theme - #20

Merged
christopherjnelson merged 1 commit into
mainfrom
feat/0015-world-lab-command-bar-theme
Aug 15, 2026
Merged

christopherjnelson merged 1 commit into
mainfrom
feat/0015-world-lab-command-bar-theme

Conversation

@christopherjnelson

Copy link
Copy Markdown
Member

Summary

  • replace the secondary World Lab toolbar with one compact responsive command navbar
  • add absolute browser-session run targets for turns 25, 50, 100, 200, 500, and 1,000
  • make current known experiment cost permanently visible beside the hover/focus experiment summary
  • make execution controls stable across running, pending, cancellation, and recovery states
  • make export generation an explicit artifact lifecycle with stale-option invalidation
  • share model option ordering and formatting across global and per-agent selectors
  • resolve current effective alliance colors consistently across the map, chat, direct-message history, and event log
  • remove the redundant Agent Inspector export action
  • separate agent-marker selection from dismissible map-local hex selection
  • adopt tokenless CARTO Dark Matter tiles and semantic blackberry/teal/mint/celadon/vanilla application chrome

Run-target behavior

The selected target is an absolute completed-turn target, never an additional-turn count. The default remains 200, the selection is retained for the browser session, and targets at or below the authoritative current turn are unavailable. Bounded progress, completion, cancellation, and ambiguous-response reconciliation continue to use server snapshots.

Export lifecycle

Preview remains non-generating. Copy JSON and Download JSON start disabled and become available only after Generate export succeeds. Any relevant filter or serialization change makes the artifact stale, disables both actions, and requires regeneration. Copy and download have scoped pending/success/failure feedback and duplicate generation/download guards. Export schemas, filters, contents, and server-owned telemetry semantics are unchanged.

Model selectors and effective colors

Global and per-agent selectors use one deduplicating, stable case-insensitive option builder. Labels put the identifier before the friendly name and retain free/paid price metadata; Inherit global stays pinned first for overrides. Selected unavailable or search-filtered models remain represented.

The UI color resolver prefers current authoritative alliance color, then a retained effective color when supplied, base agent color, and finally a neutral fallback. Textual names and initials remain present so identity never depends on color alone.

Async and accessibility

  • icon-only commands have accessible names, hover/focus tooltips, and visible focus rings
  • buttons expose scoped busy text/spinners, aria-busy, disabled styling, and appropriate cursors
  • stable command slots avoid layout movement during async transitions
  • experiment details open on hover and keyboard focus rather than click-to-toggle
  • overflow actions remain keyboard accessible
  • export status uses accessible live status/error messaging
  • agent and hex selection are independent; hex details dismiss from their close control or a map-background click

Map and palette

The basemap uses tokenless CARTO Dark Matter raster tiles with © OpenStreetMap contributors © CARTO attribution. Map tests remain mocked and offline. Existing H3 geometry and ownership behavior are unchanged; overlay opacity, borders, markers, and MapLibre controls are tuned for the dark background.

The application chrome is derived from semantic tokens based on Blackberry Cream, Jungle Teal, Mint Leaf, Celadon, and Vanilla Custard. Agent/alliance colors and distinct warning/error/destructive states remain domain-specific.

Validation

Repository-owner reported final local validation green:

  • pnpm format:check
  • pnpm lint
  • pnpm typecheck
  • pnpm test
  • pnpm build
  • pnpm test:e2e
  • manual smoke test at the supported World Lab layouts

No live or paid model-provider calls were made during automated validation.

Screenshots

Before references:

After screenshots from the owner-tested large and narrower viewports still need to be attached to this draft before it is marked ready for review. Repository policy prevents the coding agent from running local Playwright to recapture them.

Scope assurance

Simulation rules, model prompts and decision behavior, retry policy, mutation IDs, telemetry meaning, and export contents are unchanged.

@christopherjnelson
christopherjnelson marked this pull request as ready for review August 15, 2026 14:03
@christopherjnelson
christopherjnelson merged commit 3989c22 into main Aug 15, 2026
2 checks passed
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