prjct-cli 2.23.12 → 2.23.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -1810
- package/README.md +22 -60
- package/dist/bin/prjct-core.mjs +329 -329
- package/dist/daemon/entry.mjs +204 -204
- package/dist/mcp/server.mjs +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -81,6 +81,26 @@
|
|
|
81
81
|
|
|
82
82
|
## [Unreleased]
|
|
83
83
|
|
|
84
|
+
## [2.23.16] - 2026-05-20
|
|
85
|
+
|
|
86
|
+
### Added
|
|
87
|
+
- current work
|
|
88
|
+
|
|
89
|
+
## [2.23.15] - 2026-05-20
|
|
90
|
+
|
|
91
|
+
### Added
|
|
92
|
+
- Audit followups 2: regression tests para prompt-injection, exec hardening defense-in-depth, legacy-crew-sweep env gate
|
|
93
|
+
|
|
94
|
+
## [2.23.14] - 2026-05-20
|
|
95
|
+
|
|
96
|
+
### Added
|
|
97
|
+
- current work
|
|
98
|
+
|
|
99
|
+
## [2.23.13] - 2026-05-20
|
|
100
|
+
|
|
101
|
+
### Added
|
|
102
|
+
- Audit followups: docs tightening, scripts orphans verified, CHANGELOG archive split, migrate-json deprecation track
|
|
103
|
+
|
|
84
104
|
## [2.23.12] - 2026-05-20
|
|
85
105
|
|
|
86
106
|
### Added
|
|
@@ -1355,1815 +1375,8 @@ usable, not just carved out.
|
|
|
1355
1375
|
- PR 3 — lazy context injection (`prjct task` < 50 tokens)
|
|
1356
1376
|
- PR 4 — workflow engine upgrade: status-transitions as steps, conditionals, parallel hooks, cache, rich project-memory API
|
|
1357
1377
|
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
### Bug Fixes
|
|
1361
|
-
|
|
1362
|
-
- exclude .worktrees from indexing (#248)
|
|
1363
|
-
|
|
1364
|
-
## [1.56.11] - 2026-04-13
|
|
1365
|
-
|
|
1366
|
-
### Fixed
|
|
1367
|
-
- Exclude `.worktrees` from BM25 and import graph indexing to eliminate duplicate search results
|
|
1368
|
-
- Exclude `.worktrees` from biome config to prevent nested root configuration errors
|
|
1369
|
-
|
|
1370
|
-
## [1.56.10] - 2026-04-11
|
|
1371
|
-
|
|
1372
|
-
### Bug Fixes
|
|
1373
|
-
|
|
1374
|
-
- prefer direct Glob/Grep over Explore subagent (#247)
|
|
1375
|
-
- chore: dead code purge + architecture docs (v1.56.8) (#246)
|
|
1376
|
-
|
|
1377
|
-
## [1.56.9] - 2026-04-11
|
|
1378
|
-
|
|
1379
|
-
### Changed
|
|
1380
|
-
- `templates/tools/task.txt`: prefer direct `Glob`/`Grep` for simple
|
|
1381
|
-
exploration; only delegate to `Explore` subagent when the search is
|
|
1382
|
-
open-ended. Subagents inherit all MCP tool schemas from the parent
|
|
1383
|
-
session and can start with heavy context, so prescriptive delegation
|
|
1384
|
-
was hurting more than helping.
|
|
1385
|
-
|
|
1386
|
-
## [1.56.8] - 2026-04-10
|
|
1387
|
-
|
|
1388
|
-
### Removed
|
|
1389
|
-
- **Dead code purge (-9400 LOC).** Deleted 43 unused files including the entire
|
|
1390
|
-
`core/integrations/` subtree (Linear/Jira integration replaced by the MCP
|
|
1391
|
-
gateway CLIs in `core/cli/linear.ts` and `core/cli/jira.ts`), orphan schemas
|
|
1392
|
-
(`prd`, `issues`, `permissions`, `agents`, `command-context`, `enriched-task`,
|
|
1393
|
-
`project`), orphan services (`skill-service`, `skill-installer`, `skill-lock`,
|
|
1394
|
-
`context-selector`, `file-categorizer`, `git-analyzer`), orphan domain files
|
|
1395
|
-
(`snapshot-manager`, `architecture-generator`, `context-estimator`,
|
|
1396
|
-
`task-stack`), and various agentic/session/utility files.
|
|
1397
|
-
- **24 re-export lines** across 16 files (`core/utils/output.ts`,
|
|
1398
|
-
`core/utils/error-messages.ts`, `core/commands/maintenance.ts`, and others).
|
|
1399
|
-
Import directly from the source module per the no-barrel rule.
|
|
1400
|
-
- **Unused functions** trimmed from `core/utils/collection-filters.ts`,
|
|
1401
|
-
`core/utils/runtime.ts`, `core/utils/jsonl-helper.ts`,
|
|
1402
|
-
`core/utils/subtask-table.ts`, and `core/utils/mcp-config.ts`.
|
|
1403
|
-
|
|
1404
|
-
### Added
|
|
1405
|
-
- **`knip.json`** and `bun run knip` script for dead code detection. Entry
|
|
1406
|
-
points reflect the five build targets from `scripts/build.js` plus tests.
|
|
1407
|
-
- **`docs/architecture.md`** — layered architecture walkthrough, retrieval
|
|
1408
|
-
triad (BM25 + import graph + git co-change) with ASCII diagram, schemas
|
|
1409
|
-
pattern, storage and testing conventions, enforced code rules.
|
|
1410
|
-
- **`docs/sqlite-migration.md`** — why v1.24.1 moved from JSON to SQLite,
|
|
1411
|
-
what `migrate-json.ts` does, how to inspect `prjct.db` with `sqlite3`,
|
|
1412
|
-
and troubleshooting recipes.
|
|
1413
|
-
- **56 new tests** across `core/__tests__/sync/` (event-mapper, auth-config,
|
|
1414
|
-
sync-client, sync-manager — 39 tests) and
|
|
1415
|
-
`core/__tests__/tools/context/token-counter.test.ts` (17 tests).
|
|
1416
|
-
|
|
1417
|
-
### Changed
|
|
1418
|
-
- **Biome lint rules hardened.** `noUnusedVariables`, `noUnusedImports`, and
|
|
1419
|
-
`noVoidTypeReturn` are now `"error"` (were `"warn"`). CI blocks on any
|
|
1420
|
-
violation.
|
|
1421
|
-
- **`AGENTS.md`** updated with a "Code rules" section (no barrels, SQLite
|
|
1422
|
-
only, Biome errors blocking, Zod as source of truth) and references to the
|
|
1423
|
-
new architecture docs.
|
|
1424
|
-
- **`.gitignore`** no longer ignores `docs/` so documentation is versioned.
|
|
1425
|
-
|
|
1426
|
-
### Tests
|
|
1427
|
-
- Full suite: **1013 pass / 0 fail** (was 957).
|
|
1428
|
-
|
|
1429
|
-
## [1.56.6] - 2026-04-07
|
|
1430
|
-
|
|
1431
|
-
### Bug Fixes
|
|
1432
|
-
|
|
1433
|
-
- resolve biome check lint and format errors (#244)
|
|
1434
|
-
- prefer installed dist over source files (#243)
|
|
1435
|
-
|
|
1436
|
-
## [1.56.5] - 2026-04-07
|
|
1437
|
-
|
|
1438
|
-
### Added
|
|
1439
|
-
- current work
|
|
1440
|
-
|
|
1441
|
-
## [1.56.4] - 2026-04-07
|
|
1442
|
-
|
|
1443
|
-
### Added
|
|
1444
|
-
- fix update to use installed files instead of source
|
|
1445
|
-
|
|
1446
|
-
## [1.56.3] - 2026-04-07
|
|
1447
|
-
|
|
1448
|
-
### Added
|
|
1449
|
-
- fix update to use installed files instead of source
|
|
1450
|
-
|
|
1451
|
-
## [1.56.2] - 2026-04-06
|
|
1452
|
-
|
|
1453
|
-
### Bug Fixes
|
|
1454
|
-
|
|
1455
|
-
- obsidian status neutral message when not configured (#242)
|
|
1456
|
-
|
|
1457
|
-
## [1.56.1] - 2026-04-06
|
|
1458
|
-
|
|
1459
|
-
### Fixed
|
|
1460
|
-
- Obsidian status no longer shows warning when not configured — Obsidian is optional, all data stored in SQLite by default
|
|
1461
|
-
|
|
1462
|
-
## [1.56.0] - 2026-04-06
|
|
1463
|
-
|
|
1464
|
-
### Features
|
|
1465
|
-
|
|
1466
|
-
- web dashboard — Linear-style UI, full API, workflows, task detail
|
|
1467
|
-
- CRUD API endpoints + static file serving for web dashboard
|
|
1468
|
-
|
|
1469
|
-
### Bug Fixes
|
|
1470
|
-
|
|
1471
|
-
- biome lint + typecheck errors for clean push
|
|
1472
|
-
- revert accent to neutral, sidebar/tabs cleanup
|
|
1473
|
-
|
|
1474
|
-
## [1.54.2] - 2026-04-06
|
|
1475
|
-
|
|
1476
|
-
### Added
|
|
1477
|
-
- current work
|
|
1478
|
-
|
|
1479
|
-
## [1.54.1] - 2026-04-06
|
|
1480
|
-
|
|
1481
|
-
### Added
|
|
1482
|
-
- current work
|
|
1483
|
-
|
|
1484
|
-
## [1.54.0] - 2026-04-05
|
|
1485
|
-
|
|
1486
|
-
### Features
|
|
1487
|
-
|
|
1488
|
-
- multi-agent parallel sessions with auto-worktree isolation (#237)
|
|
1489
|
-
- Obsidian vault integration — CLI commands, 8 MCP tools, Kanban board, Canvas roadmap, Dataview dashboards, path security
|
|
1490
|
-
- Sync skill generates `_insights.md` via LLM when Obsidian is configured
|
|
1491
|
-
- Linear CSV import script with per-project Kanban boards and tags
|
|
1492
|
-
|
|
1493
|
-
### Bug Fixes
|
|
1494
|
-
|
|
1495
|
-
- guard feedback array spreads preventing s.push crash (#236)
|
|
1496
|
-
|
|
1497
|
-
## [1.53.1] - 2026-04-04
|
|
1498
|
-
|
|
1499
|
-
### Docs
|
|
1500
|
-
- update README with full command reference, Windsurf support, MCP server, parallel sessions, code intelligence, web dashboard, cloud sync, and architecture overview
|
|
1501
|
-
|
|
1502
|
-
## [1.52.4] - 2026-03-26
|
|
1503
|
-
|
|
1504
|
-
### Bug Fixes
|
|
1505
|
-
- fix: guard feedback array spreads with `Array.isArray()` in `getAggregatedFeedback` — prevents `s.push is not a function` crash when stored feedback contains non-array values
|
|
1506
|
-
|
|
1507
|
-
## [1.52.3] - 2026-03-08
|
|
1508
|
-
|
|
1509
|
-
### Bug Fixes
|
|
1510
|
-
|
|
1511
|
-
- security hardening — command injection, CORS, path traversal, error disclosure (#235)
|
|
1512
|
-
- security hardening — command injection, CORS, path traversal, error disclosure
|
|
1513
|
-
|
|
1514
|
-
## [1.52.2] - 2026-03-07
|
|
1515
|
-
|
|
1516
|
-
### Added
|
|
1517
|
-
- security hardening
|
|
1518
|
-
|
|
1519
|
-
## [1.52.1] - 2026-03-07
|
|
1520
|
-
|
|
1521
|
-
### Added
|
|
1522
|
-
- security hardening
|
|
1523
|
-
|
|
1524
|
-
## [1.51.4] - 2026-03-04
|
|
1525
|
-
|
|
1526
|
-
### Chores
|
|
1527
|
-
|
|
1528
|
-
- Remove dead code from core/ (3 files, 9 exports, -675 lines)
|
|
1529
|
-
|
|
1530
|
-
## [1.51.3] - 2026-03-04
|
|
1531
|
-
|
|
1532
|
-
### Bug Fixes
|
|
1533
|
-
|
|
1534
|
-
- sync auto-includes analysis payload (#233)
|
|
1535
|
-
|
|
1536
|
-
## [1.51.2] - 2026-03-04
|
|
1537
|
-
|
|
1538
|
-
### Fixed
|
|
1539
|
-
- sync now auto-includes analysis payload instead of suggesting a manual step
|
|
1540
|
-
|
|
1541
|
-
## [1.51.1] - 2026-03-04
|
|
1542
|
-
|
|
1543
|
-
### Bug Fixes
|
|
1544
|
-
|
|
1545
|
-
- strip --md/--json flags from context command args (#232)
|
|
1546
|
-
|
|
1547
|
-
## [1.51.0] - 2026-03-03
|
|
1548
|
-
|
|
1549
|
-
### Features
|
|
1550
|
-
|
|
1551
|
-
- context health system + clean --md output (#231)
|
|
1552
|
-
|
|
1553
|
-
## [1.50.3] - 2026-03-03
|
|
1554
|
-
|
|
1555
|
-
### Added
|
|
1556
|
-
- clean md output: remove emojis, redundancy, hardcoded schema from --md prompts
|
|
1557
|
-
|
|
1558
|
-
## [1.50.2] - 2026-03-03
|
|
1559
|
-
|
|
1560
|
-
### Bug Fixes
|
|
1561
|
-
|
|
1562
|
-
- guard against undefined decision.contexts in pattern-store (#230)
|
|
1563
|
-
|
|
1564
|
-
## [1.50.1] - 2026-03-02
|
|
1565
|
-
|
|
1566
|
-
### Fixed
|
|
1567
|
-
- Fix crash in pattern-store when decision.contexts is undefined (legacy data)
|
|
1568
|
-
|
|
1569
|
-
## [1.50.0] - 2026-02-27
|
|
1570
|
-
|
|
1571
|
-
### Features
|
|
1572
|
-
|
|
1573
|
-
- auth UX overhaul — out.* utilities, branded browser page, auto-sync (#229)
|
|
1574
|
-
|
|
1575
|
-
## [1.49.0] - 2026-02-27
|
|
1576
|
-
|
|
1577
|
-
### Features
|
|
1578
|
-
|
|
1579
|
-
- prjct login — browser-based OTP auth (#228)
|
|
1580
|
-
|
|
1581
|
-
## [1.48.1] - 2026-02-27
|
|
1582
|
-
|
|
1583
|
-
### Bug Fixes
|
|
1584
|
-
|
|
1585
|
-
- wire auth command in registry and bypass setup check (#227)
|
|
1586
|
-
|
|
1587
|
-
## [1.48.0] - 2026-02-27
|
|
1588
|
-
|
|
1589
|
-
### Features
|
|
1590
|
-
|
|
1591
|
-
- CLI↔Web bidirectional sync (#226)
|
|
1592
|
-
|
|
1593
|
-
## [1.47.4] - 2026-02-26
|
|
1594
|
-
|
|
1595
|
-
### Refactoring
|
|
1596
|
-
|
|
1597
|
-
- remove static context generation system (#225)
|
|
1598
|
-
|
|
1599
|
-
## [1.47.3] - 2026-02-26
|
|
1600
|
-
|
|
1601
|
-
### Added
|
|
1602
|
-
- current work
|
|
1603
|
-
|
|
1604
|
-
## [1.47.2] - 2026-02-23
|
|
1605
|
-
|
|
1606
|
-
### Added
|
|
1607
|
-
- kill static context generation
|
|
1608
|
-
|
|
1609
|
-
## [1.47.1] - 2026-02-21
|
|
1610
|
-
|
|
1611
|
-
### Refactoring
|
|
1612
|
-
|
|
1613
|
-
- centralize type definitions to core/types/ (#224)
|
|
1614
|
-
|
|
1615
|
-
## [1.47.0] - 2026-02-21
|
|
1616
|
-
|
|
1617
|
-
### Features
|
|
1618
|
-
|
|
1619
|
-
- fix: analytics data pipeline — heartbeat realtime state, screen sizes, time on page
|
|
1620
|
-
|
|
1621
|
-
### Refactoring
|
|
1622
|
-
|
|
1623
|
-
- eliminate barrel files, duplicates, and dead code (#223)
|
|
1624
|
-
- clean up hybrid re-exports and delete tools barrel
|
|
1625
|
-
- eliminate core/types/index.ts barrel (90 importers)
|
|
1626
|
-
- eliminate 4 medium barrel files (schemas, storage, services, agentic)
|
|
1627
|
-
- eliminate 12 leaf barrel files
|
|
1628
|
-
- consolidate scattered types into core/types/
|
|
1629
|
-
- remove duplicate sorting logic and dead markdown-builder
|
|
1630
|
-
|
|
1631
|
-
## [1.46.7] - 2026-02-21
|
|
1632
|
-
|
|
1633
|
-
### Refactoring
|
|
1634
|
-
|
|
1635
|
-
- extract context contract builder from workflow.ts (#222)
|
|
1636
|
-
|
|
1637
|
-
## [1.46.6] - 2026-02-21
|
|
1638
|
-
|
|
1639
|
-
### Refactor
|
|
1640
|
-
|
|
1641
|
-
- Extract context contract builder from workflow.ts
|
|
1642
|
-
|
|
1643
|
-
## [1.46.5] - 2026-02-21
|
|
1644
|
-
|
|
1645
|
-
### Bug Fixes
|
|
1646
|
-
|
|
1647
|
-
- structural fixes for pattern ranking audit (#221)
|
|
1648
|
-
|
|
1649
|
-
## [1.46.5] - 2026-02-20
|
|
1650
|
-
|
|
1651
|
-
### Bug Fixes
|
|
1652
|
-
|
|
1653
|
-
- structural fixes for pattern ranking
|
|
1654
|
-
|
|
1655
|
-
## [1.46.4] - 2026-02-18
|
|
1656
|
-
|
|
1657
|
-
### Bug Fixes
|
|
1658
|
-
|
|
1659
|
-
- daemon production hardening — WAL checkpoint, log rotation, project cleanup (#220)
|
|
1660
|
-
|
|
1661
|
-
## [1.46.3] - 2026-02-18
|
|
1662
|
-
|
|
1663
|
-
### Bug Fixes
|
|
1664
|
-
|
|
1665
|
-
- Daemon production hardening: WAL checkpoint, log rotation, project cleanup (#220)
|
|
1666
|
-
|
|
1667
|
-
## [1.46.2] - 2026-02-18
|
|
1668
|
-
|
|
1669
|
-
### Bug Fixes
|
|
1670
|
-
|
|
1671
|
-
- daemon memory leaks — LRU pool, buffer cap, DB cleanup (#219)
|
|
1672
|
-
|
|
1673
|
-
## [1.46.1] - 2026-02-18
|
|
1674
|
-
|
|
1675
|
-
### Bug Fixes
|
|
1676
|
-
|
|
1677
|
-
- Daemon memory leaks: LRU connection pool, buffer cap, DB cleanup on shutdown
|
|
1678
|
-
|
|
1679
|
-
## [1.46.0] - 2026-02-17
|
|
1680
|
-
|
|
1681
|
-
### Features
|
|
1682
|
-
|
|
1683
|
-
- post-OAuth verify command for MCP health check (#218)
|
|
1684
|
-
|
|
1685
|
-
## [1.45.8] - 2026-02-17
|
|
1686
|
-
|
|
1687
|
-
### Added
|
|
1688
|
-
- post-oauth verify command
|
|
1689
|
-
|
|
1690
|
-
### Bug Fixes
|
|
1691
|
-
|
|
1692
|
-
- add jira/linear/status to global AI config command lists (#217)
|
|
1693
|
-
|
|
1694
|
-
## [1.45.7] - 2026-02-17
|
|
1695
|
-
|
|
1696
|
-
### Bug Fixes
|
|
1697
|
-
|
|
1698
|
-
- release workflow respects package.json version when higher than last tag
|
|
1699
|
-
- fix: jira command not recognized in global config
|
|
1700
|
-
|
|
1701
|
-
## [1.45.6] - 2026-02-17
|
|
1702
|
-
|
|
1703
|
-
### Bug Fixes
|
|
1704
|
-
|
|
1705
|
-
- multi-provider MCP setup + OAuth status fix (v1.45.9) (#216)
|
|
1706
|
-
|
|
1707
|
-
## [1.45.11] - 2026-02-16
|
|
1708
|
-
|
|
1709
|
-
### Added
|
|
1710
|
-
- fix: include templates/ in npm package files — templates missing from published package
|
|
1711
|
-
|
|
1712
|
-
## [1.45.10] - 2026-02-16
|
|
1713
|
-
|
|
1714
|
-
### Added
|
|
1715
|
-
- fix: include templates/ in npm package files — templates missing from published package
|
|
1716
|
-
|
|
1717
|
-
## [1.45.9] - 2026-02-16
|
|
1718
|
-
|
|
1719
|
-
### Added
|
|
1720
|
-
- multi-provider MCP setup + OAuth status fix
|
|
1721
|
-
|
|
1722
|
-
## [1.45.8] - 2026-02-16
|
|
1723
|
-
|
|
1724
|
-
### Added
|
|
1725
|
-
- fix provider cache crash and MCP tool access
|
|
1726
|
-
|
|
1727
|
-
## [1.45.7] - 2026-02-16
|
|
1728
|
-
|
|
1729
|
-
### Added
|
|
1730
|
-
- fix provider cache crash and MCP tool access
|
|
1731
|
-
|
|
1732
|
-
## [1.45.6] - 2026-02-17
|
|
1733
|
-
|
|
1734
|
-
### Bug Fixes
|
|
1735
|
-
|
|
1736
|
-
- MCP OAuth token cache mismatch - pin mcp-remote version + allow MCP tools in templates (#214)
|
|
1737
|
-
|
|
1738
|
-
## [1.45.5] - 2026-02-17
|
|
1739
|
-
|
|
1740
|
-
### Bug Fixes
|
|
1741
|
-
|
|
1742
|
-
- MCP OAuth token cache mismatch - pin mcp-remote version + allow MCP tools in templates (#214)
|
|
1743
|
-
|
|
1744
|
-
## [1.45.4] - 2026-02-17
|
|
1745
|
-
|
|
1746
|
-
### Bug Fixes
|
|
1747
|
-
|
|
1748
|
-
- p. workflow agentic natural language parsing (#213)
|
|
1749
|
-
|
|
1750
|
-
## [1.45.3] - 2026-02-17
|
|
1751
|
-
|
|
1752
|
-
### Bug Fixes
|
|
1753
|
-
|
|
1754
|
-
- p. workflow agentic natural language parsing (#213)
|
|
1755
|
-
|
|
1756
|
-
## [1.45.2] - 2026-02-17
|
|
1757
|
-
|
|
1758
|
-
### Bug Fixes
|
|
1759
|
-
|
|
1760
|
-
- Jira/Linear MCP OAuth setup - guides user through mcp-remote auth (#212)
|
|
1761
|
-
|
|
1762
|
-
## [1.45.2] - 2026-02-16
|
|
1763
|
-
|
|
1764
|
-
### Added
|
|
1765
|
-
- fix: Jira/Linear MCP OAuth setup
|
|
1766
|
-
|
|
1767
|
-
## [1.45.1] - 2026-02-17
|
|
1768
|
-
|
|
1769
|
-
### Bug Fixes
|
|
1770
|
-
|
|
1771
|
-
- prjct update - daemon restart and latest version detection (#211)
|
|
1772
|
-
|
|
1773
|
-
## [1.45.1] - 2026-02-17
|
|
1774
|
-
|
|
1775
|
-
### Bug Fixes
|
|
1776
|
-
|
|
1777
|
-
- prjct update now uses npm install @latest to always fetch true latest version
|
|
1778
|
-
- daemon restart failure is non-fatal warning, not an error
|
|
1779
|
-
- spawnDaemon polls up to 3s for daemon readiness after install
|
|
1780
|
-
|
|
1781
|
-
## [1.45.0] - 2026-02-17
|
|
1782
|
-
|
|
1783
|
-
### Features
|
|
1784
|
-
|
|
1785
|
-
- migrate linear/jira integrations to MCP-only (#210)
|
|
1786
|
-
|
|
1787
|
-
## [1.44.9] - 2026-02-16
|
|
1788
|
-
|
|
1789
|
-
### Added
|
|
1790
|
-
- JIRA Sprint/Backlog Differentiation
|
|
1791
|
-
|
|
1792
|
-
## [1.44.8] - 2026-02-16
|
|
1793
|
-
|
|
1794
|
-
### Added
|
|
1795
|
-
- MCP Issue Trackers
|
|
1796
|
-
|
|
1797
|
-
## [1.44.7] - 2026-02-16
|
|
1798
|
-
|
|
1799
|
-
### Added
|
|
1800
|
-
- MCP Issue Trackers
|
|
1801
|
-
|
|
1802
|
-
## [1.44.6] - 2026-02-16
|
|
1803
|
-
|
|
1804
|
-
### Added
|
|
1805
|
-
- MCP Issue Trackers
|
|
1806
|
-
|
|
1807
|
-
## [1.44.5] - 2026-02-16
|
|
1808
|
-
|
|
1809
|
-
### Bug Fixes
|
|
1810
|
-
|
|
1811
|
-
- remove unused _agentsList in workflow (PRJ-347) (#209)
|
|
1812
|
-
|
|
1813
|
-
## [1.44.4] - 2026-02-16
|
|
1814
|
-
|
|
1815
|
-
### Bug Fixes
|
|
1816
|
-
|
|
1817
|
-
- analyze shows actual report path (PRJ-348) (#208)
|
|
1818
|
-
|
|
1819
|
-
## [1.44.3] - 2026-02-16
|
|
1820
|
-
|
|
1821
|
-
### Bug Fixes
|
|
1822
|
-
|
|
1823
|
-
- widen retry test timing tolerances (PRJ-346) (#207)
|
|
1824
|
-
|
|
1825
|
-
## [1.44.2] - 2026-02-16
|
|
1826
|
-
|
|
1827
|
-
### Bug Fixes
|
|
1828
|
-
|
|
1829
|
-
- legacy previousTask not migrated to pausedTasks (PRJ-345) (#206)
|
|
1830
|
-
|
|
1831
|
-
## [1.44.3] - 2026-02-16
|
|
1832
|
-
|
|
1833
|
-
### Bug Fixes
|
|
1834
|
-
|
|
1835
|
-
- legacy previousTask not migrated to pausedTasks (PRJ-345)
|
|
1836
|
-
|
|
1837
|
-
## [1.44.1] - 2026-02-16
|
|
1838
|
-
|
|
1839
|
-
### Bug Fixes
|
|
1840
|
-
|
|
1841
|
-
- resumeTask and pauseTask preserve business metadata (PRJ-344) (#205)
|
|
1842
|
-
|
|
1843
|
-
## [1.44.0] - 2026-02-16
|
|
1844
|
-
|
|
1845
|
-
### Features
|
|
1846
|
-
|
|
1847
|
-
- migrate sessions from JSON files to SQLite (#204)
|
|
1848
|
-
|
|
1849
|
-
## [1.43.1] - 2026-02-15
|
|
1850
|
-
|
|
1851
|
-
### Added
|
|
1852
|
-
- Sessions migrated to SQLite
|
|
1853
|
-
|
|
1854
|
-
### Bug Fixes
|
|
1855
|
-
|
|
1856
|
-
- update command shows stale version on every run (#203)
|
|
1857
|
-
|
|
1858
|
-
## [1.43.0] - 2026-02-15
|
|
1859
|
-
|
|
1860
|
-
### Features
|
|
1861
|
-
|
|
1862
|
-
- context file suggestion reinforcement learning (#202)
|
|
1863
|
-
|
|
1864
|
-
## [1.42.4] - 2026-02-15
|
|
1865
|
-
|
|
1866
|
-
### Added
|
|
1867
|
-
- Context file suggestion reinforcement learning
|
|
1868
|
-
|
|
1869
|
-
## [1.42.3] - 2026-02-15
|
|
1870
|
-
|
|
1871
|
-
### Bug Fixes
|
|
1872
|
-
|
|
1873
|
-
- state storage updates preserve existing state to prevent data loss (#201)
|
|
1874
|
-
|
|
1875
|
-
## [1.42.4] - 2026-02-15
|
|
1876
|
-
|
|
1877
|
-
### Bug Fixes
|
|
1878
|
-
- fix: state storage updates now preserve existing state to prevent data loss during task completion, pause, and resume operations
|
|
1879
|
-
- test: add state storage integrity tests
|
|
1880
|
-
|
|
1881
|
-
## [1.42.2] - 2026-02-15
|
|
1882
|
-
|
|
1883
|
-
### Bug Fixes
|
|
1884
|
-
|
|
1885
|
-
- add update to daemon bypass commands (#200)
|
|
1886
|
-
|
|
1887
|
-
## [1.42.3] - 2026-02-15
|
|
1888
|
-
|
|
1889
|
-
### Bug Fixes
|
|
1890
|
-
- fix: `prjct update` bypasses daemon so it runs with current binary code
|
|
1891
|
-
|
|
1892
|
-
## [1.42.1] - 2026-02-15
|
|
1893
|
-
|
|
1894
|
-
### Bug Fixes
|
|
1895
|
-
|
|
1896
|
-
- daemon commands ignore request.cwd causing cross-project contamination (#199)
|
|
1897
|
-
- pass request.cwd to analyze/cleanup/design in daemon
|
|
1898
|
-
|
|
1899
|
-
## [1.42.1] - 2026-02-15
|
|
1900
|
-
|
|
1901
|
-
### Bug Fixes
|
|
1902
|
-
- fix: daemon analyze/cleanup/design commands ignore request.cwd causing cross-project contamination
|
|
1903
|
-
|
|
1904
|
-
## [1.42.0] - 2026-02-15
|
|
1905
|
-
|
|
1906
|
-
### Features
|
|
1907
|
-
|
|
1908
|
-
- add task estimation service (#198)
|
|
1909
|
-
- add task estimation service
|
|
1910
|
-
- onboarding tours + help tooltips + stats grid redesign
|
|
1911
|
-
|
|
1912
|
-
## [1.41.1] - 2026-02-15
|
|
1913
|
-
|
|
1914
|
-
### Added
|
|
1915
|
-
- task estimation
|
|
1916
|
-
|
|
1917
|
-
## [1.41.0] - 2026-02-15
|
|
1918
|
-
|
|
1919
|
-
### Features
|
|
1920
|
-
|
|
1921
|
-
- provider capabilities system + provider-agnostic templates (#197)
|
|
1922
|
-
|
|
1923
|
-
## [1.40.3] - 2026-02-15
|
|
1924
|
-
|
|
1925
|
-
### Added
|
|
1926
|
-
- Provider capabilities system
|
|
1927
|
-
|
|
1928
|
-
## [1.40.2] - 2026-02-15
|
|
1929
|
-
|
|
1930
|
-
### Added
|
|
1931
|
-
- Provider capabilities system
|
|
1932
|
-
|
|
1933
|
-
## [1.40.1] - 2026-02-15
|
|
1934
|
-
|
|
1935
|
-
### Bug Fixes
|
|
1936
|
-
|
|
1937
|
-
- sanitize SQLite bindings in JSON migration (#196)
|
|
1938
|
-
|
|
1939
|
-
## [1.40.1] - 2026-02-15
|
|
1940
|
-
|
|
1941
|
-
### Fixed
|
|
1942
|
-
- Sanitize SQLite bindings in JSON migration to prevent type errors
|
|
1943
|
-
|
|
1944
|
-
## [1.40.0] - 2026-02-15
|
|
1945
|
-
|
|
1946
|
-
### Features
|
|
1947
|
-
|
|
1948
|
-
- redesign prjct update as 3-phase system updater (#195)
|
|
1949
|
-
|
|
1950
|
-
## [1.39.0] - 2026-02-15
|
|
1951
|
-
|
|
1952
|
-
### Features
|
|
1953
|
-
|
|
1954
|
-
- instruction rule type + daemon stop/restart/stale detection (#194)
|
|
1955
|
-
- redesign prjct update as 3-phase system updater
|
|
1956
|
-
|
|
1957
|
-
## [1.38.10] - 2026-02-15
|
|
1958
|
-
|
|
1959
|
-
### Added
|
|
1960
|
-
- instruction rule type + daemon stop/restart/stale detection
|
|
1961
|
-
|
|
1962
|
-
## [1.38.7] - 2026-02-15
|
|
1963
|
-
|
|
1964
|
-
### Bug Fixes
|
|
1965
|
-
|
|
1966
|
-
- purge legacy code and fix test timeout (#193)
|
|
1967
|
-
|
|
1968
|
-
## [1.38.8] - 2026-02-14
|
|
1969
|
-
|
|
1970
|
-
### Added
|
|
1971
|
-
- legacy code purge phase 2
|
|
1972
|
-
|
|
1973
|
-
## [1.38.7] - 2026-02-14
|
|
1974
|
-
|
|
1975
|
-
### Added
|
|
1976
|
-
- legacy code purge + test fix
|
|
1977
|
-
|
|
1978
|
-
## [1.38.6] - 2026-02-14
|
|
1979
|
-
|
|
1980
|
-
### Bug Fixes
|
|
1981
|
-
|
|
1982
|
-
- all agents get full operational context (#192)
|
|
1983
|
-
|
|
1984
|
-
## [1.38.5] - 2026-02-14
|
|
1985
|
-
|
|
1986
|
-
### Bug Fixes
|
|
1987
|
-
|
|
1988
|
-
- skip diff preview in non-interactive sync mode (#191)
|
|
1989
|
-
- all agents get full operational context (#192)
|
|
1990
|
-
|
|
1991
|
-
## [1.38.4] - 2026-02-14
|
|
1992
|
-
|
|
1993
|
-
### Bug Fixes
|
|
1994
|
-
|
|
1995
|
-
- reconcile queue with Linear status on sync (#190)
|
|
1996
|
-
|
|
1997
|
-
## [1.38.3] - 2026-02-14
|
|
1998
|
-
|
|
1999
|
-
### Bug Fixes
|
|
2000
|
-
|
|
2001
|
-
- reconcile queue with Linear status on sync
|
|
2002
|
-
- replace hardcoded version in server API info (PRJ-341) (#189)
|
|
2003
|
-
|
|
2004
|
-
## [1.38.2] - 2026-02-14
|
|
2005
|
-
|
|
2006
|
-
### Bug Fixes
|
|
2007
|
-
|
|
2008
|
-
- replace hardcoded version in server API info (PRJ-341)
|
|
2009
|
-
- replace unbounded any types in workflow-rule-storage (PRJ-339) (#188)
|
|
2010
|
-
|
|
2011
|
-
## [1.38.1] - 2026-02-14
|
|
2012
|
-
|
|
2013
|
-
### Bug Fixes
|
|
2014
|
-
|
|
2015
|
-
- auto-repair Codex router metadata during sync (#187)
|
|
2016
|
-
|
|
2017
|
-
## [1.38.1] - 2026-02-14
|
|
2018
|
-
|
|
2019
|
-
### Bug Fixes
|
|
2020
|
-
|
|
2021
|
-
- Auto-repair Codex router metadata during sync and doctor checks (#187)
|
|
2022
|
-
|
|
2023
|
-
## [1.38.0] - 2026-02-14
|
|
2024
|
-
|
|
2025
|
-
### Features
|
|
2026
|
-
|
|
2027
|
-
- hybrid sync pipeline - CLI + LLM analysis (#186)
|
|
2028
|
-
|
|
2029
|
-
## [1.37.1] - 2026-02-14
|
|
2030
|
-
|
|
2031
|
-
### Bug Fixes
|
|
2032
|
-
|
|
2033
|
-
- neutral banner colors + add Codex to provider selection (#185)
|
|
2034
|
-
|
|
2035
|
-
## [1.37.1] - 2026-02-14
|
|
2036
|
-
|
|
2037
|
-
### Fixed
|
|
2038
|
-
- Banner colors: neutral warm gray gradient (was loud cyan/pink)
|
|
2039
|
-
- Codex provider now appears in `prjct start` selection menu
|
|
2040
|
-
|
|
2041
|
-
## [1.37.0] - 2026-02-14
|
|
2042
|
-
|
|
2043
|
-
### Features
|
|
2044
|
-
|
|
2045
|
-
- Context7 integration, pattern extraction, and p-command resolver (#184)
|
|
2046
|
-
|
|
2047
|
-
### Bug Fixes
|
|
2048
|
-
|
|
2049
|
-
- preserve all projects in global AI tool configs during sync
|
|
2050
|
-
|
|
2051
|
-
## [1.36.2] - 2026-02-13
|
|
2052
|
-
|
|
2053
|
-
### Added
|
|
2054
|
-
- current work
|
|
2055
|
-
|
|
2056
|
-
## [1.36.1] - 2026-02-13
|
|
2057
|
-
|
|
2058
|
-
### Added
|
|
2059
|
-
- current work
|
|
2060
|
-
|
|
2061
|
-
## [1.36.0] - 2026-02-14
|
|
2062
|
-
|
|
2063
|
-
### Features
|
|
2064
|
-
|
|
2065
|
-
- Custom workflows with agentic auto-configuration (#183)
|
|
2066
|
-
|
|
2067
|
-
## [1.36.0] - 2026-02-13
|
|
2068
|
-
|
|
2069
|
-
### Features
|
|
2070
|
-
|
|
2071
|
-
- Custom workflows with agentic auto-configuration (#183)
|
|
2072
|
-
- Create user-defined workflows beyond built-in (task/done/ship/sync)
|
|
2073
|
-
- Dynamic template generation at ~/.claude/commands/p/{name}.md
|
|
2074
|
-
- CLI commands: create, list, delete, run
|
|
2075
|
-
- Full test coverage (21 new tests)
|
|
2076
|
-
|
|
2077
|
-
## [1.35.0] - 2026-02-13
|
|
2078
|
-
|
|
2079
|
-
### Features
|
|
2080
|
-
|
|
2081
|
-
- add diff between consecutive analysis runs (PRJ-275) (#182)
|
|
2082
|
-
|
|
2083
|
-
## [1.34.0] - 2026-02-13
|
|
2084
|
-
|
|
2085
|
-
### Features
|
|
2086
|
-
|
|
2087
|
-
- add analysis rollback to restore previous sealed version (PRJ-276) (#181)
|
|
2088
|
-
|
|
2089
|
-
## [1.33.1] - 2026-02-12
|
|
2090
|
-
|
|
2091
|
-
### Added
|
|
2092
|
-
- Analysis rollback to restore previous sealed version (PRJ-276)
|
|
2093
|
-
|
|
2094
|
-
## [1.33.0] - 2026-02-12
|
|
2095
|
-
|
|
2096
|
-
### Features
|
|
2097
|
-
|
|
2098
|
-
- dynamic workflow customization — hooks, gates, and custom steps (#180)
|
|
2099
|
-
|
|
2100
|
-
## [1.32.1] - 2026-02-12
|
|
2101
|
-
|
|
2102
|
-
### Added
|
|
2103
|
-
- Phase 2: Dynamic workflow customization — hooks, gates, and custom steps via `prjct workflow`
|
|
2104
|
-
|
|
2105
|
-
## [1.32.0] - 2026-02-12
|
|
2106
|
-
|
|
2107
|
-
### Features
|
|
2108
|
-
|
|
2109
|
-
- session continuity and project-switch context preservation (PRJ-285) (#177)
|
|
2110
|
-
|
|
2111
|
-
## [1.31.0] - 2026-02-12
|
|
2112
|
-
|
|
2113
|
-
### Features
|
|
2114
|
-
|
|
2115
|
-
- exquisite terminal UX — rich markdown formatters + branded output (#179)
|
|
2116
|
-
|
|
2117
|
-
## [1.30.2] - 2026-02-12
|
|
2118
|
-
|
|
2119
|
-
### Added
|
|
2120
|
-
- exquisite-terminal-ux
|
|
2121
|
-
|
|
2122
|
-
## [1.30.1] - 2026-02-12
|
|
2123
|
-
|
|
2124
|
-
### Bug Fixes
|
|
2125
|
-
|
|
2126
|
-
- guard analysis array accesses against undefined (n.push crash) (#178)
|
|
2127
|
-
|
|
2128
|
-
## [1.30.1] - 2026-02-11
|
|
2129
|
-
|
|
2130
|
-
### Added
|
|
2131
|
-
- current work
|
|
2132
|
-
|
|
2133
|
-
## [1.30.0] - 2026-02-12
|
|
2134
|
-
|
|
2135
|
-
### Features
|
|
2136
|
-
|
|
2137
|
-
- enrich AI formatters with analysis data + add Codex support (#176)
|
|
2138
|
-
|
|
2139
|
-
## [1.29.0] - 2026-02-12
|
|
2140
|
-
|
|
2141
|
-
### Features
|
|
2142
|
-
|
|
2143
|
-
- JSON conflict handling + fix prjct start overwrite (#175)
|
|
2144
|
-
- Enrich AI formatters with analysis data + add Codex support (PRJ-277)
|
|
2145
|
-
|
|
2146
|
-
## [1.28.2] - 2026-02-11
|
|
2147
|
-
|
|
2148
|
-
### Added
|
|
2149
|
-
- json conflict handling in templates
|
|
2150
|
-
|
|
2151
|
-
## [1.28.1] - 2026-02-11
|
|
2152
|
-
|
|
2153
|
-
### Added
|
|
2154
|
-
- test feature
|
|
2155
|
-
|
|
2156
|
-
## [1.28.0] - 2026-02-11
|
|
2157
|
-
|
|
2158
|
-
### Features
|
|
2159
|
-
|
|
2160
|
-
- agentic Linear template without MCP dependency
|
|
2161
|
-
|
|
2162
|
-
## [1.27.1] - 2026-02-11
|
|
2163
|
-
|
|
2164
|
-
### Bug Fixes
|
|
2165
|
-
|
|
2166
|
-
- exclude router files (p.md/p.toml) from subcommand installation
|
|
2167
|
-
|
|
2168
|
-
## [1.27.0] - 2026-02-11
|
|
2169
|
-
|
|
2170
|
-
### Features
|
|
2171
|
-
|
|
2172
|
-
- dual-runtime SQLite — bun:sqlite + better-sqlite3 (#174)
|
|
2173
|
-
|
|
2174
|
-
## [1.27.6] - 2026-02-11
|
|
2175
|
-
|
|
2176
|
-
### Added
|
|
2177
|
-
- Dual-runtime SQLite — bun:sqlite + better-sqlite3 for Node.js compatibility
|
|
2178
|
-
|
|
2179
|
-
## [1.27.1] - 2026-02-11
|
|
2180
|
-
|
|
2181
|
-
### Removed
|
|
2182
|
-
- Dead context generators (`ContextFileGenerator`, legacy `generateContext()`) — no readers existed
|
|
2183
|
-
- StorageManager MD write-through (`toMarkdown()`, `getLayer()`, `getMdFilename()`) from base class and 8 subclasses
|
|
2184
|
-
- ~1,750 lines of orphaned code; writes are faster (no MD file I/O on state changes)
|
|
2185
|
-
|
|
2186
|
-
## [1.26.0] - 2026-02-11
|
|
2187
|
-
|
|
2188
|
-
### Features
|
|
2189
|
-
|
|
2190
|
-
- kill JSON I/O + skill-on-demand --md architecture (PRJ-303) (#173)
|
|
2191
|
-
|
|
2192
|
-
## [1.27.0] - 2026-02-11
|
|
2193
|
-
|
|
2194
|
-
### Features
|
|
2195
|
-
|
|
2196
|
-
- **`--md` flag on all CLI commands**: New LLM-optimized markdown output mode for all commands (`prjct task --md`, `prjct done --md`, `prjct sync --md`, etc.). Produces clean markdown with task context, relevant files, subtasks, and next steps — designed for agent consumption.
|
|
2197
|
-
- **Ultra-thin templates**: All 36 command templates reduced from 6,066 → ~600 total lines (~90% reduction). Fast commands are ~10 lines, smart commands ~30 lines. Templates delegate data/formatting to CLI `--md` output, preserving agentic intelligence (exploration, planning, clarification).
|
|
2198
|
-
- **Ultra-thin global instructions**: CLAUDE.md reduced from 488 → 16 lines (~97% reduction). GEMINI.md, WINDSURF.md, ANTIGRAVITY.md, CURSOR.mdc similarly reduced. Zero wasted context tokens.
|
|
2199
|
-
- **New `md-formatter.ts` utility**: Shared markdown formatting functions (`mdTaskHeader`, `mdSubtasks`, `mdRelevantFiles`, `mdInstructions`, `mdNextSteps`, etc.) used by all command groups.
|
|
2200
|
-
- **Fix: `task` command registration**: `prjct task` was listed in command-data but had no handler in registry or CLI routing. Now properly registered and routed through both normal CLI and daemon paths.
|
|
2201
|
-
|
|
2202
|
-
### Changes
|
|
2203
|
-
|
|
2204
|
-
- 36 command templates rewritten (auth, bug, cleanup, dash, design, done, enrich, git, history, idea, impact, init, jira, learnings, linear, merge, next, pause, plan, prd, resume, review, serve, setup, ship, skill, spec, status, sync, task, test, update, verify, workflow, analyze)
|
|
2205
|
-
- 5 global templates rewritten (CLAUDE.md, GEMINI.md, WINDSURF.md, ANTIGRAVITY.md, CURSOR.mdc)
|
|
2206
|
-
- 6 CLAUDE.md modules deprecated (CLAUDE-commands, CLAUDE-git, CLAUDE-storage, CLAUDE-intelligence simplified to stubs; CLAUDE-core reduced to 14 lines; module-config.json single profile)
|
|
2207
|
-
- `dist/templates.json` reduced from 358 KB → 177.6 KB (~50% reduction)
|
|
2208
|
-
- All command groups (workflow, planning, shipping, analytics, analysis) accept `{ md?: boolean }` option
|
|
2209
|
-
- Daemon `executeCommand` now has explicit cases for all workflow commands with `--md` passthrough
|
|
2210
|
-
- `core/index.ts` standardCommands map passes `md` flag to all handlers
|
|
2211
|
-
|
|
2212
|
-
### Metrics
|
|
2213
|
-
|
|
2214
|
-
| Metric | Before | After | Reduction |
|
|
2215
|
-
|--------|--------|-------|-----------|
|
|
2216
|
-
| CLAUDE.md (always loaded) | 488 lines | 16 lines | 97% |
|
|
2217
|
-
| Templates total lines | 6,066 | ~600 | 90% |
|
|
2218
|
-
| `dist/templates.json` | 358 KB | 177.6 KB | 50% |
|
|
2219
|
-
| Context tokens per session | ~6,500 | ~350 | 95% |
|
|
2220
|
-
|
|
2221
|
-
## [1.26.1] - 2026-02-10
|
|
2222
|
-
|
|
2223
|
-
### Added
|
|
2224
|
-
- purge JSON I/O from templates + prjct update command
|
|
2225
|
-
|
|
2226
|
-
## [1.26.0] - 2026-02-10
|
|
2227
|
-
|
|
2228
|
-
### Features
|
|
2229
|
-
|
|
2230
|
-
- **`prjct update` command**: New CLI command that migrates all projects from JSON to SQLite and sweeps leftover JSON files. Supports `--all` (all projects) and `--dry-run` flags.
|
|
2231
|
-
- **Template purge — zero JSON I/O**: Rewrote all 49 template files (commands, subagents, global instructions) to use `prjct` CLI commands instead of direct JSON file reads/writes. Templates now delegate all data operations to the CLI, which handles SQLite internally.
|
|
2232
|
-
- **Fix performance-tracker date filter**: `getReport(id, 0)` now correctly means "today" instead of "this exact millisecond".
|
|
2233
|
-
|
|
2234
|
-
### Changes
|
|
2235
|
-
|
|
2236
|
-
- 27 command templates simplified to use CLI commands (`prjct task`, `prjct done`, `prjct ship`, etc.)
|
|
2237
|
-
- 8 global instruction files updated (CLAUDE-core/intelligence/storage, ANTIGRAVITY, GEMINI, CURSOR, WINDSURF, STORAGE-SPEC)
|
|
2238
|
-
- 7 subagent/context templates updated (agent-base, orchestrator, planner, shipper, workflow, dashboard, roadmap)
|
|
2239
|
-
- New `core/commands/update.ts` with `UpdateCommands` class
|
|
2240
|
-
- Registered in command-data, register, index, and commands facade
|
|
2241
|
-
|
|
2242
|
-
## [1.25.0] - 2026-02-11
|
|
2243
|
-
|
|
2244
|
-
### Features
|
|
2245
|
-
|
|
2246
|
-
- kill all JSON file I/O — everything to SQLite (PRJ-303) (#172)
|
|
2247
|
-
|
|
2248
|
-
## [1.25.0] - 2026-02-10
|
|
2249
|
-
|
|
2250
|
-
### Features
|
|
2251
|
-
|
|
2252
|
-
- **Kill all JSON file I/O — everything to SQLite (PRJ-303)**: Migrated 4 modules that were still reading/writing JSON files directly, bypassing the SQLite migration. All storage now goes through `prjctDb` or `StorageManager`.
|
|
2253
|
-
|
|
2254
|
-
### Changes
|
|
2255
|
-
|
|
2256
|
-
- `core/integrations/linear/sync.ts` — Replaced `readFile`/`writeFile` on `issues.json` with `prjctDb.getDoc/setDoc`
|
|
2257
|
-
- `core/services/context-generator.ts` — Replaced direct `state.json`, `queue.json`, `ideas.json`, `shipped.json` reads with `stateStorage`, `queueStorage`, `ideasStorage`, `shippedStorage`
|
|
2258
|
-
- `core/services/sync-service.ts` — `updateProjectJson` and `updateStateJson` now use `prjctDb`/`stateStorage` instead of `fs.readFile`/`fs.writeFile`
|
|
2259
|
-
- `core/services/hooks-service.ts` — `getHookConfig`/`saveHookConfig` now use `prjctDb.getDoc/setDoc` for `project.json` data
|
|
2260
|
-
- `core/storage/migrate-json.ts` — Added `sweepLegacyJson()` that runs on every sync to import and delete any ghost JSON files
|
|
2261
|
-
- Templates updated to reference `prjct.db` instead of `storage/*.json`
|
|
2262
|
-
|
|
2263
|
-
### Test Plan
|
|
2264
|
-
|
|
2265
|
-
#### For QA
|
|
2266
|
-
1. Run `bun test` — 1057 tests pass
|
|
2267
|
-
2. Run `prjct linear sync` — issues stored in `prjct.db`, no `issues.json` on disk
|
|
2268
|
-
3. Run `prjct sync --yes` — regenerates context without JSON file errors
|
|
2269
|
-
4. Verify `ls ~/.prjct-cli/projects/*/storage/` has no `.json` files
|
|
2270
|
-
5. Run `prjct status` — works without JSON files
|
|
2271
|
-
|
|
2272
|
-
#### For Users
|
|
2273
|
-
**What changed:** Internal storage optimization — no user action needed.
|
|
2274
|
-
**Breaking changes:** None
|
|
2275
|
-
|
|
2276
|
-
## [1.24.1] - 2026-02-11
|
|
2277
|
-
|
|
2278
|
-
### Bug Fixes
|
|
2279
|
-
|
|
2280
|
-
- strip shebangs in build via esbuild plugin (#171)
|
|
2281
|
-
|
|
2282
|
-
## [1.24.2] - 2026-02-10
|
|
2283
|
-
|
|
2284
|
-
### Bug Fixes
|
|
2285
|
-
|
|
2286
|
-
- **Strip shebangs in build via esbuild plugin**: Added a `stripShebangPlugin` to the build script that removes shebangs from source files before bundling. This prevents double-shebang SyntaxErrors when source files (e.g. `#!/usr/bin/env bun`) are compiled with a banner that also injects a shebang. The previous fix (v1.24.1) removed shebangs manually from known files; this fix handles it generically for all future source files.
|
|
2287
|
-
|
|
2288
|
-
### Test Plan
|
|
2289
|
-
|
|
2290
|
-
#### For QA
|
|
2291
|
-
1. Add `#!/usr/bin/env bun` to any source `.ts` file used as an entry point
|
|
2292
|
-
2. Run `node scripts/build.js`
|
|
2293
|
-
3. Verify compiled output has exactly one shebang (`#!/usr/bin/env node`) — not two
|
|
2294
|
-
4. Run `node dist/cli/linear.mjs --help` — should work without SyntaxError
|
|
2295
|
-
|
|
2296
|
-
#### For Users
|
|
2297
|
-
**What changed:** Build-time fix — no user action needed.
|
|
2298
|
-
**Breaking changes:** None
|
|
2299
|
-
|
|
2300
|
-
## [1.24.0] - 2026-02-11
|
|
2301
|
-
|
|
2302
|
-
### Features
|
|
2303
|
-
|
|
2304
|
-
- implement daemon mode with IPC socket for near-zero startup (PRJ-302) (#170)
|
|
2305
|
-
|
|
2306
|
-
### Bug Fixes
|
|
2307
|
-
|
|
2308
|
-
- remove source shebang causing SyntaxError in compiled linear CLI (#169)
|
|
2309
|
-
|
|
2310
|
-
## [1.24.1] - 2026-02-10
|
|
2311
|
-
|
|
2312
|
-
### Bug Fixes
|
|
2313
|
-
|
|
2314
|
-
- **Remove source shebangs from compiled entry points**: `core/daemon/entry.ts` and `core/cli/lint-meta-commentary.ts` had shebangs (`#!/usr/bin/env node`, `#!/usr/bin/env bun`) that caused dual shebangs in compiled `.mjs` output. Node.js only strips the first-line shebang, so the second became a SyntaxError. The build script's `banner` option is the single source of truth for shebang injection.
|
|
2315
|
-
|
|
2316
|
-
## [1.24.0] - 2026-02-10
|
|
2317
|
-
|
|
2318
|
-
### Features
|
|
2319
|
-
|
|
2320
|
-
- **Daemon mode with IPC socket**: Background daemon process keeps CLI modules warm in memory. Commands are routed through a Unix domain socket using NDJSON protocol, achieving 1.6ms IPC roundtrip. Production startup drops from ~1060ms to ~220ms (4.8x speedup).
|
|
2321
|
-
- **Thin shim entry point**: Production build now uses a 1.6KB shim (`prjct.mjs`) that tries the daemon first, only loading the full 613KB core bundle (`prjct-core.mjs`) when the daemon is unavailable.
|
|
2322
|
-
- **Auto-start daemon**: First CLI invocation automatically spawns the daemon in background for future commands. 30-minute idle auto-shutdown.
|
|
2323
|
-
- **Daemon lifecycle commands**: `prjct daemon start|stop|status` for manual control. Supports `--foreground`, `--port=N`, `--no-http` flags.
|
|
2324
|
-
|
|
2325
|
-
### Security
|
|
2326
|
-
|
|
2327
|
-
- **Removed source maps from production build**: `.map` files previously embedded full `sourcesContent` including credential management code (`keychain.ts`, `project-credentials.ts`). Source maps are now completely removed from `dist/`.
|
|
2328
|
-
|
|
2329
|
-
### Implementation Details
|
|
2330
|
-
|
|
2331
|
-
Daemon mode with Unix socket IPC for near-zero CLI startup. The daemon pre-loads `PrjctCommands`, `CommandRegistry`, and storage caches once, then reuses them across invocations. The thin shim entry point avoids parsing the heavy core bundle when the daemon handles the command. ESM static imports are hoisted before any code runs, so all imports in `bin/prjct.ts` are now dynamic to enable the fast path.
|
|
2332
|
-
|
|
2333
|
-
### Learnings
|
|
2334
|
-
|
|
2335
|
-
- ESM hoists static imports — placing code before `import` statements doesn't help; all imports must be dynamic for a true fast path
|
|
2336
|
-
- esbuild code splitting creates ~60 chunk files, not suitable for CLI distribution; explicit two-file shim is cleaner
|
|
2337
|
-
- `process.stdin.unref()` doesn't exist in Bun — needs try/catch guard
|
|
2338
|
-
- Unix domain sockets with NDJSON are ideal for local IPC: secure (file permissions), fast, debuggable
|
|
2339
|
-
|
|
2340
|
-
### Test Plan
|
|
2341
|
-
|
|
2342
|
-
#### For QA
|
|
2343
|
-
1. `prjct daemon start` — verify socket at `~/.prjct-cli/run/daemon.sock`
|
|
2344
|
-
2. `prjct daemon status` — shows PID, uptime, commands served
|
|
2345
|
-
3. `prjct sync --json --yes` — works via IPC with valid JSON output
|
|
2346
|
-
4. `prjct daemon stop` — clean shutdown, socket removed
|
|
2347
|
-
5. Run any command without daemon — falls back to direct execution
|
|
2348
|
-
6. Verify `dist/` contains NO `.map` files or `sourcesContent`
|
|
2349
|
-
|
|
2350
|
-
#### For Users
|
|
2351
|
-
**What changed:** CLI commands are now routed through a background daemon for faster execution.
|
|
2352
|
-
**How to use:** Automatic — daemon starts on first use, stops after 30min idle. Use `PRJCT_NO_DAEMON=1` to disable.
|
|
2353
|
-
**Breaking changes:** None.
|
|
2354
|
-
|
|
2355
|
-
## [1.23.1] - 2026-02-10
|
|
2356
|
-
|
|
2357
|
-
### Bug Fix
|
|
2358
|
-
|
|
2359
|
-
- **Fix dual shebang in compiled linear CLI**: Removed `#!/usr/bin/env bun` from `core/cli/linear.ts` source file. The build script (esbuild) already injects `#!/usr/bin/env node` via banner, so the source shebang was duplicated in `dist/cli/linear.mjs` — causing `SyntaxError: Invalid or unexpected token` on Node.js for all `prjct linear` commands.
|
|
2360
|
-
|
|
2361
|
-
### Root Cause
|
|
2362
|
-
|
|
2363
|
-
The source file `core/cli/linear.ts` had `#!/usr/bin/env bun` on line 1. esbuild preserved it during compilation, and the build banner injected `#!/usr/bin/env node` — resulting in two shebangs. Node.js only strips line 1's shebang, so line 2 (`#!/usr/bin/env bun`) was parsed as JavaScript and threw a SyntaxError.
|
|
2364
|
-
|
|
2365
|
-
### Learnings
|
|
2366
|
-
|
|
2367
|
-
- Source files compiled by esbuild should NOT have shebangs — the build script's `banner` option is the single source of truth for shebang injection
|
|
2368
|
-
- Only the first line shebang is stripped by Node.js; any subsequent shebang lines cause parse errors
|
|
2369
|
-
|
|
2370
|
-
### Test Plan
|
|
2371
|
-
|
|
2372
|
-
#### For QA
|
|
2373
|
-
1. `head -1 dist/cli/linear.mjs` — single `#!/usr/bin/env node` shebang
|
|
2374
|
-
2. `node dist/cli/linear.mjs --help` — no SyntaxError
|
|
2375
|
-
3. `prjct linear list` — works end-to-end
|
|
2376
|
-
4. `grep -c '#!/' dist/cli/linear.mjs` — returns `1`
|
|
2377
|
-
|
|
2378
|
-
#### For Users
|
|
2379
|
-
**What changed:** Fixed `prjct linear` commands failing with SyntaxError after v1.23.0.
|
|
2380
|
-
**How to use:** Update to v1.23.1 — no action needed.
|
|
2381
|
-
**Breaking changes:** None.
|
|
2382
|
-
|
|
2383
|
-
## [1.23.0] - 2026-02-11
|
|
2384
|
-
|
|
2385
|
-
### Features
|
|
2386
|
-
|
|
2387
|
-
- compile and ship dist/ instead of raw TypeScript source (PRJ-294) (#168)
|
|
2388
|
-
- add outcome-to-memory auto-learning (PRJ-283) (#166)
|
|
2389
|
-
|
|
2390
|
-
### Refactoring
|
|
2391
|
-
|
|
2392
|
-
- consolidate core modules from 27 to 20 directories (PRJ-292) (#167)
|
|
2393
|
-
|
|
2394
|
-
## [1.25.0] - 2026-02-10
|
|
2395
|
-
|
|
2396
|
-
### Infrastructure
|
|
2397
|
-
|
|
2398
|
-
- **Compile and ship dist/** (PRJ-294): Package no longer ships raw TypeScript source. Compiled, minified JavaScript with source maps instead.
|
|
2399
|
-
- Rewrote `scripts/build.js` v3.0: produces minified ESM bundles via esbuild with source maps
|
|
2400
|
-
- Bundled 127 template files into single `dist/templates.json` (408KB)
|
|
2401
|
-
- Main CLI compiled to `dist/bin/prjct.mjs` (600KB minified), Linear CLI to `dist/cli/linear.mjs` (27KB)
|
|
2402
|
-
- Package reduced from 1.1MB/480 files to 971KB/27 files
|
|
2403
|
-
- All template consumers use bundle-first pattern via `getTemplateContent()` and `listTemplates()` helpers
|
|
2404
|
-
- Dual-mode operation: dev mode (raw TS via bun) and production mode (compiled dist/) both work
|
|
2405
|
-
- Updated `bin/prjct` shell script for dev vs production detection
|
|
2406
|
-
- Updated 8 modules to use template bundle: command-installer, setup, setup-cursor, setup-windsurf, prompt-builder, sync-agent-gen, template-loader, bin/prjct.ts
|
|
2407
|
-
|
|
2408
|
-
### Implementation Details
|
|
2409
|
-
|
|
2410
|
-
Rewrote the build system to produce compiled JavaScript output instead of shipping raw TypeScript. The key innovation is the bundle-first pattern: `getTemplateContent()` tries the bundled JSON first, falls back to filesystem for dev mode. This unified API replaced scattered `fs.readFile` calls across 8 modules. The shell script (`bin/prjct`) detects dev vs production by checking if `prjct.ts` exists.
|
|
2411
|
-
|
|
2412
|
-
### Learnings
|
|
2413
|
-
|
|
2414
|
-
- Bundle-first pattern (try JSON bundle, fall back to filesystem) provides clean dev/prod abstraction
|
|
2415
|
-
- ESM requires banner injection for `__dirname`/`__filename` since they don't exist in ESM scope
|
|
2416
|
-
- npm auto-includes `main` field target in package even when not in `files` array
|
|
2417
|
-
- `packages: 'external'` in esbuild avoids bundling node_modules into dist/
|
|
2418
|
-
- `keepNames: true` preserves function names despite minification, helpful for debugging
|
|
2419
|
-
|
|
2420
|
-
### Test Plan
|
|
2421
|
-
|
|
2422
|
-
#### For QA
|
|
2423
|
-
1. `npm pack` — verify tarball contains only dist/, bin/prjct, assets/, scripts, README, LICENSE, CHANGELOG
|
|
2424
|
-
2. `bun dist/bin/prjct.mjs version` — CLI runs from compiled output
|
|
2425
|
-
3. `bun dist/bin/prjct.mjs sync --json` — full sync works with bundled templates
|
|
2426
|
-
4. `prjct linear list` — linear CLI subprocess resolves correctly
|
|
2427
|
-
5. Verify `dist/templates.json` contains all 127 template files
|
|
2428
|
-
6. Dev mode: `bun bin/prjct.ts version` still runs raw TypeScript
|
|
2429
|
-
|
|
2430
|
-
#### For Users
|
|
2431
|
-
**What changed:** Package is now smaller and ships compiled JavaScript instead of raw TypeScript source.
|
|
2432
|
-
**How to use:** No changes — all `prjct` commands work identically.
|
|
2433
|
-
**Breaking changes:** None
|
|
2434
|
-
|
|
2435
|
-
## [1.24.0] - 2026-02-10
|
|
2436
|
-
|
|
2437
|
-
### Refactor
|
|
2438
|
-
|
|
2439
|
-
- **Consolidate core modules** (PRJ-292): Reduced `core/` from 27 to 20 directories by merging overlapping modules, splitting large files, and eliminating legacy duplicates
|
|
2440
|
-
- Merged `bus/` + `events/` into `events/` (pub-sub.ts, sync-events.ts)
|
|
2441
|
-
- Merged `ai-tools/` + `context-tools/` into `tools/` (ai/, context/ subdirs)
|
|
2442
|
-
- Merged `plugin/` + `agents/` into `agentic/` (hooks, plugin-loader, plugin-registry, performance)
|
|
2443
|
-
- Merged `wizard/` + `outcomes/` into `workflows/` (onboarding, outcome-analyzer/recorder/learner/storage)
|
|
2444
|
-
- Absorbed `context/` into `agentic/` and `constants/` into `utils/`
|
|
2445
|
-
- Split 4 large files (5400+ lines total):
|
|
2446
|
-
- `memory-system.ts` (1547 → 279) into memory-stores.ts, pattern-store.ts, semantic-memories.ts
|
|
2447
|
-
- `sync-service.ts` (1562 → 837) into sync-analyzer.ts, sync-agent-gen.ts
|
|
2448
|
-
- `setup.ts` (1061 → 775) into setup-cursor.ts, setup-windsurf.ts
|
|
2449
|
-
- `analysis.ts` (1274 → 850) into analysis-helpers.ts
|
|
2450
|
-
- Eliminated legacy `fs-helpers.ts` (16 importers migrated to `file-helper.ts`)
|
|
2451
|
-
- Removed all type re-exports, duplicated code, and backward-compat shims
|
|
2452
|
-
- 84 files changed, +2638/-3182, tsc clean, 1057 tests pass
|
|
2453
|
-
|
|
2454
|
-
### Implementation Details
|
|
2455
|
-
|
|
2456
|
-
Large-scale module consolidation to reduce cognitive load and improve maintainability. Each merge followed the pattern: move files, update relative imports across all importers, clean barrel index.ts files, verify with tsc + tests. Used parallel background agents for independent file splits.
|
|
2457
|
-
|
|
2458
|
-
Key patterns: CachedStore<T> abstract base class for disk-backed stores, standalone helper function extraction for large command classes, editor-specific code isolation (Cursor/Windsurf).
|
|
2459
|
-
|
|
2460
|
-
### Learnings
|
|
2461
|
-
|
|
2462
|
-
- Parallel agents work well for independent file splits (3 simultaneous splits completed successfully)
|
|
2463
|
-
- Pre-existing circular deps in commands<->services chain (3 cycles) — not introduced by this refactor
|
|
2464
|
-
- Known flaky test (intermittent timing issue) — passes on re-run
|
|
2465
|
-
|
|
2466
|
-
### Test Plan
|
|
2467
|
-
|
|
2468
|
-
#### For QA
|
|
2469
|
-
1. `npx tsc -p core/tsconfig.json --noEmit` — zero errors
|
|
2470
|
-
2. `bun test` — 1057 tests pass
|
|
2471
|
-
3. `prjct sync` in any project — works identically
|
|
2472
|
-
4. Deleted dirs don't exist: bus/, ai-tools/, context-tools/, plugin/, agents/, wizard/, outcomes/, context/, constants/
|
|
2473
|
-
5. New dirs exist: tools/ai/, tools/context/, workflows/, events/
|
|
2474
|
-
|
|
2475
|
-
#### For Users
|
|
2476
|
-
**What changed:** Internal module reorganization only
|
|
2477
|
-
**Breaking changes:** None for CLI users. Internal import paths changed (affects contributors).
|
|
2478
|
-
|
|
2479
|
-
## [1.23.0] - 2026-02-10
|
|
2480
|
-
|
|
2481
|
-
### Features
|
|
2482
|
-
|
|
2483
|
-
- **Outcome-to-memory auto-learning** (PRJ-283): Completed tasks automatically extract patterns and inject high-confidence learnings into semantic memory
|
|
2484
|
-
- `OutcomeStorage`: Unified storage for feature/task outcomes extending StorageManager, with migration from shipped.json, aggregation, and markdown generation
|
|
2485
|
-
- `OutcomeMemoryLearner`: Extracts file co-change, tech stack, architecture, gotcha, and workflow patterns from task history and feature outcomes
|
|
2486
|
-
- Confidence-gated injection: Only patterns with 3+ occurrences are auto-injected into memory
|
|
2487
|
-
- Deduplication: Updates existing `[auto-learned]` memories instead of creating duplicates
|
|
2488
|
-
- Non-blocking sync integration: Auto-learning runs during `p. sync` as step 9c (errors caught, don't block sync)
|
|
2489
|
-
- `p. learnings` command template for viewing auto-learned patterns by confidence level
|
|
2490
|
-
- 37 new tests (26 learner + 11 storage), 1057 total
|
|
2491
|
-
|
|
2492
|
-
### Implementation Details
|
|
2493
|
-
|
|
2494
|
-
Bridges the outcomes system to semantic memory. Previously, patterns from completed tasks were only available in task history JSON. Now, recurring patterns are automatically extracted and injected into the memory system for cross-session knowledge transfer.
|
|
2495
|
-
|
|
2496
|
-
**Data flow:** `taskHistory[]` + `FeatureOutcome[]` → pattern extraction → confidence scoring → `SemanticMemories` injection
|
|
2497
|
-
|
|
2498
|
-
**Pattern categories:** file_cochange (files modified together), tech_stack (confirmed technologies), architecture (discovered patterns), estimation (variance tracking), workflow (what works/doesn't), gotcha (recurring issues)
|
|
2499
|
-
|
|
2500
|
-
**New modules:**
|
|
2501
|
-
- `core/outcomes/outcome-storage.ts` — OutcomeStorage extending StorageManager with CRUD, migration, aggregation, markdown
|
|
2502
|
-
- `core/outcomes/outcome-learner.ts` — OutcomeMemoryLearner with pattern extraction and memory injection
|
|
2503
|
-
- `core/outcomes/index.ts` — Updated exports
|
|
2504
|
-
- `core/services/sync-service.ts` — Added autoLearnFromHistory() in sync flow
|
|
2505
|
-
- `templates/commands/learnings.md` — Template for `p. learnings` command
|
|
2506
|
-
- `core/__tests__/outcomes/outcome-learner.test.ts` — 26 tests
|
|
2507
|
-
- `core/__tests__/outcomes/outcome-storage.test.ts` — 11 tests
|
|
2508
|
-
|
|
2509
|
-
### Learnings
|
|
2510
|
-
|
|
2511
|
-
- `StorageManager<T>` base class provides consistent pattern for all JSON storage with SQLite backing, cache, MD generation, and event publishing
|
|
2512
|
-
- Non-critical sync steps should always wrap in try/catch to prevent blocking the main sync flow
|
|
2513
|
-
- biome pre-commit hook checks ALL files, not just staged — run `biome check --write` on all new files before committing
|
|
2514
|
-
|
|
2515
|
-
### Test Plan
|
|
2516
|
-
|
|
2517
|
-
#### For QA
|
|
2518
|
-
1. Run `p. sync` on a project with task history — verify auto-learning runs without errors
|
|
2519
|
-
2. Check memories.json for `[auto-learned]` entries after sync with 3+ recurring patterns
|
|
2520
|
-
3. Run `p. learnings` — verify patterns display grouped by confidence level
|
|
2521
|
-
4. Complete 3+ tasks with the same stackConfirmed values — verify auto-injection
|
|
2522
|
-
5. Verify sync works when no task history exists
|
|
2523
|
-
|
|
2524
|
-
#### For Users
|
|
2525
|
-
**What changed:** Completed tasks now automatically extract patterns and inject high-confidence learnings into the memory system.
|
|
2526
|
-
**How to use:** Patterns accumulate automatically. Run `p. learnings` to see what the system has learned.
|
|
2527
|
-
**Breaking changes:** None
|
|
2528
|
-
|
|
2529
|
-
## [1.22.0] - 2026-02-10
|
|
2530
|
-
|
|
2531
|
-
### Features
|
|
2532
|
-
|
|
2533
|
-
- add task-to-analysis feedback loop (PRJ-272) (#165)
|
|
2534
|
-
- add task history array with FIFO eviction (PRJ-281) (#164)
|
|
2535
|
-
|
|
2536
|
-
## [1.22.0] - 2026-02-10
|
|
2537
|
-
|
|
2538
|
-
### Features
|
|
2539
|
-
|
|
2540
|
-
- **Task-to-analysis feedback loop** (PRJ-272): Tasks report discoveries back into analysis and agent generation
|
|
2541
|
-
- TaskFeedbackSchema: stackConfirmed, patternsDiscovered, agentAccuracy (with rating enum), issuesEncountered
|
|
2542
|
-
- Optional `feedback` field on TaskHistoryEntry for backward compatibility
|
|
2543
|
-
- `getAggregatedFeedback()` consolidates patterns, stack confirmations, and issues across task history
|
|
2544
|
-
- Recurring issues (2+ occurrences) automatically promoted to "known gotchas"
|
|
2545
|
-
- Sync incorporates feedback: patterns populate analysis draft, gotchas become anti-patterns
|
|
2546
|
-
- Agent generator injects "Recent Learnings" section into domain agents with patterns, gotchas, and accuracy notes
|
|
2547
|
-
- Workflow `done()` accepts and passes feedback through to storage
|
|
2548
|
-
- 22 new tests covering schema validation, persistence, aggregation, gotcha promotion, and backward compatibility (1020 total)
|
|
2549
|
-
|
|
2550
|
-
### Implementation Details
|
|
2551
|
-
|
|
2552
|
-
Closes the knowledge loop between task execution and project analysis. Previously, discoveries made during tasks were lost when sessions ended. Now, structured feedback persists in task history and feeds into the next sync cycle.
|
|
2553
|
-
|
|
2554
|
-
**Data flow:** `p. done` (feedback captured) → `taskHistory[].feedback` → `p. sync` → `analysis.patterns` + `agents/*.md` "Recent Learnings"
|
|
2555
|
-
|
|
2556
|
-
**Modified modules:**
|
|
2557
|
-
- `core/schemas/state.ts` — Added TaskFeedbackSchema, extended TaskHistoryEntrySchema with optional feedback field
|
|
2558
|
-
- `core/storage/state-storage.ts` — completeTask() accepts feedback, createTaskHistoryEntry() attaches it, getAggregatedFeedback() provides read-side API, toMarkdown() shows feedback in context
|
|
2559
|
-
- `core/commands/workflow.ts` — done() passes feedback through options to completeTask()
|
|
2560
|
-
- `core/services/sync-service.ts` — saveDraftAnalysis() loads aggregated feedback, injectFeedbackSection() adds learnings to agents
|
|
2561
|
-
- `core/services/agent-generator.ts` — generate() accepts TaskFeedbackContext, injectFeedbackSection() appends learnings to domain agents
|
|
2562
|
-
- `core/__tests__/storage/state-storage-feedback.test.ts` — 22 comprehensive tests
|
|
2563
|
-
|
|
2564
|
-
### Learnings
|
|
2565
|
-
|
|
2566
|
-
- **SyncService duplicates AgentGenerator:** Both have their own `generateDomainAgent()` — feedback injection needed in both places
|
|
2567
|
-
- **Write-Through pattern:** All state flows JSON → MD → Event; feedback follows the same pattern
|
|
2568
|
-
- **Backward compatibility via optional fields:** Adding `feedback?: TaskFeedback` to existing schema requires zero migration
|
|
2569
|
-
|
|
2570
|
-
### Test Plan
|
|
2571
|
-
|
|
2572
|
-
#### For QA
|
|
2573
|
-
1. Complete a task with `p. done` — verify feedback stored in `taskHistory[0].feedback`
|
|
2574
|
-
2. Complete multiple tasks with same issue — verify gotcha promotion (2+ occurrences)
|
|
2575
|
-
3. Run `p. sync` after tasks with feedback — verify analysis draft has patterns
|
|
2576
|
-
4. Run `p. sync` with agent regeneration — verify "Recent Learnings" in domain agents
|
|
2577
|
-
5. Complete task WITHOUT feedback — verify backward compatibility
|
|
2578
|
-
6. Run `bun test` — all 1020 tests pass
|
|
2579
|
-
|
|
2580
|
-
#### For Users
|
|
2581
|
-
**What changed:** Task discoveries now persist and improve future agent context automatically.
|
|
2582
|
-
**How to use:** Automatic via `p. done` template. No user action required.
|
|
2583
|
-
**Breaking changes:** None.
|
|
2584
|
-
|
|
2585
|
-
## [1.21.0] - 2026-02-10
|
|
2586
|
-
|
|
2587
|
-
### Features
|
|
2588
|
-
|
|
2589
|
-
- add semantic verification for analysis results (PRJ-270) (#163)
|
|
2590
|
-
- **Task history array** (PRJ-281): Replace single previousTask with bounded task history for pattern learning
|
|
2591
|
-
- TaskHistoryEntry schema captures completed task metadata: title, classification, timestamps, subtasks, outcome, branch, Linear IDs
|
|
2592
|
-
- Automatic history push on task completion with FIFO eviction (max 20 entries)
|
|
2593
|
-
- Context injection: shows 3 recent same-type tasks when active, 5 recent when idle
|
|
2594
|
-
- Accessor methods: getTaskHistory(), getMostRecentTask(), getTaskHistoryByType()
|
|
2595
|
-
- Backward compatible: undefined taskHistory initializes as empty array
|
|
2596
|
-
- Comprehensive test suite with 20 test cases (998 tests total pass)
|
|
2597
|
-
|
|
2598
|
-
### Implementation Details
|
|
2599
|
-
|
|
2600
|
-
Replaced single previousTask field with bounded task history array to enable pattern learning and cross-task context for AI agents. When tasks complete, metadata is automatically captured and stored with FIFO eviction.
|
|
2601
|
-
|
|
2602
|
-
**Modified modules:**
|
|
2603
|
-
- `core/schemas/state.ts` — Added TaskHistoryEntrySchema with 12 fields, updated StateJsonSchema, exported TaskHistoryEntry type, updated DEFAULT_STATE
|
|
2604
|
-
- `core/storage/state-storage.ts` — Updated completeTask() to push history entries, added createTaskHistoryEntry() helper, added 3 accessor methods, updated toMarkdown() for context injection, updated getDefault()
|
|
2605
|
-
- `core/__tests__/storage/state-storage-history.test.ts` (468 lines) — 20 comprehensive tests covering push, eviction, backward compatibility, accessors, and context injection
|
|
2606
|
-
- `README.md` — Added Task History section with usage documentation
|
|
2607
|
-
- `CHANGELOG.md` — Documented task history feature
|
|
2608
|
-
|
|
2609
|
-
### Learnings
|
|
2610
|
-
|
|
2611
|
-
- **Schema-first design:** Define Zod schemas before implementation ensures type safety and validation at runtime
|
|
2612
|
-
- **Type assertions for extended properties:** Use `taskAny = task as any` to access properties not in CurrentTask schema (type, branch, parentDescription)
|
|
2613
|
-
- **Context injection in toMarkdown():** The state-storage toMarkdown() method is where context is generated, not context-builder.ts
|
|
2614
|
-
- **pathManager mocking for test isolation:** Mock getGlobalProjectPath, getStoragePath, getFilePath to use temp directories in tests
|
|
2615
|
-
- **FIFO over LRU:** Simpler implementation with predictable behavior for bounded history
|
|
2616
|
-
|
|
2617
|
-
### Test Plan
|
|
2618
|
-
|
|
2619
|
-
#### For QA
|
|
2620
|
-
1. Complete a task with `p. done` — verify taskHistory entry appears in state.json with all metadata fields
|
|
2621
|
-
2. Complete 25+ tasks — verify only 20 entries remain (oldest dropped)
|
|
2622
|
-
3. Start a bug task — verify context markdown shows recent bug tasks only (not features)
|
|
2623
|
-
4. Test with existing state.json missing taskHistory field — verify backward compatibility
|
|
2624
|
-
5. Verify accessor methods return correct data: getTaskHistory(), getMostRecentTask(), getTaskHistoryByType()
|
|
2625
|
-
|
|
2626
|
-
#### For Users
|
|
2627
|
-
**What changed:** Completed tasks are now tracked in a history array (max 20) instead of only storing the last paused task
|
|
2628
|
-
**How to use:** No action needed — task history is automatic on `p. done`
|
|
2629
|
-
**Breaking changes:** None — fully backward compatible
|
|
2630
|
-
|
|
2631
|
-
## [1.20.0] - 2026-02-10
|
|
2632
|
-
|
|
2633
|
-
### Features
|
|
2634
|
-
|
|
2635
|
-
- add retry with exponential backoff for agent and tool operations (#162)
|
|
2636
|
-
|
|
2637
|
-
## [1.20.0] - 2026-02-09
|
|
2638
|
-
|
|
2639
|
-
### Features
|
|
2640
|
-
|
|
2641
|
-
- **Semantic verification for analysis results** (PRJ-270): Validate analysis consistency before sealing
|
|
2642
|
-
- Framework verification: checks frameworks exist in package.json dependencies (case-insensitive matching)
|
|
2643
|
-
- Language verification: validates languages match actual file extensions (.ts → TypeScript)
|
|
2644
|
-
- Pattern location verification: confirms pattern files exist in project
|
|
2645
|
-
- File count verification: validates count accuracy (within 10% tolerance)
|
|
2646
|
-
- Anti-pattern file verification: ensures anti-pattern files exist when referenced
|
|
2647
|
-
- CLI command: `prjct verify --semantic` with human-readable and JSON output
|
|
2648
|
-
- Parallel execution of all 5 checks using Promise.all() (~100-200ms for typical projects)
|
|
2649
|
-
- Comprehensive test suite with 10 new test cases covering all scenarios (28 tests total, 63 assertions)
|
|
2650
|
-
|
|
2651
|
-
- **Retry with exponential backoff for agent and tool operations** (PRJ-271): Comprehensive retry infrastructure with error classification and circuit breaker
|
|
2652
|
-
- RetryPolicy utility with configurable attempts, delays, and exponential backoff (1s→2s→4s)
|
|
2653
|
-
- Automatic error classification: transient (EBUSY, EAGAIN, ETIMEDOUT) vs permanent (ENOENT, EPERM)
|
|
2654
|
-
- Circuit breaker protection: opens after 5 consecutive failures, auto-closes after 60s
|
|
2655
|
-
- Agent initialization retries (3 attempts with 1s base delay)
|
|
2656
|
-
- Tool operations retry (Read/Write/Bash with 2 attempts)
|
|
2657
|
-
- Resilient parallel agent generation using Promise.allSettled()
|
|
2658
|
-
|
|
2659
|
-
### Implementation Details
|
|
2660
|
-
|
|
2661
|
-
#### Semantic Verification (PRJ-270)
|
|
2662
|
-
|
|
2663
|
-
Added semantic verification functions to validate analysis results match actual project state. The verification system runs 5 parallel checks to detect logical inconsistencies before sealing analysis data.
|
|
2664
|
-
|
|
2665
|
-
**Modified modules:**
|
|
2666
|
-
- `core/schemas/analysis.ts` — Added 5 verification functions, 1 orchestrator, 2 helpers, and 2 interfaces (SemanticCheckResult, SemanticVerificationReport)
|
|
2667
|
-
- `core/storage/analysis-storage.ts` — Added semanticVerify() method to AnalysisStorage class
|
|
2668
|
-
- `core/commands/analysis.ts` — Extended verify() with --semantic flag and added semanticVerify() helper
|
|
2669
|
-
- `core/commands/commands.ts` — Updated verify() signature to include semantic?: boolean
|
|
2670
|
-
- `core/index.ts` — Updated verify command handler to pass semantic flag
|
|
2671
|
-
- `core/__tests__/storage/analysis-storage.test.ts` — Added 10 comprehensive test cases (+345 lines)
|
|
2672
|
-
- `README.md` — Added analysis verification documentation section
|
|
2673
|
-
- `CHANGELOG.md` — Documented semantic verification feature
|
|
2674
|
-
|
|
2675
|
-
**Verification functions:**
|
|
2676
|
-
1. `verifyFrameworks()` — Checks frameworks exist in package.json (case-insensitive partial matching)
|
|
2677
|
-
2. `verifyLanguages()` — Validates languages match file extensions (.ts → TypeScript)
|
|
2678
|
-
3. `verifyPatternLocations()` — Confirms pattern files exist in project
|
|
2679
|
-
4. `verifyFileCount()` — Validates count accuracy (10% tolerance for temporary files/caches)
|
|
2680
|
-
5. `verifyAntiPatternFiles()` — Ensures anti-pattern files exist when referenced
|
|
2681
|
-
|
|
2682
|
-
**Helper functions:**
|
|
2683
|
-
- `getProjectExtensions()` — Recursively scans project for file extensions (ignores node_modules, .git, dist, build, .next, .turbo, coverage)
|
|
2684
|
-
- `countProjectFiles()` — Counts all files in project with same ignore patterns
|
|
2685
|
-
|
|
2686
|
-
**Key features:**
|
|
2687
|
-
- Parallel execution using Promise.all() for performance (~100-200ms typical)
|
|
2688
|
-
- Skip conditions for null/undefined/empty arrays (prevents false failures)
|
|
2689
|
-
- 10% tolerance for file count (accounts for temporary files, caches)
|
|
2690
|
-
- Case-insensitive partial matching for frameworks
|
|
2691
|
-
- Returns SemanticVerificationReport following VerificationReport pattern from sync-verifier
|
|
2692
|
-
- Zero breaking changes: all 18 existing tests pass
|
|
2693
|
-
|
|
2694
|
-
#### Retry Infrastructure (PRJ-271)
|
|
2695
|
-
|
|
2696
|
-
Built RetryPolicy utility with exponential backoff, error classification, and circuit breaker. Integrated across agent initialization, tool operations, and parallel agent generation. The system now automatically retries transient failures while failing fast on permanent errors.
|
|
2697
|
-
|
|
2698
|
-
**New modules:**
|
|
2699
|
-
- `core/utils/retry.ts` (320 lines) — Core retry infrastructure with RetryPolicy class, error classification, circuit breaker
|
|
2700
|
-
- `core/__tests__/utils/retry.test.ts` (380 lines) — 21 comprehensive tests with 53 assertions
|
|
2701
|
-
- `ACCEPTANCE-PRJ-271.md` — Full acceptance criteria verification (22 criteria verified)
|
|
2702
|
-
|
|
2703
|
-
**Modified modules:**
|
|
2704
|
-
- `core/services/agent-service.ts` — Wrapped initialize() with retry policy (3 attempts)
|
|
2705
|
-
- `core/agentic/tool-registry.ts` — Added retry to Read/Write/Bash tools (2 attempts each)
|
|
2706
|
-
- `core/services/agent-generator.ts` — Changed to Promise.allSettled() with per-agent retry
|
|
2707
|
-
|
|
2708
|
-
**Key features:**
|
|
2709
|
-
- Exponential backoff: 1s, 2s, 4s (configurable base/max)
|
|
2710
|
-
- Error classification: automatic transient vs permanent detection
|
|
2711
|
-
- Circuit breaker: per-operation tracking, 5 failure threshold, 60s cooldown
|
|
2712
|
-
- Two default policies: defaultAgentRetryPolicy (3 attempts), defaultToolRetryPolicy (2 attempts)
|
|
2713
|
-
- Zero breaking changes: all 968 existing tests pass
|
|
2714
|
-
|
|
2715
|
-
### Learnings
|
|
2716
|
-
|
|
2717
|
-
- **RetryPolicy pattern:** Wrapping operations with retry execution provides clean separation of retry logic from business logic
|
|
2718
|
-
- **Error classification strategies:** Using error code sets (EBUSY, EAGAIN) for transient vs (ENOENT, EPERM) for permanent enables automatic decision-making
|
|
2719
|
-
- **Promise.allSettled() for resilient parallel operations:** Prevents one failure from blocking other operations, enables partial success
|
|
2720
|
-
- **Circuit breaker implementation:** Per-operation state tracking prevents cascading failures while allowing recovery
|
|
2721
|
-
|
|
2722
|
-
### Test Plan
|
|
2723
|
-
|
|
2724
|
-
#### For QA
|
|
2725
|
-
|
|
2726
|
-
1. **Agent Initialization Retry**
|
|
2727
|
-
- Temporarily make file system busy during agent initialization
|
|
2728
|
-
- Verify agent initialization retries up to 3 times
|
|
2729
|
-
- Confirm permanent errors (unsupported agent) fail immediately
|
|
2730
|
-
|
|
2731
|
-
2. **Tool Operations Retry**
|
|
2732
|
-
- Test Read/Write/Bash with transient errors (EBUSY, ETIMEDOUT)
|
|
2733
|
-
- Verify operations retry automatically (2 attempts)
|
|
2734
|
-
- Confirm permanent errors (ENOENT, EPERM) return null/false without retry
|
|
2735
|
-
|
|
2736
|
-
3. **Circuit Breaker**
|
|
2737
|
-
- Trigger 5 consecutive failures on same operation
|
|
2738
|
-
- Verify circuit breaker opens and blocks further attempts
|
|
2739
|
-
- Wait 60 seconds and verify circuit closes automatically
|
|
2740
|
-
|
|
2741
|
-
4. **Parallel Agent Generation**
|
|
2742
|
-
- Simulate one agent generation failure during sync
|
|
2743
|
-
- Verify other agents generate successfully (Promise.allSettled behavior)
|
|
2744
|
-
- Check logs for failure warnings
|
|
2745
|
-
|
|
2746
|
-
#### For Users
|
|
2747
|
-
|
|
2748
|
-
**What changed:** The system is now more resilient against transient failures. Operations like agent initialization, file reads/writes, and command execution will automatically retry when they encounter temporary errors (disk busy, timeouts, etc).
|
|
2749
|
-
|
|
2750
|
-
**How to use:** No action required - retry logic works automatically. Users will experience fewer random failures during normal operations.
|
|
2751
|
-
|
|
2752
|
-
**Breaking changes:** None. All changes are backward compatible. Existing tests (968 total) all pass.
|
|
2753
|
-
|
|
2754
|
-
## [1.19.0] - 2026-02-09
|
|
2755
|
-
|
|
2756
|
-
### Features
|
|
2757
|
-
|
|
2758
|
-
- **Aggressive archival of stale storage data** (PRJ-267): Automatic archival during `prjct sync` to keep LLM context lean
|
|
2759
|
-
- Shipped features >90 days archived to SQLite `archives` table with 1-line summary
|
|
2760
|
-
- Pending ideas >180 days marked `dormant` and excluded from LLM context
|
|
2761
|
-
- Completed queue tasks >7 days auto-removed and archived
|
|
2762
|
-
- Paused tasks >30 days archived with persistence (previously discarded)
|
|
2763
|
-
- Memory log capped at 500 active entries, overflow archived
|
|
2764
|
-
|
|
2765
|
-
### Implementation Details
|
|
2766
|
-
|
|
2767
|
-
New modules:
|
|
2768
|
-
- `core/storage/archive-storage.ts` — Archive infrastructure: SQLite `archives` table, batch archival via transactions, restore, prune, stats
|
|
2769
|
-
- `core/__tests__/storage/archive-storage.test.ts` — 13 tests covering all archival paths
|
|
2770
|
-
|
|
2771
|
-
Modified:
|
|
2772
|
-
- `core/storage/database.ts` — Migration v2: `archives` table with entity_type, entity_id, entity_data, summary, reason columns
|
|
2773
|
-
- `core/storage/shipped-storage.ts` — `archiveOldShipped()` method with 90-day retention policy
|
|
2774
|
-
- `core/storage/ideas-storage.ts` — `markDormantIdeas()` method, `dormant` status excluded from markdown context
|
|
2775
|
-
- `core/storage/queue-storage.ts` — `removeStaleCompleted()` method with 7-day retention
|
|
2776
|
-
- `core/storage/state-storage.ts` — `archiveStalePausedTasks()` now persists to archive table before removal
|
|
2777
|
-
- `core/services/memory-service.ts` — `capEntries()` method with 500-entry cap
|
|
2778
|
-
- `core/services/sync-service.ts` — `archiveStaleData()` orchestrates all archival in parallel during sync
|
|
2779
|
-
- `core/schemas/ideas.ts` + `core/types/storage.ts` — Added `dormant` to IdeaStatus enum
|
|
2780
|
-
|
|
2781
|
-
### Test Plan
|
|
2782
|
-
|
|
2783
|
-
#### For QA
|
|
2784
|
-
1. Run `prjct sync` with >90d shipped features — verify archive and removal from context
|
|
2785
|
-
2. Run sync with >180d pending ideas — verify dormant status, excluded from `ideas.md`
|
|
2786
|
-
3. Run sync with >7d completed queue tasks — verify removal and archival
|
|
2787
|
-
4. Run sync with >30d paused tasks — verify archival to SQLite
|
|
2788
|
-
5. Create >500 memory entries, sync — verify cap at 500
|
|
2789
|
-
6. `bun test` — all 947+ tests pass
|
|
2790
|
-
7. Verify recent items are NOT archived
|
|
2791
|
-
|
|
2792
|
-
#### For Users
|
|
2793
|
-
**What changed:** Storage data automatically cleaned up during sync. Old data archived, not deleted.
|
|
2794
|
-
**How to use:** No action needed — runs automatically on every sync.
|
|
2795
|
-
**Breaking changes:** Ideas can now have `dormant` status (new enum value).
|
|
2796
|
-
|
|
2797
|
-
## [1.18.0] - 2026-02-09
|
|
2798
|
-
|
|
2799
|
-
### Features
|
|
2800
|
-
|
|
2801
|
-
- implement incremental sync with file hashing (PRJ-305) (#160)
|
|
2802
|
-
|
|
2803
|
-
## [1.18.0] - 2026-02-09
|
|
2804
|
-
|
|
2805
|
-
### Features
|
|
2806
|
-
|
|
2807
|
-
- **Incremental sync**: `prjct sync` now only re-analyzes files that changed since last sync (PRJ-305)
|
|
2808
|
-
- File hashing with Bun.hash (xxHash64) — <100ms for 500 files
|
|
2809
|
-
- Change propagation through import graph (1-level reverse edges)
|
|
2810
|
-
- Conditional index rebuilds: BM25, import graph, co-change only when source files change
|
|
2811
|
-
- Conditional agent regeneration: only when config files (package.json, tsconfig.json) change
|
|
2812
|
-
- `prjct sync --full` flag to force complete re-analysis
|
|
2813
|
-
|
|
2814
|
-
### Implementation Details
|
|
2815
|
-
|
|
2816
|
-
New modules:
|
|
2817
|
-
- `core/domain/file-hasher.ts` — Hash computation via Bun.hash, SQLite registry using `index_checksums` table, diff detection (added/modified/deleted/unchanged)
|
|
2818
|
-
- `core/domain/change-propagator.ts` — Import graph reverse-edge lookup for 1-level change propagation, domain classification for affected files
|
|
2819
|
-
|
|
2820
|
-
Modified:
|
|
2821
|
-
- `core/services/sync-service.ts` — Incremental decision logic: detect changes → propagate → conditionally rebuild indexes and agents
|
|
2822
|
-
- `core/services/watch-service.ts` — Passes accumulated `changedFiles` to sync options
|
|
2823
|
-
- `core/types/project-sync.ts` — Added `full`, `changedFiles` to `SyncOptions` + `IncrementalInfo` result type
|
|
2824
|
-
- CLI chain (`core/index.ts` → `commands.ts` → `analysis.ts`) — Wired `--full` flag through
|
|
2825
|
-
|
|
2826
|
-
### Learnings
|
|
2827
|
-
|
|
2828
|
-
- Bun's `fs.readdir` with `withFileTypes` returns `Dirent<NonSharedBuffer>` — need `String()` cast for `.name`
|
|
2829
|
-
- Existing `index_checksums` SQLite table was already set up (PRJ-303) — zero schema changes needed
|
|
2830
|
-
- Import graph reverse edges (from PRJ-304) enable efficient 1-level propagation without rebuilding the graph
|
|
2831
|
-
|
|
2832
|
-
### Test Plan
|
|
2833
|
-
|
|
2834
|
-
#### For QA
|
|
2835
|
-
1. Run `prjct sync` on fresh project (no hash cache) — should behave as full sync
|
|
2836
|
-
2. Run `prjct sync` again without changes — should skip index rebuilds and agent regeneration
|
|
2837
|
-
3. Modify a `.ts` file, run `prjct sync` — should detect change and rebuild indexes
|
|
2838
|
-
4. Modify `package.json`, run `prjct sync` — should regenerate agents
|
|
2839
|
-
5. Run `prjct sync --full` — should force complete re-analysis
|
|
2840
|
-
6. Run `prjct watch`, change a file — should pass changedFiles to sync
|
|
2841
|
-
|
|
2842
|
-
#### For Users
|
|
2843
|
-
**What changed:** `prjct sync` is now incremental by default.
|
|
2844
|
-
**How to use:** No changes needed. Use `prjct sync --full` to force complete re-analysis.
|
|
2845
|
-
**Breaking changes:** None
|
|
2846
|
-
|
|
2847
|
-
## [1.17.0] - 2026-02-09
|
|
2848
|
-
|
|
2849
|
-
### Features
|
|
2850
|
-
|
|
2851
|
-
- implement BM25 + import graph + git co-change for zero-cost file selection (PRJ-304) (#159)
|
|
2852
|
-
|
|
2853
|
-
## [1.17.0] - 2026-02-08
|
|
2854
|
-
|
|
2855
|
-
### Features
|
|
2856
|
-
- **BM25 + import graph + git co-change file selection** (PRJ-304): Zero-cost file selection using three mathematical signals combined into a weighted ranker. Replaces keyword matching in smart-context with precision that matches LLM-based classification — at zero API cost.
|
|
2857
|
-
|
|
2858
|
-
### Implementation Details
|
|
2859
|
-
- `core/domain/bm25.ts` — BM25 indexer: tokenizes files (exports, functions, imports, comments, path segments), builds inverted index, scores queries using Okapi BM25 (k1=1.2, b=0.75). Stores in SQLite kv_store.
|
|
2860
|
-
- `core/domain/import-graph.ts` — Import graph builder: parses TS/JS imports to build directed adjacency list, follows chains 2 levels deep, scores by proximity (1/(depth+1)).
|
|
2861
|
-
- `core/domain/git-cochange.ts` — Git co-change analyzer: parses last 100 commits, builds Jaccard similarity matrix for file pairs that change together.
|
|
2862
|
-
- `core/domain/file-ranker.ts` — Combined ranker: `BM25 × 0.5 + imports × 0.3 + cochange × 0.2`, normalizes each signal to [0,1], returns top 15 files.
|
|
2863
|
-
- `core/agentic/smart-context.ts` — Uses ranker when indexes exist, graceful fallback to regex-based domain filtering.
|
|
2864
|
-
- `core/services/sync-service.ts` — Builds all 3 indexes in parallel during `prjct sync`.
|
|
2865
|
-
|
|
2866
|
-
### Learnings
|
|
2867
|
-
- `tokenizeQuery` must split camelCase BEFORE lowercasing — otherwise "getUserById" becomes "getuserbyid" and doesn't split
|
|
2868
|
-
- Jaccard similarity > cosine for co-change because data is binary (file present or not in commit)
|
|
2869
|
-
- Batch file reads (50 at a time) needed for indexing performance on large projects
|
|
2870
|
-
- Stop words list must include code keywords (import, export, const) to reduce noise in scoring
|
|
2871
|
-
|
|
2872
|
-
### Test Plan
|
|
2873
|
-
|
|
2874
|
-
#### For QA
|
|
2875
|
-
1. Run `prjct sync` — verify BM25, import graph, and co-change indexes build without errors
|
|
2876
|
-
2. Query "Fix auth middleware" — verify auth-related files rank higher than unrelated files
|
|
2877
|
-
3. Query "Build responsive dashboard" — verify frontend files rank higher than backend files
|
|
2878
|
-
4. Verify index rebuild time <5 seconds on 300+ file project
|
|
2879
|
-
5. Verify query time <50ms
|
|
2880
|
-
6. Verify zero API calls during file selection
|
|
2881
|
-
|
|
2882
|
-
#### For Users
|
|
2883
|
-
**What changed:** File selection during task context is now powered by BM25 text search, import graph proximity, and git co-change analysis instead of keyword matching.
|
|
2884
|
-
**How to use:** Run `p. sync` to build indexes — file selection is automatic and more accurate.
|
|
2885
|
-
**Breaking changes:** None. Falls back to previous filtering if indexes don't exist.
|
|
2886
|
-
|
|
2887
|
-
## [1.16.0] - 2026-02-09
|
|
2888
|
-
|
|
2889
|
-
### Features
|
|
2890
|
-
|
|
2891
|
-
- remove JSON storage redundancy, SQLite-only backend (PRJ-303) (#158)
|
|
2892
|
-
|
|
2893
|
-
## [1.16.0] - 2026-02-08
|
|
2894
|
-
|
|
2895
|
-
### Features
|
|
2896
|
-
- **Remove JSON storage redundancy** (PRJ-303): SQLite is now the sole storage backend. JSON dual-write removed from StorageManager and IndexStorage. Auto-migration runs during `prjct sync`, deletes source JSON files after backup.
|
|
2897
|
-
|
|
2898
|
-
### Implementation Details
|
|
2899
|
-
- `StorageManager.write()` — removed JSON file write and temp file pattern; writes only to SQLite kv_store + regenerates context MD
|
|
2900
|
-
- `StorageManager.read()` — removed JSON fallback; reads from cache → SQLite → default
|
|
2901
|
-
- `StorageManager.exists()` — removed JSON file check; checks SQLite only
|
|
2902
|
-
- `IndexStorage` — all 5 read methods (readIndex, readChecksums, readScores, readDomains, readCategories) no longer fall back to JSON; all 5 write methods no longer create JSON files
|
|
2903
|
-
- `migrateJsonToSqlite()` — new cleanup step deletes `storage/*.json`, `index/*.json`, `memory/*.jsonl` after successful migration; keeps `storage/backup/`
|
|
2904
|
-
- `SyncService.sync()` — auto-runs `migrateJsonToSqlite()` after directory setup (idempotent)
|
|
2905
|
-
- `PrjctDatabase.getDb()` — ensures parent directory exists before creating SQLite DB
|
|
2906
|
-
- `database.ts` — fixed all TS errors: `db.exec()` → `db.run()` (deprecated), `unknown[]` → `SQLQueryBindings[]`, `require()` → `fs.existsSync()`
|
|
2907
|
-
|
|
2908
|
-
### Test Plan
|
|
2909
|
-
|
|
2910
|
-
#### For QA
|
|
2911
|
-
1. Run `bun test` — all 879 tests must pass
|
|
2912
|
-
2. Run `prjct sync` on existing project — verify migration runs, JSON files deleted, `prjct.db` has data
|
|
2913
|
-
3. Run `prjct sync` again — verify idempotent (no errors, migration skips)
|
|
2914
|
-
4. Verify `storage/backup/` contains pre-migration JSON files
|
|
2915
|
-
5. Verify `context/*.md` files still generated after writes
|
|
2916
|
-
6. Run `prjct status` — verify state reads from SQLite
|
|
2917
|
-
|
|
2918
|
-
#### For Users
|
|
2919
|
-
**What changed:** Storage is now fully SQLite-backed. JSON files are auto-migrated and removed during sync.
|
|
2920
|
-
**How to use:** Run `prjct sync` — migration happens automatically.
|
|
2921
|
-
**Breaking changes:** None — all public APIs unchanged. JSON backups preserved in `storage/backup/`.
|
|
2922
|
-
|
|
2923
|
-
## [1.15.0] - 2026-02-09
|
|
2924
|
-
|
|
2925
|
-
### Features
|
|
2926
|
-
|
|
2927
|
-
- replace hardcoded memory domain tags with semantic matching (PRJ-300) (#157)
|
|
2928
|
-
|
|
2929
|
-
## [1.14.1] - 2026-02-09
|
|
2930
|
-
|
|
2931
|
-
### Improved
|
|
2932
|
-
- **Semantic memory domain matching** (PRJ-300): Memory retrieval now uses two-pass scoring (exact MEMORY_TAG match + semantic keyword match) instead of exact-only tag matching. Unknown domains like "uxui" are resolved to canonical domains ("frontend") via SEMANTIC_DOMAIN_KEYWORDS map.
|
|
2933
|
-
- **Tech stack normalizer**: New `tech-normalizer.ts` module handles framework name normalization, compound names ("React + TypeScript"), framework families (Next.js → React), and alias resolution (nextjs → next.js).
|
|
2934
|
-
- **Anti-hallucination dedup**: Tech stack entries in the anti-hallucination block are now deduplicated using normalized matching, preventing duplicates like "React" and "react" or "Next.js" and "nextjs".
|
|
2935
|
-
- **Sealed analysis priority**: Prompt builder now uses sealed analysis frameworks as primary tech stack source, falling back to repo conventions.
|
|
2936
|
-
|
|
2937
|
-
### Implementation Details
|
|
2938
|
-
- Expanded `TaskDomain` type from fixed union to `KnownDomain | (string & {})` for forward compatibility while preserving autocomplete
|
|
2939
|
-
- `DOMAIN_TAG_MAP` now includes TECH_STACK for frontend/database domains (previously missing)
|
|
2940
|
-
- `SEMANTIC_DOMAIN_KEYWORDS` maps 80+ keywords across 7 domains for fuzzy domain resolution
|
|
2941
|
-
- `resolveCanonicalDomains()` exported for testability — resolves arbitrary strings to known domains
|
|
2942
|
-
- `normalizeFrameworkName()` handles 15 aliases; `FRAMEWORK_FAMILIES` maps 12 meta-frameworks to base frameworks
|
|
2943
|
-
- `extractTechNames()` splits compound tech strings on +, /, commas, parentheses, "with", "and"
|
|
2944
|
-
|
|
2945
|
-
### Learnings
|
|
2946
|
-
- Two-pass scoring (exact 10pts + semantic 5pts) gives gradual relevance instead of binary match/no-match
|
|
2947
|
-
- TypeScript's `KnownDomain | (string & {})` pattern preserves autocomplete for known values while accepting any string
|
|
2948
|
-
- Parentheses in compound names need comma replacement (not space) — otherwise adjacent words merge into a single token
|
|
2949
|
-
|
|
2950
|
-
### Test Plan
|
|
2951
|
-
|
|
2952
|
-
#### For QA
|
|
2953
|
-
1. `bun test core/__tests__/agentic/semantic-matching.test.ts` — domain resolution (uxui→frontend, api→backend, infra→devops)
|
|
2954
|
-
2. `bun test core/__tests__/agentic/tech-normalizer.test.ts` — normalization, compound names, framework families, dedup
|
|
2955
|
-
3. `bun test core/__tests__/agentic/prompt-assembly.test.ts` — anti-hallucination block still renders correctly
|
|
2956
|
-
4. `bun test` — 848 tests pass, 0 fail
|
|
2957
|
-
|
|
2958
|
-
#### For Users
|
|
2959
|
-
- Memory retrieval automatically surfaces related memories across domains
|
|
2960
|
-
- No user action needed — improvements are automatic
|
|
2961
|
-
- No breaking changes
|
|
2962
|
-
|
|
2963
|
-
## [1.14.0] - 2026-02-09
|
|
2964
|
-
|
|
2965
|
-
### Features
|
|
2966
|
-
|
|
2967
|
-
- add sprint-based velocity calculation with trend detection (PRJ-296) (#156)
|
|
2968
|
-
|
|
2969
|
-
## [1.14.0] - 2026-02-09
|
|
2970
|
-
|
|
2971
|
-
### Features
|
|
2972
|
-
- **Velocity Dashboard**: New `prjct velocity` command with sprint-by-sprint breakdown, trend detection, and estimation accuracy (PRJ-296)
|
|
2973
|
-
- **Estimation Patterns**: Automatic detection of over/under estimation patterns by task category
|
|
2974
|
-
- **Completion Projections**: Given remaining backlog points, projects estimated sprints and completion date
|
|
2975
|
-
- **Velocity Context Injection**: Historical velocity data automatically injected into LLM task prompts for better estimation
|
|
2976
|
-
|
|
2977
|
-
### Implementation Details
|
|
2978
|
-
|
|
2979
|
-
**PRJ-296 — Sprint-Based Velocity Calculation**
|
|
2980
|
-
New velocity subsystem that aggregates completed task data (from outcomes.jsonl) into sprint periods, calculates rolling velocity metrics, detects trends, and identifies estimation patterns.
|
|
2981
|
-
|
|
2982
|
-
Key changes:
|
|
2983
|
-
- `core/schemas/velocity.ts` — Zod schemas: SprintVelocity, VelocityMetrics, VelocityConfig, EstimationPattern, CompletionProjection
|
|
2984
|
-
- `core/domain/velocity.ts` — Velocity engine: sprint bucketing, linear regression trend detection, accuracy tracking, pattern detection, duration parsing, LLM context formatting
|
|
2985
|
-
- `core/storage/velocity-storage.ts` — Write-through storage extending StorageManager with markdown generation
|
|
2986
|
-
- `core/commands/velocity.ts` — Dashboard command with chalk-formatted output + registration
|
|
2987
|
-
- `core/types/agentic.ts` — Extended `OrchestratorContext` with `velocityContext` field
|
|
2988
|
-
- `core/agentic/orchestrator-executor.ts` — Loads velocity context in parallel via `Promise.all`
|
|
2989
|
-
- `core/agentic/prompt-builder.ts` — Injects velocity into Section 6 (task context)
|
|
2990
|
-
- `core/__tests__/domain/velocity.test.ts` — 35 new tests
|
|
2991
|
-
|
|
2992
|
-
### Learnings
|
|
2993
|
-
- Derive story points from estimated duration via Fibonacci mapping when outcomes lack explicit point data
|
|
2994
|
-
- Linear regression slope normalized by average velocity works well for trend detection (>10% = improving, <-10% = declining)
|
|
2995
|
-
- Parallel loading pattern in orchestrator-executor (`Promise.all`) ensures zero-latency context enrichment
|
|
2996
|
-
|
|
2997
|
-
### Test Plan
|
|
2998
|
-
|
|
2999
|
-
#### For QA
|
|
3000
|
-
1. Run `prjct velocity` on a project with outcomes data — verify sprint-by-sprint breakdown with points, tasks, accuracy
|
|
3001
|
-
2. Run `prjct velocity` with no outcomes — verify graceful "No velocity data yet" message
|
|
3002
|
-
3. Run `prjct velocity 89` — verify completion projection (sprints remaining + date)
|
|
3003
|
-
4. Run `bun test core/__tests__/domain/velocity.test.ts` — 35 tests pass
|
|
3004
|
-
5. Run `bun test` — all 805 tests pass
|
|
3005
|
-
|
|
3006
|
-
#### For Users
|
|
3007
|
-
- **What changed:** New `prjct velocity` command shows sprint velocity, estimation accuracy trends, and completion projections. Velocity data is automatically injected into task prompts for better LLM estimation.
|
|
3008
|
-
- **How to use:** Run `prjct velocity` after completing tasks with estimates. Add backlog points: `prjct velocity 89`
|
|
3009
|
-
- **Breaking changes:** None
|
|
3010
|
-
|
|
3011
|
-
## [1.13.0] - 2026-02-09
|
|
3012
|
-
|
|
3013
|
-
### Features
|
|
3014
|
-
|
|
3015
|
-
- inject sealed analysis into task prompt context (PRJ-260) (#155)
|
|
3016
|
-
|
|
3017
|
-
## [1.13.0] - 2026-02-09
|
|
3018
|
-
|
|
3019
|
-
### Features
|
|
3020
|
-
- **Analysis Injection**: Sealed analysis (languages, frameworks, patterns, anti-patterns) now automatically injected into LLM prompt context (PRJ-260)
|
|
3021
|
-
- **Enriched Ground Truth**: Prompt section 3 renders full analysis data — languages, frameworks, package manager, source/test dirs, code patterns, and anti-patterns
|
|
3022
|
-
- **Enhanced Anti-Hallucination**: AVAILABLE tech list enriched with analysis data (case-insensitive dedup), package manager constraint added
|
|
3023
|
-
|
|
3024
|
-
### Implementation Details
|
|
3025
|
-
|
|
3026
|
-
**PRJ-260 — Inject Sync Analysis into Task Context**
|
|
3027
|
-
Connected the analysis pipeline (from PRJ-263) to the prompt assembly pipeline (from PRJ-301). `analysisStorage.getActive()` returns sealed analysis (or draft fallback), loaded in parallel with real codebase context for zero latency impact.
|
|
3028
|
-
|
|
3029
|
-
Key changes:
|
|
3030
|
-
- `core/types/agentic.ts` — New `SealedAnalysisContext` interface, extended `OrchestratorContext` with `sealedAnalysis` field
|
|
3031
|
-
- `core/agentic/orchestrator-executor.ts` — Added `loadSealedAnalysis()`, loads in parallel with `gatherRealContext()`
|
|
3032
|
-
- `core/agentic/prompt-builder.ts` — Section 3 (ground truth) renders analysis data, Section 5 passes analysis to anti-hallucination
|
|
3033
|
-
- `core/agentic/anti-hallucination.ts` — Extended `ProjectGroundTruth` with `analysisLanguages`, `analysisFrameworks`, `analysisPackageManager`
|
|
3034
|
-
- `core/__tests__/agentic/analysis-injection.test.ts` — 14 new tests
|
|
3035
|
-
|
|
3036
|
-
### Test Plan
|
|
3037
|
-
|
|
3038
|
-
#### For QA
|
|
3039
|
-
1. Run `prjct sync` on a project with sealed analysis — verify prompt contains Languages, Frameworks, Patterns sections
|
|
3040
|
-
2. Run `prjct sync` on a project WITHOUT sealed analysis — verify no crash, fallback rules still present
|
|
3041
|
-
3. Check anti-hallucination block — verify AVAILABLE list includes analysis languages/frameworks (deduped)
|
|
3042
|
-
4. Run `bun test core/__tests__/agentic/analysis-injection.test.ts` — 14 tests pass
|
|
3043
|
-
5. Run `bun test` — all 770 tests pass
|
|
3044
|
-
|
|
3045
|
-
#### For Users
|
|
3046
|
-
- **What changed:** AI prompts now include your project's detected languages, frameworks, code patterns, and anti-patterns from sealed analysis
|
|
3047
|
-
- **How to use:** Run `prjct sync` then `prjct seal` — improvements are automatic in subsequent task prompts
|
|
3048
|
-
- **Breaking changes:** None
|
|
3049
|
-
|
|
3050
|
-
## [1.12.0] - 2026-02-09
|
|
3051
|
-
|
|
3052
|
-
### Features
|
|
3053
|
-
|
|
3054
|
-
- make subtask output and handoff mandatory (PRJ-262) (#154)
|
|
3055
|
-
|
|
3056
|
-
## [1.11.0] - 2026-02-09
|
|
3057
|
-
|
|
3058
|
-
### Features
|
|
3059
|
-
- **Mandatory Subtask Handoff**: Subtask completion now requires structured handoff data — files changed, work summary, and context for the next subtask (PRJ-262)
|
|
3060
|
-
- **Prompt Handoff Injection**: Previous subtask handoff automatically rendered in next subtask's prompt context
|
|
3061
|
-
- **Completion Validation**: `SubtaskCompletionDataSchema` with Zod validation rejects empty handoff at `completeSubtask()`
|
|
3062
|
-
- **Sealable Analysis**: 3-state lifecycle (draft/verified/sealed) with SHA-256 commit-hash signatures (PRJ-263)
|
|
3063
|
-
- **Dual Storage**: Re-sync creates drafts without destroying sealed analysis — only sealed feeds task context
|
|
3064
|
-
- **Staleness Detection**: Warns when HEAD moves past the sealed commit hash
|
|
3065
|
-
- **Seal & Verify Commands**: `prjct seal` locks draft analysis, `prjct verify` checks integrity
|
|
3066
|
-
|
|
3067
|
-
### Implementation Details
|
|
3068
|
-
|
|
3069
|
-
**PRJ-262 — Mandatory Subtask Handoff**
|
|
3070
|
-
Made `outputForNextAgent` required in `SubtaskSummarySchema` and `whatWasDone` min(1). Added `SubtaskCompletionDataSchema` for completion-time validation. `completeSubtask()` now requires `SubtaskCompletionData` and validates with Zod before persisting. Extended `OrchestratorSubtask` with optional `handoff` field. Prompt builder renders previous subtask handoff (files, work done, context). Done template updated with Step 3.5 for mandatory handoff collection.
|
|
3071
|
-
|
|
3072
|
-
Key changes:
|
|
3073
|
-
- `core/schemas/state.ts` — Required fields, `SubtaskCompletionDataSchema`, `validateSubtaskCompletion()`
|
|
3074
|
-
- `core/storage/state-storage.ts` — `completeSubtask()` enforces handoff, `getPreviousHandoff()` helper
|
|
3075
|
-
- `core/types/agentic.ts` — `OrchestratorSubtask.handoff` field
|
|
3076
|
-
- `core/agentic/prompt-builder.ts` — Renders previous subtask handoff in prompt
|
|
3077
|
-
- `templates/commands/done.md` — Step 3.5: Mandatory handoff collection
|
|
3078
|
-
|
|
3079
|
-
**PRJ-263 — Sealable Analysis**
|
|
3080
|
-
New `analysis-storage.ts` extends StorageManager with dual storage (draft + sealed). Analysis schema rewritten as Zod schemas with runtime validation. Sync service writes drafts in parallel with existing writes. Canonical JSON representation ensures deterministic SHA-256 signatures.
|
|
3081
|
-
|
|
3082
|
-
Key changes:
|
|
3083
|
-
- `core/schemas/analysis.ts` — Full rewrite: plain interfaces → Zod schemas with `AnalysisStatusSchema`, `AnalysisItemSchema`
|
|
3084
|
-
- `core/storage/analysis-storage.ts` — New: dual storage, sealing, verification, staleness detection
|
|
3085
|
-
- `core/services/sync-service.ts` — Added `saveDraftAnalysis()` to parallel writes
|
|
3086
|
-
- `core/commands/analysis.ts` — Added `seal()` and `verify()` command methods
|
|
3087
|
-
- `core/commands/register.ts`, `core/index.ts` — Registered new commands
|
|
3088
|
-
|
|
3089
|
-
### Learnings
|
|
3090
|
-
- Keep storage schema backward-compatible (optional fields) but validate at completion call site
|
|
3091
|
-
- Dual validation: storage accepts optional, completion requires mandatory
|
|
3092
|
-
|
|
3093
|
-
### Test Plan
|
|
3094
|
-
|
|
3095
|
-
#### For QA (PRJ-262)
|
|
3096
|
-
1. Run `p. done` after completing a subtask — verify handoff data is collected
|
|
3097
|
-
2. Check state.json — verify subtask has `output` and `summary` fields with handoff data
|
|
3098
|
-
3. Start next subtask — verify prompt includes "Previous Subtask Handoff" section
|
|
3099
|
-
4. Load old state.json without handoff fields — verify backward compatibility (no errors)
|
|
3100
|
-
5. Run tests: `bun test core/__tests__/storage/subtask-handoff.test.ts` — 19 tests pass
|
|
3101
|
-
|
|
3102
|
-
#### For QA (PRJ-263)
|
|
3103
|
-
1. Run `prjct sync` — verify draft analysis is created in storage
|
|
3104
|
-
2. Run `prjct seal` — verify analysis is locked with SHA-256 signature
|
|
3105
|
-
3. Run `prjct verify` — verify signature matches
|
|
3106
|
-
4. Run `prjct sync` again — verify sealed analysis is preserved, new draft created
|
|
3107
|
-
5. Make a commit, run `prjct status` — verify staleness detection warns about diverged commits
|
|
3108
|
-
|
|
3109
|
-
#### For Users
|
|
3110
|
-
- **PRJ-262:** Subtask completion now captures what was done, files changed, and context for the next subtask. `p. done` automatically collects handoff — no extra steps needed.
|
|
3111
|
-
- **PRJ-263:** Analysis results can now be locked (sealed) so re-syncing doesn't overwrite verified context. Run `prjct seal` after reviewing sync results.
|
|
3112
|
-
- **Breaking changes:** `completeSubtask()` API changed from optional to required parameters.
|
|
3113
|
-
|
|
3114
|
-
## [1.10.0] - 2026-02-08
|
|
3115
|
-
|
|
3116
|
-
### Features
|
|
3117
|
-
|
|
3118
|
-
- redesign prompt assembly with correct section ordering + anti-hallucination (PRJ-301) (#152)
|
|
3119
|
-
- add coordinated global token budget (PRJ-266) (#151)
|
|
3120
|
-
|
|
3121
|
-
## [1.12.0] - 2026-02-07
|
|
3122
|
-
|
|
3123
|
-
### Features
|
|
3124
|
-
- **Prompt Assembly Redesign**: Correct section ordering based on research of 25+ system prompts (PRJ-301)
|
|
3125
|
-
- **Environment Block**: Structured `<env>` block with project, git, platform, runtime, and model metadata
|
|
3126
|
-
- **Anti-Hallucination Block**: Explicit availability/unavailability grounding injected BEFORE task context
|
|
3127
|
-
- **Token Efficiency Directive**: Conciseness rules appended to every prompt
|
|
3128
|
-
|
|
3129
|
-
### Implementation Details
|
|
3130
|
-
Redesigned `prompt-builder.ts` section ordering to follow research-backed pattern:
|
|
3131
|
-
Identity → Environment → Ground Truth → Capabilities → Constraints → Task Context → Task → Output Schema → Efficiency
|
|
3132
|
-
|
|
3133
|
-
Key changes:
|
|
3134
|
-
- New `environment-block.ts`: Generates `<env>` XML block with auto-detected runtime, platform, and normalized names
|
|
3135
|
-
- New `anti-hallucination.ts`: Generates constraints block from sealed analysis (available tech, absent domains, grounding rules)
|
|
3136
|
-
- Moved template content (task instructions) to section 7 — LLM knows identity, env, and rules before reading task
|
|
3137
|
-
- Anti-hallucination block placed at section 5 (before task context), replacing old `RULES (CRITICAL)` at the end
|
|
3138
|
-
- Added `buildEfficiencyDirective()` with conciseness rules (max 4 lines, no preamble/postamble)
|
|
3139
|
-
- Exported `PROMPT_SECTION_ORDER` constant and `SectionPriority` type for budget trimming
|
|
3140
|
-
- Kept `buildCriticalRules()` as fallback when project context unavailable
|
|
3141
|
-
|
|
3142
|
-
### Test Plan
|
|
3143
|
-
|
|
3144
|
-
#### For QA
|
|
3145
|
-
1. Run `prjct sync` on any project — verify CLAUDE.md has correct section ordering
|
|
3146
|
-
2. Check for `<env>` block near top of generated prompt
|
|
3147
|
-
3. Verify anti-hallucination block appears BEFORE task context
|
|
3148
|
-
4. Run `prjct sync --package=<name>` in monorepo — verify per-package context
|
|
3149
|
-
|
|
3150
|
-
#### For Users
|
|
3151
|
-
**What changed:** AI agent prompts now follow research-backed section ordering for better accuracy
|
|
3152
|
-
**How to use:** Run `prjct sync` — improvements are automatic
|
|
3153
|
-
**Breaking changes:** None
|
|
3154
|
-
|
|
3155
|
-
## [1.9.0] - 2026-02-06
|
|
3156
|
-
|
|
3157
|
-
### Features
|
|
3158
|
-
- **Structured Output Schema**: All LLM prompts now include structured output schemas (PRJ-264)
|
|
3159
|
-
- **Global Token Budget**: Coordinated token budget across all prompt sections (PRJ-266)
|
|
3160
|
-
|
|
3161
|
-
### Implementation Details
|
|
3162
|
-
Added `core/schemas/llm-output.ts` with Zod schemas for each command's expected output format. Schemas are rendered as JSON examples in prompts so LLMs know the exact structure expected.
|
|
1378
|
+
---
|
|
3163
1379
|
|
|
3164
|
-
|
|
1380
|
+
## v1.x and earlier
|
|
3165
1381
|
|
|
3166
|
-
|
|
3167
|
-
1. Run any command — verify output matches schema
|
|
3168
|
-
2. Run with large context — verify budget trimming works
|
|
3169
|
-
3. Check prompt size stays under model limits
|
|
1382
|
+
Older releases moved to [CHANGELOG.archive.md](./CHANGELOG.archive.md). Full history also visible via `git tag -l` and the GitHub Releases page.
|