diff --git a/AGENTS.md b/AGENTS.md
index b8a9ffcbc..366d13810 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -272,10 +272,10 @@ When functionally testing changes to the AgentV CLI, **NEVER** use `agentv` dire
**Prefer running from source** (`src/cli.ts`) during development. The dist build can silently serve stale code if you forget to rebuild after changes. After pulling changes that touch `packages/core/`, always run `bun run build` before CLI testing.
-**Studio frontend exception — rebuild `apps/studio/dist/` before UAT.** Running `agentv studio` from source (`bun apps/cli/src/cli.ts studio ...`) only reloads the CLI and backend routes from source. The Studio web UI (React/Tailwind bundle) is served as static assets from `apps/studio/dist/`, which is build output and does **not** recompile on change. If you are testing Studio UI changes — especially post-merge on `main` or after pulling — rebuild the frontend first:
+**Studio frontend exception — rebuild `apps/dashboard/dist/` before UAT.** Running `agentv studio` from source (`bun apps/cli/src/cli.ts studio ...`) only reloads the CLI and backend routes from source. The Studio web UI (React/Tailwind bundle) is served as static assets from `apps/dashboard/dist/`, which is build output and does **not** recompile on change. If you are testing Studio UI changes — especially post-merge on `main` or after pulling — rebuild the frontend first:
```bash
-cd apps/studio && bun run build
+cd apps/dashboard && bun run build
```
Skipping this step silently serves the previous bundle, so you'll see the old UI even though your source edits and the backend API are live. This has burned at least one post-merge UAT; always rebuild before screenshotting or driving Studio with `agent-browser`.
diff --git a/Dockerfile b/Dockerfile
index dfd87dda0..a25cda0a1 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -6,7 +6,7 @@ COPY package.json bun.lock ./
COPY packages/core/package.json packages/core/
COPY packages/eval/package.json packages/eval/
COPY apps/cli/package.json apps/cli/
-COPY apps/studio/package.json apps/studio/
+COPY apps/dashboard/package.json apps/dashboard/
COPY apps/web/package.json apps/web/
RUN bun install --frozen-lockfile
COPY . .
@@ -62,7 +62,7 @@ COPY --from=build /app/packages/eval/package.json ./packages/eval/
COPY --from=build /app/apps/cli/dist ./apps/cli/dist
COPY --from=build /app/apps/cli/package.json ./apps/cli/
COPY --from=build /app/apps/cli/node_modules ./apps/cli/node_modules
-COPY --from=build /app/apps/studio/dist ./apps/studio/dist
+COPY --from=build /app/apps/dashboard/dist ./apps/dashboard/dist
USER agentv
ENV PORT=3117
diff --git a/apps/cli/src/commands/results/serve.ts b/apps/cli/src/commands/results/serve.ts
index b1b9478fc..40258b2ac 100644
--- a/apps/cli/src/commands/results/serve.ts
+++ b/apps/cli/src/commands/results/serve.ts
@@ -1470,7 +1470,7 @@ export function createApp(
const studioDistPath = options?.studioDir ?? resolveStudioDistDir();
if (!studioDistPath || !existsSync(path.join(studioDistPath, 'index.html'))) {
throw new Error(
- 'Dashboard dist not found. Run "bun run build" in apps/studio/ to build the SPA.',
+ 'Dashboard dist not found. Run "bun run build" in apps/dashboard/ to build the SPA.',
);
}
@@ -1517,25 +1517,25 @@ export function createApp(
}
/**
- * Resolve the path to the studio dist directory.
+ * Resolve the path to the dashboard dist directory.
*
* Searches several candidate locations covering:
* - Running from TypeScript source (`bun apps/cli/src/cli.ts`)
* - Running from built dist (`bun apps/cli/dist/cli.js`)
- * - Published npm package (studio bundled inside `dist/studio/`)
+ * - Published npm package (dashboard bundled inside `dist/dashboard/`)
*/
function resolveStudioDistDir(): string | undefined {
const currentDir =
typeof __dirname !== 'undefined' ? __dirname : path.dirname(fileURLToPath(import.meta.url));
const candidates = [
- // From src/commands/results/ → sibling apps/studio/dist
- path.resolve(currentDir, '../../../../studio/dist'),
- // From dist/ → sibling apps/studio/dist (monorepo dev)
- path.resolve(currentDir, '../../studio/dist'),
- // Bundled inside CLI dist (published package: dist/studio/)
- path.resolve(currentDir, 'studio'),
+ // From src/commands/results/ → sibling apps/dashboard/dist
+ path.resolve(currentDir, '../../../../dashboard/dist'),
+ // From dist/ → sibling apps/dashboard/dist (monorepo dev)
+ path.resolve(currentDir, '../../dashboard/dist'),
+ // Bundled inside CLI dist (published package: dist/dashboard/)
+ path.resolve(currentDir, 'dashboard'),
// From dist/ in monorepo root context
- path.resolve(currentDir, '../../../apps/studio/dist'),
+ path.resolve(currentDir, '../../../apps/dashboard/dist'),
];
for (const candidate of candidates) {
if (existsSync(candidate) && existsSync(path.join(candidate, 'index.html'))) {
diff --git a/apps/cli/test/unit/studio-navigation.test.ts b/apps/cli/test/unit/studio-navigation.test.ts
index 561e20ab2..d75c729ad 100644
--- a/apps/cli/test/unit/studio-navigation.test.ts
+++ b/apps/cli/test/unit/studio-navigation.test.ts
@@ -10,7 +10,7 @@ import {
runPath,
runsHomePath,
suitePath,
-} from '../../../studio/src/lib/navigation.ts';
+} from '../../../dashboard/src/lib/navigation.ts';
describe('studio navigation helpers', () => {
it('redirects when the preferred project id matches a registered project', () => {
diff --git a/apps/cli/tsup.config.ts b/apps/cli/tsup.config.ts
index 519d072a2..cf84e118f 100644
--- a/apps/cli/tsup.config.ts
+++ b/apps/cli/tsup.config.ts
@@ -61,13 +61,13 @@ export default defineConfig({
console.log('⚠ Skills source not found at', srcSkillsDir, '— skipping');
}
- // Copy dashboard SPA dist if available (built by apps/studio)
- const studioDistDir = path.resolve('..', 'studio', 'dist');
- const cliStudioDir = path.join('dist', 'studio');
+ // Copy dashboard SPA dist if available (built by apps/dashboard)
+ const studioDistDir = path.resolve('..', 'dashboard', 'dist');
+ const cliStudioDir = path.join('dist', 'dashboard');
if (existsSync(studioDistDir)) {
rmSync(cliStudioDir, { recursive: true, force: true });
cpSync(studioDistDir, cliStudioDir, { recursive: true });
- console.log('✓ Dashboard dist copied to dist/studio');
+ console.log('✓ Dashboard dist copied to dist/dashboard');
} else {
console.log('⚠ Dashboard dist not found at', studioDistDir, '— skipping');
}
diff --git a/apps/studio/DESIGN.md b/apps/dashboard/DESIGN.md
similarity index 100%
rename from apps/studio/DESIGN.md
rename to apps/dashboard/DESIGN.md
diff --git a/apps/studio/index.html b/apps/dashboard/index.html
similarity index 100%
rename from apps/studio/index.html
rename to apps/dashboard/index.html
diff --git a/apps/studio/package.json b/apps/dashboard/package.json
similarity index 95%
rename from apps/studio/package.json
rename to apps/dashboard/package.json
index c1b4f2107..058d015a6 100644
--- a/apps/studio/package.json
+++ b/apps/dashboard/package.json
@@ -1,5 +1,5 @@
{
- "name": "@agentv/studio",
+ "name": "@agentv/dashboard",
"version": "0.0.1",
"private": true,
"type": "module",
diff --git a/apps/studio/src/components/AnalyticsCharts.tsx b/apps/dashboard/src/components/AnalyticsCharts.tsx
similarity index 100%
rename from apps/studio/src/components/AnalyticsCharts.tsx
rename to apps/dashboard/src/components/AnalyticsCharts.tsx
diff --git a/apps/studio/src/components/AnalyticsTab.tsx b/apps/dashboard/src/components/AnalyticsTab.tsx
similarity index 100%
rename from apps/studio/src/components/AnalyticsTab.tsx
rename to apps/dashboard/src/components/AnalyticsTab.tsx
diff --git a/apps/studio/src/components/Breadcrumbs.tsx b/apps/dashboard/src/components/Breadcrumbs.tsx
similarity index 100%
rename from apps/studio/src/components/Breadcrumbs.tsx
rename to apps/dashboard/src/components/Breadcrumbs.tsx
diff --git a/apps/studio/src/components/EvalDetail.tsx b/apps/dashboard/src/components/EvalDetail.tsx
similarity index 100%
rename from apps/studio/src/components/EvalDetail.tsx
rename to apps/dashboard/src/components/EvalDetail.tsx
diff --git a/apps/studio/src/components/ExperimentDetail.tsx b/apps/dashboard/src/components/ExperimentDetail.tsx
similarity index 100%
rename from apps/studio/src/components/ExperimentDetail.tsx
rename to apps/dashboard/src/components/ExperimentDetail.tsx
diff --git a/apps/studio/src/components/ExperimentsTab.tsx b/apps/dashboard/src/components/ExperimentsTab.tsx
similarity index 100%
rename from apps/studio/src/components/ExperimentsTab.tsx
rename to apps/dashboard/src/components/ExperimentsTab.tsx
diff --git a/apps/studio/src/components/FeedbackPanel.tsx b/apps/dashboard/src/components/FeedbackPanel.tsx
similarity index 100%
rename from apps/studio/src/components/FeedbackPanel.tsx
rename to apps/dashboard/src/components/FeedbackPanel.tsx
diff --git a/apps/studio/src/components/FileTree.tsx b/apps/dashboard/src/components/FileTree.tsx
similarity index 100%
rename from apps/studio/src/components/FileTree.tsx
rename to apps/dashboard/src/components/FileTree.tsx
diff --git a/apps/studio/src/components/Layout.tsx b/apps/dashboard/src/components/Layout.tsx
similarity index 100%
rename from apps/studio/src/components/Layout.tsx
rename to apps/dashboard/src/components/Layout.tsx
diff --git a/apps/studio/src/components/MonacoViewer.tsx b/apps/dashboard/src/components/MonacoViewer.tsx
similarity index 100%
rename from apps/studio/src/components/MonacoViewer.tsx
rename to apps/dashboard/src/components/MonacoViewer.tsx
diff --git a/apps/studio/src/components/PassRatePill.tsx b/apps/dashboard/src/components/PassRatePill.tsx
similarity index 100%
rename from apps/studio/src/components/PassRatePill.tsx
rename to apps/dashboard/src/components/PassRatePill.tsx
diff --git a/apps/studio/src/components/ProjectCard.tsx b/apps/dashboard/src/components/ProjectCard.tsx
similarity index 100%
rename from apps/studio/src/components/ProjectCard.tsx
rename to apps/dashboard/src/components/ProjectCard.tsx
diff --git a/apps/studio/src/components/ResumeRunActions.tsx b/apps/dashboard/src/components/ResumeRunActions.tsx
similarity index 100%
rename from apps/studio/src/components/ResumeRunActions.tsx
rename to apps/dashboard/src/components/ResumeRunActions.tsx
diff --git a/apps/studio/src/components/RunDetail.tsx b/apps/dashboard/src/components/RunDetail.tsx
similarity index 100%
rename from apps/studio/src/components/RunDetail.tsx
rename to apps/dashboard/src/components/RunDetail.tsx
diff --git a/apps/studio/src/components/RunEvalModal.tsx b/apps/dashboard/src/components/RunEvalModal.tsx
similarity index 100%
rename from apps/studio/src/components/RunEvalModal.tsx
rename to apps/dashboard/src/components/RunEvalModal.tsx
diff --git a/apps/studio/src/components/RunList.tsx b/apps/dashboard/src/components/RunList.tsx
similarity index 100%
rename from apps/studio/src/components/RunList.tsx
rename to apps/dashboard/src/components/RunList.tsx
diff --git a/apps/studio/src/components/RunSourceToolbar.tsx b/apps/dashboard/src/components/RunSourceToolbar.tsx
similarity index 100%
rename from apps/studio/src/components/RunSourceToolbar.tsx
rename to apps/dashboard/src/components/RunSourceToolbar.tsx
diff --git a/apps/studio/src/components/RunStatusIndicator.tsx b/apps/dashboard/src/components/RunStatusIndicator.tsx
similarity index 100%
rename from apps/studio/src/components/RunStatusIndicator.tsx
rename to apps/dashboard/src/components/RunStatusIndicator.tsx
diff --git a/apps/studio/src/components/ScoreBar.tsx b/apps/dashboard/src/components/ScoreBar.tsx
similarity index 100%
rename from apps/studio/src/components/ScoreBar.tsx
rename to apps/dashboard/src/components/ScoreBar.tsx
diff --git a/apps/studio/src/components/Sidebar.tsx b/apps/dashboard/src/components/Sidebar.tsx
similarity index 100%
rename from apps/studio/src/components/Sidebar.tsx
rename to apps/dashboard/src/components/Sidebar.tsx
diff --git a/apps/studio/src/components/StatsCards.tsx b/apps/dashboard/src/components/StatsCards.tsx
similarity index 100%
rename from apps/studio/src/components/StatsCards.tsx
rename to apps/dashboard/src/components/StatsCards.tsx
diff --git a/apps/studio/src/components/StopRunButton.tsx b/apps/dashboard/src/components/StopRunButton.tsx
similarity index 100%
rename from apps/studio/src/components/StopRunButton.tsx
rename to apps/dashboard/src/components/StopRunButton.tsx
diff --git a/apps/studio/src/components/TargetsTab.tsx b/apps/dashboard/src/components/TargetsTab.tsx
similarity index 100%
rename from apps/studio/src/components/TargetsTab.tsx
rename to apps/dashboard/src/components/TargetsTab.tsx
diff --git a/apps/studio/src/components/resume-run-helpers.test.ts b/apps/dashboard/src/components/resume-run-helpers.test.ts
similarity index 100%
rename from apps/studio/src/components/resume-run-helpers.test.ts
rename to apps/dashboard/src/components/resume-run-helpers.test.ts
diff --git a/apps/studio/src/components/resume-run-helpers.ts b/apps/dashboard/src/components/resume-run-helpers.ts
similarity index 100%
rename from apps/studio/src/components/resume-run-helpers.ts
rename to apps/dashboard/src/components/resume-run-helpers.ts
diff --git a/apps/studio/src/components/run-eval-threshold.test.ts b/apps/dashboard/src/components/run-eval-threshold.test.ts
similarity index 100%
rename from apps/studio/src/components/run-eval-threshold.test.ts
rename to apps/dashboard/src/components/run-eval-threshold.test.ts
diff --git a/apps/studio/src/components/run-eval-threshold.ts b/apps/dashboard/src/components/run-eval-threshold.ts
similarity index 100%
rename from apps/studio/src/components/run-eval-threshold.ts
rename to apps/dashboard/src/components/run-eval-threshold.ts
diff --git a/apps/studio/src/components/stop-run-helpers.test.ts b/apps/dashboard/src/components/stop-run-helpers.test.ts
similarity index 100%
rename from apps/studio/src/components/stop-run-helpers.test.ts
rename to apps/dashboard/src/components/stop-run-helpers.test.ts
diff --git a/apps/studio/src/components/stop-run-helpers.ts b/apps/dashboard/src/components/stop-run-helpers.ts
similarity index 100%
rename from apps/studio/src/components/stop-run-helpers.ts
rename to apps/dashboard/src/components/stop-run-helpers.ts
diff --git a/apps/studio/src/lib/api.ts b/apps/dashboard/src/lib/api.ts
similarity index 100%
rename from apps/studio/src/lib/api.ts
rename to apps/dashboard/src/lib/api.ts
diff --git a/apps/studio/src/lib/navigation.test.ts b/apps/dashboard/src/lib/navigation.test.ts
similarity index 100%
rename from apps/studio/src/lib/navigation.test.ts
rename to apps/dashboard/src/lib/navigation.test.ts
diff --git a/apps/studio/src/lib/navigation.ts b/apps/dashboard/src/lib/navigation.ts
similarity index 100%
rename from apps/studio/src/lib/navigation.ts
rename to apps/dashboard/src/lib/navigation.ts
diff --git a/apps/studio/src/lib/run-dedupe.test.ts b/apps/dashboard/src/lib/run-dedupe.test.ts
similarity index 100%
rename from apps/studio/src/lib/run-dedupe.test.ts
rename to apps/dashboard/src/lib/run-dedupe.test.ts
diff --git a/apps/studio/src/lib/run-dedupe.ts b/apps/dashboard/src/lib/run-dedupe.ts
similarity index 100%
rename from apps/studio/src/lib/run-dedupe.ts
rename to apps/dashboard/src/lib/run-dedupe.ts
diff --git a/apps/studio/src/lib/run-label.test.ts b/apps/dashboard/src/lib/run-label.test.ts
similarity index 100%
rename from apps/studio/src/lib/run-label.test.ts
rename to apps/dashboard/src/lib/run-label.test.ts
diff --git a/apps/studio/src/lib/run-label.ts b/apps/dashboard/src/lib/run-label.ts
similarity index 100%
rename from apps/studio/src/lib/run-label.ts
rename to apps/dashboard/src/lib/run-label.ts
diff --git a/apps/studio/src/lib/sidebar-context.tsx b/apps/dashboard/src/lib/sidebar-context.tsx
similarity index 100%
rename from apps/studio/src/lib/sidebar-context.tsx
rename to apps/dashboard/src/lib/sidebar-context.tsx
diff --git a/apps/studio/src/lib/types.ts b/apps/dashboard/src/lib/types.ts
similarity index 100%
rename from apps/studio/src/lib/types.ts
rename to apps/dashboard/src/lib/types.ts
diff --git a/apps/studio/src/main.tsx b/apps/dashboard/src/main.tsx
similarity index 100%
rename from apps/studio/src/main.tsx
rename to apps/dashboard/src/main.tsx
diff --git a/apps/studio/src/routeTree.gen.ts b/apps/dashboard/src/routeTree.gen.ts
similarity index 100%
rename from apps/studio/src/routeTree.gen.ts
rename to apps/dashboard/src/routeTree.gen.ts
diff --git a/apps/studio/src/routes/__root.tsx b/apps/dashboard/src/routes/__root.tsx
similarity index 100%
rename from apps/studio/src/routes/__root.tsx
rename to apps/dashboard/src/routes/__root.tsx
diff --git a/apps/studio/src/routes/evals/$runId.$evalId.tsx b/apps/dashboard/src/routes/evals/$runId.$evalId.tsx
similarity index 100%
rename from apps/studio/src/routes/evals/$runId.$evalId.tsx
rename to apps/dashboard/src/routes/evals/$runId.$evalId.tsx
diff --git a/apps/studio/src/routes/experiments/$experimentName.tsx b/apps/dashboard/src/routes/experiments/$experimentName.tsx
similarity index 100%
rename from apps/studio/src/routes/experiments/$experimentName.tsx
rename to apps/dashboard/src/routes/experiments/$experimentName.tsx
diff --git a/apps/studio/src/routes/index.tsx b/apps/dashboard/src/routes/index.tsx
similarity index 100%
rename from apps/studio/src/routes/index.tsx
rename to apps/dashboard/src/routes/index.tsx
diff --git a/apps/studio/src/routes/jobs/$runId.tsx b/apps/dashboard/src/routes/jobs/$runId.tsx
similarity index 100%
rename from apps/studio/src/routes/jobs/$runId.tsx
rename to apps/dashboard/src/routes/jobs/$runId.tsx
diff --git a/apps/studio/src/routes/projects/$projectId.tsx b/apps/dashboard/src/routes/projects/$projectId.tsx
similarity index 100%
rename from apps/studio/src/routes/projects/$projectId.tsx
rename to apps/dashboard/src/routes/projects/$projectId.tsx
diff --git a/apps/studio/src/routes/projects/$projectId_/evals/$runId.$evalId.tsx b/apps/dashboard/src/routes/projects/$projectId_/evals/$runId.$evalId.tsx
similarity index 100%
rename from apps/studio/src/routes/projects/$projectId_/evals/$runId.$evalId.tsx
rename to apps/dashboard/src/routes/projects/$projectId_/evals/$runId.$evalId.tsx
diff --git a/apps/studio/src/routes/projects/$projectId_/experiments/$experimentName.tsx b/apps/dashboard/src/routes/projects/$projectId_/experiments/$experimentName.tsx
similarity index 100%
rename from apps/studio/src/routes/projects/$projectId_/experiments/$experimentName.tsx
rename to apps/dashboard/src/routes/projects/$projectId_/experiments/$experimentName.tsx
diff --git a/apps/studio/src/routes/projects/$projectId_/jobs/$runId.tsx b/apps/dashboard/src/routes/projects/$projectId_/jobs/$runId.tsx
similarity index 100%
rename from apps/studio/src/routes/projects/$projectId_/jobs/$runId.tsx
rename to apps/dashboard/src/routes/projects/$projectId_/jobs/$runId.tsx
diff --git a/apps/studio/src/routes/projects/$projectId_/runs/$runId.tsx b/apps/dashboard/src/routes/projects/$projectId_/runs/$runId.tsx
similarity index 100%
rename from apps/studio/src/routes/projects/$projectId_/runs/$runId.tsx
rename to apps/dashboard/src/routes/projects/$projectId_/runs/$runId.tsx
diff --git a/apps/studio/src/routes/projects/$projectId_/runs/$runId_.category.$category.tsx b/apps/dashboard/src/routes/projects/$projectId_/runs/$runId_.category.$category.tsx
similarity index 100%
rename from apps/studio/src/routes/projects/$projectId_/runs/$runId_.category.$category.tsx
rename to apps/dashboard/src/routes/projects/$projectId_/runs/$runId_.category.$category.tsx
diff --git a/apps/studio/src/routes/projects/$projectId_/runs/$runId_.suite.$suite.tsx b/apps/dashboard/src/routes/projects/$projectId_/runs/$runId_.suite.$suite.tsx
similarity index 100%
rename from apps/studio/src/routes/projects/$projectId_/runs/$runId_.suite.$suite.tsx
rename to apps/dashboard/src/routes/projects/$projectId_/runs/$runId_.suite.$suite.tsx
diff --git a/apps/studio/src/routes/runs/$runId.tsx b/apps/dashboard/src/routes/runs/$runId.tsx
similarity index 100%
rename from apps/studio/src/routes/runs/$runId.tsx
rename to apps/dashboard/src/routes/runs/$runId.tsx
diff --git a/apps/studio/src/routes/runs/$runId_.category.$category.tsx b/apps/dashboard/src/routes/runs/$runId_.category.$category.tsx
similarity index 100%
rename from apps/studio/src/routes/runs/$runId_.category.$category.tsx
rename to apps/dashboard/src/routes/runs/$runId_.category.$category.tsx
diff --git a/apps/studio/src/routes/runs/$runId_.suite.$suite.tsx b/apps/dashboard/src/routes/runs/$runId_.suite.$suite.tsx
similarity index 100%
rename from apps/studio/src/routes/runs/$runId_.suite.$suite.tsx
rename to apps/dashboard/src/routes/runs/$runId_.suite.$suite.tsx
diff --git a/apps/studio/src/routes/settings.tsx b/apps/dashboard/src/routes/settings.tsx
similarity index 100%
rename from apps/studio/src/routes/settings.tsx
rename to apps/dashboard/src/routes/settings.tsx
diff --git a/apps/studio/src/styles/globals.css b/apps/dashboard/src/styles/globals.css
similarity index 100%
rename from apps/studio/src/styles/globals.css
rename to apps/dashboard/src/styles/globals.css
diff --git a/apps/studio/src/vite-env.d.ts b/apps/dashboard/src/vite-env.d.ts
similarity index 100%
rename from apps/studio/src/vite-env.d.ts
rename to apps/dashboard/src/vite-env.d.ts
diff --git a/apps/studio/tsconfig.json b/apps/dashboard/tsconfig.json
similarity index 100%
rename from apps/studio/tsconfig.json
rename to apps/dashboard/tsconfig.json
diff --git a/apps/studio/vite.config.ts b/apps/dashboard/vite.config.ts
similarity index 100%
rename from apps/studio/vite.config.ts
rename to apps/dashboard/vite.config.ts
diff --git a/bun.lock b/bun.lock
index 298531c75..9a723e1c0 100644
--- a/bun.lock
+++ b/bun.lock
@@ -52,8 +52,8 @@
"@earendil-works/pi-coding-agent",
],
},
- "apps/studio": {
- "name": "@agentv/studio",
+ "apps/dashboard": {
+ "name": "@agentv/dashboard",
"version": "0.0.1",
"dependencies": {
"@monaco-editor/react": "^4.7.0",
@@ -133,7 +133,7 @@
"@agentv/eval": ["@agentv/eval@workspace:packages/eval"],
- "@agentv/studio": ["@agentv/studio@workspace:apps/studio"],
+ "@agentv/dashboard": ["@agentv/dashboard@workspace:apps/dashboard"],
"@agentv/web": ["@agentv/web@workspace:apps/web"],
diff --git a/docs/plans/1222-stop-run.md b/docs/plans/1222-stop-run.md
index 12696b7ac..3c92ac232 100644
--- a/docs/plans/1222-stop-run.md
+++ b/docs/plans/1222-stop-run.md
@@ -50,15 +50,15 @@ AbortSignal threading.
- No status mutation here; close handler does it.
### Studio Stop button
-- `apps/studio/src/components/StopRunButton.tsx` — *new*. Renders a
+- `apps/dashboard/src/components/StopRunButton.tsx` — *new*. Renders a
neutral-styled (gray, not red) Stop button when `status` is
non-terminal; calls POST with the benchmark-scoped path when
`benchmarkId` is set; sets local `stopping=true` state to flip the
label optimistically.
-- `apps/studio/src/components/stop-run-helpers.ts` — *new*. Pure
+- `apps/dashboard/src/components/stop-run-helpers.ts` — *new*. Pure
`shouldShowStopButton(status, isReadOnly)` for unit testing.
-- `apps/studio/src/lib/api.ts` — add `stopEvalRun(id, benchmarkId?)`.
-- `apps/studio/src/routes/jobs/$runId.tsx` — wire `` into
+- `apps/dashboard/src/lib/api.ts` — add `stopEvalRun(id, benchmarkId?)`.
+- `apps/dashboard/src/routes/jobs/$runId.tsx` — wire `` into
the header.
### Resume — planned_test_count
@@ -76,22 +76,22 @@ AbortSignal threading.
- `apps/cli/src/commands/results/serve.ts` — `deriveResumeMeta` already
reads `metadata.eval_file`; extend to also surface
`planned_test_count`. Run-detail response gains `planned_test_count`.
-- `apps/studio/src/lib/types.ts` — add optional
+- `apps/dashboard/src/lib/types.ts` — add optional
`planned_test_count?: number` to the run-detail response type.
-- `apps/studio/src/components/resume-run-helpers.ts` — extend
+- `apps/dashboard/src/components/resume-run-helpers.ts` — extend
`shouldShowResumeActions` to also return true when
`plannedTestCount && results.length < plannedTestCount`.
-- `apps/studio/src/components/ResumeRunActions.tsx` and the two run
+- `apps/dashboard/src/components/ResumeRunActions.tsx` and the two run
detail routes — pass `plannedTestCount` through.
### Tests (narrow)
- `apps/cli/test/commands/results/serve.test.ts` (or co-located) — stop
endpoint: 404 unknown, 403 read-only, base + benchmark-scoped paths.
Happy path SIGTERM is covered by manual UAT (race-prone in unit tests).
-- `apps/studio/src/components/resume-run-helpers.test.ts` — case where
+- `apps/dashboard/src/components/resume-run-helpers.test.ts` — case where
every result is `ok` but `results.length < plannedTestCount` → button
visible.
-- `apps/studio/src/components/stop-run-helpers.test.ts` — visibility
+- `apps/dashboard/src/components/stop-run-helpers.test.ts` — visibility
matrix.
- Skip: integration test that signals a real eval. Manual UAT is enough.
diff --git a/package.json b/package.json
index 19b26f177..3b6a67fce 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,7 @@
"packageManager": "bun@1.3.3",
"workspaces": ["apps/*", "packages/*"],
"scripts": {
- "build": "bun --filter @agentv/core build && bun --filter @agentv/eval build && bun --filter @agentv/studio build && bun --filter agentv build",
+ "build": "bun --filter @agentv/core build && bun --filter @agentv/eval build && bun --filter @agentv/dashboard build && bun --filter agentv build",
"verify": "bun run build && bun run typecheck && bun run lint && bun run test",
"typecheck": "bun --filter @agentv/core typecheck && bun --filter agentv typecheck",
"typecheck:workspace": "tsc -b tsconfig.build.json",
diff --git a/plugins/agentv-self/skills/image-compress-and-docs/SKILL.md b/plugins/agentv-self/skills/image-compress-and-docs/SKILL.md
index 417128187..a1dcf7fc3 100644
--- a/plugins/agentv-self/skills/image-compress-and-docs/SKILL.md
+++ b/plugins/agentv-self/skills/image-compress-and-docs/SKILL.md
@@ -118,7 +118,7 @@ import myDetail from '../../../../assets/screenshots/my-detail.png';
```bash
# Feature branch: UI changes
cd /path/to/worktree
-git add apps/studio/...
+git add apps/dashboard/...
git commit -m "fix(studio): ..."
# Main repo: docs changes