Skip to content

feat(layout): Option A migration — in-repo configs, fixtures, docs to seg/h/v (2de.16)#108

Merged
brandon-fryslie merged 1 commit into
mainfrom
feat/2de16-option-a-migration
Jun 12, 2026
Merged

feat(layout): Option A migration — in-repo configs, fixtures, docs to seg/h/v (2de.16)#108
brandon-fryslie merged 1 commit into
mainfrom
feat/2de16-option-a-migration

Conversation

@brandon-fryslie

Copy link
Copy Markdown
Contributor

Summary

  • Migrates every in-repo config, demo, fixture, and doc example to the Option A shape grammar (seg/h/v). Old layout-row sugar and cells nodes remain accepted until 2de.19.
  • DEFAULT_DSL_CONFIG.root: drops the outer vertical wrapper; a single-row default is a horizontal container directly (canonical equivalent of { h: ["directory","git","model","session","today","context"] })
  • Equivalence pins added to default-dsl-config.test.ts: assert A-grammar lowers to byte-identical ANSI output vs. the previous spelling, for both the default root and a deep-nesting two-row fixture
  • Removes unused requireStringSpec import in src/config/loader/layout.ts
  • CLAUDE.md authoring-surface examples updated; renderer doc corrected (config.root not config.layout)

Test plan

  • pnpm typecheck — clean
  • pnpm lint — clean
  • pnpm check:protocol — 12 constants verified
  • pnpm test — 1197 tests pass (2 pre-existing flaky daemon integration tests; pass on rerun)
  • Equivalence pins green: A-grammar { h:[...] } and { v:[{ h: }, ...] } render byte-identical to old spellings
  • grep-clean: no layout: sugar outside the loader+its tests (dsl-loader, dsl-merge, config-schema, dsl-multiline error/conflict cases)

… seg/h/v (2de.16)

Migrates every config, demo, fixture, and doc example in the repo to the
Option A shape grammar (bare string / { seg, when } / { h/v: [...], when }).
Old layout-row sugar and cells remain accepted until 2de.19.

Changes:
- DEFAULT_DSL_CONFIG.root: drop outer vertical wrapper; single-row default is
  a bare horizontal container { kind:"container", direction:"horizontal" }
  (canonical equivalent of { h:["directory","git","model","session","today","context"] })
- src/demo/statusline.json5: layout:[[...]] → root: { h: [...] }
- test/fixtures/steel-thread.json5: same
- All test inline configs (dsl-actions, dsl-state-cascade, dsl-multiline,
  dsl-picker, dsl-helpers, dsl-formatters-*, segment-render-unit, daemon-render-cache,
  daemon-debug, dsl-theme-picker-recolor, cli-lint, config-resolution): layout:[[...]] → root
- CLAUDE.md: authoring-surface examples updated; renderer doc fixed (config.root not config.layout)
- Equivalence pins added to default-dsl-config.test.ts:
  { h:[...] } spelling is byte-identical render to DEFAULT_DSL_CONFIG.root;
  deep-nesting { v:[{ h:[a,b] },{ h:[c,d] }] } is byte-identical to layout:[["a","b"],["c","d"]]
- Remove unused requireStringSpec import in src/config/loader/layout.ts
@brandon-fryslie brandon-fryslie merged commit cd0be9f into main Jun 12, 2026
6 of 8 checks passed
@brandon-fryslie brandon-fryslie deleted the feat/2de16-option-a-migration branch June 12, 2026 09:46
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.

2 participants