lean-spec 0.2.23 → 0.2.25

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/README.md CHANGED
@@ -108,15 +108,15 @@ This installs the **leanspec-sdd** skill which teaches AI agents:
108
108
 
109
109
  ## Features
110
110
 
111
- | Feature | Description |
112
- | ------------------- | ------------------------------------------------------------- |
113
- | **📊 Kanban Board** | `lean-spec board` - visual project tracking |
114
- | **🔍 Smart Search** | `lean-spec search` - find specs by content or metadata |
115
- | **🔗 Dependencies** | Track spec relationships with `depends_on` and `related` |
116
- | **🎨 Web UI** | `lean-spec ui` - browser-based dashboard |
117
- | **📈 Project Stats** | `lean-spec stats` - health metrics and bottleneck detection |
118
- | **🤖 AI-Native** | MCP server + CLI for AI assistants |
119
- | **🖥️ Desktop App** | Native Tauri shell with tray + shortcuts (`pnpm dev:desktop`) |
111
+ | Feature | Description |
112
+ | ------------------- | ------------------------------------------------------------------------------------------------- |
113
+ | **📊 Kanban Board** | `lean-spec board` - visual project tracking |
114
+ | **🔍 Smart Search** | `lean-spec search` - find specs by content or metadata |
115
+ | **🔗 Dependencies** | Track spec relationships with `depends_on` and `related` |
116
+ | **🎨 Web UI** | `lean-spec ui` - browser-based dashboard |
117
+ | **📈 Project Stats** | `lean-spec stats` - health metrics and bottleneck detection |
118
+ | **🤖 AI-Native** | MCP server + CLI for AI assistants |
119
+ | **🖥️ Desktop App** | Desktop app repo: [codervisor/lean-spec-desktop](https://github.com/codervisor/lean-spec-desktop) |
120
120
 
121
121
  <p align="center">
122
122
  <img src="https://github.com/codervisor/lean-spec-docs/blob/main/static/img/ui/ui-board-view.png" alt="Kanban Board View" width="800">
@@ -146,25 +146,11 @@ rustc --version # Should be 1.70 or higher (dev only)
146
146
 
147
147
  ## Desktop App
148
148
 
149
- The `@leanspec/desktop` package wraps the Vite UI (`@leanspec/ui`) in a lightweight Tauri shell for local, multi-project workflows backed by Rust commands:
149
+ The desktop application has moved to a dedicated repository:
150
150
 
151
- ```bash
152
- # Launch the desktop shell with hot reload
153
- pnpm install
154
- pnpm dev:desktop
155
-
156
- # Produce signed installers + embedded UI bundle
157
- pnpm build:desktop
158
- ```
159
-
160
- Key capabilities:
161
- - Frameless window with custom title bar + native controls
162
- - Global shortcuts (`Cmd/Ctrl+Shift+L` to toggle, `Cmd/Ctrl+Shift+K` to open the project switcher, `Cmd/Ctrl+Shift+N` to add a spec)
163
- - Shared project registry + native folder picker backed by `~/.lean-spec/projects.json`
164
- - System tray with recent projects, background notifications, and update checks
165
- - Embedded Vite static build + Rust HTTP server for offline packaging (macOS `.dmg`, Windows `.msi/.exe`, Linux `.AppImage/.deb/.rpm`)
151
+ - https://github.com/codervisor/lean-spec-desktop
166
152
 
167
- See [packages/desktop/README.md](packages/desktop/README.md) for configuration details.
153
+ Use that repository for desktop development, CI, and release workflows.
168
154
 
169
155
  ---
170
156
 
@@ -179,7 +165,6 @@ pnpm build # Build all packages
179
165
  pnpm dev # Start dev mode (UI + Core)
180
166
  pnpm dev:web # UI only
181
167
  pnpm dev:cli # CLI only
182
- pnpm dev:desktop # Desktop app
183
168
 
184
169
  # Testing
185
170
  pnpm test # Run all tests
@@ -6,8 +6,10 @@
6
6
  * then spawns the appropriate Rust binary with the provided arguments.
7
7
  *
8
8
  * The wrapper looks for binaries in the following locations:
9
- * 1. Platform-specific npm package (lean-spec-darwin-x64, etc.)
10
- * 2. Local binaries directory (for development)
9
+ * 1. Rust target/debug binary (for local development)
10
+ * 2. Rust target/release binary (for local development)
11
+ * 3. Platform-specific npm package (lean-spec-darwin-x64, etc.)
12
+ * 4. Local binaries directory (fallback)
11
13
  */
12
14
 
13
15
  import { spawn } from 'child_process';
@@ -28,7 +30,7 @@ const debug = (...args) => DEBUG && console.error('[lean-spec debug]', ...args);
28
30
  const PLATFORM_MAP = {
29
31
  darwin: { x64: 'darwin-x64', arm64: 'darwin-arm64' },
30
32
  linux: { x64: 'linux-x64' },
31
- win32: { x64: 'windows-x64', arm64: 'windows-arm64' }
33
+ win32: { x64: 'windows-x64' }
32
34
  };
33
35
 
34
36
  const MACHO_MAGICS = new Set([
@@ -94,7 +96,7 @@ function getBinaryPath() {
94
96
  const platformKey = PLATFORM_MAP[platform]?.[arch];
95
97
  if (!platformKey) {
96
98
  console.error(`Unsupported platform: ${platform}-${arch}`);
97
- console.error('Supported: macOS (x64/arm64), Linux (x64/arm64), Windows (x64)');
99
+ console.error('Supported: macOS (x64/arm64), Linux (x64), Windows (x64)');
98
100
  process.exit(1);
99
101
  }
100
102
 
@@ -104,6 +106,34 @@ function getBinaryPath() {
104
106
 
105
107
  debug('Binary info:', { platformKey, binaryName, packageName });
106
108
 
109
+ // Try rust/target/debug directory first (for local development with `pnpm build:rust`)
110
+ try {
111
+ const rustDebugPath = join(__dirname, '..', '..', '..', 'rust', 'target', 'debug', binaryName);
112
+ debug('Trying rust debug binary:', rustDebugPath);
113
+ accessSync(rustDebugPath);
114
+ if (isExecutableBinary(rustDebugPath, platform)) {
115
+ debug('Found rust debug binary:', rustDebugPath);
116
+ return rustDebugPath;
117
+ }
118
+ debug('Rust debug binary is invalid:', rustDebugPath);
119
+ } catch (e) {
120
+ debug('Rust debug binary not found:', e.message);
121
+ }
122
+
123
+ // Try rust/target/release directory (for local development with `pnpm build:rust:release`)
124
+ try {
125
+ const rustTargetPath = join(__dirname, '..', '..', '..', 'rust', 'target', 'release', binaryName);
126
+ debug('Trying rust release binary:', rustTargetPath);
127
+ accessSync(rustTargetPath);
128
+ if (isExecutableBinary(rustTargetPath, platform)) {
129
+ debug('Found rust release binary:', rustTargetPath);
130
+ return rustTargetPath;
131
+ }
132
+ debug('Rust release binary is invalid:', rustTargetPath);
133
+ } catch (e) {
134
+ debug('Rust release binary not found:', e.message);
135
+ }
136
+
107
137
  // Try to resolve platform package
108
138
  try {
109
139
  const resolvedPath = require.resolve(`${packageName}/${binaryName}`);
@@ -116,7 +146,7 @@ function getBinaryPath() {
116
146
  debug('Platform package not found:', packageName, '-', e.message);
117
147
  }
118
148
 
119
- // Try local binaries directory (for development/testing)
149
+ // Try local binaries directory (fallback)
120
150
  try {
121
151
  const localPath = join(__dirname, '..', 'binaries', platformKey, binaryName);
122
152
  debug('Trying local binary:', localPath);
@@ -130,20 +160,6 @@ function getBinaryPath() {
130
160
  debug('Local binary not found:', e.message);
131
161
  }
132
162
 
133
- // Try rust/target/release directory (for local development)
134
- try {
135
- const rustTargetPath = join(__dirname, '..', '..', '..', 'rust', 'target', 'release', binaryName);
136
- debug('Trying rust target binary:', rustTargetPath);
137
- accessSync(rustTargetPath);
138
- if (isExecutableBinary(rustTargetPath, platform)) {
139
- debug('Found rust target binary:', rustTargetPath);
140
- return rustTargetPath;
141
- }
142
- debug('Rust target binary is invalid:', rustTargetPath);
143
- } catch (e) {
144
- debug('Rust target binary not found:', e.message);
145
- }
146
-
147
163
  console.error(`Binary not found for ${platform}-${arch}`);
148
164
  console.error(`Expected package: ${packageName}`);
149
165
  console.error('');
Binary file
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leanspec/cli-darwin-arm64",
3
- "version": "0.2.23",
3
+ "version": "0.2.25",
4
4
  "description": "LeanSpec CLI binary for macOS ARM64",
5
5
  "os": [
6
6
  "darwin"
Binary file
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leanspec/cli-darwin-x64",
3
- "version": "0.2.23",
3
+ "version": "0.2.25",
4
4
  "description": "LeanSpec CLI binary for macOS x64",
5
5
  "os": [
6
6
  "darwin"
Binary file
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leanspec/cli-linux-x64",
3
- "version": "0.2.23",
3
+ "version": "0.2.25",
4
4
  "description": "LeanSpec CLI binary for Linux x64",
5
5
  "os": [
6
6
  "linux"
Binary file
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leanspec/cli-windows-x64",
3
- "version": "0.2.23",
3
+ "version": "0.2.25",
4
4
  "description": "LeanSpec CLI binary for Windows x64",
5
5
  "os": [
6
6
  "win32"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lean-spec",
3
- "version": "0.2.23",
3
+ "version": "0.2.25",
4
4
  "description": "Specification-driven development made simple",
5
5
  "type": "module",
6
6
  "bin": {
@@ -39,9 +39,9 @@
39
39
  "node": ">=20"
40
40
  },
41
41
  "optionalDependencies": {
42
- "@leanspec/cli-darwin-x64": "0.2.23",
43
- "@leanspec/cli-darwin-arm64": "0.2.23",
44
- "@leanspec/cli-linux-x64": "0.2.23",
45
- "@leanspec/cli-windows-x64": "0.2.23"
42
+ "@leanspec/cli-darwin-x64": "0.2.25",
43
+ "@leanspec/cli-darwin-arm64": "0.2.25",
44
+ "@leanspec/cli-linux-x64": "0.2.25",
45
+ "@leanspec/cli-windows-x64": "0.2.25"
46
46
  }
47
47
  }
@@ -36,7 +36,7 @@
36
36
  |------|---------|
37
37
  | **NEVER edit frontmatter manually** | Use `update`, `link`, `unlink` for: `status`, `priority`, `tags`, `assignee`, `transitions`, timestamps, `depends_on` |
38
38
  | **ALWAYS link spec references** | Content mentions another spec → `lean-spec link <spec> --depends-on <other>` |
39
- | **Track status transitions** | `planned` → `in-progress` (before coding) → `complete` (after done) |
39
+ | **Track status transitions** | `draft` → `planned` → `in-progress` (before coding) → `complete` (after done) |
40
40
  | **Keep specs current** | Document progress, decisions, and learnings as work happens. Obsolete specs mislead both humans and AI |
41
41
  | **No nested code blocks** | Use indentation instead |
42
42
 
@@ -46,7 +46,7 @@
46
46
  |----------|---------------|
47
47
  | Create spec files manually | Use `create` tool |
48
48
  | Skip discovery | Run `board` and `search` first |
49
- | Leave status as "planned" | Update to `in-progress` before coding |
49
+ | Leave status as "draft" or "planned" | Update to `in-progress` before coding |
50
50
  | Edit frontmatter manually | Use `update` tool |
51
51
  | Complete spec without documentation | Document progress, prompts, learnings first |
52
52