Skip to content

Commit 7eb1d9f

Browse files
feat: prioritize usage on home launch
1 parent aa1cf4e commit 7eb1d9f

5 files changed

Lines changed: 61 additions & 50 deletions

File tree

PROJECT_STATUS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ CodeVetter is a local-first desktop workbench for checking agent-generated code.
2424
- Agent Verification Timeline has a first normalized spine: Review now builds a shared task/review/QA/evidence/claim-check/fix/worktree timeline contract, attaches bounded raw-session command anchors to evidence rows with transcript excerpts, adds a dedicated Claim check row for failed/stale command claims, explicit extracted agent claims, positive test/check claims contradicted by failed/stale command evidence, unchecked findings, unresolved post-fix QA, and fixes without same-flow reruns, attaches edit-origin anchors for fix changed files to worktree rows, renders timeline stages and anchors in the sidebar, exposes first-class jump targets for findings, files, QA artifacts, fix worktrees, command source anchors, and edited files, shows same-flow post-fix QA before/after deltas with artifact anchors on the QA row, can copy segment-scoped fix packets directly from Review/Evidence/QA/Fix/Worktree timeline rows, includes clicked-row timeline replay metadata and transcript snippets in those packets, and includes the same timeline plus source/event/artifact/jump/edit/transcript anchors in copied reviewer proof.
2525
- Codebase History Explainer has a first file-level slice: Review now builds bounded, cited "why this code exists" explanations from local commits, decision markers, recurring findings, agent notes, and command anchors, renders them in the sidebar, and includes them in copied reviewer proof.
2626
- AI Session Intelligence has a first local scorecard slice: indexed sessions produce a schema-versioned six-dimension scorecard with cited evidence refs, anti-gaming notes, recommendations, normalized Claude/Codex/Cursor adapter coverage summaries, production and scorecard adapter run metadata/parse warnings in `session_adapter_runs`, a compact `session_message_archive` for normalized adapter messages/tool calls, local backfill for previously indexed Claude/Codex sessions missing archive rows, FTS-backed local archive search over messages/tool calls, startup/periodic/manual archive update events, a shared raw parser adapter contract with Claude/Codex/Cursor fixtures, Claude/Codex/Cursor production indexing wired through that contract, a Tauri IPC contract, compact Roadmap dashboard panels for scorecard and source health, visible adapter run status, per-adapter run trends, and recent-run drilldowns.
27-
- Home now opens on usage first. The Verification Workbench launcher and latest-roadmap-build banner live on the Roadmap page, so Evidence Search, Agent Timeline, Synthetic QA, Memory Graph, History Brief, AI Sessions, transcript replay, claim checks, replay packets, timeline fix packets, edit origins, and post-fix QA deltas remain visible without pushing usage down on app launch.
27+
- Home now opens directly into a usage dashboard panel with Today/Week/Month/Year counters above error or roadmap noise. The Verification Workbench launcher and latest build banner live on the Roadmap page, so Evidence Search, Agent Timeline, Synthetic QA, Memory Graph, History Brief, AI Sessions, transcript replay, claim checks, replay packets, timeline fix packets, edit origins, and post-fix QA deltas remain visible without pushing usage down on app launch.
2828
- OSS repo-analysis engines were evaluated in `docs/oss-integration-evaluation.md`; optional `ast-grep` changed-file evidence is implemented behind PATH detection with no required runtime dependency.
2929
- Product direction has been consolidated around agent-written code verification, evidence levels, timelines, and explainable codebase history.
3030

apps/desktop/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@code-reviewer/desktop",
3-
"version": "1.1.47",
3+
"version": "1.1.48",
44
"private": true,
55
"scripts": {
66
"dev": "lsof -ti:1420 | xargs kill -9 2>/dev/null; vite",

apps/desktop/src-tauri/tauri.conf.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"$schema": "https://raw.githubusercontent.com/tauri-apps/tauri/dev/crates/tauri-utils/schema.json",
33
"identifier": "com.codevetter.desktop",
44
"productName": "CodeVetter",
5-
"version": "1.1.47",
5+
"version": "1.1.48",
66
"build": {
77
"beforeDevCommand": "npm run dev",
88
"beforeBuildCommand": "npm run build",

apps/desktop/src/pages/Home.tsx

Lines changed: 57 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
CheckCircle2,
77
FileClock,
88
GitBranch,
9+
Map as MapIcon,
910
MonitorPlay,
1011
Network,
1112
RefreshCw,
@@ -964,7 +965,7 @@ function scoreTone(score: number): string {
964965
return "text-red-300";
965966
}
966967

967-
const ROADMAP_RELEASE_VERSION = "1.1.47";
968+
const ROADMAP_RELEASE_VERSION = "1.1.48";
968969

969970
const ROADMAP_RELEASE_ITEMS = [
970971
{
@@ -978,8 +979,8 @@ const ROADMAP_RELEASE_ITEMS = [
978979
href: "/roadmap",
979980
},
980981
{
981-
label: "Usage-first Home",
982-
detail: "Roadmap owns verification surfaces so launch stays focused on usage telemetry.",
982+
label: "Usage launch surface",
983+
detail: "Home opens directly into usage telemetry while Roadmap keeps the deeper build surfaces.",
983984
href: "/",
984985
},
985986
];
@@ -996,13 +997,13 @@ export function RoadmapReleaseBanner() {
996997
>
997998
v{ROADMAP_RELEASE_VERSION}
998999
</Badge>
999-
<span className="cv-label text-slate-400">latest installed roadmap build</span>
1000+
<span className="cv-label text-slate-400">latest installed build</span>
10001001
</div>
10011002
<h2 className="mt-3 text-lg font-semibold tracking-normal text-slate-100">
10021003
Verification work is now visible from launch.
10031004
</h2>
10041005
<p className="mt-2 max-w-xl text-xs leading-5 text-slate-500">
1005-
The recent roadmap slices are no longer only buried inside Review state. Roadmap exposes the shipped verification spine, archive search, and live source-health surfaces while Home stays usage-first.
1006+
The recent roadmap slices are no longer only buried inside Review state. Roadmap exposes the shipped verification spine, archive search, and live source-health surfaces while Home opens directly into usage telemetry.
10061007
</p>
10071008
</div>
10081009
<div className="grid gap-px bg-[#18130b] md:grid-cols-3">
@@ -1653,27 +1654,57 @@ export default function Home() {
16531654
// ─── Render ────────────────────────────────────────────────────────────
16541655

16551656
return (
1656-
<div className="min-h-full overflow-y-auto overflow-x-hidden px-5 pb-8 pt-20">
1657-
<div className="mx-auto flex max-w-7xl flex-col gap-5">
1658-
<div className="flex justify-end gap-2">
1659-
<Link
1660-
to="/roadmap"
1661-
className="inline-flex h-10 shrink-0 items-center justify-center gap-2 border border-[#262626] bg-[#08090a] px-4 text-xs font-medium text-slate-400 transition-colors hover:border-[var(--cv-accent)]/40 hover:text-slate-100"
1662-
>
1663-
Roadmap
1664-
<ArrowRight size={14} />
1665-
</Link>
1666-
<Button
1667-
variant="outline"
1668-
size="sm"
1669-
onClick={handleTriggerIndex}
1670-
disabled={indexing}
1671-
className="h-10 shrink-0 justify-center gap-2 border-white/70 bg-white px-5 text-black shadow-[0_0_0_1px_rgba(125,211,252,0.08),0_18px_40px_-30px_rgba(125,211,252,0.85)] transition-all duration-150 hover:border-[var(--cv-accent)] hover:bg-[var(--cv-accent)] hover:text-[#031016] hover:shadow-[0_0_0_1px_rgba(125,211,252,0.32),0_0_28px_rgba(125,211,252,0.24)] focus-visible:ring-1 focus-visible:ring-[var(--cv-accent)] active:translate-y-px disabled:border-white/20 disabled:bg-white/45 disabled:text-black/55 disabled:shadow-none"
1672-
>
1673-
<RefreshCw size={15} className={indexing ? "animate-spin" : ""} />
1674-
{indexing ? "Indexing..." : "Re-index local data"}
1675-
</Button>
1676-
</div>
1657+
<div className="min-h-full overflow-y-auto overflow-x-hidden px-5 pb-8 pt-16">
1658+
<div className="mx-auto flex max-w-7xl flex-col gap-4">
1659+
<section className="cv-frame overflow-hidden bg-[#07090b]">
1660+
<div className="flex flex-col gap-3 border-b border-[#1c1c1c] px-4 py-3 md:flex-row md:items-center md:justify-between">
1661+
<div className="min-w-0">
1662+
<div className="cv-label text-slate-500">usage</div>
1663+
<h1 className="mt-1 truncate text-lg font-semibold tracking-normal text-slate-100">
1664+
Usage dashboard
1665+
</h1>
1666+
</div>
1667+
<div className="flex flex-wrap items-center gap-2">
1668+
<Button
1669+
variant="outline"
1670+
size="sm"
1671+
onClick={handleTriggerIndex}
1672+
disabled={indexing}
1673+
className="h-10 shrink-0 justify-center gap-2 border-white/70 bg-white px-5 text-black shadow-[0_0_0_1px_rgba(125,211,252,0.08),0_18px_40px_-30px_rgba(125,211,252,0.85)] transition-all duration-150 hover:border-[var(--cv-accent)] hover:bg-[var(--cv-accent)] hover:text-[#031016] hover:shadow-[0_0_0_1px_rgba(125,211,252,0.32),0_0_28px_rgba(125,211,252,0.24)] focus-visible:ring-1 focus-visible:ring-[var(--cv-accent)] active:translate-y-px disabled:border-white/20 disabled:bg-white/45 disabled:text-black/55 disabled:shadow-none"
1674+
>
1675+
<RefreshCw size={15} className={indexing ? "animate-spin" : ""} />
1676+
{indexing ? "Indexing..." : "Re-index local data"}
1677+
</Button>
1678+
<Link
1679+
to="/roadmap"
1680+
className="inline-flex h-10 shrink-0 items-center justify-center gap-2 border border-[#262626] bg-[#08090a] px-4 text-xs font-medium text-slate-500 transition-colors hover:border-[var(--cv-accent)]/40 hover:text-slate-100"
1681+
>
1682+
<MapIcon size={14} />
1683+
Roadmap
1684+
</Link>
1685+
</div>
1686+
</div>
1687+
1688+
{/* Token period cards */}
1689+
<div className="grid grid-cols-2 gap-px bg-[#171717] lg:grid-cols-4">
1690+
{[
1691+
{ label: "Today", value: tokenUsage?.today ?? 0, color: "text-cyan-400" },
1692+
{ label: "This week", value: tokenUsage?.this_week ?? 0, color: "text-emerald-400" },
1693+
{ label: "This month", value: tokenUsage?.this_month ?? 0, color: "text-yellow-400" },
1694+
{ label: "This year", value: tokenUsage?.this_year ?? 0, color: "text-rose-400" },
1695+
].map((stat) => (
1696+
<div
1697+
key={stat.label}
1698+
className="flex min-h-20 items-center justify-between bg-[#090a0b] px-4 py-4"
1699+
>
1700+
<span className="cv-label mr-2 truncate">{stat.label}</span>
1701+
<span className={`shrink-0 text-base font-semibold tabular-nums ${stat.color}`}>
1702+
{loading && !tokenUsage ? "--" : formatTokens(stat.value)}
1703+
</span>
1704+
</div>
1705+
))}
1706+
</div>
1707+
</section>
16771708

16781709
{/* Index result banner */}
16791710
{indexResult && (
@@ -1707,26 +1738,6 @@ export default function Home() {
17071738
</div>
17081739
)}
17091740

1710-
{/* Token period cards */}
1711-
<div className="grid grid-cols-2 gap-3 lg:grid-cols-4">
1712-
{[
1713-
{ label: "Today", value: tokenUsage?.today ?? 0, color: "text-cyan-400" },
1714-
{ label: "This week", value: tokenUsage?.this_week ?? 0, color: "text-emerald-400" },
1715-
{ label: "This month", value: tokenUsage?.this_month ?? 0, color: "text-yellow-400" },
1716-
{ label: "This year", value: tokenUsage?.this_year ?? 0, color: "text-rose-400" },
1717-
].map((stat) => (
1718-
<Card
1719-
key={stat.label}
1720-
className="cv-frame flex items-center justify-between overflow-hidden rounded-none px-4 py-4"
1721-
>
1722-
<span className="cv-label mr-2 truncate">{stat.label}</span>
1723-
<span className={`text-sm font-semibold tabular-nums shrink-0 ${stat.color}`}>
1724-
{loading && !tokenUsage ? "--" : formatTokens(stat.value)}
1725-
</span>
1726-
</Card>
1727-
))}
1728-
</div>
1729-
17301741
{/* Token usage chart */}
17311742
{tokenUsage && (
17321743
<div className="cv-frame overflow-hidden">

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)