lean-spec 0.1.4 → 0.2.0
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
CHANGED
|
@@ -7,6 +7,113 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.2.0] - 2025-11-10
|
|
11
|
+
|
|
12
|
+
**🎉 Official Public Release - Production Ready**
|
|
13
|
+
|
|
14
|
+
This is the official v0.2.0 release, treating v0.1.x as alpha versions. LeanSpec is now production-ready for teams and solo developers.
|
|
15
|
+
|
|
16
|
+
### Highlights
|
|
17
|
+
|
|
18
|
+
**First Principles Foundation:**
|
|
19
|
+
- Operationalized five first principles with validation tooling
|
|
20
|
+
- Context Economy enforced: Specs under 300 lines, warnings at 400+
|
|
21
|
+
- Signal-to-Noise validation: Every line must inform decisions
|
|
22
|
+
- Complete philosophy documentation guiding methodology
|
|
23
|
+
|
|
24
|
+
**Quality & Validation:**
|
|
25
|
+
- Comprehensive `lean-spec validate` with complexity analysis
|
|
26
|
+
- Lint-style output format matching ESLint/TypeScript conventions
|
|
27
|
+
- Sub-spec validation and relationship checking
|
|
28
|
+
- Dogfooding complete: All specs follow our own principles
|
|
29
|
+
|
|
30
|
+
**Documentation Excellence:**
|
|
31
|
+
- 100% accurate documentation site (verified)
|
|
32
|
+
- AI-assisted spec writing guide
|
|
33
|
+
- Clear WHY vs HOW separation in docs
|
|
34
|
+
- Comprehensive migration guides from ADRs/RFCs
|
|
35
|
+
- First principles deeply documented
|
|
36
|
+
|
|
37
|
+
**Developer Experience:**
|
|
38
|
+
- Unified dashboard (board + stats + health metrics)
|
|
39
|
+
- Pattern-aware list grouping with visual clarity
|
|
40
|
+
- Improved init flow with pattern selection
|
|
41
|
+
- MCP server stability improvements
|
|
42
|
+
- Better error handling throughout
|
|
43
|
+
|
|
44
|
+
### Added
|
|
45
|
+
|
|
46
|
+
**New Commands:**
|
|
47
|
+
- `lean-spec migrate` - Migrate from existing tools (ADRs, RFCs, design docs)
|
|
48
|
+
- `lean-spec archive` - Archive completed specs with metadata updates
|
|
49
|
+
- `lean-spec backfill` - Backfill timestamps from git history
|
|
50
|
+
- `lean-spec validate` - Comprehensive spec validation
|
|
51
|
+
|
|
52
|
+
**Core Features:**
|
|
53
|
+
- First principles validation (Context Economy, Signal-to-Noise, etc.)
|
|
54
|
+
- Complexity analysis for specs and sub-specs
|
|
55
|
+
- Bidirectional `related` and directional `depends_on` relationships
|
|
56
|
+
- Sub-spec file support with validation
|
|
57
|
+
- Pattern-based folder organization
|
|
58
|
+
|
|
59
|
+
### Changed
|
|
60
|
+
|
|
61
|
+
**Breaking Changes:**
|
|
62
|
+
- `lean-spec validate` output format now matches lint tools (ESLint-style)
|
|
63
|
+
- Default validation mode is quiet success (use `--verbose` for all details)
|
|
64
|
+
|
|
65
|
+
**User Experience:**
|
|
66
|
+
- Unified dashboard combining board + stats + health summary
|
|
67
|
+
- Pattern-aware list with visual icons and better grouping
|
|
68
|
+
- Enhanced init flow with template/pattern selection
|
|
69
|
+
- Clearer stats dashboard with actionable insights
|
|
70
|
+
|
|
71
|
+
### Fixed
|
|
72
|
+
- MCP server error handling and stability
|
|
73
|
+
- Documentation accuracy across all pages
|
|
74
|
+
- Test suite: 402/402 passing (100%)
|
|
75
|
+
- TypeScript/lint: Zero errors
|
|
76
|
+
- Frontmatter parsing edge cases
|
|
77
|
+
|
|
78
|
+
### Philosophy & Methodology
|
|
79
|
+
|
|
80
|
+
This release operationalizes LeanSpec's five first principles:
|
|
81
|
+
|
|
82
|
+
1. **Context Economy** - Fit in working memory (<300 lines target, 400 max)
|
|
83
|
+
2. **Signal-to-Noise Maximization** - Every word informs decisions
|
|
84
|
+
3. **Intent Over Implementation** - Capture why, not just how
|
|
85
|
+
4. **Bridge the Gap** - Both human and AI understand
|
|
86
|
+
5. **Progressive Disclosure** - Add complexity only when pain is felt
|
|
87
|
+
|
|
88
|
+
**Practice What We Preach:**
|
|
89
|
+
- All specs validated against principles
|
|
90
|
+
- Large specs split using sub-spec pattern
|
|
91
|
+
- Documentation follows progressive disclosure
|
|
92
|
+
- Validation tooling prevents principle violations
|
|
93
|
+
|
|
94
|
+
### Migration Notes
|
|
95
|
+
|
|
96
|
+
**From v0.1.x:**
|
|
97
|
+
- Run `lean-spec validate` to check your specs
|
|
98
|
+
- Review any specs >400 lines and consider splitting
|
|
99
|
+
- Update to new validate output format (ESLint-style)
|
|
100
|
+
- No breaking changes to commands or file formats
|
|
101
|
+
|
|
102
|
+
**From other tools:**
|
|
103
|
+
- Use `lean-spec migrate` for ADRs, RFCs, design docs
|
|
104
|
+
- See documentation for detailed migration guides
|
|
105
|
+
- AI-assisted migration available (Claude, Copilot)
|
|
106
|
+
|
|
107
|
+
### Acknowledgments
|
|
108
|
+
|
|
109
|
+
Built with dogfooding: 63 specs written, 28 archived, all following our own principles.
|
|
110
|
+
|
|
111
|
+
## [0.1.5] - 2025-11-10
|
|
112
|
+
|
|
113
|
+
### Fixed
|
|
114
|
+
- MCP server version now also read dynamically from package.json
|
|
115
|
+
- Complete version consistency across CLI and MCP server
|
|
116
|
+
|
|
10
117
|
## [0.1.4] - 2025-11-10
|
|
11
118
|
|
|
12
119
|
### Fixed
|
|
@@ -211,6 +318,7 @@ This UAT release operationalizes LeanSpec's five first principles:
|
|
|
211
318
|
- Gray-matter for frontmatter parsing
|
|
212
319
|
- Dayjs for date handling
|
|
213
320
|
|
|
321
|
+
[0.1.5]: https://github.com/codervisor/lean-spec/releases/tag/v0.1.5
|
|
214
322
|
[0.1.4]: https://github.com/codervisor/lean-spec/releases/tag/v0.1.4
|
|
215
323
|
[0.1.3]: https://github.com/codervisor/lean-spec/releases/tag/v0.1.3
|
|
216
324
|
[0.1.2]: https://github.com/codervisor/lean-spec/releases/tag/v0.1.2
|
|
@@ -459,8 +459,8 @@ async function getProjectName(cwd = process.cwd()) {
|
|
|
459
459
|
try {
|
|
460
460
|
const packageJsonPath = path4.join(cwd, "package.json");
|
|
461
461
|
const content = await fs4.readFile(packageJsonPath, "utf-8");
|
|
462
|
-
const
|
|
463
|
-
return
|
|
462
|
+
const packageJson2 = JSON.parse(content);
|
|
463
|
+
return packageJson2.name || null;
|
|
464
464
|
} catch {
|
|
465
465
|
return null;
|
|
466
466
|
}
|
|
@@ -4710,6 +4710,14 @@ async function mcpCommand() {
|
|
|
4710
4710
|
}
|
|
4711
4711
|
|
|
4712
4712
|
// src/mcp-server.ts
|
|
4713
|
+
import { readFileSync } from "fs";
|
|
4714
|
+
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
4715
|
+
import { dirname as dirname3, join as join18 } from "path";
|
|
4716
|
+
var __filename2 = fileURLToPath2(import.meta.url);
|
|
4717
|
+
var __dirname3 = dirname3(__filename2);
|
|
4718
|
+
var packageJson = JSON.parse(
|
|
4719
|
+
readFileSync(join18(__dirname3, "../package.json"), "utf-8")
|
|
4720
|
+
);
|
|
4713
4721
|
function formatErrorMessage(prefix, error) {
|
|
4714
4722
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
4715
4723
|
return `${prefix}: ${errorMsg}`;
|
|
@@ -4861,7 +4869,7 @@ async function getDepsData(specPath) {
|
|
|
4861
4869
|
async function createMcpServer() {
|
|
4862
4870
|
const server = new McpServer({
|
|
4863
4871
|
name: "lean-spec",
|
|
4864
|
-
version:
|
|
4872
|
+
version: packageJson.version
|
|
4865
4873
|
});
|
|
4866
4874
|
server.registerTool(
|
|
4867
4875
|
"list",
|
|
@@ -5645,4 +5653,4 @@ export {
|
|
|
5645
5653
|
createMcpServer,
|
|
5646
5654
|
mcpCommand
|
|
5647
5655
|
};
|
|
5648
|
-
//# sourceMappingURL=chunk-
|
|
5656
|
+
//# sourceMappingURL=chunk-J7ZSZ5VJ.js.map
|