inline-date-corners first build

Inline-date pin corners

Fixture exercising the inline-date pin glyph (`after:DATE` / `before:DATE`) on every entity type that supports it: items in every decoration-row state, styled groups (chiclet row), and unstyled groups, bracketed parallels, and bare parallels (header band above the box). Each scenario lives in its own swimlane so the glyphs are easy to compare visually. A container's first child bar starts flush with the container's top corners, so no container glyph may sit there: it would be painted over. See specs/dsl.md "Inline date pins" and specs/rendering.md "Inline-date glyph" for the full contract.

theme: light now: 2026-02-09

bea64f3 Publish the review gallery to review.nowline.dev (#187)

First build in the history; nothing to compare against.

tests/inline-date-corners.nowline
nowline v1

// Fixture exercising the inline-date pin glyph (`after:DATE` /
// `before:DATE`) on every entity type that supports it: items in
// every decoration-row state, styled groups (chiclet row), and
// unstyled groups, bracketed parallels, and bare parallels (header
// band above the box). Each scenario lives in its own swimlane so the
// glyphs are easy to compare visually. A container's first child bar
// starts flush with the container's top corners, so no container
// glyph may sit there: it would be painted over.
//
// See specs/dsl.md "Inline date pins" and specs/rendering.md
// "Inline-date glyph" for the full contract.

config

style enterprise
  bg: blue
  text: white

style bracketed
  bracket: solid
  fg: orange

roadmap r "Inline-date pin corners" start:2026-01-05 length:14w

swimlane plain-lane "Plain item — both corners"

  // Bare item, no decorations: glyphs sit at the leftmost / rightmost
  // top-decoration slots.
  item plain-bar "Plain bar" duration:4w after:2026-01-26 before:2026-04-13

swimlane with-link "Item — with link icon"

  // Top-LEFT after-glyph walks RIGHT past the 14 px link icon column.
  item linked "With link" duration:3w \
    link:https://github.com/example/repo \
    after:2026-02-02 before:2026-03-30

swimlane with-decorations "Item — link + dot + footnotes"

  // Both corners simultaneously occupied: link icon on the left
  // pushes the after-glyph right; status dot + footnote indicators
  // on the right pull the before-glyph left of the badge cluster.
  item busy "Busy bar" duration:4w \
    status:in-progress \
    link:https://linear.app/x \
    after:2026-02-09 before:2026-04-20

footnote f1 "Footnote attached to busy" on:busy

swimlane mixed-list "Item — mixed list"

  // Mixed `after:` list (id + date). Resolves to the LATEST of the
  // two; only one calendar glyph appears on the left.
  item upstream "Upstream" duration:2w
  item downstream "Downstream" duration:3w after:[upstream, 2026-03-09]

swimlane styled-group "Styled group — visible box corners"

  // Filled-style groups paint a chiclet in the upper-left; both
  // glyphs join the chiclet's row, the after-glyph just past the
  // chiclet's right edge (see specs/rendering.md). The before-glyph
  // anchors flush right inside the visible box.
  group sg "Styled group" style:enterprise after:2026-02-09 before:2026-04-20
    item sg-a "Step A" duration:2w
    item sg-b "Step B" duration:2w

swimlane narrow-styled-group "Styled group — chiclet wider than the box"

  // A one-week styled group whose title chiclet runs past the box's
  // right edge. The after-glyph still sits past the chiclet, and the
  // before-glyph slides right of the after-glyph instead of landing on
  // the chiclet in its usual flush-right slot.
  group nsg "Narrow styled group" style:enterprise after:2026-02-09 before:2026-02-16
    item nsg-a "Step" duration:1w

swimlane anonymous-styled-group "Styled group — no title"

  // No title means no chiclet, but the group still reserves the
  // chiclet's row for its glyphs instead of letting them sit on the
  // first child bar.
  group style:enterprise after:2026-02-09 before:2026-04-20
    item asg-a "Step A" duration:2w
    item asg-b "Step B" duration:2w

swimlane unstyled-group "Unstyled group — header band"

  // Unstyled groups paint a bracket, not a box. Their title and
  // glyphs share the header band above the logical extent (leftmost
  // child start, rightmost child end): after-glyph first, then the
  // title, before-glyph flush right.
  group ug after:2026-02-23 before:2026-05-04
    item ug-a "Free A" duration:2w
    item ug-b "Free B" duration:2w

swimlane anonymous-group "Unstyled group — no title"

  // No title, but the glyphs still get the header band (and the
  // bracket's top foot wraps it).
  group after:2026-02-23 before:2026-05-04
    item ag-a "Free A" duration:2w
    item ag-b "Free B" duration:2w

swimlane bracketed-parallel "Bracketed parallel — header band"

  // The header band coincides with the bracket's 12 px top padding,
  // so the glyphs sit inside the [ ] above the first track.
  parallel bp style:bracketed after:2026-02-09 before:2026-05-11
    item bp-a "Track 1" duration:3w
    item bp-b "Track 2" duration:3w

swimlane bare-parallel "Bare parallel — header band"

  parallel barep after:2026-02-23 before:2026-05-25
    item barep-a "Bare track 1" duration:2w
    item barep-b "Bare track 2" duration:2w

swimlane narrow-parallel "Bare parallel — title wider than the box"

  // The title runs past the box, so the before-glyph slides right of
  // the title instead of landing on it. The next item would start on
  // the same row, under that overflow, so it bumps to a fresh row.
  parallel np "Regional rollout waves" before:2026-03-02
    item np-a "Wave 1" duration:2w
    item np-b "Wave 2" duration:2w
  item np-next "Follow-up" duration:2w