Repository navigation
תיקוני באגים ומגבלות עיצוב - #21
Conversation
- Update CLI to parse document settings for engine configuration - Integrate DOCX XML extraction utility in Electron main process - Add IPC for startup file handling and update project scripts
Replace electron dev command with node server script and add assertion for tokCliPath in frontend tests.
…emplate cancel - Restore Cargo.lock and package-lock.json - Remove redundant root index.html - Restore test/issue20_regression.test.mjs and clean frontend test suite - Restore save cancellation guard in window close handler (Electron main) - Fix ImportTemplateModal onCancel to cleanly abort instead of applying prose template - Restore CSS shrink and overflow protections in action HUD and toolbar - Preserve CLI document settings parsing, DOCX pre-extraction, and F2 rename
Amlaach
left a comment
There was a problem hiding this comment.
נקודות חיוביות ושיפורים מוצלחים
תמיכה מורחבת בהגדרות עמוד ב-Rust CLI (crates/tok-cli/src/main.rs):
קריאת document_settings ישירות מ-RawMultiFlowState והזנתם למודל המסמך.
פונקציית engine_config_from_root תומכת כעת גם במילימטרים וגם בנקודות (pt), וכן ב-camelCase וב-snake_case.
פקודות handle_incremental_typeset ו-handle_diagnose_recompute משתמשות כעת בהגדרות העמוד האמיתיות של המסמך במקום בברירת מחדל קשיחה.
חילוץ DOCX XML ב-Node.js (packages/tok-electron/src/main.ts):
חילוץ מוקדם של word/document.xml באמצעות zlib.inflateRawSync בעת קריאת הקובץ ב-IPC (tok:read-import-file), מה שמפשט ומייעל את שלב הייבוא ב-UI.
שיפור חוויית שינוי שם מסמך (TopSystemBar.ts):
הוספת קיצור מקשים ייעודי (F2), כפתור עריכה גרפי בשורת המערכת, ותמיכה ב-double-click לשינוי שם.
שיפור בבניית ה-UI (scripts/bundle-ui.mjs):
הגדרת aliases ב-esbuild עבור החבילות הפנימיות (tok-story-editor, tok-viewer, tok-canvas).
- מחיקת קובצי ה-Lockfile (Cargo.lock ו-package-lock.json)
הבעיה: ה-PR מחק לחלוטין את package-lock.json (1,598 שורות) ואת Cargo.lock (1,162 שורות).
ההשלכה: שובר בנייה דטרמיניסטית, עלול להכניס שבירות ב-CI ולגרום להתקנת גרסאות תלויות שונות אצל מפתחים שונים.
תיקון נדרש: לשחזר את שני הקבצים באמצעות git checkout origin/main -- Cargo.lock package-lock.json. - קובץ index.html מיותר בשורש המאגר
הבעיה: נוסף קובץ index.html ענק (790 שורות) בתיקיית השורש של הפרויקט.
ההשלכה: הקובץ כולל נתיבים יחסיים שגויים כגון href="../../../assets/icon.png" (שיוצאים מחוץ למאגר למחשב המשתמש). קובץ ה-HTML האמיתי של האפליקציה נמצא ומנוהל ב-packages/tok-ui/src/index.html.
תיקון נדרש: למחוק את index.html משורש הפרויקט. - שבירת סקריפט הריצה npm run dev
הבעיה: ב-package.json שונה הסקריפט:
json
"dev": "node server.mjs"
אך server.mjs הוכנס ל-.gitignore ואינו קיים במאגר!
ההשלכה: הרצת npm run dev נכשלת מיידית עם שגיאת Cannot find module '.../server.mjs'.
תיקון נדרש: להחזיר את סקריפט ה-dev המקורי או לכלול את שרת הפיתוח במאגר (אם נועד לשימוש כלל הפרויקט). - באג איבוד נתונים ביציאה מהתוכנה (packages/tok-electron/src/main.ts)
הבעיה: נמחקה הבדיקה האם המשתמש ביטל את השמירה בדיאלוג השמירה בעת סגירת החלון:
diff
- if (saveResult === false) {
- logger.info('[MAIN] Save before exit was cancelled or failed; keeping window open');
- isClosingPromptActive = false;
- return;
- }
ההשלכה: אם למשתמש יש שינויים לא שמורים, הוא לוחץ על סגירת התוכנה, בוחר "שמור", אך בדיאלוג בחירת הקובץ לוחץ "ביטול" (Cancel) – האפליקציה ממשיכה ונסגרת בכל זאת, והתוכן הולך לאיבוד!
תיקון נדרש: להחזיר את תנאי הביטול כך שביטול שמירה ישאיר את החלון פתוח.
- ביטול ייבוא תבנית מבצע ייבוא כפוי (packages/tok-ui/src/app.ts)
הבעיה: ב-onCancel של הדיאלוג ImportTemplateModal, הקוד שונה ל:
ts
onCancel: () => {
if (this.pendingImportResult) {
this.applyImportedDocument(this.pendingImportResult.result, this.pendingImportResult.filePath, 'prose');
this.pendingImportResult = null;
}
}
ההשלכה: אם המשתמש פותח מסמך לייבוא ומתחרט (לוחץ Cancel / Esc / על הרקע) – המסמך מיובא בכפייה כתבנית 'prose' במקום שהייבוא יבוטל.
תיקון נדרש: לאפס את pendingImportResult = null ללא הפעלת applyImportedDocument. - רגרסיה בסנכרון עיצוב פסקאות (packages/tok-ui/src/app.ts)
הבעיה: הוסרו שורות הסנכרון בעת החלת עיצוב פסקה:
diff
- if (this.activeFlowId) {
- this.documentState.flows[this.activeFlowId] = this.storyEditor.getStory();
- }
ההשלכה: שינויי סגנון ופורמט המבוצעים דרך עורך הסיפור אינם מסתנכרנים מידית חזרה ל-documentState, מה שעלול לגרום לאיבוד שינויי עיצוב בשמירה או בעת רענון עימוד.
- רגרסיות עיצוב ו-CSS ב-packages/tok-ui/src/index.html
הבעיה: בוטלו הגדרות למניעת התכווצות וגלישת טקסט ברכיבים צפופים:
הוסר .tok-action-hud > * { flex-shrink: 0; }
הוסר flex-shrink: 0 ו-min-width: 0 מ-.tok-chip-select ומשדות המפקח.
ההשלכה: מחזיר באגים שנפתרו ב-PR #20 של כפתורים מעוכים וטקסטים נחתכים בתצוגת Split View ובמסכים צרים.
לסיכום: יש כמה חסמים ממיזוג, והם מטופלים בקומיטים הבאים.
זהו pr ראשוני וגולמי שהתיקונים בו יעלו בהדרגה, ובדיקות בכל שלב.