From 36f70b75f7fff4c73f0b65d33253bddfd5b54ff8 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Mon, 20 Jul 2026 06:43:30 +0000 Subject: [PATCH 1/2] feat(report): fold the PR comment into per-group sections MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A flat table is fine for a handful of benchmarks, but the wardnet suite has grown past 30 and a single wall of rows drowns the signal. Group deltas by their leading id segment — criterion's benchmark_group, the "group" in a group/function/value id — and render each as a collapsible
section: a summary line (name, size, verdict) with the table folded behind it. Sections that hold a regression open by default so problems stay visible without a click; clean groups collapse. Row ids drop the redundant group prefix now that the section header carries it. Suites with a single group keep the old flat table, so small projects see no change. --- README.md | 5 +- internal/model/model.go | 17 ++++- internal/report/report.go | 129 +++++++++++++++++++++++++++++++-- internal/report/report_test.go | 94 ++++++++++++++++++++++++ 4 files changed, 235 insertions(+), 10 deletions(-) create mode 100644 internal/report/report_test.go diff --git a/README.md b/README.md index d5d8634..b21e5bf 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,10 @@ built for the [wardnet](https://github.com/wardnet) daemon's benchmarks. 1. Your CI runs the benchmarks (today: Rust [criterion](https://github.com/bheisler/criterion.rs)). 2. `cubit compare` ingests the output, diffs it against the baseline recorded on the `cubit-state` branch, and posts a Markdown table (baseline vs current, Δ%) - plus a link to a trend dashboard. + plus a link to a trend dashboard. Larger suites are folded into collapsible + sections by benchmark group (criterion's `group/function/value` prefix), so + the comment and dashboard stay readable as the suite grows — sections holding + a regression open by default. 3. On the default branch, `cubit record` updates the baseline — keyed by commit SHA — for the next PR to compare against. diff --git a/internal/model/model.go b/internal/model/model.go index 418c30d..bdc18b5 100644 --- a/internal/model/model.go +++ b/internal/model/model.go @@ -7,7 +7,10 @@ // the numbers. package model -import "sort" +import ( + "sort" + "strings" +) // SchemaVersion is bumped whenever the on-disk [Run] shape changes // incompatibly, so the ingest/read layers can refuse or migrate old records. @@ -82,3 +85,15 @@ func Compare(current, baseline Run, thresholdPct float64) []Delta { sort.Slice(out, func(i, j int) bool { return out[i].ID < out[j].ID }) return out } + +// GroupKey returns a benchmark's group: the leading id segment before the first +// "/". criterion nests ids as "group/function/value", so this is the +// benchmark_group the bench was declared in — the natural axis for folding a +// large suite into sections. A top-level bench_function has no "/" and no +// group, so its key is "" (rendered as an "ungrouped" bucket downstream). +func GroupKey(id string) string { + if i := strings.IndexByte(id, '/'); i >= 0 { + return id[:i] + } + return "" +} diff --git a/internal/report/report.go b/internal/report/report.go index df2ba5d..3866788 100644 --- a/internal/report/report.go +++ b/internal/report/report.go @@ -8,6 +8,7 @@ package report import ( "fmt" + "sort" "strings" "wardnet/cubit/internal/model" @@ -41,12 +42,18 @@ func Markdown(deltas []model.Delta, cur model.Run, thresholdPct float64, dashboa b.WriteString("✅ No benchmark exceeded the regression threshold.\n\n") } - b.WriteString("| Benchmark | Baseline | Current | Δ | |\n") - b.WriteString("|---|--:|--:|--:|:-:|\n") - for _, d := range deltas { - b.WriteString(row(d)) + // A flat table is fine for a handful of benches, but a suite of dozens spread + // across several criterion groups swamps the comment. When there is more than + // one group, fold each into a collapsible section — clean groups collapsed, + // groups with a regression expanded — so a reviewer sees what moved without + // scrolling a wall of rows. + if groups := groupDeltas(deltas); len(groups) > 1 { + for _, g := range groups { + writeGroup(&b, g) + } + } else { + writeTable(&b, deltas, "") } - b.WriteString("\n") if newCount > 0 { fmt.Fprintf(&b, "_%d benchmark(s) are new (no baseline to compare)._\n\n", newCount) @@ -58,12 +65,106 @@ func Markdown(deltas []model.Delta, cur model.Run, thresholdPct float64, dashboa return b.String() } -func row(d model.Delta) string { +// group is a set of deltas sharing a benchmark group (their leading id segment). +type group struct { + name string // the shared group; "" for ungrouped, top-level benches + deltas []model.Delta +} + +// groupDeltas buckets deltas by [model.GroupKey], preserving each group's +// internal order (Compare already sorted by id) and returning groups sorted by +// name with the ungrouped bucket last, so the sections read alphabetically and +// the miscellany falls to the bottom. +func groupDeltas(deltas []model.Delta) []group { + index := map[string]*group{} + var order []*group + for _, d := range deltas { + name := model.GroupKey(d.ID) + g, ok := index[name] + if !ok { + g = &group{name: name} + index[name] = g + order = append(order, g) + } + g.deltas = append(g.deltas, d) + } + sort.Slice(order, func(i, j int) bool { + a, z := order[i].name, order[j].name + if (a == "") != (z == "") { + return a != "" // ungrouped ("") sorts last + } + return a < z + }) + out := make([]group, len(order)) + for i, g := range order { + out[i] = *g + } + return out +} + +// writeGroup renders one collapsible section: a summary line carrying the +// group's name, size and status, and — inside — its table. The section is +// pre-expanded when the group holds a regression, so problems are visible +// without a click while healthy groups stay folded. +func writeGroup(b *strings.Builder, g group) { + name := g.name + if name == "" { + name = "ungrouped" + } + open := "" + if countRegressed(g.deltas) > 0 { + open = " open" + } + fmt.Fprintf(b, "%s · %d benchmark%s · %s\n\n", + open, name, len(g.deltas), plural(len(g.deltas)), groupStatus(g.deltas)) + writeTable(b, g.deltas, g.name) + b.WriteString("
\n\n") +} + +// writeTable renders the benchmark table for deltas. groupName, when non-empty, +// is stripped from each row's id so a "dns" section lists "parse/a" rather than +// repeating "dns/parse/a" on every row. +func writeTable(b *strings.Builder, deltas []model.Delta, groupName string) { + b.WriteString("| Benchmark | Baseline | Current | Δ | |\n") + b.WriteString("|---|--:|--:|--:|:-:|\n") + for _, d := range deltas { + b.WriteString(row(d, trimGroup(d.ID, groupName))) + } + b.WriteString("\n") +} + +// groupStatus is the one-glance verdict shown in a group's summary line: a +// regression count wins, otherwise a speedup, otherwise a clean check. +func groupStatus(deltas []model.Delta) string { + if r := countRegressed(deltas); r > 0 { + return fmt.Sprintf("⚠️ %d slower", r) + } + if countFaster(deltas) > 0 { + return "🚀 faster" + } + return "✅" +} + +func trimGroup(id, groupName string) string { + if groupName == "" { + return id + } + return strings.TrimPrefix(id, groupName+"/") +} + +func plural(n int) string { + if n == 1 { + return "" + } + return "s" +} + +func row(d model.Delta, label string) string { if !d.HasBase { - return fmt.Sprintf("| `%s` | — | %s | _new_ | 🆕 |\n", d.ID, formatNs(d.Current)) + return fmt.Sprintf("| `%s` | — | %s | _new_ | 🆕 |\n", label, formatNs(d.Current)) } return fmt.Sprintf("| `%s` | %s | %s | %s | %s |\n", - d.ID, formatNs(d.Baseline), formatNs(d.Current), formatPct(d.PctChange), marker(d)) + label, formatNs(d.Baseline), formatNs(d.Current), formatPct(d.PctChange), marker(d)) } func marker(d model.Delta) string { @@ -97,6 +198,18 @@ func countNew(deltas []model.Delta) int { return n } +// countFaster counts benchmarks that got meaningfully faster — the same +// threshold marker() uses for the 🚀 flag, so the summary and rows agree. +func countFaster(deltas []model.Delta) int { + n := 0 + for _, d := range deltas { + if d.HasBase && d.PctChange < -5 { + n++ + } + } + return n +} + // formatNs renders a nanosecond value with an adaptive unit, so a table mixing // sub-microsecond cache lookups and millisecond pipeline runs stays readable. func formatNs(ns float64) string { diff --git a/internal/report/report_test.go b/internal/report/report_test.go new file mode 100644 index 0000000..62615a8 --- /dev/null +++ b/internal/report/report_test.go @@ -0,0 +1,94 @@ +package report + +import ( + "strings" + "testing" + + "wardnet/cubit/internal/model" +) + +func delta(id string, base, cur float64, threshold float64) model.Delta { + d := model.Delta{ID: id, Unit: "ns", Current: cur} + if base > 0 { + d.HasBase = true + d.Baseline = base + d.PctChange = (cur - base) / base * 100 + d.Regressed = d.PctChange > threshold + } + return d +} + +func TestMarkdownGroupsIntoSections(t *testing.T) { + deltas := []model.Delta{ + delta("dns/parse/a", 100, 102, 15), + delta("dns/parse/aaaa", 100, 130, 15), // regression + delta("cache/get/hit", 40, 41, 15), + delta("cache/put/large", 800, 808, 15), + } + md := Markdown(deltas, model.Run{Commit: "abc"}, 15, "") + + if strings.Count(md, "dns") { + t.Errorf("dns group with a regression should be open:\n%s", md) + } + if !strings.Contains(md, "
cache") { + t.Errorf("clean cache group should be collapsed:\n%s", md) + } + // Rows inside a section drop the redundant group prefix. + if !strings.Contains(md, "| `parse/a` |") { + t.Errorf("row id should be stripped of its group prefix:\n%s", md) + } + if strings.Contains(md, "| `dns/parse/a` |") { + t.Errorf("row id should not repeat the group prefix:\n%s", md) + } +} + +func TestMarkdownSingleGroupStaysFlat(t *testing.T) { + deltas := []model.Delta{ + delta("dns/parse/a", 100, 101, 15), + delta("dns/parse/aaaa", 100, 102, 15), + } + md := Markdown(deltas, model.Run{}, 15, "") + if strings.Contains(md, " Date: Mon, 20 Jul 2026 06:43:38 +0000 Subject: [PATCH 2/2] feat(dashboard): group the trend page by benchmark group Mirror the PR comment's sectioning on the trend dashboard: bucket the charts by their leading id segment and render each group as a collapsible section with a header (name + count), so a 30-plus-chart page can be folded down to the groups a reviewer cares about. Chart captions drop the group prefix the section header already shows, and the subtitle now reports the group count. A single-group suite still renders the flat grid. Rebuilt the vendored single-file bundle so the embedded dashboard matches source. --- internal/dashboard/assets/index.html | 22 ++++----- web/src/App.tsx | 68 ++++++++++++++++++++++++---- web/src/LineChart.tsx | 8 ++-- web/src/data.ts | 10 ++++ web/src/styles.css | 27 +++++++++++ 5 files changed, 113 insertions(+), 22 deletions(-) diff --git a/internal/dashboard/assets/index.html b/internal/dashboard/assets/index.html index d50b178..7845054 100644 --- a/internal/dashboard/assets/index.html +++ b/internal/dashboard/assets/index.html @@ -4,7 +4,7 @@ cubit — performance - - +`+a.stack}}var Kn=Object.prototype.hasOwnProperty,Zn=C.unstable_scheduleCallback,qn=C.unstable_cancelCallback,Ov=C.unstable_shouldYield,Nv=C.unstable_requestPaint,Wl=C.unstable_now,Yv=C.unstable_getCurrentPriorityLevel,Bi=C.unstable_ImmediatePriority,Di=C.unstable_UserBlockingPriority,Qe=C.unstable_NormalPriority,Gv=C.unstable_LowPriority,Ei=C.unstable_IdlePriority,jv=C.log,rv=C.unstable_setDisableYieldValue,ba=null,_l=null;function kt(l){if(typeof jv=="function"&&rv(l),_l&&typeof _l.setStrictMode=="function")try{_l.setStrictMode(ba,l)}catch{}}var $l=Math.clz32?Math.clz32:Rv,wv=Math.log,Uv=Math.LN2;function Rv(l){return l>>>=0,l===0?32:31-(wv(l)/Uv|0)|0}var Ce=256,He=262144,Te=4194304;function Cu(l){var t=l&42;if(t!==0)return t;switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return l&261888;case 262144:case 524288:case 1048576:case 2097152:return l&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function Se(l,t,u){var a=l.pendingLanes;if(a===0)return 0;var e=0,n=l.suspendedLanes,f=l.pingedLanes;l=l.warmLanes;var c=a&134217727;return c!==0?(a=c&~n,a!==0?e=Cu(a):(f&=c,f!==0?e=Cu(f):u||(u=c&~l,u!==0&&(e=Cu(u))))):(c=a&~n,c!==0?e=Cu(c):f!==0?e=Cu(f):u||(u=a&~l,u!==0&&(e=Cu(u)))),e===0?0:t!==0&&t!==e&&(t&n)===0&&(n=e&-e,u=t&-t,n>=u||n===32&&(u&4194048)!==0)?t:e}function Ma(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function xv(l,t){switch(l){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function zi(){var l=Te;return Te<<=1,(Te&62914560)===0&&(Te=4194304),l}function Vn(l){for(var t=[],u=0;31>u;u++)t.push(l);return t}function Oa(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function Xv(l,t,u,a,e,n){var f=l.pendingLanes;l.pendingLanes=u,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=u,l.entangledLanes&=u,l.errorRecoveryDisabledLanes&=u,l.shellSuspendCounter=0;var c=l.entanglements,i=l.expirationTimes,h=l.hiddenUpdates;for(u=f&~u;0"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var qv=/[\n"\\]/g;function At(l){return l.replace(qv,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function _n(l,t,u,a,e,n,f,c){l.name="",f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"?l.type=f:l.removeAttribute("type"),t!=null?f==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+it(t)):l.value!==""+it(t)&&(l.value=""+it(t)):f!=="submit"&&f!=="reset"||l.removeAttribute("value"),t!=null?$n(l,f,it(t)):u!=null?$n(l,f,it(u)):a!=null&&l.removeAttribute("value"),e==null&&n!=null&&(l.defaultChecked=!!n),e!=null&&(l.checked=e&&typeof e!="function"&&typeof e!="symbol"),c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.name=""+it(c):l.removeAttribute("name")}function ri(l,t,u,a,e,n,f,c){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(l.type=n),t!=null||u!=null){if(!(n!=="submit"&&n!=="reset"||t!=null)){Wn(l);return}u=u!=null?""+it(u):"",t=t!=null?""+it(t):u,c||t===l.value||(l.value=t),l.defaultValue=t}a=a??e,a=typeof a!="function"&&typeof a!="symbol"&&!!a,l.checked=c?l.checked:!!a,l.defaultChecked=!!a,f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"&&(l.name=f),Wn(l)}function $n(l,t,u){t==="number"&&Oe(l.ownerDocument)===l||l.defaultValue===""+u||(l.defaultValue=""+u)}function Fu(l,t,u,a){if(l=l.options,t){t={};for(var e=0;e"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),ef=!1;if(jt)try{var ja={};Object.defineProperty(ja,"passive",{get:function(){ef=!0}}),window.addEventListener("test",ja,ja),window.removeEventListener("test",ja,ja)}catch{ef=!1}var _t=null,nf=null,Ye=null;function Li(){if(Ye)return Ye;var l,t=nf,u=t.length,a,e="value"in _t?_t.value:_t.textContent,n=e.length;for(l=0;l=Ua),Fi=" ",Ii=!1;function Pi(l,t){switch(l){case"keyup":return Ds.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function ki(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var Wu=!1;function zs(l,t){switch(l){case"compositionend":return ki(t);case"keypress":return t.which!==32?null:(Ii=!0,Fi);case"textInput":return l=t.data,l===Fi&&Ii?null:l;default:return null}}function Qs(l,t){if(Wu)return l==="compositionend"||!vf&&Pi(l,t)?(l=Li(),Ye=nf=_t=null,Wu=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:u,offset:t-l};l=a}l:{for(;u;){if(u.nextSibling){u=u.nextSibling;break l}u=u.parentNode}u=void 0}u=eA(u)}}function fA(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?fA(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function cA(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=Oe(l.document);t instanceof l.HTMLIFrameElement;){try{var u=typeof t.contentWindow.location.href=="string"}catch{u=!1}if(u)l=t.contentWindow;else break;t=Oe(l.document)}return t}function hf(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}var Ns=jt&&"documentMode"in document&&11>=document.documentMode,_u=null,yf=null,pa=null,mf=!1;function iA(l,t,u){var a=u.window===u?u.document:u.nodeType===9?u:u.ownerDocument;mf||_u==null||_u!==Oe(a)||(a=_u,"selectionStart"in a&&hf(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),pa&&Xa(pa,a)||(pa=a,a=Tn(yf,"onSelect"),0>=f,e-=f,Tt=1<<32-$l(t)+e|u<X?(F=O,O=null):F=O.sibling;var $=y(v,O,d[X],D);if($===null){O===null&&(O=F);break}l&&O&&$.alternate===null&&t(v,O),A=n($,A,X),_===null?Y=$:_.sibling=$,_=$,O=F}if(X===d.length)return u(v,O),P&&wt(v,X),Y;if(O===null){for(;XX?(F=O,O=null):F=O.sibling;var Eu=y(v,O,$.value,D);if(Eu===null){O===null&&(O=F);break}l&&O&&Eu.alternate===null&&t(v,O),A=n(Eu,A,X),_===null?Y=Eu:_.sibling=Eu,_=Eu,O=F}if($.done)return u(v,O),P&&wt(v,X),Y;if(O===null){for(;!$.done;X++,$=d.next())$=E(v,$.value,D),$!==null&&(A=n($,A,X),_===null?Y=$:_.sibling=$,_=$);return P&&wt(v,X),Y}for(O=a(O);!$.done;X++,$=d.next())$=m(O,v,X,$.value,D),$!==null&&(l&&$.alternate!==null&&O.delete($.key===null?X:$.key),A=n($,A,X),_===null?Y=$:_.sibling=$,_=$);return l&&O.forEach(function(kd){return t(v,kd)}),P&&wt(v,X),Y}function il(v,A,d,D){if(typeof d=="object"&&d!==null&&d.type===p&&d.key===null&&(d=d.props.children),typeof d=="object"&&d!==null){switch(d.$$typeof){case Rl:l:{for(var Y=d.key;A!==null;){if(A.key===Y){if(Y=d.type,Y===p){if(A.tag===7){u(v,A.sibling),D=e(A,d.props.children),D.return=v,v=D;break l}}else if(A.elementType===Y||typeof Y=="object"&&Y!==null&&Y.$$typeof===Jl&&ru(Y)===A.type){u(v,A.sibling),D=e(A,d.props),Va(D,d),D.return=v,v=D;break l}u(v,A);break}else t(v,A);A=A.sibling}d.type===p?(D=Ou(d.props.children,v.mode,D,d.key),D.return=v,v=D):(D=Le(d.type,d.key,d.props,null,v.mode,D),Va(D,d),D.return=v,v=D)}return f(v);case rl:l:{for(Y=d.key;A!==null;){if(A.key===Y)if(A.tag===4&&A.stateNode.containerInfo===d.containerInfo&&A.stateNode.implementation===d.implementation){u(v,A.sibling),D=e(A,d.children||[]),D.return=v,v=D;break l}else{u(v,A);break}else t(v,A);A=A.sibling}D=Cf(d,v.mode,D),D.return=v,v=D}return f(v);case Jl:return d=ru(d),il(v,A,d,D)}if(Bt(d))return S(v,A,d,D);if(Kl(d)){if(Y=Kl(d),typeof Y!="function")throw Error(s(150));return d=Y.call(d),j(v,A,d,D)}if(typeof d.then=="function")return il(v,A,Ie(d),D);if(d.$$typeof===wl)return il(v,A,Ze(v,d),D);Pe(v,d)}return typeof d=="string"&&d!==""||typeof d=="number"||typeof d=="bigint"?(d=""+d,A!==null&&A.tag===6?(u(v,A.sibling),D=e(A,d),D.return=v,v=D):(u(v,A),D=Qf(d,v.mode,D),D.return=v,v=D),f(v)):u(v,A)}return function(v,A,d,D){try{qa=0;var Y=il(v,A,d,D);return Aa=null,Y}catch(O){if(O===ia||O===Ve)throw O;var _=tt(29,O,null,v.mode);return _.lanes=D,_.return=v,_}finally{}}}var Uu=YA(!0),GA=YA(!1),au=!1;function wf(l){l.updateQueue={baseState:l.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Uf(l,t){l=l.updateQueue,t.updateQueue===l&&(t.updateQueue={baseState:l.baseState,firstBaseUpdate:l.firstBaseUpdate,lastBaseUpdate:l.lastBaseUpdate,shared:l.shared,callbacks:null})}function eu(l){return{lane:l,tag:0,payload:null,callback:null,next:null}}function nu(l,t,u){var a=l.updateQueue;if(a===null)return null;if(a=a.shared,(ll&2)!==0){var e=a.pending;return e===null?t.next=t:(t.next=e.next,e.next=t),a.pending=t,t=pe(l),yA(l,null,u),t}return Xe(l,a,t,u),pe(l)}function Fa(l,t,u){if(t=t.updateQueue,t!==null&&(t=t.shared,(u&4194048)!==0)){var a=t.lanes;a&=l.pendingLanes,u|=a,t.lanes=u,Ci(l,u)}}function Rf(l,t){var u=l.updateQueue,a=l.alternate;if(a!==null&&(a=a.updateQueue,u===a)){var e=null,n=null;if(u=u.firstBaseUpdate,u!==null){do{var f={lane:u.lane,tag:u.tag,payload:u.payload,callback:null,next:null};n===null?e=n=f:n=n.next=f,u=u.next}while(u!==null);n===null?e=n=t:n=n.next=t}else e=n=t;u={baseState:a.baseState,firstBaseUpdate:e,lastBaseUpdate:n,shared:a.shared,callbacks:a.callbacks},l.updateQueue=u;return}l=u.lastBaseUpdate,l===null?u.firstBaseUpdate=t:l.next=t,u.lastBaseUpdate=t}var xf=!1;function Ia(){if(xf){var l=ca;if(l!==null)throw l}}function Pa(l,t,u,a){xf=!1;var e=l.updateQueue;au=!1;var n=e.firstBaseUpdate,f=e.lastBaseUpdate,c=e.shared.pending;if(c!==null){e.shared.pending=null;var i=c,h=i.next;i.next=null,f===null?n=h:f.next=h,f=i;var o=l.alternate;o!==null&&(o=o.updateQueue,c=o.lastBaseUpdate,c!==f&&(c===null?o.firstBaseUpdate=h:c.next=h,o.lastBaseUpdate=i))}if(n!==null){var E=e.baseState;f=0,o=h=i=null,c=n;do{var y=c.lane&-536870913,m=y!==c.lane;if(m?(V&y)===y:(a&y)===y){y!==0&&y===fa&&(xf=!0),o!==null&&(o=o.next={lane:0,tag:c.tag,payload:c.payload,callback:null,next:null});l:{var S=l,j=c;y=t;var il=u;switch(j.tag){case 1:if(S=j.payload,typeof S=="function"){E=S.call(il,E,y);break l}E=S;break l;case 3:S.flags=S.flags&-65537|128;case 0:if(S=j.payload,y=typeof S=="function"?S.call(il,E,y):S,y==null)break l;E=G({},E,y);break l;case 2:au=!0}}y=c.callback,y!==null&&(l.flags|=64,m&&(l.flags|=8192),m=e.callbacks,m===null?e.callbacks=[y]:m.push(y))}else m={lane:y,tag:c.tag,payload:c.payload,callback:c.callback,next:null},o===null?(h=o=m,i=E):o=o.next=m,f|=y;if(c=c.next,c===null){if(c=e.shared.pending,c===null)break;m=c,c=m.next,m.next=null,e.lastBaseUpdate=m,e.shared.pending=null}}while(!0);o===null&&(i=E),e.baseState=i,e.firstBaseUpdate=h,e.lastBaseUpdate=o,n===null&&(e.shared.lanes=0),gu|=f,l.lanes=f,l.memoizedState=E}}function jA(l,t){if(typeof l!="function")throw Error(s(191,l));l.call(t)}function rA(l,t){var u=l.callbacks;if(u!==null)for(l.callbacks=null,l=0;ln?n:8;var f=B.T,c={};B.T=c,ac(l,!1,t,u);try{var i=e(),h=B.S;if(h!==null&&h(c,i),i!==null&&typeof i=="object"&&typeof i.then=="function"){var o=Xs(i,a);_a(l,t,o,ft(l))}else _a(l,t,a,ft(l))}catch(E){_a(l,t,{then:function(){},status:"rejected",reason:E},ft())}finally{H.p=n,f!==null&&c.types!==null&&(f.types=c.types),B.T=f}}function qs(){}function tc(l,t,u,a){if(l.tag!==5)throw Error(s(476));var e=s0(l).queue;v0(l,e,t,w,u===null?qs:function(){return d0(l),u(a)})}function s0(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:w,baseState:w,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Xt,lastRenderedState:w},next:null};var u={};return t.next={memoizedState:u,baseState:u,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Xt,lastRenderedState:u},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function d0(l){var t=s0(l);t.next===null&&(t=l.alternate.memoizedState),_a(l,t.next.queue,{},ft())}function uc(){return Yl(ye)}function h0(){return El().memoizedState}function y0(){return El().memoizedState}function Vs(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var u=ft();l=eu(u);var a=nu(t,l,u);a!==null&&(kl(a,t,u),Fa(a,t,u)),t={cache:Yf()},l.payload=t;return}t=t.return}}function Fs(l,t,u){var a=ft();u={lane:a,revertLane:0,gesture:null,action:u,hasEagerState:!1,eagerState:null,next:null},nn(l)?o0(t,u):(u=Ef(l,t,u,a),u!==null&&(kl(u,l,a),B0(u,t,a)))}function m0(l,t,u){var a=ft();_a(l,t,u,a)}function _a(l,t,u,a){var e={lane:a,revertLane:0,gesture:null,action:u,hasEagerState:!1,eagerState:null,next:null};if(nn(l))o0(t,e);else{var n=l.alternate;if(l.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var f=t.lastRenderedState,c=n(f,u);if(e.hasEagerState=!0,e.eagerState=c,lt(c,f))return Xe(l,t,e,0),gl===null&&xe(),!1}catch{}finally{}if(u=Ef(l,t,e,a),u!==null)return kl(u,l,a),B0(u,t,a),!0}return!1}function ac(l,t,u,a){if(a={lane:2,revertLane:wc(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},nn(l)){if(t)throw Error(s(479))}else t=Ef(l,u,a,2),t!==null&&kl(t,l,2)}function nn(l){var t=l.alternate;return l===x||t!==null&&t===x}function o0(l,t){va=_e=!0;var u=l.pending;u===null?t.next=t:(t.next=u.next,u.next=t),l.pending=t}function B0(l,t,u){if((u&4194048)!==0){var a=t.lanes;a&=l.pendingLanes,u|=a,t.lanes=u,Ci(l,u)}}var $a={readContext:Yl,use:tn,useCallback:ml,useContext:ml,useEffect:ml,useImperativeHandle:ml,useLayoutEffect:ml,useInsertionEffect:ml,useMemo:ml,useReducer:ml,useRef:ml,useState:ml,useDebugValue:ml,useDeferredValue:ml,useTransition:ml,useSyncExternalStore:ml,useId:ml,useHostTransitionStatus:ml,useFormState:ml,useActionState:ml,useOptimistic:ml,useMemoCache:ml,useCacheRefresh:ml};$a.useEffectEvent=ml;var D0={readContext:Yl,use:tn,useCallback:function(l,t){return pl().memoizedState=[l,t===void 0?null:t],l},useContext:Yl,useEffect:u0,useImperativeHandle:function(l,t,u){u=u!=null?u.concat([l]):null,an(4194308,4,f0.bind(null,t,l),u)},useLayoutEffect:function(l,t){return an(4194308,4,l,t)},useInsertionEffect:function(l,t){an(4,2,l,t)},useMemo:function(l,t){var u=pl();t=t===void 0?null:t;var a=l();if(Ru){kt(!0);try{l()}finally{kt(!1)}}return u.memoizedState=[a,t],a},useReducer:function(l,t,u){var a=pl();if(u!==void 0){var e=u(t);if(Ru){kt(!0);try{u(t)}finally{kt(!1)}}}else e=t;return a.memoizedState=a.baseState=e,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:e},a.queue=l,l=l.dispatch=Fs.bind(null,x,l),[a.memoizedState,l]},useRef:function(l){var t=pl();return l={current:l},t.memoizedState=l},useState:function(l){l=kf(l);var t=l.queue,u=m0.bind(null,x,t);return t.dispatch=u,[l.memoizedState,u]},useDebugValue:$f,useDeferredValue:function(l,t){var u=pl();return lc(u,l,t)},useTransition:function(){var l=kf(!1);return l=v0.bind(null,x,l.queue,!0,!1),pl().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,u){var a=x,e=pl();if(P){if(u===void 0)throw Error(s(407));u=u()}else{if(u=t(),gl===null)throw Error(s(349));(V&127)!==0||pA(a,t,u)}e.memoizedState=u;var n={value:u,getSnapshot:t};return e.queue=n,u0(JA.bind(null,a,n,l),[l]),a.flags|=2048,da(9,{destroy:void 0},LA.bind(null,a,n,u,t),null),u},useId:function(){var l=pl(),t=gl.identifierPrefix;if(P){var u=St,a=Tt;u=(a&~(1<<32-$l(a)-1)).toString(32)+u,t="_"+t+"R_"+u,u=$e++,0<\/script>",n=n.removeChild(n.firstChild);break;case"select":n=typeof a.is=="string"?f.createElement("select",{is:a.is}):f.createElement("select"),a.multiple?n.multiple=!0:a.size&&(n.size=a.size);break;default:n=typeof a.is=="string"?f.createElement(e,{is:a.is}):f.createElement(e)}}n[Ol]=t,n[Zl]=a;l:for(f=t.child;f!==null;){if(f.tag===5||f.tag===6)n.appendChild(f.stateNode);else if(f.tag!==4&&f.tag!==27&&f.child!==null){f.child.return=f,f=f.child;continue}if(f===t)break l;for(;f.sibling===null;){if(f.return===null||f.return===t)break l;f=f.return}f.sibling.return=f.return,f=f.sibling}t.stateNode=n;l:switch(jl(n,e,a),e){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break l;case"img":a=!0;break l;default:a=!1}a&&Lt(t)}}return dl(t),oc(t,t.type,l===null?null:l.memoizedProps,t.pendingProps,u),null;case 6:if(l&&t.stateNode!=null)l.memoizedProps!==a&&Lt(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(s(166));if(l=L.current,ea(t)){if(l=t.stateNode,u=t.memoizedProps,a=null,e=Nl,e!==null)switch(e.tag){case 27:case 5:a=e.memoizedProps}l[Ol]=t,l=!!(l.nodeValue===u||a!==null&&a.suppressHydrationWarning===!0||xg(l.nodeValue,u)),l||tu(t,!0)}else l=Sn(l).createTextNode(a),l[Ol]=t,t.stateNode=l}return dl(t),null;case 31:if(u=t.memoizedState,l===null||l.memoizedState!==null){if(a=ea(t),u!==null){if(l===null){if(!a)throw Error(s(318));if(l=t.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(s(557));l[Ol]=t}else Nu(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;dl(t),l=!1}else u=bf(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=u),l=!0;if(!l)return t.flags&256?(at(t),t):(at(t),null);if((t.flags&128)!==0)throw Error(s(558))}return dl(t),null;case 13:if(a=t.memoizedState,l===null||l.memoizedState!==null&&l.memoizedState.dehydrated!==null){if(e=ea(t),a!==null&&a.dehydrated!==null){if(l===null){if(!e)throw Error(s(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(s(317));e[Ol]=t}else Nu(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;dl(t),e=!1}else e=bf(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=e),e=!0;if(!e)return t.flags&256?(at(t),t):(at(t),null)}return at(t),(t.flags&128)!==0?(t.lanes=u,t):(u=a!==null,l=l!==null&&l.memoizedState!==null,u&&(a=t.child,e=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(e=a.alternate.memoizedState.cachePool.pool),n=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(n=a.memoizedState.cachePool.pool),n!==e&&(a.flags|=2048)),u!==l&&u&&(t.child.flags|=8192),vn(t,t.updateQueue),dl(t),null);case 4:return Bl(),l===null&&Xc(t.stateNode.containerInfo),dl(t),null;case 10:return Rt(t.type),dl(t),null;case 19:if(z(Dl),a=t.memoizedState,a===null)return dl(t),null;if(e=(t.flags&128)!==0,n=a.rendering,n===null)if(e)te(a,!1);else{if(ol!==0||l!==null&&(l.flags&128)!==0)for(l=t.child;l!==null;){if(n=We(l),n!==null){for(t.flags|=128,te(a,!1),l=n.updateQueue,t.updateQueue=l,vn(t,l),t.subtreeFlags=0,l=u,u=t.child;u!==null;)mA(u,l),u=u.sibling;return T(Dl,Dl.current&1|2),P&&wt(t,a.treeForkCount),t.child}l=l.sibling}a.tail!==null&&Wl()>mn&&(t.flags|=128,e=!0,te(a,!1),t.lanes=4194304)}else{if(!e)if(l=We(n),l!==null){if(t.flags|=128,e=!0,l=l.updateQueue,t.updateQueue=l,vn(t,l),te(a,!0),a.tail===null&&a.tailMode==="hidden"&&!n.alternate&&!P)return dl(t),null}else 2*Wl()-a.renderingStartTime>mn&&u!==536870912&&(t.flags|=128,e=!0,te(a,!1),t.lanes=4194304);a.isBackwards?(n.sibling=t.child,t.child=n):(l=a.last,l!==null?l.sibling=n:t.child=n,a.last=n)}return a.tail!==null?(l=a.tail,a.rendering=l,a.tail=l.sibling,a.renderingStartTime=Wl(),l.sibling=null,u=Dl.current,T(Dl,e?u&1|2:u&1),P&&wt(t,a.treeForkCount),l):(dl(t),null);case 22:case 23:return at(t),pf(),a=t.memoizedState!==null,l!==null?l.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(u&536870912)!==0&&(t.flags&128)===0&&(dl(t),t.subtreeFlags&6&&(t.flags|=8192)):dl(t),u=t.updateQueue,u!==null&&vn(t,u.retryQueue),u=null,l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(u=l.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==u&&(t.flags|=2048),l!==null&&z(ju),null;case 24:return u=null,l!==null&&(u=l.memoizedState.cache),t.memoizedState.cache!==u&&(t.flags|=2048),Rt(Ql),dl(t),null;case 25:return null;case 30:return null}throw Error(s(156,t.tag))}function _s(l,t){switch(Tf(t),t.tag){case 1:return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 3:return Rt(Ql),Bl(),l=t.flags,(l&65536)!==0&&(l&128)===0?(t.flags=l&-65537|128,t):null;case 26:case 27:case 5:return ze(t),null;case 31:if(t.memoizedState!==null){if(at(t),t.alternate===null)throw Error(s(340));Nu()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 13:if(at(t),l=t.memoizedState,l!==null&&l.dehydrated!==null){if(t.alternate===null)throw Error(s(340));Nu()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 19:return z(Dl),null;case 4:return Bl(),null;case 10:return Rt(t.type),null;case 22:case 23:return at(t),pf(),l!==null&&z(ju),l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 24:return Rt(Ql),null;case 25:return null;default:return null}}function K0(l,t){switch(Tf(t),t.tag){case 3:Rt(Ql),Bl();break;case 26:case 27:case 5:ze(t);break;case 4:Bl();break;case 31:t.memoizedState!==null&&at(t);break;case 13:at(t);break;case 19:z(Dl);break;case 10:Rt(t.type);break;case 22:case 23:at(t),pf(),l!==null&&z(ju);break;case 24:Rt(Ql)}}function ue(l,t){try{var u=t.updateQueue,a=u!==null?u.lastEffect:null;if(a!==null){var e=a.next;u=e;do{if((u.tag&l)===l){a=void 0;var n=u.create,f=u.inst;a=n(),f.destroy=a}u=u.next}while(u!==e)}}catch(c){al(t,t.return,c)}}function iu(l,t,u){try{var a=t.updateQueue,e=a!==null?a.lastEffect:null;if(e!==null){var n=e.next;a=n;do{if((a.tag&l)===l){var f=a.inst,c=f.destroy;if(c!==void 0){f.destroy=void 0,e=t;var i=u,h=c;try{h()}catch(o){al(e,i,o)}}}a=a.next}while(a!==n)}}catch(o){al(t,t.return,o)}}function Z0(l){var t=l.updateQueue;if(t!==null){var u=l.stateNode;try{rA(t,u)}catch(a){al(l,l.return,a)}}}function q0(l,t,u){u.props=xu(l.type,l.memoizedProps),u.state=l.memoizedState;try{u.componentWillUnmount()}catch(a){al(l,t,a)}}function ae(l,t){try{var u=l.ref;if(u!==null){switch(l.tag){case 26:case 27:case 5:var a=l.stateNode;break;case 30:a=l.stateNode;break;default:a=l.stateNode}typeof u=="function"?l.refCleanup=u(a):u.current=a}}catch(e){al(l,t,e)}}function bt(l,t){var u=l.ref,a=l.refCleanup;if(u!==null)if(typeof a=="function")try{a()}catch(e){al(l,t,e)}finally{l.refCleanup=null,l=l.alternate,l!=null&&(l.refCleanup=null)}else if(typeof u=="function")try{u(null)}catch(e){al(l,t,e)}else u.current=null}function V0(l){var t=l.type,u=l.memoizedProps,a=l.stateNode;try{l:switch(t){case"button":case"input":case"select":case"textarea":u.autoFocus&&a.focus();break l;case"img":u.src?a.src=u.src:u.srcSet&&(a.srcset=u.srcSet)}}catch(e){al(l,l.return,e)}}function Bc(l,t,u){try{var a=l.stateNode;Ed(a,l.type,u,t),a[Zl]=t}catch(e){al(l,l.return,e)}}function F0(l){return l.tag===5||l.tag===3||l.tag===26||l.tag===27&&yu(l.type)||l.tag===4}function Dc(l){l:for(;;){for(;l.sibling===null;){if(l.return===null||F0(l.return))return null;l=l.return}for(l.sibling.return=l.return,l=l.sibling;l.tag!==5&&l.tag!==6&&l.tag!==18;){if(l.tag===27&&yu(l.type)||l.flags&2||l.child===null||l.tag===4)continue l;l.child.return=l,l=l.child}if(!(l.flags&2))return l.stateNode}}function Ec(l,t,u){var a=l.tag;if(a===5||a===6)l=l.stateNode,t?(u.nodeType===9?u.body:u.nodeName==="HTML"?u.ownerDocument.body:u).insertBefore(l,t):(t=u.nodeType===9?u.body:u.nodeName==="HTML"?u.ownerDocument.body:u,t.appendChild(l),u=u._reactRootContainer,u!=null||t.onclick!==null||(t.onclick=Gt));else if(a!==4&&(a===27&&yu(l.type)&&(u=l.stateNode,t=null),l=l.child,l!==null))for(Ec(l,t,u),l=l.sibling;l!==null;)Ec(l,t,u),l=l.sibling}function sn(l,t,u){var a=l.tag;if(a===5||a===6)l=l.stateNode,t?u.insertBefore(l,t):u.appendChild(l);else if(a!==4&&(a===27&&yu(l.type)&&(u=l.stateNode),l=l.child,l!==null))for(sn(l,t,u),l=l.sibling;l!==null;)sn(l,t,u),l=l.sibling}function I0(l){var t=l.stateNode,u=l.memoizedProps;try{for(var a=l.type,e=t.attributes;e.length;)t.removeAttributeNode(e[0]);jl(t,a,u),t[Ol]=l,t[Zl]=u}catch(n){al(l,l.return,n)}}var Jt=!1,Tl=!1,zc=!1,P0=typeof WeakSet=="function"?WeakSet:Set,Ml=null;function $s(l,t){if(l=l.containerInfo,Jc=jn,l=cA(l),hf(l)){if("selectionStart"in l)var u={start:l.selectionStart,end:l.selectionEnd};else l:{u=(u=l.ownerDocument)&&u.defaultView||window;var a=u.getSelection&&u.getSelection();if(a&&a.rangeCount!==0){u=a.anchorNode;var e=a.anchorOffset,n=a.focusNode;a=a.focusOffset;try{u.nodeType,n.nodeType}catch{u=null;break l}var f=0,c=-1,i=-1,h=0,o=0,E=l,y=null;t:for(;;){for(var m;E!==u||e!==0&&E.nodeType!==3||(c=f+e),E!==n||a!==0&&E.nodeType!==3||(i=f+a),E.nodeType===3&&(f+=E.nodeValue.length),(m=E.firstChild)!==null;)y=E,E=m;for(;;){if(E===l)break t;if(y===u&&++h===e&&(c=f),y===n&&++o===a&&(i=f),(m=E.nextSibling)!==null)break;E=y,y=E.parentNode}E=m}u=c===-1||i===-1?null:{start:c,end:i}}else u=null}u=u||{start:0,end:0}}else u=null;for(Kc={focusedElem:l,selectionRange:u},jn=!1,Ml=t;Ml!==null;)if(t=Ml,l=t.child,(t.subtreeFlags&1028)!==0&&l!==null)l.return=t,Ml=l;else for(;Ml!==null;){switch(t=Ml,n=t.alternate,l=t.flags,t.tag){case 0:if((l&4)!==0&&(l=t.updateQueue,l=l!==null?l.events:null,l!==null))for(u=0;u title"))),jl(n,a,u),n[Ol]=l,bl(n),a=n;break l;case"link":var f=tv("link","href",e).get(a+(u.href||""));if(f){for(var c=0;cil&&(f=il,il=j,j=f);var v=nA(c,j),A=nA(c,il);if(v&&A&&(m.rangeCount!==1||m.anchorNode!==v.node||m.anchorOffset!==v.offset||m.focusNode!==A.node||m.focusOffset!==A.offset)){var d=E.createRange();d.setStart(v.node,v.offset),m.removeAllRanges(),j>il?(m.addRange(d),m.extend(A.node,A.offset)):(d.setEnd(A.node,A.offset),m.addRange(d))}}}}for(E=[],m=c;m=m.parentNode;)m.nodeType===1&&E.push({element:m,left:m.scrollLeft,top:m.scrollTop});for(typeof c.focus=="function"&&c.focus(),c=0;cu?32:u,B.T=null,u=Mc,Mc=null;var n=su,f=Ft;if(Sl=0,Ba=su=null,Ft=0,(ll&6)!==0)throw Error(s(331));var c=ll;if(ll|=4,fg(n.current),ag(n,n.current,f,u),ll=c,Ae(0,!1),_l&&typeof _l.onPostCommitFiberRoot=="function")try{_l.onPostCommitFiberRoot(ba,n)}catch{}return!0}finally{H.p=e,B.T=a,Hg(l,t)}}function Sg(l,t,u){t=vt(u,t),t=cc(l.stateNode,t,2),l=nu(l,t,2),l!==null&&(Oa(l,2),Mt(l))}function al(l,t,u){if(l.tag===3)Sg(l,l,u);else for(;t!==null;){if(t.tag===3){Sg(t,l,u);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(vu===null||!vu.has(a))){l=vt(u,l),u=b0(2),a=nu(t,u,2),a!==null&&(M0(u,a,t,l),Oa(a,2),Mt(a));break}}t=t.return}}function Gc(l,t,u){var a=l.pingCache;if(a===null){a=l.pingCache=new ud;var e=new Set;a.set(t,e)}else e=a.get(t),e===void 0&&(e=new Set,a.set(t,e));e.has(u)||(Hc=!0,e.add(u),l=cd.bind(null,l,t,u),t.then(l,l))}function cd(l,t,u){var a=l.pingCache;a!==null&&a.delete(t),l.pingedLanes|=l.suspendedLanes&u,l.warmLanes&=~u,gl===l&&(V&u)===u&&(ol===4||ol===3&&(V&62914560)===V&&300>Wl()-yn?(ll&2)===0&&Da(l,0):Tc|=u,oa===V&&(oa=0)),Mt(l)}function bg(l,t){t===0&&(t=zi()),l=Mu(l,t),l!==null&&(Oa(l,t),Mt(l))}function id(l){var t=l.memoizedState,u=0;t!==null&&(u=t.retryLane),bg(l,u)}function Ad(l,t){var u=0;switch(l.tag){case 31:case 13:var a=l.stateNode,e=l.memoizedState;e!==null&&(u=e.retryLane);break;case 19:a=l.stateNode;break;case 22:a=l.stateNode._retryCache;break;default:throw Error(s(314))}a!==null&&a.delete(t),bg(l,u)}function gd(l,t){return Zn(l,t)}var Qn=null,za=null,jc=!1,Cn=!1,rc=!1,hu=0;function Mt(l){l!==za&&l.next===null&&(za===null?Qn=za=l:za=za.next=l),Cn=!0,jc||(jc=!0,sd())}function Ae(l,t){if(!rc&&Cn){rc=!0;do for(var u=!1,a=Qn;a!==null;){if(l!==0){var e=a.pendingLanes;if(e===0)var n=0;else{var f=a.suspendedLanes,c=a.pingedLanes;n=(1<<31-$l(42|l)+1)-1,n&=e&~(f&~c),n=n&201326741?n&201326741|1:n?n|2:0}n!==0&&(u=!0,Yg(a,n))}else n=V,n=Se(a,a===gl?n:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(n&3)===0||Ma(a,n)||(u=!0,Yg(a,n));a=a.next}while(u);rc=!1}}function vd(){Mg()}function Mg(){Cn=jc=!1;var l=0;hu!==0&&Qd()&&(l=hu);for(var t=Wl(),u=null,a=Qn;a!==null;){var e=a.next,n=Og(a,t);n===0?(a.next=null,u===null?Qn=e:u.next=e,e===null&&(za=u)):(u=a,(l!==0||(n&3)!==0)&&(Cn=!0)),a=e}Sl!==0&&Sl!==5||Ae(l),hu!==0&&(hu=0)}function Og(l,t){for(var u=l.suspendedLanes,a=l.pingedLanes,e=l.expirationTimes,n=l.pendingLanes&-62914561;0c)break;var o=i.transferSize,E=i.initiatorType;o&&Xg(E)&&(i=i.responseEnd,f+=o*(i"u"?null:document;function Wg(l,t,u){var a=Qa;if(a&&typeof t=="string"&&t){var e=At(t);e='link[rel="'+l+'"][href="'+e+'"]',typeof u=="string"&&(e+='[crossorigin="'+u+'"]'),kg.has(e)||(kg.add(e),l={rel:l,crossOrigin:u,href:t},a.querySelector(e)===null&&(t=a.createElement("link"),jl(t,"link",l),bl(t),a.head.appendChild(t)))}}function Yd(l){It.D(l),Wg("dns-prefetch",l,null)}function Gd(l,t){It.C(l,t),Wg("preconnect",l,t)}function jd(l,t,u){It.L(l,t,u);var a=Qa;if(a&&l&&t){var e='link[rel="preload"][as="'+At(t)+'"]';t==="image"&&u&&u.imageSrcSet?(e+='[imagesrcset="'+At(u.imageSrcSet)+'"]',typeof u.imageSizes=="string"&&(e+='[imagesizes="'+At(u.imageSizes)+'"]')):e+='[href="'+At(l)+'"]';var n=e;switch(t){case"style":n=Ca(l);break;case"script":n=Ha(l)}ot.has(n)||(l=G({rel:"preload",href:t==="image"&&u&&u.imageSrcSet?void 0:l,as:t},u),ot.set(n,l),a.querySelector(e)!==null||t==="style"&&a.querySelector(de(n))||t==="script"&&a.querySelector(he(n))||(t=a.createElement("link"),jl(t,"link",l),bl(t),a.head.appendChild(t)))}}function rd(l,t){It.m(l,t);var u=Qa;if(u&&l){var a=t&&typeof t.as=="string"?t.as:"script",e='link[rel="modulepreload"][as="'+At(a)+'"][href="'+At(l)+'"]',n=e;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":n=Ha(l)}if(!ot.has(n)&&(l=G({rel:"modulepreload",href:l},t),ot.set(n,l),u.querySelector(e)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(u.querySelector(he(n)))return}a=u.createElement("link"),jl(a,"link",l),bl(a),u.head.appendChild(a)}}}function wd(l,t,u){It.S(l,t,u);var a=Qa;if(a&&l){var e=qu(a).hoistableStyles,n=Ca(l);t=t||"default";var f=e.get(n);if(!f){var c={loading:0,preload:null};if(f=a.querySelector(de(n)))c.loading=5;else{l=G({rel:"stylesheet",href:l,"data-precedence":t},u),(u=ot.get(n))&&kc(l,u);var i=f=a.createElement("link");bl(i),jl(i,"link",l),i._p=new Promise(function(h,o){i.onload=h,i.onerror=o}),i.addEventListener("load",function(){c.loading|=1}),i.addEventListener("error",function(){c.loading|=2}),c.loading|=4,Mn(f,t,a)}f={type:"stylesheet",instance:f,count:1,state:c},e.set(n,f)}}}function Ud(l,t){It.X(l,t);var u=Qa;if(u&&l){var a=qu(u).hoistableScripts,e=Ha(l),n=a.get(e);n||(n=u.querySelector(he(e)),n||(l=G({src:l,async:!0},t),(t=ot.get(e))&&Wc(l,t),n=u.createElement("script"),bl(n),jl(n,"link",l),u.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(e,n))}}function Rd(l,t){It.M(l,t);var u=Qa;if(u&&l){var a=qu(u).hoistableScripts,e=Ha(l),n=a.get(e);n||(n=u.querySelector(he(e)),n||(l=G({src:l,async:!0,type:"module"},t),(t=ot.get(e))&&Wc(l,t),n=u.createElement("script"),bl(n),jl(n,"link",l),u.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(e,n))}}function _g(l,t,u,a){var e=(e=L.current)?bn(e):null;if(!e)throw Error(s(446));switch(l){case"meta":case"title":return null;case"style":return typeof u.precedence=="string"&&typeof u.href=="string"?(t=Ca(u.href),u=qu(e).hoistableStyles,a=u.get(t),a||(a={type:"style",instance:null,count:0,state:null},u.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(u.rel==="stylesheet"&&typeof u.href=="string"&&typeof u.precedence=="string"){l=Ca(u.href);var n=qu(e).hoistableStyles,f=n.get(l);if(f||(e=e.ownerDocument||e,f={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},n.set(l,f),(n=e.querySelector(de(l)))&&!n._p&&(f.instance=n,f.state.loading=5),ot.has(l)||(u={rel:"preload",as:"style",href:u.href,crossOrigin:u.crossOrigin,integrity:u.integrity,media:u.media,hrefLang:u.hrefLang,referrerPolicy:u.referrerPolicy},ot.set(l,u),n||xd(e,l,u,f.state))),t&&a===null)throw Error(s(528,""));return f}if(t&&a!==null)throw Error(s(529,""));return null;case"script":return t=u.async,u=u.src,typeof u=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Ha(u),u=qu(e).hoistableScripts,a=u.get(t),a||(a={type:"script",instance:null,count:0,state:null},u.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(s(444,l))}}function Ca(l){return'href="'+At(l)+'"'}function de(l){return'link[rel="stylesheet"]['+l+"]"}function $g(l){return G({},l,{"data-precedence":l.precedence,precedence:null})}function xd(l,t,u,a){l.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=l.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),jl(t,"link",u),bl(t),l.head.appendChild(t))}function Ha(l){return'[src="'+At(l)+'"]'}function he(l){return"script[async]"+l}function lv(l,t,u){if(t.count++,t.instance===null)switch(t.type){case"style":var a=l.querySelector('style[data-href~="'+At(u.href)+'"]');if(a)return t.instance=a,bl(a),a;var e=G({},u,{"data-href":u.href,"data-precedence":u.precedence,href:null,precedence:null});return a=(l.ownerDocument||l).createElement("style"),bl(a),jl(a,"style",e),Mn(a,u.precedence,l),t.instance=a;case"stylesheet":e=Ca(u.href);var n=l.querySelector(de(e));if(n)return t.state.loading|=4,t.instance=n,bl(n),n;a=$g(u),(e=ot.get(e))&&kc(a,e),n=(l.ownerDocument||l).createElement("link"),bl(n);var f=n;return f._p=new Promise(function(c,i){f.onload=c,f.onerror=i}),jl(n,"link",a),t.state.loading|=4,Mn(n,u.precedence,l),t.instance=n;case"script":return n=Ha(u.src),(e=l.querySelector(he(n)))?(t.instance=e,bl(e),e):(a=u,(e=ot.get(n))&&(a=G({},u),Wc(a,e)),l=l.ownerDocument||l,e=l.createElement("script"),bl(e),jl(e,"link",a),l.head.appendChild(e),t.instance=e);case"void":return null;default:throw Error(s(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,Mn(a,u.precedence,l));return t.instance}function Mn(l,t,u){for(var a=u.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),e=a.length?a[a.length-1]:null,n=e,f=0;f title"):null)}function Xd(l,t,u){if(u===1||t.itemProp!=null)return!1;switch(l){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return l=t.disabled,typeof t.precedence=="string"&&l==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function av(l){return!(l.type==="stylesheet"&&(l.state.loading&3)===0)}function pd(l,t,u,a){if(u.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(u.state.loading&4)===0){if(u.instance===null){var e=Ca(a.href),n=t.querySelector(de(e));if(n){t=n._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(l.count++,l=Nn.bind(l),t.then(l,l)),u.state.loading|=4,u.instance=n,bl(n);return}n=t.ownerDocument||t,a=$g(a),(e=ot.get(e))&&kc(a,e),n=n.createElement("link"),bl(n);var f=n;f._p=new Promise(function(c,i){f.onload=c,f.onerror=i}),jl(n,"link",a),u.instance=n}l.stylesheets===null&&(l.stylesheets=new Map),l.stylesheets.set(u,t),(t=u.state.preload)&&(u.state.loading&3)===0&&(l.count++,u=Nn.bind(l),t.addEventListener("load",u),t.addEventListener("error",u))}}var _c=0;function Ld(l,t){return l.stylesheets&&l.count===0&&Gn(l,l.stylesheets),0_c?50:800)+t);return l.unsuspend=u,function(){l.unsuspend=null,clearTimeout(a),clearTimeout(e)}}:null}function Nn(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Gn(this,this.stylesheets);else if(this.unsuspend){var l=this.unsuspend;this.unsuspend=null,l()}}}var Yn=null;function Gn(l,t){l.stylesheets=null,l.unsuspend!==null&&(l.count++,Yn=new Map,t.forEach(Jd,l),Yn=null,Nn.call(l))}function Jd(l,t){if(!(t.state.loading&4)){var u=Yn.get(l);if(u)var a=u.get(null);else{u=new Map,Yn.set(l,u);for(var e=l.querySelectorAll("link[data-precedence],style[data-precedence]"),n=0;n"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(C)}catch(Z){console.error(Z)}}return C(),ci.exports=eh(),ci.exports}var fh=nh();async function ch(){if(window.__CUBIT_DATA__)return window.__CUBIT_DATA__;try{const C=await fetch("./data.json");if(C.ok)return await C.json()}catch{}return null}function ih(C){const Z=C.indexOf("/");return Z>=0?C.slice(0,Z):""}function vi(C){return C>=1e9?`${(C/1e9).toFixed(2)} s`:C>=1e6?`${(C/1e6).toFixed(2)} ms`:C>=1e3?`${(C/1e3).toFixed(2)} µs`:`${C.toFixed(1)} ns`}const si=720,di=240,Ot={top:16,right:16,bottom:28,left:64};function bv({series:C,label:Z}){const b=C.points,s=si-Ot.left-Ot.right,r=di-Ot.top-Ot.bottom;if(b.length===0)return k.jsx("div",{className:"chart-empty",children:"no data"});const W=b.map(p=>p.lower),yl=b.map(p=>p.upper);let zl=Math.min(...W),N=Math.max(...yl);zl===N&&(zl*=.95,N*=1.05);const Q=N-zl||1,q=p=>Ot.left+(b.length===1?s/2:p/(b.length-1)*s),G=p=>Ot.top+r-(p-zl)/Q*r,vl=b.map((p,el)=>`${q(el)},${G(p.value)}`).join(" "),Rl=b.map((p,el)=>`${q(el)},${G(p.upper)}`).join(" ")+" "+b.map((p,el)=>`${q(b.length-1-el)},${G(b[b.length-1-el].lower)}`).join(" "),rl=b[b.length-1];return k.jsxs("figure",{className:"chart",children:[k.jsxs("figcaption",{children:[k.jsx("span",{className:"chart-id",children:Z??C.id}),k.jsx("span",{className:"chart-last",children:vi(rl.value)})]}),k.jsxs("svg",{viewBox:`0 0 ${si} ${di}`,role:"img","aria-label":`${C.id} over time`,children:[[0,.25,.5,.75,1].map(p=>{const el=Ot.top+r*p,xl=N-Q*p;return k.jsxs("g",{children:[k.jsx("line",{className:"grid",x1:Ot.left,y1:el,x2:si-Ot.right,y2:el}),k.jsx("text",{className:"ytick",x:Ot.left-8,y:el+4,textAnchor:"end",children:vi(xl)})]},p)}),k.jsx("polygon",{className:"band",points:Rl}),k.jsx("polyline",{className:"line",points:vl,fill:"none"}),b.map((p,el)=>k.jsx("circle",{className:"dot",cx:q(el),cy:G(p.value),r:3,children:k.jsxs("title",{children:[p.shortCommit," · ",vi(p.value)," (",new Date(p.timestamp).toISOString().slice(0,10),")"]})},p.commit+el)),b.map((p,el)=>el===0||el===b.length-1||b.length<=6?k.jsx("text",{className:"xtick",x:q(el),y:di-8,textAnchor:"middle",children:p.shortCommit},"x"+el):null)]})]})}const Ah="data:image/png;base64,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";function gh(C){const Z=new Map;for(const b of C){const s=ih(b.id),r=Z.get(s);r?r.push(b):Z.set(s,[b])}return[...Z.entries()].map(([b,s])=>({name:b,series:s})).sort((b,s)=>b.name===""!=(s.name==="")?b.name===""?1:-1:b.names.name?1:0)}function vh(C,Z){return Z&&C.startsWith(Z+"/")?C.slice(Z.length+1):C}function sh(){const[C,Z]=hi.useState(void 0);if(hi.useEffect(()=>{ch().then(Z)},[]),C===void 0)return k.jsx("main",{className:"wrap",children:"Loading…"});if(C===null||C.benchmarks.length===0)return k.jsxs("main",{className:"wrap",children:[k.jsx("h1",{children:"cubit"}),k.jsx("p",{className:"muted",children:"No benchmark history yet. Record a run on the default branch to start the trend."})]});const b=gh(C.benchmarks);return k.jsxs("main",{className:"wrap",children:[k.jsxs("header",{children:[k.jsxs("h1",{children:[k.jsx("img",{className:"logo",src:Ah,alt:""})," cubit — performance"]}),k.jsxs("p",{className:"muted",children:[C.benchmarks.length," benchmarks · ",b.length," group",b.length===1?"":"s"," · branch ",k.jsx("code",{children:C.branch})," · generated ",new Date(C.generatedAt).toISOString().replace("T"," ").slice(0,16)]})]}),b.length<=1?k.jsx("div",{className:"grid",children:C.benchmarks.map(s=>k.jsx(bv,{series:s},s.id))}):b.map(s=>k.jsxs("details",{className:"group",open:!0,children:[k.jsxs("summary",{children:[k.jsx("span",{className:"group-name",children:s.name||"ungrouped"}),k.jsxs("span",{className:"group-count",children:[s.series.length," benchmark",s.series.length===1?"":"s"]})]}),k.jsx("div",{className:"grid",children:s.series.map(r=>k.jsx(bv,{series:r,label:vh(r.id,s.name)},r.id))})]},s.name||"ungrouped"))]})}fh.createRoot(document.getElementById("root")).render(k.jsx(hi.StrictMode,{children:k.jsx(sh,{})})); +
diff --git a/web/src/App.tsx b/web/src/App.tsx index d1897ee..11f459e 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -1,9 +1,40 @@ import { useEffect, useState } from "react"; -import type { Dashboard } from "./types"; -import { loadData } from "./data"; +import type { BenchSeries, Dashboard } from "./types"; +import { groupKey, loadData } from "./data"; import { LineChart } from "./LineChart"; import logo from "./assets/cubit-logo.png"; +interface Group { + name: string; + series: BenchSeries[]; +} + +// groupSeries buckets benchmarks by their leading id segment, preserving each +// group's incoming order (already id-sorted by the Go side) and returning groups +// sorted by name with the ungrouped bucket last — mirroring the PR comment's +// sectioning so the two views read the same. +function groupSeries(benchmarks: BenchSeries[]): Group[] { + const byName = new Map(); + for (const b of benchmarks) { + const key = groupKey(b.id); + const bucket = byName.get(key); + if (bucket) bucket.push(b); + else byName.set(key, [b]); + } + return [...byName.entries()] + .map(([name, series]) => ({ name, series })) + .sort((a, b) => { + if ((a.name === "") !== (b.name === "")) return a.name === "" ? 1 : -1; + return a.name < b.name ? -1 : a.name > b.name ? 1 : 0; + }); +} + +// stripGroup drops the redundant "group/" prefix from a benchmark's id for its +// caption inside that group's section (the full id still labels the chart). +function stripGroup(id: string, group: string): string { + return group && id.startsWith(group + "/") ? id.slice(group.length + 1) : id; +} + export function App() { const [data, setData] = useState(undefined); @@ -26,6 +57,8 @@ export function App() { ); } + const groups = groupSeries(data.benchmarks); + return (
@@ -33,15 +66,34 @@ export function App() { cubit — performance

- {data.benchmarks.length} benchmarks · branch {data.branch} · + {data.benchmarks.length} benchmarks · {groups.length} group + {groups.length === 1 ? "" : "s"} · branch {data.branch} · generated {new Date(data.generatedAt).toISOString().replace("T", " ").slice(0, 16)}

-
- {data.benchmarks.map((b) => ( - - ))} -
+ {groups.length <= 1 ? ( +
+ {data.benchmarks.map((b) => ( + + ))} +
+ ) : ( + groups.map((g) => ( +
+ + {g.name || "ungrouped"} + + {g.series.length} benchmark{g.series.length === 1 ? "" : "s"} + + +
+ {g.series.map((b) => ( + + ))} +
+
+ )) + )}
); } diff --git a/web/src/LineChart.tsx b/web/src/LineChart.tsx index 7e38151..270c523 100644 --- a/web/src/LineChart.tsx +++ b/web/src/LineChart.tsx @@ -7,8 +7,10 @@ const PAD = { top: 16, right: 16, bottom: 28, left: 64 }; // LineChart draws one benchmark's history: a median line with the // confidence-interval band shaded behind it, so a reviewer can see whether a -// new point sits inside the run-to-run noise or steps out of it. -export function LineChart({ series }: { series: BenchSeries }) { +// new point sits inside the run-to-run noise or steps out of it. label overrides +// the visible caption (the grouped view passes the id with its group prefix +// stripped); the full id still drives the accessible label. +export function LineChart({ series, label }: { series: BenchSeries; label?: string }) { const pts = series.points; const plotW = W - PAD.left - PAD.right; const plotH = H - PAD.top - PAD.bottom; @@ -44,7 +46,7 @@ export function LineChart({ series }: { series: BenchSeries }) { return (
- {series.id} + {label ?? series.id} {formatValue(last.value)}
diff --git a/web/src/data.ts b/web/src/data.ts index 6e89da3..ae822d4 100644 --- a/web/src/data.ts +++ b/web/src/data.ts @@ -24,6 +24,16 @@ export async function loadData(): Promise { return null; } +// groupKey returns a benchmark's group: the leading id segment before the first +// "/". criterion nests ids as "group/function/value", so this is the +// benchmark_group it belongs to — the axis the dashboard folds a large suite +// along. A top-level bench with no "/" has no group and yields "" (an +// "ungrouped" section). Mirrors model.GroupKey on the Go side. +export function groupKey(id: string): string { + const i = id.indexOf("/"); + return i >= 0 ? id.slice(0, i) : ""; +} + // formatValue renders a nanosecond metric with an adaptive unit, matching the // PR-comment formatter so the dashboard and comment read the same. export function formatValue(ns: number): string { diff --git a/web/src/styles.css b/web/src/styles.css index c181cea..01d31b0 100644 --- a/web/src/styles.css +++ b/web/src/styles.css @@ -69,6 +69,33 @@ code { gap: 20px; } +.group { + margin-bottom: 28px; +} + +.group > summary { + cursor: pointer; + padding: 6px 0; + margin-bottom: 16px; + border-bottom: 1px solid var(--border); +} + +.group > summary::-webkit-details-marker { + color: var(--muted); +} + +.group-name { + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-size: 15px; + font-weight: 600; +} + +.group-count { + color: var(--muted); + margin-left: 8px; + font-size: 13px; +} + .chart { margin: 0; padding: 12px 12px 4px;