mirror of
https://github.com/Kilo-Org/kilocode.git
synced 2026-08-28 19:11:03 +08:00
feat(agent-manager): add PR link copy button (#13353)
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"kilo-code": patch
|
||||
---
|
||||
|
||||
Add a button to copy pull request links from the Agent Manager PR panel.
|
||||
@@ -194,6 +194,7 @@ export const dict = {
|
||||
"agentManager.review.metaComment": "تعليق المستخدم",
|
||||
"agentManager.review.metaAuthor": "المؤلف",
|
||||
"agentManager.pr.comment.title": "التعليقات",
|
||||
"agentManager.pr.copyLink": "نسخ رابط PR",
|
||||
"agentManager.pr.comment.unresolvedCount": "{{count}} غير محلولة",
|
||||
"agentManager.pr.comment.resolvedGroup": "تم الحل ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "إرسال {{count}} غير محلولة إلى الوكيل",
|
||||
|
||||
@@ -197,6 +197,7 @@ export const dict = {
|
||||
"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",
|
||||
"agentManager.pr.comment.resolvedGroup": "Resolvidos ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "Enviar {{count}} não resolvidos para o agente",
|
||||
|
||||
@@ -197,6 +197,7 @@ export const dict = {
|
||||
"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",
|
||||
"agentManager.pr.comment.resolvedGroup": "Riješeno ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "Pošalji {{count}} neriješenih agentu",
|
||||
|
||||
@@ -198,6 +198,7 @@ export const dict = {
|
||||
"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",
|
||||
"agentManager.pr.comment.resolvedGroup": "Løste ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "Send {{count}} uløste til agenten",
|
||||
|
||||
@@ -199,6 +199,7 @@ export const dict = {
|
||||
"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",
|
||||
"agentManager.pr.comment.resolvedGroup": "Gelöst ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "{{count}} ungelöste an Agent senden",
|
||||
|
||||
@@ -200,6 +200,7 @@ export const dict = {
|
||||
"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",
|
||||
"agentManager.pr.comment.resolvedGroup": "Resolved ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "Send {{count}} unresolved to agent",
|
||||
|
||||
@@ -198,6 +198,7 @@ export const dict = {
|
||||
"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",
|
||||
"agentManager.pr.comment.resolvedGroup": "Resueltos ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "Enviar {{count}} sin resolver al agente",
|
||||
|
||||
@@ -201,6 +201,7 @@ export const dict = {
|
||||
"agentManager.review.metaComment": "نظر کاربر",
|
||||
"agentManager.review.metaAuthor": "نویسنده",
|
||||
"agentManager.pr.comment.title": "نظرات",
|
||||
"agentManager.pr.copyLink": "کپی پیوند PR",
|
||||
"agentManager.pr.comment.unresolvedCount": "{{count}} حلنشده",
|
||||
"agentManager.pr.comment.resolvedGroup": "حلشده ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "ارسال {{count}} مورد حلنشده به عامل",
|
||||
|
||||
@@ -199,6 +199,7 @@ export const dict = {
|
||||
"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",
|
||||
"agentManager.pr.comment.resolvedGroup": "Résolus ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "Envoyer {{count}} non résolus à l’agent",
|
||||
|
||||
@@ -204,6 +204,7 @@ export const dict = {
|
||||
"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",
|
||||
"agentManager.pr.comment.resolvedGroup": "Risolti ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "Invia {{count}} non risolti all'agente",
|
||||
|
||||
@@ -198,6 +198,7 @@ export const dict = {
|
||||
"agentManager.review.metaComment": "ユーザーコメント",
|
||||
"agentManager.review.metaAuthor": "作成者",
|
||||
"agentManager.pr.comment.title": "コメント",
|
||||
"agentManager.pr.copyLink": "PRリンクをコピー",
|
||||
"agentManager.pr.comment.unresolvedCount": "{{count}} 件未解決",
|
||||
"agentManager.pr.comment.resolvedGroup": "解決済み ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "{{count}} 件の未解決コメントをエージェントに送信",
|
||||
|
||||
@@ -196,6 +196,7 @@ export const dict = {
|
||||
"agentManager.review.metaComment": "사용자 코멘트",
|
||||
"agentManager.review.metaAuthor": "작성자",
|
||||
"agentManager.pr.comment.title": "댓글",
|
||||
"agentManager.pr.copyLink": "PR 링크 복사",
|
||||
"agentManager.pr.comment.unresolvedCount": "{{count}}개 미해결",
|
||||
"agentManager.pr.comment.resolvedGroup": "해결됨 ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "{{count}}개 미해결 댓글을 에이전트로 보내기",
|
||||
|
||||
@@ -203,6 +203,7 @@ export const dict = {
|
||||
"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",
|
||||
"agentManager.pr.comment.resolvedGroup": "Opgelost ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "{{count}} onopgeloste opmerkingen naar agent sturen",
|
||||
|
||||
@@ -195,6 +195,7 @@ export const dict = {
|
||||
"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",
|
||||
"agentManager.pr.comment.resolvedGroup": "Løste ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "Send {{count}} uløste til agenten",
|
||||
|
||||
@@ -197,6 +197,7 @@ export const dict = {
|
||||
"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",
|
||||
"agentManager.pr.comment.resolvedGroup": "Rozwiązane ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "Wyślij {{count}} nierozwiązanych do agenta",
|
||||
|
||||
@@ -198,6 +198,7 @@ export const dict = {
|
||||
"agentManager.review.metaComment": "Комментарий пользователя",
|
||||
"agentManager.review.metaAuthor": "Автор",
|
||||
"agentManager.pr.comment.title": "Комментарии",
|
||||
"agentManager.pr.copyLink": "Копировать ссылку на PR",
|
||||
"agentManager.pr.comment.unresolvedCount": "{{count}} нерешённых",
|
||||
"agentManager.pr.comment.resolvedGroup": "Решённые ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "Отправить {{count}} нерешённых агенту",
|
||||
|
||||
@@ -192,6 +192,7 @@ export const dict = {
|
||||
"agentManager.review.metaComment": "ความคิดเห็นของผู้ใช้",
|
||||
"agentManager.review.metaAuthor": "ผู้เขียน",
|
||||
"agentManager.pr.comment.title": "ความคิดเห็น",
|
||||
"agentManager.pr.copyLink": "คัดลอกลิงก์ PR",
|
||||
"agentManager.pr.comment.unresolvedCount": "ยังไม่แก้ไข {{count}} รายการ",
|
||||
"agentManager.pr.comment.resolvedGroup": "แก้ไขแล้ว ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "ส่งความคิดเห็นที่ยังไม่แก้ไข {{count}} รายการไปยังเอเจนต์",
|
||||
|
||||
@@ -205,6 +205,7 @@ export const dict = {
|
||||
"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ş",
|
||||
"agentManager.pr.comment.resolvedGroup": "Çözüldü ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "{{count}} çözülmemiş yorumu ajana gönder",
|
||||
|
||||
@@ -206,6 +206,7 @@ export const dict = {
|
||||
"agentManager.review.metaComment": "Коментар користувача",
|
||||
"agentManager.review.metaAuthor": "Автор",
|
||||
"agentManager.pr.comment.title": "Коментарі",
|
||||
"agentManager.pr.copyLink": "Копіювати посилання на PR",
|
||||
"agentManager.pr.comment.unresolvedCount": "{{count}} невирішених",
|
||||
"agentManager.pr.comment.resolvedGroup": "Вирішено ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "Надіслати {{count}} невирішених агенту",
|
||||
|
||||
@@ -190,6 +190,7 @@ export const dict = {
|
||||
"agentManager.review.metaComment": "用户评论",
|
||||
"agentManager.review.metaAuthor": "作者",
|
||||
"agentManager.pr.comment.title": "评论",
|
||||
"agentManager.pr.copyLink": "复制 PR 链接",
|
||||
"agentManager.pr.comment.unresolvedCount": "{{count}} 个未解决",
|
||||
"agentManager.pr.comment.resolvedGroup": "已解决 ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "将 {{count}} 个未解决评论发送给代理",
|
||||
|
||||
@@ -190,6 +190,7 @@ export const dict = {
|
||||
"agentManager.review.metaComment": "使用者評論",
|
||||
"agentManager.review.metaAuthor": "作者",
|
||||
"agentManager.pr.comment.title": "留言",
|
||||
"agentManager.pr.copyLink": "複製 PR 連結",
|
||||
"agentManager.pr.comment.unresolvedCount": "{{count}} 個未解決",
|
||||
"agentManager.pr.comment.resolvedGroup": "已解決 ({{count}})",
|
||||
"agentManager.pr.comment.sendAll": "將 {{count}} 個未解決留言傳送給代理",
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
/** @jsxImportSource solid-js */
|
||||
import { createSignal } from "solid-js"
|
||||
import { IconButton } from "@kilocode/kilo-ui/icon-button"
|
||||
import { useVSCode } from "../../src/context/vscode"
|
||||
|
||||
export function CopyButton(props: { text: string; label?: string; class?: string }) {
|
||||
const vscode = useVSCode()
|
||||
const [copied, setCopied] = createSignal(false)
|
||||
const copy = () => {
|
||||
navigator.clipboard.writeText(props.text)
|
||||
vscode.postMessage({ type: "agentManager.copyToClipboard", text: props.text })
|
||||
setCopied(true)
|
||||
setTimeout(() => setCopied(false), 1500)
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import { IconButton } from "@kilocode/kilo-ui/icon-button"
|
||||
import { Tooltip } from "@kilocode/kilo-ui/tooltip"
|
||||
import type { WorktreeState } from "../../src/types/messages"
|
||||
import type { PRStatus } from "../../src/types/messages"
|
||||
import { useLanguage } from "../../src/context/language"
|
||||
import { PRBadge } from "./PRBadge"
|
||||
import { PROverview } from "./PROverview"
|
||||
import { PRReviewers } from "./PRReviewers"
|
||||
@@ -12,6 +13,7 @@ import { PRChecks } from "./PRChecks"
|
||||
import { PRComments } from "./PRComments"
|
||||
import { commentScroll, setCommentScroll } from "./pr-comment-state"
|
||||
import { PRSummary } from "./PRSummary"
|
||||
import { CopyButton } from "./CopyButton"
|
||||
import "./pr-panel.css"
|
||||
|
||||
interface PRPanelProps {
|
||||
@@ -27,6 +29,7 @@ interface PRPanelProps {
|
||||
}
|
||||
|
||||
export const PRPanel: Component<PRPanelProps> = (props) => {
|
||||
const { t } = useLanguage()
|
||||
let commentsRef: HTMLDivElement | undefined
|
||||
let bodyRef: HTMLDivElement | undefined
|
||||
let capture: number | undefined
|
||||
@@ -117,6 +120,9 @@ export const PRPanel: Component<PRPanelProps> = (props) => {
|
||||
<span class="am-pr-panel-number">#{props.pr.number}</span>
|
||||
</div>
|
||||
<div class="am-pr-panel-actions am-pr-row">
|
||||
<Tooltip value={t("agentManager.pr.copyLink")} placement="bottom">
|
||||
<CopyButton text={props.pr.url} label={t("agentManager.pr.copyLink")} />
|
||||
</Tooltip>
|
||||
<Tooltip value="Open in browser" placement="bottom">
|
||||
<IconButton
|
||||
icon="link"
|
||||
|
||||
@@ -822,6 +822,11 @@ export interface OpenWorktreeRequest {
|
||||
worktreeId: string
|
||||
}
|
||||
|
||||
export interface AgentManagerCopyToClipboardRequest {
|
||||
type: "agentManager.copyToClipboard"
|
||||
text: string
|
||||
}
|
||||
|
||||
// Copy text to the system clipboard via the extension host
|
||||
export interface CopyToClipboardRequest {
|
||||
type: "copyToClipboard"
|
||||
@@ -1591,6 +1596,7 @@ export type WebviewMessage =
|
||||
| ShowLocalTerminalRequest
|
||||
| ShowWorktreeTerminalRequest
|
||||
| OpenWorktreeRequest
|
||||
| AgentManagerCopyToClipboardRequest
|
||||
| CopyToClipboardRequest
|
||||
| ShowExistingLocalTerminalRequest
|
||||
| AgentManagerOpenFileRequest
|
||||
|
||||
Reference in New Issue
Block a user