CLI и локальная разработка
Редактор в браузере покрывает весь цикл, но в какой-то момент хочется свой редактор, свой git и свои инструменты. CLI lecodes переносит проект на твою машину: локальная разработка с полным IntelliSense, горячая перезагрузка прямо на телефоне по локальной сети, headless-проверки без устройства и синхронизация с платформой одной командой. Обзор возможностей — на странице CLI; здесь — по шагам.
Установка
CLI — это npm-пакет lecodes-cli (Node ≥ 18); команда, которую он ставит, называется lecodes:
npm i -g lecodes-cli # затем: lecodes <команда>
npx lecodes-cli <команда> # или без установкиЕсли Node на машине нет, возьми standalone-сборку на странице Загрузок: распакуй архив и запусти ./lecodes install — бандл скопируется в библиотечную папку, а lecodes появится в PATH.
Часть команд живёт в отдельных пакетах, которые CLI ставит при первом использовании в ~/.lecodes/peers после подтверждения (--yes или LECODES_YES=1 пропускают вопрос): lecodes-renderer для render и test, lecodes-design для design, lecodes-3d-editor для scene и thumbs, lecodes-assets для assets. Standalone-сборка npm-пакеты не резолвит, так что эти команды требуют установки через npm.
lecodes --version показывает заодно версии опциональных пакетов и откуда они взяты — полезно, когда какая-то команда жалуется, что ей чего-то не хватает. lecodes --help перечисляет команды по группам, lecodes <команда> --help — флаги и примеры.
Локальный проект — без аккаунта
Начать можно вообще без платформы: init разворачивает проект прямо на диске — ни логина, ни сервера.
lecodes init myapp
cd myapp
lecodes devinit кладёт стартовый main.ts, типы SDK, tsconfig.json, CLAUDE.md для ИИ-агентов и первый flow-тест в tests/ — VS Code сразу даёт автодополнение по всем глобалам, офлайн. Команда идемпотентна: существующие файлы не трогает. Правила из Устройства проекта действуют и здесь — никаких пакетных импортов, точка входа без экспортов.
lecodes dev — горячая перезагрузка на устройстве
Главная команда локальной разработки. lecodes dev поднимает dev-сервер в локальной сети и печатает QR-код — отсканируй его приложением le.codes, и проект откроется на телефоне нативно. Дальше цикл замыкается сам:
- Каждое сохранение перекомпилируется и горячо подменяет работающее приложение прямо на устройстве; ошибка сборки откатывает к последней рабочей версии.
console.logи ошибки с устройства стримятся обратно в терминал.- URL стабилен между запусками — телефон переподключается к тому же адресу.
Логин не нужен, ассеты отдаются из рабочей папки. Флаги: --port (по умолчанию 4499), --host — если LAN-адрес определился неверно, --entry, --no-qr.
Тот же проект с той же горячей перезагрузкой можно открыть и на других хостах — хоть на всех сразу:
lecodes dev --web # в браузере (лёгкий веб-хост; камера и карта — в веб-версиях)
lecodes dev --desktop # в нативном окне на Windows или Linux; --fps покажет счётчик кадров
lecodes dev --android # на телефоне по USB через adb reverse — без Wi-Fi и LAN-адреса--android умеет и ограниченную проверку: lecodes dev --android --time 12 --png phone.png запустит приложение, через 12 секунд снимет скриншот с устройства, остановит его и завершится с кодом 1, если оно упало — удобно в CI.
Проект на платформе — clone, link и push
Второй сценарий: проект живёт на le.codes, а ты работаешь с его локальной копией.
lecodes login # откроет браузер и авторизует машину
lecodes clone <uuid-или-url> myapp # файлы + ресурсы + типы
cd myapp
# …правки в своём редакторе…
lecodes status # что изменилось
lecodes diff # построчный diff с сервером
lecodes push -m "Новое меню" # все правки — одним чекпоинтомМодель проще git — без стейджинга и веток. push отправляет всё рабочее дерево, а сервер атомарно собирает из него один чекпоинт: добавления, правки, удаления и переносы сразу; переименования сохраняют историю, неизменённые бинарники повторно не загружаются. pull забирает текущее состояние сервера (можно указать пути, чтобы обновить только их; --force — отбросить локальные правки). Если сервер успел уйти вперёд, push остановится и покажет, что будет перезаписано.
Локальный проект подключается к платформе позже, когда захочешь:
lecodes link # создать проект на сервере для этой папки
lecodes link --push -m "v1" # …и сразу залить первым чекпоинтом
lecodes link --project <uuid> # принять существующий проект — покажет, что изменит pushМетаданные живут в .lecodes/ — это как .git: хочешь — коммить, хочешь — нет. Типы подтягиваются с сервера при clone, pull и link, поэтому всегда совпадают с задеплоенным рантаймом. Новый проект на сервере создаёт lecodes create <имя>, а push --publish вместе с чекпоинтом сразу публикует проект.
В CI логин не нужен: токен и адрес API передаются переменными окружения LECODES_TOKEN и LECODES_API. Сам токен создаётся в веб-интерфейсе (или lecodes login --token).
Компиляция и headless-рендер
lecodes compile -o app.js # весь проект — один портативный бандл
lecodes render --png shot.png # скриншот приложения без устройства
lecodes render --script demo.json # сценарий: тапы, ввод, кадры — и снимок послеcompile собирает тот самый бандл из Устройства проекта — локально, меньше чем за секунду. Без -o бандл уходит в stdout (удобно в пайплайнах), --no-minify оставляет его читаемым. Для локального init-проекта бандл самодостаточен — его можно открыть в le.codes Desktop.
render исполняет проект headless и возвращает семантический JSON-снимок интерфейса — или PNG с --png. Это основа автоматических проверок и работы ИИ-ассистентов: агент правит код, рендерит и сам видит результат. Рендерятся интерфейс и 2D; 3D-сцена в headless приходит как JSON без пикселей — за пикселями lecodes render --desktop через нативный хост (Windows и Linux).
lecodes test — flow-тесты
lecodes test # все tests/*.flow.json и сценарии из дизайна
lecodes test hero --logs # один сценарий, с выводом console.log приложения
lecodes test --json # машинный отчёт — для CIСценарий — JSON-список шагов: тап, ввод текста, скролл, ожидание, кадры, перетаскивание, клавиши — и проверок expect по семантическому снимку или по логу игры (expect.log). Время детерминировано: setLoop, 2D-физика, анимация и аспекты продвигаются фиксированным шагом 1/60 от сценария, а не от часов, так что сценарий, прошедший однажды, проходит всегда. 3D-физика в headless настоящая — это Jolt, тот же, что на устройстве. Упавший шаг сохраняет JSON и PNG кадра в tests/.artifacts/<flow>/.
Если в проекте есть дизайн-доска, test выводит сценарии из её переходов между экранами и проверяет собранное приложение против спроектированной навигации; ответы бэкенда для них подкладываются из tests/fixtures.json.
Нативные оболочки и десктоп
Приложение можно распространять по QR-ссылке без единой сборки. Когда нужен свой бинарь — для стора или для десктопа — его готовит lecodes app:
lecodes app init ios --team ABCDE12345 # Xcode-проект в ./ios с твоим bundle id
lecodes app init android # Gradle-проект в ./android
lecodes app sync # подтянуть иконку, версии, плагины из app.json
lecodes app build ios # собрать; app upload ios — в App Store Connect
lecodes app build desktop # переносимая папка для Windows, Linux и macOSОболочка запускает скомпилированный бандл офлайн и никогда не отправляется на платформу. Версия нативного SDK закрепляется в app.json, чтобы сборки были воспроизводимыми; lecodes app update двигает закрепление. Xcode и Android Studio для сборки нужны — облачной сборки пока нет. Push-уведомления проверяются без ключей: lecodes pn send "Привет" отправит уведомление на зарегистрированные устройства от твоего имени.
Ассеты, шейдеры и запекание
Для игр и 3D в той же команде — конвейер контента:
lecodes assets convert model.fbx— FBX в GLB с текстурами внутри,probeпоказывает, что внутри модели,doctorчинит типовые проблемы (лимит костей, KTX2, масштаб),retargetпереносит анимации с другого скелета — в том числе из Mixamo.lecodes shaders— свои материалы.mat: список, компиляция,updateпосле обновления движка.lecodes lightmap— запечь освещение статики уровня, посмотреть числа и слои бейка.lecodes navmesh— построить навигационную сетку уровня.
Что умеет сам движок — на странице Движок le.codes.
Рядом с CLI — design, scene и update
Из той же команды запускаются ещё два локальных инструмента:
- le.codes Design (
lecodes design) — живой канвас экранов для проектирования приложения вместе с ИИ-ассистентом. - Редактор сцен (
lecodes scene) — визуальный редактор.scene.ts: дерево сцены, инспектор, гизмо; правки пишутся прямо в исходник, а внешние правки из IDE подхватываются на лету.
Оба регистрируют MCP-серверы, так что ИИ-агент в терминале рендерит экраны доски и читает состояние сцены напрямую. А lecodes update обновляет всё, от чего зависит проект, в правильном порядке: десктопный хост, компилятор шейдеров, сами шейдеры, типы, закрепления оболочек и опциональные пакеты.