Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions components/daily-log/DailyLogEntry.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ export function DailyLogEntry({ log, deleteAction }: Props) {
type="submit"
className="p-1.5 text-zinc-700 hover:text-red-400 transition-colors"
title="Delete"
aria-label="Delete daily log entry"
>
<Trash2 size={13} />
</button>
Expand Down
1 change: 1 addition & 0 deletions components/dsa-bridge/ConceptLinkCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ export function ConceptLinkCard({ link, deleteAction }: Props) {
type="submit"
className="p-1.5 text-zinc-700 hover:text-red-400 transition-colors"
title="Delete"
aria-label="Delete concept link"
>
<Trash2 size={13} />
</button>
Expand Down
1 change: 1 addition & 0 deletions components/explain-back/QuestionCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ export default function QuestionCard({
<button
type="submit"
title="Delete question"
aria-label="Delete question"
className="text-zinc-700 hover:text-red-400 transition-colors"
>
<Trash2 size={13} />
Expand Down
1 change: 1 addition & 0 deletions components/learning-map/ModuleCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ export default function ModuleCard({
<button
type="submit"
title="Delete module"
aria-label={`Delete module: ${module.title}`}
className="text-zinc-700 hover:text-red-400 transition-colors"
>
<Trash2 size={13} />
Expand Down
2 changes: 1 addition & 1 deletion docs/MEGASPRINT_ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ free + BYOK path (`ANTHROPIC_API_KEY` optional; offline analyzer is the default)
| **MS3** ✅ | Architecture & Data Integrity | Kill load-bearing hacks (description-as-path, no backup) | **DONE** — `sourcePath` column (migration 0008) retires the "Imported from:" hack; DB durability (`synchronous=NORMAL`, `busy_timeout`, boot integrity check, WAL checkpoint on exit) + downloadable backup; workspace error/loading boundaries; graph reconciliation already handled (`graphJson ?? buildKnowledgeGraph`). **#27/#28 module FKs deferred to MS4** (no analyzer-produced associations to populate them — REVIEW-012). Gate green (19/19) |
| **MS4** ✅ | Algorithms & Analysis Depth | The analysis *is* the product — make it rigorous and calibrated | **DONE** — ✅ codeHealth calibrated to code *density* not project size (self-scan F→**B(76)**, overall **A(95)**); `computeCodeHealthScore` + relativity test. ✅ incremental re-analysis — `computeSourceFingerprint` (path\|size\|mtime sha256) + `learning_maps.source_fingerprint` (0009); reanalyze short-circuits `{unchanged:true}`. ✅ [benchmarks](BENCHMARKS.md) — 300-file analysis <200ms, flat ~4ms lens pass, incremental ~8× cheaper. ✅ #27/#28 module associations — soft `module_key` on questions/concepts (0010), deterministic tagging on both AI + offline paths, module cards link to their questions/concepts |
| **MS5** 🔄 | Quality & Reliability (QA) | 16 tests is a foundation, not production confidence | **In progress** — ✅ E2E smoke of the critical path (import→analyze→deep-review→export), which also closed a real gap: the deep review now reaches the export. ✅ broadened coverage — BM25 search (indexing/ranking/rebuild). ✅ cross-platform CI — gate now runs on Windows + Linux (macOS deferred: fs/path-equivalent to Linux, 10× runner cost; Windows is the divergent platform). Suite 24/24. Remaining: watch first Windows CI run land green |
| **MS6** | Framework & Performance | Production Next.js build quality | Standalone build runs; perf/a11y budgets met; no UI-blocking analysis |
| **MS6** | Framework & Performance | Production Next.js build quality | **DONE** — ✅ `output: "standalone"` self-contained server (migrations + native better-sqlite3 traced in); verified: boots on 127.0.0.1, HTTP 200, runtime DB migrated. ✅ a11y — accessible names (aria-label) on icon-only delete buttons. ✅ no UI-blocking analysis already met (import + reanalyze show pending/disabled states) |
| **MS7** | Distribution & Release | Turn the repo into installable, versioned software — the actual "deploy" | `npx nirmiqcodesensei@latest` runs on a fresh machine; tagged v1.0.0 GitHub Release; CHANGELOG current; scaling-N/A ADR recorded |
| MS8 | Launch (stretch) | Discoverability & polish | Onboarding, docs, MCP-directory submission, desktop-installer spike |

Expand Down
13 changes: 13 additions & 0 deletions next.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,19 @@ const securityHeaders = [
];

const nextConfig: NextConfig = {
// Self-contained production server (.next/standalone/server.js) with only the
// traced runtime deps — the basis for MS7 distribution (`npx`, single-folder
// deploy). Native better-sqlite3 is traced via serverExternalPackages below.
output: "standalone",

// The Drizzle migration files are read from disk at runtime (instrumentation.ts
// runs the migrator on boot), so dependency tracing — which only follows
// imports — can't see them. Force them into the standalone bundle, or a
// distributed build boots against an unmigrated database.
outputFileTracingIncludes: {
"/**": ["./lib/db/migrations/**/*"],
},

// better-sqlite3 is a native addon — it must be require()'d at runtime, not
// bundled. Without this, Turbopack tries to bundle it into its render/
// static-path worker processes, which crashes them (WorkerError) on the
Expand Down
Loading