Skip to content

Release v1.5.0 — Engine Foundation, edit_file 2.0 & Complete UI Suite

Choose a tag to compare

@apvcode apvcode released this 01 Sep 22:50
· 3 commits to main since this release

🚀 DEVX v1.5.0 — The Mega-Release: Testing Foundation, edit_file 2.0 & Complete UI Suite

🇬🇧 English  •  🇷🇺 Русский


🇬🇧 English

DEVX v1.5.0 is the biggest and most comprehensive milestone release in the project's history! We have laid a rock-solid testing foundation powered by Vitest (53 automated tests), overhauled the safety and precision of code editing, added fault-tolerant cancellation at any stage, and introduced a complete terminal UI & telemetry suite: live tok/s telemetry spinner, powerline status bar with Git integration, mode indicator frame colors, text-only safe diffs, configurable banners, and persistent prompt history.


🌟 Highlights

1. 🧪 Automated Test Foundation (Vitest & CI)

  • Built a modular test suite with 53 unit tests across 15 test files, running in ~500ms.
  • Comprehensive test coverage: core agent loop, /undo snapshots, context history, file system operations, security guard, live telemetry, diffs, banners, and prompt navigation.
  • Automated GitHub Actions CI matrix running on Node.js 20 & 22 across Ubuntu and Windows.

2. 🔍 edit_file 2.0 Overhaul

  • Collision Detection with Line Reporting: When multiple matches of a target code block are found without replaceAll: true, the agent receives exact line numbers:
    Target text matches 2 occurrences in index.ts at lines: [12, 45]. Please provide more surrounding context or set replaceAll: true.
  • replaceAll Type Coercion: Full support for boolean and string values (true, "true", "false") sent by different LLM providers.
  • Strict CRLF/LF Normalization: Completely eliminates dangling \r carriage return artifacts and terminal rendering corruption.

3. 🛡️ Hardened Security & Fault Tolerance

  • Dangerous Command Blocking: CLIConsoleGuard now strictly blocks rm -rf ., rm -rf ./, rm -rf .., rm -fr . even in YOLO auto-approve mode.
  • Safe Package Installation: Name sanitization in install_package and execution via argument arrays in spawn (preventing command injection).
  • OOM & Binary Protection in searchTool: 512 KB file size ceiling and automatic skipping of compiled extensionless binaries (a.out, Go, Rust, ELF) via null byte detection (\0).
  • Fault-Tolerant /undo in finally Blocks: File snapshots are guaranteed to be saved even during network crashes or unhandled LLM errors.
  • Instant Ctrl+C Cancellation: Smooth cancellation during the "Connecting..." phase without crashing the CLI process.

4. 💅 Complete UI & Telemetry Suite

  • ⭐ Live Telemetry Spinner (src/cli/telemetry.ts): Real-time tok/s calculation using a 2-second sliding window, elapsed timer, and token counter (✻ thinking… 12s · 1.4k tok · 87 tok/s).
  • 📊 Powerline Status Bar (src/cli/statusline.ts): Cached Git branch & dirty indicator (main✱ checked once per turn), visual context progress bar [████░░░░░░] 42%, and cost budget color grading.
  • 🎨 Mode Indicator Accent (src/cli/modeborder.ts): Crisp visual differentiation: AGENT (green), PLAN (cyan), YOLO (strictly red).
  • 🛡️ Safe Text Diff (src/cli/diff.ts): Formatted strictly using text foreground colors without background fills (preventing the v1.4.13 "ANSI background leak" bug).
  • 🖼️ Configurable Banner (src/cli/banner.ts): Supports full, minimal (1 compact line saving screen height in Termux), and off.
  • ⌨️ Command Palette / with Descriptions & Token Counter: Two-column dropdown with inline command descriptions and real-time draft token badge (~120 tok).
  • 💾 Persistent Prompt History (src/cli/history_search.ts): Stores prompt history in ~/.devx/history.jsonl (500 entry limit) with support for linear navigation and fuzzy search.

5. ⚙️ Strict Feature Flags Isolation (Default OFF)

All new UI features are gated behind configuration flags in ~/.devxrc.json (default false for complete stability):

{
  "ui": {
    "liveTelemetry": false,
    "powerlineStatus": false,
    "modeBorder": false,
    "diffColors": false,
    "commandPalette": false,
    "inputTokenCounter": false,
    "promptHistoryFuzzy": false
  },
  "banner": "full"
}

📦 Installation & Upgrade

# Global installation via npm
npm install -g termux-dev@1.5.0

# Or on Android (Termux):
pkg update && pkg install -y nodejs-lts
npm install -g termux-dev@1.5.0


🇷🇺 Русский

DEVX v1.5.0 — крупнейшее и самое масштабное обновление в истории проекта! Мы заложили железобетонный тестовый фундамент на базе Vitest (53 авто-теста), кардинально повысили безопасность и точность редактирования кода, добавили надежную отмену операций на любом этапе и внедрили полноценный пакет интерфейсных улучшений: живой спиннер с телеметрией tok/s, powerline статус-строку с Git-статусом, цветовую индикацию режимов, настраиваемый баннер и постоянную историю промптов.


🌟 Главные новшества (Highlights)

1. 🧪 Тестовый фундамент (Vitest & CI)

  • Разработан модульный набор из 53 unit-тестов (15 тестовых сьютов), выполняющийся за ~500ms.
  • Покрыты все подсистемы: ядро агента, снимки /undo, история контекста, файловые операции, безопасность команд, телеметрия, диффы, баннеры и навигация.
  • Настроена автоматическая CI-матрица в GitHub Actions для Node.js 20 и 22 на Ubuntu и Windows.

2. 🔍 Модернизация edit_file 2.0

  • Защита от коллизий: при обнаружении дубликатов фрагмента без флага replaceAll агент получает точные номера строк:
    Target text matches 2 occurrences in index.ts at lines: [12, 45]. Please provide more surrounding context or set replaceAll: true.
  • Приведение типов replaceAll: поддержка строковых значений "true" и "false" от различных LLM-провайдеров.
  • Строгая нормализация CRLF/LF: исключает появление лишних символов \r и артефактов в терминале.

3. 🛡️ Усиление безопасности и отказоустойчивость

  • Блокировка опасных команд: CLIConsoleGuard теперь блокирует rm -rf ., rm -rf ./, rm -rf .. и rm -fr . даже в YOLO-режиме.
  • Безопасная установка пакетов: санитизация имён в install_package и выполнение через массив аргументов spawn (защита от shell-инъекций).
  • Защита от OOM и бинарников в searchTool: лимит на размер файлов 512 КБ и автоматический пропуск скомпилированных бинарных файлов без расширения (a.out, Go, Rust, ELF) по нулевому байту (\0).
  • Гарантия /undo в блоках finally: сохранение снимков файлов перед изменениями гарантировано даже при аварийном обрыве соединения или фатальных ошибках LLM.
  • Мгновенная отмена по Ctrl+C: аккуратная отмена на этапе «Connecting...» без аварийного закрытия программы.

4. 💅 Полный пакет UI и Телеметрии

  • ⭐ Спиннер с живой телеметрией (src/cli/telemetry.ts): расчет скорости tok/s в скользящем окне (~2 сек), таймер и счетчик токенов в реальном времени (✻ thinking… 12s · 1.4k tok · 87 tok/s).
  • 📊 Powerline статус-строка (src/cli/statusline.ts): кэшированный опрос Git (main✱ 1 раз за ход), графический прогресс-бар контекста [████░░░░░░] 42% и цветовая индикация расходов.
  • 🎨 Рамка режима ввода (src/cli/modeborder.ts): четкие цветовые акценты: AGENT (зеленый), PLAN (голубой), YOLO (строго красный).
  • 🛡️ Безопасный текстовый Diff (src/cli/diff.ts): оформление строго цветом текста без фоновых заливок (полная защита от бага v1.4.13 «ANSI background leak»).
  • 🖼️ Настраиваемый баннер (src/cli/banner.ts): режимы full, minimal (1 строка для Termux) и off.
  • ⌨️ Палитра команд / с описаниями + Токен-счётчик: двухколоночное выпадающее меню с пояснениями команд и живой индикатор размера промпта (~120 tok).
  • 💾 Долгосрочная история промптов (src/cli/history_search.ts): сохранение запросов в ~/.devx/history.jsonl (лимит 500 записей) с поддержкой линейной навигации и fuzzy-поиска.

5. ⚙️ Строгая изоляция Feature Flags (Default OFF)

Все новые UI-функции изолированы за флагами конфигурации ~/.devxrc.json (по умолчанию false для 100% стабильности):

{
  "ui": {
    "liveTelemetry": false,
    "powerlineStatus": false,
    "modeBorder": false,
    "diffColors": false,
    "commandPalette": false,
    "inputTokenCounter": false,
    "promptHistoryFuzzy": false
  },
  "banner": "full"
}

📦 Установка и обновление

# Обновление до v1.5.0 через npm
npm install -g termux-dev@1.5.0

# Или в Termux на Android:
pkg update && pkg install -y nodejs-lts
npm install -g termux-dev@1.5.0

Full Changelog: v1.4.19...v1.5.0