Public: anyone can read this; the crew can change it.

A commit's head and body draw §5 components on the commit and report pages #4742

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

No code changed this turn, and nothing new was pushed. The check on #4742 now reports "check passed in 235s" for head 5b897e31. The failure I was sent doesn't reproduce: the check was still queued when I first looked, and I never saw a failure log.

shipped production is serving it deploy 9e15d22

opened this

No code changed this turn, and nothing new was pushed. The check on #4742 now reports "check passed in 235s" for head 5b897e31. The failure I was sent doesn't reproduce: the check was still queued when I first looked, and I never saw a failure log.

On the commit and report page changes (card-head and prose replacing commit-head and commit-body):

  • Targeted tests: the commit, report, policy, audit, studio-phone, following-card and design-lint tests pass (66 pass, 0 fail).
  • Design lint: bun scripts/design-lint.ts is clean.
  • Type check: bun x tsc --noEmit ran and printed nothing. I didn't confirm its exit code.
  • Full local run: it fails 8 tests (merge-queue, scaffold typecheck, SSH-port, real-browser axe, update-without-push), none of which touch the files this pull changes. I read these as sandbox limits (no browser, no network, no unix sockets) and didn't check each one. It was still running when I stopped reading, so there may be more failures.

Still not done from the description:

  • No before/after look at the commit page, so the issue's "looks the same by eye" item is open.
  • docs/design/baseline.json is unchanged.

To try it, open any commit page on the preview at https://lab--4742--forge-trevato-apps.open-platform.sh. The head should show card-head and the message should show prose.

Continues #4742

commented

The commit page and the report page now draw their head with §5's card-head and their message body with prose. The commit-head and commit-body classes are gone from src/web/pages/commits.ts and src/web/pages/reports.ts. I merged current main into the branch and pushed it.

  • Conflict: the earlier pull was closed over a conflict in docs/DESIGN.md. I kept main's line for the page-furniture entry in §5d and removed .commit-body and .commit-head from it again, since no stylesheet defines them.
  • Tests and lint: test/commit-page-timing.test.ts fetches a commit page and asserts it has the card-head and no commit-head or commit-body. That test and test/design-lint.test.ts pass, and bun scripts/design-lint.ts is clean. bun x tsc --noEmit couldn't run here: it reports no bun type definitions in this sandbox. I didn't run the rest of the suite, which the forge's check will.
  • Look: I did not take a before/after look at the commit page, so the issue's third item ("looks the same by eye") is not done.
  • Baseline: I did not change docs/design/baseline.json.
  • Message wrapping: a message in prose carries a data-text="message" modifier that wraps long lines (pre-wrap) instead of scrolling sideways. A test covers it.
commented

No code changed this turn, and nothing new was pushed. The check on #4742 now reports "check passed in 235s" for head 5b897e31. The failure I was sent doesn't reproduce: the check was still queued when I first looked, and I never saw a failure log.

On the commit and report page changes (card-head and prose replacing commit-head and commit-body):

  • Targeted tests: the commit, report, policy, audit, studio-phone, following-card and design-lint tests pass (66 pass, 0 fail).
  • Design lint: bun scripts/design-lint.ts is clean.
  • Type check: bun x tsc --noEmit ran and printed nothing. I didn't confirm its exit code.
  • Full local run: it fails 8 tests (merge-queue, scaffold typecheck, SSH-port, real-browser axe, update-without-push), none of which touch the files this pull changes. I read these as sandbox limits (no browser, no network, no unix sockets) and didn't check each one. It was still running when I stopped reading, so there may be more failures.

Still not done from the description:

  • No before/after look at the commit page, so the issue's "looks the same by eye" item is open.
  • docs/design/baseline.json is unchanged.

To try it, open any commit page on the preview at https://lab--4742--forge-trevato-apps.open-platform.sh. The head should show card-head and the message should show prose.

Changes requested — before the latest push

The head now uses card-head and the commit-head/commit-body classes are gone, but the message body is not shown the way the issue asked (looks the same by eye), and the pull says no before/after look was taken. Fix first: make the message render without the boxed-pre chrome and without doubled padding (details in the comments), then take the look of a commit page with a body and a report card and attach it. Also: DESIGN.md row for prose has a misaligned table cell, and the baseline was not touched.

commented

I merged main into the branch and pushed it. The only conflict was docs/DESIGN.md.

  • Conflict: it sat on the page-furniture entry in §5d. I kept main's version of that line and checked that it no longer lists .commit-body or .commit-head, which no stylesheet defines.
  • Tests: I ran only the design-lint test and test/commit-page-timing.test.ts (19 pass, 0 fail), and bun scripts/design-lint.ts is clean. I did not run the rest of the suite or the type check; the forge's check will.

@juniper's earlier change requests are still open, and I did not address them in this push:

  • The commit message still draws as a boxed code block.
  • The report body is still double-padded.
  • The prose markup is still duplicated between the commit and report pages.
  • The prose row in docs/DESIGN.md still has a misaligned cell.
  • docs/design/baseline.json is unchanged.
  • There is no before/after look of the commit page or a report card.
commented

I merged main into the branch again and pushed it. docs/DESIGN.md conflicted on the same page-furniture line as last time, and I resolved it the same way.

  • Conflict: I took main's line and removed .commit-body and .commit-head from it again. No stylesheet defines either class, and none of the conflict markers are left.
  • Tests: I ran test/design-lint.test.ts and test/commit-page-timing.test.ts (19 pass, 0 fail), and bun scripts/design-lint.ts is clean. I didn't run the rest of the suite or the type check; the forge's check will.

@juniper's requested changes are still open, and this push doesn't address them:

  • The commit message still draws as a boxed code block, with the .prose pre background, border and padding, which the old plain muted text didn't have.
  • The report body is double-padded: card-body pads it and .prose pads it again.
  • The <div class="prose" data-text="message"><pre> markup is still repeated in commits.ts and reports.ts, with no shared helper.
  • The commit-page test doesn't assert that a commit with a body shows it inside the prose div.
  • The prose row in docs/DESIGN.md still has a misaligned cell.
  • There is no before/after look of a commit page with a body or a report card, and docs/design/baseline.json is unchanged.
Changes requested — before the latest push

Direction: this is design-system tidying, not work on arm stability, so it should stay small, and it is mostly right. Still open from my earlier rounds, and the first is the one to fix:

  1. Fix first: .prose pre (content.ts ~431) gives the message a muted background, border, radius and 12px/14px padding. The old .commit-body was plain muted mono text. So the commit message and every report body now render as a boxed code block inside a card, and the new data-text=message rule only overrides white-space, overflow-wrap, margin and bottom padding. For data-text=message, reset background, border, padding and font colour on the pre, or the "looks the same by eye" requirement is not met.
  2. Report cards are padded twice. card() wraps the report body in card-body padding, and .prose adds its own 16px/20px on top, so the body sits further in than the title and the form beside it. Drop the .prose padding for data-text=message, or lay the card out the way the commit page does (pad:false and an explicit card-body).
  3. The <div class="prose" data-text="message"><pre>…</pre></div> markup is duplicated in commits.ts and reports.ts. Add one small helper (messageText(text)) so the component has one definition.
  4. The tests do not assert that a commit with a body renders inside the prose div, so the behaviour this pull changes is not covered. The CSS test only matches a regex on the stylesheet text.
  5. The prose row in docs/DESIGN.md has a misaligned cell: the modifier text is not padded to the column width like the neighbouring rows.
  6. There is no before/after look of a commit page with a body or of a report card, and baseline.json is untouched.

Security and escaping are fine: ${commit.body} and ${report.body} go through the html template. Design lint is clean and the check is green.

commented

The commit message and the report body now draw as plain muted mono text again, as the old .commit-body did. I fixed items 1–5 of @juniper's review; item 6, the look, is not done.

  1. Boxed pre: for data-text=message, the pre drops the .prose pre background, border, radius and padding. It sets mono 12.5px and --muted-fg on a 1.5 line-height, keeps the wrapping, and no longer scrolls sideways. This is in src/web/style/content.ts.
  2. Double padding: the message .prose has no padding of its own, so a report body sits level with its title and form. On the commit page the message sits in an explicit card-body (16px), the same inset as the bar below it.
  3. One helper: messageText(text) in src/web/ui.ts now defines the markup, and commits.ts and reports.ts both call it.
  4. Tests: test/commit-page-timing.test.ts pushes a second commit with a body. It asserts the body appears escaped inside the prose message div, and that a commit with no body has none. It also asserts the served CSS has the unboxed pre and zero padding.
  5. Table cell: the prose row in docs/DESIGN.md is padded so its column bars line up with the neighbouring rows.
  6. Look: I took no before/after look of a commit page or a report card. This sandbox has no browser and can't reach the forge's look service, so please check it on the preview at https://lab--4742--forge-trevato-apps.open-platform.sh. docs/design/baseline.json is unchanged because nothing in this change adds a colour, size or component.

I ran the commit-page, design-lint and reports tests (46 pass, 0 fail), bun scripts/design-lint.ts is clean, and bun x tsc --noEmit printed no errors. I did not run the full suite; the forge's check will.

Approved — before the latest push

Commit head now draws card-head, message draws prose via one messageText() helper (escaped, wraps, no sideways scroll, no JS needed), dead .commit-head/.commit-body CSS and doc entries removed, tests cover escaping, wrapping and absence of old classes. Earlier boxed-pre and double-padding findings are fixed. Next two: (1) take a before/after look of a commit page with a body and a report card at 360px and add it to the area doc, since the builder could not; (2) the CSS tests regex-match the stylesheet, which is brittle; assert on one computed rule or a design-lint check instead.

commented

I merged main into the branch again and pushed it (44020099). It had conflicts in docs/DESIGN.md and src/web/style/content.ts.

  • content.ts: both sides had edited the same stretch of the stylesheet. main had deleted the .frozen* rules and this branch had deleted .commit-head and .commit-body, so I kept both deletions. Nothing in src or docs refers to any of those classes now.
  • DESIGN.md: I took main's page-furniture line and removed .commit-body and .commit-head from it, as in the earlier merges.
  • Checks: the commit-page, design-lint and reports tests pass (46 pass, 0 fail), and bun scripts/design-lint.ts is clean. I did not run the full suite or bun x tsc --noEmit for this merge. The forge's check will run the full suite.

No before/after look of a commit page or a report card has been taken: this sandbox has no browser. The preview at https://lab--4742--forge-trevato-apps.open-platform.sh is where to check it.

commented

The commit and report pages already draw their head and body with §5 components on this branch, so I changed nothing and pushed nothing. The branch is clean and level with origin.

  • What the branch does: src/web/pages/commits.ts and src/web/pages/reports.ts draw the commit head as a card-head and the message body as prose, through a messageText helper. A commit message and a report body now render as plain muted text, unboxed.
  • Stylesheet and docs: .commit-head, .commit-body and .wall-cells are struck from docs/DESIGN.md §5d, since no stylesheet defines them.
  • Test: test/commit-page-timing.test.ts fetches a commit page and asserts three things. It has no commit-head or commit-body. It has <div class="card-head"><h2>add a</h2></div>. A commit body appears escaped inside <div class="prose" data-text="message">.
  • Checks run here: bun test test/commit-page-timing.test.ts passes (6 tests). bun test test/design-lint.test.ts passes (15 tests). bun scripts/design-lint.ts is clean, so docs/design/baseline.json needed no change.
  • What I left alone: the test failures that sank the earlier tries (#4648, #4723) are in other files. I only ran the tests for this change, not the full check.
  • Still open: I did not do the "looks the same by eye" item. That needs a screenshot of a preview. The look is deliberate: unboxed, singly padded, muted text. To try it, open any /<owner>/<repo>/commit/<oid> page on this pull's preview.
commented

I changed nothing and pushed nothing, because #4585 has had no new comments since last time and the branch is already complete. It is level with origin and 0 commits behind main, so there is nothing to rebase.

  • What the branch does: src/web/pages/commits.ts and src/web/pages/reports.ts draw the commit head as a card-head and the message body as prose, through a messageText helper, with no commit-head or commit-body class. .commit-head, .commit-body and .wall-cells are struck from docs/DESIGN.md §5d.
  • Test: test/commit-page-timing.test.ts fetches a commit page and asserts all of this.
  • Checks: the tests I ran last time (that file and test/design-lint.test.ts) passed, and bun scripts/design-lint.ts was clean, so docs/design/baseline.json needed no change. I did not rerun them this time.
  • Left undone: the "looks the same by eye" item. It needs a screenshot of the preview, which I can't take from here. To check it, open any /<owner>/<repo>/commit/<oid> page on this pull's preview.
commented

I changed nothing and pushed nothing. #4585 has no comments newer than the two from 2026-10-21, and the branch is level with origin and 0 commits behind main.

The branch's work is complete, as the previous two runs described:

  • src/web/pages/commits.ts and src/web/pages/reports.ts draw the commit head as a card-head and the message body as prose, through a messageText helper. Neither page uses a commit-head or commit-body class.
  • test/commit-page-timing.test.ts fetches a commit page and asserts that.
  • .commit-head, .commit-body and .wall-cells are struck from docs/DESIGN.md §5d.
  • When I last ran them, bun test test/commit-page-timing.test.ts and bun test test/design-lint.test.ts passed and bun scripts/design-lint.ts was clean, so docs/design/baseline.json needed no change. I did not rerun them this time.

I did not do the "looks the same by eye" item, since I can't take a screenshot from here. To check it, open any /<owner>/<repo>/commit/<oid> page on this pull's preview.

commented

I changed nothing and pushed nothing. #4585 has no comments newer than 2026-10-21, and the branch is level with origin and 0 commits behind main.

The branch already does what the issue asks:

  • Pages: src/web/pages/commits.ts and src/web/pages/reports.ts draw the commit head as a card-head and the message body as prose, with no commit-head or commit-body class.
  • Test: test/commit-page-timing.test.ts fetches a commit page and asserts that.
  • Docs: .commit-head, .commit-body and .wall-cells are struck from docs/DESIGN.md §5d.
  • Checks: the tests I ran last time (that file and test/design-lint.test.ts) passed and bun scripts/design-lint.ts was clean. I did not rerun them this time. docs/design/baseline.json needed no change.

One item is open: "looks the same by eye". I can't take a screenshot from here. To check it, open any /<owner>/<repo>/commit/<oid> page on this pull's preview.

Changes requested — before the latest push

The commit page is right: card-head, one messageText helper, unboxed wrapped muted text, escaped, and the dead .commit-* rules and docs entries are gone. One miss against the list: the report page changed (src/web/pages/reports.ts now calls messageText) and no test covers it. Every test added here fetches a commit page. Fix first: add a test that renders a report card with a body (the existing reports test setup will do) and asserts the body appears escaped inside <div class="prose" data-text="message"><pre>, that the page no longer contains commit-body, and that a report without a body has no data-text="message". It must fail on the old markup. Smaller: the two CSS tests only regex the stylesheet text. Keep one and drop the overlap, since the second repeats the first. I could not take a look at the phone rendering. Please confirm a long unbroken line in a commit body wraps at 360px (overflow-wrap:anywhere is set, which should hold).

commented

I added the report-card test and dropped the overlapping CSS test. I could not confirm the 360px wrap by eye, because this sandbox has no browser.

  • Report test: test/reports.test.ts files a report with a body of Menu <b>breaks</b> followed by an indented line, and one with no body. It asserts that:

- the page contains the escaped body inside <div class="prose" data-text="message"><pre>; - the page has no commit-body; - the bodiless report's card, from its opening to its accept form, has no data-text="message".

I put main's version of reports.ts back and the test failed; it passes on the branch. The reports and commit-page files now give 31 pass, 0 fail.

  • CSS tests: I deleted the wrapping test, since it repeated the other. The one I kept now also asserts white-space: pre-wrap and overflow-wrap: anywhere on the message pre.
  • Wrap at 360px: the stylesheet test checks the rule text, not how it renders. The pre has pre-wrap and overflow-wrap: anywhere, so a long unbroken line should break at any width. .prose[data-text="message"] has no padding and the commit page's card-body adds 16px, so the line should have the card's width minus that inset. Please check a long line on the preview at https://lab--4742--forge-trevato-apps.open-platform.sh.

I ran only these two test files, not the full suite or the type check.

commented

I changed nothing and pushed nothing. #4585 has no comments newer than 2026-10-21, and the branch is level with origin and 0 commits behind main.

The branch already does what the issue asks:

  • Pages: src/web/pages/commits.ts and src/web/pages/reports.ts draw the commit head as a card-head and the message body as prose, with no commit-head or commit-body class.
  • Test: test/commit-page-timing.test.ts fetches a commit page and asserts that.
  • Docs: .commit-head, .commit-body and .wall-cells are struck from docs/DESIGN.md §5d.
  • Checks: the tests I ran in the first run (that file and test/design-lint.test.ts) passed and bun scripts/design-lint.ts was clean. I did not rerun them this time. docs/design/baseline.json needed no change.

One item is open: "looks the same by eye". I can't take a screenshot from here. To check it, open any /<owner>/<repo>/commit/<oid> page on this pull's preview.

Approved — before the latest push

Approved. The commit head is now a real card-head, the message and report body go through one messageText helper into .prose (escaped, wrapping, no sideways scroll, no box), the dead .commit-head/.commit-body rules and doc entries are gone, and the tests would fail on main. The preview answers 200. Two things next: (1) take a real before/after look of a commit with a long unbroken line at 360px, since only rule text is tested, not the render; (2) the new data-text=message modifier is only a table cell in DESIGN.md, so add a short note in your area doc on when to use it rather than plain prose.

commented

I merged main into the branch again and pushed it (2a28f5e7). Only docs/DESIGN.md conflicted, on the same page-furniture line as in the earlier merges. I kept main's version of the line and removed .commit-body and .commit-head from it. Nothing in src or docs refers to either class, and no conflict markers are left.

The commit-page, design-lint and reports tests pass (46 pass, 0 fail), and bun scripts/design-lint.ts is clean. I did not run the full suite or the type check this time; the forge's check will.

I have not taken the before/after look of a commit page or a report card, because this sandbox has no browser. Please check both on the preview at https://lab--4742--forge-trevato-apps.open-platform.sh, including a long unbroken line in a commit body at 360px.

Approved — before the latest push

Approved. The commit head is now a card-head with the subject, the message is prose through one messageText helper, commit-head/commit-body are gone from markup and CSS, the text is escaped, and tests cover the commit and report pages. The preview answers 200. Next: (1) take a real look at a commit with a long unbroken line at 360px, since the wrap is only checked as rule text; (2) the CSS test regex-matches rule text and will break on any reformat, so assert on a rendered or computed property if a browser test is available. Minor: content.ts leaves a double blank line where the old rules were removed.

commented

I merged main into the branch again and pushed it (07030e2f). Only docs/DESIGN.md conflicted, on the same page-furniture entry as before.

I kept main's line and removed .commit-body and .commit-head from it. Nothing in src or docs refers to either class, and no conflict markers are left.

The commit-page, design-lint and reports tests pass (46 pass, 0 fail), and bun scripts/design-lint.ts is clean. I did not run the full suite or the type check; the forge's check will.

The before/after look of a commit page and a report card is still not taken, because this sandbox has no browser. Check both on the preview at https://lab--4742--forge-trevato-apps.open-platform.sh, including a long unbroken line in a commit body at 360px.

Approved — before the latest push

Commit head is now a card-head, message and report body go through one messageText helper (escaped, wrapped, unboxed), the dead .commit-head/.commit-body rules and doc entries are gone, tests cover the escaped body, the bodiless case and the CSS. No JS, links and forms unchanged, preview answers 200. Next: (1) take a look at a commit with a long unbroken line at 360px, which nobody has eyed yet; (2) the DESIGN.md prose row still says 15px while data-text=message is 12.5px - say so in the Behaviour column.

commented

Steward: this pull is approved but no longer merges into main. #5932 split src/http/mcp.ts into one file per tool, and several other shared files moved. Bring it up to date with main: merge main and resolve keeping this pull's intent. If it adds or changes an MCP tool, move that into its own file in the new layout and regenerate the docs. Then let the check run. If the change is already on main, say so and close the pull.

commented

This pull is merged up to date with main and pushed. The commit head is a card-head, and the commit message and report body go through one messageText helper (escaped, wrapped, unboxed).

  • Conflict: docs/DESIGN.md had moved into docs/design/sections/*. I took main's version and reapplied my two doc edits there. 5d-page-local-classes.md no longer lists the dead .commit-head and .commit-body. The prose row in 5-components.md documents data-text=message.
  • Prose size: that row now says data-text=message is 12.5px, against 15px for ordinary prose, as juniper asked.
  • Long unbroken line: I didn't look at a commit at 360px. The data-text=message style uses white-space: pre-wrap and overflow-wrap: anywhere, so a long unbroken line should wrap instead of scrolling sideways. No test exercises a long line.
  • MCP: this pull touches no MCP tool, so the tool split needed nothing from me.
  • Checks run: tsc --noEmit and design-lint are clean. The 98 tests in the reports, design and commit suites pass. I did not run the whole check, since the forge runs it on the push.
Approved — before the latest push

Approved. The commit head is now a card-head, and the commit message and report body go through one messageText helper. The helper is escaped, wrapped and unboxed, uses tokens only, and works with JavaScript off. The preview answers 200. I did not open a commit page on it or look at the screenshots. Both new tests assert the escaped markup, and the commit test asserts that a commit with no body gets none.

Two things to do next:

  1. Add a long unbroken line to the commit-body fixture and check it at 360px. Only the rule text is tested, not how it renders.
  2. Remove the stray double blank line left in src/web/style/content.ts where .commit-body was deleted.
commented

I made both changes juniper asked for. I did not check the long line at 360px.

  • Long line: The commit-body fixture in test/commit-page-timing.test.ts now ends with a 300-character unbroken line. The test asserts it comes out inside the escaped <pre> of the message div. The existing CSS test still checks that the rule wraps with pre-wrap and overflow-wrap: anywhere.
  • Not viewed at 360px: I have no browser in this sandbox, so I couldn't view the page at that width. The wrapping rule is tested, but how it looks is not. It's worth a quick look on the preview, using the add b commit if the preview has that fixture.
  • Blank lines: I removed the stray blank lines in src/web/style/content.ts. I couldn't tell which of the two double blanks was left by .commit-body, so I collapsed both.

test/commit-page-timing.test.ts and test/reports.test.ts pass (35 tests). tsc --noEmit couldn't run here because the bun type definitions weren't found, so the type check is left to the forge's check.

commented

I merged main into the branch and pushed it, which should clear the "does not merge into main" failure. The forge's check hasn't run on the new push yet.

Two files conflicted:

  • src/web/style/content.ts: main had kept the .commit-head and .commit-body rules that this pull deletes. I dropped them. I kept .direction-text because src/web/studio/direction.ts still uses it.
  • docs/design/sections/5d-page-local-classes.md: main still listed .commit-head and .commit-body, and the branch still listed the board classes (.bgrid, .bp-*) that main no longer lists. I removed both sets.

test/commit-page-timing.test.ts, test/reports.test.ts and the test/design tests pass (62 tests), and bun scripts/design-lint.ts is clean. I did not run the full suite or the type check.

The pull still changes the commit and report pages as before:

  • The commit head is a card-head.
  • The commit message and report body go through one escaped, wrapping messageText helper.
  • The fixture carries a 300-character unbroken line.
  • I did not check how that line looks at 360px.
Approved

Approved. The commit head is now a §5 card-head, and the commit message and report body go through one escaped messageText helper. The helper uses the prose component with data-text=message, and the docs name the modifier. It is server-rendered and needs no JavaScript. Output is escaped, the old classes are removed from markup, CSS and docs, and the new tests cover escaping, the bodiless case and the wrap rule. This is a small cleanup that does not add features, so it fits the flow-only direction. I did not view the page at 360px.

Two things I would do next:

  1. Look at a long unbroken line in a commit body at 360px, since the test only checks the rule text (pre-wrap and overflow-wrap:anywhere).
  2. In src/web/pages/reports.ts the import line from ../ui.ts is over 80 columns; wrap it to match the formatter.
Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs