Запуск і налагодження
Gitcito читає ваш .vscode/launch.json — кореневий і будь-які вкладені,
згруповані з роздільниками — і запускає вибрану вами конфігурацію у вбудованому
терміналі.

- Змінні VS Code розв’язуються (
${workspaceFolder}і компанія). preLaunchTaskконфігурації виконується першим.- Значення
${input:…}запитуються інтерактивно перед запуском (promptStringіpickString).pickStringпоказує варіанти як справжній вибір із попередньо вибраним типовим значенням;promptStringіз позначкоюpasswordмаскується. - Завдання з
isBackground(спостерігачі, dev-сервери) виконуються відокремлено, тож ніколи не блокують запуск. - Compounds запускають кожного учасника як окрему паралельну сесію —
в одному розділеному терміналі з іменем compound, по панелі на учасника,
точно як debug-сесії VS Code. Із
stopAll: trueзупинка одного учасника зупиняє всіх. Завдання, спільні для кількох учасників, виконуються один раз, у власній панелі, до запуску учасників — запит підвищення версії питає один раз, а не по разу на учасника. Ця панель закривається сама в разі успіху й лишається відкритою при помилці. serverReadyActionвраховується: коли вивід сесії збігається з заданим шаблоном, оголошений URL відкривається у браузері (openExternally;debugWithChrome/debugWithEdgeтеж відкривають браузер — Gitcito не може під'єднати до нього налагоджувач).


Плавальна панель інструментів дає паузу / продовження, перезапуск, зупинку і перемикає між запущеними сесіями.
Увімкніть це в Налаштування → Загальні → Увімкнути launch.json. Кнопка LAUNCH з’явиться поруч із вкладками Git / Files.
Учасник compound відображається як compound › учасник, а його перезапуск перезапускає лише цього учасника. Якщо панель закриває щось потрібне, перетягніть її вбік за ручку — позиція запам’ятовується, а подвійний клік по ручці повертає її в центр.
Чого Gitcito свідомо не робить: він запускає ваші програми у справжніх
терміналах, але це не налагоджувач — без точок зупину, без перегляду змінних,
без Debug Adapter Protocol. Конфігурації лише-attach працюють, коли несуть
preLaunchTask (завдання і є роботою); чистому attach нема чого запускати.
Гарячі дії — швидкий шлях поруч із «Перезапустити»

Більшість середовищ розробки давно перезавантажуються однією клавішею:
flutter run — на r, Metro — на r, nodemon — на rs ⏎, а Vitest
перезапускає набір тестів на a. Перезапускати заради цього всю конфігурацію
запуску — повільний шлях: він убиває процес, знову виконує кожен
preLaunchTask і викидає стан застосунку.
Тому Gitcito читає команду, яку конфігурація запускає насправді — слідуючи за
npm run dev аж до скриптів вашого package.json — і виносить клавіші цього
середовища на панель зневадження. Натискання записує клавішу у стандартний ввід
сесії, точно так, ніби ви набрали її в терміналі самі.
| Середовище | Кнопки | За ⋯ |
|---|---|---|
Flutter (flutter run) |
Гаряче перезавантаження r, гарячий перезапуск R |
debug paint, оверлей продуктивності, зміна платформи, DevTools |
| Expo | Перезавантажити r |
меню розробника, зневаджувач |
| Metro / React Native | Перезавантажити r |
меню розробника, зневаджувач |
| Vite (dev, serve, preview) | Перезапустити сервер r ⏎ |
відкрити у браузері, показати адреси, очистити консоль |
| nodemon | Перезапустити rs ⏎ |
— |
| Vitest (режим watch) | Усі тести a, невдалі f |
оновити знімки |
Jest (--watch) |
Усі тести a, невдалі f |
лише змінені файли, оновити знімки |
Mocha (--watch) |
Перезапустити rs ⏎ |
— |
AVA (--watch) |
Усі тести r ⏎, оновити знімки u ⏎ |
— |
dotnet watch |
Примусовий перезапуск Ctrl+R |
— |
Wrangler (wrangler dev) |
Відкрити у браузері b |
DevTools, локально/віддалено, очистити консоль |
Середовища, які перезавантажуються самі, кнопок не отримують — node --watch,
ng serve, tsc --watch, cargo watch, next dev, webpack-dev-server.
Кнопка, що надсилає клавішу, якої ніхто не читає, гірша за відсутність кнопки:
вона має вигляд такої, що спрацювала.
Обмеження. Визначення текстове: воно шукає ім'я програми в командному рядку, тож конфігурація, яка запускає ваш сервер через скрипт-обгортку, що Gitcito не може прочитати, не отримає нічого. Підтвердження натискання теж немає — кнопка блимає, а справжню відповідь дає вивід самого процесу. Призупинена або завершена сесія вводу не приймає, тож кнопки стають неактивними.
Якщо здогад хибний, скажіть про це в самій конфігурації:
{
"name": "API (watch)",
"type": "node-terminal",
"command": "./scripts/dev.sh",
"gitcito": { "hotActions": [{ "label": "Reload", "send": "r", "icon": "reload" }] }
}
send пишеться дослівно — завершіть його \n для CLI, що чекає на Enter.
icon необов'язковий: reload, restart, rerun, failed, snapshot, menu, debugger,
browser, clear, paint, perf, platform, devtools, urls.
Порожній масив hotActions вимикає кнопки для цієї конфігурації.
Ціль запуску — на якому пристрої стартує конфігурація

Конфігурації, що збирає мобільний застосунок, треба сказати, де його запускати. Цей вибір належить не лише Flutter — React Native, Expo, Capacitor та xcodebuild теж приймають ціль, і кожен пише її по-своєму. Тому Gitcito питає один раз, поруч із вкладкою LAUNCH, і записує відповідь у формі, яку читає середовище цієї конфігурації. Селектор з’являється, лише якщо якась конфігурація репозиторію справді приймає пристрій.
Звідки береться список — з тих інструментів SDK, що є на машині; їх опитують паралельно:
| Інструмент | Дає | Коли опитується |
|---|---|---|
flutter devices / flutter emulators |
усе, вже нормалізоване | якщо в теці є pubspec.yaml |
xcrun simctl |
симулятори iOS, запущені й холодні | на macOS |
adb devices |
телефони Android і запущені емулятори | завжди |
emulator -list-avds |
ще холодні емулятори Android | завжди |
Той самий симулятор повідомляють до трьох із них, тож записи об’єднуються за
платформою та назвою; за рівності перемагає Flutter, бо саме його id очікує
flutter run -d. Невстановлені інструменти названі внизу меню — короткий список
має пояснювати себе сам.
Що робить вибір:
| Родина | Записується як |
|---|---|
| Flutter | -d <id> |
| React Native iOS | --udid <id> |
| React Native Android | --deviceId=<id> |
Expo run:ios / run:android |
--device <id> |
| Capacitor / Ionic | --target <id> |
| усе інше | лише середовище |
Кожна запущена конфігурація отримує ще GITCITO_DEVICE_ID,
GITCITO_DEVICE_NAME і GITCITO_DEVICE_PLATFORM у середовищі, а для справжнього
пристрою Android — ще й ANDROID_SERIAL. Саме це дозволяє скрипту-обгортці,
задачі Gradle чи голому adb влучити в той самий телефон, і Gitcito при цьому
нічого не переписує.
Запуск холодного пристрою. Усе під заголовком Не запущено стартує, щойно
ви його оберете: flutter emulators --launch, xcrun simctl boot (плюс вікно
Simulator) або від’єднаний emulator -avd — тож вихід із Gitcito не забирає з
собою ваш емулятор Android.
Обмеження. Конфігурацію, яка вже називає пристрій — явний -d,
--simulator, deviceId з Dart-Code — не чіпають: селектор ніколи не перекриває
написане автором. Id, якому знадобилися б лапки, іде в середовище, замість
ризикувати зламаним командним рядком. Меню відфільтроване за тим, до чого
дотягуються ваші конфігурації, тож репозиторій лише під Android ніколи не
запропонує вам iPhone. А список — це знімок: під’єднайте телефон і натисніть
Оновити пристрої.
Вибір запам’ятовується для кожного репозиторію і забувається, коли пристрій зникає.
Дивіться також: Вбудований термінал
Значення з JSON і YAML
Поле може показувати поточну версію або отримувати початкове значення з файлу проєкту. Gitcito читає файл під час запуску, перед показом полів. Розширення VS Code не потрібне.
Додайте fileValues до поля promptString або pickString. Кожне значення задає шлях відносно папки конфігурації запуску та властивість, розділену крапками. Використовуйте ${fileValue:name} у description або default. Порожній default залишає поле необов’язковим.
{
"id": "version",
"type": "promptString",
"description": "Current: ${fileValue:version} (${fileValue:build})",
"default": "",
"fileValues": {
"version": { "file": "version.yaml", "key": "settings.base.MARKETING_VERSION" },
"build": { "file": "version.yaml", "key": "settings.base.CURRENT_PROJECT_VERSION" }
}
}
Підтримуються файли JSON, YAML і YML у цій папці розміром до 1 МіБ та рядкові, числові або логічні значення. Відсутні файли, хибні дані, відсутні властивості та зовнішні шляхи зупиняють запуск із помилкою. Команди й вирази JavaScript не виконуються. Новий запуск перечитує файли; Restart використовує попередні відповіді. VS Code не обробляє ці поля Gitcito самостійно.