feat(viewer): drawer-based run page — compact layout, click-to-inspect#21
Merged
Conversation
Restructures the run page for a denser, more intuitive experience
(AlphaEvolve-style), fixing the wasted space and clunky navigation:
- Chart now sits beside a compact summary panel (best score / steps /
cost / calls / models) instead of spanning full width with dead space
to its right.
- The step list is a single full-width table — no more tall empty column
where the old fixed 2-column detail left a gap.
- Clicking any step row opens a right-side **drawer** with that step's
notes + code diff + the interactive solution viz, coupled in one view
(no separate "see the solution" click). The viz loads in an inner iframe
(so its script/styles stay isolated) and height-syncs via postMessage.
- The programs browser rows open the same drawer.
- A back button sits at the top of every drilled-in page.
- The run header shows a one-line task description, pulled from the task's
initial_program.py module docstring.
New endpoints: /step/{n}/detail (drawer fragment) and /step/{n}/viz
(standalone per-step viz page). solution.py gains render_step (renders an
arbitrary step's stored code, cached under .viz_cache/) and task_blurb.
The legacy /step/{n} URL now 307s to the run page at #step={n}, which the
drawer auto-opens.
Tests updated for the fragment endpoints + drawer markup; added per-step
render + task_blurb coverage. Full suite green (337 tests).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A UX pass on the run page, addressing concrete bothers with the old layout (modeled on AlphaEvolve's denser, more intuitive view).
What changed
[step list | detail]left a tall empty gap on the left whenever the detail ran longer than the list. The step list is now a single full-width table. (fixes "empty space on the left after the table ends")<iframe>(so its<script>/document.currentScriptand styles stay isolated) and height-syncs to the parent viapostMessage. (the AlphaEvolve-style compact view; couples diff + viz)initial_program.pymodule docstring (e.g. "auto — First autocorrelation inequality").Implementation
…/step/{n}/detail(drawer HTML fragment) and…/step/{n}/viz(standalone per-step viz page for the inner iframe).solution.pygainsrender_step(renders an arbitrary step's storedcodein the sandboxed subprocess, cached under.viz_cache/step_{n}.html) andtask_blurb.…/step/{n}URL now 307-redirects to the run page at#step={n}, which the drawer auto-opens (deep links keep working).Deferred from this pass (flagged for later): viewing/editing evaluators, prompts, and human-steer
.mdfiles through the viewer.Verification
🤖 Generated with Claude Code