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