@@ -16,12 +16,22 @@ window.ProbeRender = (function () {
1616 var trackBg = isDark ? '#2a2f38' : '#e5e7eb' ;
1717 var thumbBg = isDark ? '#4b5563' : '#94a3b8' ;
1818 var thumbHover = isDark ? '#6b7280' : '#64748b' ;
19+ var borderColor = isDark ? '#30363d' : '#d0d7de' ;
20+ var rowHoverBg = isDark ? '#161b22' : '#f6f8fa' ;
21+ var rowActiveBg = isDark ? '#1c2333' : '#ddf4ff' ;
22+ var linkColor = isDark ? '#58a6ff' : '#0969da' ;
1923 var css = '.probe-scroll{overflow-x:auto}'
2024 + '.probe-scroll::-webkit-scrollbar{height:8px}'
2125 + '.probe-scroll::-webkit-scrollbar-track{background:' + trackBg + ';border-radius:4px}'
2226 + '.probe-scroll::-webkit-scrollbar-thumb{background:' + thumbBg + ';border-radius:4px}'
2327 + '.probe-scroll::-webkit-scrollbar-thumb:hover{background:' + thumbHover + '}'
24- + '.probe-scroll{scrollbar-width:thin;scrollbar-color:' + thumbBg + ' ' + trackBg + '}' ;
28+ + '.probe-scroll{scrollbar-width:thin;scrollbar-color:' + thumbBg + ' ' + trackBg + '}'
29+ + '.probe-table thead{border-bottom:2px solid ' + borderColor + '}'
30+ + '.probe-table tbody tr{border-bottom:1px solid ' + borderColor + '}'
31+ + '.probe-server-row{cursor:pointer;transition:background 0.15s}'
32+ + '.probe-server-row:hover{background:' + rowHoverBg + '}'
33+ + '.probe-server-row.probe-row-active{background:' + rowActiveBg + ' !important}'
34+ + '.probe-table thead a{color:' + linkColor + ' !important;text-decoration:underline !important;text-underline-offset:2px}' ;
2535 var style = document . createElement ( 'style' ) ;
2636 style . textContent = css ;
2737 document . head . appendChild ( style ) ;
@@ -202,7 +212,7 @@ window.ProbeRender = (function () {
202212 return tid . replace ( / ^ ( R F C \d + - [ \d . ] + - | C O M P - | S M U G - | M A L - ) / , '' ) ;
203213 } ) ;
204214
205- var t = '<div class="probe-scroll"><table style="border-collapse:collapse;font-size:12px;white-space:nowrap;">' ;
215+ var t = '<div class="probe-scroll"><table class="probe-table" style="border-collapse:collapse;font-size:12px;white-space:nowrap;">' ;
206216
207217 // Column header row (diagonal labels)
208218 t += '<thead><tr>' ;
@@ -238,7 +248,7 @@ window.ProbeRender = (function () {
238248
239249 // Server rows
240250 names . forEach ( function ( n ) {
241- t += '<tr>' ;
251+ t += '<tr class="probe-server-row" >' ;
242252 t += '<td style="padding:4px 8px;font-weight:600;font-size:12px;">' + n + '</td>' ;
243253 orderedTests . forEach ( function ( tid ) {
244254 var r = lookup [ n ] && lookup [ n ] [ tid ] ;
@@ -258,6 +268,16 @@ window.ProbeRender = (function () {
258268 t += '<p style="font-size:0.8em;color:#656d76;margin-top:4px;">* Not scored — RFC-compliant behavior, shown for reference.</p>' ;
259269 }
260270 el . innerHTML = t ;
271+
272+ // Row click-to-highlight (one at a time)
273+ var rows = el . querySelectorAll ( '.probe-server-row' ) ;
274+ rows . forEach ( function ( row ) {
275+ row . addEventListener ( 'click' , function ( ) {
276+ var wasActive = row . classList . contains ( 'probe-row-active' ) ;
277+ rows . forEach ( function ( r ) { r . classList . remove ( 'probe-row-active' ) ; } ) ;
278+ if ( ! wasActive ) row . classList . add ( 'probe-row-active' ) ;
279+ } ) ;
280+ } ) ;
261281 }
262282
263283 // ── Language filter ────────────────────────────────────────────
0 commit comments