Skip to content

docs(mapgen-studio): pass-3 frame — spacing substrate repair, config surface elevation, footer console split, explore toolbar grouping, and no-hardcoded-defaults law#1625

Merged
mateicanavra merged 1 commit into
mainfrom
design/pass3-frame
Jun 12, 2026
Merged

docs(mapgen-studio): pass-3 frame — spacing substrate repair, config surface elevation, footer console split, explore toolbar grouping, and no-hardcoded-defaults law#1625
mateicanavra merged 1 commit into
mainfrom
design/pass3-frame

Conversation

@mateicanavra

Copy link
Copy Markdown
Owner

This PR frames Pass 3 of the Mapgen Studio redesign, establishing the design decisions, OpenSpec slices, and implementation tasks for four grounded fixes discovered during live DOM inspection.

Root cause uncovered: Every Tailwind padding and margin utility in the app has been computing to 0px since the Tailwind v4 migration. An unlayered * { margin: 0; padding: 0 } reset in index.html takes cascade priority over all @layer utilities output, silently zeroing all spacing app-wide. A second bootstrap defect was found in the same file: the pre-paint theme script reads mapgen-studio:theme from localStorage while the app writes theme-preference, causing a dark flash for light-theme users on every load. The spacing substrate slice (mapgen-studio-spacing-substrate) removes the unlayered reset and aligns the bootstrap key.

Config surface elevation (D1): With the spacing mechanism restored, the config panel's nesting idiom is redesigned. border-l indent ladders are replaced with a surface-elevation scheme: stage card → recessed group well (bg-background/40-class tint, subtle border, rounded, padded). Two surface tiers maximum; deeper nesting differentiates by eyebrow heading and rhythm only. Arrays unify onto the same well treatment. Form rhythm is codified in a single FORM constant on the 4px base: 4px within a field block, 8px between fields, 12px between groups and stage cards. Group headings move to the eyebrow tier (uppercase, muted) so field labels remain the brightest scan anchors.

Footer console split (D2): The footer is restructured into two named consoles. A centered Studio console carries generation status, last-run summary, seed, reroll, auto-run, and Run. A right-docked Game console (with an identity eyebrow) carries the live Civ7 runtime chip, apply-suggestion, autoplay, Run in Game with its status/retry/diagnostics, and the save-deploy chip. Run in Game moves to the Game console because it commands the live game. Studio↔game relation cues (stale ring, Current/Stale/Previous chip) are preserved and co-located on the Game console; dirty state stays on the Studio console. The Studio console centers independently of the Game console's width.

Explore toolbar regrouping (D3): Controls are reorganized into two eyebrow-labeled clusters — VIEW (fit to view, edges overlay) and DATA (render mode, space, and conditional era/variant/overlay rows) — with consistent label-left/control-right row anatomy replacing the current zig-zag layout. The debug toggle moves to the DATA section header because showDebugLayers filters the data list entries, not the map rendering.

Dead default-config removal (D4): src/ui/data/defaultConfig.ts, a 330-line hand-maintained duplicate of the standard recipe's default pipeline config that the app never imports, is deleted. The two test blocks that guarded its shape are retargeted to assert against STANDARD_RECIPE_CONFIG, the generated artifact the app actually uses.

This was referenced Jun 12, 2026
@github-actions

Copy link
Copy Markdown

Railway preview (MapGen Studio): not provisioned for this PR.

Policy (Graphite stacks): previews are created only for the top-of-stack PR by default.

  • To force a preview for this PR: add label railway-preview
  • To suppress a preview: add label no-railway-preview

Debug: {"isClosed":false,"isFork":false,"suppress":false,"force":false,"isTopOfStack":false,"hasToken":true,"draft":false}

mateicanavra commented Jun 12, 2026

Copy link
Copy Markdown
Owner Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

mateicanavra commented Jun 12, 2026

Copy link
Copy Markdown
Owner Author

Merge activity

  • Jun 12, 8:50 PM UTC: A user started a stack merge that includes this pull request via Graphite.
  • Jun 12, 9:33 PM UTC: Graphite rebased this pull request as part of a merge.
  • Jun 12, 9:33 PM UTC: @mateicanavra merged this pull request with Graphite.

@mateicanavra
mateicanavra changed the base branch from design/theme-class-sync to graphite-base/1625 June 12, 2026 21:30
@mateicanavra
mateicanavra changed the base branch from graphite-base/1625 to main June 12, 2026 21:31
…fig surface, console split, toolbar groups, no-hardcoded-overrides law

Grounding found the root of 'padding/margins are really bad': an unlayered
* {margin:0;padding:0} reset in index.html outranks Tailwind v4's @layer
utilities, zeroing every spacing utility app-wide. Frame + 5 strict-valid
OpenSpec changes (D0 substrate, D1 config surface, D2 footer consoles,
D3 explore toolbar groups, D4 no hard-coded defaults).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@mateicanavra
mateicanavra merged commit b38ce3c into main Jun 12, 2026
This was referenced Jun 12, 2026
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