AG
Все проекты

Code Writer: воспроизведение правок в VS Code

C++20 CLI: git diff между двумя коммитами превращается в пошаговый план и воспроизводится в VS Code через эмуляцию ввода (Windows). Для обучающих видео и демо.

C++20CMakeGitVS CodeWindows APIAutomationOpen Source
Code Writer: воспроизведение правок в VS Code

В двух словах

Code Writer: утилита для авторов скринкастов. По диапазону коммитов строится план действий в VS Code и выполняется как с клавиатуры на Windows (API SendInput). На Linux и в CI доступен режим --dry-run: проверка плана без отправки клавиш.

Зачем проект открыт

  • Сценарий: показать зрителю правки из реальной истории Git без ручного сценария в макросе.
  • Аудитория: разработчики, которые пишут обучающий контент в VS Code на Windows.
  • Зрелость: ветка 0.x, публичный контракт описан как CLI (флаги и семантика), не как C++ библиотека. Подробности в репозитории: docs/architecture.md.

Что умеет

  • Режимы fast, realistic, cinematic (скорость и паузы для таймлапса).
  • Пошаговый проход по коммитам (--stepwise) между from и to.
  • Замена содержимого файлов из git show на целевой ревизии, сохранение через сочетания клавиш VS Code.

Не цели (важно)

  • Не merge-tool и не интеллектуальный патчер по строкам diff.
  • Не кросс-редактор: только VS Code и раскладка команд из документации.
  • Не запускать без присмотра на рабочей машине с лишними окнами: это полноценная эмуляция ввода.

Репозиторий и документация

РесурсСсылка
Код, CI, issue-формыgithub.com/xitren/code_writer
Быстрый старт и CLIdocs/usage.md
Архитектура и границы APIdocs/architecture.md
Примеры сценариевexamples/
Участие и DCOCONTRIBUTING.md
УязвимостиSECURITY.md
Кодекс поведенияCODE_OF_CONDUCT.md
Прогресс по чеклисту OSSRELEASE_READINESS.md

Технический стек

  • Язык: C++20
  • Сборка: CMake 3.24+ (presets: Clang + Ninja, MSVC)
  • Платформа выполнения: Windows (user32, буфер обмена)
  • Планирование: вызовы git из процесса; сборка и тесты также на Linux (без реальной отправки клавиш)

Лицензия

Проект распространяется под GNU GPLv3 (LICENSE).