שיפורים קטנים לחוויית השימוש בתוסף Claude Code ל-VSCode. הפיצ'רים מסודרים מהחדש ביותר לישן (מי שחוזר לאחר תקופה יראה מיד מה חדש).
💡 משהו לא עובד? התצוגה לא מראה את השיפורים? קודם כל תעשו Reload Window. כשקלוד קוד או VSCode מתעדכנים באמצע העבודה, התצוגה שרצה בזיכרון נשארת עם הגרסה הישנה עד ש-VSCode נטען מחדש.
Ctrl+Shift+P←Developer: Reload Windowפותר את זה ברוב המקרים.
קליק ימני על קישור לקובץ בשיחה ואז Copy Link העתיק עד עכשיו את הקישור הגולמי - נתיב יחסי שאינו שמיש מחוץ ל-VSCode (אי אפשר להדביק אותו בסייר הקבצים). עכשיו מועתק הנתיב המוחלט המלא (כולל אות כונן), אחרי פענוח קידוד-URL והסרת סיומות שורה כמו #L42 - מוכן להדבקה בסייר הקבצים, בטרמינל או בכל דיאלוג. קישורי אינטרנט מועתקים כרגיל, ולחיצה על הקישור ממשיכה לפתוח את הקובץ ב-VSCode כמו תמיד.
ריחוף על הודעת משתמש מציג כפתור Collapse - לחיצה מקפלת את ההודעה לשורה אחת. ריחוף על הודעה מקופלת מציג Expand שפותח אותה חזרה. כל הודעה בנפרד, בדיוק כמו ה-Show more / Show less הנייטיביים - רק עד הסוף.
- החזקת Alt הופכת את הפעולה לכל השיחה: התווית מתחלפת חיה ל-Collapse all / Expand all, ולחיצה מקפלת (או פותחת) את כל הפרומפטים במכה אחת - השיחה הופכת לרשימה קומפקטית שקל לסרוק, עם כל שטח המסך פנוי לתשובות.
- מצב הקיפול יציב לאורך השיחה - שורד רענוני תוכן ומעבר בין סשנים באותו חלון - עד שפותחים או עושים Reload.
- הכפתור יושב בדיוק לצד ה-Show more / Show less הנייטיביים, על אותו קו.
- פרומפט של שורה אחת לא מקבל כפתור - אין מה לקפל.
- אגב, תוקן גם באג נייטיבי: בהודעות בעברית כפתור Show less היה קופץ לפינה השמאלית (ההפוכה) - עכשיו הוא נשאר בפינה הימנית, כמו Show more.
- כיבוי: דגל
user_msg_minimizeב-ui.conf(ברירת מחדל: דולק).
![]() |
![]() |
![]() |
![]() |
כשקלוד שואל שאלה (AskUserQuestion) נפתחת תיבה צפה שמכסה את התשובה שמתחתיה, והדרך היחידה לקרוא את מה שמאחוריה הייתה ללחוץ Esc - מה שמבטל את השאלה. הפיצ'ר מוסיף כפתור מזעור (−) ליד ה-✕.
- לחיצה על
−מקפלת את התיבה לשורה אחת שנדבקת לראש תיבת הפרומפט - והתשובה שמאחוריה נחשפת ונקראת במלואה. - הכפתור מתחלף ל-
□(מסגרת) להחזרת התיבה למצב מלא. השאלה לא מבוטלת - היא ממתינה כל הזמן. - ניתן לכבות עם דגל
question_minimizeב-ui.conf(ברירת מחדל: דולק).
קליק ימני על ה-badge של הקונטקסט פותח פירוט מלא של מה שצורך את חלון ההקשר, לפי קטגוריה - בדיוק כמו /context הנייטיב, אבל ישירות מה-badge בלי לפתוח פאנל.
- פירוק לכל קטגוריה (System prompt, System tools, MCP/System tools deferred, Custom agents, Memory files, Skills, Messages, Autocompact buffer, ו-Free space) עם טוקנים ואחוז לכל אחת, ופס ניצול צבעוני.
- רשימת קבצי ה-Memory (
/memory) וה-Custom agents (/agents) עם צריכת הטוקנים של כל אחד. - שם המודל מוצג מרונדר (
Opus 4.8 (1M context)), עם ה-id הגולמי ב-tooltip. - האחוזים בפירוק מחושבים מול חלון ה-autocompact (נקודת הדחיסה), בעוד ה-badge עצמו מודד מול תקרת המודל המלאה - לכן ייתכן הבדל בין השניים.
בלוקי קוד (ובלוקים להעתקה) מוגבלים לרוחב שניתן לכוונן - ברירת מחדל 50% מרוחב הצ'אט - ונשברים לשורות במקום גלילה אופקית מעצבנת. השבירה ויזואלית בלבד: הטקסט שמועתק נשאר שורה לוגית אחת לפסקה.
- הרוחב נקבע ע"י
code_block_max_widthב-ui.conf(כל ערך CSS:50%,65%,720px; או100%/noneלביטול). ברירת מחדל:50%. - כפתור ההעתקה עוקב אחרי הקצה הימני של הבלוק (לא נדבק לקצה החלון), עם מסגרת בעובי ובצבע של מסגרת הודעות היוזר.
- ה-hover שחושף את הכפתור פעיל על כל רוחב השורה, גם מעל האזור הריק מימין לבלוק.
- לקבלת copy נקי גם בתוכן (בלי שבירות שורה מלאכותיות) - ראו את הפרומפט המומלץ למטה, תחת ההגדרות.
Badge קטן בפינה הימנית של אזור הקלט שמציג כמה מחלון הקונטקסט של השיחה הנוכחית נצרך כרגע. לכל חלון VSCode חיווי משלו, בהתאם לשיחה שלו.
- פורמט:
349.4k / 1.0M (35%)— טוקנים שנצרכו / תקרת המודל / אחוז - זיהוי אוטומטי של תקרה — 200K או 1M (מודל עם חלון מורחב), מבוסס על ה-usage בפועל
- צבעים לפי שימוש: ירוק (<50%), כתום (50-79%), אדום (≥80%)
- ניתן לכבות/להדליק עם דגל
show_context_windowב-ui.conf(ברירת מחדל: דולק)
במצב הרגיל (מנוי Claude.ai) אין שום חיווי — נקי ושקט. החיווי מופיע רק באחד משני המצבים:
- Extra (אדום) — עברת את המכסה השעתית במנוי. מוצג
Extra $X.XXXעם עלות חריגה מצטברת מרגע ה-overage - API (כתום) — מחובר עם מפתח API. מוצג
API+ עלות מצטברת של הסשן$X.XXX, תמיד גלוי
הזיהוי מתבצע בזמן ריצה דרך המסר get_claude_state_response שהתוסף שולח לכל חלון בנפרד — כך שכל חלון VSCode מציג את המצב הנכון שלו.
![]() |
Extra (אדום) עברת את המכסה השעתית — עלות חריגה מצטברת מרגע ה-overage |
![]() |
API (כתום) מפתח API — עלות מצטברת של הסשן, מוצג תמיד |
שלושה כפתורים שמוזרקים לאזור הקלט:
- ↑ — קפיצה להודעת המשתמש הקודמת
- ↓ — קפיצה להודעת המשתמש הבאה
- ⤓ — גלילה לתחתית השיחה (אחרי כל ההודעות, כולל התגובה האחרונה)
הניווט עוצר בהודעה הראשונה / האחרונה — ללא לולאה. מדגיש את ההודעה שאליה קפצת עם אנימציית פולס קצרה.
מסגרת עדינה סביב ההודעות שלך, כדי שתוכל לסרוק את השיחה ולהבדיל בקלות בין הפרומפטים שלך לתשובות של קלוד.
ניתן להדליק/לכבות עם קליק ימני על כפתורי הניווט ↑↓⤓.
צבע ברירת המחדל ניתן לשינוי בקובץ ui.conf.
קלוד קוד מכווץ הודעות ארוכות לכ-3 שורות עם כפתור "הצג עוד". הפיצ'ר הזה מגדיל את הסף לכ-8 שורות (ניתן לכוונון עם user_msg_max_height ב-ui.conf), כך שהודעות בינוניות נראות במלואן בלי שום לחיצה. בנוסף, ההצללה וכפתור Show more מופיעים רק כשההודעה באמת נחתכת - ולא על הודעות שכבר מוצגות במלואן.
קלוד קוד רגיל חותך את שמות השיחות בסיידבר לשורה אחת. הפיצ'ר הזה מאפשר לכל פריט להציג עד 3 שורות, כדי שתוכל לקרוא על מה דובר בשיחה.
קליק ימני על טקסט מסומן בשיחה פותח תפריט עם שתי אפשרויות:
- Copy
מעתיק עם עיצוב מלא, מתאים להדבקה ב-Word, Notion וכדומה - Copy as Markdown
ממיר את הטקסט ל-Markdown גולמי ומעתיק כטקסט רגיל
התפריט מופיע רק כשיש טקסט מסומן. בלי סימון — קליק ימני עובד כרגיל.
העתיקו את הבלוק הבא והדביקו אותו לתוך Claude Code — הוא יעשה את השאר:
Install the Claude Code UI extras (UI enhancements).
Do all these steps:
Step 1 — Create a scripts directory in the current working directory (if it doesn't exist).
Step 2 — Download the install script from the repo and save it to scripts/:
curl -o scripts/inject-ui.sh https://raw.githubusercontent.com/arielmoatti/claude-code-ui-extras/main/inject-ui.sh
Step 3 — Run the script once (`bash scripts/inject-ui.sh`). This patches the webview and registers a SessionStart hook in ~/.claude/settings.json so the injection re-applies after every extension update.
Step 4 — Ask me to do Reload Window (Ctrl+Shift+P → Developer: Reload Window).
שימו לב: הפרומפט באנגלית בכוונה — כי קלוד צריך להבין את ההוראות ולבצע אותן.
הסקריפט יבצע:
- הזרקת שיפורי ה-UI לתוך ה-
webviewשל קלוד קוד - רישום
SessionStarthook כדי שההזרקה תבוצע אוטומטית אחרי כל עדכון של התוסף
- הורידו את
inject-ui.shלתיקייתscripts/בפרויקט - הריצו
bash scripts/inject-ui.sh - עשו Reload Window ב-VSCode (
Ctrl+Shift+P → Developer: Reload Window)
ערוך את scripts/ui.conf - הפרמטרים הנתמכים כוללים:
# צבע מסגרת הודעות משתמש (כל ערך CSS תקין)
border_color=rgba(249,131,131,0.5)
# הצגת badge של Context Window (true / false)
show_context_window=true
# רוחב מרבי לבלוקי קוד - הקופסה נשברת לשורות במקום גלילה אופקית
# (כל ערך CSS: 50%, 65%, 720px; או 100% / none לביטול). ברירת מחדל: 50%
code_block_max_width=50%
# כפתור מזעור על תיבת השאלות (true / false) - ברירת מחדל: דולק
question_minimize=true
# כפתור Collapse/Expand על הודעות משתמש (true / false) - ברירת מחדל: דולק
user_msg_minimize=true
# גובה הכיווץ של הודעות משתמש ארוכות, בפיקסלים (ברירת מחדל: 175, בערך 8 שורות)
user_msg_max_height=175
לאחר מכן הרץ מחדש את bash scripts/inject-ui.sh וטען מחדש את VSCode.
ה-CSS מתקן את התצוגה לכולם - שבירה לשורות במקום גלילה אופקית. אבל אם הטקסט שמועתק מהבלוק נושא שבירות שורה מלאכותיות, הן נדבקות יחד איתו. כדי שגם ההעתקה תהיה נקייה, בקש מ-Claude לא לשבור פסקאות פרוזה בתוך בלוקים. הוסף את הפרומפט הבא ל-~/.claude/CLAUDE.md (תופס בכל סשן), או הדבק אותו בתחילת שיחה:
Inside fenced ``` blocks that hold prose/text for copy-paste (messages, emails, posts), do not hard-wrap: one paragraph per line, rely on soft-wrap, blank line between paragraphs. In blocks holding real code, JSON, tables, or lists, keep newlines exactly as written.
הסרה אוטומטית (מומלץ). הרצה אחת ב-PowerShell מסירה הכל בצורה חלקה - כל הבלוקים המוזרקים מכל גרסאות ה-webview, הסקריפטים שהותקנו, וה-hooks מ-settings.json - עם גיבוי לכל קובץ שנערך:
irm https://raw.githubusercontent.com/arielmoatti/claude-code-ui-extras/main/uninstall.ps1 | iexואז Reload Window. הסקריפט גנרי (מסיר כל בלוק Claude UI Extras ... Start/End, אז הוא תקף גם לגרסאות עתידיות) ולא נוגע בחבילת ה-RTL הנפרדת. רוצה לבדוק לפני הרצה? פתח את uninstall.ps1.
הסרה ידנית (אם מעדיפים). מחק את הבלוק המוזרק מתוך webview/index.js ו-webview/index.css (חפש /* Claude UI Extras Patch Start */), והסר את הרשומה מ-SessionStart hook ב-~/.claude/settings.json.
English version
[!TIP] 💡 Something not working? The UI isn't showing the patches? First try Reload Window. When Claude Code or VSCode updates while you're working, the in-memory webview stays on the old version until VSCode reloads.
Ctrl+Shift+P→Developer: Reload Windowfixes it in most cases.
Ordered newest-first — when you come back after a while, the top of the list shows what's new.
Right-clicking a file link in the conversation and choosing Copy Link used to copy the raw href - a workspace-relative path that's useless outside VSCode (you can't paste it into File Explorer). It now copies the absolute path (drive letter included), URL-decoded and stripped of #L42 line suffixes - ready to paste into File Explorer, a terminal, or any dialog. Web links (https://...) are copied unchanged, and clicking the link still opens the file in VSCode as before.
Hovering any user message reveals a Collapse button - a click folds that message to a single line. Hovering a folded message shows Expand to restore it. Per-message, just like the native Show more / Show less - only all the way.
- Hold Alt to act on the whole chat: the label switches live to Collapse all / Expand all, and one click folds (or expands) every prompt at once - turning the conversation into a compact, scannable list with the whole screen left for Claude's answers.
- The folded state is stable throughout the session - it survives content re-renders and session switches in the same window - until you expand or reload.
- The button sits right next to the native Show more / Show less, on the same baseline.
- Single-line prompts don't get the button (nothing to fold).
- Also fixes a native quirk: in RTL (Hebrew) messages the Show less button used to jump to the opposite (left) corner - it now stays in the right corner like Show more.
- Toggle via
user_msg_minimizeinui.conf(default: on).
![]() |
![]() |
![]() |
![]() |
When Claude asks a question (AskUserQuestion), it opens a floating box that covers the answer underneath it - and the only way to read what's behind it was to press Esc, which discards the question. This adds a minimize button (−) next to the ✕.
- Clicking
−collapses the box to a single line parked on top of the prompt box - and the answer behind it is revealed and fully readable. - The glyph flips to
□(outline) to restore the box. The question is never discarded - it stays pending the whole time. - Toggle via
question_minimizeflag inui.conf(default: on).
Right-click the context badge to open a full breakdown of what's filling the context window, by category - the same data as the native /context, but inline on the badge without opening a panel.
- Per-category split (System prompt, System tools, MCP/System tools deferred, Custom agents, Memory files, Skills, Messages, Autocompact buffer, and Free space) with tokens and percentage, plus a colored usage bar.
- Lists your Memory files (
/memory) and Custom agents (/agents) with each one's token cost. - Model name is rendered friendly (
Opus 4.8 (1M context)), with the raw id on hover. - Breakdown percentages are measured against the auto-compact window (the compaction point), while the badge itself measures against the model's full cap - so the two can differ.
Code blocks (and copy blocks) are capped to a configurable width - default 50% of the chat - and soft-wrap instead of scrolling sideways. Wrapping is visual only: copied text stays one logical line per paragraph.
- Width is set by
code_block_max_widthinui.conf(any CSS width:50%,65%,720px; or100%/noneto disable). Default:50%. - The copy button tracks the block's right edge (instead of sticking to the window edge), with a border matching the user-message border (thickness and color).
- The hover that reveals the button spans the full row, including the empty area to the right of the block.
- For clean copied content too (no artificial line breaks), see the recommended prompt below, under Configuration.
A small badge in the right corner of the input area showing how much of the current conversation's context window is in use. Each VSCode window has its own badge, reflecting its own session.
- Format:
349.4k / 1.0M (35%)— used tokens / model cap / percentage - Auto-detects cap — 200K or 1M (extended-window model), based on live usage data
- Color thresholds: green (<50%), orange (50-79%), red (≥80%)
- Toggle via
show_context_windowflag inui.conf(default: on)
In regular mode (Claude.ai subscription) there's no indicator — clean and quiet. The indicator appears only in one of two cases:
| Extra (red) — exceeded hourly quota, shows overage cost since the moment it started | ![]() |
| API (orange) — connected via API key, cumulative session cost always visible | ![]() |
Detection happens at runtime via get_claude_state_response — each VSCode window shows its own correct state.
Three buttons injected into the input footer:
- ↑ — jump to previous user message
- ↓ — jump to next user message
- ⤓ — scroll to the absolute bottom of the conversation (past all messages, including the latest model response)
- Navigation stops at the first / last message — no looping
- Highlights the target message with a brief pulse animation
A subtle border around your messages, making it easy to visually separate your prompts from Claude's responses.
Toggle on/off with a right-click on the ↑↓⤓ navigation buttons.
Default color is configurable in ui.conf.
Claude Code collapses long user messages to ~3 lines with a "Show more" button. This fix raises the threshold to ~8 lines (tunable via user_msg_max_height in ui.conf), so short-to-medium messages are fully visible without any interaction. The fade and Show more button now also appear only when content is actually cut off - never on messages that are already fully visible.
The Claude Code sidebar normally truncates session names to a single line. This fix expands each entry to up to 3 lines, so you can actually read what a session was about.
Right-click on any selected text in the conversation to get a context menu with two options:
- Copy — copies the selection as rich text (preserves formatting when pasting into Word, Notion, etc.)
- Copy as Markdown — converts the selection to raw Markdown (
**bold**,# heading,`code`, etc.) and copies it as plain text
This menu only appears when text is selected. When nothing is selected, right-click behaves normally.
Copy and paste the following into your Claude Code chat — it will handle everything:
Install the Claude Code UI extras (UI enhancements).
Do all these steps:
Step 1 — Create a scripts directory in the current working directory (if it doesn't exist).
Step 2 — Download the install script from the repo and save it to scripts/:
curl -o scripts/inject-ui.sh https://raw.githubusercontent.com/arielmoatti/claude-code-ui-extras/main/inject-ui.sh
Step 3 — Run the script once (`bash scripts/inject-ui.sh`). This patches the webview and registers a SessionStart hook in ~/.claude/settings.json so the injection re-applies after every extension update.
Step 4 — Ask me to do Reload Window (Ctrl+Shift+P → Developer: Reload Window).
The script will:
- Inject the UI enhancements into Claude Code's webview
- Register a
SessionStarthook so the injection is re-applied automatically after every Claude Code update
- Download
inject-ui.shto your project'sscripts/directory - Run
bash scripts/inject-ui.sh - Reload VSCode window (
Ctrl+Shift+P → Developer: Reload Window)
Edit scripts/ui.conf - supported parameters include:
# User message border color (any valid CSS color)
border_color=rgba(249,131,131,0.5)
# Show Context Window badge (true / false)
show_context_window=true
# Max width of code blocks - the box soft-wraps instead of scrolling sideways
# (any CSS width: 50%, 65%, 720px; or 100% / none to disable). Default: 50%
code_block_max_width=50%
# Minimize button on the question box (true / false) - default: on
question_minimize=true
# Collapse/Expand button on user messages (true / false) - default: on
user_msg_minimize=true
# Collapse height of long user messages, in px (default: 175, ~8 lines)
user_msg_max_height=175
Then re-run bash scripts/inject-ui.sh and reload VSCode.
The CSS fixes the display for everyone (wrapping instead of a horizontal scrollbar). But if the text you copy from a block carries artificial line breaks, those come along with it. To get clean copied text too, ask Claude to stop hard-wrapping prose inside blocks. Add this prompt to ~/.claude/CLAUDE.md (applies every session), or paste it at the start of a chat:
Inside fenced ``` blocks that hold prose/text for copy-paste (messages, emails, posts), do not hard-wrap: one paragraph per line, rely on soft-wrap, blank line between paragraphs. In blocks holding real code, JSON, tables, or lists, keep newlines exactly as written.
Automatic (recommended). One PowerShell run removes everything cleanly - every injected block from all webview bundles, the installed scripts, and the hooks from settings.json - backing up every file it edits:
irm https://raw.githubusercontent.com/arielmoatti/claude-code-ui-extras/main/uninstall.ps1 | iexThen Reload Window. The script is generic (it strips any Claude UI Extras ... Start/End block, so it stays valid for future versions) and never touches the separate RTL pack. Want to inspect it first? See uninstall.ps1.
Manual (if you prefer). Delete the injected block from webview/index.js and webview/index.css (look for /* Claude UI Extras Patch Start */), then remove the SessionStart hook from ~/.claude/settings.json.













