feat: run comparison - compare page, run selection & routing - #2603
feat: run comparison - compare page, run selection & routing#2603camielvs wants to merge 1 commit into
Conversation
🎩 PreviewA preview build has been created at: |
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
e34d81d to
22f985a
Compare
091c054 to
8d790d4
Compare
a1c4ec9 to
69226d7
Compare
8d790d4 to
357bd26
Compare
69226d7 to
cf080ba
Compare
357bd26 to
89ec2e4
Compare
89ec2e4 to
a65446a
Compare
cf080ba to
e6b562b
Compare
a65446a to
adf468d
Compare
e6b562b to
659f92c
Compare
adf468d to
c5a8ffa
Compare
659f92c to
5c839e1
Compare
5c839e1 to
006504f
Compare
c5a8ffa to
4e67563
Compare
4e67563 to
8b1ccc6
Compare
ec51b4c to
98fa398
Compare
8b1ccc6 to
35b4714
Compare
35b4714 to
d2f4d3d
Compare
98fa398 to
a2685c2
Compare
d2f4d3d to
eb80245
Compare
a2685c2 to
6f70ada
Compare
| const LABEL_B = "B"; | ||
|
|
||
| export function CompareView() { | ||
| const search = useSearch({ strict: false }) as CompareSearch; |
There was a problem hiding this comment.
🤖 This is an AI-generated response.
AI review [severity: medium]
These search params are cast without validation. TanStack Router’s default parser JSON-parses query values, so /compare?a=123&b=456 produces numbers rather than strings. Those values reach usePipelineRunData, where id.length > 0 fails and leaves execution loading disabled.
Please validate the route search values, normalize valid scalar string/number IDs with String(value), and reject arrays or objects. A regression test for unquoted numeric parameters would cover the direct-link case.

Description
Final PR in the Compare Runs stack — this is the one that turns all the previous pieces into a usable feature.
/compare) that ties everything together: a header with both runs (labelled A/B, swap, share-link and close), the run metadata bar, and the Structured / YAML / Graph tabs./comparewithout both runs chosen, it shows a run picker for the missing side (and guards against comparing a run with itself).compare-runsbeta flag — the route redirects away and the entry points stay hidden when it's off.Also moves the shared
buildTaskExecutionStatusMaphelper intoutils/executionStatus(used by both the run view and the comparison).Related Issue and Pull requests
Final PR in the Compare Runs stack. Builds on #2602 (#2596 → #2603).
Type of Change
Checklist
Screenshots (if applicable)
Test Instructions
?a=…&b=…) loads the same comparison; picking the same run twice is blocked./compareredirects to the run list.buildTaskExecutionStatusMapmove).Additional Comments