From b15bf00783c24b00e9529f1158bcaf97056f1563 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Flor=C3=AAncio?= Date: Sun, 23 Aug 2026 13:39:07 +0000 Subject: [PATCH] fix: shorten PR walkthrough links and align shell branding (#2954) --- .../skills/pr-walkthrough/references/build.py | 32 +++- .../pr-walkthrough/references/shell.html | 161 +++++++++++++----- .../pr-walkthrough/references/test_build.py | 90 +++++++++- .../pr-walkthrough-workflow-contract_test.py | 7 +- .github/workflows/pr-walkthrough.yml | 4 +- .../2026-08-22-pr-walkthrough-r2-hosting.md | 6 +- .../2026-08-23-pr-walkthrough-short-urls.md | 46 +++++ docs/decisions/INDEX.md | 1 + .../plan.md | 7 +- ...sk-04-public-url-and-shell-presentation.md | 43 +++++ docs/plans/pr-walkthrough/plan.md | 9 +- .../task-02-agent-rendering-contract.md | 3 +- .../task-04-r2-html-publication.md | 8 +- docs/specs/pr-walkthrough/spec.md | 32 +++- scripts/pr-walkthrough-pr-body | 6 +- scripts/pr-walkthrough-pr-body.test.py | 5 +- 16 files changed, 389 insertions(+), 71 deletions(-) create mode 100644 docs/decisions/2026-08-23-pr-walkthrough-short-urls.md create mode 100644 docs/plans/pr-walkthrough-portable-runner-fix/task-04-public-url-and-shell-presentation.md diff --git a/.agents/skills/pr-walkthrough/references/build.py b/.agents/skills/pr-walkthrough/references/build.py index 7c30680593..7509e47561 100644 --- a/.agents/skills/pr-walkthrough/references/build.py +++ b/.agents/skills/pr-walkthrough/references/build.py @@ -380,14 +380,44 @@ def render_groups(boxes): ) +def edge_lanes(edges): + """Assign stable slots for endpoints and repeated node pairs.""" + outgoing, incoming, pairs = {}, {}, {} + for index, edge in enumerate(edges): + outgoing.setdefault(edge["from"], []).append(index) + incoming.setdefault(edge["to"], []).append(index) + pair = tuple(sorted((edge["from"], edge["to"]))) + pairs.setdefault(pair, []).append(index) + lanes = [] + for index, edge in enumerate(edges): + source_edges = outgoing[edge["from"]] + target_edges = incoming[edge["to"]] + pair_edges = pairs[tuple(sorted((edge["from"], edge["to"])))] + lanes.append({ + "from_lane": source_edges.index(index), + "from_lanes": len(source_edges), + "to_lane": target_edges.index(index), + "to_lanes": len(target_edges), + "pair_lane": pair_edges.index(index), + "pair_lanes": len(pair_edges), + }) + return lanes + + def render_edges(edges, ids): out = "" for e in edges: require(e.get("from") in ids, f'edge references unknown node "{e.get("from")}"') require(e.get("to") in ids, f'edge references unknown node "{e.get("to")}"') + for e, lane in zip(edges, edge_lanes(edges)): + lane_attrs = " ".join( + f'data-{name.replace("_", "-")}="{value}"' + for name, value in lane.items() + ) out += (f'
') + f'data-label="{esc_attr(e.get("label", ""))}" ' + f'{lane_attrs}>') return out diff --git a/.agents/skills/pr-walkthrough/references/shell.html b/.agents/skills/pr-walkthrough/references/shell.html index 2f6f41d03b..2e576cc0f7 100644 --- a/.agents/skills/pr-walkthrough/references/shell.html +++ b/.agents/skills/pr-walkthrough/references/shell.html @@ -11,14 +11,16 @@ + + + {{PR_TITLE}} - Walkthrough - +