* feat: unify search panel — remove keyword/semantic toggle, progressive results Replace separate keyword/semantic mode toggle with a unified search that streams results progressively: keyword results appear first (<500ms), then hybrid results augment the list (~1-2s). Loading spinner shows in the input field while semantic search runs. Stale requests are discarded via generation counter for safe rapid typing. - Extract search logic into useUnifiedSearch hook (code health 9.26+) - 300ms debounce, 5s timeout on hybrid, graceful fallback on errors - 15 tests covering progressive search, spinner, stale results, failures Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: add design wireframes for unified search panel Two frames showing the search panel states: - "keyword results loaded, semantic loading" (with spinner) - "all results loaded" (no spinner, more results including semantic) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore: coverage artifacts --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
206 lines
8.4 KiB
HTML
206 lines
8.4 KiB
HTML
|
|
<!doctype html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<title>Code coverage report for All files</title>
|
|
<meta charset="utf-8" />
|
|
<link rel="stylesheet" href="prettify.css" />
|
|
<link rel="stylesheet" href="base.css" />
|
|
<link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<style type='text/css'>
|
|
.coverage-summary .sorter {
|
|
background-image: url(sort-arrow-sprite.png);
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<div class='wrapper'>
|
|
<div class='pad1'>
|
|
<h1>All files</h1>
|
|
<div class='clearfix'>
|
|
|
|
<div class='fl pad1y space-right2'>
|
|
<span class="strong">79.25% </span>
|
|
<span class="quiet">Statements</span>
|
|
<span class='fraction'>2819/3557</span>
|
|
</div>
|
|
|
|
|
|
<div class='fl pad1y space-right2'>
|
|
<span class="strong">72.94% </span>
|
|
<span class="quiet">Branches</span>
|
|
<span class='fraction'>1577/2162</span>
|
|
</div>
|
|
|
|
|
|
<div class='fl pad1y space-right2'>
|
|
<span class="strong">75.78% </span>
|
|
<span class="quiet">Functions</span>
|
|
<span class='fraction'>848/1119</span>
|
|
</div>
|
|
|
|
|
|
<div class='fl pad1y space-right2'>
|
|
<span class="strong">81.24% </span>
|
|
<span class="quiet">Lines</span>
|
|
<span class='fraction'>2374/2922</span>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
<p class="quiet">
|
|
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
</p>
|
|
<template id="filterTemplate">
|
|
<div class="quiet">
|
|
Filter:
|
|
<input type="search" id="fileSearch">
|
|
</div>
|
|
</template>
|
|
</div>
|
|
<div class='status-line medium'></div>
|
|
<div class="pad1">
|
|
<table class="coverage-summary">
|
|
<thead>
|
|
<tr>
|
|
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
|
|
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
|
|
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
|
|
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
|
|
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
|
|
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
|
|
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
|
|
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
|
|
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
|
|
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody><tr>
|
|
<td class="file low" data-value="src"><a href="src/index.html">src</a></td>
|
|
<td data-value="47.5" class="pic low">
|
|
<div class="chart"><div class="cover-fill" style="width: 47%"></div><div class="cover-empty" style="width: 53%"></div></div>
|
|
</td>
|
|
<td data-value="47.5" class="pct low">47.5%</td>
|
|
<td data-value="120" class="abs low">57/120</td>
|
|
<td data-value="40.47" class="pct low">40.47%</td>
|
|
<td data-value="42" class="abs low">17/42</td>
|
|
<td data-value="20.58" class="pct low">20.58%</td>
|
|
<td data-value="34" class="abs low">7/34</td>
|
|
<td data-value="57.73" class="pct medium">57.73%</td>
|
|
<td data-value="97" class="abs medium">56/97</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="file high" data-value="src/components"><a href="src/components/index.html">src/components</a></td>
|
|
<td data-value="80.93" class="pic high">
|
|
<div class="chart"><div class="cover-fill" style="width: 80%"></div><div class="cover-empty" style="width: 20%"></div></div>
|
|
</td>
|
|
<td data-value="80.93" class="pct high">80.93%</td>
|
|
<td data-value="1831" class="abs high">1482/1831</td>
|
|
<td data-value="73.93" class="pct medium">73.93%</td>
|
|
<td data-value="1339" class="abs medium">990/1339</td>
|
|
<td data-value="80.36" class="pct high">80.36%</td>
|
|
<td data-value="611" class="abs high">491/611</td>
|
|
<td data-value="82.93" class="pct high">82.93%</td>
|
|
<td data-value="1506" class="abs high">1249/1506</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="file high" data-value="src/components/ui"><a href="src/components/ui/index.html">src/components/ui</a></td>
|
|
<td data-value="88.23" class="pic high">
|
|
<div class="chart"><div class="cover-fill" style="width: 88%"></div><div class="cover-empty" style="width: 12%"></div></div>
|
|
</td>
|
|
<td data-value="88.23" class="pct high">88.23%</td>
|
|
<td data-value="17" class="abs high">15/17</td>
|
|
<td data-value="80" class="pct high">80%</td>
|
|
<td data-value="15" class="abs high">12/15</td>
|
|
<td data-value="84.61" class="pct high">84.61%</td>
|
|
<td data-value="13" class="abs high">11/13</td>
|
|
<td data-value="88.23" class="pct high">88.23%</td>
|
|
<td data-value="17" class="abs high">15/17</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="file high" data-value="src/hooks"><a href="src/hooks/index.html">src/hooks</a></td>
|
|
<td data-value="85.11" class="pic high">
|
|
<div class="chart"><div class="cover-fill" style="width: 85%"></div><div class="cover-empty" style="width: 15%"></div></div>
|
|
</td>
|
|
<td data-value="85.11" class="pct high">85.11%</td>
|
|
<td data-value="1075" class="abs high">915/1075</td>
|
|
<td data-value="78.01" class="pct medium">78.01%</td>
|
|
<td data-value="414" class="abs medium">323/414</td>
|
|
<td data-value="77.91" class="pct medium">77.91%</td>
|
|
<td data-value="326" class="abs medium">254/326</td>
|
|
<td data-value="87.99" class="pct high">87.99%</td>
|
|
<td data-value="866" class="abs high">762/866</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="file high" data-value="src/lib"><a href="src/lib/index.html">src/lib</a></td>
|
|
<td data-value="100" class="pic high">
|
|
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
</td>
|
|
<td data-value="100" class="pct high">100%</td>
|
|
<td data-value="1" class="abs high">1/1</td>
|
|
<td data-value="100" class="pct high">100%</td>
|
|
<td data-value="0" class="abs high">0/0</td>
|
|
<td data-value="100" class="pct high">100%</td>
|
|
<td data-value="1" class="abs high">1/1</td>
|
|
<td data-value="100" class="pct high">100%</td>
|
|
<td data-value="1" class="abs high">1/1</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="file low" data-value="src/mock-tauri"><a href="src/mock-tauri/index.html">src/mock-tauri</a></td>
|
|
<td data-value="17.68" class="pic low">
|
|
<div class="chart"><div class="cover-fill" style="width: 17%"></div><div class="cover-empty" style="width: 83%"></div></div>
|
|
</td>
|
|
<td data-value="17.68" class="pct low">17.68%</td>
|
|
<td data-value="164" class="abs low">29/164</td>
|
|
<td data-value="10.11" class="pct low">10.11%</td>
|
|
<td data-value="89" class="abs low">9/89</td>
|
|
<td data-value="2.08" class="pct low">2.08%</td>
|
|
<td data-value="48" class="abs low">1/48</td>
|
|
<td data-value="18.54" class="pct low">18.54%</td>
|
|
<td data-value="151" class="abs low">28/151</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="file high" data-value="src/utils"><a href="src/utils/index.html">src/utils</a></td>
|
|
<td data-value="91.69" class="pic high">
|
|
<div class="chart"><div class="cover-fill" style="width: 91%"></div><div class="cover-empty" style="width: 9%"></div></div>
|
|
</td>
|
|
<td data-value="91.69" class="pct high">91.69%</td>
|
|
<td data-value="349" class="abs high">320/349</td>
|
|
<td data-value="85.93" class="pct high">85.93%</td>
|
|
<td data-value="263" class="abs high">226/263</td>
|
|
<td data-value="96.51" class="pct high">96.51%</td>
|
|
<td data-value="86" class="abs high">83/86</td>
|
|
<td data-value="92.6" class="pct high">92.6%</td>
|
|
<td data-value="284" class="abs high">263/284</td>
|
|
</tr>
|
|
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div class='push'></div><!-- for sticky footer -->
|
|
</div><!-- /wrapper -->
|
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
Code coverage generated by
|
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
at 2026-02-25T20:19:25.575Z
|
|
</div>
|
|
<script src="prettify.js"></script>
|
|
<script>
|
|
window.onload = function () {
|
|
prettyPrint();
|
|
};
|
|
</script>
|
|
<script src="sorter.js"></script>
|
|
<script src="block-navigation.js"></script>
|
|
</body>
|
|
</html>
|
|
|