wg-html-publish-2

wg html publish: support project metadata (title, byline, abstract markdown) at top of rendered page

Metadata

Statusdone
Assignedagent-1373
Agent identityf51439356729d112a6c404803d88015d5b44832c6c584c62b96732b63c2b0c7e
Created2026-05-01T16:09:45.856813781+00:00
Started2026-05-01T16:10:34.384717389+00:00
Completed2026-05-01T16:34:21.103119321+00:00
Tagsfix,html,publish,polish, eval-scheduled
Eval score0.83
└ blocking impact0.85
└ completeness0.85
└ constraint fidelity0.85
└ coordination overhead0.87
└ correctness0.90
└ downstream usability0.82
└ efficiency0.80
└ intent fidelity0.90
└ style adherence0.88

Description

Description

A publicly-shared wg html mirror needs context — visitors should know what they're looking at. Currently the rendered page shows only 'Workgraph' + task count + the dependency graph. No project name, no description, no author credit.

User request 2026-05-01: 'publishing should have a place for us to describe the graph and what it's up to. a byline. an abstract even.'

Spec

Sources of metadata (cascade — first hit wins)

  1. Per-deployment override in html-publish.toml deployment block: title, byline, abstract_path
  2. Project-level in .wg/about.md: a markdown file that becomes the page abstract
  3. Project-level in .wg/config.toml under a new [project] section: title, byline
  4. Default if nothing's set: title = directory name, byline = empty, abstract = empty

CLI surface

Add flags to wg html publish add:

  • --title <STR> — overrides any cascade source
  • --byline <STR> — overrides any cascade source
  • --abstract <PATH> — overrides .wg/about.md location

Also: wg html publish edit already lets the user edit the toml directly, so post-creation customization works without new commands.

Rendering

At the top of the rendered html (above the dependency graph), add:

<header class="project-header">
  <h1 class="project-title">{{ title }}</h1>
  <p class="project-byline">{{ byline }}</p>
  <div class="project-abstract">{{ abstract markdown rendered as HTML }}</div>
</header>

Style:

  • Title: large, prominent. Same font stack as existing TUI/html palette.
  • Byline: smaller, dim. One line.
  • Abstract: rendered markdown (use the same renderer as polish-wg-html's task-description markdown). Collapsible if longer than ~5 lines (so it doesn't dominate the page).
  • Theme-aware: dark/light per existing system.

If all three fields are empty: omit the header entirely (don't render a useless empty block — fall back to the current 'Workgraph / N tasks shown' minimal header from wg-html-declutter).

Use cases this enables

  • Public mirror with real branding ('Poietic Inc - Active Work', byline 'corporate formation audit + haiku research', abstract describing the team's current focus)
  • Internal team mirror (title = team name, byline = quarter/sprint, abstract = links to related repos)
  • Educational example (title = 'WG demo for Y Combinator', abstract = walkthrough of what's being built)

Validation

  • Failing test: wg html publish run public-mirror renders header section with title/byline/abstract when configured
  • CLI: wg html publish add foo --rsync ... --title 'My Project' --byline 'a tagline' sets fields in toml
  • Cascade: per-deployment overrides project-level; project-level overrides default
  • If no metadata is set: header is omitted (no empty block)
  • Markdown abstract is rendered as HTML (lists, code blocks, links work)
  • Theme-aware: dark + light both look correct
  • No regression of existing wg-html-* features (declutter, edge highlighting, side panel, theme toggle, --chat, --since, etc.)
  • cargo build + cargo test pass
  • cargo install --path . was run before claiming done

Coordinate with adjacent tasks

  • polish-wg-html (in-flight): provides the markdown rendering infrastructure. Reuse it for the abstract.
  • wg-html-declutter (already filed): the redesigned minimal header gets EXTENDED here when project metadata is set
  • wg-html-resizable (in-flight): the resizable inspector panel; abstract may also be in a panel — coordinate UX

If polish-wg-html and wg-html-declutter haven't landed, this task adds dependencies on them. If they have landed, build on top.

Depends on

Required by

Log