הרצה וניפוי באגים
Gitcito קורא את .vscode/launch.json שלכם — זה שבשורש וכל אלה שמקוננים בתוכו,
מקובצים עם מפרידים — ומריץ את התצורה שתבחרו בטרמינל המשולב.

- משתני VS Code נפתרים (
${workspaceFolder}וחבריו). - ה־
preLaunchTaskשל תצורה רץ ראשון. - ערכי
${input:…}נשאלים באופן אינטראקטיבי לפני ההפעלה (promptStringו־pickString).pickStringמציג את האפשרויות כבורר אמיתי עם ברירת המחדל מסומנת מראש;promptStringשמסומןpasswordמוסתר בהקלדה. - משימות
isBackground(צופים, שרתי פיתוח) רצות מנותקות, ולכן הן לעולם אינן חוסמות את ההפעלה. - compounds מריצים כל חבר כסשן מקבילי משלו — בטרמינל מפוצל אחד שנושא
את שם ה‑compound, חלונית לכל חבר, בדיוק כמו סשני הדיבוג של VS Code. עם
stopAll: true, עצירת חבר אחד עוצרת את כולם. משימות שכמה חברים חולקים רצות פעם אחת, בחלונית משלהן, לפני שהחברים מתחילים — בקשת העלאת גרסה שואלת פעם אחת, לא פעם לכל חבר. החלונית הזו נסגרת מעצמה בהצלחה ונשארת פתוחה בכישלון. serverReadyActionנתמך: כשפלט הסשן תואם לתבנית שהוגדרה, כתובת ה‑URL שהוכרזה נפתחת בדפדפן (openExternally; גםdebugWithChrome/debugWithEdgeרק פותחים את הדפדפן — Gitcito לא יכול לחבר אליו מנפה).


סרגל כלים צף נותן לכם השהיה / המשך, הפעלה מחדש, עצירה, ומחליף בין סשנים רצים.
הפעילו את זה בהגדרות ← כללי ← הפעלת launch.json. כפתור הפעלה מופיע לצד הלשוניות Git / קבצים.
חבר של 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 מנצח, כי המזהה שלו הוא זה ש‑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> |
| xcodebuild | -destination id=<id> |
| כל השאר | משתני סביבה בלבד |
כל תצורה שמופעלת מקבלת גם GITCITO_DEVICE_ID, GITCITO_DEVICE_NAME ו‑
GITCITO_DEVICE_PLATFORM בסביבה שלה, ובנוסף ANDROID_SERIAL כשהיעד הוא מכשיר
Android אמיתי. זה מה שמאפשר לסקריפט עוטף, למשימת Gradle או ל‑adb חשוף לפגוע
באותו מכשיר בלי ש‑Gitcito יכתוב מחדש שום דבר.
הפעלת מכשיר כבוי. כל מה שתחת לא פועל עולה כשבוחרים בו:
flutter emulators --launch, xcrun simctl boot (ועוד חלון ה‑Simulator), או
emulator -avd מנותק — כך שיציאה מ‑Gitcito לא לוקחת איתה את אמולטור ה‑Android.
המגבלות. תצורה שכבר נוקבת במכשיר — -d מפורש, --simulator, או
deviceId של Dart‑Code — נשארת כמות שהיא: הבורר לעולם אינו דורס את מה שהמחבר
כתב. מזהה שהיה דורש מרכאות נופל אל משתני הסביבה במקום להסתכן בשורת פקודה
שבורה. התפריט מסונן לפי מה שהתצורות שלכם יכולות להגיע אליו, ולכן מאגר של
Android בלבד לעולם לא יציע לכם אייפון. והרשימה היא תצלום רגע: חברו טלפון ולחצו
רענון המכשירים.
הבחירה נזכרת לכל מאגר בנפרד, ונשכחת כשהמכשיר חדל להתקיים.
ראו גם: טרמינל משולב
ערכי קלט מקובצי 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 MiB, וערכי טקסט, מספרים ובוליאנים. קבצים חסרים, נתונים לא תקינים, מאפיינים חסרים ונתיבים חיצוניים עוצרים את ההפעלה עם שגיאה. לא מופעלים פקודות או ביטויי JavaScript. כל הפעלה חדשה קוראת שוב את הקבצים; Restart משתמש בתשובות הקודמות. VS Code אינו פותר את שדות Gitcito האלה באופן מובנה.