Mikk v2.0 — Release Notes
Mikk v2.0 is a full rearchitecture of the codebase intelligence engine. This release establishes Mikk as a production-grade, deterministic alternative to probabilistic RAG-based context tools, ships a ground-up rebuild of the VS Code extension, and hardens the CI/CD pipeline for automated publishing.
New Features
| Feature | Description |
|---|---|
| Deterministic Context Engine | Full dependency graph built from static AST analysis via OxcParser. Zero hallucination, zero approximation. |
| Unified VS Code Sidebar | Replaced four fragmented views with a single Mikk Explorer containing three focused nodes: Dashboard, Dead Code, and Hotspots. |
| Architecture Dashboard | Rich webview panel showing module count, file count, function count, public API surface, dead code count, sync status badge, top hotspots list, and a live Mermaid module relationship graph. |
| Dead Code Detector | Sidebar node that expands to show all unreferenced, non-exported functions. Click any entry to jump directly to the source line. |
| Hotspots View | Sidebar node showing the top 10 most-called functions ranked by caller count, with one-click navigation. |
| Dynamic Context Shifting | Extension automatically detects which sub-project the currently open file belongs to by climbing the directory tree for the nearest mikk.json. Context shifts silently with no user action required. |
| Auto-Refresh | Extension watches mikk.lock.json and mikk.json via file system watchers and refreshes the sidebar, status bar, and open Dashboard panel automatically on any change. |
| Status Bar Integration | Persistent status bar item shows live function and module counts. Color shifts to amber when the lock is drifted. Clicking it opens the Dashboard. |
| AI Context Forge Command | Mikk: Get AI Context prompts for a task description and runs mikk context for "..." in the integrated terminal. |
| CodeLens Annotations | Inline caller counts displayed above each function in TypeScript and JavaScript files. |
| Dead Code Highlighting | Functions with zero callers and no export are faded with a grey color decoration directly in the editor. |
| Publisher Verification | Publisher profile linked to https://mikk-web.vercel.app/ with support channel and source repository configured. |
| Automated VS Code Marketplace Publishing | GitHub Actions workflow configured to publish to the official VS Code Marketplace on tagged releases using VSCE_PAT. |
| Automated Open VSX Publishing | Parallel publishing workflow for the Open VSX Registry. |
| Comprehensive Extension README | Full feature documentation, command reference, and getting-started guide included in the VSIX bundle. |
Bug Fixes
| Bug | Fix |
|---|---|
Cannot read properties of undefined (reading 'length') on calledBy |
All .length accesses on lock function fields now use optional chaining: calledBy?.length ?? 0. Extension no longer crashes on incomplete lock entries. |
| Extension crash on startup with no mikk.json | MikkDataProvider.readJson returns null early when projectRoot is empty. No path.join call is made against undefined. |
The "path" argument must be of type string. Received undefined |
activate passes path.dirname(editor.document.fileName) to findRoot instead of the full path, and the loop now checks next === cur before continuing. |
frozen-lockfile CI failure |
Regenerated bun.lock without the frozen flag and committed the updated lockfile. |
| Blast radius classifier including non-function nodes | ImpactAnalyzer.analyze filters impactedIds to only include entries prefixed with fn:, eliminating phantom nodes from the result set. |
| Sidebar showing all modules including empty ones | Explorer provider filters modules to only show those with at least one associated function. |
| Dashboard not rendering when data is available | DashboardPanel now exposes a public update(data) method. The refresh() cycle in activate calls this method whenever the open panel exists. |
| Dead code decoration crashing on functions with missing fields | MikkDecoratorProvider wraps every field access in optional chaining. startLine, endLine, name, calledBy, and file are all null-guarded. |
| Extension logo showing as a blank square | Replaced the icon in both the viewsContainers and views entries with resources/logo.svg. The PNG is retained only for the Marketplace icon field, which requires PNG format. |
| Extension detail panel blank in VS Code | Created README.md in the extension package root. The VS Code extension detail panel renders this file as the description. |
Duplicate MikkActionsProvider and ActionItem class declarations |
Removed the second copy introduced by a failed incremental edit. Single canonical class definition is now at the top of the module. |
Breaking Changes
- The
mikkModules,mikkFunctions,mikkHealth, andmikkActionsview IDs are removed. Anywhenclauses or keybindings referencing these IDs must be updated tomikkExplorer. - The
mikk.showDiagramcommand has been removed. Diagram functionality may be reintroduced in a future release. - The
mikk.showImpact,mikk.deadCode,mikk.stats, andmikk.watchcommands have been removed. Their functionality is surfaced through the unified Dashboard and sidebar.
Verified Test Coverage
- 211 core engine tests passing across parser, graph builder, lock compiler, and impact analyzer packages.
- Extension builds to a clean 21 KB bundle with zero TypeScript errors.
Full Changelog: v1.9.0...v2.0.0