# הקשר להמשך ישיר — 0043
תאריך: 2026-06-03 14:50
אפליקציה: VitSiteReport

## מה בנוי עכשיו
- **Build 22 נבנה (`1.0.0+22`, APK debug 174MB) ואומת על אמולטור** `vit_test` (Pixel 7, Android 14). לא הופץ ל-App Distribution.
- **תיקונים שעברו בvב22 (10 דברים, נחתמו על-ידי 12-agent panel)**:
  - 6 sites של `VitColors.line/.lineFaint` קבוע → `lineOf(context)/lineFaintOf(context)` (light mode contrast).
  - `aboutPoweredBy` "Powered by" → "מבית".
  - `visitNoFindingsHint` "פותח טופס ממצא…" → "אין ממצאים בסיור — לחצו על '+ ממצא חדש'".
  - `dialogConfirm` key חדש (he: "אישור", en: "Confirm") + `_pickDueDate` משתמש בה.
  - **CupertinoDatePicker `DateTime selected` הוזז מתוך builder closure לscope של `_pickDueDate`** (rebuild safety).
  - `finding_form_screen.dart:1115` due-date label → `VitColors.textOf(context)` (light mode visibility).
  - `_submit` try/finally guard ל-`_busy` reset.
  - `audio_recorder._stopRecording` catch מוסיף file delete (no .m4a leak).
  - `_FreehandAnn` distance decimation ≥1.5px image-space ב-`_onPanUpdate`.
  - `_ColorSwatch` 36→48dp + Hebrew Semantics.
  - **AndroidManifest**: ACCESS_FINE/COARSE_LOCATION הוסרו (unused = Play Store violation).
- **🔥 ההוכחה הויזואלית של תיקון due-date ב-light:** `_qa-shots/0037/28_date_in_light_sm.png` — "10.06.2026" קריא כהה על לבן.
- **adb tap UI automation:** dump+grep `bounds="[x1,y1][x2,y2]"` קודם, אז tap. צילומים 1080x2400 לרסייז ל-900xN דרך PowerShell `System.Drawing` לפני קריאה (API API rejects >2000px).

## הצעד הבא
**המשתמש בחר Tier 2** (אם לא נסגר ב-tier 1):
1. **Security tightening** (5 P0): `hasOnly` ב-Firestore rules על users/orgs/projects/visits/findings + size caps על free-text + Storage rule contentType+filename validation.
2. **PDF resilience** (6 ממצאים): try/catch על Heebo+MemoryImage; `pw.Container`→`pw.Column` ל-page-break safety; transcript pagination.
3. **i18n דה-Hebrew-hardcode** (3 P0): annotate tool labels + PDF body + filename → AppLocalizations.
4. **Architect domain features**: `drawingRef`/`specRef` + location hierarchy chip + carry-over `partial`+`regression` outcomes + work-trades expanded list.
5. **A11y + UX**: SafetyUrgent Switch semantics, severity icon prefix, PopScope dirty-discard.
6. **Performance**: PDF MemoryImage isolate, uploadStatusProvider select.
7. **Audio**: dispose IIFE await, hasPermission→request fallback.

**ההמלצה שלי לבחירה אחת**: Security (Tier 2 #1) — זה חוסם launch ב-Play Store, יחסית קצר, אומת באמינות גבוהה.

**חוסם פתוח יחיד מהמשתמש**: Manual QA על המכשיר האמיתי שלו (Samsung) — לאמת DatePicker + light mode + carry-over במכשיר OEM-skinned. הצלחתי לאמת רק על אמולטור Pixel.

## קבצים רלוונטיים לסשן הבא
- `firestore.rules` — Tier 2 Security (hasOnly + size caps)
- `lib/services/pdf_service.dart` — Tier 2 PDF resilience
- `lib/screens/visit/annotate_screen.dart:467-474` — i18n tool labels
- `lib/services/pdf_service.dart:149-211` — i18n PDF body strings
- `lib/screens/visit/report_preview_screen.dart:213-217` — i18n filename + subject
- `lib/models/finding.dart` — Architect: +drawingRef +specRef
- `lib/models/visit.dart` — Architect: +constructionStage +weather +endedAt
- `lib/screens/visit/carry_over_screen.dart` — +partiallyResolved +regressed enums
