feat(ui): WS6 — אקורדיון-צד בטיעונים, compose רוחב-מלא, status-hero בסקירה (#206) #363

Merged
chaim merged 1 commits from worktree-agent-a31f83020f84e89bf into main 2026-06-30 12:24:01 +00:00
Owner

מה ולמה

WS6 (TaskMaster legal-ai #206) — שלושת שינויי-ה-UI לפי המוקאפים המאושרים של Claude Design (X17): 25b (טיעונים), 03b (compose), 18b (סקירה). presentation-only — אין endpoints/contract חדשים, api:types ללא שינוי.

1. טאב "טיעונים" — אקורדיון ברמת-הצד, סגור כברירת-מחדל (מוקאפ 25b)

components/cases/legal-arguments-panel.tsx: הצדדים עטופים כעת ב-Accordion type="multiple" ללא defaultValue → כל הצדדים מתחילים מקופלים. כל trigger מציג סימן-צבע-צד + שם-הצד + תת-כותרת-תפקיד + באדג'-מונה-טיעונים. בתוך כל צד נשמרים הקיבוץ-לפי-קדימות והאקורדיון-הפנימי ברמת-הטיעון (כולל popover הפרופוזיציות).

2. טאב "עמדות וטענות" (compose) — רוחב-דף מלא (מוקאפ 03b)

app/cases/[caseNumber]/compose/page.tsx: בוטל ה-grid 1fr/320px; ראיל "מסמכי התיק" הוסר (ה-DocumentsPanel בסקירה הוא הבעלים-היחיד) ועבר לפס-מסמכים מתקפל למעלה (accordion single collapsible, סגור כברירת-מחדל, pointer read-only). כרטיסי הטענות/הסוגיות נפרשים 2-up על כל הרוחב. פסיקה-מצורפת (case-level) ושערי הייצוא/העלאה (FinishRail — DOCX export, העלאת-ניתוח, הורדה) שומרו ועברו מהראיל לתחתית הטאב (relocate, לא remove). מפת-ה-StatusChip המקבילה הוסרה → StatusBadge המשותף.

3. סטטוס רק בסקירה (מוקאפ 18b)

app/cases/[caseNumber]/page.tsx + רכיב חדש components/cases/status-hero.tsx: ה-grid הדו-טורי עם הראיל-סטטוס הוסר; כעת StatusHero בולט (stepper אופקי על 5 השלבים + chip "כעת" + שינוי-סטטוס ידני inline + meta-strip תוצאה/דיון/עודכן + AgentStatusWidget + מפת-סטטוסים progressive-disclosure) — חי רק בטאב הסקירה. WorkflowTimeline/StatusChanger/AgentStatusWidget/StatusGuide ירדו משאר הטאבים; כל הטאבים האחרים רוחב-מלא. StatusBadge read-only נשאר ב-H1 של ה-case-header בכל מקום.

שערי-אנוש — אף אחד לא הוסר: שינוי-הסטטוס הידני חי במקום-יחיד (hero בסקירה); ייצוא-DOCX/העלאת-ניתוח חיים במקום-יחיד (compose). הוסרו רק משטחי-קריאה כפולים.

Invariants — הצהרה (חובה)

  • נוגע / מקיים:
    • INV-IA1 / INV-UI7 — בעלים-משטח-יחיד לסטטוס: ה-StatusHero בסקירה הוא המשטח-היחיד שמריץ שינוי-סטטוס/timeline; שאר הטאבים אינם מרנדרים מונה/שער-מתחרה.
    • INV-IA3 / G10 — שער-אחד לכל החלטה-אנושית: שינוי-סטטוס=סקירה בלבד; ייצוא/העלאה=compose בלבד. אף שער לא שוכפל ולא הוסר.
    • INV-IA4 — compose = מרחב-עבודה ממוקד-משימה רוחב-מלא (ניווט מבוסס-משימה, לא מבוסס-פורמט).
    • INV-IA6 — מפת-הסטטוסים נשארת progressive-disclosure בתוך ה-hero.
    • INV-UI8 — הבאדג'ים ממופים לשדות-אמת (status, מונה-טיעונים, doc_type, expected_outcome).
    • G2 — אין מסלול-סטטוס מקביל: מפת-ה-StatusChip של compose הוסרה לטובת StatusBadge המשותף; ה-StatusHero עושה reuse ל-StatusChanger/StatusGuide/AgentStatusWidget הקיימים ול-PHASES ה-SSoT.

צ'קליסט — פרוטוקול כתיבת-קוד

  • קראתי את docs/spec/00-constitution.md (G2) + docs/spec/X17 (INV-IA1–IA6, INV-UI7/8) + web-ui/AGENTS.md (Next 16) לפני הכתיבה
  • השינוי לא יוצר מסלול מקביל ליכולת קיימת (G2) — reuse ל-StatusBadge/StatusChanger/StatusGuide/AgentStatusWidget; אין מפת-סטטוס שנייה
  • לא הוספתי מגע-Paperclip מחוץ ל-Platform Port (G12) — presentation-only ב-web-ui
  • אין בליעה שקטה של שגיאות — לא נגעתי בנתיבי-שגיאה; ה-error/empty states נשמרו כמות-שהם
  • בדקתי מול docs/spec/gap-audit.md — זו הטמעת WS6/X17 המאושרת, לא פתרון-מחדש של FU
  • לא data-migration

אימות

  • שער-העיצוב Claude Design נסגר — chaim אישר את המוקאפים 25b/03b/18b. ההטמעה תורגמה מהם לסטאק האמיתי (Tailwind v4 + shadcn accordion/badge/card, tokens, RTL), בלי העתקת CSS גולמי.
  • npx tsc --noEmitנקי (exit 0), גם אחרי rebase ל-origin/main הנוכחי (4feac75).
  • eslint על 5 הקבצים — נקי.
  • אומת התנהגותית: אקורדיון-הצד type="multiple" ללא defaultValue → מתחיל סגור; חיפוש מאשר שאין StatusChanger/WorkflowTimeline/AgentStatusWidget בקובץ ה-compose ושה-StatusHero חי רק בתוך TabsContent value="overview".
  • אומת base: הענף מבוסס על origin/main (4feac75) לאחר rebase.
  • לא הורץ next build מלא — symlink של node_modules ב-worktree שובר את Turbopack ([reference_worktree_turbopack_build]); ה-build המלא רץ ב-CI/main.

🤖 Generated with Claude Code

## מה ולמה WS6 (TaskMaster `legal-ai` #206) — שלושת שינויי-ה-UI לפי המוקאפים **המאושרים** של Claude Design (X17): `25b` (טיעונים), `03b` (compose), `18b` (סקירה). presentation-only — אין endpoints/contract חדשים, `api:types` ללא שינוי. ### 1. טאב "טיעונים" — אקורדיון ברמת-הצד, סגור כברירת-מחדל (מוקאפ 25b) `components/cases/legal-arguments-panel.tsx`: הצדדים עטופים כעת ב-`Accordion type="multiple"` **ללא `defaultValue`** → כל הצדדים מתחילים מקופלים. כל trigger מציג סימן-צבע-צד + שם-הצד + תת-כותרת-תפקיד + באדג'-מונה-טיעונים. בתוך כל צד נשמרים הקיבוץ-לפי-קדימות והאקורדיון-הפנימי ברמת-הטיעון (כולל popover הפרופוזיציות). ### 2. טאב "עמדות וטענות" (compose) — רוחב-דף מלא (מוקאפ 03b) `app/cases/[caseNumber]/compose/page.tsx`: בוטל ה-grid `1fr/320px`; ראיל "מסמכי התיק" **הוסר** (ה-`DocumentsPanel` בסקירה הוא הבעלים-היחיד) ועבר ל**פס-מסמכים מתקפל למעלה** (accordion `single collapsible`, **סגור** כברירת-מחדל, pointer read-only). כרטיסי הטענות/הסוגיות נפרשים **2-up** על כל הרוחב. **פסיקה-מצורפת** (case-level) ו**שערי הייצוא/העלאה** (`FinishRail` — DOCX export, העלאת-ניתוח, הורדה) שומרו ועברו מהראיל לתחתית הטאב (relocate, **לא** remove). מפת-ה-`StatusChip` המקבילה הוסרה → `StatusBadge` המשותף. ### 3. סטטוס רק בסקירה (מוקאפ 18b) `app/cases/[caseNumber]/page.tsx` + רכיב חדש `components/cases/status-hero.tsx`: ה-grid הדו-טורי עם הראיל-סטטוס **הוסר**; כעת `StatusHero` בולט (stepper אופקי על 5 השלבים + chip "כעת" + שינוי-סטטוס ידני inline + meta-strip תוצאה/דיון/עודכן + AgentStatusWidget + מפת-סטטוסים progressive-disclosure) — חי **רק** בטאב הסקירה. `WorkflowTimeline`/`StatusChanger`/`AgentStatusWidget`/`StatusGuide` ירדו משאר הטאבים; כל הטאבים האחרים רוחב-מלא. `StatusBadge` read-only נשאר ב-H1 של ה-case-header בכל מקום. **שערי-אנוש — אף אחד לא הוסר:** שינוי-הסטטוס הידני חי במקום-יחיד (hero בסקירה); ייצוא-DOCX/העלאת-ניתוח חיים במקום-יחיד (compose). הוסרו רק משטחי-קריאה כפולים. ## Invariants — הצהרה (חובה) - **נוגע / מקיים:** - **INV-IA1 / INV-UI7** — בעלים-משטח-יחיד לסטטוס: ה-`StatusHero` בסקירה הוא המשטח-היחיד שמריץ שינוי-סטטוס/timeline; שאר הטאבים אינם מרנדרים מונה/שער-מתחרה. - **INV-IA3 / G10** — שער-אחד לכל החלטה-אנושית: שינוי-סטטוס=סקירה בלבד; ייצוא/העלאה=compose בלבד. אף שער לא שוכפל ולא הוסר. - **INV-IA4** — compose = מרחב-עבודה ממוקד-משימה רוחב-מלא (ניווט מבוסס-משימה, לא מבוסס-פורמט). - **INV-IA6** — מפת-הסטטוסים נשארת progressive-disclosure בתוך ה-hero. - **INV-UI8** — הבאדג'ים ממופים לשדות-אמת (status, מונה-טיעונים, doc_type, expected_outcome). - **G2** — אין מסלול-סטטוס מקביל: מפת-ה-`StatusChip` של compose הוסרה לטובת `StatusBadge` המשותף; ה-`StatusHero` עושה reuse ל-`StatusChanger`/`StatusGuide`/`AgentStatusWidget` הקיימים ול-`PHASES` ה-SSoT. ## צ'קליסט — פרוטוקול כתיבת-קוד - [x] קראתי את `docs/spec/00-constitution.md` (G2) + `docs/spec/X17` (INV-IA1–IA6, INV-UI7/8) + `web-ui/AGENTS.md` (Next 16) לפני הכתיבה - [x] השינוי **לא** יוצר מסלול מקביל ליכולת קיימת (G2) — reuse ל-StatusBadge/StatusChanger/StatusGuide/AgentStatusWidget; אין מפת-סטטוס שנייה - [x] **לא** הוספתי מגע-Paperclip מחוץ ל-Platform Port (G12) — presentation-only ב-web-ui - [x] אין בליעה שקטה של שגיאות — לא נגעתי בנתיבי-שגיאה; ה-error/empty states נשמרו כמות-שהם - [x] בדקתי מול `docs/spec/gap-audit.md` — זו הטמעת WS6/X17 המאושרת, לא פתרון-מחדש של FU - [x] לא data-migration ## אימות - שער-העיצוב Claude Design **נסגר** — chaim אישר את המוקאפים 25b/03b/18b. ההטמעה תורגמה מהם לסטאק האמיתי (Tailwind v4 + shadcn `accordion`/`badge`/`card`, tokens, RTL), בלי העתקת CSS גולמי. - `npx tsc --noEmit` — **נקי** (exit 0), גם אחרי rebase ל-`origin/main` הנוכחי (`4feac75`). - `eslint` על 5 הקבצים — נקי. - אומת התנהגותית: אקורדיון-הצד `type="multiple"` **ללא** defaultValue → מתחיל סגור; חיפוש מאשר שאין `StatusChanger/WorkflowTimeline/AgentStatusWidget` בקובץ ה-compose ושה-`StatusHero` חי רק בתוך `TabsContent value="overview"`. - אומת base: הענף מבוסס על `origin/main` (`4feac75`) לאחר rebase. - לא הורץ `next build` מלא — symlink של `node_modules` ב-worktree שובר את Turbopack ([reference_worktree_turbopack_build]); ה-build המלא רץ ב-CI/main. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-30 12:23:26 +00:00
feat(ui): WS6 — party accordion, full-width compose, status-hero overview (#206)
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 4s
Lint — undefined names / undefined-names (pull_request) Successful in 9s
f1e9103723
שלושת שינויי-ה-UI של WS6 לפי המוקאפים המאושרים (25b/03b/18b, X17):

1. טאב "טיעונים" (legal-arguments-panel) — אקורדיון ברמת-הצד, סגור
   כברירת-מחדל (type="multiple" ללא defaultValue). כל trigger מציג
   שם-צד + תת-כותרת + באדג'-מונה. בתוך כל צד נשמר הקיבוץ-לפי-קדימות
   והאקורדיון הפנימי ברמת-הטיעון.

2. טאב "עמדות וטענות" (compose) — רוחב-דף מלא: בוטל ה-grid 1fr/320px,
   ראיל "מסמכי התיק" הוסר (DocumentsPanel בסקירה הוא הבעלים היחיד)
   ועבר לפס-מסמכים מתקפל למעלה (סגור כברירת-מחדל). כרטיסי-הסוגיות
   2-up. פסיקה-מצורפת ושערי-הייצוא/העלאה שומרו (relocate, לא remove).
   מפת-StatusChip המקבילה הוסרה → StatusBadge המשותף (G2).

3. סטטוס רק בסקירה (overview) — StatusHero חדש (stepper אופקי + chip
   שלב-נוכחי + שינוי-סטטוס ידני + meta-strip), הבעלים היחיד של
   הסטטוס. WorkflowTimeline/StatusChanger/AgentStatusWidget ירדו משאר
   הטאבים; הטאבים האחרים רוחב-מלא. StatusBadge read-only נשאר ב-H1.

Invariants: INV-IA1 (בעלים-יחיד לסטטוס=hero), INV-IA3/G10 (כל שער-אנוש
נשמר במקום אחד — שינוי-סטטוס בסקירה, ייצוא/העלאה ב-compose),
INV-IA4 (compose=מרחב-עבודה ממוקד-משימה רוחב-מלא), INV-IA6 (מפת-סטטוסים
progressive-disclosure), INV-UI7/UI8, G2 (StatusBadge משותף, אין
מפת-סטטוס מקבילה).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chaim merged commit d9783b1c14 into main 2026-06-30 12:24:01 +00:00
chaim deleted branch worktree-agent-a31f83020f84e89bf 2026-06-30 12:24:01 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ezer-mishpati/legal-ai#363