## Summary
Follow-up on **#2127** (Quality plugin already on `main`). This PR only
lands the remaining Quality deltas that were not merged:
- **Experimental gate fix** — `TaskStore.getSettings()` is async; the
gate now awaits merged settings so enabling
`experimentalFeatures.qualityPlugin` actually works, and status-bearing
errors return structured `{ status, body }` instead of collapsing to
hard failures
- **Done-task QA worktrees** — when a task has no live worktree (typical
after land), preview/task runs create a disposable checkout under
`.fusion/quality-qa/` at the task branch or merge commit so processes
run the **done task’s code**, not project root
- **Hub layout** — shared `ViewHeader` + dashboard spacing/typography so
Quality matches Insights / Compound Engineering / Goals
Scoped to `plugins/fusion-plugin-quality/**` only (rebased onto current
`main`; duplicate plugin-landing commits dropped).
## Test plan
- [ ] Enable **Settings → Experimental → Quality Plugin**, restart if
routes were cold
- [ ] Quality hub: header matches other views; refresh + presets work
- [ ] Done task → QA tab → Start preview uses QA worktree at
branch/merge commit (not project root)
- [ ] Active task with live worktree still uses that worktree
- [ ] Flag off: clear experimental-disabled error (not generic empty
failure)
- [ ] `pnpm --filter @fusion-plugin-examples/quality test` (32 tests)
16 lines
458 B
JSON
16 lines
458 B
JSON
{
|
|
"extends": "../tsconfig.base.json",
|
|
"compilerOptions": {
|
|
"outDir": "dist",
|
|
"rootDir": "./src",
|
|
"jsx": "react-jsx",
|
|
"types": ["react", "node"],
|
|
"paths": {
|
|
"@fusion/dashboard/app/components/ViewHeader": ["./src/dashboard-interop.d.ts"],
|
|
"@fusion/dashboard/app/plugins/types": ["./src/dashboard-interop.d.ts"]
|
|
}
|
|
},
|
|
"include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.d.ts"],
|
|
"exclude": ["src/**/__tests__/**"]
|
|
}
|