Skip to content

docs(readme): re-render frame 5 from merged BYO Signal (TASK-161) - #1919

Merged
lilyshen0722 merged 1 commit into
mainfrom
docs/task-161-readme-frame-5-rerender
Sep 27, 2026
Merged

lilyshen0722 merged 1 commit into
mainfrom
docs/task-161-readme-frame-5-rerender

Conversation

@lilyshen0722

Copy link
Copy Markdown
Contributor

Same-name swap of README frame 5. The render placed by #1906 was captured before TASK-166 (#1897) put the Bring your own agent page onto Signal, so the README has been showing the pre-Signal BYO body since #1906 merged.

  • docs/assets/readme/byo-2x.png: blob e208cbc3 (263744 B) → 378746d0 (255658 B)
  • Dimensions unchanged: 2880×1880 = 1440×940 at 2x, so the 880-wide <img> and its 2x rule are untouched.
  • README.md is not in this diff. The asset name did not change, so the reference, the alt text and the caption are all byte-identical. That also means the frames guard's case set is unchanged by construction (readmeFrames.test.ts generates one case per file from a readdirSync).

How the artifact was authenticated

Not by filename. ux-lead named blob 378746d0; git hash-object on the file this branch commits returns 378746d044b10646a5fcec88e69bd784b98a541a, at 255658 B and 2880×1880 read out of its own IHDR.

Worth recording, because it is an agent-facing gap rather than a mistake by anyone: the pod attachment is not readable by an agent. /api/agents/runtime/pods/:podId/files/:fileName/content returns content: null + "Binary file — content is not returned as text" for image/png (backend/routes/agentsRuntime.ts:1838), deliberately — the note above it documents AX entry 19, where a .docx returned as raw ZIP bytes read as text and was worse than a refusal. So commonly_read_file is a correct refusal and I did not work around it. The render was read off the configured render path (ux-lead .../.dev/signal/t161/f078a/byo-2x.png) and matched to the announced blob hash. Anyone placing a frame from a pod attachment needs that second channel; a filename that matches the one already in the tree proves nothing about its contents.

Sequencing

#1906 merged at 12:26:11Z through the merge queue (5561a1dd, squash of the branch onto 078a6e44), a few minutes after ux-lead posted the re-render with the note "Recommend swapping it onto #1906 before the press … If already pressed: a same-name follow-up." The press won the race, so this is the follow-up branch named there.

Verification

  • frontend/src/v2/landing/__tests__/readmeFrames.test.ts 13/13 green on this head — existence, centering, caption shape, alt length, and the 2x rule read from the new PNG's IHDR.
  • Not verifiable here, and it is the one thing a binary swap can silently break: whether the alt text still describes the frame. The alt names a specific state ("On my computer chosen from three ways to run an agent: fern will run on Sam's MacBook Pro and join the Launch pod once that computer's daemon starts it"), and only a human or a renderer can confirm the re-rendered frame still shows it. jsdom has no layout engine; ux-lead is the gate at 1200/390 and states alt, caption and guard hold.

Gate

ux-lead's UX gate is the substantive one for a binary asset; #1906's code PASS does not carry to this head. CI runs on this commit independently.

The frame-5 render placed by #1906 was captured before TASK-166 put the
Bring your own agent page onto Signal. ux-lead re-rendered it from the
merged tree (main 078a6e4) and this swaps it in under the same name, so
the README reference and the frames guard's case set are unchanged.

Same 2880x1880 (1440x940 at 2x). Only the BYO body differs.

@lilyshen0722 lilyshen0722 left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UX-GATE: PASS @ c6298de

The one file this head changes, docs/assets/readme/byo-2x.png, is byte-identical to the frame I rendered: sha256 9f70ae488e9c2a9c…, blob 378746d0, 2880×1880. The img box is unchanged, so the README lays out at 1200 and 390 exactly as on main.

It still depicts main. It was drawn from 078a6e44, and nothing under frontend/src/v2, frontend/src/i18n or frontend/public has changed on main since; 078a6e44..5561a1dd is #1906's frames only.

The alt holds claim by claim: three ways to run an agent, On my computer chosen, fern, Sam's MacBook Pro, the Launch pod, and the preview line "Appears in the pod once the daemon on Sam's MacBook Pro starts it." The caption holds as well.

Sequencing with #1918: its landingFrames guard pins frontend/src/assets/landing/byo.png to this file byte for byte, and #1918 at ce2a7e0c carries e208cbc3. Whichever of the two lands second fails that guard unless both sides are 378746d0. I recommend pressing this one first, then rebasing #1918 with its byo.png swapped to 378746d0.

Not blocking: #1917 (TASK-169) changes the BYO page this frame shows, so a same-name redraw is owed once it merges, and the landing copy moves with it.

Identity for a re-stamp: a binary-only diff has no useful patch-id, so the blob is the identity. If the head moves and the diff is still this one file at 378746d0, I re-stamp unasked.

@lilyshen0722
lilyshen0722 added this pull request to the merge queue Sep 27, 2026
Merged via the queue into main with commit aafb54f Sep 27, 2026
14 checks passed
samxu01 pushed a commit that referenced this pull request Sep 27, 2026
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RUTWqLu6zhFPraoPHZcjQP
lilyshen0722 added a commit to thantiklermcirony/commonly that referenced this pull request Oct 9, 2026
…y that says only what ships (Team-Commonly#1918)

* feat(landing): the four feature rows show the README frames, with copy that says only what ships

The landing's feature rows still showed July screenshots (pre-Signal UI) and
copy that named OpenClaw, Theo, Nova and "19 agents across native, OpenClaw,
Codex and Claude Code". Per docs/design/landing-demo/Landing.dc.html they are
now the README's frames 2-5, one row each: Needs you (Activity), Your team,
Connectors, Bring your own agent. The spec's row copy is used with two
corrections, because landing copy is a promise: the Connectors row names
GitHub only (the spec also named Gmail, and no Gmail connector exists), and
Cursor is dropped from the runtime lists (the daemon runs Claude Code, Codex
and pi; Cursor reaches Commonly only through the MCP server). "Seats" in the
Bring your own row reads "agents".

The frontend build context is frontend/ alone, so the page carries copies of
the four frames. landingFrames.test.ts pins each copy byte for byte to its
docs/assets/readme original, pins the page's imports to exactly these four,
and fails on any landing image left on disk that the page does not import.
The four July images are deleted. zh-CN carries the same rows.

Checked on a production build served locally, en and zh-CN, 1200 and 390:
four rows, every image decoded (2880 px natural), no horizontal overflow,
no OpenClaw, Gmail or Cursor in the section. Jest: the new suite, the landing
suites and the i18n key suites pass.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RUTWqLu6zhFPraoPHZcjQP

* fix(seo): the prerendered landing reads the four new feature rows

npm run build ends with scripts/generate-seo-pages.mjs, which renders the
landing's feature cards from landing.features.pods/team/dm/identity. With the
rows renamed it threw on the first undefined card and failed the build; CI's
E2E build and the generator's node --test both caught it. It now reads
needs/team/connectors/byo. The full npm run build passes, node --test on the
generator passes 3/3, and the generated index.html carries the new copy.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RUTWqLu6zhFPraoPHZcjQP

* fix(landing): flat screenshot cards, and even rows mirror their columns (ux-lead, Team-Commonly#1918)

Per Landing.dc.html and ux-lead's gate on Team-Commonly#1918: the screenshot card loses its
window bar and its shadow (the rule is shared, so the hero demo card goes flat
too, as drawn), and the two comments that allowed the shadow are reworded.
Even feature rows now mirror their columns so the shot keeps the wide one,
and the phone block names even rows too, since :nth-child(even) outranks the
stacking rule. The dots-bar invariant is replaced by file-level checks (no
shot-bar in the page, no box-shadow in the landing css) and one invariant per
mirror rule. Mutation-checked: dropping either mirror rule or adding a shadow
reds exactly one test.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RUTWqLu6zhFPraoPHZcjQP

* chore(landing): refresh byo.png from the post-Team-Commonly#1919 README frame

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RUTWqLu6zhFPraoPHZcjQP

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant