Uruchamianie i debugowanie
Gitcito czyta twój .vscode/launch.json — ten z korzenia oraz wszystkie
zagnieżdżone, pogrupowane separatorami — i uruchamia wybraną przez ciebie
konfigurację we wbudowanym terminalu.

- Zmienne VS Code są rozwiązywane (
${workspaceFolder}i spółka). preLaunchTaskdanej konfiguracji uruchamia się jako pierwsze.- Wartości
${input:…}są odpytywane interaktywnie przed uruchomieniem (promptStringipickString).pickStringpokazuje opcje jako prawdziwy wybierak z zaznaczoną wartością domyślną;promptStringoznaczonypasswordjest maskowany. - Zadania
isBackground(watchery, serwery deweloperskie) działają odczepione, więc nigdy nie blokują uruchomienia. - Compoundy uruchamiają każdego członka jako osobną równoległą sesję,
w jednym podzielonym terminalu o nazwie compoundu — jeden panel na członka,
dokładnie jak sesje debugowania w VS Code. Z
stopAll: truezatrzymanie jednego członka zatrzymuje wszystkie. Zadania wspólne dla kilku członków uruchamiają się raz, we własnym panelu, zanim wystartują członkowie — prompt podbicia wersji pyta raz, a nie raz na członka. Ten panel zamyka się sam po sukcesie, a przy błędzie zostaje otwarty. serverReadyActionjest honorowane: gdy wyjście sesji pasuje do skonfigurowanego wzorca, ogłoszony URL otwiera się w przeglądarce (openExternally;debugWithChrome/debugWithEdgerównież otwierają przeglądarkę — Gitcito nie może podłączyć do niej debugera).


Pływający pasek narzędzi daje ci pauzę / wznowienie, restart, zatrzymanie i przełącza między działającymi sesjami.
Włącz to w Ustawienia → Ogólne → Włącz launch.json. Przycisk LAUNCH pojawia się obok zakładek Git / Pliki.
Członek compoundu wyświetla się jako compound › członek, a jego restart restartuje tylko tego członka. Jeśli pasek zasłania coś, czego potrzebujesz, przeciągnij go w bok za uchwyt — pozycja jest zapamiętywana, a podwójne kliknięcie uchwytu ponownie go wyśrodkowuje.
Czego Gitcito celowo nie robi: uruchamia programy w prawdziwych
terminalach, ale nie jest debugerem — bez breakpointów, bez podglądu
zmiennych, bez Debug Adapter Protocol. Konfiguracje typu attach działają, gdy
niosą preLaunchTask (zadanie jest pracą); czysty attach nie ma nic do
uruchomienia.
Akcje na gorąco — szybka ścieżka obok Uruchom ponownie

Większość środowisk deweloperskich przeładowuje się jednym klawiszem:
flutter run na r, Metro na r, nodemon na rs ⏎, a Vitest uruchamia
zestaw ponownie na a. Restart konfiguracji uruchamiania, żeby osiągnąć to
samo, to droga wolna — zabija proces, uruchamia ponownie każdy preLaunchTask i
wyrzuca stan aplikacji.
Dlatego Gitcito czyta polecenie, które konfiguracja naprawdę uruchamia — idąc za
npm run dev aż do skryptów w twoim package.json — i umieszcza klawisze tego
środowiska na pasku debugowania. Naciśnięcie zapisuje klawisz na standardowe
wejście sesji, dokładnie tak, jakbyś wpisał go w terminalu.
| Środowisko | Przyciski | Za ⋯ |
|---|---|---|
Flutter (flutter run) |
Hot reload r, hot restart R |
debug paint, nakładka wydajności, zmiana platformy, DevTools |
| Expo | Przeładuj r |
menu programisty, debugger |
| Metro / React Native | Przeładuj r |
menu programisty, debugger |
| Vite (dev, serve, preview) | Uruchom serwer ponownie r ⏎ |
otwórz w przeglądarce, pokaż adresy, wyczyść konsolę |
| nodemon | Uruchom ponownie rs ⏎ |
— |
| Vitest (tryb watch) | Wszystkie ponownie a, nieudane ponownie f |
zaktualizuj snapshoty |
Jest (--watch) |
Wszystkie ponownie a, nieudane ponownie f |
tylko zmienione pliki, zaktualizuj snapshoty |
Mocha (--watch) |
Uruchom ponownie rs ⏎ |
— |
AVA (--watch) |
Wszystkie ponownie r ⏎, zaktualizuj snapshoty u ⏎ |
— |
dotnet watch |
Wymuś restart Ctrl+R |
— |
Wrangler (wrangler dev) |
Otwórz w przeglądarce b |
DevTools, lokalnie/zdalnie, wyczyść konsolę |
Środowiska, które przeładowują się same, nie dostają przycisków — node --watch,
ng serve, tsc --watch, cargo watch, next dev, webpack-dev-server.
Przycisk wysyłający klawisz, którego nikt nie czyta, jest gorszy niż brak
przycisku, bo wygląda, jakby zadziałał.
Ograniczenia. Wykrywanie jest tekstowe: dopasowuje nazwę programu w linii poleceń, więc konfiguracja, która startuje serwer przez skrypt opakowujący, którego Gitcito nie potrafi odczytać, nie dostanie nic. Nie ma też potwierdzenia — przycisk mignie, a prawdziwą odpowiedzią jest wyjście samego procesu. Sesja wstrzymana lub zakończona nie przyjmuje wejścia, więc przyciski są wyszarzone.
Gdy zgadywanie zawodzi, powiedz to w samej konfiguracji:
{
"name": "API (watch)",
"type": "node-terminal",
"command": "./scripts/dev.sh",
"gitcito": { "hotActions": [{ "label": "Reload", "send": "r", "icon": "reload" }] }
}
send jest zapisywane dosłownie — zakończ je \n dla CLI czekającego na Enter.
icon jest opcjonalne: reload, restart, rerun, failed, snapshot, menu, debugger,
browser, clear, paint, perf, platform, devtools, urls.
Pusta tablica hotActions wyłącza przyciski dla tej konfiguracji.
Cel uruchomienia — na jakim urządzeniu startuje konfiguracja

Konfiguracji, która buduje aplikację mobilną, trzeba powiedzieć, gdzie ma ją uruchomić. Ten wybór nie należy tylko do Fluttera — React Native, Expo, Capacitor i xcodebuild też przyjmują cel, każdy zapisywany inaczej. Dlatego Gitcito pyta raz, obok zakładki LAUNCH, i zapisuje odpowiedź w formie, którą czyta środowisko tej konfiguracji. Selektor pojawia się tylko wtedy, gdy któraś konfiguracja w repozytorium faktycznie przyjmuje urządzenie.
Skąd bierze się lista — z tych narzędzi SDK, które są na maszynie, pytanych równolegle:
| Narzędzie | Dostarcza | Pytane |
|---|---|---|
flutter devices / flutter emulators |
wszystko, już znormalizowane | gdy folder ma pubspec.yaml |
xcrun simctl |
symulatory iOS, uruchomione i zimne | na macOS |
adb devices |
telefony Android i uruchomione emulatory | zawsze |
emulator -list-avds |
wciąż zimne emulatory Androida | zawsze |
Ten sam symulator zgłaszają nawet trzy z nich, więc wpisy są łączone po
platformie i nazwie; przy remisie wygrywa Flutter, bo jego id jest tym, którego
oczekuje flutter run -d. Niezainstalowane narzędzia wymieniamy na dole menu —
krótka lista powinna sama się tłumaczyć.
Co robi wybór:
| Rodzina | Zapisywane jako |
|---|---|
| Flutter | -d <id> |
| React Native iOS | --udid <id> |
| React Native Android | --deviceId=<id> |
Expo run:ios / run:android |
--device <id> |
| Capacitor / Ionic | --target <id> |
| xcodebuild | -destination id=<id> |
| wszystko inne | tylko środowisko |
Każda uruchomiona konfiguracja dostaje też GITCITO_DEVICE_ID,
GITCITO_DEVICE_NAME i GITCITO_DEVICE_PLATFORM w środowisku, a przy prawdziwym
urządzeniu z Androidem również ANDROID_SERIAL. To właśnie pozwala skryptowi
opakowującemu, zadaniu Gradle albo gołemu adb trafić w ten sam telefon, bez
przepisywania czegokolwiek przez Gitcito.
Uruchamianie zimnego urządzenia. Wszystko pod Nieuruchomione startuje po
wybraniu: flutter emulators --launch, xcrun simctl boot (plus okno
Simulatora) albo odłączony emulator -avd — dzięki temu zamknięcie Gitcito nie
zabiera ze sobą twojego emulatora Androida.
Ograniczenia. Konfiguracja, która już nazywa urządzenie — jawne -d,
--simulator, deviceId z Dart-Code — zostaje nietknięta: selektor nigdy nie
nadpisuje tego, co napisał autor. Id, które wymagałoby cudzysłowów, trafia do
środowiska, zamiast ryzykować zepsutą linię poleceń. Menu jest filtrowane do
tego, co twoje konfiguracje mogą osiągnąć, więc repozytorium tylko z Androidem
nigdy nie zaproponuje ci iPhone’a. A lista to zdjęcie chwili: podłącz telefon i
naciśnij Odśwież urządzenia.
Wybór jest pamiętany dla każdego repozytorium i zapominany, gdy urządzenie przestaje istnieć.
Zobacz też: Wbudowany terminal
Wartości z JSON i YAML
Pole może pokazywać bieżącą wersję lub pobierać wartość początkową z pliku projektu. Gitcito odczytuje plik przy uruchamianiu, przed wyświetleniem pól. Rozszerzenie VS Code nie jest potrzebne.
Dodaj fileValues do pola promptString lub pickString. Każda wartość określa ścieżkę względem folderu konfiguracji uruchamiania oraz właściwość rozdzieloną kropkami. Użyj ${fileValue:name} w description lub default. Pusty default pozostawia pole opcjonalne.
{
"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" }
}
}
Obsługiwane są pliki JSON, YAML i YML w tym folderze do 1 MiB oraz tekst, liczby i wartości logiczne. Brak pliku, błędne dane, brak właściwości lub ścieżka zewnętrzna zatrzymują uruchomienie z błędem. Polecenia i wyrażenia JavaScript nie są wykonywane. Nowe uruchomienie ponownie odczytuje pliki; Restart używa poprzednich odpowiedzi. VS Code nie obsługuje tych pól Gitcito natywnie.