v0.50
Release v0.50
Release v0.50 — incremental update from v0.4 with 44 merged PRs.
What's Changed
🐛 Bug Fixes
- #1481: feat(#1472): [Bug] PR creation failure on rebase conflict is swallowed — issue closed COMPLETED with no PR
- #1440: feat(#1438): [Bug] PR creation fails with misleading 'Rebase failed (no conflict files detected)' when untracked file collides with tracked path on main
- #1436: feat(#1432): [Bug] docker-convenience-scripts: 'docker not found' subtests fail on hosts with docker in /usr/bin
- #1435: feat(#1433): [Bug] ranked-map-removed Phase 5 references deleted prompt file operations:architecture-review.md
- #1431: fix(#1430): restore missing stages/core.ts and harden extension CI
- #1428: feat(#1421): [Bug] resolveSkillPaths ignores settings.json skill roots — subagent dies on private-pi skill in worktree
🔗 Dependencies
- #1480: feat(#1470): [Feature] CI check for GitHub security features (Dependabot, code scanning, secret scanning, malware)
- #1475: fix(deps): resolve dependabot alerts for undici and brace-expansion
🔧 Code Quality & Architecture
- #1466: feat(#1454): Remove 2 unused functions (getCommandName, stripThinkingPrefix) — dead code in piignore + supervisor extensions
- #1452: feat(#1403): Reinvention: session-logger — manual JSONL parsing reimplements pi.parseSessionEntries (+ misses legacy-session migration)
- #1451: feat(#1404): Dead Code: worktree-sandbox - Unused findSuspiciousArg export
- #1450: feat(#1400): ICA: Scattered .pi/settings.json parsing — no canonical Settings module
- #1449: feat(#1401): ICA: Submodule type reinvents go-git config.Submodule
- #1448: feat(#1399): Duplicate Code: lsp-auditor — formatPlainText reimplements formatDiagnostics from formatting.ts
- #1447: feat(#1402): Dead Code: caveman - Unused CAVEMAN_BASE_PONYTAIL constant
- #1443: feat(#1406): Dead Code: lib - Unused isBashSearchOrRead export
- #1437: ICA(#1415): buildEnvFlags reinvents map[string]string — flat -e slice + re-parse + duplicate allKnownEnvVars
- #1434: feat(#1414): Dead Code: ask-user - Unused types ToolResultDetailsQna, QnaToolResult, LabelValuePair
- #1422: feat(#1393): Dead Code: tsc-checkpoint - Dead onDiagnosticsChange method
- #1420: feat(#1389): ICA: Local-substitutable CLI/file ports — four single-impl exec/file seams
- #1419: feat(#1388): ICA: In-process ports — seven single-impl interfaces wrapping stdlib
- #1418: feat(#1390): Duplicate Code: context-info — FooterConfig object literal repeated 21× in test files
- #1417: feat(#1392): Dead Code: tsc-checkpoint - Unused TscWatchOptions interface
- #1416: feat(#1391): Dead Code: tsc-checkpoint - Unused parseArgs import
📚 Documentation
- #1477: docs: add community standards (CoC, contributing guide, PR template)
✨ Features & Enhancements
- #1483: feat(#1473): [Feature] Rebase worktree onto latest main before Implementation stage
- #1482: feat(#1476): [Feature] CI dependency-existence check against slopsquatting (all major languages)
- #1478: fix: close code-scanning alerts in codeflow server.py
- #1471: feat(#1455): Deduplicate copy-pasted test scaffolding in cmd/cheasee-pi
- #1469: feat(#1465): Consolidate duplicated docker trees (docker/ vs cmd/cheasee-pi/embedded/docker)
- #1468: feat(#1456): [Security] Hardcoded credential literals in cmd/cheasee-pi test files
- #1467: feat(#1457): [Architecture] Split oversized cmd/cheasee-pi files, break auth/config/settings import cycle
- #1446: feat(#1407): CLEAN: Split 381-line runTscAndLspAudit in audit.ts
- #1445: feat(#1408): CLEAN: Split 333-line runAgentSubprocess in runner.ts
- #1444: feat(#1409): CLEAN: Split 321-line renderSessionToMarkdown in renderer.ts
- #1442: feat(#1410): CLEAN: Split 224-line auditFileGroup in lsp-client.ts
- #1441: feat(#1412): CLEAN: Split 114-line runRequirementsTraceability in requirements-traceability.ts
- #1439: feat(#1411): CLEAN: Split adapter.ts (137-line handleContextInfo + 691 nbnc file)
- #1429: feat(#1413): CLEAN: Split worktree-sandbox long detectors (findMeaningfulToken 117, findUnsafeWriteInBash 114)
- #1426: feat(#1395): CLEAN: Split 1139-line handleSupervisorCommand in handler.ts
- #1425: feat(#1397): CLEAN: Split 307-line handlePostAgentSuccess in stages.ts
- #1424: feat(#1396): CLEAN: Split 231-line createMessageRenderer in message-renderer.ts
- #1423: feat(#1398): CLEAN: Split init.go (946 nbnc) by responsibility
- #1386: feat(#1360): Add .initremove file for configurable post-clone cleanup
Full Changelog: v0.4...v0.50