Merge pull request #13358 from Kilo-Org/improve-review-comments-ui

feat(vscode): improve review comment previews
This commit is contained in:
Marius
2026-08-24 15:46:53 +02:00
committed by GitHub
28 changed files with 433 additions and 360 deletions
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fbdc00f26ece2fc49d25c26b128b9f69fa562c2c0b2d54c4fd88f8c476145046
size 25076
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2ae8197b9d63cf977fa5112a1b02eb48bc22a1577b4dee15abd475805f0db5b0
size 11769
oid sha256:efeff70e266d94ae5b40b05694eb2011c84d2da9e91eafe2dc01f775797e9135
size 19048
+3 -5
View File
@@ -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}} غير محلولة",
+3 -5
View File
@@ -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",
+3 -5
View File
@@ -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",
+3 -5
View File
@@ -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",
@@ -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",
@@ -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",
+3 -5
View File
@@ -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",
+3 -5
View File
@@ -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}} حل‌نشده",
+3 -5
View File
@@ -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",
+3 -5
View File
@@ -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",
+3 -5
View File
@@ -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}} 件未解決",
+3 -5
View File
@@ -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}}개 미해결",
+3 -5
View File
@@ -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",
+3 -5
View File
@@ -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",
+3 -5
View File
@@ -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",
+3 -5
View File
@@ -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}} нерешённых",
+3 -5
View File
@@ -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}} รายการ",
+3 -5
View File
@@ -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ş",
+3 -5
View File
@@ -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}} невирішених",
+3 -5
View File
@@ -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}} 个未解决",
+3 -5
View File
@@ -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}} 個未解決",
@@ -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<ReviewCommentsProps> = (props) => {
const language = useLanguage()
const vscode = useVSCode()
const dialog = useDialog()
const [open, setOpen] = createSignal(true)
const [all, setAll] = createSignal(false)
const [full, setFull] = createSignal<string[]>([])
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(() => (
<Dialog title={language.t("agentManager.review.modalTitle")} fit>
<div class="prompt-review-modal">
<div class="prompt-review-modal-head">
<span class="prompt-review-modal-headline">{title(item)}</span>
<Show when={item.file}>
<Tooltip value={language.t("agentManager.diff.openFile")} placement="top">
<IconButton
icon="go-to-file"
size="small"
variant="ghost"
label={language.t("agentManager.diff.openFile")}
onClick={() => open(item)}
/>
</Tooltip>
</Show>
</div>
<div class="prompt-review-modal-grid">
<Show when={author(item)}>
{(login) => (
<>
<span class="prompt-review-modal-label">{language.t("agentManager.review.metaAuthor")}</span>
<span class="prompt-review-modal-value">@{login()}</span>
</>
)}
</Show>
<Show when={item.file}>
{(file) => (
<>
<span class="prompt-review-modal-label">{language.t("agentManager.review.metaFile")}</span>
<code class="prompt-review-modal-value">{file()}</code>
</>
)}
</Show>
<Show when={item.line}>
{(value) => (
<>
<span class="prompt-review-modal-label">{language.t("agentManager.review.metaLine")}</span>
<span class="prompt-review-modal-value">L{value()}</span>
</>
)}
</Show>
<span class="prompt-review-modal-label">{language.t("agentManager.review.metaComment")}</span>
<span class="prompt-review-modal-value">
<Show when={isPRReviewComment(item)} fallback={body(item)}>
<Markdown text={body(item)} />
</Show>
</span>
</div>
<Show when={snippet(item)}>{(value) => <pre class="prompt-review-modal-snippet">{value()}</pre>}</Show>
</div>
</Dialog>
))
}
return (
@@ -117,48 +72,110 @@ export const ReviewComments: Component<ReviewCommentsProps> = (props) => {
data-component="review-comments"
>
<div class="prompt-review-comments-header">
<span class="prompt-review-comments-title">
{language.t("agentManager.review.inlineCount", { count: props.comments.length })}
</span>
<button
type="button"
class="prompt-review-comments-toggle"
aria-expanded={open()}
onClick={() => setOpen(!open())}
>
<Icon name={open() ? "chevron-down" : "chevron-right"} size="small" />
<span class="prompt-review-comments-title">
{language.t("agentManager.review.inlineCount", { count: props.comments.length })}
</span>
<Show when={files() > 1}>
<span class="prompt-review-comments-meta">
{language.t("agentManager.review.fileCount", { count: files() })}
</span>
</Show>
</button>
<Show when={props.onClear}>
<Button variant="ghost" size="small" onClick={() => props.onClear?.()}>
{language.t("agentManager.review.clearAll")}
</Button>
</Show>
</div>
<div class="prompt-review-chip-list">
<For each={props.comments}>
{(item) => (
<div class="prompt-review-chip">
<button
type="button"
class="prompt-review-chip-body"
onClick={() => (isPRReviewComment(item) ? show(item) : open(item))}
>
<span class="prompt-review-chip-icon">
<Icon name={isPRReviewComment(item) ? "github" : "comment"} size="small" />
</span>
<span class="prompt-review-chip-copy">
<span class="prompt-review-chip-main">
<span class="prompt-review-chip-title">{label(item)}</span>
<Show when={line(item)}>{(value) => <span class="prompt-review-chip-line">{value()}</span>}</Show>
<Show when={open()}>
<div
class="prompt-review-list"
classList={{ "prompt-review-list--scroll": all() && props.comments.length > SCROLL }}
>
<For each={rows()}>
{(item) => (
<div class="prompt-review-row" classList={{ "prompt-review-row--full": full().includes(item.id) }}>
<div class="prompt-review-row-top">
<span class="prompt-review-row-icon">
<Icon name={isPRReviewComment(item) ? "github" : "comment"} size="small" />
</span>
</span>
</button>
<Show when={props.onRemove}>
<button
type="button"
class="prompt-review-chip-remove"
onClick={() => props.onRemove?.(item.id)}
aria-label={language.t("common.delete")}
>
×
</button>
</Show>
</div>
)}
</For>
</div>
<button
type="button"
class="prompt-review-row-main"
aria-expanded={full().includes(item.id)}
onClick={() => toggle(item.id)}
>
<span class="prompt-review-row-head">
<span class="prompt-review-row-label">{label(item)}</span>
<Show when={line(item)}>{(value) => <span class="prompt-review-row-line">{value()}</span>}</Show>
<Show when={item.file && author(item)}>
<span class="prompt-review-row-author">@{author(item)}</span>
</Show>
<Show when={outdated(item)}>
<span class="prompt-review-row-badge">{language.t("agentManager.pr.comment.outdated")}</span>
</Show>
</span>
<Show when={!full().includes(item.id)}>
<span class="prompt-review-row-preview">{body(item)}</span>
</Show>
</button>
<Show when={item.file}>
<Tooltip value={language.t("agentManager.diff.openFile")} placement="top">
<IconButton
icon="go-to-file"
size="small"
variant="ghost"
label={language.t("agentManager.diff.openFile")}
onClick={() => reveal(item)}
/>
</Tooltip>
</Show>
<Show when={props.onRemove}>
<button
type="button"
class="prompt-review-row-remove"
onClick={() => props.onRemove?.(item.id)}
aria-label={language.t("common.delete")}
>
×
</button>
</Show>
</div>
<Show when={full().includes(item.id)}>
<div class="prompt-review-row-detail">
<Show when={item.file}>{(file) => <code class="prompt-review-row-path">{file()}</code>}</Show>
<div class="prompt-review-row-text">
<Show when={isPRReviewComment(item)} fallback={body(item)}>
<Markdown text={body(item)} />
</Show>
</div>
<Show when={snippet(item)}>
{(value) => <pre class="prompt-review-row-snippet">{value()}</pre>}
</Show>
</div>
</Show>
</div>
)}
</For>
</div>
<Show when={hidden() > 0}>
<button type="button" class="prompt-review-more" onClick={() => setAll(!all())}>
{all()
? language.t("agentManager.review.showLess")
: language.t("agentManager.review.showMore", { count: hidden() })}
</button>
</Show>
</Show>
</div>
)
}
@@ -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 <VscodeUserMessage message={message} parts={parts} />
}
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 (
<StoryProviders sessionID={SESSION_ID} status="idle">
<div style={{ "max-height": "400px", padding: "12px" }}>
<VscodeUserMessage message={message} parts={parts} />
</div>
<div style={{ "max-height": "400px", padding: "12px" }}>{reviewMessage(comments)}</div>
</StoryProviders>
)
},
}
/**
* 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 (
<StoryProviders sessionID={SESSION_ID} status="idle">
<div style={{ "max-height": "620px", padding: "12px" }}>{reviewMessage(local)}</div>
</StoryProviders>
)
},
@@ -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));
}
@@ -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 */