MaxView

What's New

2026-04-24
FEAT(MAXVIEW)
add timing trend tables with sparklines per hardware
details
  • Rewrite timing.py: snapshot section unchanged; add per-hardware trend tables (rows=tests, cols=last 10 main runs newest-first) with SVG sparklines and heat-map cell backgrounds (green=fastest, red=slowest)
  • Wire _build_timing_page to receive all_main_runs_by_hw and metrics_cache so trend data is cached and reused across builds
  • Add Timing nav link to all pages (html_primitives.py)
  • Force rebuild: all 84 pages updated with new nav + timing trends
10c87967
FIX(MAXVIEW)
HTML-escape commit body and subject in Updates page
5353b206
FIX(MAXVIEW)
fix git log format in Updates page — strip (-1) artifact and validate dates
c6e42307
FEAT(MAXVIEW)
add Timing page showing per-test wall-clock time across v6e-8 and v6e-32
details
  • New timing.html: table of test × hardware with wall-clock duration from first/last log timestamps, plus a speedup column (v6e-8/v6e-32 ratio)
  • parsers.py: _parse_log_duration() reads log timestamps for true elapsed time
  • pages/timing.py: new page builder
  • orchestrator.py: wired into global page build
  • html_primitives.py: "Timing" nav link added to all pages
58ab5cb5
2026-04-23
MAXVIEW
mark removed tests as DEPRECATED in old run pages
details

Old runs that still have results for 10_shardy_true,

11_optimizer_offload_false, or 13_scan_layers_true now show a amber

DEPRECATED badge next to the test name with a tooltip explaining why

the test was removed. The badge appears in all three comparison tables:

per-mode results, branch-vs-main, and NNX-vs-Linen.

698a6c20
FEAT(MAXVIEW)
drop redundant default-value test variants from pre-train suite
details

Remove 3 test cases per mode (6 total across Linen + NNX) that are

identical to existing tests because they only explicitly set a flag to

its base.yml default value:

  • 10_shardy_true → same as 01_base (shardy=True is default)
  • 11_optimizer_offload_false → same as 02_synthetic (False is default)
  • 13_scan_layers_true → same as 02_synthetic (True is default)

The non-default counterparts (shardy_false, offload_true, scan_false)

are kept as they test distinct code paths. Total suite: 56 → 50 tests.

e29bd7a1
MAXVIEW
fix branch comparisons to use contemporaneous main baseline
details

Previously every branch run was compared against the current latest main,

so comparisons would silently change whenever a new main landed. Now each

branch run is compared against the most recent main whose timestamp is

at-or-before the branch run's own timestamp, making each comparison a

stable snapshot.

5dce455f
2026-04-22
MAXVIEW
fix stale search data by always refreshing on overlay open
details

Previously _mvData was loaded once and never re-fetched, so running a

rebuild while the page was open left search with the old index. Now

mvSearchOpen() always kicks off a fetch; the HTTP cache handles the

common case where nothing changed (304), and a fresh response replaces

stale in-memory data after a rebuild.

ed7ccbcc
MAXVIEW
fix tab panels broken by _html table-wrap logic
details

_html() did a blind str.replace("</table>", "</table></div>") that

appended a stray </div> after every table close, including tables with

attributes (style="width:auto", class="panel-table") used in the tab

panels. Those tables never got the matching opening <div class="table-wrap">

so each stray </div> prematurely closed the enclosing panel div, pushing

the subsequent p/table elements outside the tab.

Fix: replace the two-pass str.replace with a single regex that atomically

wraps only bare <table>...</table> pairs (no attributes), leaving all

attributed tables untouched.

1f39dfa8
MAXVIEW
consolidate log-compare metrics into a single tabbed card
details

Replaces four separate collapsible sections (System Info, Memory Breakdown,

HBM Utilization, Per-Step Metrics) with a single card containing four tabs:

Summary, System, HBM, Steps. One card, one click to switch — cleaner layout.

21069b46
MAXVIEW
enrich log-compare page with HBM charts, sparklines, and step table
details

Adds four collapsible sections below the summary diff table on every

log-compare page, matching what the individual log summary panel shows:

  • System Info: Jaxlib, Hardware, Devices side-by-side
  • Memory Breakdown: Total/Output/Temp/Argument for both runs
  • HBM Utilization: per-device SVG bar charts + usage tables, one column per run
  • Per-Step Metrics: TFLOP/s sparklines side-by-side, then a step-aligned comparison table with Loss Δ and TFLOP/s Δ (green = improvement, red = regression)

All sections are collapsible via <details> with the same smooth CSS animation

already used elsewhere on the site.

15594304
MAXVIEW
fix Updates page layout, body formatting, and add smooth expand/collapse animations
73796eff
MAXVIEW
add inline search, trend pages, metrics cache, and UX improvements
details

New features:

  • Inline search overlay: clicking "Search" (or pressing "/") expands a modal with instant client-side search across tests and runs; no separate page navigation required
  • Per-test trend pages with TFLOP/s sparklines, flaky test detection, and bisect helper linking last-pass → first-fail commits on GitHub
  • Metrics cache (metrics_cache.json) extracts TFLOP/s, tokens/s, loss from run logs for trend visualisation (3600+ entries)
  • Global search page + search.json data file
  • Shields.io badge endpoint (docs/badge/main.json)
  • PR badge on index cards (branch → open PR via gh pr list)
  • Sticky filter bar with hardware and status filters on index
  • Collapsible branch groups with localStorage persistence
  • Branch-level pass-rate sparklines on index
  • Summary stats banner (total runs, branches, pass rate)
  • Stale data banner when newest run is >3 days old
  • Incomplete run badge with hover tooltip
  • HBM utilisation bar chart and TFLOP/s sparkline on log pages
  • ← Back to run button and History column on run/log pages
  • Last-built timestamp footer on every page
  • Incremental build system (build_manifest.json; skips unchanged runs)
  • watch_site.py: poll-based auto-rebuild on file changes
  • check_regressions.py: PASS→FAIL regression alerting with --gh-issue flag
  • --max-age-days and --max-runs-per-branch CLI flags on build_site.py

Bug fixes:

  • Fixed multiple "All Runs" headers caused by Python implicit f-string concatenation swallowing the join separator
  • Fixed run cards split into two chips by replacing nested <a> PR badge with <span onclick=window.open(...)>
  • Fixed JS syntax error in search overlay caused by unescaped single quotes in onmouseover handlers; moved hover to CSS instead
142f6475
2026-04-21
MAXVIEW
tighten Updates page filter to exclude non-UI commits
details

fix: and refactor: prefixes are now only shown when scoped to (maxview).

Plain fix:/refactor: commits (infra, scripts) no longer appear on the

Updates page. feat: still included since feature commits tend to be

MaxView-relevant.

470adcd4
2026-04-20
MAXVIEW
log-compare UX — fix nav 404s, collapsible metrics, prev/next buttons
details
  • Fix Home/Test Reference/Updates links on log-compare pages (path depth was off by one, resulting in 404 on GitHub Pages).
  • Make Metrics section collapsible via <details>; chevron indicator.
  • Add prev/next buttons to navigate test cases without returning to the run index.
43f3533a
2026-04-18
MAXVIEW
mobile UX — collapsible test sections, nowrap buttons, FAB summary button, table word-break fix
67673277
MAXVIEW
make commit hashes hyperlinks to MaxText GitHub commits
5f38d3cb
MAXVIEW
mobile-responsive layout — scrollable tables, stacked cards, touch tooltips, nav wrap
cb4706d2
MAXVIEW
mobile-responsive layout — scrollable tables, nav wrap, card badges, panel width
8fd1535f
FEAT
auto-rebuild MaxView site on push via GitHub Actions
20b262d6
MAXVIEW
display run dates in viewer's local timezone
details

Store dates as UTC ISO 8601 in meta.json (run_tests_xpk.sh).

Wrap date strings in <time data-utc> elements; a small inline JS

snippet converts them to the browser's local timezone on page load.

c95aad94
MAXVIEW
fix nav button overlap and add favicon
details
  • Wrap Updates + Test Reference buttons in .nav-btns flex div so they don't stack on top of each other at position:absolute right:16px
  • Add SVG favicon (bar-chart / MV motif) as inline data URI

site: rebuild with nav fix, favicon, and Updates page link

a2214b9f
MAXVIEW
add Updates page with filtered git changelog
d5a61932
MAXVIEW
add MV bar-chart favicon
18c2b3ef
MAXVIEW
UI polish, code quality fixes, and test updates
details
  • Font stack: system-ui monospace stack, ligatures, tabular numbers, font smoothing, optimized line-height across body/pre/headings
  • Breadcrumb: macOS-style path bar in dedicated .bc-bar strip below header; chip items with hover, › separator, bg matches header (--bg2)
  • Header: Test Reference button vertically centered via absolute pos
  • Colorize SKIP/SKIPPED results with nan class
  • Error/warning log highlighting: Traceback, *Error:, E####, WARNING
  • Ghost-run guard in discovery: skip runs with no linen and no nnx data
  • Lift _commit_chip and _esc_highlight to module level (dedup)
  • Move inline imports (json, re) to module level in parsers/index
  • Fix test_reference.py and orchestrator.py to read test plans from runs_dir (not runs_dir.parent)
  • Add mkdir(parents=True) guard in _build_log_page before write
  • Fix TestParseResultsMd: mock meta.json sibling read so all 57 tests pass
bfb1358c
2026-04-17
MAXVIEW
remove cross-hw baseline fallback; fix v6e-32 run comparing v6e-8 baseline
details

_pick_baseline was falling back to the most-recent baseline of any hardware

when no hw-matched baseline existed. This caused main_20260417_125726 (v6e-32)

to compare against the v6e-8 prev baseline (no v6e-32 prev exists yet).

Fix: return None when no hw-matched baseline — never substitute a different

machine's baseline. Same fix applied to _hw_matched_main on the index page.

2fa959ed
MAXVIEW
add hardware type filter buttons to index page
details

All / v6e-8 / v6e-32 toggle buttons appear above the text search bar.

Clicking a hardware button hides cards whose data-hw doesn't match and

collapses branch-groups that become fully hidden. Both filters compose.

e599fa9d
2026-04-16
FEAT
show commit hashes in NNX vs Linen section heading
fc1d45c2
FEAT
compare current baseline vs previous baseline
details
  • Current main baseline now shows a vs-prev-baseline comparison section
  • Commit hashes displayed inline in the section heading for both sides
  • Older main baselines show no comparison (avoids confusing main-vs-main)
  • Feature branches unchanged: still compare against current main baseline
  • Gracefully handles case where no previous baseline exists
dcf22f30
REFACTOR
split build_site.py into maxview/ package
details

Extracted 2046-line monolith into a proper Python package:

maxview/

config.py — site constants

assets.py — CSS, JS assets, test_tooltip_js()

html_primitives.py — _html, _badge, _sanitize_md, etc.

parsers.py — results.md, test plan, log file parsers

discovery.py — run discovery

xplane.py — XPlane profile cache

pages/

index.py — index page

run.py — per-run page

results.py — linen/nnx results page

log.py — individual log page

log_compare.py — side-by-side log compare (unified sync JS)

test_reference.py — test reference page

orchestrator.py — build() / main()

build_site.py becomes a thin shim re-exporting all names for

backward compatibility with tests. All 57 unit tests pass.

71c879ec