דלג לתוכן הראשי

הפתעות ידועות

הקובץ הזה מתעד נקודות בלבול ייחודיות למאגר שגרמו לטעויות של סוכנים.

תנאי הוספה

הוסף רשומה רק אם כל התנאים הבאים מתקיימים:

  • היא ייחודית למאגר הזה (ולא עצה כללית).
  • סביר שהיא תחזור ותפגע גם בסוכנים עתידיים.
  • יש לה דרך מניעה קונקרטית שאפשר לפעול לפיה.

אם יש ספק, שאל את המפתח לפני הוספת רשומה.

תבנית רשומה

### [Short title]

- **Date:** YYYY-MM-DD
- **Observed by:** agent name or contributor
- **Context:** where/when it happened
- **What was surprising:** concrete unexpected behavior
- **Impact:** what went wrong or could go wrong
- **Mitigation:** exact step future agents should take
- **Status:** confirmed | superseded

רשומות

דומייני פרודקשן של אפליקציות Vercel עלולים לחזור לפריסות מ-Git master

  • תאריך: 2026-04-28
  • נצפה על ידי: Tommaso + Codex
  • הקשר: אימות המראות של האפליקציות Seedit ו-5chan בספריית האפליקציות של Bitsocial Web.
  • מה הפתיע: בפרויקטים seedit ו-5chan ב-Vercel היה מוגדר gitProviderOptions.createDeployments = "enabled", ולכן דחיפות ל-master ב-GitHub קודמו לדומייני הפרודקשן, אף שמדיניות המאגר מצפה שמראות האפליקציות בפרודקשן יגישו ארטיפקטים של גרסאות רשמיות בלבד.
  • השפעה: תגי המראה המאומתת בספריית האפליקציות עלולים להפוך לשקריים, כי דומייני הפרודקשן מגישים את קומיט הפיתוח האחרון במקום את קובץ ה-ZIP של הגרסה ב-GitHub, שה-hash של ה-index.html שלו רשום ב-about/src/lib/apps-data.ts.
  • דרך מניעה: לפני הוספה או רענון של מטא-נתוני אימות מראה, בדוק את פרויקט Vercel עם vercel api /v9/projects/<project-id> וּודא ש-gitProviderOptions.createDeployments = "disabled". פרוס את תוכן ה-ZIP של הגרסה עם vercel deploy --prebuilt --prod, והשתמש ב-seedit-omega.vercel.app או ב-5chan-omega.vercel.app לפריסות פיתוח.
  • סטטוס: מאושר

Portless 0.11 ממחזר מצב proxy ישן אלא אם המשגר כופה HTTPS

  • תאריך: 2026-04-28
  • נצפה על ידי: Tommaso + Codex
  • הקשר: שדרוג הזרימה הרגילה של yarn start מכתובת ה-proxy הישנה http://bitsocial.localhost:1355 אל https://bitsocial.localhost.
  • מה הפתיע: גם כאשר portless@0.11.1 מותקן, Portless המשיך להשתמש ב-proxy ה-HTTP הקיים ~/.portless/proxy.port = 1355 והדפיס את הכתובת הישנה עם :1355.
  • השפעה: עדכון גרסאות החבילות והתיעוד אינו מספיק; yarn start עדיין עלול לפרסם את הכתובת הישנה ולהשתמש בה כאשר אצל תורם רץ מצב Portless ישן.
  • דרך מניעה: השאר את סקריפטי ההפעלה כך שיפעילו במפורש את ה-proxy של Portless על גבי HTTPS בפורט 443 לפני רישום נתיבי האפליקציה, כדי שזרימת ההרצה תתרחק ממצב 1355 השמור במקום לרשת אותו.
  • סטטוס: מאושר

Portless משנה את כתובת האפליקציה המקומית הקנונית

  • תאריך: 2026-03-18
  • נצפה על ידי: Codex
  • הקשר: אימות בדפדפן וזרימות smoke
  • מה הפתיע: כתובת ברירת המחדל המקומית אינה פורט Vite הרגיל. המאגר מצפה ל-https://bitsocial.localhost דרך Portless, ולכן בדיקה של localhost:3000 או localhost:5173 עלולה לפנות לאפליקציה השגויה או לא למצוא דבר.
  • השפעה: בדיקות בדפדפן עלולות להיכשל או לאמת יעד שגוי גם כששרת הפיתוח תקין לחלוטין.
  • דרך מניעה: העדף תמיד את https://bitsocial.localhost כברירת מחדל. עקוף אותו עם PORTLESS=0 corepack yarn start רק כשאתה זקוק במפורש לפורט Vite ישיר.
  • סטטוס: מאושר

Commitizen hooks חוסמים קומיטים לא אינטראקטיביים

  • תאריך: 2026-03-18
  • נצפה על ידי: Codex
  • הקשר: זרימות קומיט המונעות על ידי סוכנים
  • מה הפתיע: git commit מפעיל את Commitizen דרך Husky וממתין לקלט TTY אינטראקטיבי, מה שתוקע shell לא אינטראקטיבי של סוכן.
  • השפעה: סוכנים עלולים להיתקע ללא הגבלת זמן במהלך מה שאמור להיות קומיט רגיל לגמרי.
  • דרך מניעה: השתמש ב-git commit --no-verify -m "message" עבור קומיטים שנוצרים על ידי סוכנים. בני אדם עדיין יכולים להשתמש ב-corepack yarn commit או ב-corepack yarn exec cz.
  • סטטוס: מאושר

Corepack נדרש כדי להימנע מ-Yarn classic

  • תאריך: 2026-03-19
  • נצפה על ידי: Codex
  • הקשר: מעבר מנהל החבילות ל-Yarn 4
  • מה הפתיע: במחשב עדיין מותקן Yarn classic גלובלי ב-PATH, ולכן הרצה של yarn רגיל עלולה להוביל לגרסה 1 במקום לגרסת Yarn 4 המוצמדת.
  • השפעה: מפתחים עלולים לעקוף בטעות את הצמדת מנהל החבילות של המאגר ולקבל התנהגות התקנה או פלט lockfile שונים.
  • דרך מניעה: השתמש ב-corepack yarn ... עבור פקודות shell, או הרץ קודם corepack enable כך ש-yarn רגיל יוביל לגרסת Yarn 4 המוצמדת.
  • סטטוס: מאושר

שמות אפליקציה קבועים ב-Portless מתנגשים בין worktrees של Bitsocial Web

  • תאריך: 2026-03-30
  • נצפה על ידי: Codex
  • הקשר: הרצת yarn start ב-worktree אחד של Bitsocial Web בזמן ש-worktree אחר כבר הגיש תוכן דרך Portless
  • מה הפתיע: שימוש בשם האפליקציה המילולי bitsocial ב-Portless בכל worktree גורם להתנגשות בנתיב עצמו, גם כשהפורטים שמאחוריו שונים, ולכן התהליך השני נכשל מפני ש-bitsocial.localhost כבר רשום.
  • השפעה: ענפים מקבילים של Bitsocial Web עלולים לחסום זה את זה, אף ש-Portless אמור לאפשר להם להתקיים יחד בבטחה.
  • דרך מניעה: השאר את הפעלת Portless מאחורי scripts/start-dev.mjs, שמשתמש כעת בנתיב *.bitsocial.localhost מבוסס-ענף מחוץ למקרה הקנוני, ונופל חזרה לנתיב מבוסס-ענף כאשר השם החשוף bitsocial.localhost כבר תפוס.
  • סטטוס: מאושר

התצוגה המקדימה של התיעוד נהגה לקבע את פורט 3001

  • תאריך: 2026-03-30
  • נצפה על ידי: Codex
  • הקשר: הרצת yarn start לצד מאגרים מקומיים וסוכנים אחרים
  • מה הפתיע: פקודת הפיתוח הראשית הריצה את סביבת העבודה של התיעוד עם docusaurus start --port 3001, ולכן כל סשן הפיתוח נכשל בכל פעם שתהליך אחר כבר החזיק ב-3001, אף שהאפליקציה הראשית כבר השתמשה ב-Portless.
  • השפעה: yarn start היה עלול להרוג את תהליך הווב מיד לאחר עלייתו ולקטוע עבודה מקומית לא קשורה בגלל התנגשות בפורט התיעוד.
  • דרך מניעה: השאר את הפעלת התיעוד מאחורי yarn start:docs, שמשתמש כעת ב-Portless יחד עם scripts/start-docs.mjs כדי לכבד פורט פנוי שהוזרק, או ליפול חזרה לפורט הפנוי הבא כשהוא מורץ ישירות.
  • סטטוס: מאושר

שם המארח של התיעוד ב-Portless היה מקובע בקוד

  • תאריך: 2026-04-03
  • נצפה על ידי: Codex
  • הקשר: הרצת yarn start ב-worktree משני של Bitsocial Web בזמן ש-worktree אחר כבר הגיש תיעוד דרך Portless
  • מה הפתיע: start:docs עדיין רשם את שם המארח המילולי docs.bitsocial.localhost, ולכן yarn start היה עלול להיכשל אף שאפליקציית ה-about כבר ידעה כיצד להימנע מהתנגשויות נתיב ב-Portless עבור שם המארח שלה.
  • השפעה: worktrees מקבילים לא יכלו להשתמש באופן אמין בפקודת הפיתוח הראשית, כי תהליך התיעוד יצא ראשון ואז concurrently הרג את שאר הסשן.
  • דרך מניעה: השאר את הפעלת התיעוד מאחורי scripts/start-docs.mjs, שגוזר כעת את אותו שם מארח Portless מבוסס-ענף כמו אפליקציית ה-about, ומזריק את כתובת ה-URL הציבורית המשותפת הזו ליעד הפרוקסי של /docs בסביבת הפיתוח.
  • סטטוס: מאושר

מעטפות shell ב-worktree עלולות לפספס את גרסת Node המוצמדת של המאגר

  • תאריך: 2026-04-03
  • נצפה על ידי: Codex
  • הקשר: הרצת yarn start ב-worktrees של Git כמו .claude/worktrees/* או בצ'קאאוטים אחיים של worktree
  • מה הפתיע: חלק ממעטפות ה-shell ב-worktree פתרו את node ואת yarn node לגרסת Node של Homebrew 25.2.1, אף שהמאגר מצמיד 22.12.0 בקובץ .nvmrc, ולכן yarn start היה עלול להריץ בשקט את משגרי הפיתוח תחת סביבת ריצה שגויה.
  • השפעה: התנהגות שרת הפיתוח עלולה לסטות בין הצ'קאאוט הראשי ל-worktrees, מה שמקשה על שחזור באגים ומפר את ערכת הכלים הצפויה של Node 22 במאגר.
  • דרך מניעה: השאר את משגרי הפיתוח מאחורי scripts/start-dev.mjs ו-scripts/start-docs.mjs, שמריצים כעת את עצמם מחדש תחת קובץ ההרצה של Node מ-.nvmrc כאשר ה-shell הנוכחי נמצא בגרסה שגויה. הגדרת ה-shell עדיין צריכה להעדיף nvm use.
  • סטטוס: מאושר

שאריות של docs-site/ עלולות להסתיר מקור תיעוד חסר אחרי הריפקטור

  • תאריך: 2026-04-01
  • נצפה על ידי: Codex
  • הקשר: ניקוי המונורפו אחרי מיזוג, בעקבות העברת פרויקט Docusaurus מ-docs-site/ אל docs/
  • מה הפתיע: התיקייה הישנה docs-site/ יכולה להישאר על הדיסק עם קבצים מיושנים אך חשובים כמו i18n/, גם אחרי שהמאגר המנוהל עבר אל docs/. זה גורם לריפקטור להיראות משוכפל מקומית, ויכול להסתיר את העובדה שתרגומי התיעוד המנוהלים לא הועברו בפועל אל docs/.
  • השפעה: סוכנים עלולים למחוק את התיקייה הישנה כ"זבל" ולאבד בטעות את העותק המקומי היחיד של תרגומי התיעוד, או להמשיך לערוך סקריפטים שעדיין מצביעים על נתיב docs-site/ המת.
  • דרך מניעה: התייחס אל docs/ כאל פרויקט התיעוד הקנוני היחיד. לפני מחיקת שאריות מקומיות כלשהן של docs-site/, שחזר מקור מנוהל כמו docs/i18n/, ועדכן סקריפטים ו-hooks כך שיפסיקו להתייחס אל docs-site.
  • סטטוס: מאושר

תצוגה מקדימה רב-לוקאלית של התיעוד עלולה להקפיץ את צריכת ה-RAM בזמן אימות

  • תאריך: 2026-04-01
  • נצפה על ידי: Codex
  • הקשר: תיקון i18n של התיעוד, ניתוב לוקאלים והתנהגות Pagefind עם yarn start:docs יחד עם Playwright
  • מה הפתיע: מצב ברירת המחדל של תצוגת התיעוד המקדימה מבצע כעת בנייה רב-לוקאלית מלאה של התיעוד בתוספת אינדוקס Pagefind לפני ההגשה, והשארת התהליך הזה פעיל לצד כמה סשנים של Playwright או Chrome יכולה לצרוך הרבה יותר RAM מאשר לולאת פיתוח רגילה של Vite או של Docusaurus בלוקאל יחיד.
  • השפעה: המחשב עלול להיכנס למחסור בזיכרון, סשני דפדפן עלולים לקרוס, והרצות שנקטעו עלולות להשאיר מאחור שרתי תיעוד או דפדפנים headless מיושנים שממשיכים לצרוך זיכרון.
  • דרך מניעה: לעבודת תיעוד שאינה זקוקה לאימות של נתיבי לוקאל או של Pagefind, העדף DOCS_START_MODE=live yarn start:docs. השתמש בתצוגה המקדימה הרב-לוקאלית של ברירת המחדל רק כשאתה צריך לאמת נתיבים מתורגמים או Pagefind. שמור על סשן Playwright יחיד, סגור סשני דפדפן ישנים לפני פתיחת חדשים, ועצור את שרת התיעוד אחרי האימות אם אינך זקוק לו יותר.
  • סטטוס: מאושר

translate-docs.py עלול להשאיר לוקאלים של התיעוד מתורגמים למחצה או עם יעדי קישור שבורים

  • תאריך: 2026-04-06
  • נצפה על ידי: Codex
  • הקשר: תיקון נתיבי תיעוד מתורגמים ותוכן אחרי ש-yarn start:docs הגיש דפי פירוט באנגלית או נכשל בבניית פלט הלוקאל
  • מה הפתיע: לצינור התרגום של התיעוד היו שני מצבי כשל ייחודיים למאגר בבת אחת: scripts/translate-docs.py חילץ רק תת-קבוצה קטנה מהודעות DocsHome כאשר קריאות tr(...) השתמשו בצורות שהוא לא ידע לנתח, והמרקדאון המתורגם תחת docs/i18n/** יכול היה להכיל slugs מתורגמים אוטומטית או שאריות ZXQPLACEHOLDER בתוך יעדי קישור.
  • השפעה: דפי בית מתורגמים עלולים ליפול בשקט חזרה לאנגלית, דפי פירוט מתורגמים עלולים להיראות לא מתורגמים, ובנייה מלאה של yarn docs:build עלולה להיכשל על קישורי לוקאל שבורים גם כשמסמכי המקור תקינים.
  • דרך מניעה: אחרי שינוי תרגומי התיעוד או יצירה מחדש של קובצי הלוקאל, הרץ תמיד yarn docs:build משורש המאגר, סרוק את המרקדאון תחת docs/i18n/** לאיתור ZXQPLACEHOLDER, וּודא שהקישורים המתורגמים עדיין מצביעים אל slugs קנוניים של התיעוד כמו /apps/5chan/ ולא אל נתיבי URL מתורגמים. אם הטקסט של DocsHome השתנה, ודא ש-scripts/translate-docs.py עדיין מחלץ את כל הודעות docs.home.*.
  • סטטוס: מאושר

בדיקות ללא JS באתר about חייבות להשתמש בנתיב Portless, לא בתצוגה מקדימה עצמאית של SSR

  • תאריך: 2026-04-12
  • נצפה על ידי: Codex
  • הקשר: אימות תמיכה ללא JS באתר about/ מתוך worktree של ענף
  • מה הפתיע: תצוגה מקדימה עצמאית של SSR יכולה להיראות תקינה בזמן שנתיב Portless האמיתי מבוסס-הענף עדיין מגיש מעטפת אפליקציה שגויה או תהליך ישן. במאגר הזה, החוזה המקומי האמיתי הוא שם המארח של Portless מתוך yarn start, ולא שרת תצוגה מקדימה אד-הוק.
  • השפעה: סוכנים עלולים לטעון בטעות שהתמיכה ללא JS עובדת, או לפספס רגרסיות שמופיעות רק ב-*.bitsocial.localhost.
  • דרך מניעה: לאימות בדפדפן של about/, הפעל תמיד את השרת המקומי האמיתי עם yarn start או yarn start:about, ובדוק קודם את כתובת Portless מבוססת-הענף. אם שם מארח של Portless נראה מיושן, בדוק ועצור את התהליך הישן לפני בדיקה חוזרת.
  • סטטוס: מאושר

chain/ היה בלתי נראה ל-yarn build:verify ול-yarn doctor

  • תאריך: 2026-07-05
  • נצפה על ידי: Codex
  • הקשר: אימות דיף שנוגע רק ב-chain/ אחרי שסביבת העבודה chain/ (אפליקציית Vite עצמאית עבור chain.bitsocial.net) נוספה למונורפו.
  • מה הפתיע: scripts/verify-build.mjs זיהה רק את קידומות הנתיב about/, docs/ ו-stats/, ולכן דיף שנוגע רק ב-chain/ הדפיס "No targeted build checks matched the current diff" ולא הריץ שום בנייה כלל, אף ש-build:chain כבר היה קיים ב-package.json הראשי. בנפרד, yarn doctor היה מקובע ל-react-doctor about -y, ולכן שינויי React תחת chain/src לא קיבלו שום כיסוי של React Doctor.
  • השפעה: סוכנים שאימתו שינויים ב-chain היו צריכים לדעת שעליהם לקרוא ישירות ל-yarn build:chain במקום לסמוך על yarn build:verify, ובעיות React ב-chain/src (אפקטים, hooks, קוד מת) לא זוהו על ידי yarn doctor.
  • דרך מניעה: ל-scripts/verify-build.mjs יש כעת ענף chain/ שמשקף את זה של about/, ו-doctor / doctor:verbose מריצים כעת react-doctor --project about,chain -y בקריאה אחת. doctor:score נשאר מוגבל ל-about בלבד, מכיוון ש---score מדפיס בשקט כלום כשהוא משולב עם --project עבור יותר מפרויקט אחד; השתמש ב-yarn react-doctor --project about,chain --verbose -y (או ב---json) אם דרוש ציון עבור chain.
  • סטטוס: מאושר

P2P בדפדפן רץ על WebSockets מאובטחים; pkc-js דוחה WebRTC ו-WebTransport כברירת מחדל

  • תאריך: 2026-08-02
  • נצפה על ידי: Claude
  • הקשר: כתיבת טקסט לדף הנחיתה ולתיעוד על אופן הפעולה של P2P בדפדפן ב-Bitsocial
  • מה הפתיע: @pkcprotocol/pkc-js מגיע עם connection gater ברירת מחדל שדוחה חיוגי WebRTC ו-WebTransport בדפדפן — dist/browser/helia/dial-transport-filter.js מייצא DENIED_DIAL_TRANSPORTS_BY_DEFAULT = ["webrtc", "webrtc-direct", "webtransport"]. הערה בקוד המקור מסבירה את הסיבה: בדפדפן, התעבורות האלה מוסיפות מסלולי יצירת חיבור ארוכים שנכשלים לעיתים קרובות (STUN/ICE, החלפת certhash) ומאטים את הטעינה, בעוד ש-WebSocket הוא ישיר ואמין. כל עמית פעיל בפאנל מצב ה-P2P של הבלוג מוצג עם "Secure WebSocket". ה-gater יושב ב-node_modules, ולכן שום דבר במאגר לא רומז על קיומו.
  • השפעה: קל מאוד לכתוב טקסט ציבורי שנשמע נכון מבחינה טכנית אך אינו נכון — למשל לייחס ל-WebTransport, שהגיע ל-Baseline בדפדפנים במרץ 2026, את מה שאיפשר P2P בדפדפן ב-Bitsocial. הטענה הזו הגיעה לדף הנחיתה, לטבלת ההשוואה ולשני דפי תיעוד לפני שהמפתח תפס אותה. טענות ארכיטקטורה שגויות בדפים ציבוריים נבדקות בדיוק על ידי קהל המפתחים שאליו האתר מכוון.
  • דרך מניעה: לעולם אל תסיק באילו תעבורות Bitsocial משתמש ממה ש-libp2p או פלטפורמת הדפדפן תומכים בו עקרונית. בדוק את node_modules/@pkcprotocol/pkc-js/dist/browser/helia/dial-transport-filter.js לאיתור רשימת הדחייה הנוכחית, ודא שאין דריסת connectionGater תחת about/src/, וקרא את תוויות התעבורה החיות בפאנל "P2P status" של הבלוג לפני כל טענה ציבורית. השינוי במעלה הזרם שבאמת שחרר פרסום מהדפדפן היה תיקון ה-seqno המונוטוני של gossipsub ב-@libp2p/gossipsub 15.0.21 (מאי 2026); pkc-js מגיע כרגע עם 16.0.4.
  • סטטוס: מאושר

קישורים יחסיים מסוג ./page.md מדף תיעוד לא מתורגם שוברים כל בנייה מתורגמת

  • תאריך: 2026-08-02
  • נצפה על ידי: Claude
  • הקשר: הוספת דף חדש באנגלית בלבד, docs/browser-p2p.md, שקישר לדפי תיעוד קיימים באמצעות ./peer-to-peer-protocol.md ו-./apps/5chan.md
  • מה הפתיע: כל לוקאל תחת docs/i18n/<lang>/docusaurus-plugin-content-docs/current/ משקף את עץ התיעוד. דף חדש שנעדר מהמראות האלה עדיין מוצג בכל לוקאל דרך נפילה חזרה לאנגלית, אבל הקישורים היחסיים שלו כבר אינם נפתרים — Docusaurus פולט /ar/browser-p2p/peer-to-peer-protocol.md/ ומכשיל את הבנייה עם "Docusaurus found broken links!". חשוב מכך, yarn build:verify ו-yarn docs:build:verify בונים רק את en ועוברים בהצלחה; רק yarn docs:build מלא חושף את התקלה, והוא נעצר על הלוקאל הראשון לפי סדר האלפבית (ar).
  • השפעה: שינוי בתיעוד יכול לעבור כל בדיקה מקומית מהירה ועדיין לשבור את הבנייה הרב-לוקאלית בפרודקשן. הכשל גם נראה לא קשור לשינוי, כי השגיאה מציינת נתיב לוקאל שהמחבר מעולם לא נגע בו.
  • דרך מניעה: בכל דף תיעוד שאינו משוקף אל docs/i18n/**, השתמש בקישורים יחסיים לשורש (/peer-to-peer-protocol/, /apps/5chan/) במקום בקישורי .md יחסיים; Docusaurus מוסיף להם את קידומת הלוקאל אוטומטית. docs/build-your-own-client.md הוא הדוגמה הקיימת. הרץ yarn docs:build מלא — לא רק build:verify — לפני מסירת כל שינוי שמוסיף דף תיעוד או מקשר אליו.
  • סטטוס: מאושר

חובה להריץ את update-translations.js מתוך about/, והרצות מקבילות מאבדות מפתחות בשקט

  • תאריך: 2026-08-02
  • נצפה על ידי: Claude
  • הקשר: החלת 26 מפתחות i18next מתורגמים על כל 36 הלוקאלים באמצעות ה-skill בשם translate
  • מה הפתיע: שתי מלכודות נפרדות באותו סקריפט. ראשית, scripts/update-translations.js מחשב את היעד שלו כ-path.join(process.cwd(), "public", "translations"), אבל המאגר הזה שומר את התרגומים ב-about/public/translations. הרצת הפקודה המתועדת משורש המאגר נכשלת בכל קריאה עם "Translations directory not found" — הקובץ docs/agent-playbooks/translations.md מציג node scripts/update-translations.js ..., שנקרא כפקודה משורש המאגר. שנית, כל קריאה היא קריאה-שינוי-כתיבה על כל 36 קובצי הלוקאל, ולכן שתי קריאות שרצות בו-זמנית דורסות זו את זו ומפתח אחד נעלם בלי שום שגיאה. ה-skill בשם translate מורה במפורש להפעיל עד 4 סוכני משנה במקביל, שכל אחד מהם היה קורא לסקריפט.
  • השפעה: הצורה שמשורש המאגר נכשלת ברעש ומבזבזת מעבר שלם. בעיית המקביליות נכשלת בשקט: מפתחות נעלמים מלוקאלים אקראיים, והדיף עדיין נראה סביר.
  • דרך מניעה: הרץ אותו כך: cd about && node ../scripts/update-translations.js --key <key> --map <abs-path> --write. לעולם אל תיתן לסוכני משנה של תרגום לכתוב קובצי לוקאל במקביל — תן להם לפלוט קובצי JSON של מילון בלבד, ואז החל כל מפתח באופן סדרתי מסוכן ההורה. אחרי ההחלה, ודא באופן תוכנתי שכל מפתח קיים בכל 35 הלוקאלים שאינם אנגלית, ושאף ערך אינו זהה ברמת הבייטים למקור האנגלי.
  • סטטוס: מאושר