@legna-lnc/legnacode 1.4.4 → 1.4.6
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 +344 -313
- package/README.md +218 -171
- package/README.zh-CN.md +341 -0
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,551 +1,582 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
🌐 [中文文档](./CHANGELOG.zh-CN.md)
|
|
4
|
+
|
|
3
5
|
All notable changes to LegnaCode CLI will be documented in this file.
|
|
4
6
|
|
|
7
|
+
## [1.4.6] - 2026-04-13
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
- **OML skill crash fix** — All 40 OML skills (16 superpowers + 5 orchestrators + 19 agents) returned `string` instead of `ContentBlockParam[]` from `getPromptForCommand`, causing `result.filter is not a function` crash on `/ultrawork`, `/ralph`, `/autopilot`, etc. Now wrapped as `Promise<[{ type: 'text', text }]>`.
|
|
12
|
+
- **Statusline writes to wrong config dir** — `statuslineSetup` agent hardcoded `~/.claude/settings.json` and `~/.claude/statusline-command.sh`. Fixed to `~/.legna/`.
|
|
13
|
+
|
|
14
|
+
### Improvements
|
|
15
|
+
|
|
16
|
+
- **Plans moved to project-local** — Default plan directory changed from `~/.legna/plans/` to `<cwd>/.legna/plans/`. Plans now live alongside the project they belong to.
|
|
17
|
+
- **Auto-memory moved to project-local** — Default auto-memory path changed from `~/.legna/projects/<slug>/memory/` to `<cwd>/.legna/memory/`. First startup auto-migrates files from the legacy global path (non-destructive, never overwrites).
|
|
18
|
+
- **Compound engineering seamless fusion** — Knowledge compounding from compound-engineering-plugin, injected into 3 existing automation points with zero new commands:
|
|
19
|
+
- `onPreCompress`: high-value exchange pairs auto-written to `docs/solutions/` (opt-in via `mkdir docs/solutions`)
|
|
20
|
+
- `prefetch`: auto-searches `docs/solutions/` for past learnings when user asks related questions
|
|
21
|
+
- `magicKeywords`: deep scope detection (refactor/migrate/architecture) appends a lightweight compound hint
|
|
22
|
+
- **Legacy path comments cleaned** — Updated stale `~/.claude/projects/` references in memdir, extractMemories, settings types
|
|
23
|
+
|
|
24
|
+
## [1.4.5] - 2026-04-13
|
|
25
|
+
|
|
26
|
+
### Features
|
|
27
|
+
|
|
28
|
+
- **OpenViking content tiering fusion** — Ported L0/L1/L2 three-tier content grading from OpenViking's context database:
|
|
29
|
+
- **Content Tiering** — Each drawer auto-generates L0 (one-sentence summary, ~25 words) and L1 (core overview, ~200 words) at upsert time. L2 is the full verbatim content.
|
|
30
|
+
- **Budget-aware wake-up** — `wakeUp()` now accepts a token budget (default 800) and greedily fills it with L1 content, degrading to L0 when budget is tight.
|
|
31
|
+
- **Budget-capped recall** — New `recallWithBudget()` method: L2→L1→L0 degradation strategy ensures recall never exceeds character budget.
|
|
32
|
+
- **CJK-aware token estimation** — `estimateTokens()` handles mixed CJK/Latin text.
|
|
33
|
+
- **SQLite schema migration** — Existing DrawerStore databases auto-migrate with `ALTER TABLE ADD COLUMN`.
|
|
34
|
+
- **Fixed recallByTopic()** — Now passes actual query for vector ranking instead of empty string.
|
|
35
|
+
|
|
5
36
|
## [1.4.4] - 2026-04-11
|
|
6
37
|
|
|
7
38
|
### Improvements
|
|
8
39
|
|
|
9
|
-
-
|
|
10
|
-
- **ToolUseContext
|
|
11
|
-
- **LegnaCode vs Claude Code
|
|
40
|
+
- **Status messages moved to spinner line** — autocompact / output truncated / interrupted status messages no longer insert system messages into the conversation; they now display temporarily on the spinner animation line, flashing briefly without polluting context
|
|
41
|
+
- **ToolUseContext adds setSpinnerMessage** — generic spinner text callback allowing the query loop to update spinner status at any time
|
|
42
|
+
- **LegnaCode vs Claude Code comparison doc** — added [COMPARISON.md](./COMPARISON.md) with 60+ item-by-item comparison across 9 categories
|
|
12
43
|
|
|
13
44
|
## [1.4.3] - 2026-04-11
|
|
14
45
|
|
|
15
46
|
### Features
|
|
16
47
|
|
|
17
|
-
- **mempalace
|
|
18
|
-
- **DrawerStore** — SQLite
|
|
19
|
-
- **TF-IDF
|
|
20
|
-
- **4
|
|
21
|
-
-
|
|
22
|
-
- **Room
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
- **PreCompact
|
|
48
|
+
- **mempalace memory architecture integration** — ported mempalace core memory system, pure TypeScript implementation, zero external dependencies:
|
|
49
|
+
- **DrawerStore** — SQLite-persisted vector memory storage + WAL audit log, deterministic drawer ID (sha256 idempotent upsert)
|
|
50
|
+
- **TF-IDF vectorizer** — pure TS implementation (Porter stemming + cosine similarity), <10K drawer search <5ms
|
|
51
|
+
- **4-layer memory stack** — L0 identity (~100 tokens) + L1 top drawers (~500-800 tokens) loaded every turn, L2/L3 recalled on demand. Per-turn tokens reduced from ~8K to ~800 (~88% savings)
|
|
52
|
+
- **Temporal knowledge graph** — SQLite entity-relation storage, supports triples with validity periods and point-in-time queries
|
|
53
|
+
- **Room auto-classification** — 6 categories (facts/decisions/events/discoveries/preferences/advice) with keyword scoring
|
|
54
|
+
- **Exchange pair extractor** — Q+A paired chunking + 5-category tag scoring (decisions/preferences/milestones/problems/emotional)
|
|
55
|
+
- **Auto-migration** — automatically migrates existing .legna/memory/*.md files to DrawerStore on first startup
|
|
56
|
+
- **PreCompact memory save** — automatically extracts high-value exchange pairs to DrawerStore before compaction, preventing memory loss
|
|
26
57
|
|
|
27
58
|
### Architecture
|
|
28
59
|
|
|
29
|
-
-
|
|
30
|
-
- `types.ts` — Drawer
|
|
31
|
-
- `tfidfVectorizer.ts` — TF-IDF + Porter
|
|
32
|
-
- `drawerStore.ts` — SQLite
|
|
33
|
-
- `roomDetector.ts` —
|
|
34
|
-
- `layeredStack.ts` — 4
|
|
35
|
-
- `knowledgeGraph.ts` —
|
|
36
|
-
- `exchangeExtractor.ts` —
|
|
37
|
-
- `migration.ts` — .md → DrawerStore
|
|
38
|
-
-
|
|
39
|
-
-
|
|
60
|
+
- Added `src/memdir/vectorStore/` — complete vector memory system (8 files)
|
|
61
|
+
- `types.ts` — Drawer, SearchResult, MetadataFilter types
|
|
62
|
+
- `tfidfVectorizer.ts` — TF-IDF + Porter stemming + cosine similarity
|
|
63
|
+
- `drawerStore.ts` — SQLite persistence + WAL + vector search
|
|
64
|
+
- `roomDetector.ts` — content auto-classification
|
|
65
|
+
- `layeredStack.ts` — 4-layer memory stack
|
|
66
|
+
- `knowledgeGraph.ts` — temporal knowledge graph
|
|
67
|
+
- `exchangeExtractor.ts` — exchange pair extraction + tag scoring
|
|
68
|
+
- `migration.ts` — .md → DrawerStore auto-migration
|
|
69
|
+
- Upgraded `src/memdir/providers/FileMemoryProvider.ts` — DrawerStore + LayeredStack backend
|
|
70
|
+
- Wired `src/services/compact/autoCompact.ts` — calls onPreCompress before compaction
|
|
40
71
|
|
|
41
72
|
## [1.4.2] - 2026-04-11
|
|
42
73
|
|
|
43
74
|
### Features
|
|
44
75
|
|
|
45
|
-
- **verbose
|
|
46
|
-
- **Token/Timer
|
|
47
|
-
- **Autocompact
|
|
48
|
-
-
|
|
49
|
-
- **Output truncated
|
|
50
|
-
-
|
|
51
|
-
- **Microcompact/Snip
|
|
52
|
-
- **ForkedAgent
|
|
76
|
+
- **verbose enabled by default** — users now see full tool execution progress and status information by default
|
|
77
|
+
- **Token/Timer instant display** — removed 30-second delay, token count and elapsed time shown from second 1
|
|
78
|
+
- **Autocompact status visible** — displays "Compacting conversation context..." system message during conversation compaction
|
|
79
|
+
- **Interrupt reason visible** — shows abort reason on interruption (streaming and tool_execution phases)
|
|
80
|
+
- **Output truncated retry prompt** — displays retry progress during max output tokens recovery
|
|
81
|
+
- **Tool execution logging** — StreamingToolExecutor outputs current tool name and queue depth
|
|
82
|
+
- **Microcompact/Snip logging** — added debug logging for compaction operations
|
|
83
|
+
- **ForkedAgent startup logging** — outputs label and ID when child agent starts
|
|
53
84
|
|
|
54
85
|
### Bug Fixes
|
|
55
86
|
|
|
56
|
-
- **Apple Terminal
|
|
87
|
+
- **Apple Terminal notification logic fix** — bell is now sent only when bell is not disabled (logic was previously inverted)
|
|
57
88
|
|
|
58
89
|
## [1.4.0] - 2026-04-11
|
|
59
90
|
|
|
60
91
|
### Features
|
|
61
92
|
|
|
62
|
-
- **MiniMax
|
|
63
|
-
- `MiniMaxImageGenerate` —
|
|
64
|
-
- `MiniMaxVideoGenerate` —
|
|
65
|
-
- `MiniMaxSpeechSynthesize` —
|
|
66
|
-
- `MiniMaxMusicGenerate` —
|
|
67
|
-
- `MiniMaxVisionDescribe` —
|
|
68
|
-
- `MiniMaxWebSearch` —
|
|
69
|
-
- **MiniMax
|
|
70
|
-
- **MiniMax
|
|
71
|
-
- **MiniMax
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
- **RPC
|
|
78
|
-
- **Memory Provider
|
|
79
|
-
-
|
|
80
|
-
- **Worker
|
|
93
|
+
- **MiniMax deep native integration** — when using MiniMax models with `MINIMAX_API_KEY` configured, automatically registers 6 native multimodal tools:
|
|
94
|
+
- `MiniMaxImageGenerate` — image generation (POST /v1/image_generation)
|
|
95
|
+
- `MiniMaxVideoGenerate` — video generation + async polling (POST /v1/video_generation)
|
|
96
|
+
- `MiniMaxSpeechSynthesize` — text-to-speech (POST /v1/t2a_v2)
|
|
97
|
+
- `MiniMaxMusicGenerate` — music generation (POST /v1/music_generation)
|
|
98
|
+
- `MiniMaxVisionDescribe` — image understanding VLM (POST /v1/coding_plan/vlm)
|
|
99
|
+
- `MiniMaxWebSearch` — web search (POST /v1/web_search)
|
|
100
|
+
- **MiniMax auth command** — `/auth-minimax` command to configure API key, persisted to `~/.legna/minimax-credentials.json`
|
|
101
|
+
- **MiniMax tool schema export** — `schemaExport.ts` supports exporting Anthropic-compatible tool schemas
|
|
102
|
+
- **MiniMax multimodal skill pack** — 5 built-in skills (image/video/speech/music/pipeline) guiding AI to orchestrate multimodal workflows
|
|
103
|
+
- **Smart model routing** — heuristic routing to fast/default/strong model tiers based on prompt complexity
|
|
104
|
+
- **Autonomous skill detection** — detects repetitive tool call patterns and prompts users to save as reusable skills
|
|
105
|
+
- **Context compression enhancements**:
|
|
106
|
+
- Tool output pre-pruning — large tool_result blocks auto-trimmed before compact (head + tail preserved)
|
|
107
|
+
- Budget pressure injection — injects hints into tool results when context usage exceeds 80%, guiding the model to wrap up
|
|
108
|
+
- **RPC subprocess tool execution** — Unix Domain Socket RPC server + stub generator + code execution runner; AI-generated scripts can call back LegnaCode tools (Bash/Read/Write/Edit/Glob/Grep/WebFetch) via RPC, compressing multi-step operations into a single inference
|
|
109
|
+
- **Memory Provider plugin system** — abstract base class + registry + default FileMemoryProvider; supports one external provider running in parallel with built-in memory, full lifecycle (initialize/prefetch/syncTurn/shutdown) + optional hooks (onTurnStart/onSessionEnd/onPreCompress/onDelegation)
|
|
110
|
+
- **Cross-session memory search** — `/recall` command searches historical session JSONL files with keyword matching + relevance ranking
|
|
111
|
+
- **Worker thread pool** — large file operations / batch searches can be offloaded to worker threads, avoiding main thread blocking
|
|
81
112
|
|
|
82
113
|
### Architecture
|
|
83
114
|
|
|
84
|
-
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
-
-
|
|
95
|
-
-
|
|
115
|
+
- Added `src/tools/MiniMaxTools/` — complete MiniMax multimodal tool directory (client, endpoints, 6 buildTool tools, conditional registration, schema export)
|
|
116
|
+
- Added `src/services/rpc/` — RPC subprocess tool execution (rpcServer.ts, stubGenerator.ts, codeExecutionRunner.ts)
|
|
117
|
+
- Added `src/memdir/providers/` — Memory Provider plugin system (MemoryProvider.ts abstract base class, FileMemoryProvider.ts default implementation, registry.ts registry)
|
|
118
|
+
- Added `src/services/modelRouter.ts` — task complexity estimation + model tier routing
|
|
119
|
+
- Added `src/services/skillAutoCreate.ts` — tool call pattern detector, integrated into toolExecution.ts
|
|
120
|
+
- Added `src/services/compact/toolOutputPruner.ts` — tool output pre-pruning, integrated into autoCompact.ts
|
|
121
|
+
- Added `src/services/compact/budgetPressure.ts` — context budget pressure injection, integrated into query.ts
|
|
122
|
+
- Added `src/services/sessionSearch.ts` — cross-session search engine
|
|
123
|
+
- Added `src/commands/recall/` — `/recall` command
|
|
124
|
+
- Added `src/commands/auth/` — `/auth-minimax` command
|
|
125
|
+
- Added `src/skills/builtin-minimax/` — 5 MiniMax multimodal skill files
|
|
126
|
+
- Added `src/utils/workerPool.ts` — worker thread pool
|
|
96
127
|
|
|
97
128
|
## [1.3.7] - 2026-04-09
|
|
98
129
|
|
|
99
130
|
### Bug Fixes
|
|
100
131
|
|
|
101
|
-
- **Resume
|
|
102
|
-
- **Interrupted
|
|
132
|
+
- **Resume session detection** — `legna resume` failed to discover sessions written to `<project>/.legna/sessions/` since v1.3.0. `getStatOnlyLogsForWorktrees()` only scanned the global `~/.legna/projects/`; it now also scans the project-local sessions directory, consistent with `fetchLogs()` behavior
|
|
133
|
+
- **Interrupted diagnostics logging** — added abort reason + call stack logging at `onCancel()` and `query.ts` interrupt points; traceable under `--verbose` mode
|
|
103
134
|
|
|
104
135
|
### Enhancements
|
|
105
136
|
|
|
106
|
-
- **Priority-now
|
|
107
|
-
-
|
|
137
|
+
- **Priority-now interrupt visibility** — when a queued command interrupts the current task, the command summary is logged to debug log instead of silently aborting
|
|
138
|
+
- **Background task status visibility** — footer pill shows real-time activity summary for a single background agent (latest tool + token stats); task completion notification includes progress statistics
|
|
108
139
|
|
|
109
140
|
### Architecture
|
|
110
141
|
|
|
111
|
-
- `src/utils/sessionStorage.ts` — `getStatOnlyLogsForWorktrees()` Path A/B
|
|
112
|
-
- `src/query.ts` —
|
|
113
|
-
- `src/screens/REPL.tsx` — `onCancel()`
|
|
114
|
-
- `src/tasks/pillLabel.ts` —
|
|
115
|
-
- `src/tasks/LocalMainSessionTask.ts` — `completeMainSessionTask`
|
|
142
|
+
- `src/utils/sessionStorage.ts` — `getStatOnlyLogsForWorktrees()` Path A/B both include `.legna/sessions/` scanning
|
|
143
|
+
- `src/query.ts` — abort reason logging added at both `createUserInterruptionMessage` call sites
|
|
144
|
+
- `src/screens/REPL.tsx` — `onCancel()` call stack logging, priority-now useEffect logs command summary
|
|
145
|
+
- `src/tasks/pillLabel.ts` — single agent task displays `getActivitySummary()` real-time activity
|
|
146
|
+
- `src/tasks/LocalMainSessionTask.ts` — `completeMainSessionTask` captures progress, notification includes statistics
|
|
116
147
|
|
|
117
148
|
## [1.3.6] - 2026-04-09
|
|
118
149
|
|
|
119
150
|
### Bug Fixes
|
|
120
151
|
|
|
121
|
-
- **Windows Edit
|
|
122
|
-
- `FileStateCache`
|
|
123
|
-
- `expandPath()`
|
|
152
|
+
- **Windows Edit tool path separator false positive** — fixed [#7935](https://github.com/anthropics/claude-code/issues/7935): on Windows, after reading a file with forward slashes (`D:/path`), Edit/MultiEdit tools reported "File has been unexpectedly modified" error. Root cause: `path.normalize()` does not always convert `/` to `\` in certain runtimes (Bun compiled binary + Git Bash/MINGW environment), causing FileStateCache key mismatch
|
|
153
|
+
- `FileStateCache` added `normalizeKey()` — explicitly replaces `/` with the native separator (Windows: `\`) after `path.normalize()`, ensuring `D:/foo` and `D:\foo` always hit the same cache entry
|
|
154
|
+
- `expandPath()` added `ensureNativeSeparators()` — all returned paths force backslashes on Windows as a defensive fix
|
|
124
155
|
|
|
125
156
|
### Architecture
|
|
126
157
|
|
|
127
|
-
- `src/utils/fileStateCache.ts` — `normalizeKey()`
|
|
128
|
-
- `src/utils/path.ts` — `ensureNativeSeparators()`
|
|
158
|
+
- `src/utils/fileStateCache.ts` — `normalizeKey()` replaces bare `normalize()`, imports `sep`
|
|
159
|
+
- `src/utils/path.ts` — `ensureNativeSeparators()` wraps all `normalize()`/`resolve()`/`join()` return values
|
|
129
160
|
|
|
130
161
|
## [1.3.5] - 2026-04-07
|
|
131
162
|
|
|
132
163
|
### Bug Fixes
|
|
133
164
|
|
|
134
|
-
- **SessionStart hook error** — OML
|
|
135
|
-
- **Windows alt-screen
|
|
136
|
-
- **Windows drainStdin** —
|
|
165
|
+
- **SessionStart hook error** — OML's SessionStart hook used `type: 'prompt'`, but the SessionStart phase has no `toolUseContext` (LLM call context), causing a guaranteed crash. Removed SessionStart hook; skill guidance is now exposed through skill descriptions
|
|
166
|
+
- **Windows alt-screen rendering flicker** — in alt-screen mode, `fullResetSequence_CAUSES_FLICKER` was still triggered (viewport changes, scrollback detection, etc.), causing full-screen clear + redraw flicker. Added `altScreenFullRedraw()` method; in alt-screen mode, uses simple `CSI 2J + CSI H` (erase screen + cursor home) instead of `clearTerminal`'s Windows legacy path
|
|
167
|
+
- **Windows drainStdin** — previously skipped stdin draining entirely on Windows; residual mouse events caused input field corruption. Changed to flush buffered input events by toggling raw mode
|
|
137
168
|
|
|
138
169
|
### Architecture
|
|
139
170
|
|
|
140
|
-
- `src/ink/log-update.ts` — 5
|
|
141
|
-
- `src/ink/ink.tsx` — Windows `drainStdin`
|
|
142
|
-
- `src/plugins/bundled/oml/definition.ts` —
|
|
171
|
+
- `src/ink/log-update.ts` — 5 `fullResetSequence_CAUSES_FLICKER` call sites now check `altScreen`, added `altScreenFullRedraw()` method
|
|
172
|
+
- `src/ink/ink.tsx` — Windows `drainStdin` alternative (toggle raw mode)
|
|
173
|
+
- `src/plugins/bundled/oml/definition.ts` — removed SessionStart hook, OML upgraded to 1.2.0
|
|
143
174
|
|
|
144
175
|
## [1.3.4] - 2026-04-07
|
|
145
176
|
|
|
146
177
|
### New Features
|
|
147
178
|
|
|
148
|
-
- **OML Superpowers
|
|
149
|
-
- `/verify` —
|
|
150
|
-
- `/tdd` — TDD
|
|
151
|
-
- `/debug` — 4
|
|
152
|
-
- `/brainstorm` —
|
|
153
|
-
- `/write-plan` —
|
|
154
|
-
- `/sdd` —
|
|
155
|
-
- `/exec-plan` —
|
|
156
|
-
- `/dispatch` —
|
|
157
|
-
- `/code-review` —
|
|
158
|
-
- `/worktree` — Git worktree
|
|
159
|
-
- `/finish-branch` —
|
|
160
|
-
- **SessionStart
|
|
161
|
-
- OML plugin
|
|
179
|
+
- **OML Superpowers engineering discipline** — integrated obra/superpowers core skills, enforcing strict software engineering workflows for AI
|
|
180
|
+
- `/verify` — completion verification discipline: cannot claim completion without fresh evidence
|
|
181
|
+
- `/tdd` — TDD enforcement: RED-GREEN-REFACTOR, write tests before code
|
|
182
|
+
- `/debug` — 4-stage systematic debugging, question architecture after 3 failures
|
|
183
|
+
- `/brainstorm` — Socratic design: hard gate, no implementation allowed until design is approved
|
|
184
|
+
- `/write-plan` — break design into 2-5 minute tasks, zero placeholders
|
|
185
|
+
- `/sdd` — sub-agent driven development: implement → spec review → quality review, 3 stages
|
|
186
|
+
- `/exec-plan` — load plan file and execute tasks sequentially
|
|
187
|
+
- `/dispatch` — parallel sub-agent dispatch
|
|
188
|
+
- `/code-review` — dispatch reviewer sub-agent
|
|
189
|
+
- `/worktree` — Git worktree isolated development
|
|
190
|
+
- `/finish-branch` — branch wrap-up (merge/PR/keep/discard)
|
|
191
|
+
- **SessionStart skill guidance** — automatically injects OML skill guidance prompt at session start ("1% rule")
|
|
192
|
+
- OML plugin version upgraded to 1.1.0, 35 built-in skills total
|
|
162
193
|
|
|
163
194
|
### Architecture
|
|
164
195
|
|
|
165
|
-
- `src/plugins/bundled/oml/superpowers.ts` — 11
|
|
166
|
-
- `src/plugins/bundled/oml/definition.ts` —
|
|
196
|
+
- `src/plugins/bundled/oml/superpowers.ts` — 11 engineering discipline skills + SessionStart guidance
|
|
197
|
+
- `src/plugins/bundled/oml/definition.ts` — appended superpowers skills + SessionStart hook
|
|
167
198
|
|
|
168
199
|
## [1.3.3] - 2026-04-07
|
|
169
200
|
|
|
170
201
|
### New Features
|
|
171
202
|
|
|
172
|
-
- **OML (Oh-My-LegnaCode)
|
|
173
|
-
- 5
|
|
174
|
-
- 19
|
|
175
|
-
- Magic Keywords
|
|
176
|
-
-
|
|
177
|
-
- `OML_BUILTIN` feature flag
|
|
203
|
+
- **OML (Oh-My-LegnaCode) smart orchestration layer** — built-in oh-my-claudecode core functionality, works out of the box
|
|
204
|
+
- 5 orchestration skills: `/ultrawork` (parallel execution), `/ralph` (persistent loop), `/autopilot` (fully autonomous), `/ralplan` (plan then execute), `/plan-oml` (structured planning)
|
|
205
|
+
- 19 specialized agent skills: `/oml:explore`, `/oml:planner`, `/oml:architect`, `/oml:executor`, `/oml:verifier`, etc.
|
|
206
|
+
- Magic Keywords auto-detection: when prompt contains keywords like ultrawork/ralph/autopilot/ultrathink, orchestration directives are auto-injected (supports CJK and Vietnamese)
|
|
207
|
+
- Can be enabled/disabled via `/plugin` UI (`oml@builtin`, enabled by default)
|
|
208
|
+
- `OML_BUILTIN` feature flag controls compile-time DCE
|
|
178
209
|
|
|
179
210
|
### Bug Fixes
|
|
180
211
|
|
|
181
|
-
- **Windows Terminal Fullscreen** —
|
|
212
|
+
- **Windows Terminal Fullscreen** — automatically enables alt-screen mode in `WT_SESSION` environment, completely eliminating the cursor-up viewport yank bug (microsoft/terminal#14774). Covers WSL-in-Windows-Terminal. `CLAUDE_CODE_NO_FLICKER=0` to opt-out
|
|
182
213
|
|
|
183
214
|
### Architecture
|
|
184
215
|
|
|
185
|
-
- `src/plugins/bundled/oml/` — OML plugin
|
|
186
|
-
- `src/plugins/bundled/index.ts` —
|
|
187
|
-
- `src/utils/processUserInput/processUserInput.ts` — magic keyword
|
|
188
|
-
- `src/utils/fullscreen.ts` — Windows Terminal fullscreen
|
|
216
|
+
- `src/plugins/bundled/oml/` — OML plugin module (definition, skills, agents, magicKeywords)
|
|
217
|
+
- `src/plugins/bundled/index.ts` — registered OML builtin plugin
|
|
218
|
+
- `src/utils/processUserInput/processUserInput.ts` — magic keyword detection integration point
|
|
219
|
+
- `src/utils/fullscreen.ts` — Windows Terminal fullscreen condition
|
|
189
220
|
|
|
190
221
|
## [1.3.2] - 2026-04-07
|
|
191
222
|
|
|
192
223
|
### Breaking Changes
|
|
193
224
|
|
|
194
|
-
-
|
|
225
|
+
- **Disabled HISTORY_SNIP** — `bunfig.toml` feature flag set to false, compile-time DCE removes all snip-related code (SnipTool, snipCompact, snipProjection, force-snip command, attachments nudge). Auto-compact is unaffected; context management reverts to the original mechanism
|
|
195
226
|
|
|
196
227
|
### Bug Fixes
|
|
197
228
|
|
|
198
|
-
- **Windows Terminal
|
|
229
|
+
- **Windows Terminal streaming text** — no longer disables streaming text display for all Windows; now only disabled under legacy conhost. Windows Terminal (detected via `WT_SESSION` environment variable) restores normal streaming rendering
|
|
199
230
|
|
|
200
231
|
## [1.3.1] - 2026-04-06
|
|
201
232
|
|
|
202
233
|
### Bug Fixes
|
|
203
234
|
|
|
204
|
-
- **Snip
|
|
205
|
-
- **Snip nudge
|
|
206
|
-
- **branch
|
|
207
|
-
- **admin
|
|
235
|
+
- **Snip-aware context window** — 1M models are no longer prematurely snipped; `KEEP_RECENT` changed from hardcoded 10 to dynamic calculation (1M: 200, 500K: 100, 200K: 10)
|
|
236
|
+
- **Snip nudge frequency** — 1M model nudge threshold raised from 20 to 100 messages
|
|
237
|
+
- **branch command branding** — `/branch` resume prompt changed from `claude -r` to `legna -r`
|
|
238
|
+
- **admin version fallback** — displays correct version number when running from source
|
|
208
239
|
|
|
209
240
|
### Architecture
|
|
210
241
|
|
|
211
|
-
- `src/services/compact/snipCompact.ts` —
|
|
212
|
-
- `src/query.ts` / `src/QueryEngine.ts` / `src/commands/force-snip-impl.ts` —
|
|
242
|
+
- `src/services/compact/snipCompact.ts` — added `getSnipThresholds(model)` dynamic threshold function; `snipCompactIfNeeded` and `shouldNudgeForSnips` gained model parameter
|
|
243
|
+
- `src/query.ts` / `src/QueryEngine.ts` / `src/commands/force-snip-impl.ts` — pass model parameter
|
|
213
244
|
|
|
214
245
|
## [1.3.0] - 2026-04-04
|
|
215
246
|
|
|
216
247
|
### New Features
|
|
217
248
|
|
|
218
|
-
-
|
|
219
|
-
-
|
|
220
|
-
-
|
|
221
|
-
- `.legna/`
|
|
222
|
-
-
|
|
223
|
-
-
|
|
224
|
-
-
|
|
225
|
-
- `LEGNA_NO_CONFIG_SYNC=1`
|
|
226
|
-
- **`legna migrate`
|
|
227
|
-
- `--global`
|
|
228
|
-
- `--sessions`
|
|
229
|
-
- `--all`
|
|
230
|
-
- `--dry-run`
|
|
231
|
-
-
|
|
249
|
+
- **Project-local storage** — sessions, skills, memory, rules, and settings all moved down to `<project>/.legna/` directory
|
|
250
|
+
- New sessions written to `<project>/.legna/sessions/<uuid>.jsonl`, traveling with the project
|
|
251
|
+
- Project-level skills/rules/settings/agent-memory/workflows unified under `.legna/`
|
|
252
|
+
- `.legna/` automatically added to `.gitignore`
|
|
253
|
+
- **Global data migration** — automatically migrates from `~/.claude/` to `~/.legna/` on first startup (one-way)
|
|
254
|
+
- Migrates settings.json, credentials, rules, skills, agents, plugins, keybindings, etc.
|
|
255
|
+
- Does not overwrite existing files; writes `.migration-done` marker on completion
|
|
256
|
+
- `LEGNA_NO_CONFIG_SYNC=1` to disable
|
|
257
|
+
- **`legna migrate` command** — manual data migration
|
|
258
|
+
- `--global` migrates global data only
|
|
259
|
+
- `--sessions` migrates current project sessions to local only
|
|
260
|
+
- `--all` migrates everything (default)
|
|
261
|
+
- `--dry-run` preview mode
|
|
262
|
+
- **Three-level fallback reads** — automatically searches `.legna/` → `.claude/` → `~/.legna/` → `~/.claude/` when reading, zero-breakage backward compatibility
|
|
232
263
|
|
|
233
264
|
### Architecture
|
|
234
265
|
|
|
235
|
-
- `src/utils/legnaPathResolver.ts` —
|
|
236
|
-
- `src/utils/ensureLegnaGitignored.ts` —
|
|
237
|
-
- `src/utils/envUtils.ts` —
|
|
238
|
-
- `src/utils/sessionStoragePortable.ts` —
|
|
239
|
-
- `src/utils/sessionStorage.ts` —
|
|
240
|
-
- `src/utils/listSessionsImpl.ts` —
|
|
241
|
-
- `src/commands/migrate/` — CLI
|
|
266
|
+
- `src/utils/legnaPathResolver.ts` — unified path resolution (PROJECT_FOLDER/LEGACY_FOLDER/resolveProjectPath)
|
|
267
|
+
- `src/utils/ensureLegnaGitignored.ts` — auto-gitignore utility
|
|
268
|
+
- `src/utils/envUtils.ts` — refactored global migration logic, removed old syncClaudeConfigToLegna
|
|
269
|
+
- `src/utils/sessionStoragePortable.ts` — added getLocalSessionsDir/getLegacyProjectsDir, refactored resolveSessionFilePath
|
|
270
|
+
- `src/utils/sessionStorage.ts` — session write path switched to project-local
|
|
271
|
+
- `src/utils/listSessionsImpl.ts` — multi-source scan and merge (local + global + legacy)
|
|
272
|
+
- `src/commands/migrate/` — CLI migration command
|
|
242
273
|
|
|
243
274
|
## [1.2.1] - 2026-04-04
|
|
244
275
|
|
|
245
276
|
### New Features
|
|
246
277
|
|
|
247
|
-
-
|
|
248
|
-
- **MiMo (Xiaomi)
|
|
278
|
+
- **Model Adapter Layer** — unified third-party model compatibility framework, auto-detects model/endpoint and applies corresponding transforms
|
|
279
|
+
- **MiMo (Xiaomi) adapter** — api.xiaomimimo.com/anthropic, supports mimo-v2-pro/omni/flash (1M ctx)
|
|
249
280
|
- simplifyThinking + forceAutoToolChoice + normalizeTools + stripBetas + injectTopP(0.95) + stripCacheControl
|
|
250
|
-
-
|
|
251
|
-
- **GLM (ZhipuAI)
|
|
252
|
-
-
|
|
253
|
-
- **DeepSeek
|
|
254
|
-
- stripReasoningContent
|
|
255
|
-
- **Kimi (Moonshot)
|
|
256
|
-
-
|
|
257
|
-
- **MiniMax
|
|
258
|
-
-
|
|
259
|
-
-
|
|
260
|
-
-
|
|
281
|
+
- Handles content_filter / repetition_truncation stop_reason
|
|
282
|
+
- **GLM (ZhipuAI) adapter** — open.bigmodel.cn/api/anthropic, supports glm-5.1/5/5-turbo/4.7/4.6/4.5, etc.
|
|
283
|
+
- Full standard transform suite, server-side auto-caching (strip cache_control)
|
|
284
|
+
- **DeepSeek adapter** — api.deepseek.com/anthropic, supports deepseek-chat/coder/reasoner
|
|
285
|
+
- stripReasoningContent to avoid 400 errors, reasoner models auto-strip temperature/top_p
|
|
286
|
+
- **Kimi (Moonshot) adapter** — api.moonshot.ai/anthropic, supports kimi-k2/k2.5/k2-turbo, etc.
|
|
287
|
+
- Preserves cache_control (Kimi supports prompt caching discount), stripReasoningContent
|
|
288
|
+
- **MiniMax adapter** — api.minimaxi.com/anthropic (China) + api.minimax.io/anthropic (international)
|
|
289
|
+
- Supports MiniMax-M2.7/M2.5/M2.1/M2 full series (204K ctx), case-insensitive matching
|
|
290
|
+
- Deep compatibility: preserves metadata, tool_choice, cache_control, top_p (other adapters need strip/force)
|
|
291
|
+
- Only needs simplifyThinking + normalizeTools + stripBetas + stripUnsupportedFieldsKeepMetadata
|
|
261
292
|
|
|
262
293
|
### Architecture
|
|
263
294
|
|
|
264
|
-
- `src/utils/model/adapters/index.ts` —
|
|
265
|
-
- `src/utils/model/adapters/shared.ts` — 12
|
|
266
|
-
- `src/utils/model/adapters/{mimo,glm,deepseek,kimi,minimax}.ts` — 5
|
|
267
|
-
- `src/services/api/claude.ts` — paramsFromContext()
|
|
295
|
+
- `src/utils/model/adapters/index.ts` — adapter registry + match/transform dispatch
|
|
296
|
+
- `src/utils/model/adapters/shared.ts` — 12 shared transform functions (including new stripUnsupportedFieldsKeepMetadata)
|
|
297
|
+
- `src/utils/model/adapters/{mimo,glm,deepseek,kimi,minimax}.ts` — 5 provider adapters
|
|
298
|
+
- `src/services/api/claude.ts` — paramsFromContext() calls applyModelAdapter() at the end
|
|
268
299
|
|
|
269
300
|
## [1.2.0] - 2026-04-03
|
|
270
301
|
|
|
271
302
|
### New Features
|
|
272
303
|
|
|
273
|
-
-
|
|
274
|
-
- **resume
|
|
275
|
-
-
|
|
276
|
-
- **Windows
|
|
304
|
+
- **Sessions grouped by project** — WebUI session history panel groups sessions by project path
|
|
305
|
+
- **resume command with cd** — copied resume command auto-includes `cd` to project directory (Windows uses `cd /d`)
|
|
306
|
+
- **Migration supports session history** — config migration panel adds "also migrate session history" option, copies `projects/` directory
|
|
307
|
+
- **Windows native compilation** — Windows binary now compiled natively on Windows
|
|
277
308
|
|
|
278
309
|
### Fixed
|
|
279
310
|
|
|
280
|
-
-
|
|
311
|
+
- Migration panel field names corrected to match actual settings.json fields
|
|
281
312
|
|
|
282
313
|
## [1.1.10] - 2026-04-03
|
|
283
314
|
|
|
284
315
|
### Fixed
|
|
285
316
|
|
|
286
|
-
- **Windows
|
|
287
|
-
- **Windows
|
|
317
|
+
- **Windows compile script fix** — `scripts/compile.ts` correctly handles `.exe` suffix on Windows, fixing the issue where compiled output file could not be found
|
|
318
|
+
- **Windows native binary recompiled and published** — recompiled native `legna.exe` using Windows-native Bun, replacing the previous cross-compiled version
|
|
288
319
|
|
|
289
320
|
## [1.1.9] - 2026-04-03
|
|
290
321
|
|
|
291
322
|
### Fixed
|
|
292
323
|
|
|
293
|
-
- **postinstall
|
|
294
|
-
-
|
|
295
|
-
- **bin wrapper
|
|
324
|
+
- **postinstall auto-installs platform package** — added `npm/postinstall.cjs`; during `npm install`, automatically detects and installs the corresponding platform binary package from the official registry, completely solving the issue where optionalDependencies fails on Windows/mirror registries
|
|
325
|
+
- **Force official registry** — postinstall uses `--registry https://registry.npmjs.org` to avoid 404 errors from unsynchronized mirrors (e.g., Taobao)
|
|
326
|
+
- **bin wrapper simplified** — removed runtime auto-install logic, now guaranteed by postinstall
|
|
296
327
|
|
|
297
328
|
## [1.1.8] - 2026-04-03
|
|
298
329
|
|
|
299
330
|
### Fixed
|
|
300
331
|
|
|
301
|
-
- **Windows npm
|
|
302
|
-
- **bin wrapper
|
|
332
|
+
- **Windows npm global install missing platform package** — bin wrapper now auto-executes `npm install -g` for the corresponding platform package when it detects the package is not installed, no longer requiring manual user action
|
|
333
|
+
- **bin wrapper path lookup optimization** — fixed scope directory path joining under global node_modules flat layout
|
|
303
334
|
|
|
304
335
|
## [1.1.7] - 2026-04-03
|
|
305
336
|
|
|
306
337
|
### Fixed
|
|
307
338
|
|
|
308
|
-
-
|
|
339
|
+
- **Completely fixed Windows external module error** — cleared the compile external list; all stub modules (`@ant/*`, `@anthropic-ai/*`, native napi) are now bundled into the binary, no longer depending on runtime external modules
|
|
309
340
|
|
|
310
341
|
## [1.1.6] - 2026-04-03
|
|
311
342
|
|
|
312
343
|
### Fixed
|
|
313
344
|
|
|
314
|
-
- **Windows external module
|
|
315
|
-
- **bin wrapper
|
|
316
|
-
-
|
|
317
|
-
-
|
|
345
|
+
- **Windows external module error** — removed `@anthropic-ai/sandbox-runtime`, `@anthropic-ai/mcpb`, `@anthropic-ai/claude-agent-sdk`, `audio-capture-napi`, `color-diff-napi`, `modifiers-napi` from the compile external list, letting stub code bundle directly into the binary; Windows no longer reports `Cannot find module`
|
|
346
|
+
- **bin wrapper multi-path lookup** — `npm/bin/legna.cjs` added global node_modules flat path and nested path fallback, improving cross-platform npm global install compatibility
|
|
347
|
+
- **Version number automation** — added `scripts/bump.ts` for one-click sync of version numbers across package.json, bunfig.toml, webui/package.json, and optionalDependencies
|
|
348
|
+
- **Release process automation** — rewrote `scripts/publish.ts` for one-click bump → build webui → compile all → publish npm
|
|
318
349
|
|
|
319
350
|
## [1.1.5] - 2026-04-03
|
|
320
351
|
|
|
321
352
|
### New Features
|
|
322
353
|
|
|
323
|
-
- **WebUI
|
|
324
|
-
-
|
|
325
|
-
-
|
|
326
|
-
-
|
|
327
|
-
-
|
|
328
|
-
- **npm
|
|
329
|
-
- **OAuth
|
|
354
|
+
- **WebUI admin panel** — `legna admin` launches a browser-based admin panel (HTTP server + React SPA, default port 3456), visual management of both `~/.claude/` and `~/.legna/` config directories
|
|
355
|
+
- **Config editing** — edit API endpoint, API key, model mapping (Opus/Sonnet/Haiku), timeout, permission mode, language, and all other settings.json fields in the browser
|
|
356
|
+
- **Config file switching** — lists settings*.json files, shows baseUrl/model, one-click swap to activate
|
|
357
|
+
- **Session history browsing** — parses all session JSONL files under the projects directory, displays project path, slug, time, prompt count, and copy resume command
|
|
358
|
+
- **Config migration** — Claude ↔ LegnaCode bidirectional migration, supports full or selective field migration (env/model/permissions, etc.), preview diff before migration
|
|
359
|
+
- **npm cross-platform publishing** — bin wrapper (.cjs), compile-all cross-platform compilation (darwin/linux/win32), publish script
|
|
360
|
+
- **OAuth disabled** — `isAnthropicAuthEnabled()` returns false, removed OAuth login flow
|
|
330
361
|
|
|
331
362
|
### Fixed (1.1.1 ~ 1.1.5)
|
|
332
363
|
|
|
333
|
-
- bin wrapper
|
|
334
|
-
- `optionalDependencies`
|
|
335
|
-
-
|
|
336
|
-
- WebUI
|
|
337
|
-
-
|
|
364
|
+
- bin wrapper changed to `.cjs` to fix ESM `require` error
|
|
365
|
+
- `optionalDependencies` platform package versions aligned
|
|
366
|
+
- Terminal restored on admin server exit with screen clear
|
|
367
|
+
- WebUI frontend inlined into binary, no longer depends on external `webui/dist/`
|
|
368
|
+
- All package versions unified to 1.1.5
|
|
338
369
|
|
|
339
370
|
### Architecture
|
|
340
371
|
|
|
341
|
-
-
|
|
342
|
-
-
|
|
343
|
-
-
|
|
344
|
-
- CLI
|
|
372
|
+
- Backend: `src/server/admin.ts` — Bun.serve REST API, SPA inlined as string constant
|
|
373
|
+
- Frontend: `webui/` — React 18 + Vite + Tailwind SPA, tab-based scope switching
|
|
374
|
+
- Inlining: `scripts/inline-webui.ts` → `src/server/admin-ui-html.ts`
|
|
375
|
+
- CLI: `src/entrypoints/cli.tsx` — `admin` fast-path, zero extra module loading
|
|
345
376
|
|
|
346
377
|
## [1.0.9] - 2026-04-03
|
|
347
378
|
|
|
348
379
|
### New Features
|
|
349
380
|
|
|
350
|
-
- **i18n
|
|
351
|
-
-
|
|
352
|
-
-
|
|
381
|
+
- **i18n multilingual completion** — completed ~100 missing hardcoded English strings across 9 files, covering Spinner, teammate tree, pill labels, keyboard shortcut hints, Tips, and all other UI areas
|
|
382
|
+
- **Built-in styled status bar** — no external script configuration needed; displays directory, Git branch/sync status, model name (smart parsing to friendly name), colored context progress bar, and time by default; cross-platform compatible with Win/Mac/Linux
|
|
383
|
+
- **Config auto-migration** — automatically syncs `~/.claude/settings.json` to `~/.legna/settings.json` on startup; prints warning without overwriting when both sides differ; `LEGNA_NO_CONFIG_SYNC=1` to disable
|
|
353
384
|
|
|
354
385
|
### Changed
|
|
355
386
|
|
|
356
|
-
- `~/.legna/`
|
|
357
|
-
-
|
|
358
|
-
- `KeyboardShortcutHint`
|
|
387
|
+
- `~/.legna/` is now the preferred config directory, `~/.claude/` serves as compatibility fallback
|
|
388
|
+
- Status bar model name auto-parsing: `Claude-Opus-4-6-Agentic[1m]` → `Opus 4.6`
|
|
389
|
+
- `KeyboardShortcutHint` component "to" connector word internationalized (Chinese displays "→")
|
|
359
390
|
|
|
360
391
|
### Files Changed
|
|
361
392
|
|
|
362
|
-
|
|
|
363
|
-
|
|
364
|
-
| `src/utils/i18n/zh.ts` | +50
|
|
365
|
-
| `src/components/Spinner.tsx` | 7
|
|
366
|
-
| `src/components/PromptInput/PromptInputFooterLeftSide.tsx` | 4
|
|
367
|
-
| `src/components/design-system/KeyboardShortcutHint.tsx` | "to"
|
|
393
|
+
| File | Changes |
|
|
394
|
+
|------|---------|
|
|
395
|
+
| `src/utils/i18n/zh.ts` | +50 translation entries |
|
|
396
|
+
| `src/components/Spinner.tsx` | 7 i18n points |
|
|
397
|
+
| `src/components/PromptInput/PromptInputFooterLeftSide.tsx` | 4 i18n points |
|
|
398
|
+
| `src/components/design-system/KeyboardShortcutHint.tsx` | "to" internationalized |
|
|
368
399
|
| `src/components/Spinner/teammateSelectHint.ts` | i18n |
|
|
369
|
-
| `src/components/Spinner/TeammateSpinnerTree.tsx` | 6
|
|
370
|
-
| `src/components/Spinner/TeammateSpinnerLine.tsx` | 7
|
|
371
|
-
| `src/tasks/pillLabel.ts` |
|
|
372
|
-
| `src/services/tips/tipRegistry.ts` | 25
|
|
373
|
-
| `src/utils/builtinStatusLine.ts` |
|
|
374
|
-
| `src/components/StatusLine.tsx` |
|
|
375
|
-
| `src/utils/envUtils.ts` |
|
|
400
|
+
| `src/components/Spinner/TeammateSpinnerTree.tsx` | 6 i18n points |
|
|
401
|
+
| `src/components/Spinner/TeammateSpinnerLine.tsx` | 7 i18n points |
|
|
402
|
+
| `src/tasks/pillLabel.ts` | all pill labels i18n |
|
|
403
|
+
| `src/services/tips/tipRegistry.ts` | 25 tips i18n |
|
|
404
|
+
| `src/utils/builtinStatusLine.ts` | added: built-in status bar renderer |
|
|
405
|
+
| `src/components/StatusLine.tsx` | integrated built-in status bar |
|
|
406
|
+
| `src/utils/envUtils.ts` | config auto-migration logic |
|
|
376
407
|
|
|
377
408
|
## [1.0.8] - 2026-04-02
|
|
378
409
|
|
|
379
410
|
### New Features
|
|
380
411
|
|
|
381
|
-
- **MONITOR_TOOL** — MCP
|
|
382
|
-
- **WORKFLOW_SCRIPTS** —
|
|
383
|
-
- **HISTORY_SNIP** —
|
|
412
|
+
- **MONITOR_TOOL** — MCP server health monitoring tool, supports start/stop/status operations, background periodic ping to detect connection status
|
|
413
|
+
- **WORKFLOW_SCRIPTS** — workflow automation system, reads `.claude/workflows/*.md` to execute multi-step workflows, `/workflows` command lists available workflows
|
|
414
|
+
- **HISTORY_SNIP** — session history trimming, model can proactively call SnipTool to remove old messages and free context, `/force-snip` for forced trimming, UI retains full history while model view is filtered
|
|
384
415
|
|
|
385
416
|
### Infrastructure
|
|
386
417
|
|
|
387
|
-
-
|
|
388
|
-
-
|
|
389
|
-
-
|
|
390
|
-
-
|
|
391
|
-
-
|
|
392
|
-
-
|
|
393
|
-
-
|
|
394
|
-
-
|
|
395
|
-
-
|
|
396
|
-
-
|
|
397
|
-
-
|
|
398
|
-
-
|
|
399
|
-
-
|
|
400
|
-
-
|
|
401
|
-
-
|
|
402
|
-
-
|
|
403
|
-
-
|
|
404
|
-
- 3
|
|
405
|
-
-
|
|
418
|
+
- Added `src/tools/MonitorTool/MonitorTool.ts` — MCP monitoring tool (buildTool construction)
|
|
419
|
+
- Added `src/tasks/MonitorMcpTask/MonitorMcpTask.ts` — monitoring background task lifecycle management
|
|
420
|
+
- Added `src/components/permissions/MonitorPermissionRequest/` — monitoring permission UI
|
|
421
|
+
- Added `src/components/tasks/MonitorMcpDetailDialog.tsx` — monitoring task detail dialog
|
|
422
|
+
- Added `src/tools/WorkflowTool/WorkflowTool.ts` — workflow execution tool
|
|
423
|
+
- Added `src/tools/WorkflowTool/createWorkflowCommand.ts` — workflow command scanning and registration
|
|
424
|
+
- Added `src/tools/WorkflowTool/bundled/index.ts` — built-in workflow registration entry
|
|
425
|
+
- Added `src/tools/WorkflowTool/WorkflowPermissionRequest.tsx` — workflow permission UI
|
|
426
|
+
- Added `src/commands/workflows/` — `/workflows` slash command
|
|
427
|
+
- Added `src/tasks/LocalWorkflowTask/LocalWorkflowTask.ts` — workflow background task (kill/skip/retry)
|
|
428
|
+
- Added `src/components/tasks/WorkflowDetailDialog.tsx` — workflow detail dialog
|
|
429
|
+
- Added `src/services/compact/snipCompact.ts` — trim trigger logic (rewrote stub)
|
|
430
|
+
- Added `src/services/compact/snipProjection.ts` — model view message filtering
|
|
431
|
+
- Added `src/tools/SnipTool/SnipTool.ts` — model-callable trimming tool
|
|
432
|
+
- Added `src/tools/SnipTool/prompt.ts` — SnipTool constants and prompt
|
|
433
|
+
- Added `src/commands/force-snip.ts` — `/force-snip` slash command
|
|
434
|
+
- Added `src/components/messages/SnipBoundaryMessage.tsx` — trim boundary UI component
|
|
435
|
+
- 3 feature flags flipped: MONITOR_TOOL, WORKFLOW_SCRIPTS, HISTORY_SNIP
|
|
436
|
+
- Cumulative 47/87 feature flags enabled
|
|
406
437
|
|
|
407
438
|
## [1.0.7] - 2026-04-02
|
|
408
439
|
|
|
409
440
|
### New Features
|
|
410
441
|
|
|
411
|
-
- **TERMINAL_PANEL** — `Alt+J`
|
|
412
|
-
- **WEB_BROWSER_TOOL** —
|
|
413
|
-
- **TEMPLATES** —
|
|
414
|
-
- **BG_SESSIONS** —
|
|
442
|
+
- **TERMINAL_PANEL** — `Alt+J` toggles built-in terminal panel (tmux persistent), TerminalCapture tool can read terminal content
|
|
443
|
+
- **WEB_BROWSER_TOOL** — built-in web browsing tool, fetches web page content and extracts text
|
|
444
|
+
- **TEMPLATES** — structured workflow template system, `legna new/list/reply` CLI commands, job status tracking
|
|
445
|
+
- **BG_SESSIONS** — background session management, `legna ps/logs/attach/kill/--bg`, tmux persistence + PID file discovery
|
|
415
446
|
|
|
416
447
|
### Infrastructure
|
|
417
448
|
|
|
418
|
-
-
|
|
419
|
-
-
|
|
420
|
-
-
|
|
421
|
-
-
|
|
422
|
-
-
|
|
423
|
-
-
|
|
424
|
-
-
|
|
425
|
-
-
|
|
449
|
+
- Added `src/tools/TerminalCaptureTool/` — tmux capture-pane tool (2 files)
|
|
450
|
+
- Added `src/tools/WebBrowserTool/WebBrowserTool.ts` — fetch + HTML text extraction
|
|
451
|
+
- Added `src/jobs/classifier.ts` — workflow turn classifier
|
|
452
|
+
- Added `src/cli/handlers/templateJobs.ts` — template CLI handler
|
|
453
|
+
- Added `src/cli/bg.ts` — background session CLI (5 handlers)
|
|
454
|
+
- Added `src/utils/taskSummary.ts` — periodic activity summary
|
|
455
|
+
- Added `src/utils/udsClient.ts` — active session enumeration
|
|
456
|
+
- Cumulative 44/87 feature flags enabled
|
|
426
457
|
|
|
427
458
|
## [1.0.6] - 2026-04-02
|
|
428
459
|
|
|
429
460
|
### New Features
|
|
430
461
|
|
|
431
|
-
- **CACHED_MICROCOMPACT** —
|
|
432
|
-
- **AGENT_TRIGGERS** — `/loop` cron
|
|
433
|
-
- **TREE_SITTER_BASH** —
|
|
434
|
-
- **TREE_SITTER_BASH_SHADOW** — tree-sitter
|
|
435
|
-
- **MCP_SKILLS** —
|
|
436
|
-
- **REACTIVE_COMPACT** — 413
|
|
437
|
-
- **REVIEW_ARTIFACT** — `/review`
|
|
462
|
+
- **CACHED_MICROCOMPACT** — cache-aware tool result compression, deletes old tool_result via API cache_edits directive without breaking prompt cache
|
|
463
|
+
- **AGENT_TRIGGERS** — `/loop` cron scheduling command + CronCreate/Delete/List tools, local scheduled task engine
|
|
464
|
+
- **TREE_SITTER_BASH** — pure TypeScript bash AST parser (~4300 lines), used for command safety analysis
|
|
465
|
+
- **TREE_SITTER_BASH_SHADOW** — tree-sitter vs legacy parser shadow comparison mode
|
|
466
|
+
- **MCP_SKILLS** — auto-discovers and registers skill commands from MCP server `skill://` resources
|
|
467
|
+
- **REACTIVE_COMPACT** — auto-triggers context compression on 413/overload errors
|
|
468
|
+
- **REVIEW_ARTIFACT** — `/review` code review skill + ReviewArtifact tool
|
|
438
469
|
|
|
439
470
|
### Infrastructure
|
|
440
471
|
|
|
441
|
-
-
|
|
442
|
-
-
|
|
443
|
-
-
|
|
444
|
-
-
|
|
445
|
-
-
|
|
446
|
-
-
|
|
472
|
+
- Rewrote `src/services/compact/cachedMicrocompact.ts` (from stub to 150+ line full implementation)
|
|
473
|
+
- Added `src/services/compact/cachedMCConfig.ts` — synchronous config module
|
|
474
|
+
- Added `CACHE_EDITING_BETA_HEADER` to `src/constants/betas.ts`
|
|
475
|
+
- Added `src/skills/mcpSkills.ts`, `src/services/compact/reactiveCompact.ts`
|
|
476
|
+
- Added `src/tools/ReviewArtifactTool/`, `src/skills/bundled/hunter.ts`
|
|
477
|
+
- Cumulative 40/87 feature flags enabled
|
|
447
478
|
|
|
448
479
|
## [1.0.5] - 2026-04-02
|
|
449
480
|
|
|
450
481
|
### New Features
|
|
451
482
|
|
|
452
|
-
- **AGENT_TRIGGERS** — `/loop` cron
|
|
453
|
-
- **TREE_SITTER_BASH** —
|
|
454
|
-
- **TREE_SITTER_BASH_SHADOW** — tree-sitter
|
|
455
|
-
- **MCP_SKILLS** —
|
|
456
|
-
- **REACTIVE_COMPACT** — 413
|
|
457
|
-
- **REVIEW_ARTIFACT** — `/review`
|
|
483
|
+
- **AGENT_TRIGGERS** — `/loop` cron scheduling command, CronCreate/Delete/List tools, local scheduled task engine
|
|
484
|
+
- **TREE_SITTER_BASH** — pure TypeScript bash AST parser, used for command safety analysis
|
|
485
|
+
- **TREE_SITTER_BASH_SHADOW** — tree-sitter vs legacy parser shadow comparison mode
|
|
486
|
+
- **MCP_SKILLS** — auto-discovers and registers skill commands from MCP server `skill://` resources
|
|
487
|
+
- **REACTIVE_COMPACT** — auto-triggers context compression on 413/overload errors
|
|
488
|
+
- **REVIEW_ARTIFACT** — `/review` code review skill + ReviewArtifact tool + permission UI
|
|
458
489
|
|
|
459
490
|
### Infrastructure
|
|
460
491
|
|
|
461
|
-
-
|
|
462
|
-
-
|
|
463
|
-
-
|
|
464
|
-
-
|
|
465
|
-
-
|
|
466
|
-
-
|
|
492
|
+
- Added `src/skills/mcpSkills.ts` — MCP skill discovery module
|
|
493
|
+
- Added `src/services/compact/reactiveCompact.ts` — reactive compression strategy
|
|
494
|
+
- Added `src/tools/ReviewArtifactTool/` — code review tool
|
|
495
|
+
- Added `src/components/permissions/ReviewArtifactPermissionRequest/` — review permission UI
|
|
496
|
+
- Added `src/skills/bundled/hunter.ts` — /review skill registration
|
|
497
|
+
- Cumulative 39/87 feature flags enabled
|
|
467
498
|
|
|
468
499
|
## [1.0.4] - 2026-04-02
|
|
469
500
|
|
|
470
501
|
### New Features
|
|
471
502
|
|
|
472
|
-
- **ULTRAPLAN** — `/ultraplan`
|
|
473
|
-
- **VERIFICATION_AGENT** —
|
|
474
|
-
- **AUTO_THEME** —
|
|
475
|
-
- **AGENT_MEMORY_SNAPSHOT** — Agent
|
|
476
|
-
- **FILE_PERSISTENCE** —
|
|
477
|
-
- **POWERSHELL_AUTO_MODE** — PowerShell
|
|
478
|
-
- **HARD_FAIL** —
|
|
479
|
-
- **SLOW_OPERATION_LOGGING** —
|
|
480
|
-
- **UNATTENDED_RETRY** —
|
|
481
|
-
- **ALLOW_TEST_VERSIONS** —
|
|
503
|
+
- **ULTRAPLAN** — `/ultraplan` structured multi-step planning command
|
|
504
|
+
- **VERIFICATION_AGENT** — auto-spawns verification Agent after batch task completion
|
|
505
|
+
- **AUTO_THEME** — auto-switches dark/light theme by querying terminal background color via OSC 11
|
|
506
|
+
- **AGENT_MEMORY_SNAPSHOT** — Agent memory snapshots
|
|
507
|
+
- **FILE_PERSISTENCE** — file persistence tracking
|
|
508
|
+
- **POWERSHELL_AUTO_MODE** — PowerShell auto mode
|
|
509
|
+
- **HARD_FAIL** — strict error mode
|
|
510
|
+
- **SLOW_OPERATION_LOGGING** — slow operation logging
|
|
511
|
+
- **UNATTENDED_RETRY** — unattended retry
|
|
512
|
+
- **ALLOW_TEST_VERSIONS** — allow test versions
|
|
482
513
|
|
|
483
514
|
### Infrastructure
|
|
484
515
|
|
|
485
|
-
-
|
|
486
|
-
-
|
|
516
|
+
- Added `src/utils/systemThemeWatcher.ts` — OSC 11 terminal theme detection and real-time monitoring
|
|
517
|
+
- Cumulative 33/87 feature flags enabled
|
|
487
518
|
|
|
488
519
|
## [1.0.3] - 2026-04-02
|
|
489
520
|
|
|
490
521
|
### New Features
|
|
491
522
|
|
|
492
|
-
- **COMMIT_ATTRIBUTION** —
|
|
493
|
-
- **AWAY_SUMMARY** —
|
|
494
|
-
- **COMPACTION_REMINDERS** —
|
|
495
|
-
- **HOOK_PROMPTS** —
|
|
496
|
-
- **BASH_CLASSIFIER** —
|
|
497
|
-
- **EXTRACT_MEMORIES** —
|
|
498
|
-
- **SHOT_STATS** —
|
|
499
|
-
- **PROMPT_CACHE_BREAK_DETECTION** —
|
|
500
|
-
- **ULTRATHINK** —
|
|
501
|
-
- **MCP_RICH_OUTPUT** — MCP
|
|
502
|
-
- **CONNECTOR_TEXT** —
|
|
503
|
-
- **NATIVE_CLIPBOARD_IMAGE** —
|
|
504
|
-
- **NEW_INIT** —
|
|
505
|
-
- **DUMP_SYSTEM_PROMPT** —
|
|
506
|
-
- **BREAK_CACHE_COMMAND** — `/break-cache`
|
|
507
|
-
- **BUILTIN_EXPLORE_PLAN_AGENTS** —
|
|
523
|
+
- **COMMIT_ATTRIBUTION** — tracks Claude's contribution ratio per commit, PR description auto-appends attribution trailer
|
|
524
|
+
- **AWAY_SUMMARY** — displays summary of what happened while user was away
|
|
525
|
+
- **COMPACTION_REMINDERS** — efficiency reminders during context compaction
|
|
526
|
+
- **HOOK_PROMPTS** — allows hooks to request user input
|
|
527
|
+
- **BASH_CLASSIFIER** — shell command safety classifier
|
|
528
|
+
- **EXTRACT_MEMORIES** — auto-extracts persistent memories from conversations
|
|
529
|
+
- **SHOT_STATS** — session statistics panel
|
|
530
|
+
- **PROMPT_CACHE_BREAK_DETECTION** — detects prompt cache invalidation
|
|
531
|
+
- **ULTRATHINK** — deep thinking mode
|
|
532
|
+
- **MCP_RICH_OUTPUT** — MCP tool rich text output
|
|
533
|
+
- **CONNECTOR_TEXT** — connector text enhancement
|
|
534
|
+
- **NATIVE_CLIPBOARD_IMAGE** — native clipboard image support
|
|
535
|
+
- **NEW_INIT** — improved project initialization flow
|
|
536
|
+
- **DUMP_SYSTEM_PROMPT** — debug system prompt export
|
|
537
|
+
- **BREAK_CACHE_COMMAND** — `/break-cache` command
|
|
538
|
+
- **BUILTIN_EXPLORE_PLAN_AGENTS** — built-in Explore/Plan Agents
|
|
508
539
|
|
|
509
540
|
### Infrastructure
|
|
510
541
|
|
|
511
|
-
-
|
|
542
|
+
- Added `src/utils/attributionHooks.ts`, `attributionTrailer.ts`, `postCommitAttribution.ts` — three attribution modules
|
|
512
543
|
|
|
513
544
|
## [1.0.2] - 2026-04-02
|
|
514
545
|
|
|
515
546
|
### New Features
|
|
516
547
|
|
|
517
|
-
- **QUICK_SEARCH** —
|
|
518
|
-
- **MESSAGE_ACTIONS** —
|
|
519
|
-
- **FORK_SUBAGENT** — `/fork <directive>`
|
|
520
|
-
- **HISTORY_PICKER** — `Ctrl+R`
|
|
548
|
+
- **QUICK_SEARCH** — `Ctrl+P` quick file open in fullscreen mode, `Ctrl+Shift+F` global symbol/content search
|
|
549
|
+
- **MESSAGE_ACTIONS** — copy, edit, retry and other actions on messages in fullscreen mode
|
|
550
|
+
- **FORK_SUBAGENT** — `/fork <directive>` session fork, child Agent inherits full conversation context and executes tasks in parallel
|
|
551
|
+
- **HISTORY_PICKER** — `Ctrl+R` opens history search dialog, replacing the previous inline search
|
|
521
552
|
|
|
522
553
|
### Infrastructure
|
|
523
554
|
|
|
524
|
-
-
|
|
555
|
+
- Added `src/commands/fork/` command module and `UserForkBoilerplateMessage` UI component
|
|
525
556
|
|
|
526
557
|
## [1.0.1] - 2026-04-02
|
|
527
558
|
|
|
528
559
|
### New Features
|
|
529
560
|
|
|
530
|
-
- **BUDDY
|
|
531
|
-
- `/buddy hatch`
|
|
532
|
-
-
|
|
533
|
-
-
|
|
534
|
-
- **TOKEN_BUDGET** —
|
|
535
|
-
- **STREAMLINED_OUTPUT** —
|
|
561
|
+
- **BUDDY virtual pet companion** — `/buddy hatch` hatches an exclusive coding pet, 18 species, 5 rarities, random attributes
|
|
562
|
+
- `/buddy hatch` hatch · `/buddy pet` pet · `/buddy stats` stats · `/buddy release` release
|
|
563
|
+
- Pet comments in cute language based on conversation context, supports multilingual auto-switching
|
|
564
|
+
- Re-hatching after release gives a different pet (generation counter)
|
|
565
|
+
- **TOKEN_BUDGET** — use `+500k` or `use 2M tokens` in prompts to set token budget, auto-tracks usage
|
|
566
|
+
- **STREAMLINED_OUTPUT** — environment variable `CLAUDE_CODE_STREAMLINED_OUTPUT=true` enables streamlined output
|
|
536
567
|
|
|
537
568
|
### Fixes
|
|
538
569
|
|
|
539
|
-
-
|
|
570
|
+
- **Build system feature flags fix** — `scripts/build.ts` now correctly reads `bunfig.toml`'s `[bundle.features]` and passes them to the `Bun.build()` API; previously all `feature()` calls defaulted to `false`
|
|
540
571
|
|
|
541
572
|
### Infrastructure
|
|
542
573
|
|
|
543
|
-
-
|
|
544
|
-
-
|
|
545
|
-
-
|
|
574
|
+
- Added `scripts/compile.ts` replacing bare `bun build --compile`, ensuring compiled binary correctly applies feature flags
|
|
575
|
+
- Added `src/buddy/companionObserver.ts` context-aware pet reaction system
|
|
576
|
+
- Added `src/commands/buddy/` complete command module
|
|
546
577
|
|
|
547
578
|
## [1.0.0] - 2026-03-31
|
|
548
579
|
|
|
549
580
|
- Initial release: LegnaCode CLI v1.0.0
|
|
550
|
-
-
|
|
551
|
-
-
|
|
581
|
+
- Built on the Claude Code CLI open-source edition
|
|
582
|
+
- Brand adaptation and customization
|