WORK-374
Setting up your dashboard 0 entities found · 7/34 branches scanned
ID:WORK-374Status:done

content-place 2-axis logical overlay anchor + orientation-adaptive auto

Add content-place, a 2-axis logical overlay anchor active only in cover mode, with an orientation-adaptive auto default.

Priority:mediumComplexity:moderateMilestone:v0.20.0Source:SPEC-089

Criteria completion

Criteria completion: 3 of 3 (100%) checked; tracking started on Jun 9, no incremental history yet0%25%50%75%100%Jun 9Jun 15

Tracking started Jun 9 — check back for trends.

Acceptance Criteria

  • content-place is 2-axis logical (start|center|end × start|center|end), default end, mapping to justify/align; physical aliases may exist.
  • Active only in cover mode; a build warning otherwise.
  • content-place="auto" (the cover default) adapts to the rune's container-query orientation (portrait→block-end, landscape→inline-start); an explicit value pins it.

Approach

Media zone is a container-query context (WORK-339). SPEC-089 §2.

References

  • SPEC-089

Resolution

Completed: 2026-06-09

Branch: claude/spec-089-cover-layout

What was done

  • packages/transform/src/engine.tscontent-place resolution: a 2-axis logical value (<block> <inline>) emits --cover-place-block / --cover-place-inline custom properties (mapping to align-self/justify-self). Active only in cover mode; warnContentPlaceOutsideCover warns once otherwise and emits no vars.
  • content-place="auto" emits no place vars, deferring to the container query in CSS.
  • packages/lumina/styles/dimensions/cover.css — orientation adaptation: an unset content-place behaves the same as explicit auto (the cover default) — portrait → block-end, landscape (@container (min-aspect-ratio: 1/1)) → inline-start. An explicit value sets the vars and pins regardless of orientation.
  • packages/runes/src/tags/card.ts + plugins/learning/src/tags/recipe.ts — declare the content-place attribute and emit it as a meta (the field channel) so the engine reads it; both already declared the modifier but weren't emitting the meta.

Notes

  • The media well is the container-query context; the overlay box adapts to the cover region's own aspect, not the viewport.