Releases: andrelncampos/dscode-public
v1.0.46
🎓 V44: Quickstart — Interactive SDD Pipeline Tour
The /quickstart command demonstrates the SDD pipeline in practice — users learn planned → created → verified → implemented → audited by watching it run, not reading documentation.
/quickstart — 5-minute guided tour
- Demo mode: The LLM creates an example spec (
hello-worldCLI) and walks through the full cycle:/spec-plan→/spec-new→/spec-verify→/spec-implement→/spec-audit. - Real project: Alternatively, users can apply SDD immediately to their own project.
- CLI flag:
dscode --quickstartjumps straight into the tour without typing commands. - Welcome screen: The command appears as a suggestion for new users on the start screen.
Spec-plan optimized — zero LLM cost (spec 560)
/spec-plan-begin, /spec-plan-end, and /spec-plan-reset now execute as pure TypeScript (Level B), consuming zero auxiliary model tokens. Each call saves ~200-500 tokens that were previously wasted.
- Bug fix:
/spec-plan-endno longer fails when detecting the begin marker — the/spec-plan-beginmessage is now correctly stored in the session. - Cleaner architecture: All spec-plan orchestration was removed from
OpenAIMessageConverter, leaving it focused solely on message format conversion.
Internal improvements
- Lesson L11: New anti-pattern documented — don't split specs when documentation overhead outweighs code changes.
- Vertical slice check: All three SDD templates (plan, verify, audit) now include end-to-end completeness verification.
- Spec-list tree:
/spec-listrenders specs as a hierarchical tree grouped by status. - DeepCode purged: All legacy
deepcodereferences removed from production code and tests. - Budget: Column
Custo (USD)renamed toCusto Total (USD)in the/budgettable for clarity.
Fixes
/spec-auditnow correctly injectskarpathyContent(missing since spec 550).- ESLint warnings fixed in
AppStateContext.tsxandPromptInput.tsx.
⚡ V40: Performance-First Execution — 4 specs, zero regressions
Surgical optimization of I/O, CPU, and memory across 4 fronts. Result: faster sessions, lighter startup, leaner history.
Session I/O (spec 420)
- Incremental writes:
appendFileSyncinstead of rewriting the entire messages file - Sessions index cache:
_cachedSessionsIndexin memory —loadSessionsIndex()was called 6× per turn reading from disk - Directory guard:
_projectDirEnsuredavoids unnecessarymkdirSync - String buffers:
push+joinin streaming loops instead of+=(reallocation per chunk)
Startup (spec 430)
- Parallel skills:
Promise.all+fs/promises— simultaneous loading, zero sequentialreadFileSync - Cached templates: Prompt templates (
templates/tools/*.md,templates/skills/*.md) in immutable cache — no longer re-read from disk every turn
Compaction & memory (spec 440)
- Incremental hash:
findStablePrefixEndIndex()uses a single incremental SHA-256 instance — O(N) instead of O(N²) - Parallel turns:
readRecentTurns()decompresses files in parallel withPromise.all - Async backup:
backupSpecFile()usesfs/promises.copyFile— zero blocking
Hardening (spec 450)
- Limited concurrency:
readRecentTurnsprocesses in batches of 8 with early termination — no wasted I/O - Mtime invalidation: Sessions index cache checks
mtimeMs— safe for multi-terminal use - ENOENT recovery:
ensureProjectDirresets the flag if.dscode/is deleted during a session - ESLint
no-floating-promises: Active rule — 5 violations fixed withvoid
🐛 PDF: Context Budget Fix (spec 460)
- PDFs with compressed ObjStm:
countPdfPagesreturnsnull(not0) when regex heuristic fails. Large PDFs are no longer embedded as base64 in context — preventing overflow of the 1M token window.
🚀 Node.js 24 Native API Optimizations
- Grep handler: native
fs.globSync, async parallel reads, streaming — -143 lines, -1 dependency - Glob handler: Custom walker replaced by
fs.globSync— -51 lines
🔧 Fixes
cacheModein Zod schema: Settings withcacheModeare no longer rejected as invalid/spec-pipe: Auto-creates session when none is active- FD leaks: File descriptors closed in grep binary detection catch block and MCP client disconnect
- Unused variable:
unusedInBinaryDetectionregex removed from grep handler
📋 Documentation & infra
- 5 steering rules in
AGENTS.md: authorization, cross-check, verification, consequence, output - V39 and V40 documented in
vision.md - Node 26 notice on welcome screen: "Starting October 2026, DsCode will require Node.js 26."
- Release notes now use
RELEASE_NOTES.md(not--generate-notes)
🚀 Node.js 24 — All-in
Complete migration to Node 24 as baseline. Zero compatibility with older versions.
Native APIs replacing dependencies
fs.globSyncnative replacesglobnpm package — -4 dependenciesnode:zstdnative replaces Brotli fallback fromnode:zlib— 4× smaller compressorError.isError()→getErrorMessage()function cross-realm safe in 21 filesstructuredClonenative — deep clone from 8 lines to 1esbuildtargetnode24— no polyfills for Node 22- CI on Node 24 — build and test on real runtime
🍎 macOS Apple Silicon in automatic releases
- macOS ARM64 (
macos-latest) now builds automatically on every tag push - macOS Intel (
macos-13) removed — GitHub deprecated runner, no queue wait - Dry-run covers Windows, Linux, and macOS ARM64
- Checksum download fixed (root cause of
400 Bad Content-Lengtherror in v1.0.41)
🔄 Robust Auto-Update
- 100% aligned asset naming between CI and
update-check.ts - Portable packages (fallback when SEA fails) now copy all companion files:
dscode.mjs,node,templates/,node_modules/ - File extraction and atomic binary replacement on all platforms
🖼️ Local OCR with Tesseract.js
- Offline OCR via
tesseract.jsfor models without image support (e.g., DeepSeek V4) - Dynamic import —
tesseract.jsonly loads when OCR is actually used, zero startup impact - All 12 transitive dependencies bundled in the portable package
- Extracted text truncated at 2000 characters (word boundary)
/image-pasteand/image-uploadwith automatic OCR fallback- File drag-and-drop via terminal paste
🐛 Fixes
- v1.0.41:
400 Bad Content-Lengtherror on publish — checksums were not downloaded - v1.0.42/43: macOS Intel stuck releases due to missing runner — removed from pipeline
- Auto-update: Portable packages broke on update — now copies companion files
- Bundle: Silent build failure — now
exit(1)and CI detects it - OCR startup:
regenerator-runtimenot found at startup —tesseract.jsloaded on demand - Ink ErrorBanner error, context window overflow, spec suffixes
📐 Specifications & build
- Specs 370-410: build validation, operational resilience, traceability, auto-update
validate-binary.mjsuses tag version (not package.json)release-dry-run.ymlcovers 3 platforms- README URL validation in CI
v1.0.45
⚡ V40: Performance-First Execution — 4 specs, zero regressions
Surgical I/O, CPU, and memory optimization across 4 fronts. Result: faster sessions, lighter startup, leaner history.
Session I/O (spec 420)
- Incremental writes:
appendFileSyncreplaces rewriting the entire messages file - Sessions index cache:
_cachedSessionsIndexin memory —loadSessionsIndex()was called 6× per turn reading from disk - Directory guard:
_projectDirEnsuredavoids unnecessarymkdirSync - String buffers:
push+joinin streaming loops instead of+=(reallocation on every chunk)
Startup (spec 430)
- Parallel skills:
Promise.all+fs/promises— simultaneous loading, zero sequentialreadFileSync - Cached templates: Prompt templates (
templates/tools/*.md,templates/skills/*.md) in immutable cache — no longer re-read from disk each turn
Compaction & memory (spec 440)
- Incremental hash:
findStablePrefixEndIndex()uses a single incremental SHA-256 instance — O(N) instead of O(N²) - Parallel turns:
readRecentTurns()decompresses files in parallel withPromise.all - Async backup:
backupSpecFile()usesfs/promises.copyFile— zero blocking
Hardening (spec 450)
- Bounded concurrency:
readRecentTurnsprocesses in batches of 8 with early bailout — no wasted I/O - mtime-based invalidation: Sessions index cache checks
mtimeMs— safe for multi-terminal use - ENOENT recovery:
ensureProjectDirresets the flag if.dscode/is deleted mid-session - ESLint
no-floating-promises: Rule active — 5 violations fixed withvoid
🐛 PDF: Context Budget Fix (spec 460)
- PDFs with compressed ObjStm:
countPdfPagesreturnsnull(not0) when the regex heuristic fails. Large PDFs are no longer embedded as base64 in context — preventing 1M token window overflow. - PDF read handler uses
followUpMessages: Output is a short descriptive string instead of inline base64. Content goes throughcontentParamsasimage_url, matching the image handler pattern. Prevents context pollution. - Functional
pagesparameter:pagesnow extracts only the requested page range (viapdf-lib) instead of encoding the entire file. Falls back to full file with clear error metadata on extraction failure. - 5 new tests: Covers descriptive output, followUpMessages, page extraction, fallback on corruption, and single-page extraction.
🚀 Optimizations with native Node.js 24 APIs
- Grep handler: native
fs.globSync, async parallel reads, streaming — -143 lines, -1 dependency - Glob handler: custom walker replaced by
fs.globSync— -51 lines
🔧 Fixes
cacheModein Zod schema: Settings withcacheModeare no longer rejected as invalid/spec-pipe: Auto-creates session when none is active- FD leaks: File descriptors closed in grep binary detection catch and MCP client disconnect
- Unused variable: Regex
unusedInBinaryDetectionremoved from grep handler
📋 Documentation & infra
- 5 steering rules in
AGENTS.md: authorization, cross-check, verify, consequence, output - V39 and V40 documented in
vision.md - Node 26 notice on welcome screen: "Starting October 2026, DsCode will require Node.js 26."
- Release notes now use
RELEASE_NOTES.md(not--generate-notes)
🚀 Node.js 24 — All-in
Full migration to Node 24 as baseline. Zero backward compatibility.
Native APIs replacing dependencies
- Native
fs.globSyncreplaces npmglobpackage — -4 dependencies - Native
node:zstdreplaces Brotli fallback fromnode:zlib— 4× smaller compressor Error.isError()→getErrorMessage()cross-realm safe in 21 files- Native
structuredClone— 8-line deep clone becomes 1 - esbuild target
node24— no polyfills for Node 22 - CI on Node 24 — build and test on the real runtime
🍎 macOS Apple Silicon in automatic releases
- macOS ARM64 (
macos-latest) now builds automatically on every tag push - macOS Intel (
macos-13) removed — deprecated runner by GitHub, no queue wait - Dry-run covers Windows, Linux, and macOS ARM64
- Checksum download fixed (cause of
400 Bad Content-Lengtherror in v1.0.41)
🔄 Robust auto-update
- Asset naming 100% aligned between CI and
update-check.ts - Portable packages (fallback when SEA fails) now copy all companion files:
dscode.mjs,node,templates/,node_modules/ - File extraction and atomic binary replacement across all platforms
🖼️ Local OCR with Tesseract.js
- Offline OCR via
tesseract.jsfor models without image support (e.g., DeepSeek V4) - Dynamic import —
tesseract.jsonly loads when OCR is actually used, zero startup impact - All 12 transitive dependencies packaged in the portable bundle
- Extracted text truncated at 2000 characters (word boundary)
/image-pasteand/image-uploadwith automatic OCR fallback- Drag-and-drop files via paste in terminal
🐛 Fixes (from previous versions)
- v1.0.41:
400 Bad Content-Lengtherror on publish — checksums were not downloaded - v1.0.42/43: macOS Intel blocked releases due to missing runner — removed from pipeline
- Auto-update: Portable packages broke on update — now copies companion files
- Bundle: Silent build failure — now
exit(1)and CI detects it - OCR startup:
regenerator-runtimenot found at startup —tesseract.jsloaded on demand - ErrorBanner in Ink, context window overflow, spec suffixes
📐 Specifications and build
- Specs 370-410: build validation, operational resilience, traceability, auto-update
validate-binary.mjsuses tag version (not package.json)release-dry-run.ymlcovers 3 platforms- README URL validation in CI
v1.0.44
🚀 Node.js 24 — All-in
Migração completa para Node 24 como baseline. Zero compatibilidade com versões antigas.
APIs nativas que substituíram dependências
fs.globSyncnativo substitui pacoteglobnpm — -4 dependênciasnode:zstdnativo substitui fallback Brotli donode:zlib— compressor 4× menorError.isError()→ funçãogetErrorMessage()cross-realm safe em 21 arquivosstructuredClonenativo — clone profundo de 8 linhas vira 1- esbuild target
node24— sem polyfills para Node 22 - CI em Node 24 — build e teste no runtime real
🍎 macOS Apple Silicon em releases automáticas
- macOS ARM64 (
macos-latest) agora builda automaticamente em todo push de tag - macOS Intel (
macos-13) removido — runner deprecated pelo GitHub, sem fila de espera - Dry-run cobre Windows, Linux e macOS ARM64
- Download de checksums corrigido (causa do erro
400 Bad Content-Lengthna v1.0.41)
🔄 Auto-update robusto
- Naming de assets 100% alinhado entre CI e
update-check.ts - Pacotes portable (fallback quando SEA falha) agora copiam todos os arquivos companheiros:
dscode.mjs,node,templates/,node_modules/ - Extração de arquivos e substituição atômica do binário em todas as plataformas
🖼️ OCR local com Tesseract.js
- OCR offline via
tesseract.jspara modelos sem suporte a imagem (ex: DeepSeek V4) - Import dinâmico —
tesseract.jssó carrega quando OCR é realmente usado, zero impacto no startup - Todas as 12 dependências transitivas empacotadas no pacote portable
- Texto extraído truncado em 2000 caracteres (limite de palavra)
/image-pastee/image-uploadcom fallback automático de OCR- Drag-and-drop de arquivos via paste no terminal
🐛 Correções
- v1.0.41: Erro
400 Bad Content-Lengthna publicação — checksums não eram baixados - v1.0.42/43: macOS Intel travava release por falta de runner — removido do pipeline
- Auto-update: Pacotes portable quebravam ao atualizar — agora copia arquivos companheiros
- Bundle: Build silencioso em falha — agora
exit(1)e CI detecta - OCR startup:
regenerator-runtimenão encontrado no startup —tesseract.jscarregado sob demanda - Erro no ErrorBanner Ink, overflow de context window, sufixos de spec
📐 Especificações e build
- Specs 370-410: validação de build, resiliência operacional, rastreabilidade, auto-update
validate-binary.mjsusa versão da tag (não package.json)release-dry-run.ymlcobre 3 plataformas- Validação de URLs dos READMEs no CI
v1.0.43
Full Changelog: v1.0.37...v1.0.43
v1.0.39
Full Changelog: v1.0.37...v1.0.39
v1.0.38
Full Changelog: v1.0.37...v1.0.38
v1.0.37
🇧🇷 Português
🆕 Novos comandos slash (37 no total)
Sessão
/context— Exibe 12 métricas da sessão: tokens usados, custo estimado, cache hit rate, modelo ativo, thinking mode, etc./clear— Limpa o contexto da sessão (zera mensagens e tokens) sem encerrar a sessão.
Notas de desenvolvimento
/notes— Lista todas as notas com status, tags, spec vinculada, e dias até o vencimento./notes-add— Cria uma nova nota de desenvolvimento (com spec, tags, data de vencimento)./notes-delete <id>— Remove uma nota pelo ID numérico./notes-search <termo>— Busca notas por texto livre.
Sistema
/help— Abre o modal de ajuda com todos os comandos e atalhos de teclado, populado dinamicamente.
🧠 Threshold de compactação dinâmico
O gatilho de compactação agora se ajusta automaticamente por modelo:
- DeepSeek (V4 Pro / Flash): 600K tokens (cache ratio alto → 60% da janela de 1M)
- Anthropic (Claude Sonnet 4-6): 380K tokens (cache ratio moderado → 38% da janela de 1M)
- Novos modelos: cálculo automático com base em
contextWindow × f(cacheRatio) - Fallback: 128K tokens para modelos desconhecidos
🏗️ Arquitetura — Session Module Split
Módulos extraídos da session para arquivos próprios:
src/session/compaction.ts— Lógica de compactaçãosrc/session/mcp-lifecycle.ts— Ciclo de vida MCPsrc/session/skills.ts— Descoberta de skills (377 linhas)
🎨 UX
- Menu
#vs/— Prefixo#ativa skills; prefixo/ativa comandos slash. Separados no autocomplete. - Help Modal dinâmico —
/helplista todos os comandos built-in com i18n. - READMEs — Atualizados em 5 idiomas (PT, EN, ES, HI, ZH) com todos os novos comandos.
📐 Especificações
12 specs auditadas (260, 260A/B, 270, 280, 290, 300, 320, 330, 340, 350, 360).
76 arquivos alterados · +8.105 inserções, −713 deleções · 28 commits.
🇺🇸 English
🆕 New slash commands (37 total)
Session
/context— Displays 12 session metrics: tokens used, estimated cost, cache hit rate, active model, thinking mode, and more./clear— Clears the session context (resets messages and tokens) without ending the session.
Developer Notes
/notes— Lists all notes with status, tags, linked spec, and days until due./notes-add— Creates a new development note (with spec, tags, due date)./notes-delete <id>— Removes a note by numeric ID./notes-search <query>— Searches notes by free text.
System
/help— Opens the help modal with all commands and keyboard shortcuts, dynamically populated.
🧠 Dynamic Compaction Threshold
The compaction trigger now auto-adjusts per model:
- DeepSeek (V4 Pro / Flash): 600K tokens (high cache ratio → 60% of 1M window)
- Anthropic (Claude Sonnet 4-6): 380K tokens (moderate cache ratio → 38% of 1M window)
- New models: automatic calculation based on
contextWindow × f(cacheRatio) - Fallback: 128K tokens for unknown models
🏗️ Architecture — Session Module Split
Modules extracted from session into their own files:
src/session/compaction.ts— Compaction logicsrc/session/mcp-lifecycle.ts— MCP lifecyclesrc/session/skills.ts— Skill discovery (377 lines)
🎨 UX
#vs/menu —#prefix activates skills;/prefix activates slash commands. Separated in autocomplete.- Dynamic Help Modal —
/helplists all built-in commands with i18n. - READMEs — Updated in 5 languages (PT, EN, ES, HI, ZH) with all new commands.
📐 Specifications
12 audited specs (260, 260A/B, 270, 280, 290, 300, 320, 330, 340, 350, 360).
76 files changed · +8,105 insertions, −713 deletions · 28 commits.
🇪🇸 Español
🆕 Nuevos comandos slash (37 en total)
Sesión
/context— Muestra 12 métricas de la sesión: tokens usados, costo estimado, tasa de cache hit, modelo activo, modo thinking, etc./clear— Limpia el contexto de la sesión (reinicia mensajes y tokens) sin cerrar la sesión.
Notas de desarrollo
/notes— Lista todas las notas con estado, etiquetas, spec vinculada, y días hasta el vencimiento./notes-add— Crea una nueva nota de desarrollo (con spec, etiquetas, fecha de vencimiento)./notes-delete <id>— Elimina una nota por ID numérico./notes-search <término>— Busca notas por texto libre.
Sistema
/help— Abre el modal de ayuda con todos los comandos y atajos de teclado, poblado dinámicamente.
🧠 Umbral de compactación dinámico
El disparador de compactación ahora se ajusta automáticamente por modelo:
- DeepSeek (V4 Pro / Flash): 600K tokens (cache ratio alto → 60% de la ventana de 1M)
- Anthropic (Claude Sonnet 4-6): 380K tokens (cache ratio moderado → 38% de la ventana de 1M)
- Nuevos modelos: cálculo automático basado en
contextWindow × f(cacheRatio) - Fallback: 128K tokens para modelos desconocidos
🏗️ Arquitectura — Session Module Split
Módulos extraídos de session a archivos propios:
src/session/compaction.ts— Lógica de compactaciónsrc/session/mcp-lifecycle.ts— Ciclo de vida MCPsrc/session/skills.ts— Descubrimiento de skills (377 líneas)
🎨 UX
- Menú
#vs/— Prefijo#activa skills; prefijo/activa comandos slash. Separados en el autocompletado. - Help Modal dinámico —
/helplista todos los comandos built-in con i18n. - READMEs — Actualizados en 5 idiomas (PT, EN, ES, HI, ZH) con todos los nuevos comandos.
📐 Especificaciones
12 specs auditadas (260, 260A/B, 270, 280, 290, 300, 320, 330, 340, 350, 360).
76 archivos modificados · +8.105 inserciones, −713 eliminaciones · 28 commits.
🇮🇳 हिन्दी
🆕 नए स्लैश कमांड (कुल 37)
सत्र (Session)
/context— सत्र के 12 मीट्रिक्स दिखाता है: उपयोग किए गए टोकन, अनुमानित लागत, कैश हिट दर, सक्रिय मॉडल, थिंकिंग मोड, आदि।/clear— सत्र का संदर्भ साफ करता है (संदेश और टोकन रीसेट करता है) बिना सत्र समाप्त किए।
डेवलपर नोट्स (Developer Notes)
/notes— सभी नोट्स को स्थिति, टैग, लिंक्ड spec, और देय तिथि तक शेष दिनों के साथ सूचीबद्ध करता है।/notes-add— एक नया डेवलपमेंट नोट बनाता है (spec, टैग, देय तिथि के साथ)।/notes-delete <id>— संख्यात्मक ID द्वारा एक नोट हटाता है।/notes-search <शब्द>— फ्री टेक्स्ट द्वारा नोट्स खोजता है।
सिस्टम (System)
/help— सभी कमांड और कीबोर्ड शॉर्टकट के साथ सहायता मोडल खोलता है, गतिशील रूप से पॉपुलेटेड।
🧠 डायनामिक कॉम्पैक्शन थ्रेशोल्ड
कॉम्पैक्शन ट्रिगर अब प्रति मॉडल स्वतः समायोजित होता है:
- DeepSeek (V4 Pro / Flash): 600K टोकन (उच्च कैश अनुपात → 1M विंडो का 60%)
- Anthropic (Claude Sonnet 4-6): 380K टोकन (मध्यम कैश अनुपात → 1M विंडो का 38%)
- नए मॉडल:
contextWindow × f(cacheRatio)पर आधारित स्वचालित गणना - फॉलबैक: अज्ञात मॉडलों के लिए 128K टोकन
🏗️ आर्किटेक्चर — Session Module Split
सत्र से निकाले गए मॉड्यूल अपनी फाइलों में:
src/session/compaction.ts— कॉम्पैक्शन लॉजिकsrc/session/mcp-lifecycle.ts— MCP लाइफसाइकिलsrc/session/skills.ts— स्किल डिस्कवरी (377 पंक्तियाँ)
🎨 UX
#बनाम/मेनू —#उपसर्ग skills सक्रिय करता है;/उपसर्ग स्लैश कमांड सक्रिय करता है। ऑटोकम्प्लीट में अलग।- डायनामिक हेल्प मोडल —
/helpसभी बिल्ट-इन कमांड को i18n के साथ सूचीबद्ध करता है। - READMEs — सभी नए कमांड के साथ 5 भाषाओं (PT, EN, ES, HI, ZH) में अपडेटेड।
📐 विशिष्टताएँ
12 ऑडिटेड specs (260, 260A/B, 270, 280, 290, 300, 320, 330, 340, 350, 360)।
76 फ़ाइलें बदली गईं · +8,105 जोड़, −713 हटाए गए · 28 कमिट्स।
🇨🇳 简体中文
🆕 新增斜杠命令(共37个)
会话 (Session)
/context— 显示12项会话指标:已用Token、预估费用、缓存命中率、当前模型、思考模式等。/clear— 清除会话上下文(重置消息和Token),但不结束会话。
开发者笔记 (Developer Notes)
/notes— 列出所有笔记,包含状态、标签、关联spec、距截止日期剩余天数。/notes-add— 创建新的开发笔记(包含spec、标签、截止日期)。/notes-delete <id>— 按数字ID删除笔记。/notes-search <关键词>— 按自由文本搜索笔记。
系统 (System)
/help— 打开帮助弹窗,动态列出所有命令和键盘快捷键。
🧠 动态压缩阈值
压缩触发器现在按模型自动调整:
- DeepSeek (V4 Pro / Flash):600K Token(高缓存比率 → 1M窗口的60%)
- Anthropic (Claude Sonnet 4-6):380K Token(中等缓存比率 → 1M窗口的38%)
- 新模型:基于
contextWindow × f(cacheRatio)自动计算 - 回退:未知模型使用128K Token
🏗️ 架构 — 会话模块拆分
从会话模块中提取到独立文件:
src/session/compaction.ts— 压缩逻辑src/session/mcp-lifecycle.ts— MCP生命周期src/session/skills.ts— 技能发现(377行)
🎨 用户体验
#与/菜单分离 —#前缀激活技能;/前缀激活斜杠命令。自动补全中分开显示。- 动态帮助弹窗 —
/help列出版本所有内置命令并支持国际化。 - README — 已更新为5种语言(葡萄牙语、英语、西班牙语、印地语、简体中文),包含所有新命令。
📐 规范
12个已审计的Spec(260, 260A/B, 270, 280, 290, 300, 320, 330, 340, 350, 360)。
76个文件变更 · +8,105行新增, −713行删除 · 28次提交。
Full Changelog: v1.0.36...v1.0.37
v1.0.36
Full Changelog: v1.0.21...v1.0.36
v1.0.35
Full Changelog: v1.0.21...v1.0.35
v1.0.34
Full Changelog: v1.0.21...v1.0.34