diff --git a/.changeset/review-comment-previews.md b/.changeset/review-comment-previews.md new file mode 100644 index 00000000000..3398313fe26 --- /dev/null +++ b/.changeset/review-comment-previews.md @@ -0,0 +1,5 @@ +--- +"kilo-code": patch +--- + +Show review comment text directly in the chat message instead of hiding it behind a click. Each comment is now a row with the file, line and a two-line preview, expands in place to reveal the full body and code snippet, and long lists collapse to the first few comments with a "Show more" toggle. Opening a source file from a review comment now uses a native VS Code editor tab. diff --git a/packages/kilo-docs/public/img/screenshot-tests/kilo-vscode/visual-regression/chat/user-message-many-review-comments-chromium-linux.png b/packages/kilo-docs/public/img/screenshot-tests/kilo-vscode/visual-regression/chat/user-message-many-review-comments-chromium-linux.png new file mode 100644 index 00000000000..f96309b0532 --- /dev/null +++ b/packages/kilo-docs/public/img/screenshot-tests/kilo-vscode/visual-regression/chat/user-message-many-review-comments-chromium-linux.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbdc00f26ece2fc49d25c26b128b9f69fa562c2c0b2d54c4fd88f8c476145046 +size 25076 diff --git a/packages/kilo-docs/public/img/screenshot-tests/kilo-vscode/visual-regression/chat/user-message-review-comments-chromium-linux.png b/packages/kilo-docs/public/img/screenshot-tests/kilo-vscode/visual-regression/chat/user-message-review-comments-chromium-linux.png index 606fab3eb74..fda93ac12c9 100644 --- a/packages/kilo-docs/public/img/screenshot-tests/kilo-vscode/visual-regression/chat/user-message-review-comments-chromium-linux.png +++ b/packages/kilo-docs/public/img/screenshot-tests/kilo-vscode/visual-regression/chat/user-message-review-comments-chromium-linux.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ae8197b9d63cf977fa5112a1b02eb48bc22a1577b4dee15abd475805f0db5b0 -size 11769 +oid sha256:efeff70e266d94ae5b40b05694eb2011c84d2da9e91eafe2dc01f775797e9135 +size 19048 diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/ar.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/ar.ts index f17534484d4..e08ca790017 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/ar.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/ar.ts @@ -181,18 +181,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "إرسال الكل إلى الدردشة ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "تعليق المراجعة", "agentManager.review.inlineCount": "تعليقات المراجعة ({{count}})", + "agentManager.review.fileCount": "{{count}} ملفًا", + "agentManager.review.showMore": "إظهار {{count}} أخرى", + "agentManager.review.showLess": "إظهار أقل", "agentManager.review.clearAll": "مسح الكل", "agentManager.review.commentOnLine": "تعليق على السطر {{line}}", "agentManager.review.editCommentOnLine": "تعديل التعليق على السطر {{line}}", "agentManager.review.commentPlaceholder": "اترك تعليقًا...", "agentManager.review.commentAction": "تعليق", "agentManager.review.sendToChat": "إرسال إلى الدردشة", - "agentManager.review.metaFile": "الملف", - "agentManager.review.metaLine": "السطر", - "agentManager.review.metaComment": "تعليق المستخدم", - "agentManager.review.metaAuthor": "المؤلف", "agentManager.pr.comment.title": "التعليقات", "agentManager.pr.copyLink": "نسخ رابط PR", "agentManager.pr.comment.unresolvedCount": "{{count}} غير محلولة", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/br.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/br.ts index b8604ec7298..8c391b1c962 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/br.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/br.ts @@ -184,18 +184,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "Enviar tudo para o chat ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "Comentário de revisão", "agentManager.review.inlineCount": "Comentários de revisão ({{count}})", + "agentManager.review.fileCount": "{{count}} arquivos", + "agentManager.review.showMore": "Mostrar mais {{count}}", + "agentManager.review.showLess": "Mostrar menos", "agentManager.review.clearAll": "Limpar tudo", "agentManager.review.commentOnLine": "Comentar na linha {{line}}", "agentManager.review.editCommentOnLine": "Editar comentário na linha {{line}}", "agentManager.review.commentPlaceholder": "Deixe um comentário...", "agentManager.review.commentAction": "Comentar", "agentManager.review.sendToChat": "Enviar para o chat", - "agentManager.review.metaFile": "Arquivo", - "agentManager.review.metaLine": "Linha", - "agentManager.review.metaComment": "Comentário do usuário", - "agentManager.review.metaAuthor": "Autor", "agentManager.pr.comment.title": "Comentários", "agentManager.pr.copyLink": "Copiar link do PR", "agentManager.pr.comment.unresolvedCount": "{{count}} não resolvidos", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/bs.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/bs.ts index e22dc11ff21..e9860c80c7f 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/bs.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/bs.ts @@ -184,18 +184,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "Pošalji sve u chat ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "Komentar pregleda", "agentManager.review.inlineCount": "Komentari pregleda ({{count}})", + "agentManager.review.fileCount": "{{count}} datoteka", + "agentManager.review.showMore": "Prikaži još {{count}}", + "agentManager.review.showLess": "Prikaži manje", "agentManager.review.clearAll": "Očisti sve", "agentManager.review.commentOnLine": "Komentar na liniji {{line}}", "agentManager.review.editCommentOnLine": "Uredi komentar na liniji {{line}}", "agentManager.review.commentPlaceholder": "Ostavi komentar...", "agentManager.review.commentAction": "Komentariši", "agentManager.review.sendToChat": "Pošalji u chat", - "agentManager.review.metaFile": "Datoteka", - "agentManager.review.metaLine": "Linija", - "agentManager.review.metaComment": "Komentar korisnika", - "agentManager.review.metaAuthor": "Autor", "agentManager.pr.comment.title": "Komentari", "agentManager.pr.copyLink": "Kopiraj PR vezu", "agentManager.pr.comment.unresolvedCount": "{{count}} neriješenih", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/da.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/da.ts index 7f98c83c705..22b7e3aa2d6 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/da.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/da.ts @@ -185,18 +185,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "Send alt til chat ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "Review-kommentar", "agentManager.review.inlineCount": "Review-kommentarer ({{count}})", + "agentManager.review.fileCount": "{{count}} filer", + "agentManager.review.showMore": "Vis {{count}} mere", + "agentManager.review.showLess": "Vis mindre", "agentManager.review.clearAll": "Ryd alle", "agentManager.review.commentOnLine": "Kommenter på linje {{line}}", "agentManager.review.editCommentOnLine": "Rediger kommentar på linje {{line}}", "agentManager.review.commentPlaceholder": "Skriv en kommentar...", "agentManager.review.commentAction": "Kommenter", "agentManager.review.sendToChat": "Send til chat", - "agentManager.review.metaFile": "Fil", - "agentManager.review.metaLine": "Linje", - "agentManager.review.metaComment": "Brugerkommentar", - "agentManager.review.metaAuthor": "Forfatter", "agentManager.pr.comment.title": "Kommentarer", "agentManager.pr.copyLink": "Kopiér PR-link", "agentManager.pr.comment.unresolvedCount": "{{count}} uløste", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/de.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/de.ts index 870f4ef0afa..ca2ffca0629 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/de.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/de.ts @@ -186,18 +186,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "Alles an den Chat senden ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "Review-Kommentar", "agentManager.review.inlineCount": "Review-Kommentare ({{count}})", + "agentManager.review.fileCount": "{{count}} Dateien", + "agentManager.review.showMore": "{{count}} weitere anzeigen", + "agentManager.review.showLess": "Weniger anzeigen", "agentManager.review.clearAll": "Alle löschen", "agentManager.review.commentOnLine": "Kommentar zu Zeile {{line}}", "agentManager.review.editCommentOnLine": "Kommentar zu Zeile {{line}} bearbeiten", "agentManager.review.commentPlaceholder": "Kommentar hinterlassen...", "agentManager.review.commentAction": "Kommentieren", "agentManager.review.sendToChat": "An Chat senden", - "agentManager.review.metaFile": "Datei", - "agentManager.review.metaLine": "Zeile", - "agentManager.review.metaComment": "Benutzerkommentar", - "agentManager.review.metaAuthor": "Autor", "agentManager.pr.comment.title": "Kommentare", "agentManager.pr.copyLink": "PR-Link kopieren", "agentManager.pr.comment.unresolvedCount": "{{count}} ungelöst", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/en.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/en.ts index 98ac2cbb486..51f4111f143 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/en.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/en.ts @@ -187,18 +187,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "Send all to chat ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "Review comment", "agentManager.review.inlineCount": "Review comments ({{count}})", + "agentManager.review.fileCount": "{{count}} files", + "agentManager.review.showMore": "Show {{count}} more", + "agentManager.review.showLess": "Show less", "agentManager.review.clearAll": "Clear all", "agentManager.review.commentOnLine": "Comment on line {{line}}", "agentManager.review.editCommentOnLine": "Edit comment on line {{line}}", "agentManager.review.commentPlaceholder": "Leave a comment...", "agentManager.review.commentAction": "Comment", "agentManager.review.sendToChat": "Send to chat", - "agentManager.review.metaFile": "File", - "agentManager.review.metaLine": "Line", - "agentManager.review.metaComment": "User comment", - "agentManager.review.metaAuthor": "Author", "agentManager.pr.comment.title": "Comments", "agentManager.pr.copyLink": "Copy PR link", "agentManager.pr.comment.unresolvedCount": "{{count}} unresolved", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/es.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/es.ts index 361ddc45642..7de474be28a 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/es.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/es.ts @@ -185,18 +185,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "Enviar todo al chat ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "Comentario de revisión", "agentManager.review.inlineCount": "Comentarios de revisión ({{count}})", + "agentManager.review.fileCount": "{{count}} archivos", + "agentManager.review.showMore": "Mostrar {{count}} más", + "agentManager.review.showLess": "Mostrar menos", "agentManager.review.clearAll": "Borrar todo", "agentManager.review.commentOnLine": "Comentar en la línea {{line}}", "agentManager.review.editCommentOnLine": "Editar comentario en la línea {{line}}", "agentManager.review.commentPlaceholder": "Deja un comentario...", "agentManager.review.commentAction": "Comentar", "agentManager.review.sendToChat": "Enviar al chat", - "agentManager.review.metaFile": "Archivo", - "agentManager.review.metaLine": "Línea", - "agentManager.review.metaComment": "Comentario del usuario", - "agentManager.review.metaAuthor": "Autor", "agentManager.pr.comment.title": "Comentarios", "agentManager.pr.copyLink": "Copiar enlace del PR", "agentManager.pr.comment.unresolvedCount": "{{count}} sin resolver", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/fa.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/fa.ts index c4bafd3fabe..d09a8c725b1 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/fa.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/fa.ts @@ -188,18 +188,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "ارسال همه به چت ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "بررسی نظر", "agentManager.review.inlineCount": "نظرات بررسی ({{count}})", + "agentManager.review.fileCount": "{{count}} فایل", + "agentManager.review.showMore": "نمایش {{count}} مورد بیشتر", + "agentManager.review.showLess": "نمایش کمتر", "agentManager.review.clearAll": "پاک کردن همه", "agentManager.review.commentOnLine": "نظر در خط {{line}}", "agentManager.review.editCommentOnLine": "ویرایش نظر در خط {{line}}", "agentManager.review.commentPlaceholder": "یک نظر بگذارید...", "agentManager.review.commentAction": "نظر", "agentManager.review.sendToChat": "ارسال به چت", - "agentManager.review.metaFile": "فایل", - "agentManager.review.metaLine": "خط", - "agentManager.review.metaComment": "نظر کاربر", - "agentManager.review.metaAuthor": "نویسنده", "agentManager.pr.comment.title": "نظرات", "agentManager.pr.copyLink": "کپی پیوند PR", "agentManager.pr.comment.unresolvedCount": "{{count}} حل‌نشده", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/fr.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/fr.ts index 7668580f55e..8ed1f2d088e 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/fr.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/fr.ts @@ -186,18 +186,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "Tout envoyer au chat ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "Commentaire de révision", "agentManager.review.inlineCount": "Commentaires de révision ({{count}})", + "agentManager.review.fileCount": "{{count}} fichiers", + "agentManager.review.showMore": "Afficher {{count}} de plus", + "agentManager.review.showLess": "Afficher moins", "agentManager.review.clearAll": "Tout effacer", "agentManager.review.commentOnLine": "Commenter la ligne {{line}}", "agentManager.review.editCommentOnLine": "Modifier le commentaire de la ligne {{line}}", "agentManager.review.commentPlaceholder": "Laisser un commentaire...", "agentManager.review.commentAction": "Commenter", "agentManager.review.sendToChat": "Envoyer au chat", - "agentManager.review.metaFile": "Fichier", - "agentManager.review.metaLine": "Ligne", - "agentManager.review.metaComment": "Commentaire de l'utilisateur", - "agentManager.review.metaAuthor": "Auteur", "agentManager.pr.comment.title": "Commentaires", "agentManager.pr.copyLink": "Copier le lien du PR", "agentManager.pr.comment.unresolvedCount": "{{count}} non résolus", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/it.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/it.ts index 306f4397772..341f8971594 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/it.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/it.ts @@ -191,18 +191,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "Invia tutto alla chat ({{count}})", "agentManager.review.sendAllShortcut.mac": "Cmd+Invio", "agentManager.review.sendAllShortcut.other": "Ctrl+Invio", - "agentManager.review.modalTitle": "Commento di revisione", "agentManager.review.inlineCount": "Commenti di revisione ({{count}})", + "agentManager.review.fileCount": "{{count}} file", + "agentManager.review.showMore": "Mostra altri {{count}}", + "agentManager.review.showLess": "Mostra meno", "agentManager.review.clearAll": "Cancella tutto", "agentManager.review.commentOnLine": "Commenta la riga {{line}}", "agentManager.review.editCommentOnLine": "Modifica commento alla riga {{line}}", "agentManager.review.commentPlaceholder": "Lascia un commento...", "agentManager.review.commentAction": "Commenta", "agentManager.review.sendToChat": "Invia alla chat", - "agentManager.review.metaFile": "File", - "agentManager.review.metaLine": "Riga", - "agentManager.review.metaComment": "Commento utente", - "agentManager.review.metaAuthor": "Autore", "agentManager.pr.comment.title": "Commenti", "agentManager.pr.copyLink": "Copia link PR", "agentManager.pr.comment.unresolvedCount": "{{count}} non risolti", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/ja.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/ja.ts index 4938e07895b..5a965a77f28 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/ja.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/ja.ts @@ -185,18 +185,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "すべてをチャットに送信 ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "レビューコメント", "agentManager.review.inlineCount": "レビューコメント ({{count}})", + "agentManager.review.fileCount": "{{count}} ファイル", + "agentManager.review.showMore": "さらに {{count}} 件を表示", + "agentManager.review.showLess": "表示を減らす", "agentManager.review.clearAll": "すべてクリア", "agentManager.review.commentOnLine": "{{line}} 行目にコメント", "agentManager.review.editCommentOnLine": "{{line}} 行目のコメントを編集", "agentManager.review.commentPlaceholder": "コメントを入力...", "agentManager.review.commentAction": "コメント", "agentManager.review.sendToChat": "チャットに送信", - "agentManager.review.metaFile": "ファイル", - "agentManager.review.metaLine": "行", - "agentManager.review.metaComment": "ユーザーコメント", - "agentManager.review.metaAuthor": "作成者", "agentManager.pr.comment.title": "コメント", "agentManager.pr.copyLink": "PRリンクをコピー", "agentManager.pr.comment.unresolvedCount": "{{count}} 件未解決", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/ko.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/ko.ts index 60ab9d8a9c8..4d72ff58f0e 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/ko.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/ko.ts @@ -183,18 +183,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "모두 채팅으로 보내기 ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "리뷰 코멘트", "agentManager.review.inlineCount": "리뷰 코멘트 ({{count}})", + "agentManager.review.fileCount": "{{count}}개 파일", + "agentManager.review.showMore": "{{count}}개 더 보기", + "agentManager.review.showLess": "간략히 보기", "agentManager.review.clearAll": "모두 지우기", "agentManager.review.commentOnLine": "{{line}}줄에 댓글", "agentManager.review.editCommentOnLine": "{{line}}줄 댓글 편집", "agentManager.review.commentPlaceholder": "댓글을 남기세요...", "agentManager.review.commentAction": "댓글", "agentManager.review.sendToChat": "채팅으로 보내기", - "agentManager.review.metaFile": "파일", - "agentManager.review.metaLine": "라인", - "agentManager.review.metaComment": "사용자 코멘트", - "agentManager.review.metaAuthor": "작성자", "agentManager.pr.comment.title": "댓글", "agentManager.pr.copyLink": "PR 링크 복사", "agentManager.pr.comment.unresolvedCount": "{{count}}개 미해결", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/nl.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/nl.ts index 28fc682c601..614cac19821 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/nl.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/nl.ts @@ -190,18 +190,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "Alles naar chat sturen ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "Opmerking bekijken", "agentManager.review.inlineCount": "Opmerkingen bekijken ({{count}})", + "agentManager.review.fileCount": "{{count}} bestanden", + "agentManager.review.showMore": "{{count}} meer weergeven", + "agentManager.review.showLess": "Minder weergeven", "agentManager.review.clearAll": "Alles wissen", "agentManager.review.commentOnLine": "Opmerking op regel {{line}}", "agentManager.review.editCommentOnLine": "Opmerking op regel {{line}} bewerken", "agentManager.review.commentPlaceholder": "Laat een opmerking achter...", "agentManager.review.commentAction": "Opmerking", "agentManager.review.sendToChat": "Naar chat sturen", - "agentManager.review.metaFile": "Bestand", - "agentManager.review.metaLine": "Regel", - "agentManager.review.metaComment": "Gebruikersopmerking", - "agentManager.review.metaAuthor": "Auteur", "agentManager.pr.comment.title": "Opmerkingen", "agentManager.pr.copyLink": "PR-link kopiëren", "agentManager.pr.comment.unresolvedCount": "{{count}} onopgelost", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/no.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/no.ts index ac00ffa1174..8012916aeb2 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/no.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/no.ts @@ -182,18 +182,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "Send alt til chat ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "Review-kommentar", "agentManager.review.inlineCount": "Review-kommentarer ({{count}})", + "agentManager.review.fileCount": "{{count}} filer", + "agentManager.review.showMore": "Vis {{count}} flere", + "agentManager.review.showLess": "Vis færre", "agentManager.review.clearAll": "Fjern alle", "agentManager.review.commentOnLine": "Kommenter på linje {{line}}", "agentManager.review.editCommentOnLine": "Rediger kommentar på linje {{line}}", "agentManager.review.commentPlaceholder": "Legg igjen en kommentar...", "agentManager.review.commentAction": "Kommenter", "agentManager.review.sendToChat": "Send til chat", - "agentManager.review.metaFile": "Fil", - "agentManager.review.metaLine": "Linje", - "agentManager.review.metaComment": "Brukerkommentar", - "agentManager.review.metaAuthor": "Forfatter", "agentManager.pr.comment.title": "Kommentarer", "agentManager.pr.copyLink": "Kopier PR-lenke", "agentManager.pr.comment.unresolvedCount": "{{count}} uløste", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/pl.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/pl.ts index 604fe538f5a..387fe9eb750 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/pl.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/pl.ts @@ -184,18 +184,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "Wyślij wszystko do czatu ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "Komentarz do przeglądu", "agentManager.review.inlineCount": "Komentarze do przeglądu ({{count}})", + "agentManager.review.fileCount": "{{count}} plików", + "agentManager.review.showMore": "Pokaż {{count}} więcej", + "agentManager.review.showLess": "Pokaż mniej", "agentManager.review.clearAll": "Wyczyść wszystko", "agentManager.review.commentOnLine": "Skomentuj linię {{line}}", "agentManager.review.editCommentOnLine": "Edytuj komentarz do linii {{line}}", "agentManager.review.commentPlaceholder": "Zostaw komentarz...", "agentManager.review.commentAction": "Komentuj", "agentManager.review.sendToChat": "Wyślij do czatu", - "agentManager.review.metaFile": "Plik", - "agentManager.review.metaLine": "Linia", - "agentManager.review.metaComment": "Komentarz użytkownika", - "agentManager.review.metaAuthor": "Autor", "agentManager.pr.comment.title": "Komentarze", "agentManager.pr.copyLink": "Kopiuj link do PR", "agentManager.pr.comment.unresolvedCount": "{{count}} nierozwiązanych", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/ru.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/ru.ts index eaec5e77e82..1e5f479c82f 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/ru.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/ru.ts @@ -185,18 +185,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "Отправить всё в чат ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "Комментарий к ревью", "agentManager.review.inlineCount": "Комментарии к ревью ({{count}})", + "agentManager.review.fileCount": "{{count}} файлов", + "agentManager.review.showMore": "Показать ещё {{count}}", + "agentManager.review.showLess": "Показать меньше", "agentManager.review.clearAll": "Очистить всё", "agentManager.review.commentOnLine": "Комментарий к строке {{line}}", "agentManager.review.editCommentOnLine": "Редактировать комментарий к строке {{line}}", "agentManager.review.commentPlaceholder": "Оставьте комментарий...", "agentManager.review.commentAction": "Комментировать", "agentManager.review.sendToChat": "Отправить в чат", - "agentManager.review.metaFile": "Файл", - "agentManager.review.metaLine": "Строка", - "agentManager.review.metaComment": "Комментарий пользователя", - "agentManager.review.metaAuthor": "Автор", "agentManager.pr.comment.title": "Комментарии", "agentManager.pr.copyLink": "Копировать ссылку на PR", "agentManager.pr.comment.unresolvedCount": "{{count}} нерешённых", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/th.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/th.ts index 8a49bd7d676..1c911bbb50b 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/th.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/th.ts @@ -179,18 +179,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "ส่งทั้งหมดไปยังแชท ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "ความคิดเห็นการตรวจสอบ", "agentManager.review.inlineCount": "ความคิดเห็นการตรวจสอบ ({{count}})", + "agentManager.review.fileCount": "{{count}} ไฟล์", + "agentManager.review.showMore": "แสดงเพิ่มอีก {{count}} รายการ", + "agentManager.review.showLess": "แสดงน้อยลง", "agentManager.review.clearAll": "ล้างทั้งหมด", "agentManager.review.commentOnLine": "แสดงความคิดเห็นที่บรรทัด {{line}}", "agentManager.review.editCommentOnLine": "แก้ไขความคิดเห็นที่บรรทัด {{line}}", "agentManager.review.commentPlaceholder": "แสดงความคิดเห็น...", "agentManager.review.commentAction": "แสดงความคิดเห็น", "agentManager.review.sendToChat": "ส่งไปยังแชท", - "agentManager.review.metaFile": "ไฟล์", - "agentManager.review.metaLine": "บรรทัด", - "agentManager.review.metaComment": "ความคิดเห็นของผู้ใช้", - "agentManager.review.metaAuthor": "ผู้เขียน", "agentManager.pr.comment.title": "ความคิดเห็น", "agentManager.pr.copyLink": "คัดลอกลิงก์ PR", "agentManager.pr.comment.unresolvedCount": "ยังไม่แก้ไข {{count}} รายการ", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/tr.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/tr.ts index c591acfbe07..ba7b941dc18 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/tr.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/tr.ts @@ -192,18 +192,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "Tümünü sohbete gönder ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "Yorumu gözden geçir", "agentManager.review.inlineCount": "Yorumları gözden geçir ({{count}})", + "agentManager.review.fileCount": "{{count}} dosya", + "agentManager.review.showMore": "{{count}} tane daha göster", + "agentManager.review.showLess": "Daha az göster", "agentManager.review.clearAll": "Tümünü temizle", "agentManager.review.commentOnLine": "{{line}}. satıra yorum yap", "agentManager.review.editCommentOnLine": "{{line}}. satırdaki yorumu düzenle", "agentManager.review.commentPlaceholder": "Bir yorum bırakın...", "agentManager.review.commentAction": "Yorum Yap", "agentManager.review.sendToChat": "Sohbete gönder", - "agentManager.review.metaFile": "Dosya", - "agentManager.review.metaLine": "Satır", - "agentManager.review.metaComment": "Kullanıcı yorumu", - "agentManager.review.metaAuthor": "Yazar", "agentManager.pr.comment.title": "Yorumlar", "agentManager.pr.copyLink": "PR bağlantısını kopyala", "agentManager.pr.comment.unresolvedCount": "{{count}} çözülmemiş", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/uk.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/uk.ts index e7dcf15eab8..00275961296 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/uk.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/uk.ts @@ -193,18 +193,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "Надіслати все до чату ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "Перегляд коментаря", "agentManager.review.inlineCount": "Переглянути коментарі ({{count}})", + "agentManager.review.fileCount": "{{count}} файлів", + "agentManager.review.showMore": "Показати ще {{count}}", + "agentManager.review.showLess": "Показати менше", "agentManager.review.clearAll": "Очистити все", "agentManager.review.commentOnLine": "Коментар до рядка {{line}}", "agentManager.review.editCommentOnLine": "Редагувати коментар до рядка {{line}}", "agentManager.review.commentPlaceholder": "Залишити коментар...", "agentManager.review.commentAction": "Коментувати", "agentManager.review.sendToChat": "Надіслати до чату", - "agentManager.review.metaFile": "Файл", - "agentManager.review.metaLine": "Рядок", - "agentManager.review.metaComment": "Коментар користувача", - "agentManager.review.metaAuthor": "Автор", "agentManager.pr.comment.title": "Коментарі", "agentManager.pr.copyLink": "Копіювати посилання на PR", "agentManager.pr.comment.unresolvedCount": "{{count}} невирішених", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/zh.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/zh.ts index b616af3abfa..45e5f962326 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/zh.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/zh.ts @@ -177,18 +177,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "全部发送到聊天 ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "审查评论", "agentManager.review.inlineCount": "审查评论 ({{count}})", + "agentManager.review.fileCount": "{{count}} 个文件", + "agentManager.review.showMore": "显示更多 {{count}} 条", + "agentManager.review.showLess": "显示更少", "agentManager.review.clearAll": "全部清除", "agentManager.review.commentOnLine": "在第 {{line}} 行评论", "agentManager.review.editCommentOnLine": "编辑第 {{line}} 行评论", "agentManager.review.commentPlaceholder": "留下评论...", "agentManager.review.commentAction": "评论", "agentManager.review.sendToChat": "发送到聊天", - "agentManager.review.metaFile": "文件", - "agentManager.review.metaLine": "行", - "agentManager.review.metaComment": "用户评论", - "agentManager.review.metaAuthor": "作者", "agentManager.pr.comment.title": "评论", "agentManager.pr.copyLink": "复制 PR 链接", "agentManager.pr.comment.unresolvedCount": "{{count}} 个未解决", diff --git a/packages/kilo-vscode/webview-ui/agent-manager/i18n/zht.ts b/packages/kilo-vscode/webview-ui/agent-manager/i18n/zht.ts index 6ac5ed1493c..3ad2fc1e835 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/i18n/zht.ts +++ b/packages/kilo-vscode/webview-ui/agent-manager/i18n/zht.ts @@ -177,18 +177,16 @@ export const dict = { "agentManager.review.sendAllToChatWithCount": "全部傳送到聊天 ({{count}})", "agentManager.review.sendAllShortcut.mac": "⌘Enter", "agentManager.review.sendAllShortcut.other": "Ctrl+Enter", - "agentManager.review.modalTitle": "審查評論", "agentManager.review.inlineCount": "審查評論 ({{count}})", + "agentManager.review.fileCount": "{{count}} 個檔案", + "agentManager.review.showMore": "顯示更多 {{count}} 則", + "agentManager.review.showLess": "顯示更少", "agentManager.review.clearAll": "全部清除", "agentManager.review.commentOnLine": "在第 {{line}} 行留言", "agentManager.review.editCommentOnLine": "編輯第 {{line}} 行留言", "agentManager.review.commentPlaceholder": "留下留言...", "agentManager.review.commentAction": "留言", "agentManager.review.sendToChat": "傳送到聊天", - "agentManager.review.metaFile": "檔案", - "agentManager.review.metaLine": "行", - "agentManager.review.metaComment": "使用者評論", - "agentManager.review.metaAuthor": "作者", "agentManager.pr.comment.title": "留言", "agentManager.pr.copyLink": "複製 PR 連結", "agentManager.pr.comment.unresolvedCount": "{{count}} 個未解決", diff --git a/packages/kilo-vscode/webview-ui/src/components/chat/ReviewComments.tsx b/packages/kilo-vscode/webview-ui/src/components/chat/ReviewComments.tsx index 56412887c4a..42fd4b392b7 100644 --- a/packages/kilo-vscode/webview-ui/src/components/chat/ReviewComments.tsx +++ b/packages/kilo-vscode/webview-ui/src/components/chat/ReviewComments.tsx @@ -1,11 +1,9 @@ -import { For, Show, type Component } from "solid-js" +import { For, Show, createMemo, createSignal, type Component } from "solid-js" import { Button } from "@kilocode/kilo-ui/button" -import { Dialog } from "@kilocode/kilo-ui/dialog" import { Icon } from "@kilocode/kilo-ui/icon" import { IconButton } from "@kilocode/kilo-ui/icon-button" import { Markdown } from "@kilocode/kilo-ui/markdown" import { Tooltip } from "@kilocode/kilo-ui/tooltip" -import { useDialog } from "@kilocode/kilo-ui/context/dialog" import { isPRReviewComment } from "../../../../src/shared/review-comments" import { useLanguage } from "../../context/language" import { useVSCode } from "../../context/vscode" @@ -20,94 +18,51 @@ interface ReviewCommentsProps { onClear?: () => void } +/** Rows rendered before the "show more" toggle takes over. */ +const PREVIEW = 3 +/** Rows after which the expanded list becomes internally scrollable. */ +const SCROLL = 6 + export const ReviewComments: Component = (props) => { const language = useLanguage() const vscode = useVSCode() - const dialog = useDialog() + const [open, setOpen] = createSignal(true) + const [all, setAll] = createSignal(false) + const [full, setFull] = createSignal([]) + const author = (item: ReviewCommentEntry) => (isPRReviewComment(item) ? item.author : "") const side = (item: ReviewCommentEntry) => (isPRReviewComment(item) ? "" : item.side === "deletions" ? "-" : "+") const line = (item: ReviewCommentEntry) => (item.line ? `${side(item)}${item.line}` : "") const body = (item: ReviewCommentEntry) => (isPRReviewComment(item) ? item.body : item.comment) const snippet = (item: ReviewCommentEntry) => (isPRReviewComment(item) ? item.diffHunk : item.selectedText) const label = (item: ReviewCommentEntry) => (item.file ? fileName(item.file) : `@${author(item)}`) - const title = (item: ReviewCommentEntry) => { - const at = line(item) - return at ? `${label(item)} ${at}` : label(item) - } + const outdated = (item: ReviewCommentEntry) => isPRReviewComment(item) && item.outdated === true - const open = (item: ReviewCommentEntry) => { + const files = createMemo(() => new Set(props.comments.filter((item) => item.file).map((item) => item.file)).size) + // Collapsing a single extra row is not worth a toggle, so only hide from two up. + const hidden = createMemo(() => (props.comments.length > PREVIEW + 1 ? props.comments.length - PREVIEW : 0)) + const rows = createMemo(() => (hidden() > 0 && !all() ? props.comments.slice(0, PREVIEW) : props.comments)) + + const toggle = (id: string) => + setFull((prev) => (prev.includes(id) ? prev.filter((entry) => entry !== id) : [...prev, id])) + + const reveal = (item: ReviewCommentEntry) => { if (!item.file) return + // An outdated PR thread is anchored to a line that has since moved, so + // jumping there lands on unrelated code. Open the file at the top instead. + const at = outdated(item) ? undefined : item.line const event = new CustomEvent("kilo:open-file", { cancelable: true, - detail: { filePath: item.file, line: item.line, column: 1, sessionID: props.sessionID }, + detail: { filePath: item.file, line: at, column: 1, sessionID: props.sessionID }, }) if (window.dispatchEvent(event)) vscode.postMessage({ type: "openFile", filePath: item.file, - line: item.line, + line: at, column: 1, sessionID: props.sessionID, }) - dialog.close() - } - - const show = (item: ReviewCommentEntry) => { - dialog.show(() => ( - -
-
- {title(item)} - - - open(item)} - /> - - -
- -
- - {(login) => ( - <> - {language.t("agentManager.review.metaAuthor")} - @{login()} - - )} - - - {(file) => ( - <> - {language.t("agentManager.review.metaFile")} - {file()} - - )} - - - {(value) => ( - <> - {language.t("agentManager.review.metaLine")} - L{value()} - - )} - - {language.t("agentManager.review.metaComment")} - - - - - -
- - {(value) =>
{value()}
}
-
-
- )) } return ( @@ -117,48 +72,110 @@ export const ReviewComments: Component = (props) => { data-component="review-comments" >
- - {language.t("agentManager.review.inlineCount", { count: props.comments.length })} - +
-
- - {(item) => ( -
- - - - -
- )} -
-
+ + + + reveal(item)} + /> + + + + + + + + +
+ {(file) => {file()}} +
+ + + +
+ + {(value) =>
{value()}
} +
+
+
+ + )} + + + + 0}> + + + ) } diff --git a/packages/kilo-vscode/webview-ui/src/stories/chat.stories.tsx b/packages/kilo-vscode/webview-ui/src/stories/chat.stories.tsx index 021d5e8f8bf..2594b5b0ed3 100644 --- a/packages/kilo-vscode/webview-ui/src/stories/chat.stories.tsx +++ b/packages/kilo-vscode/webview-ui/src/stories/chat.stories.tsx @@ -30,6 +30,7 @@ import type { Part, QuestionRequest, ReviewComment, + ReviewCommentEntry, SessionModelUsage, SuggestionRequest, TodoItem, @@ -236,6 +237,29 @@ export const ChatViewSessionDockStability: Story = { }, } +/** Builds the user message a review-comment send produces: markdown prefix + review metadata. */ +function reviewMessage(comments: ReviewCommentEntry[]) { + const prefix = formatReviewCommentsMarkdown(comments) + const message: Message = { + id: "review-user-message", + sessionID: SESSION_ID, + role: "user", + createdAt: new Date(0).toISOString(), + time: { created: 0 }, + } + const parts: Part[] = [ + { + id: "review-user-part", + sessionID: SESSION_ID, + messageID: message.id, + type: "text", + text: `${prefix}\n\nPlease address these review comments.`, + metadata: reviewMetadata({ version: 1, comments }), + }, + ] + return +} + export const UserMessageReviewComments: Story = { name: "User message — interactive review comments", render: () => { @@ -253,36 +277,38 @@ export const UserMessageReviewComments: Story = { file: "resources/messages/KiloBundle_bs.properties", side: "deletions", line: 235, - comment: "Translate the modified setting description.", + comment: + "Translate the modified setting description. The Bosnian bundle still ships the English sentence, so the settings panel shows mixed languages for anyone running a localized IDE.", selectedText: "settings.models.smallModel.description=The lightweight model used for quick tasks.", }, ] - const prefix = formatReviewCommentsMarkdown(comments) - const text = `${prefix}\n\nPlease address these review comments.` - const review = { version: 1 as const, comments } - const message: Message = { - id: "review-user-message", - sessionID: SESSION_ID, - role: "user", - createdAt: new Date(0).toISOString(), - time: { created: 0 }, - } - const parts: Part[] = [ - { - id: "review-user-part", - sessionID: SESSION_ID, - messageID: message.id, - type: "text", - text, - metadata: reviewMetadata(review), - }, - ] return ( -
- -
+
{reviewMessage(comments)}
+
+ ) + }, +} + +/** + * Many local review comments at once. Locks in the collapsed preview + "show + * more" behavior so a large paste cannot take over the transcript. + */ +export const UserMessageManyReviewComments: Story = { + name: "User message — many review comments", + render: () => { + const local: ReviewCommentEntry[] = Array.from({ length: 8 }, (_, index) => ({ + id: `local-${index}`, + file: `src/agent-manager/handlers/worktree-${index}.ts`, + side: index % 2 === 0 ? "additions" : "deletions", + line: 40 + index * 17, + comment: `Guard the ${index % 2 === 0 ? "apply" : "discard"} path against a missing worktree before touching git.`, + selectedText: `const worktree = state.worktrees[${index}]`, + })) + return ( + +
{reviewMessage(local)}
) }, diff --git a/packages/kilo-vscode/webview-ui/src/styles/high-contrast.css b/packages/kilo-vscode/webview-ui/src/styles/high-contrast.css index a032dede655..48dbd1075d7 100644 --- a/packages/kilo-vscode/webview-ui/src/styles/high-contrast.css +++ b/packages/kilo-vscode/webview-ui/src/styles/high-contrast.css @@ -11,7 +11,7 @@ body.vscode-high-contrast-light { .feedback-button, .startup-error-retry, .image-attachment-remove, - .prompt-review-chip-remove, + .prompt-review-row-remove, .session-tab-bar .am-tab-close, [data-slot="question-progress-nav"], [data-slot="question-collapse-toggle"] { @@ -100,8 +100,8 @@ body.vscode-high-contrast-light { border-color: var(--vscode-contrastBorder, transparent) !important; } - /* Prompt review chips */ - .prompt-review-chip { + /* Prompt review rows */ + .prompt-review-row { border-color: var(--vscode-contrastBorder, var(--vscode-input-border)); } diff --git a/packages/kilo-vscode/webview-ui/src/styles/prompt-input.css b/packages/kilo-vscode/webview-ui/src/styles/prompt-input.css index a04824a38f1..1f3a9585633 100644 --- a/packages/kilo-vscode/webview-ui/src/styles/prompt-input.css +++ b/packages/kilo-vscode/webview-ui/src/styles/prompt-input.css @@ -55,12 +55,45 @@ padding: 0; } +.prompt-review-comments-toggle { + all: unset; + display: flex; + align-items: center; + gap: 4px; + min-width: 0; + flex: 1; + overflow: hidden; + cursor: pointer; + color: var(--text-weak, var(--vscode-descriptionForeground)); +} + +.prompt-review-comments-toggle:focus-visible { + outline: 1px solid var(--border-focus, var(--vscode-focusBorder)); + border-radius: 4px; +} + .prompt-review-comments-title { + flex-shrink: 0; font-size: var(--kilo-font-size-11); font-weight: 600; color: var(--vscode-foreground); } +/* The file summary is the first thing to give up room in a narrow sidebar. */ +.prompt-review-comments-meta { + min-width: 0; + font-size: var(--kilo-font-size-10); + color: var(--text-weaker, var(--vscode-descriptionForeground)); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.prompt-review-comments-meta::before { + content: "·"; + margin-right: 4px; +} + .prompt-review-comments-header [data-component="button"] { min-height: 20px; height: 20px; @@ -68,53 +101,48 @@ font-size: var(--kilo-font-size-10); } -.prompt-review-chip-list { - display: grid; - grid-template-columns: repeat(2, minmax(0, 280px)); - gap: 6px; - max-height: 124px; - overflow: auto; - align-content: start; - justify-content: start; - padding: 0; -} - -.prompt-review-chip { - display: grid; - grid-template-columns: minmax(0, 1fr) auto; - align-items: center; - border: 1px solid var(--vscode-input-border, var(--vscode-panel-border)); - border-radius: 6px; - background: var(--vscode-editor-background, rgba(127, 127, 127, 0.08)); - min-width: 0; -} - -.prompt-review-chip-body { - all: unset; +.prompt-review-list { display: flex; - align-items: center; - gap: 6px; - width: 100%; + flex-direction: column; + gap: 4px; min-width: 0; - box-sizing: border-box; - padding: 6px; - cursor: pointer; } -.prompt-review-chip:hover { - border-color: var(--border-focus, var(--vscode-focusBorder)); +.prompt-review-list--scroll { + max-height: 320px; + overflow: auto; } -.prompt-review-chip-body:focus-visible { - outline: 1px solid var(--border-focus, var(--vscode-focusBorder)); +.prompt-review-row { + display: flex; + flex-direction: column; + border: 1px solid transparent; border-radius: 6px; + background: var(--surface-inset-base, rgba(127, 127, 127, 0.08)); + min-width: 0; } -.prompt-review-chip-icon { - width: 20px; - height: 20px; +.prompt-review-row:hover { + border-color: var(--border-weak-base, var(--vscode-panel-border)); +} + +.prompt-review-row--full { + border-color: var(--border-weak-base, var(--vscode-panel-border)); + background: var(--vscode-editor-background, rgba(127, 127, 127, 0.12)); +} + +.prompt-review-row-top { + display: flex; + align-items: flex-start; + gap: 6px; + min-width: 0; + padding: 6px; +} + +.prompt-review-row-icon { + width: 18px; + height: 18px; border-radius: 5px; - background: var(--surface-inset-base, rgba(127, 127, 127, 0.12)); color: var(--text-weak, var(--vscode-descriptionForeground)); display: flex; align-items: center; @@ -122,21 +150,29 @@ flex-shrink: 0; } -.prompt-review-chip-copy { - min-width: 0; +.prompt-review-row-main { + all: unset; display: flex; flex-direction: column; + gap: 2px; + flex: 1; + min-width: 0; + cursor: pointer; } -.prompt-review-chip-main { +.prompt-review-row-main:focus-visible { + outline: 1px solid var(--border-focus, var(--vscode-focusBorder)); + border-radius: 4px; +} + +.prompt-review-row-head { display: flex; align-items: center; gap: 6px; min-width: 0; } -.prompt-review-chip-title { - flex: 1; +.prompt-review-row-label { min-width: 0; font-size: var(--kilo-font-size-10); font-weight: 600; @@ -146,17 +182,104 @@ text-overflow: ellipsis; } -.prompt-review-chip-line { +.prompt-review-row-line, +.prompt-review-row-author { flex-shrink: 0; font-size: var(--kilo-font-size-10); font-weight: 600; color: var(--text-weak, var(--vscode-descriptionForeground)); } -.prompt-review-chip-remove { - margin-right: 4px; - width: 14px; - height: 14px; +.prompt-review-row-badge { + flex-shrink: 0; + padding: 0 4px; + border-radius: 4px; + background: var(--surface-inset-base-hover, rgba(127, 127, 127, 0.2)); + font-size: var(--kilo-font-size-10); + color: var(--text-weak, var(--vscode-descriptionForeground)); + white-space: nowrap; +} + +.prompt-review-row-preview { + font-size: var(--kilo-font-size-11); + line-height: 1.35; + color: var(--vscode-foreground); + display: -webkit-box; + -webkit-line-clamp: 2; + line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + overflow-wrap: anywhere; + text-align: start; + white-space: pre-wrap; +} + +.prompt-review-row-detail { + display: flex; + flex-direction: column; + gap: 6px; + padding: 0 6px 6px 30px; + min-width: 0; +} + +.prompt-review-row-path { + font-family: var(--vscode-editor-font-family, var(--vscode-font-family)); + font-size: var(--kilo-font-size-10); + color: var(--text-weaker, var(--vscode-descriptionForeground)); + overflow-wrap: anywhere; +} + +.prompt-review-row-text { + font-size: var(--kilo-font-size-11); + line-height: 1.4; + color: var(--vscode-foreground); + white-space: pre-wrap; + overflow-wrap: anywhere; +} + +/* Markdown bodies are authored for full-width panels; keep them compact here. + Flex on the root also drops the whitespace line box the renderer emits. */ +.prompt-review-row-text [data-component="markdown"] { + display: flex; + flex-direction: column; + gap: 4px; + font-size: var(--kilo-font-size-11); + line-height: 1.4; +} + +.prompt-review-row-text :where(p, ul, ol, pre, blockquote, h1, h2, h3, h4, h5, h6) { + margin: 0 0 4px; + font-size: inherit; + line-height: inherit; +} + +.prompt-review-row-text :where(p, ul, ol, pre, blockquote, h1, h2, h3, h4, h5, h6):last-child { + margin-bottom: 0; +} + +.prompt-review-row-text :where(code) { + font-size: var(--kilo-font-size-10); +} + +.prompt-review-row-snippet { + margin: 0; + padding: 6px 8px; + border-radius: 6px; + border: 1px solid var(--vscode-panel-border); + background: var(--vscode-textCodeBlock-background, rgba(127, 127, 127, 0.12)); + font-family: var(--vscode-editor-font-family, var(--vscode-font-family)); + font-size: var(--kilo-font-size-10); + line-height: 1.35; + max-height: 160px; + overflow: auto; + white-space: pre-wrap; + overflow-wrap: anywhere; +} + +.prompt-review-row-remove { + width: 16px; + height: 16px; + flex-shrink: 0; border: none; border-radius: 999px; background: var(--surface-inset-base, rgba(127, 127, 127, 0.16)); @@ -170,91 +293,32 @@ padding: 0; } -.prompt-review-chip-remove:hover { +.prompt-review-row-remove:hover { color: var(--vscode-foreground); background: var(--surface-inset-base-hover, rgba(127, 127, 127, 0.24)); } -.prompt-review-chip-remove:focus-visible { +.prompt-review-row-remove:focus-visible { outline: 1px solid var(--border-focus, var(--vscode-focusBorder)); } -.prompt-review-modal { - display: flex; - flex-direction: column; - gap: 10px; - padding: 0 20px 10px; - min-width: 360px; - max-width: 600px; -} - -.prompt-review-modal-head { - display: flex; - align-items: center; - justify-content: space-between; - gap: 8px; -} - -.prompt-review-modal-headline { - font-size: var(--font-size-base); +.prompt-review-more { + all: unset; + align-self: flex-start; + padding: 2px 4px; + border-radius: 4px; + font-size: var(--kilo-font-size-10); font-weight: 600; + color: var(--text-weak, var(--vscode-descriptionForeground)); + cursor: pointer; +} + +.prompt-review-more:hover { color: var(--vscode-foreground); } -.prompt-review-modal-grid { - display: grid; - grid-template-columns: auto 1fr; - gap: 6px 12px; - align-items: flex-start; -} - -.prompt-review-modal-label { - font-size: var(--kilo-font-size-10); - text-transform: uppercase; - letter-spacing: 0.3px; - color: var(--text-weaker, var(--vscode-descriptionForeground)); - white-space: nowrap; -} - -.prompt-review-modal-value { - margin: 0; - min-width: 0; - font-size: var(--kilo-font-size-11); - line-height: 1.35; - color: var(--vscode-foreground); - white-space: pre-wrap; - word-break: break-word; -} - -.prompt-review-modal-grid code.prompt-review-modal-value { - font-family: var(--vscode-editor-font-family, var(--vscode-font-family)); -} - -.prompt-review-modal-snippet { - margin: 0; - padding: 6px 8px; - border-radius: 6px; - border: 1px solid var(--vscode-panel-border); - background: var(--vscode-textCodeBlock-background, rgba(127, 127, 127, 0.12)); - font-family: var(--vscode-editor-font-family, var(--vscode-font-family)); - font-size: var(--kilo-font-size-10); - line-height: 1.35; - max-height: 120px; - overflow: auto; - white-space: pre-wrap; - word-break: break-word; -} - -@media (max-width: 700px) { - .prompt-review-chip-list { - grid-template-columns: 1fr; - } - - .prompt-review-modal { - min-width: min(360px, calc(100vw - 32px)); - max-width: calc(100vw - 24px); - padding: 0 16px 10px; - } +.prompt-review-more:focus-visible { + outline: 1px solid var(--border-focus, var(--vscode-focusBorder)); } /* Image Attachments */