WORK-264
Setting up your dashboard 0 entities found · 9/32 branches scanned
ID:WORK-264Status:done

Collection heading-delimited table columns

The rich-table path: a table collection's body uses the sections content model (heading = column separator + label, body = per-cell markdoc template with $item), with collection owning the <table>/<thead> and row alignment.

Priority:mediumComplexity:moderateMilestone:v0.16.0Source:SPEC-070
claude/v0.16.0 View source

Criteria completion

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

Tracking started May 25 — check back for trends.

Branches 2
History 2
  1. 020ab26
    Created (done)by bjornolofandersson
  2. 7ab7615
    Content editedby Claude
    plan: add v0.16.0 milestone and work breakdown for SPEC-069/070/071

Acceptance Criteria

  • In table layout the body parses as heading-delimited sections; each heading is a column (label = heading text, ordered by sequence)
  • Each column cell is the section's markdoc template, transformed per entity with $item bound (reusing WORK-262 capture)
  • An empty body falls back to the fields shorthand; column heading text is static — $item in a heading warns
  • collection emits <table>/<thead> and aligned rows; tests cover multi-column tables and formatting/combining in cells (with WORK-265 functions)

Dependencies

  • WORK-263 (collection core)
  • WORK-262 (deferred-body capture)

References

  • SPEC-070 — Built-in layouts (heading-delimited columns)

Resolution

Completed: 2026-05-25

Branch: claude/v0.16.0

What was done

  • Extended collection-resolve.ts: splitColumns(bodySource) parses the captured body into {label, cellSource} per heading (label = heading text, cell = Markdoc.format of the section's nodes); renderHeadingTable emits <thead> from labels and one <tr> per entity with each <td> = transformDeferredTemplate(cellSource, embedConfig, {item}).
  • Render branch: layout="table" + body → heading columns; layout="table" + no body → fields projection; body + box layout → per-item template; else cards/list.
  • $item in a column heading emits a build warning (headings are static labels).
  • Test: added a heading-delimited-columns case to packages/runes/test/collection.test.ts (6 total green) — two heading-derived columns, one row per filtered entity, per-cell $item values.

Notes

  • Reuses the WORK-262 deferBody capture wholesale (the body is captured once; the resolver re-splits it per column).