# סיכום סשן — 0033
תאריך: 2026-05-28 17:30
אפליקציה: Vitruvius
נושא: M6 + שלושה קידודי עברית

הסשן התחיל ב-"תמשיך" (ללא משימה). הצעד הבא לפי PLAN היה M6. במהלך הסשן המשתמש בדק את התוצאה מול המקור באוטוקאד וחשף סדרת בעיות נאמנות — שהורחבו לפתרון מערכתי של שלושה קידודי עברית.

## מה נבנה/הושלם

### M6 — UI מלא
- `src\Vitruvius.Core\State\VitruviusConfig.cs` (חדש) — config ב-`%APPDATA%\Vitruvius\config.json` (manual-JSON + AtomicFile). שדות: AutoReloadEnabled (def true), TelemetryEnabled (def false, opt-in), AccoreConsolePathOverride.
- `src\Vitruvius.Revit2024\UI\SettingsWindow.cs` (חדש) — WPF code-built, RTL dark: toggle תיקון-אוטומטי, סטטוס+browse ל-accoreconsole, הסכמת טלמטריה + הערת פרטיות, "פתח תיקיית נתונים".
- `src\Vitruvius.Revit2024\Commands\SettingsCommand.cs` (חדש) + `AboutCommand.cs` (העשרה: תזכורת Always-Load + CommandLink לתיקיית נתונים).
- `VitruviusApp.cs` — panel "כלים" עם הגדרות+אודות.
- חיווט: DwgReloadHandler מכבד AutoReloadEnabled; FixGibberishCommand משתמש ב-override של accoreconsole.

### תיקוני נאמנות (font + reverse)
- **build-hebrew-visual.py:** `q`→`/` (היה None→q), `w`→`'` (היה None→w), הוסר `.`→ץ (נקודה נשארת נקודה), הוספו aliases לקוטר U+2205/U+2300/U+2298→Oslash (Revit ממיר %%C ל-U+2205, ש-David חסר → ריבוע). TTF נבנה מחדש (112KB) והותקן (קובץ versioned + registry repoint, כי הקובץ הטעון נעול).
- **HebrewTextRemapper.Analyze:** שערים חדשים — דחיית %%c/%%C/%%d/%%p/%%%/%%digit (spec), `@`, `=`, ו-denylist מילים אנגליות. `%%u`/`%%o` (underline/overline) נפשטים לפני שיפוט (עברית מודגשת עדיין מזוהה).
- **DxfTextReverser.ReverseHebrewValue:** שומר `%%u`/`%%o` בקצה.
- **FontRecommender:** romans/romanc/romant/simplex/isocp → **Arial** (היה Hebrew Visual → אנגלית קטנה הפכה לעברית). txt/txtn/miryl/galil/iron/oron2/techno_m/atir/hd → Hebrew Visual.

### שלושת קידודי העברית (הרחבה מערכתית)
- **`HebrewOrderDetector.cs` (חדש):** מזהה אם Unicode-עברית בסדר ויזואלי (הפוך) דרך אותיות סופיות — ך ם ן ף ץ בתחילת מילה, או כ מ נ פ צ בסוף = ויזואלי. הצבעה ברמת השרטוט (לא נוגע בשרטוט לוגי תקין).
- **DxfTextReverser:** זיהוי UTF-8 vs CP1255 (strict-UTF-8 validation; ASCII נשאר CP1255). `ReverseKeepingNumbers` — היפוך ויזואלי→לוגי ששומר ריצות LTR (מספרים/לטינית) קדימה. `RecoverCp862` — שחזור עברית-DOS (CP862) ש-accore מקודד שגוי דרך Windows-1252: per-char — תווי C1 (U+0080-009F) נושאים בייט בקוד, תווי cp1252 מיוחדים מקודדים חזרה, `%%nnn` הוא הבייט העשרוני; דרישת רצף ≥2 אותיות עוקבות (מונע false-positive בספק קוטר). מורץ רק על UTF-8.

## בעיות שנפתרו
- **🔥 AddStackedItems קורס ב-runtime (לא בקומפילציה):** ב-VitruviusApp.OnStartup, `RibbonPanel.AddStackedItems` זרק exception → **כל לשונית Vitruvius לא נטענה** (silent, ללא דיאלוג שגיאה, ללא API_SUCCESS ביומן). תיקון: `AddItem` ×2 + עטיפת בלוק ה-panel המשני ב-try/catch. אובחן ע"י היעדר שורת `DwgReloadHandler registered` טרייה ב-diagnostic.log + היעדר Vitruvius ביומן Revit.
- **🔥 קוטר Ø → ריבוע ריק:** Revit ממיר %%C ל-U+2205, David חסר → tofu. תיקון: aliases בפונט.
- **🔥 פרסר drift:** הליכה שורה-שורה נסחפה על ערכי 0/1 (דגלי MTEXT) → ראתה 337 מ-2988 אלמנטים, הפכה 83 במקום 291. תיקון: strict i+=2 pairing.
- **🔥 קידוד שגוי על מדידה:** accore מוציא UTF-8, ה-reverser פיענח CP1255 → reversed=0. + Analyze דילג על "כבר עברית". תיקון: זיהוי UTF-8 + טיפול בסדר ויזואלי.
- **CP862 false-positive על אינסטלציה:** האינסטלציה גם valid-UTF-8 → CP862 recovery רץ עליה והפך תו בודד בספק קוטר ל-ח. תיקון: דרישת רצף ≥2 אותיות עוקבות.

## מה לא עבד / צריך להיזהר
- **accore round-trip דורש AutoCAD מותקן** — בלעדיו רק DXF. עלול לאבד אלמנטים בשרטוטים מורכבים (TOPO שרד — 2988 שלמים).
- **double-reverse:** תיקון ישיר דרך DLL (לא דרך הריבון) לא רושם state.json → ה-mtime guard של M5 חושב שהקובץ עודכן ומהפך שוב. חובה לרשום state / לעדכן fixedAt > mtime אחרי תיקון-DLL ישיר (עשיתי ידנית ב-state.json).
- **EN-typed reverse לא אידמפוטנטי** (הרצה כפולה מבטלת); **Unicode/CP862 כן אידמפוטנטי** (detector בודק סדר).
- נשארו 3 קיצורים זעירים במדידה (`ש.מ` — אותיות מופרדות בנקודה, נדחו ע"י רצף ≥2). שולי.
- **טעינת DLL ב-PowerShell** מציגה אזהרת ReflectionTypeLoadException אך עובדת (netstandard2.0) — לא קריטי.

## קבצים שנוצרו/שונו
**חדש:** `Core\State\VitruviusConfig.cs`, `Core\Hebrew\HebrewOrderDetector.cs`, `Revit2024\UI\SettingsWindow.cs`, `Revit2024\Commands\SettingsCommand.cs`.
**שונה:** `Core\Dwg\DxfTextReverser.cs` (encoding detect + CP862 + parser + number-keeping reverse), `Core\Hebrew\HebrewTextRemapper.cs` (Analyze gates), `Core\Hebrew\HebrewKeyboardMap.cs` (הוסר .→ץ), `Core\Fonts\FontRecommender.cs` (Latin→Arial), `Core\Dwg\DwgReverseService.cs` (ResolveAccoreConsole), `Revit2024\VitruviusApp.cs` (כלים panel + try/catch), `Revit2024\Commands\AboutCommand.cs`, `Revit2024\Events\DwgReloadHandler.cs` (AutoReloadEnabled), `Revit2024\Commands\FixGibberishCommand.cs` (accore override), `fonts\build-hebrew-visual.py`, `Vitruvius\PLAN.md` (M6 ✓).
**DLL:** Core ~65KB, Revit2024 ~72KB. Deployed `C:\ProgramData\Autodesk\Revit\Addins\2024\Vitruvius\` + OLD\ ארכובים. Font versioned ב-`%LOCALAPPDATA%\Microsoft\Windows\Fonts\` + HKCU registry.
**Memory:** `vitruvius-revit-ribbon-gotchas.md` (AddStackedItems), `vitruvius-fix-fidelity-rules.md` (font/Analyze/Latin-fonts + שלושת הקידודים + parser + CP862), עדכון `feedback-do-everything-autonomous.md`.
**כלים (לא חלק מהפלאגין):** `tools\dump-dxf-text.py`, `dump-dxf-styles.py`, `crop.ps1`, `click-shot.ps1`, `uia-click.ps1`, `relaunch-toilet.ps1` ועוד.

## הצעד הבא
- M7 (UpdateChecker) לפי roadmap, **או** בדיקת כיסוי על אצוות DWG-ים אמיתיים והרחבת טיפול מערכתי (המשתמש דחה כלי batch כרגע). אין משימה פעילה — לשאול את המשתמש.
- fixture: `G:\האחסון שלי\עבודות\לוטן\מבנה רואי\A_Mivne roi\A_Mivne roi.rvt` (מקשר אינסטלציה 1325-01001 DWG+DXF + מדידה 6106-136 TOPO).
