wind-agent-cli 1.38.1 → 1.38.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/assets/{CodeEditor-Cx2QOPKS.js → CodeEditor-C9qFO6L8.js} +1 -1
- package/dist/assets/{FileTree-CaCZBfXB.js → FileTree-0yJEzBi9.js} +1 -1
- package/dist/assets/{GitPanel-C8vu-HU9.js → GitPanel-BhbG7yVZ.js} +1 -1
- package/dist/assets/{MarkdownPreview-DM1I8sMC.js → MarkdownPreview-C7pAt3xI.js} +1 -1
- package/dist/assets/{Shell-eRBEAkRb.js → Shell-CrjXAW4f.js} +2 -2
- package/dist/assets/{StandaloneShell-C_SgfnxT.js → StandaloneShell-J5BR1g26.js} +1 -1
- package/dist/assets/{TaskMasterPanel-ePMcx8a-.js → TaskMasterPanel-B2wpEHWP.js} +2 -2
- package/dist/assets/{abnfDiagram-N423BO3Z-BcJZs1lF.js → abnfDiagram-N423BO3Z-DztbjsU0.js} +1 -1
- package/dist/assets/{arc-B53XXXxy.js → arc-DRGumrCP.js} +1 -1
- package/dist/assets/{architectureDiagram-T3A2C74G-vTs0UDp_.js → architectureDiagram-T3A2C74G-DnsczqwM.js} +1 -1
- package/dist/assets/{blockDiagram-VBNYF7ZC-CRlmkPBH.js → blockDiagram-VBNYF7ZC-CPsS5qw5.js} +1 -1
- package/dist/assets/{c4Diagram-5PPSVZJV-CDkarwX2.js → c4Diagram-5PPSVZJV-DyjwDxYL.js} +1 -1
- package/dist/assets/channel-Dj-iU3BT.js +1 -0
- package/dist/assets/{chunk-2GRJ4B5K-CdVcURNG.js → chunk-2GRJ4B5K-C794q4RK.js} +1 -1
- package/dist/assets/{chunk-2Q5K7J3B-CSMQbOQx.js → chunk-2Q5K7J3B-BfK76GMF.js} +1 -1
- package/dist/assets/{chunk-5RXB4S5H-DFW9zj_c.js → chunk-5RXB4S5H-Dmwk_KHT.js} +1 -1
- package/dist/assets/{chunk-5VM5RSS4-DBpthDmq.js → chunk-5VM5RSS4-DOeUnsxL.js} +1 -1
- package/dist/assets/{chunk-6Q2QTUOP-BcUSTdgD.js → chunk-6Q2QTUOP-BrjdaybI.js} +1 -1
- package/dist/assets/{chunk-GF5L2VYU-4m17UUNv.js → chunk-GF5L2VYU-DCjoLr5D.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-BQbCGGN3.js → chunk-JWPE2WC7-TEJEfxQK.js} +1 -1
- package/dist/assets/{chunk-KBJHAD2P-BSUyigrP.js → chunk-KBJHAD2P-tbXW-dpx.js} +1 -1
- package/dist/assets/{chunk-RYQCIY6F-IDx48cke.js → chunk-RYQCIY6F-CX4Zsite.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-CkptWWiw.js → chunk-XXDRQBXY-DVJXNcFN.js} +1 -1
- package/dist/assets/classDiagram-JCYQIIEL-euwGMP6E.js +1 -0
- package/dist/assets/classDiagram-v2-OCEON4UE-euwGMP6E.js +1 -0
- package/dist/assets/{cose-bilkent-JH36ORCC-Di3RMB4X.js → cose-bilkent-JH36ORCC-DLpXc-vJ.js} +1 -1
- package/dist/assets/{cynefin-VYW2F7L2-DBEP-JNm.js → cynefin-VYW2F7L2-toFyL_eT.js} +1 -1
- package/dist/assets/{cynefinDiagram-MW4NZA55-DCa5bQ3E.js → cynefinDiagram-MW4NZA55-7KnX5nu-.js} +1 -1
- package/dist/assets/{dagre-VZM6K2ZE-N0N_WSj2.js → dagre-VZM6K2ZE-C-QOFsDs.js} +1 -1
- package/dist/assets/{diagram-7IWD3JNH-wYn0p431.js → diagram-7IWD3JNH-26OmKaGK.js} +1 -1
- package/dist/assets/{diagram-B4RE2ZJO-Cse-jrwQ.js → diagram-B4RE2ZJO-0o9kK2uO.js} +1 -1
- package/dist/assets/{diagram-LBJQPF4R-Byhmgq5m.js → diagram-LBJQPF4R-CAgMu3zd.js} +1 -1
- package/dist/assets/{diagram-Q27KOJAE-BNsUkxU7.js → diagram-Q27KOJAE-B0W-AePB.js} +1 -1
- package/dist/assets/{diagram-UB23O5K3-C3QHYX7n.js → diagram-UB23O5K3-66AXZ7Mk.js} +1 -1
- package/dist/assets/{ebnfDiagram-BXEA7PRR-BP6B3t_z.js → ebnfDiagram-BXEA7PRR-JlixVrAW.js} +1 -1
- package/dist/assets/{erDiagram-JOGREHBK-CjYRNWDj.js → erDiagram-JOGREHBK-ZxzuRr4f.js} +1 -1
- package/dist/assets/{feature-chat-CenAll-X.js → feature-chat-CNYDDkFQ.js} +4 -4
- package/dist/assets/feature-workspace-BMlv7Ust.js +39 -0
- package/dist/assets/{flowDiagram-UKHOOZJN-4H-yy-hv.js → flowDiagram-UKHOOZJN-u67vU32D.js} +1 -1
- package/dist/assets/{ganttDiagram-PKOTCBZU-CEjsxzjF.js → ganttDiagram-PKOTCBZU-Crl9IPqX.js} +1 -1
- package/dist/assets/{gitGraphDiagram-DS77QQ5N-CNEvMqer.js → gitGraphDiagram-DS77QQ5N-B2rTRd1W.js} +1 -1
- package/dist/assets/{index-BnTqIKbW.js → index-BTFkWJZe.js} +1 -1
- package/dist/assets/{index-BIKUx4Nd.js → index-CPP7a6gU.js} +1 -1
- package/dist/assets/{index-Dn_5mZup.js → index-YP8FmBZO.js} +1 -1
- package/dist/assets/{index-CblFvRGn.js → index-uINlYqXe.js} +13 -13
- package/dist/assets/{infoDiagram-6WML65LV-CaQEYwl_.js → infoDiagram-6WML65LV-o9ZSr_ud.js} +1 -1
- package/dist/assets/{ishikawaDiagram-WSZJBQD7-jvmcvqKv.js → ishikawaDiagram-WSZJBQD7-DnrbX4Ui.js} +1 -1
- package/dist/assets/{journeyDiagram-NVQOT4AX-D3t6ZEEp.js → journeyDiagram-NVQOT4AX-CSfWpt5R.js} +1 -1
- package/dist/assets/{kanban-definition-27J2QSJJ-DndXvXlL.js → kanban-definition-27J2QSJJ-dj3PZxCQ.js} +1 -1
- package/dist/assets/{linear-CRI9G1bv.js → linear-DieERJn8.js} +1 -1
- package/dist/assets/{mermaid.core-Nej1-0Ug.js → mermaid.core-cq_VDJvZ.js} +4 -4
- package/dist/assets/{mindmap-definition-FAOFIHXS-7fzz0Exr.js → mindmap-definition-FAOFIHXS-CHQ8W4LE.js} +1 -1
- package/dist/assets/{pegDiagram-VL7TDLO6-DTiRFRfv.js → pegDiagram-VL7TDLO6-CR2rMB3e.js} +1 -1
- package/dist/assets/{pieDiagram-7S7Q4E2Y-BU4cScsB.js → pieDiagram-7S7Q4E2Y-Cs4NOlmu.js} +1 -1
- package/dist/assets/{quadrantDiagram-CIZ2JOQS-Cc13j5j0.js → quadrantDiagram-CIZ2JOQS-CdHqIaj5.js} +1 -1
- package/dist/assets/{railroadDiagram-AXF67PYL-CfB467SJ.js → railroadDiagram-AXF67PYL-BNPU0Q8Z.js} +1 -1
- package/dist/assets/{requirementDiagram-LRYGKXZP-BddSRoQa.js → requirementDiagram-LRYGKXZP-DwDQoirA.js} +1 -1
- package/dist/assets/{sankeyDiagram-W5VNT64P-D33-L55R.js → sankeyDiagram-W5VNT64P-DSDSpLjf.js} +1 -1
- package/dist/assets/{sequenceDiagram-SI44F4Z6-BP7gKO1m.js → sequenceDiagram-SI44F4Z6-zfhext7x.js} +1 -1
- package/dist/assets/{sizeCapture-X5ZJPWSS-DLmxTSos.js → sizeCapture-X5ZJPWSS-C56q6k2T.js} +1 -1
- package/dist/assets/{stateDiagram-OKZ733FA-2fN5h0fl.js → stateDiagram-OKZ733FA-D2lhrHPg.js} +1 -1
- package/dist/assets/stateDiagram-v2-UEYNNEHI-C3wzBtFn.js +1 -0
- package/dist/assets/{swimlanes-SLNWSIFB-m6QzM3CR.js → swimlanes-SLNWSIFB-D1HyP0oO.js} +2 -2
- package/dist/assets/swimlanesDiagram-ULZ7WXOC-Dts8yQMu.js +8 -0
- package/dist/assets/{timeline-definition-Z64GVDOM-B-4XL-3f.js → timeline-definition-Z64GVDOM-R1zaf6JI.js} +1 -1
- package/dist/assets/{vennDiagram-T6HMQDX7-C-2U26ta.js → vennDiagram-T6HMQDX7-BwlaSNYk.js} +1 -1
- package/dist/assets/{wardleyDiagram-T6FBY63Y-BM4F1_6i.js → wardleyDiagram-T6FBY63Y-Dd9-WAib.js} +1 -1
- package/dist/assets/{xychartDiagram-ELKLHX3M-BWBCnHJm.js → xychartDiagram-ELKLHX3M-BVn4eBvu.js} +1 -1
- package/dist/index.html +3 -3
- package/dist/sw.js +1 -1
- package/package.json +1 -1
- package/dist/assets/channel-BBmlxLKm.js +0 -1
- package/dist/assets/classDiagram-JCYQIIEL-Zuuh6WIs.js +0 -1
- package/dist/assets/classDiagram-v2-OCEON4UE-Zuuh6WIs.js +0 -1
- package/dist/assets/feature-workspace-X9kJZ4EG.js +0 -39
- package/dist/assets/stateDiagram-v2-UEYNNEHI-ddGXuRHz.js +0 -1
- package/dist/assets/swimlanesDiagram-ULZ7WXOC-DNmdh3Nm.js +0 -8
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/CodeEditor-
|
|
2
|
-
import{j as e,r,d as bt,u as vt,f as Kt,B as _t,h as Yt,i as We,k as Jt}from"./vendor-react-C2GTiUCy.js";import{L as kt,aa as Qt,a as ae,ab as Zt,ac as Xt,a6 as xt,ad as Be,c as ie,_ as ee,ae as yt,af as en,a4 as tn,ag as nn,ah as sn,ai as Ve,f as an,aj as wt,a2 as on,ak as Ct,u as St,h as rn,D as ln,z as cn,A as dn,E as un,F as pn,G as mn,H as gn,J as se,K as V,al as hn,am as fn,an as bn,ao as Pt,ap as vn,a3 as kn,aq as xn,ar as Ke,as as yn,at as wn,au as Cn,av as Sn,aw as Pn,ax as An}from"./feature-workspace-X9kJZ4EG.js";import{o as Ge,G as He,aG as Oe,bB as jn,a3 as Tn,ao as Ue,L as we,t as Ce,n as In,a8 as En,a9 as At,Q as jt,bC as _e,bD as Mn,j as Tt,U as zn,F as It,z as Dn,bE as Nn,X as Et,bF as $n,S as Rn,bG as Ln,R as Mt,bA as Fn,bH as Bn,$ as Gn,bs as Hn,bv as On,a5 as Un,x as qn,B as Wn,M as Vn,c as Kn,bI as _n,bJ as Yn,bK as Jn,aa as Qn}from"./vendor-ui-CAUHSABu.js";import{u as Z,i as qe,a as Zn,I as Xn}from"./vendor-i18n-B6HjLCnN.js";import{C as es,r as ts,c as ns}from"./feature-chat-CenAll-X.js";import"./vendor-data-DsEZeNPr.js";import"./vendor-markdown-DkITEES2.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))i(a);new MutationObserver(a=>{for(const o of a)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&i(l)}).observe(document,{childList:!0,subtree:!0});function n(a){const o={};return a.integrity&&(o.integrity=a.integrity),a.referrerPolicy&&(o.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?o.credentials="include":a.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function i(a){if(a.ep)return;a.ep=!0;const o=n(a);fetch(a.href,o)}})();function ss({provider:t,title:s,status:n,connectedClassName:i,iconContainerClassName:a,loginButtonClassName:o,onLogin:l}){const c=n.authenticated?i:"border-border bg-card",u=n.loading?"Checking...":n.authenticated?n.email||"Connected":n.error||"Not connected";return e.jsx("div",{className:`rounded-xl border px-3 py-2.5 transition-colors ${c}`,children:e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-3",children:[e.jsx("div",{className:`flex h-9 w-9 flex-shrink-0 items-center justify-center rounded-full ${a}`,children:e.jsx(kt,{provider:t,className:"h-5 w-5"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-sm font-medium text-foreground",children:[s,n.authenticated&&e.jsx(Ge,{className:"h-3.5 w-3.5 flex-shrink-0 text-emerald-500"})]}),e.jsx("div",{className:"truncate text-xs text-muted-foreground",title:u,children:u})]})]}),!n.authenticated&&!n.loading&&e.jsx("button",{onClick:l,className:`${o} flex-shrink-0 rounded-lg px-4 py-1.5 text-sm font-medium text-white transition-colors`,children:"Login"})]})})}const is=[{provider:"claude",title:"Claude Code",connectedClassName:"bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800",iconContainerClassName:"bg-blue-100 dark:bg-blue-900/30",loginButtonClassName:"bg-blue-600 hover:bg-blue-700"},{provider:"cursor",title:"Cursor",connectedClassName:"bg-purple-50 dark:bg-purple-900/20 border-purple-200 dark:border-purple-800",iconContainerClassName:"bg-purple-100 dark:bg-purple-900/30",loginButtonClassName:"bg-purple-600 hover:bg-purple-700"},{provider:"codex",title:"OpenAI Codex",connectedClassName:"bg-gray-100 dark:bg-gray-800/50 border-gray-300 dark:border-gray-600",iconContainerClassName:"bg-gray-100 dark:bg-gray-800",loginButtonClassName:"bg-gray-800 hover:bg-gray-900 dark:bg-gray-700 dark:hover:bg-gray-600"},{provider:"opencode",title:"OpenCode",connectedClassName:"bg-zinc-100 dark:bg-zinc-800/50 border-zinc-300 dark:border-zinc-600",iconContainerClassName:"bg-zinc-100 dark:bg-zinc-800",loginButtonClassName:"bg-zinc-800 hover:bg-zinc-900 dark:bg-zinc-700 dark:hover:bg-zinc-600"}];function as({providerStatuses:t,onOpenProviderLogin:s}){return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("h2",{className:"font-serif text-xl font-bold tracking-tight text-foreground",children:"Connect Your AI Agents"}),e.jsx("p",{className:"mx-auto mt-1 max-w-sm text-sm leading-relaxed text-muted-foreground",children:"Login to one or more AI coding assistants. All are optional."})]}),e.jsx("div",{className:"-mr-1 max-h-[38vh] space-y-2 overflow-y-auto pr-1",children:is.map(n=>e.jsx(ss,{provider:n.provider,title:n.title,status:t[n.provider],connectedClassName:n.connectedClassName,iconContainerClassName:n.iconContainerClassName,loginButtonClassName:n.loginButtonClassName,onLogin:()=>s(n.provider)},n.provider))}),e.jsx("p",{className:"text-center text-xs text-muted-foreground",children:"You can configure these later in Settings."})]})}function os({gitName:t,gitEmail:s,isSubmitting:n,onGitNameChange:i,onGitEmailChange:a}){return e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"mx-auto mb-3 flex h-14 w-14 items-center justify-center rounded-2xl bg-primary/10 ring-1 ring-inset ring-primary/20",children:e.jsx(He,{className:"h-7 w-7 text-primary"})}),e.jsx("h2",{className:"font-serif text-xl font-bold tracking-tight text-foreground",children:"Git Configuration"}),e.jsx("p",{className:"mx-auto mt-1 max-w-sm text-sm leading-relaxed text-muted-foreground",children:"Configure your git identity to ensure proper attribution for commits."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"gitName",className:"mb-2 flex items-center gap-2 text-sm font-medium text-foreground",children:[e.jsx(Oe,{className:"h-4 w-4"}),"Git Name ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx("input",{type:"text",id:"gitName",value:t,onChange:o=>i(o.target.value),className:"w-full rounded-xl border border-border bg-background/60 px-4 py-2.5 text-foreground shadow-sm transition-colors placeholder:text-muted-foreground/60 hover:border-foreground/20 focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary/30",placeholder:"John Doe",required:!0,disabled:n}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"Saved as `git config --global user.name`."})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"gitEmail",className:"mb-2 flex items-center gap-2 text-sm font-medium text-foreground",children:[e.jsx(jn,{className:"h-4 w-4"}),"Git Email ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx("input",{type:"email",id:"gitEmail",value:s,onChange:o=>a(o.target.value),className:"w-full rounded-xl border border-border bg-background/60 px-4 py-2.5 text-foreground shadow-sm transition-colors placeholder:text-muted-foreground/60 hover:border-foreground/20 focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary/30",placeholder:"john@example.com",required:!0,disabled:n}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"Saved as `git config --global user.email`."})]})]})]})}const Ye=[{title:"Git Configuration",icon:He,required:!0},{title:"Connect Agents",icon:Tn,required:!1}];function rs({currentStep:t}){return e.jsx("div",{className:"mb-5",children:e.jsx("div",{className:"flex items-center justify-between",children:Ye.map((s,n)=>{const i=n<t,a=n===t,o=s.icon;return e.jsxs("div",{className:"contents",children:[e.jsxs("div",{className:"flex flex-1 flex-col items-center",children:[e.jsx("div",{className:`flex h-10 w-10 items-center justify-center rounded-full border-2 transition-all duration-200 ${i?"border-emerald-500 bg-emerald-500 text-white shadow-lg shadow-emerald-500/25":a?"border-primary bg-primary text-primary-foreground shadow-lg shadow-primary/25":"border-border bg-card text-muted-foreground"}`,children:i?e.jsx(Ge,{className:"h-5 w-5"}):e.jsx(o,{className:"h-5 w-5"})}),e.jsxs("div",{className:"mt-1.5 text-center",children:[e.jsx("p",{className:`text-sm font-medium ${a?"text-foreground":"text-muted-foreground"}`,children:s.title}),s.required&&e.jsx("span",{className:"text-xs text-red-500",children:"Required"})]})]}),n<Ye.length-1&&e.jsx("div",{className:`mx-2 h-0.5 flex-1 transition-colors duration-200 ${i?"bg-emerald-500":"bg-border"}`})]},s.title)})})})}const Je=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,Qe=async(t,s)=>{try{return(await t.json()).error||s}catch{return s}};function Ze({onComplete:t}){const[s,n]=r.useState(0),[i,a]=r.useState(""),[o,l]=r.useState(""),[c,u]=r.useState(!1),[d,g]=r.useState(""),[p,b]=r.useState(null),{providerAuthStatus:m,checkProviderAuthStatus:v,refreshProviderAuthStatuses:k}=Qt(),M=r.useRef(void 0),x=r.useCallback(async()=>{try{const P=await ae("/api/user/git-config");if(!P.ok)return;const N=await P.json();N.gitName&&a(N.gitName),N.gitEmail&&l(N.gitEmail)}catch(P){console.error("Error loading git config:",P)}},[]);r.useEffect(()=>{x(),k()},[x,k]),r.useEffect(()=>{const P=M.current;M.current=p,P!=null&&p===null&&k()},[p,k]);const A=P=>{b(P)},y=P=>{P===0&&p&&v(p)},E=async()=>{if(g(""),s!==0){n(P=>P+1);return}if(!i.trim()||!o.trim()){g("Both git name and email are required.");return}if(!Je.test(o)){g("Please enter a valid email address.");return}u(!0);try{const P=await ae("/api/user/git-config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({gitName:i,gitEmail:o})});if(!P.ok){const N=await Qe(P,"Failed to save git configuration");throw new Error(N)}n(N=>N+1)}catch(P){g(P instanceof Error?P.message:"Failed to save git configuration")}finally{u(!1)}},L=()=>{g(""),n(P=>P-1)},D=async()=>{u(!0),g("");try{const P=await ae("/api/user/complete-onboarding",{method:"POST"});if(!P.ok){const N=await Qe(P,"Failed to complete onboarding");throw new Error(N)}await t?.()}catch(P){g(P instanceof Error?P.message:"Failed to complete onboarding")}finally{u(!1)}},F=s===0?!!(i.trim()&&o.trim()&&Je.test(o)):!0;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"relative h-screen overflow-y-auto bg-background",children:[e.jsxs("div",{"aria-hidden":!0,className:"pointer-events-none fixed inset-0",children:[e.jsx("div",{className:"absolute -top-40 left-1/2 h-[36rem] w-[36rem] -translate-x-1/2 rounded-full bg-primary/10 blur-3xl"}),e.jsx("div",{className:"absolute -bottom-32 -left-24 h-[26rem] w-[26rem] rounded-full bg-primary/5 blur-3xl"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(hsl(var(--foreground)/0.04)_1px,transparent_1px)] opacity-60 [background-size:22px_22px]"})]}),e.jsx("div",{className:"relative mx-auto flex min-h-full w-full max-w-2xl items-center justify-center p-4",children:e.jsxs("div",{className:"w-full py-6",children:[e.jsx(rs,{currentStep:s}),e.jsxs("div",{className:"rounded-2xl border border-border/70 bg-card/90 p-6 shadow-[0_24px_60px_-20px_hsl(var(--foreground)/0.18)] ring-1 ring-foreground/5 backdrop-blur-xl",children:[s===0?e.jsx(os,{gitName:i,gitEmail:o,isSubmitting:c,onGitNameChange:a,onGitEmailChange:l}):e.jsx(as,{providerStatuses:m,onOpenProviderLogin:A}),d&&e.jsx("div",{role:"alert",className:"mt-5 rounded-xl border border-destructive/30 bg-destructive/10 p-3.5",children:e.jsx("p",{className:"text-sm text-destructive",children:d})}),e.jsxs("div",{className:"mt-6 flex items-center justify-between border-t border-border pt-5",children:[e.jsxs("button",{onClick:L,disabled:s===0||c,className:"flex items-center gap-2 px-4 py-2 text-sm font-medium text-muted-foreground transition-colors duration-200 hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",children:[e.jsx(Ue,{className:"h-4 w-4"}),"Previous"]}),e.jsx("div",{className:"flex items-center gap-3",children:s<1?e.jsx("button",{onClick:E,disabled:!F||c,className:"flex items-center gap-2 rounded-xl bg-primary px-6 py-2.5 font-medium text-primary-foreground shadow-lg shadow-primary/25 transition-all duration-200 hover:brightness-110 active:scale-[0.99] disabled:cursor-not-allowed disabled:opacity-60 disabled:shadow-none",children:c?e.jsxs(e.Fragment,{children:[e.jsx(we,{className:"h-4 w-4 animate-spin"}),"Saving..."]}):e.jsxs(e.Fragment,{children:["Next",e.jsx(Ce,{className:"h-4 w-4"})]})}):e.jsx("button",{onClick:D,disabled:c,className:"flex items-center gap-2 rounded-xl bg-emerald-600 px-6 py-2.5 font-medium text-white shadow-lg shadow-emerald-600/25 transition-all duration-200 hover:bg-emerald-700 active:scale-[0.99] disabled:cursor-not-allowed disabled:opacity-60 disabled:shadow-none",children:c?e.jsxs(e.Fragment,{children:[e.jsx(we,{className:"h-4 w-4 animate-spin"}),"Completing..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Ge,{className:"h-4 w-4"}),"Complete Setup"]})})})]})]})]})})]}),p&&e.jsx(Zt,{isOpen:!!p,onClose:()=>b(null),provider:p,onComplete:y})]})}const ls=["0s","0.15s","0.3s"];function cs(){return e.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[e.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0",children:e.jsx("div",{className:"absolute -top-40 left-1/2 h-[36rem] w-[36rem] -translate-x-1/2 rounded-full bg-primary/10 blur-3xl"})}),e.jsxs("div",{className:"relative text-center",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"mb-5 flex justify-center",children:e.jsx("div",{className:"flex h-16 w-16 items-center justify-center rounded-2xl bg-gradient-to-br from-primary to-primary/80 shadow-lg shadow-primary/25 ring-1 ring-inset ring-white/20",children:e.jsx("img",{src:"/logo.svg",alt:"WindCli",className:"h-9 w-9"})})}),e.jsx("h1",{className:"mb-4 text-2xl font-bold tracking-tight text-foreground",style:{fontFamily:Xt},children:"WindCli"}),e.jsx("p",{className:"sr-only",children:"Loading authentication state…"}),e.jsx("div",{"aria-hidden":!0,className:"flex items-center justify-center gap-2",children:ls.map(t=>e.jsx("div",{className:"h-2 w-2 animate-bounce rounded-full bg-primary",style:{animationDelay:t}},t))})]})]})}function zt({errorMessage:t}){return t?e.jsxs("div",{role:"alert",className:"flex items-start gap-2.5 rounded-xl border border-destructive/30 bg-destructive/10 p-3 text-destructive",children:[e.jsx(In,{className:"mt-0.5 h-4 w-4 flex-shrink-0"}),e.jsx("p",{className:"text-sm leading-relaxed",children:t})]}):null}function fe({id:t,label:s,value:n,onChange:i,placeholder:a,isDisabled:o,type:l="text",name:c,autoComplete:u,icon:d}){const[g,p]=r.useState(!1),b=l==="password",m=b&&g?"text":l;return e.jsxs("div",{children:[e.jsx("label",{htmlFor:t,className:"mb-1.5 block text-sm font-medium text-foreground",children:s}),e.jsxs("div",{className:"group relative",children:[d&&e.jsx(d,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground transition-colors group-focus-within:text-primary"}),e.jsx("input",{id:t,type:m,name:c??t,autoComplete:u,value:n,onChange:v=>i(v.target.value),className:`w-full rounded-xl border border-border bg-background/60 py-2.5 text-foreground shadow-sm transition-colors placeholder:text-muted-foreground/60 hover:border-foreground/20 focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary/30 disabled:cursor-not-allowed disabled:opacity-60 ${d?"pl-10":"pl-3.5"} ${b?"pr-11":"pr-3.5"}`,placeholder:a,required:!0,disabled:o}),b&&e.jsx("button",{type:"button",onClick:()=>p(v=>!v),disabled:o,"aria-label":g?"Hide password":"Show password",className:"absolute right-2 top-1/2 flex h-7 w-7 -translate-y-1/2 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 disabled:opacity-60",children:g?e.jsx(En,{className:"h-4 w-4"}):e.jsx(At,{className:"h-4 w-4"})})]})]})}function Dt({title:t,description:s,children:n,footerText:i,logo:a}){return e.jsxs("div",{className:"relative h-screen overflow-y-auto bg-background",children:[e.jsxs("div",{"aria-hidden":!0,className:"pointer-events-none fixed inset-0",children:[e.jsx("div",{className:"absolute -top-40 left-1/2 h-[36rem] w-[36rem] -translate-x-1/2 rounded-full bg-primary/10 blur-3xl"}),e.jsx("div",{className:"absolute -bottom-32 -left-24 h-[26rem] w-[26rem] rounded-full bg-primary/5 blur-3xl"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(hsl(var(--foreground)/0.04)_1px,transparent_1px)] opacity-60 [background-size:22px_22px]"})]}),e.jsx("div",{className:"relative mx-auto flex min-h-full w-full max-w-md items-center justify-center p-4 py-8",children:e.jsxs("div",{className:"w-full rounded-2xl border border-border/70 bg-card/90 p-8 shadow-[0_24px_60px_-20px_hsl(var(--foreground)/0.18)] ring-1 ring-foreground/5 backdrop-blur-xl sm:p-10",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"mb-5 flex justify-center",children:a??e.jsx("div",{className:"flex h-16 w-16 items-center justify-center rounded-2xl bg-gradient-to-br from-primary to-primary/80 shadow-lg shadow-primary/25 ring-1 ring-inset ring-white/20",children:e.jsx("img",{src:"/logo.svg",alt:"WindCli",className:"h-9 w-9"})})}),e.jsx("h1",{className:"font-serif text-3xl font-bold tracking-tight text-foreground",children:t}),e.jsx("p",{className:"mx-auto mt-2 max-w-xs text-sm leading-relaxed text-muted-foreground",children:s})]}),e.jsx("div",{className:"mt-8",children:n}),e.jsx("div",{className:"mt-6 border-t border-border/60 pt-5 text-center",children:e.jsx("p",{className:"text-xs leading-relaxed text-muted-foreground",children:i})}),!xt&&e.jsxs("div",{className:"mt-4 flex items-center justify-center gap-1.5",children:[e.jsx("svg",{className:"h-3.5 w-3.5 text-muted-foreground/50",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"})}),e.jsx("a",{href:"https://github.com/CaineWind/wacli",target:"_blank",rel:"noopener noreferrer",className:"text-xs text-muted-foreground/50 transition-colors hover:text-muted-foreground",children:"WindCli is open source"})]})]})})]})}const ds={username:"",password:""};function us(){const{t}=Z("auth"),{error:s,login:n}=Be(),[i,a]=r.useState(ds),[o,l]=r.useState(""),[c,u]=r.useState(!1),d=r.useCallback((p,b)=>{a(m=>({...m,[p]:b}))},[]),g=r.useCallback(async p=>{if(p.preventDefault(),l(""),!i.username.trim()||!i.password){l(t("login.errors.requiredFields"));return}u(!0);const b=await n(i.username.trim(),i.password);b.success||l(b.error),u(!1)},[i.password,i.username,n,t]);return e.jsx(Dt,{title:t("login.title"),description:t("login.description"),footerText:"Enter your credentials to access WindCli",children:e.jsxs("form",{onSubmit:g,className:"space-y-4",children:[e.jsx(fe,{id:"username",label:t("login.username"),value:i.username,onChange:p=>d("username",p),placeholder:t("login.placeholders.username"),isDisabled:c,autoComplete:"username",icon:Oe}),e.jsx(fe,{id:"password",label:t("login.password"),value:i.password,onChange:p=>d("password",p),placeholder:t("login.placeholders.password"),isDisabled:c,type:"password",autoComplete:"current-password",icon:jt}),e.jsx(zt,{errorMessage:o||s||""}),e.jsx("button",{type:"submit",disabled:c,className:"flex w-full items-center justify-center gap-2 rounded-xl bg-primary px-4 py-2.5 font-medium text-primary-foreground shadow-lg shadow-primary/25 transition-all duration-200 hover:shadow-primary/30 hover:brightness-110 focus:outline-none focus:ring-2 focus:ring-primary/40 focus:ring-offset-2 focus:ring-offset-card active:scale-[0.99] disabled:cursor-not-allowed disabled:opacity-60",children:c?e.jsxs(e.Fragment,{children:[e.jsx(we,{className:"h-4 w-4 animate-spin"}),t("login.loading")]}):t("login.submit")})]})})}const ps={username:"",password:"",confirmPassword:""};function ms(t){return!t.username.trim()||!t.password||!t.confirmPassword?"Please fill in all fields.":t.username.trim().length<3?"Username must be at least 3 characters long.":t.password.length<6?"Password must be at least 6 characters long.":t.password!==t.confirmPassword?"Passwords do not match.":null}function gs(){const{register:t}=Be(),[s,n]=r.useState(ps),[i,a]=r.useState(""),[o,l]=r.useState(!1),c=r.useCallback((d,g)=>{n(p=>({...p,[d]:g}))},[]),u=r.useCallback(async d=>{d.preventDefault(),a("");const g=ms(s);if(g){a(g);return}l(!0);const p=await t(s.username.trim(),s.password);p.success||a(p.error),l(!1)},[s,t]);return e.jsx(Dt,{title:"Welcome to WindCli",description:"Set up your account to get started",footerText:"This is a single-user system. Only one account can be created.",children:e.jsxs("form",{onSubmit:u,className:"space-y-4",children:[e.jsx(fe,{id:"username",name:"username",label:"Username",value:s.username,onChange:d=>c("username",d),placeholder:"Choose a username",isDisabled:o,autoComplete:"username",icon:Oe}),e.jsx(fe,{id:"password",name:"password",label:"Password",value:s.password,onChange:d=>c("password",d),placeholder:"Create a password",isDisabled:o,type:"password",autoComplete:"new-password",icon:jt}),e.jsx(fe,{id:"confirmPassword",name:"confirmPassword",label:"Confirm Password",value:s.confirmPassword,onChange:d=>c("confirmPassword",d),placeholder:"Re-enter your password",isDisabled:o,type:"password",autoComplete:"new-password",icon:_e}),e.jsxs("p",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:[e.jsx(_e,{className:"h-3.5 w-3.5"}),"At least 3 characters for username, 6 for password."]}),e.jsx(zt,{errorMessage:i}),e.jsx("button",{type:"submit",disabled:o,className:"flex w-full items-center justify-center gap-2 rounded-xl bg-primary px-4 py-2.5 font-medium text-primary-foreground shadow-lg shadow-primary/25 transition-all duration-200 hover:shadow-primary/30 hover:brightness-110 focus:outline-none focus:ring-2 focus:ring-primary/40 focus:ring-offset-2 focus:ring-offset-card active:scale-[0.99] disabled:cursor-not-allowed disabled:opacity-60",children:o?e.jsxs(e.Fragment,{children:[e.jsx(we,{className:"h-4 w-4 animate-spin"}),"Setting up..."]}):"Create Account"})]})})}function hs({children:t}){const{user:s,isLoading:n,needsSetup:i,hasCompletedOnboarding:a,refreshOnboardingStatus:o}=Be();return n?e.jsx(cs,{}):xt?a?e.jsx(e.Fragment,{children:t}):e.jsx(Ze,{onComplete:o}):i?e.jsx(gs,{}):s?a?e.jsx(e.Fragment,{children:t}):e.jsx(Ze,{onComplete:o}):e.jsx(us,{})}const Re=t=>t.replace(/\\/g,"/"),Nt=(t,s)=>{for(const n of t)n.type==="file"?s.push({name:n.name,path:n.path}):n.children&&n.children.length>0&&Nt(n.children,s)},fs=(t,s)=>{const n=Re(s).replace(/^\.\//,"").replace(/^\/+/,"");if(!n)return null;const i=t.find(o=>{const l=Re(o.path);return l===n||l.endsWith(`/${n}`)});if(i)return i.path;const a=n.split("/").pop()||n;return t.find(o=>o.name===a)?.path??null};function bs(t,s){const n=t?.projectId,i=r.useRef({projectId:void 0,files:null}),a=r.useCallback(()=>{if(!n)return Promise.resolve([]);if(i.current.projectId===n&&i.current.files)return i.current.files;const o=(async()=>{try{const l=await ie.getFiles(n);if(!l.ok)return[];const c=await l.json(),u=Array.isArray(c)?c:[],d=[];return Nt(u,d),d}catch{return[]}})();return i.current={projectId:n,files:o},o},[n]);return r.useCallback((o,l)=>{const c=Re(o).trim();a().then(u=>{const d=fs(u,c);s(d??o,l)})},[a,s])}const vs=({selectedProject:t,isMobile:s,initialWidth:n=600})=>{const[i,a]=r.useState(null),[o,l]=r.useState(n),[c,u]=r.useState(!1),[d,g]=r.useState(!1),[p,b]=r.useState(!1),m=r.useRef(null),v=r.useCallback((A,y=null)=>{const L=A.replace(/\\/g,"/").split("/").pop()||A;a({name:L,path:A,projectId:t?.projectId,diffInfo:y})},[t?.projectId]),k=r.useCallback(()=>{a(null),u(!1)},[]),M=r.useCallback(()=>{u(A=>!A)},[]),x=r.useCallback(A=>{s||(b(!0),g(!0),A.preventDefault())},[s]);return r.useEffect(()=>{const A=E=>{if(!d)return;const D=m.current?.parentElement?.parentElement;if(!D)return;const F=D.getBoundingClientRect(),P=F.right-E.clientX,N=300,K=F.width*.8;P>=N&&P<=K&&l(P)},y=()=>{g(!1)};return d&&(document.addEventListener("mousemove",A),document.addEventListener("mouseup",y),document.body.style.cursor="col-resize",document.body.style.userSelect="none"),()=>{document.removeEventListener("mousemove",A),document.removeEventListener("mouseup",y),document.body.style.cursor="",document.body.style.userSelect=""}},[d]),{editingFile:i,editorWidth:o,editorExpanded:c,hasManualWidth:p,resizeHandleRef:m,handleFileOpen:v,handleCloseEditor:k,handleToggleEditorExpand:M,handleResizeStart:x}},Xe=r.lazy(()=>ee(()=>import("./CodeEditor-Cx2QOPKS.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8])));function et(){return e.jsx("div",{className:"flex h-full min-h-0 flex-1 items-center justify-center",role:"status","aria-label":"Loading editor",children:e.jsx("div",{className:"h-5 w-5 animate-spin rounded-full border-2 border-muted-foreground/30 border-t-muted-foreground"})})}const ks=200,De=280;function xs({editingFile:t,isMobile:s,editorExpanded:n,editorWidth:i,hasManualWidth:a,resizeHandleRef:o,onResizeStart:l,onCloseEditor:c,onToggleEditorExpand:u,projectPath:d,fillSpace:g}){const[p,b]=r.useState(!1),m=r.useRef(null),[v,k]=r.useState(i);if(r.useEffect(()=>{if(!t||s||p)return;const x=()=>{if(!m.current)return;const E=m.current.parentElement;if(!E)return;const D=E.clientWidth-ks;D<De?b(!0):i>D?k(D):k(i)};x(),window.addEventListener("resize",x);const A=new ResizeObserver(x),y=m.current?.parentElement;return y&&A.observe(y),()=>{window.removeEventListener("resize",x),A.disconnect()}},[t,s,p,i]),!t)return null;if(s||p)return e.jsx(r.Suspense,{fallback:e.jsx(et,{}),children:e.jsx(Xe,{file:t,onClose:()=>{b(!1),c()},projectPath:d,isSidebar:!1})});const M=n||g&&!a;return e.jsxs("div",{ref:m,className:`flex h-full min-w-0 ${n?"flex-1":""}`,children:[!n&&e.jsx("div",{ref:o,onMouseDown:l,className:"group relative w-1 flex-shrink-0 cursor-col-resize bg-gray-200 transition-colors hover:bg-blue-500 dark:bg-gray-700 dark:hover:bg-blue-600",title:"Drag to resize",children:e.jsx("div",{className:"absolute inset-y-0 left-1/2 w-1 -translate-x-1/2 bg-blue-500 opacity-0 transition-opacity group-hover:opacity-100 dark:bg-blue-600"})}),e.jsx("div",{className:`h-full overflow-hidden border-l border-gray-200 dark:border-gray-700 ${M?"min-w-0 flex-1":`min-w-[ flex-shrink-0${De}px]`}`,style:M?void 0:{width:`${v}px`,minWidth:`${De}px`},children:e.jsx(r.Suspense,{fallback:e.jsx(et,{}),children:e.jsx(Xe,{file:t,onClose:c,projectPath:d,isSidebar:!0,isExpanded:n,onToggleExpand:u,onPopOut:()=>b(!0)})})})]})}function ys({hasSelectedProject:t,children:s}){const n=t?"flex min-w-0 flex-col gap-1.5 sm:flex-row sm:items-center sm:gap-3":"flex min-w-0 flex-row items-center justify-between gap-2 sm:gap-3";return e.jsx("div",{className:n,children:s})}function ws(t){const s=r.useRef(!1),n=r.useCallback(o=>{o&&(o.preventDefault(),o.stopPropagation()),t()},[t]),i=r.useCallback(o=>{s.current=!0,n(o),window.setTimeout(()=>{s.current=!1},350)},[n]);return{handleMobileMenuClick:r.useCallback(o=>{if(s.current){o.preventDefault(),o.stopPropagation();return}n(o)},[n]),handleMobileMenuTouchEnd:i}}function $t({onMenuClick:t,compact:s=!1}){const{handleMobileMenuClick:n,handleMobileMenuTouchEnd:i}=ws(t),a=s?"flex h-10 w-10 items-center justify-center rounded-lg text-muted-foreground hover:bg-accent/60 hover:text-foreground pwa-menu-button":"flex h-10 w-10 flex-shrink-0 touch-manipulation items-center justify-center rounded-lg text-muted-foreground hover:bg-accent/60 hover:text-foreground active:scale-95 pwa-menu-button";return e.jsx("button",{onClick:n,onTouchEnd:i,className:a,"aria-label":"Open menu",children:e.jsx("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 6h16M4 12h16M4 18h16"})})})}const Rt={kind:"builtin",id:"herdr",labelKey:"tabs.herdr",icon:Mn},Cs=[{kind:"builtin",id:"chat",labelKey:"tabs.chat",icon:Tt},{kind:"builtin",id:"shell",labelKey:"tabs.shell",icon:zn},Rt,{kind:"builtin",id:"files",labelKey:"tabs.files",icon:It},{kind:"builtin",id:"git",labelKey:"tabs.git",icon:He}],Ss={kind:"builtin",id:"browser",labelKey:"tabs.browser",icon:Dn},Ps={kind:"builtin",id:"tasks",labelKey:"tabs.tasks",icon:Nn};function As({hasSelectedProject:t,shouldShowTasksTab:s,shouldShowBrowserTab:n}){return t?[...Cs,...n?[Ss]:[],...s?[Ps]:[]]:[Rt]}function js({activeTab:t,setActiveTab:s,hasSelectedProject:n,shouldShowTasksTab:i,shouldShowBrowserTab:a}){const{t:o}=Z(),{plugins:l}=yt(),c=As({hasSelectedProject:n,shouldShowBrowserTab:a,shouldShowTasksTab:i}),u=(n?l:[]).filter(p=>p.enabled).map(p=>({kind:"plugin",id:`plugin:${p.name}`,label:p.displayName,pluginName:p.name,iconFile:p.icon})),d=[...c,...u],g=p=>{const b=p.currentTarget.closest('[role="tablist"]');if(!b)return;const m=Array.from(b.querySelectorAll('[role="tab"]')),v=m.indexOf(p.currentTarget);let k;if(p.key==="ArrowRight")k=(v+1)%m.length;else if(p.key==="ArrowLeft")k=(v-1+m.length)%m.length;else if(p.key==="Home")k=0;else if(p.key==="End")k=m.length-1;else return;p.preventDefault(),m[k]?.focus(),m[k]?.click()};return e.jsx(en,{role:"tablist","aria-label":o("tabs.views",{defaultValue:"Workspace views"}),className:d.length===1?"min-w-max bg-transparent p-0 shadow-none":"min-w-max border border-border/40 bg-muted/50 shadow-inner shadow-black/[0.025] dark:shadow-black/10",children:d.map((p,b)=>{const m=p.id===t,v=p.kind==="builtin"?o(p.labelKey):p.label;return e.jsxs(r.Fragment,{children:[b===c.length&&u.length>0&&e.jsx("span",{"aria-hidden":"true",className:"mx-1 h-4 w-px shrink-0 bg-border"}),e.jsx(tn,{content:v,position:"bottom",children:e.jsxs(nn,{role:"tab","aria-label":v,"aria-selected":m,tabIndex:m?0:-1,isActive:m,onClick:()=>s(p.id),onKeyDown:g,className:"h-10 max-w-44 px-3 py-[5px] sm:h-8 sm:px-2.5",children:[p.kind==="builtin"?e.jsx(p.icon,{className:"h-3.5 w-3.5 shrink-0",strokeWidth:m?2.2:1.8}):e.jsx(sn,{pluginName:p.pluginName,iconFile:p.iconFile,className:"flex h-3.5 w-3.5 shrink-0 items-center justify-center [&>svg]:h-full [&>svg]:w-full"}),e.jsx("span",{className:`${m?"inline max-w-28":"hidden"} truncate sm:max-w-36 lg:inline`,children:v})]})})]},`${p.id}-${b}`)})})}function Ts(t,s,n,i){return t.startsWith("plugin:")&&i?i:t==="files"?n("mainContent.projectFiles"):t==="git"?n("tabs.git"):t==="herdr"?n("tabs.herdr"):t==="tasks"&&s?"TaskMaster":t==="browser"?n("tabs.browser"):"Project"}function Is({activeTab:t,selectedProject:s,selectedSession:n,shouldShowTasksTab:i}){const{t:a}=Z(),{plugins:o}=yt(),l=t.startsWith("plugin:")?o.find(d=>d.name===t.replace("plugin:",""))?.displayName:void 0,c=t==="chat"&&!!n,u=t==="chat"&&!n;return e.jsxs("div",{className:"scrollbar-hide flex min-w-0 flex-1 items-center gap-2 overflow-x-auto",children:[c&&e.jsx("div",{className:"flex h-5 w-5 flex-shrink-0 items-center justify-center",children:e.jsx(kt,{provider:n?.__provider,className:"h-4 w-4"})}),e.jsx("div",{className:"min-w-0 flex-1",children:t==="chat"&&n?e.jsxs("div",{className:"min-w-0",children:[e.jsx("h2",{title:Ve(n),className:"truncate text-sm font-semibold leading-tight text-foreground",children:Ve(n)}),e.jsx("div",{className:"truncate text-[11px] leading-tight text-muted-foreground",children:s.displayName})]}):u?e.jsxs("div",{className:"min-w-0",children:[e.jsx("h2",{className:"text-base font-semibold leading-tight text-foreground",children:a("mainContent.newSession")}),e.jsx("div",{className:"truncate text-xs leading-tight text-muted-foreground",children:s.displayName})]}):e.jsxs("div",{className:"min-w-0",children:[e.jsx("h2",{className:"text-sm font-semibold leading-tight text-foreground",children:Ts(t,i,a,l)}),e.jsx("div",{className:"truncate text-[11px] leading-tight text-muted-foreground",children:s.displayName})]})})]})}function tt({activeTab:t,setActiveTab:s,selectedProject:n,selectedSession:i,shouldShowTasksTab:a,shouldShowBrowserTab:o,isMobile:l,onMenuClick:c}){const{t:u}=Z(),d=r.useRef(null),[g,p]=r.useState(!1),[b,m]=r.useState(!1),v=g||b,k=r.useCallback(()=>{const x=d.current;x&&(p(x.scrollLeft>2),m(x.scrollLeft<x.scrollWidth-x.clientWidth-2))},[]);r.useEffect(()=>{const x=d.current;if(!x)return;k();const A=new ResizeObserver(k);return A.observe(x),x.firstElementChild&&A.observe(x.firstElementChild),()=>A.disconnect()},[k]),r.useEffect(()=>{const x=d.current;if(!x)return;const A=y=>{if(Math.abs(y.deltaY)<=Math.abs(y.deltaX))return;const E=x.scrollWidth-x.clientWidth;if(!(y.deltaY<0?x.scrollLeft>0:x.scrollLeft<E))return;y.preventDefault();const D=y.deltaMode===WheelEvent.DOM_DELTA_LINE?20:1;x.scrollBy({left:y.deltaY*D,behavior:"auto"})};return x.addEventListener("wheel",A,{passive:!1}),()=>x.removeEventListener("wheel",A)},[]),r.useEffect(()=>{const x=window.requestAnimationFrame(()=>{d.current?.querySelector('[role="tab"][aria-selected="true"]')?.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"}),k()});return()=>window.cancelAnimationFrame(x)},[t,k]);const M=x=>{const A=d.current;A&&A.scrollBy({left:x*Math.max(180,A.clientWidth*.65),behavior:"smooth"})};return e.jsx("header",{className:"pwa-header-safe flex-shrink-0 border-b border-border/60 bg-background/95 px-3 py-1.5 backdrop-blur-sm sm:px-4 sm:py-2",children:e.jsxs(ys,{hasSelectedProject:!!n,children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-2 sm:max-w-[min(34%,24rem)] sm:flex-[1_1_18rem]",children:[l&&e.jsx($t,{onMenuClick:c}),n&&e.jsx(Is,{activeTab:t,selectedProject:n,selectedSession:i,shouldShowTasksTab:a})]}),e.jsx("div",{className:"-mx-3 min-w-0 sm:mx-0 sm:flex-1",children:e.jsxs("div",{className:"relative ml-auto w-fit max-w-full",children:[g&&e.jsx("div",{className:"pointer-events-none absolute inset-y-0 left-0 z-10 w-12 bg-gradient-to-r from-background via-background/90 to-transparent"}),e.jsx("div",{ref:d,onScroll:k,className:an("scrollbar-hide max-w-full scroll-smooth overflow-x-auto overscroll-x-contain px-3 [-webkit-overflow-scrolling:touch]",v?"sm:px-9":"sm:pl-3 sm:pr-0"),children:e.jsx(js,{activeTab:t,setActiveTab:s,hasSelectedProject:!!n,shouldShowTasksTab:a,shouldShowBrowserTab:o})}),b&&e.jsx("div",{className:"pointer-events-none absolute inset-y-0 right-0 z-10 w-12 bg-gradient-to-l from-background via-background/90 to-transparent"}),g&&e.jsx("button",{type:"button",onClick:()=>M(-1),"aria-label":u("navigation.scrollTabsLeft",{defaultValue:"Scroll tabs left"}),className:"absolute left-1 top-1/2 z-20 hidden h-7 w-7 -translate-y-1/2 items-center justify-center rounded-md border border-border/70 bg-background/95 text-muted-foreground shadow-sm outline-none hover:bg-accent hover:text-foreground focus-visible:ring-2 focus-visible:ring-primary/60 sm:flex",children:e.jsx(Ue,{className:"h-4 w-4"})}),b&&e.jsx("button",{type:"button",onClick:()=>M(1),"aria-label":u("navigation.scrollTabsRight",{defaultValue:"Scroll tabs right"}),className:"absolute right-1 top-1/2 z-20 hidden h-7 w-7 -translate-y-1/2 items-center justify-center rounded-md border border-border/70 bg-background/95 text-muted-foreground shadow-sm outline-none hover:bg-accent hover:text-foreground focus-visible:ring-2 focus-visible:ring-primary/60 sm:flex",children:e.jsx(Ce,{className:"h-4 w-4"})})]})})]})})}function nt({mode:t,isMobile:s,onMenuClick:n,showMobileHeader:i=!0}){const{t:a}=Z(),o=t==="loading";return e.jsxs("div",{className:"flex h-full flex-col",children:[s&&i&&e.jsx("div",{className:"pwa-header-safe flex-shrink-0 border-b border-border/50 bg-background/80 p-2 backdrop-blur-sm sm:p-3",children:e.jsx($t,{onMenuClick:n,compact:!0})}),o?e.jsx("div",{className:"flex flex-1 items-center justify-center",children:e.jsxs("div",{className:"text-center text-muted-foreground",children:[e.jsx("div",{className:"mx-auto mb-4 h-10 w-10",children:e.jsx("div",{className:"h-full w-full rounded-full border-[3px] border-muted border-t-primary",style:{animation:"spin 1s linear infinite",WebkitAnimation:"spin 1s linear infinite",MozAnimation:"spin 1s linear infinite"}})}),e.jsx("h2",{className:"mb-1 text-lg font-semibold text-foreground",children:a("mainContent.loading")}),e.jsx("p",{className:"text-sm",children:a("mainContent.settingUpWorkspace")})]})}):e.jsx("div",{className:"flex flex-1 items-center justify-center",children:e.jsxs("div",{className:"mx-auto max-w-md px-6 text-center",children:[e.jsx("div",{className:"mx-auto mb-5 flex h-14 w-14 items-center justify-center rounded-2xl bg-muted/50",children:e.jsx(It,{className:"h-7 w-7 text-muted-foreground"})}),e.jsx("h2",{className:"mb-2 text-xl font-semibold text-foreground",children:a("mainContent.chooseProject")}),e.jsx("p",{className:"mb-5 text-sm leading-relaxed text-muted-foreground",children:a("mainContent.selectProjectDescription")}),e.jsx("div",{className:"rounded-xl border border-primary/10 bg-primary/5 p-3.5",children:e.jsxs("p",{className:"text-sm text-primary",children:[e.jsxs("strong",{children:[a("mainContent.tip"),":"]})," ",a(s?"mainContent.createProjectMobile":"mainContent.createProjectDesktop")]})})]})})]})}const Es=r.createContext(null),Ne={didCatch:!1,error:null};let Ms=class extends r.Component{constructor(s){super(s),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=Ne}static getDerivedStateFromError(s){return{didCatch:!0,error:s}}resetErrorBoundary(){const{error:s}=this.state;if(s!==null){for(var n,i,a=arguments.length,o=new Array(a),l=0;l<a;l++)o[l]=arguments[l];(n=(i=this.props).onReset)===null||n===void 0||n.call(i,{args:o,reason:"imperative-api"}),this.setState(Ne)}}componentDidCatch(s,n){var i,a;(i=(a=this.props).onError)===null||i===void 0||i.call(a,s,n)}componentDidUpdate(s,n){const{didCatch:i}=this.state,{resetKeys:a}=this.props;if(i&&n.error!==null&&zs(s.resetKeys,a)){var o,l;(o=(l=this.props).onReset)===null||o===void 0||o.call(l,{next:a,prev:s.resetKeys,reason:"keys"}),this.setState(Ne)}}render(){const{children:s,fallbackRender:n,FallbackComponent:i,fallback:a}=this.props,{didCatch:o,error:l}=this.state;let c=s;if(o){const u={error:l,resetErrorBoundary:this.resetErrorBoundary};if(typeof n=="function")c=n(u);else if(i)c=r.createElement(i,u);else if(a!==void 0)c=a;else throw l}return r.createElement(Es.Provider,{value:{didCatch:o,error:l,resetErrorBoundary:this.resetErrorBoundary}},c)}};function zs(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return t.length!==s.length||t.some((n,i)=>!Object.is(n,s[i]))}function Ds(t){return t instanceof Error?`${t.name}: ${t.message}`:String(t)}function Ns({error:t,resetErrorBoundary:s,showDetails:n,componentStack:i}){return e.jsx("div",{className:"flex flex-col items-center justify-center p-8 text-center",children:e.jsxs("div",{className:"max-w-md rounded-lg border border-red-200 bg-red-50 p-6",children:[e.jsxs("div",{className:"mb-4 flex items-center",children:[e.jsx("div",{className:"flex-shrink-0",children:e.jsx("svg",{className:"h-5 w-5 text-red-400",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"})})}),e.jsx("h3",{className:"ml-3 text-sm font-medium text-red-800",children:"Something went wrong"})]}),e.jsxs("div",{className:"text-sm text-red-700",children:[e.jsx("p",{className:"mb-2",children:"An error occurred while loading this view."}),n&&e.jsxs("details",{className:"mt-4",children:[e.jsx("summary",{className:"cursor-pointer font-mono text-xs",children:"Error Details"}),e.jsxs("pre",{className:"mt-2 max-h-40 overflow-auto rounded bg-red-100 p-2 text-xs",children:[Ds(t),i]})]})]}),e.jsx("div",{className:"mt-4",children:e.jsx("button",{onClick:s,className:"rounded bg-red-600 px-4 py-2 text-sm text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-red-500",children:"Try Again"})})]})})}function Lt({children:t,showDetails:s=!1,onRetry:n=void 0,resetKeys:i=void 0}){const[a,o]=r.useState(null),l=r.useCallback((d,g)=>{console.error("ErrorBoundary caught an error:",d,g),o(g?.componentStack??null)},[]),c=r.useCallback(()=>{o(null),n?.()},[n]),u=r.useCallback(({error:d,resetErrorBoundary:g})=>e.jsx(Ns,{error:d,resetErrorBoundary:g,showDetails:s,componentStack:a}),[s,a]);return e.jsx(Ms,{fallbackRender:u,onError:l,onReset:c,resetKeys:i,children:t})}const $s=r.lazy(()=>ee(()=>import("./FileTree-CaCZBfXB.js"),__vite__mapDeps([9,1,5,6,7,8,3]))),Rs=r.lazy(()=>ee(()=>import("./StandaloneShell-C_SgfnxT.js"),__vite__mapDeps([10,1,11,5,6,7,8,3,12]))),Ls=r.lazy(()=>ee(()=>import("./GitPanel-C8vu-HU9.js"),__vite__mapDeps([13,1,5,6,7,8,3]))),Fs=r.lazy(()=>ee(()=>import("./feature-workspace-X9kJZ4EG.js").then(t=>t.ay),__vite__mapDeps([5,1,6,7,8,3]))),Bs=r.lazy(()=>ee(()=>import("./index-BIKUx4Nd.js"),__vite__mapDeps([14,1,5,6,7,8,3])).then(t=>({default:t.BrowserUsePanel}))),st=r.lazy(()=>ee(()=>import("./index-BnTqIKbW.js"),__vite__mapDeps([15,1,10,11,5,6,7,8,3,12])).then(t=>({default:t.HerdrPanel}))),Gs=r.lazy(()=>ee(()=>import("./TaskMasterPanel-ePMcx8a-.js"),__vite__mapDeps([16,5,1,6,7,8,3,4])));function Hs(){return e.jsx("div",{className:"flex h-full w-full items-center justify-center",role:"status","aria-label":"Loading view",children:e.jsx("div",{className:"h-5 w-5 animate-spin rounded-full border-2 border-muted-foreground/30 border-t-muted-foreground"})})}function X({children:t,resetKey:s}){return e.jsx(Lt,{resetKeys:[s],onRetry:()=>window.location.reload(),children:e.jsx(r.Suspense,{fallback:e.jsx(Hs,{}),children:t})})}function Os({selectedProject:t,selectedSession:s,activeTab:n,setActiveTab:i,ws:a,sendMessage:o,isMobile:l,onMenuClick:c,isLoading:u,onInputFocusChange:d,onSessionProcessing:g,onSessionIdle:p,processingSessions:b,onNavigateToSession:m,onSessionEstablished:v,onShowSettings:k,externalMessageUpdate:M,newSessionTrigger:x,onProjectSelect:A,onProjectsRefresh:y}){const{preferences:E}=wt(),{showRawParameters:L,showThinking:D,sendByCtrlEnter:F}=E,{tasksEnabled:P,isTaskMasterInstalled:N}=on(),[K,U]=r.useState(!1),[W,I]=r.useState(n==="tasks"),H=!!(P&&N),$=K,{editingFile:R,editorWidth:re,editorExpanded:te,hasManualWidth:le,resizeHandleRef:ce,handleFileOpen:f,handleCloseEditor:z,handleToggleEditorExpand:q,handleResizeStart:J}=vs({selectedProject:t,isMobile:l}),Pe=bs(t,f);r.useEffect(()=>{!H&&n==="tasks"&&i("chat")},[H,n,i]),r.useEffect(()=>{n==="tasks"&&I(!0)},[n]);const ue=r.useCallback(async()=>{try{const ne=await ae("/api/browser-use/settings"),be=await ne.json();U(!!(ne.ok&&be?.success!==!1&&be?.data?.settings?.enabled))}catch{U(!1)}},[]);return r.useEffect(()=>(ue(),window.addEventListener("browserUseSettingsChanged",ue),()=>window.removeEventListener("browserUseSettingsChanged",ue)),[ue]),r.useEffect(()=>{!$&&n==="browser"&&i("chat")},[$,n,i]),Ct({openFile:ne=>{i("files"),f(ne)},openFileInEditor:ne=>{Pe(ne)}}),u?e.jsx(nt,{mode:"loading",isMobile:l,onMenuClick:c}):t?e.jsxs("div",{className:"flex h-full flex-col",children:[e.jsx(tt,{activeTab:n,setActiveTab:i,selectedProject:t,selectedSession:s,shouldShowTasksTab:H,shouldShowBrowserTab:$,isMobile:l,onMenuClick:c}),e.jsxs("div",{className:"flex min-h-0 flex-1 overflow-hidden",children:[e.jsxs("div",{className:`flex min-h-0 min-w-[200px] flex-col overflow-hidden ${te?"hidden":""} flex-1`,children:[e.jsx("div",{className:`h-full ${n==="chat"?"block":"hidden"}`,children:e.jsx(Lt,{showDetails:!0,children:e.jsx(es,{isActive:n==="chat",selectedProject:t,selectedSession:s,ws:a,sendMessage:o,onFileOpen:f,onInputFocusChange:d,onSessionProcessing:g,onSessionIdle:p,processingSessions:b,onNavigateToSession:m,onSessionEstablished:v,onShowSettings:k,showRawParameters:L,showThinking:D,sendByCtrlEnter:F,externalMessageUpdate:M,newSessionTrigger:x,onShowAllTasks:P?()=>i("tasks"):null})})}),n==="files"&&e.jsx("div",{className:"h-full overflow-hidden",children:e.jsx(X,{resetKey:"files",children:e.jsx($s,{selectedProject:t,onFileOpen:f})})}),n==="shell"&&e.jsx("div",{className:"h-full w-full overflow-hidden",children:e.jsx(X,{resetKey:"shell",children:e.jsx(Rs,{project:t,session:s,showHeader:!1,isActive:n==="shell"})})}),n==="herdr"&&e.jsx("div",{className:"h-full w-full overflow-hidden bg-gray-900",children:e.jsx(X,{resetKey:"herdr",children:e.jsx(st,{isActive:n==="herdr"})})}),n==="git"&&e.jsx("div",{className:"h-full overflow-hidden",children:e.jsx(X,{resetKey:"git",children:e.jsx(Ls,{selectedProject:t,isMobile:l,onFileOpen:f,onProjectSelect:A,onProjectsRefresh:y})})}),H&&W&&e.jsx(X,{resetKey:"tasks",children:e.jsx(Gs,{isVisible:n==="tasks"})}),$&&n==="browser"&&e.jsx("div",{className:"h-full overflow-hidden",children:e.jsx(X,{resetKey:"browser",children:e.jsx(Bs,{isVisible:n==="browser",onShowSettings:k})})}),n.startsWith("plugin:")&&e.jsx("div",{className:"h-full overflow-hidden",children:e.jsx(X,{resetKey:n,children:e.jsx(Fs,{pluginName:n.replace("plugin:",""),selectedProject:t,selectedSession:s})})})]}),e.jsx(X,{resetKey:`editor:${R?.path??"closed"}`,children:e.jsx(xs,{editingFile:R,isMobile:l,editorExpanded:te,editorWidth:re,hasManualWidth:le,resizeHandleRef:ce,onResizeStart:J,onCloseEditor:z,onToggleEditorExpand:q,projectPath:t.path,fillSpace:n==="files"})})]})]}):e.jsxs("div",{className:"flex h-full flex-col",children:[e.jsx(tt,{activeTab:n,setActiveTab:i,selectedProject:null,selectedSession:null,shouldShowTasksTab:!1,shouldShowBrowserTab:!1,isMobile:l,onMenuClick:c}),e.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",children:n==="herdr"?e.jsx("div",{className:"h-full w-full overflow-hidden bg-gray-900",children:e.jsx(X,{resetKey:"herdr-empty-project",children:e.jsx(st,{isActive:!0})})}):e.jsx(nt,{mode:"empty",isMobile:l,onMenuClick:c,showMobileHeader:!1})})]})}const Us=bt.memo(Os);function Se(t){const[s,n]=r.useState([]),{enabled:i,deps:a,fetcher:o,parse:l}=t;return r.useEffect(()=>{if(!i){n([]);return}const c=new AbortController;return o(c.signal).then(u=>u.json()).then(u=>{c.signal.aborted||n(l(u))}).catch(u=>{c.signal.aborted||u instanceof DOMException&&u.name==="AbortError"||n([])}),()=>c.abort()},[i,...a]),s}function qs(t,s){return Se({enabled:s&&!!t,deps:[t],fetcher:n=>{const i=new URLSearchParams({limit:"50",offset:"0"});return ae(`/api/projects/${encodeURIComponent(t)}/sessions?${i.toString()}`,{signal:n})},parse:n=>(n.sessions??[]).map(i=>({id:i.id,label:i.title||i.summary||i.name||i.id,provider:i.__provider||i.provider}))})}const Ws=500;function Ft(t,s){for(const n of t){if(s.length>=Ws)return;n.type==="file"?s.push({path:n.path,name:n.name}):n.children&&n.children.length>0&&Ft(n.children,s)}}function Vs(t,s){return Se({enabled:s&&!!t,deps:[t],fetcher:n=>ie.getFiles(t,{signal:n}),parse:n=>{const i=Array.isArray(n)?n:[],a=[];return Ft(i,a),a}})}function Ks(t,s){return Se({enabled:s&&!!t,deps:[t],fetcher:n=>{const i=new URLSearchParams({project:t,limit:"50"});return ae(`/api/git/commits?${i.toString()}`,{signal:n})},parse:n=>n.commits?n.commits.map(i=>({hash:i.hash,shortHash:i.hash.slice(0,7),message:i.message,author:i.author})):[]})}const _s=2,Ys=250;function Js(t,s,n){const[i,a]=r.useState([]),o=r.useRef(0),l=r.useRef(null);return r.useEffect(()=>{const c=s.trim();if(!n||!t||c.length<_s){a([]),l.current?.close(),l.current=null;return}l.current?.close(),l.current=null,o.current++;const u=setTimeout(()=>{const d=++o.current,g=ie.searchConversationsUrl(c),p=new EventSource(g);l.current=p;const b=[];p.addEventListener("result",v=>{if(d!==o.current){p.close();return}try{const M=JSON.parse(v.data).projectResult;if(M.projectId!==t)return;for(const x of M.sessions)b.push({sessionId:x.sessionId,label:x.sessionSummary||x.sessionId,snippet:x.matches[0]?.snippet??"",provider:x.provider});a([...b])}catch{}});const m=()=>{d===o.current&&(p.close(),l.current=null)};p.addEventListener("done",m),p.addEventListener("error",m)},Ys);return()=>{clearTimeout(u)}},[t,s,n]),r.useEffect(()=>()=>{l.current?.close(),l.current=null},[]),i}function Qs(t,s){return Se({enabled:s&&!!t,deps:[t],fetcher:n=>{const i=new URLSearchParams({project:t});return ae(`/api/git/branches?${i.toString()}`,{signal:n})},parse:n=>(n.localBranches??[]).map(i=>({name:i}))})}async function ke(t,s){return(await ae(t,{method:"POST",body:JSON.stringify(s)})).json()}function Zs(t){const s=r.useCallback(()=>t?ke("/api/git/fetch",{project:t}):Promise.resolve(),[t]),n=r.useCallback(()=>t?ke("/api/git/pull",{project:t}):Promise.resolve(),[t]),i=r.useCallback(()=>t?ke("/api/git/push",{project:t}):Promise.resolve(),[t]),a=r.useCallback(o=>t?ke("/api/git/checkout",{project:t,branch:o}):Promise.resolve(),[t]);return{fetch:s,pull:n,push:i,checkout:a}}const it={actions:"Actions",files:"Files",sessions:"Sessions",commits:"Commits",branches:"Branches"},Xs=[{id:"chat",label:"Go to Chat",keywords:"chat messages conversation"},{id:"files",label:"Go to Files",keywords:"files file tree explorer"},{id:"shell",label:"Go to Shell",keywords:"shell terminal console"},{id:"herdr",label:"Go to Herdr",keywords:"herdr agents panes workspace terminal"},{id:"git",label:"Go to Git",keywords:"git diff branches"},{id:"tasks",label:"Go to Tasks",keywords:"tasks taskmaster"}];function ei({selectedProject:t,onStartNewChat:s,onOpenSettings:n,onShowTab:i}){const[a,o]=r.useState(!1),[l,c]=r.useState(""),[u,d]=r.useState([]),{toggleDarkMode:g}=St(),p=vt(),b=rn(),m=u.at(-1);r.useEffect(()=>{const f=z=>{(z.metaKey||z.ctrlKey)&&!z.shiftKey&&!z.altKey&&z.key.toLowerCase()==="k"&&(z.preventDefault(),o(J=>!J))};return document.addEventListener("keydown",f),()=>document.removeEventListener("keydown",f)},[]),r.useEffect(()=>{a||(c(""),d([]))},[a]);const v=t?.projectId,k=!m||m==="actions",M=!m||m==="sessions",x=!m||m==="files",A=!m||m==="commits",y=!m||m==="branches"||m==="actions",E=qs(v,a&&M),L=Js(v,l,a&&M),D=Vs(v,a&&x),F=Ks(v,a&&A),P=Qs(v,a&&y),N=Zs(v),K=r.useMemo(()=>{if(!M)return[];const f=new Map;for(const z of E)f.set(z.id,{id:z.id,label:z.label,provider:z.provider});for(const z of L){const q=f.get(z.sessionId);q?q.snippet=z.snippet:f.set(z.sessionId,{id:z.sessionId,label:z.label,provider:z.provider,snippet:z.snippet})}return Array.from(f.values())},[E,L,M]),U=r.useCallback(f=>{o(!1),f()},[]),W=r.useCallback(f=>{c(""),d(z=>[...z,f])},[]),I=r.useCallback(()=>{c(""),d(f=>f.slice(0,-1))},[]),H=r.useCallback(f=>{f.key==="Backspace"&&!l&&u.length>0&&(f.preventDefault(),I())},[l,u.length,I]),$=!t,R=5,re=m==="files"?D:D.slice(0,R),te=m==="commits"?F:F.slice(0,R),le=m==="sessions"?K:K.slice(0,R),ce=m==="branches"?P:P.slice(0,R);return e.jsx(ln,{open:a,onOpenChange:o,children:e.jsxs(cn,{className:"max-w-xl overflow-hidden p-0",children:[e.jsx(dn,{children:"Command palette"}),e.jsxs(un,{label:"Command palette",onKeyDown:H,children:[m&&e.jsxs("div",{className:"flex items-center gap-2 border-b px-3 py-2",children:[e.jsxs("span",{className:"inline-flex items-center gap-1 rounded-md bg-accent px-2 py-0.5 text-xs font-medium text-accent-foreground",children:[it[m],e.jsx("button",{type:"button",onClick:I,"aria-label":"Back to all",className:"ml-0.5 rounded-sm opacity-70 hover:opacity-100",children:e.jsx(Et,{className:"h-3 w-3"})})]}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Backspace to go back"})]}),e.jsx(pn,{placeholder:m?`Search ${it[m].toLowerCase()}…`:"Type to search anything…",value:l,onValueChange:c}),e.jsxs(mn,{children:[e.jsx(gn,{children:"No results."}),k&&e.jsxs(se,{heading:"Actions",children:[e.jsxs(V,{value:"Start new chat",disabled:$,onSelect:()=>{t&&U(()=>s(t))},children:[e.jsx($n,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("span",{className:"flex-1",children:"Start new chat"}),$&&e.jsx("span",{className:"text-xs text-muted-foreground",children:"Select a project first"})]}),e.jsxs(V,{value:"Open settings",onSelect:()=>U(()=>n()),children:[e.jsx(Rn,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("span",{className:"flex-1",children:"Open settings"})]}),e.jsxs(V,{value:"Toggle theme dark light mode",onSelect:()=>U(g),children:[e.jsx(Ln,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("span",{className:"flex-1",children:"Toggle theme"})]})]}),k&&e.jsx(se,{heading:"Navigate",children:Xs.map(f=>e.jsx(V,{value:`${f.label} ${f.keywords}`,onSelect:()=>U(()=>i?.(f.id)),children:e.jsx("span",{className:"flex-1",children:f.label})},f.id))}),k&&v&&e.jsxs(se,{heading:"Git",children:[e.jsxs(V,{value:"Git Fetch remote",onSelect:()=>U(()=>{N.fetch(),i?.("git")}),children:[e.jsx(Mt,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("span",{className:"flex-1",children:"Git: Fetch"})]}),e.jsxs(V,{value:"Git Pull merge upstream",onSelect:()=>U(()=>{N.pull(),i?.("git")}),children:[e.jsx(Fn,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("span",{className:"flex-1",children:"Git: Pull"})]}),e.jsxs(V,{value:"Git Push origin remote",onSelect:()=>U(()=>{N.push(),i?.("git")}),children:[e.jsx(Bn,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("span",{className:"flex-1",children:"Git: Push"})]})]}),k&&e.jsx(se,{heading:"Settings",children:hn.map(({id:f,label:z,keywords:q,icon:J})=>e.jsxs(V,{value:`Settings ${z} ${q}`,onSelect:()=>U(()=>n(f)),children:[e.jsx(J,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsxs("span",{className:"flex-1",children:["Settings: ",z]})]},f))}),M&&v&&le.length>0&&e.jsxs(se,{heading:"Sessions",children:[le.map(f=>e.jsxs(V,{value:`${f.label} ${f.snippet??""} ${f.id}`.trim(),onSelect:()=>U(()=>p(`/session/${f.id}`)),children:[e.jsx(Tt,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsxs("div",{className:"flex min-w-0 flex-1 flex-col",children:[e.jsx("span",{className:"truncate",children:f.label}),f.snippet&&e.jsx("span",{className:"truncate text-xs text-muted-foreground",children:f.snippet})]}),f.provider&&e.jsx("span",{className:"text-xs text-muted-foreground",children:f.provider})]},f.id)),!m&&K.length>R&&e.jsx(xe,{label:`Browse all sessions (${K.length})`,onSelect:()=>W("sessions")})]}),x&&v&&re.length>0&&e.jsxs(se,{heading:"Files",children:[re.map(f=>e.jsxs(V,{value:f.path,onSelect:()=>U(()=>b.openFile(f.path)),children:[e.jsx(Gn,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("span",{className:"flex-1 truncate",children:f.name}),e.jsx("span",{className:"truncate text-xs text-muted-foreground",children:f.path})]},f.path)),!m&&D.length>R&&e.jsx(xe,{label:`Browse all files (${D.length})`,onSelect:()=>W("files")})]}),A&&v&&te.length>0&&e.jsxs(se,{heading:"Commits",children:[te.map(f=>e.jsxs(V,{value:`${f.message} ${f.author} ${f.shortHash}`,onSelect:()=>U(()=>i?.("git")),children:[e.jsx(Hn,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:f.shortHash}),e.jsx("span",{className:"flex-1 truncate",children:f.message}),e.jsx("span",{className:"truncate text-xs text-muted-foreground",children:f.author})]},f.hash)),!m&&F.length>R&&e.jsx(xe,{label:`Browse all commits (${F.length})`,onSelect:()=>W("commits")})]}),y&&v&&ce.length>0&&e.jsxs(se,{heading:"Branches",children:[ce.map(f=>e.jsxs(V,{value:f.name,onSelect:()=>U(()=>{N.checkout(f.name),i?.("git")}),children:[e.jsx(On,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsxs("span",{className:"flex-1 truncate",children:["Switch to: ",f.name]})]},`branch-${f.name}`)),!m&&P.length>R&&e.jsx(xe,{label:`Browse all branches (${P.length})`,onSelect:()=>W("branches")})]})]})]})]})})}function xe({label:t,onSelect:s}){return e.jsxs(V,{value:t,onSelect:s,children:[e.jsx(Ce,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("span",{className:"flex-1 text-muted-foreground",children:t})]})}const Le="quickSettingsHandlePosition",he=50,ti=10,ni=90,si=5,Bt="flex items-center justify-between p-3 rounded-lg bg-muted/60 hover:bg-accent transition-colors border border-transparent hover:border-border",ii=`${Bt} cursor-pointer`,ai="h-4 w-4 rounded border-gray-300 dark:border-gray-600 text-blue-600 dark:text-blue-500 focus:ring-blue-500 focus:ring-2 dark:focus:ring-blue-400 bg-gray-100 dark:bg-gray-800 checked:bg-blue-600 dark:checked:bg-blue-600",oi=[{key:"showRawParameters",labelKey:"quickSettings.showRawParameters",icon:At},{key:"showThinking",labelKey:"quickSettings.showThinking",icon:Wn}],at=[{key:"sendByCtrlEnter",labelKey:"quickSettings.sendByCtrlEnter",icon:Un},{key:"voiceEnabled",labelKey:"quickSettings.voiceEnabled",icon:qn}],Gt=t=>Math.max(ti,Math.min(ni,t)),ri=()=>{if(typeof window>"u")return he;const t=localStorage.getItem(Le);if(!t)return he;try{const s=JSON.parse(t);if(typeof s.y=="number"&&Number.isFinite(s.y))return Gt(s.y)}catch{return localStorage.removeItem(Le),he}return he},ot=t=>t.type.includes("touch"),rt=t=>"touches"in t?t.touches[0]?.clientY??null:"clientY"in t&&typeof t.clientY=="number"?t.clientY:null;function li({isMobile:t}){const[s,n]=r.useState(ri),[i,a]=r.useState(!1),[o,l]=r.useState(!1),c=r.useRef(null),u=r.useRef(he),d=r.useRef(!1),g=r.useRef(!1),p=r.useRef(!1),b=r.useCallback(()=>{p.current&&(document.body.style.cursor="",document.body.style.userSelect="",document.body.style.overflow="",document.body.style.position="",document.body.style.width="",p.current=!1)},[]),m=r.useCallback(y=>{p.current||(document.body.style.cursor="grabbing",document.body.style.userSelect="none",y&&(document.body.style.overflow="hidden",document.body.style.position="fixed",document.body.style.width="100%"),p.current=!0)},[]),v=r.useCallback(()=>{!i&&c.current===null||(g.current=d.current,d.current=!1,c.current=null,a(!1),l(!1),b())},[b,i]),k=r.useCallback(y=>{if(!i||c.current===null)return;const E=rt(y);if(E===null)return;const L=E-c.current,D=Math.abs(L)>si;if(!d.current&&D&&(d.current=!0,l(!0),m(ot(y))),!d.current)return;ot(y)&&y.preventDefault();const F=Math.max(window.innerHeight,1),P=L/F*100,N=t?-P:P;n(Gt(u.current+N))},[m,t,i]),M=r.useCallback(y=>{y.stopPropagation();const E=rt(y);E!==null&&(c.current=E,u.current=s,d.current=!1,l(!1),a(!0))},[s]);r.useEffect(()=>{localStorage.setItem(Le,JSON.stringify({y:s}))},[s]),r.useEffect(()=>{if(!i)return;const y=F=>{k(F)},E=()=>{v()},L=F=>{k(F)},D=()=>{v()};return document.addEventListener("mousemove",y),document.addEventListener("mouseup",E),document.addEventListener("touchmove",L,{passive:!1}),document.addEventListener("touchend",D),()=>{document.removeEventListener("mousemove",y),document.removeEventListener("mouseup",E),document.removeEventListener("touchmove",L),document.removeEventListener("touchend",D)}},[v,k,i]),r.useEffect(()=>(()=>{b()}),[b]);const x=r.useCallback(()=>g.current?(g.current=!1,!0):!1,[]),A=r.useMemo(()=>!t||typeof window>"u"?{top:`${s}%`,transform:"translateY(-50%)"}:{bottom:`${window.innerHeight*s/100}px`},[s,t]);return{isDragging:o,handleStyle:A,startDrag:M,endDrag:v,consumeSuppressedClick:x}}function $e({title:t,children:s,className:n=""}){return e.jsxs("div",{className:`space-y-2 ${n}`,children:[e.jsx("h4",{className:"mb-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground",children:t}),s]})}function ci({label:t,icon:s,checked:n,onCheckedChange:i}){return e.jsxs("label",{className:ii,children:[e.jsxs("span",{className:"flex items-center gap-2 text-sm text-foreground",children:[e.jsx(s,{className:"h-4 w-4 text-muted-foreground"}),t]}),e.jsx("input",{type:"checkbox",checked:n,onChange:a=>i(a.target.checked),className:ai})]})}const di=r.memo(ci);function ui({isDarkMode:t,preferences:s,onPreferenceChange:n}){const{t:i}=Z("settings"),a=s.voiceEnabled?at:at.filter(({key:l})=>l!=="voiceEnabled"),o=l=>l.map(({key:c,labelKey:u,icon:d})=>e.jsx(di,{label:i(u),icon:d,checked:s[c],onCheckedChange:g=>n(c,g)},c));return e.jsxs("div",{className:"flex-1 space-y-6 overflow-y-auto overflow-x-hidden bg-background p-4",children:[e.jsxs($e,{title:i("quickSettings.sections.appearance"),children:[e.jsxs("div",{className:Bt,children:[e.jsxs("span",{className:"flex items-center gap-2 text-sm text-foreground",children:[t?e.jsx(Vn,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Kn,{className:"h-4 w-4 text-muted-foreground"}),i("quickSettings.darkMode")]}),e.jsx(fn,{})]}),e.jsx(bn,{compact:!0})]}),e.jsx($e,{title:i("quickSettings.sections.toolDisplay"),children:o(oi)}),e.jsxs($e,{title:i("quickSettings.sections.inputSettings"),children:[o(a),e.jsx("p",{className:"ml-3 text-xs text-muted-foreground",children:i("quickSettings.sendByCtrlEnterDescription")})]})]})}function pi({isOpen:t,isDragging:s,hideOnMobile:n=!1,style:i,onClick:a,onMouseDown:o,onTouchStart:l}){const{t:c}=Z("settings"),u=t?"right-64":"right-0",d=s?"border-blue-500 dark:border-blue-400":"border-gray-200 dark:border-gray-700",g=s?"":"transition-all duration-150 ease-out",p=s?"cursor-grabbing":"cursor-pointer",b=c(s?"quickSettings.dragHandle.dragging":t?"quickSettings.dragHandle.closePanel":"quickSettings.dragHandle.openPanel"),m=c(s?"quickSettings.dragHandle.draggingStatus":"quickSettings.dragHandle.toggleAndMove");return e.jsx("button",{type:"button",onClick:a,onMouseDown:o,onTouchStart:l,className:`fixed ${u} z-50 ${n?"hidden md:block":""} ${g} border bg-white dark:bg-gray-800 ${d} rounded-l-md p-2 shadow-lg transition-colors hover:bg-gray-100 dark:hover:bg-gray-700 ${p} touch-none`,style:{...i,touchAction:"none",WebkitTouchCallout:"none",WebkitUserSelect:"none"},"aria-label":b,title:m,children:s?e.jsx(_n,{className:"h-5 w-5 text-blue-500 dark:text-blue-400"}):t?e.jsx(Ce,{className:"h-5 w-5 text-gray-600 dark:text-gray-400"}):e.jsx(Ue,{className:"h-5 w-5 text-gray-600 dark:text-gray-400"})})}function mi(){const{t}=Z("settings");return e.jsx("div",{className:"border-b border-border bg-muted/40 p-4",children:e.jsxs("h3",{className:"flex items-center gap-2 text-lg font-semibold text-foreground",children:[e.jsx(Yn,{className:"h-5 w-5 text-muted-foreground"}),t("quickSettings.title")]})})}function gi({hideHandleOnMobile:t=!1}){const[s,n]=r.useState(!1),{isMobile:i}=Pt({trackPWA:!1}),{isDarkMode:a}=St(),{preferences:o,setPreference:l}=wt(),{isDragging:c,handleStyle:u,startDrag:d,consumeSuppressedClick:g}=li({isMobile:i}),p=r.useMemo(()=>({showRawParameters:o.showRawParameters,showThinking:o.showThinking,sendByCtrlEnter:o.sendByCtrlEnter,voiceEnabled:o.voiceEnabled}),[o.sendByCtrlEnter,o.showRawParameters,o.showThinking,o.voiceEnabled]),b=r.useCallback((v,k)=>{l(v,k)},[l]),m=r.useCallback(v=>{if(g()){v.preventDefault();return}n(k=>!k)},[g]);return e.jsxs(e.Fragment,{children:[e.jsx(pi,{isOpen:s,isDragging:c,hideOnMobile:t,style:u,onClick:m,onMouseDown:d,onTouchStart:d}),e.jsx("div",{className:`fixed right-0 top-0 z-[9999] h-full w-64 transform border-l border-border bg-background shadow-xl transition-transform duration-150 ease-out ${s?"translate-x-0":"translate-x-full"} ${i?"h-screen":""}`,children:e.jsxs("div",{className:"flex h-full flex-col",children:[e.jsx(mi,{}),e.jsx(ui,{isDarkMode:a,preferences:p,onPreferenceChange:b})]})}),s&&e.jsx("div",{className:"fixed inset-0 z-[9998] bg-background/80 backdrop-blur-sm transition-opacity duration-150 ease-out",onClick:()=>n(!1)})]})}const hi=1e4,fi=(t,s)=>{if(t.size!==s.size)return!1;for(const[n,i]of t){const a=s.get(n);if(!a||i.statusText!==a.statusText||i.canInterrupt!==a.canInterrupt||i.startedAt!==a.startedAt)return!1}return!0};function bi(){const[t,s]=r.useState(new Map),n=r.useCallback((o,l)=>{o&&s(c=>{const u=c.get(o),d={statusText:l?.statusText!==void 0?l.statusText:u?.statusText??null,canInterrupt:l?.canInterrupt??u?.canInterrupt??!0,startedAt:u?.startedAt??Date.now()};if(u&&u.statusText===d.statusText&&u.canInterrupt===d.canInterrupt)return c;const g=new Map(c);return g.set(o,d),g})},[]),i=r.useCallback((o,l)=>{o&&s(c=>{const u=c.get(o);if(!u||l?.ifStartedBefore!==void 0&&u.startedAt>=l.ifStartedBefore)return c;const d=new Map(c);return d.delete(o),d})},[]),a=r.useCallback(o=>{const l=Date.now();s(c=>{const u=new Map;for(const g of o)g.sessionId&&u.set(g.sessionId,g);const d=new Map;for(const[g,p]of u){const b=c.get(g),m=typeof p.startedAt=="number"&&Number.isFinite(p.startedAt)&&p.startedAt>0?p.startedAt:void 0;d.set(g,{statusText:p.statusText!==void 0?p.statusText:b?.statusText??null,canInterrupt:p.canInterrupt??b?.canInterrupt??!0,startedAt:m??b?.startedAt??l})}for(const[g,p]of c)!u.has(g)&&l-p.startedAt<hi&&d.set(g,p);return fi(c,d)?c:d})},[]);return{processingSessions:t,markSessionProcessing:n,markSessionIdle:i,syncProcessingSessions:a}}const Fe="claude",Y=t=>JSON.stringify(t??null),lt=()=>{try{const t=localStorage.getItem("selected-provider");return t||Fe}catch{return Fe}},vi=t=>{const s=t.__provider??t.provider;return typeof s=="string"&&s.trim()?s:Fe},ki=t=>({...t,__provider:vi(t)}),ct=(t,s)=>t.length!==s.length?!0:s.some((n,i)=>{const a=t[i];return a?n.projectId!==a.projectId||n.displayName!==a.displayName||n.fullPath!==a.fullPath||!!n.isStarred!=!!a.isStarred||Y(n.sessionMeta)!==Y(a.sessionMeta)||Y(n.sessions)!==Y(a.sessions)||Y(n.taskmaster)!==Y(a.taskmaster):!0}),dt=(t,s)=>{if(s.length===0)return t;const n=new Map(s.filter(i=>!!i.taskmaster).map(i=>[i.projectId,i.taskmaster]));return t.map(i=>{const a=n.get(i.projectId);return a?{...i,taskmaster:a}:i})},ye=t=>t.sessions??[],oe=t=>ye(t).length,Ht=(t,s)=>{const n=[...t],i=new Set(t.map(a=>String(a.id)));for(const a of s){const o=String(a.id);i.has(o)||(n.push(a),i.add(o))}return n},ut=(t,s)=>{if(t.length===0)return s;const n=new Map(t.map(i=>[i.projectId,i]));return s.map(i=>{const a=n.get(i.projectId);if(!a)return i;const o=oe(a),l=oe(i);if(o<=l)return i;const c={...i,sessions:Ht(i.sessions??[],a.sessions??[])},u=Number(i.sessionMeta?.total??o);return c.sessionMeta={...i.sessionMeta,total:u,hasMore:oe(c)<u},c})},xi=(t,s)=>{const n={...t,sessions:Ht(t.sessions??[],s.sessions??[])},i=Number(s.sessionMeta?.total??t.sessionMeta?.total??0);return n.sessionMeta={...t.sessionMeta,...s.sessionMeta,total:i,hasMore:oe(n)<i},n},yi=t=>{const s=new Set,n=i=>{if(typeof i!="string")return;const a=i.trim();a&&s.add(a)};return n(t.sessionId),n(t.providerSessionId),n(t.session?.id),s},pe=(t,s)=>{const n=t.sessions??[],i=yi(s),a={...s.session,id:s.sessionId,__provider:s.provider},o=n.findIndex(d=>i.has(String(d.id)));let l,c=!1;if(o>=0){let d=!1;l=[];for(const[g,p]of n.entries()){if(g===o){const b={...p,...a};!a.summary?.trim()&&p.summary?.trim()&&(b.summary=p.summary),Y(p)!==Y(b)&&(d=!0),l.push(b);continue}if(i.has(String(p.id))){d=!0;continue}l.push(p)}if(!d)return t}else l=[a,...n],c=!0;const u={...t,sessions:l};if(c){const d=Number(t.sessionMeta?.total??0)+1;u.sessionMeta={...t.sessionMeta,total:d,hasMore:oe(u)<d}}return u},wi=t=>({projectId:t.projectId,path:t.path||t.fullPath,fullPath:t.fullPath||t.path||"",displayName:t.displayName,isStarred:t.isStarred,sessions:t.sessions??[],sessionMeta:t.sessionMeta??{hasMore:!1,total:oe(t)},taskmaster:t.taskmaster}),Ci=(t,s)=>{const n=t.sessions??[],i=n.filter(l=>l.id!==s);if(i.length===n.length)return t;const a={...t,sessions:i},o=Math.max(0,Number(t.sessionMeta?.total??0)-1);return a.sessionMeta={...t.sessionMeta,total:o,hasMore:oe(a)<o},a},Si=new Set(["chat","files","shell","herdr","git","tasks","browser"]),Pi=t=>Si.has(t)||t.startsWith("plugin:"),Ai=()=>{try{const t=localStorage.getItem("activeTab");if(t&&Pi(t))return t}catch{}return"chat"};function ji({sessionId:t,navigate:s,subscribe:n,isMobile:i,activeSessions:a}){const[o,l]=r.useState([]),[c,u]=r.useState(null),[d,g]=r.useState(null),[p,b]=r.useState(new Set),[m,v]=r.useState(Ai);r.useEffect(()=>{try{localStorage.setItem("activeTab",m)}catch{}},[m]);const[k,M]=r.useState(!1),[x,A]=r.useState(!0),[y,E]=r.useState(null),[L,D]=r.useState(!1),[F,P]=r.useState(!1),[N,K]=r.useState("agents"),[U,W]=r.useState(0),[I,H]=r.useState(0),$=r.useRef(null),R=r.useRef(d);R.current=d;const re=r.useRef(a);re.current=a;const te=r.useRef(c);te.current=c;const le=r.useRef(o);le.current=o;const ce=r.useRef(t);ce.current=t;const f=r.useRef(null);r.useEffect(()=>{f.current=null},[t]);const z=r.useCallback(h=>{if(!h)return;const w=R.current?.id??t??null;h!==w&&b(C=>{if(C.has(h))return C;const j=new Set(C);return j.add(h),j})},[t]),q=r.useCallback(h=>{h&&b(w=>{if(!w.has(h))return w;const C=new Set(w);return C.delete(h),C})},[]),J=r.useCallback(async({showLoadingState:h=!0}={})=>{try{h&&A(!0);const C=await(await ie.projects()).json();l(j=>{const S=dt(C,j),O=ut(j,S);return j.length===0||ct(j,O)?O:j})}catch(w){console.error("Error fetching projects:",w)}finally{h&&A(!1)}},[]),Pe=r.useCallback(async()=>{await J({showLoadingState:!1})},[J]),ue=r.useCallback(({sessionId:h,provider:w,project:C,summary:j})=>{if(!h||!C?.projectId)return;const S=new Date().toISOString(),O={id:h,summary:j??"",messageCount:0,createdAt:S,created_at:S,updated_at:S,lastActivity:S,__provider:w,__projectId:C.projectId},B={sessionId:h,provider:w,session:O,project:{projectId:C.projectId,path:C.path||C.fullPath,fullPath:C.fullPath||C.path||"",displayName:C.displayName,isStarred:!!C.isStarred}};l(G=>{const T=G.find(_=>_.projectId===C.projectId);if(!T)return[pe(wi(C),B),...G];const Q=pe(T,B);return Q===T?G:G.map(_=>_.projectId===T.projectId?Q:_)}),u(G=>{if(!G||G.projectId!==C.projectId)return G;const T=pe(G,B);return T===G?G:T}),g(G=>G?.id===h?{...G,...O}:O)},[]),ne=r.useCallback((h,w)=>{l(C=>C.map(j=>j.projectId===h?{...j,taskmaster:w??void 0}:j)),u(C=>C?.projectId===h?{...C,taskmaster:w??void 0}:C)},[]),be=r.useCallback((h="tools")=>{K(h),P(!0)},[]);r.useEffect(()=>{J()},[J]),r.useEffect(()=>{!x&&o.length===1&&!c&&!t&&u(o[0])},[x,o,c,t]),r.useEffect(()=>n(w=>{if(w.kind==="loading_progress"){$.current&&(clearTimeout($.current),$.current=null),E(w),w.phase==="complete"&&($.current=setTimeout(()=>{E(null),$.current=null},500));return}const C=typeof w.sessionId=="string"&&w.sessionId?w.sessionId:null,j=R.current?.id??t??null;if(C&&C!==j&&w.kind!=="chat_subscribed"&&w.kind!=="loading_progress"&&w.kind!=="session_upserted"&&w.kind!=="status"&&w.kind!=="stream_end"&&w.kind!=="permission_cancelled"&&w.kind!=="websocket_reconnected"&&z(C),w.kind!=="session_upserted")return;const S=w;if(!S.sessionId||!S.session)return;const O=R.current;O&&S.sessionId===O.id&&!re.current.has(S.sessionId)?W(T=>T+1):z(S.sessionId),l(T=>{const Q=S.project?.projectId,_=T.find(de=>Q?de.projectId===Q:ye(de).some(Vt=>Vt.id===S.sessionId));if(!_){if(!S.project)return T;const de={projectId:S.project.projectId,path:S.project.path,fullPath:S.project.fullPath,displayName:S.project.displayName,isStarred:S.project.isStarred,sessions:[],sessionMeta:{hasMore:!1,total:0}};return[...T,pe(de,S)]}const ve=pe(_,S);return ve===_?T:T.map(de=>de.projectId===_.projectId?ve:de)}),u(T=>{if(!T||!(S.project?T.projectId===S.project.projectId:ye(T).some(ve=>ve.id===S.sessionId)))return T;const _=pe(T,S);return _===T?T:_});const B=typeof S.providerSessionId=="string"&&S.providerSessionId!==S.sessionId?S.providerSessionId:null;if(!B)return;const G={...S.session,id:S.sessionId,__provider:S.provider,__projectId:S.project?.projectId??O?.__projectId};g(T=>T?.id!==B?T:{...T,...G}),t===B&&s(`/session/${S.sessionId}`)}),[z,s,t,n]),r.useEffect(()=>()=>{$.current&&(clearTimeout($.current),$.current=null)},[]),r.useEffect(()=>{q(d?.id??t??null)},[q,d?.id,t]),r.useEffect(()=>{if(t){for(const h of o){const w=h.sessions?.find(C=>C.id===t);if(w){const C=ki(w),j=c?.projectId!==h.projectId,S=d?.id!==t||d.__provider!==C.__provider;j&&u(h),S&&g(C);return}}d?.id!==t&&f.current!==t&&(f.current=t,(async()=>{let h=null;try{const j=await ie.sessionDetails(t);j.ok&&(h=(await j.json()).data??null)}catch(j){console.error(`Error resolving session ${t}:`,j)}if(ce.current!==t)return;if(!h){const j=te.current;if(!j||R.current?.id===t)return;g({id:t,__provider:lt(),__projectId:j.projectId,summary:""});return}if(typeof h.sessionId=="string"&&h.sessionId&&h.sessionId!==t){s(`/session/${h.sessionId}`,{replace:!0});return}const w=h.project?.projectId;w&&u(j=>{if(j?.projectId===w)return j;const S=le.current.find(O=>O.projectId===w);return S||{projectId:w,path:h.project?.path??h.project?.fullPath??"",fullPath:h.project?.fullPath??h.project?.path??"",displayName:h.project?.displayName??"",isStarred:!!h.project?.isStarred,sessions:[],sessionMeta:{hasMore:!1,total:0}}});const C={id:t,summary:h.summary??"",createdAt:h.createdAt??void 0,lastActivity:h.lastActivity??void 0,__provider:typeof h.provider=="string"&&h.provider.trim()?h.provider:lt(),__projectId:w};g(j=>j?.id===t?{...j,...C}:C)})())}},[s,t,o,c,d?.id,d?.__provider]);const Ae=r.useCallback(h=>{u(h),g(null),s("/"),i&&M(!1)},[i,s]),je=r.useCallback(h=>{if(q(h.id),g(h),(m==="tasks"||m==="browser")&&v("chat"),i){const w=h.__projectId,C=c?.projectId;w!==C&&M(!1)}s(`/session/${h.id}`)},[m,q,i,s,c?.projectId]),Te=r.useCallback(h=>{u(h),g(null),v("chat"),H(w=>w+1),s("/"),i&&M(!1)},[i,s]),Ie=r.useCallback(h=>{q(h),d?.id===h&&(g(null),s("/")),l(w=>w.map(C=>Ci(C,h)))},[q,s,d?.id]),Ee=r.useCallback(async()=>{try{const w=await(await ie.projects()).json(),C=dt(w,o),j=ut(o,C);if(l(B=>ct(B,j)?j:B),!c)return;const S=j.find(B=>B.projectId===c.projectId);if(!S||(Y(S)!==Y(c)&&u(S),!d))return;const O=ye(S).find(B=>B.id===d.id);if(O){const B=O.__provider||!d.__provider?O:{...O,__provider:d.__provider};Y(B)!==Y(d)&&g(B)}}catch(h){console.error("Error refreshing sidebar:",h)}},[o,c,d]),Me=r.useCallback(async h=>{const w=o.find(G=>G.projectId===h);if(!w)return;const C=oe(w),j=Number(w.sessionMeta?.total??0);if(j>0&&C>=j)return;const S=await ie.projectSessions(h,{limit:20,offset:C});if(!S.ok){const T=(await S.json().catch(()=>({}))).error,Q=typeof T=="string"?T:T&&typeof T=="object"&&T.message?T.message:`Failed to load more sessions for project ${h}`;throw new Error(Q)}const O=await S.json();let B=null;l(G=>G.map(T=>{if(T.projectId!==h)return T;const Q=xi(T,O);return B=Q,Q})),c?.projectId===h&&B&&u(B)},[o,c?.projectId]),ze=r.useCallback(h=>{c?.projectId===h&&(u(null),g(null),s("/")),l(w=>w.filter(C=>C.projectId!==h))},[s,c?.projectId]),Wt=r.useMemo(()=>({projects:o,selectedProject:c,selectedSession:d,activeSessions:a,attentionSessionIds:p,onProjectSelect:Ae,onSessionSelect:je,onNewSession:Te,onSessionDelete:Ie,onLoadMoreSessions:Me,onProjectDelete:ze,isLoading:x,loadingProgress:y,onRefresh:Ee,onShowSettings:()=>P(!0),showSettings:F,settingsInitialTab:N,onCloseSettings:()=>P(!1),isMobile:i}),[p,Te,ze,Ae,Ie,Me,je,Ee,x,i,y,a,o,N,c,d,F]);return{projects:o,selectedProject:c,selectedSession:d,activeTab:m,sidebarOpen:k,isLoadingProjects:x,loadingProgress:y,isInputFocused:L,showSettings:F,settingsInitialTab:N,externalMessageUpdate:U,newSessionTrigger:I,setActiveTab:v,setSidebarOpen:M,setIsInputFocused:D,setShowSettings:P,openSettings:be,fetchProjects:J,refreshProjectsSilently:Pe,registerOptimisticSession:ue,updateProjectTaskMaster:ne,sidebarSharedProps:Wt,handleProjectSelect:Ae,handleSessionSelect:je,handleNewSession:Te,handleSessionDelete:Ie,loadMoreProjectSessions:Me,handleProjectDelete:ze,handleSidebarRefresh:Ee}}function Ti({processingSessions:t,activeSessionId:s,ws:n,sendMessage:i,markSessionProcessing:a}){const o=r.useRef(new Set);r.useEffect(()=>{const l=o.current,c=new Set(t.keys());o.current=c;for(const u of l){if(c.has(u)||u===s)continue;const d=ts(u);d&&(!n||n.readyState!==WebSocket.OPEN||(ns(u),i({type:"chat.send",sessionId:u,content:d.content,options:{...d.options??{},attachments:d.attachments??d.images??[]}}),a(u,{statusText:null,canInterrupt:!0})))}},[t,s,n,i,a])}const Ii=t=>{if(typeof t=="number"&&Number.isFinite(t)&&t>0)return t;if(typeof t!="string")return;const s=Date.parse(t);return Number.isFinite(s)?s:void 0};function pt(){return e.jsx(vn,{children:e.jsx(Ei,{})})}function Ei(){const t=vt(),{sessionId:s}=Kt(),{t:n}=Z("common"),{isMobile:i}=Pt({trackPWA:!1}),{ws:a,sendMessage:o,subscribe:l}=kn(),{processingSessions:c,markSessionProcessing:u,markSessionIdle:d,syncProcessingSessions:g}=bi(),{selectedProject:p,selectedSession:b,activeTab:m,sidebarOpen:v,isLoadingProjects:k,externalMessageUpdate:M,newSessionTrigger:x,setActiveTab:A,setSidebarOpen:y,setIsInputFocused:E,openSettings:L,refreshProjectsSilently:D,registerOptimisticSession:F,updateProjectTaskMaster:P,sidebarSharedProps:N,handleNewSession:K,handleProjectSelect:U}=ji({sessionId:s,navigate:t,subscribe:l,isMobile:i,activeSessions:c});Ti({processingSessions:c,activeSessionId:b?.id??s??null,ws:a,sendMessage:o,markSessionProcessing:u});const W=r.useCallback(async()=>{try{const I=await ie.runningSessions();if(!I.ok)return;const H=await I.json(),$=Array.isArray(H.data?.sessions)?H.data.sessions:[];g($.map(R=>typeof R.sessionId!="string"||!R.sessionId?null:{sessionId:R.sessionId,startedAt:Ii(R.startedAt),statusText:typeof R.statusText=="string"?R.statusText:void 0,canInterrupt:typeof R.canInterrupt=="boolean"?R.canInterrupt:void 0}).filter(R=>!!R))}catch(I){console.error("[AppContent] Failed to sync running sessions:",I)}},[g]);return r.useEffect(()=>{W()},[W]),r.useEffect(()=>{const I=window.setInterval(()=>{W()},5e3);return()=>window.clearInterval(I)},[W]),Ct({openSettings:L,refreshProjects:D}),r.useEffect(()=>{if(typeof navigator>"u"||!("serviceWorker"in navigator))return;const I=H=>{const $=H.data;if(!(!$||$.type!=="notification:navigate")){if(typeof $.provider=="string"&&$.provider.trim()&&localStorage.setItem("selected-provider",$.provider),A("chat"),y(!1),D(),typeof $.sessionId=="string"&&$.sessionId){t(`/session/${$.sessionId}`);return}t("/")}};return navigator.serviceWorker.addEventListener("message",I),()=>{navigator.serviceWorker.removeEventListener("message",I)}},[t,D,A,y]),r.useEffect(()=>{const I=window.visualViewport;if(!I)return;const H=()=>{const $=Math.max(0,window.innerHeight-I.height);document.documentElement.style.setProperty("--keyboard-height",`${$}px`)};return I.addEventListener("resize",H),()=>I.removeEventListener("resize",H)},[]),e.jsx(xn,{project:p,onProjectTaskMasterChange:P,children:e.jsxs("div",{className:"fixed inset-0 flex bg-background",style:{bottom:"var(--keyboard-height, 0px)"},children:[i?e.jsxs("div",{className:`fixed inset-0 z-50 flex transition-all duration-150 ease-out ${v?"visible opacity-100":"invisible opacity-0"}`,children:[e.jsx("button",{className:"fixed inset-0 bg-background/60 backdrop-blur-sm transition-opacity duration-150 ease-out",onClick:I=>{I.stopPropagation(),y(!1)},onTouchStart:I=>{I.preventDefault(),I.stopPropagation(),y(!1)},"aria-label":n("versionUpdate.ariaLabels.closeSidebar")}),e.jsx("div",{className:`relative h-full w-[85vw] max-w-sm transform border-r border-border/40 bg-card transition-transform duration-150 ease-out sm:w-80 ${v?"translate-x-0":"-translate-x-full"}`,onClick:I=>I.stopPropagation(),onTouchStart:I=>I.stopPropagation(),children:e.jsx(Ke,{...N})})]}):e.jsx("div",{className:"h-full flex-shrink-0 border-r border-border/50",children:e.jsx(Ke,{...N})}),e.jsx("div",{className:"flex min-w-0 flex-1 flex-col",children:e.jsx(Us,{selectedProject:p,selectedSession:b,activeTab:m,setActiveTab:A,ws:a,sendMessage:o,isMobile:i,onMenuClick:()=>y(!0),isLoading:k,onInputFocusChange:E,onSessionProcessing:u,onSessionIdle:d,processingSessions:c,onNavigateToSession:(I,H)=>t(`/session/${I}`,{replace:!!H?.replace}),onSessionEstablished:(I,H)=>F({sessionId:I,...H}),onShowSettings:L,externalMessageUpdate:M,newSessionTrigger:x,onProjectSelect:U,onProjectsRefresh:()=>{D()}})}),e.jsx(ei,{selectedProject:p,onStartNewChat:K,onOpenSettings:()=>L(),onShowTab:A}),e.jsx(gi,{hideHandleOnMobile:m==="herdr"})]})})}function Mi(t={}){const{immediate:s=!1,onNeedReload:n,onNeedRefresh:i,onOfflineReady:a,onRegistered:o,onRegisteredSW:l,onRegisterError:c}=t;let u,d,g;const p=async(m=!0)=>{await d,g?.()};async function b(){if("serviceWorker"in navigator){if(u=await ee(async()=>{const{Workbox:m}=await import("./workbox-window.prod.es5-BBnX5xw4.js");return{Workbox:m}},[]).then(({Workbox:m})=>new m("/sw.js",{scope:"/",type:"classic"})).catch(m=>{c?.(m)}),!u)return;g=()=>{u?.messageSkipWaiting()};{let m=!1;const v=()=>{m=!0,u?.addEventListener("controlling",k=>{k.isUpdate&&(n?n():window.location.reload())}),i?.()};u.addEventListener("installed",k=>{typeof k.isUpdate>"u"?typeof k.isExternal<"u"&&k.isExternal?v():!m&&a?.():k.isUpdate||a?.()}),u.addEventListener("waiting",v)}u.register({immediate:s}).then(m=>{l?l("/sw.js",m):o?.(m)}).catch(m=>{c?.(m)})}}return d=b(),p}function zi(t={}){const{immediate:s=!0,onNeedReload:n,onNeedRefresh:i,onOfflineReady:a,onRegistered:o,onRegisteredSW:l,onRegisterError:c}=t,[u,d]=r.useState(!1),[g,p]=r.useState(!1),[b]=r.useState(()=>Mi({immediate:s,onNeedReload:n,onOfflineReady(){p(!0),a?.()},onNeedRefresh(){d(!0),i?.()},onRegistered:o,onRegisteredSW:l,onRegisterError:c}));return{needRefresh:[u,d],offlineReady:[g,p],updateServiceWorker:b}}function Di(t){return t.needRefresh?"update":t.installAvailable&&!t.installDismissed?"install":t.offlineReady&&!t.offlineDismissed?"offline":null}const Ni=3600*1e3;function $i(){const{t}=Z("common"),[s,n]=r.useState(),[i,a]=r.useState(),[o,l]=r.useState(!1),[c,u]=r.useState(!1),{needRefresh:[d,g],offlineReady:[p,b],updateServiceWorker:m}=zi({immediate:!0,onRegisteredSW:(y,E)=>n(E),onRegisterError:y=>console.error("Service worker registration failed:",y)});r.useEffect(()=>{if(!s)return;const y=window.setInterval(()=>{navigator.onLine&&s.update()},Ni);return()=>window.clearInterval(y)},[s]),r.useEffect(()=>{const y=L=>{L.preventDefault(),a(L),l(!1)},E=()=>a(void 0);return window.addEventListener("beforeinstallprompt",y),window.addEventListener("appinstalled",E),()=>{window.removeEventListener("beforeinstallprompt",y),window.removeEventListener("appinstalled",E)}},[]),r.useEffect(()=>{if(!p)return;const y=window.setTimeout(()=>u(!0),8e3);return()=>window.clearTimeout(y)},[p]);const v=Di({installAvailable:!!i,installDismissed:o,needRefresh:d,offlineDismissed:c,offlineReady:p});if(!v)return null;const k={update:{icon:Mt,message:t("pwa.updateReady"),action:t("pwa.reload")},install:{icon:Qn,message:t("pwa.installAvailable"),action:t("pwa.install")},offline:{icon:Jn,message:t("pwa.offlineReady"),action:null}}[v],M=k.icon,x=()=>{v==="update"&&g(!1),v==="install"&&l(!0),v==="offline"&&(u(!0),b(!1))},A=async()=>{if(v==="update"){await m(!0);return}v==="install"&&i&&(await i.prompt(),await i.userChoice,a(void 0))};return e.jsxs("aside",{role:"status","aria-live":"polite",className:"fixed inset-x-3 bottom-[calc(0.75rem+env(safe-area-inset-bottom,0px))] z-[100] mx-auto flex min-h-12 max-w-xl items-center gap-3 rounded-lg border border-border bg-card px-3 py-2.5 text-card-foreground shadow-lg",children:[e.jsx(M,{className:"h-4 w-4 flex-shrink-0 text-primary"}),e.jsx("span",{className:"min-w-0 flex-1 text-sm",children:k.message}),k.action&&e.jsx("button",{type:"button",className:"flex-shrink-0 text-sm font-medium text-primary hover:underline",onClick:()=>{A()},children:k.action}),e.jsx("button",{type:"button",className:"flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground",onClick:x,"aria-label":t("pwa.dismiss"),title:t("pwa.dismiss"),children:e.jsx(Et,{className:"h-4 w-4"})})]})}const{slice:Ri,forEach:Li}=[];function Fi(t){return Li.call(Ri.call(arguments,1),s=>{if(s)for(const n in s)t[n]===void 0&&(t[n]=s[n])}),t}function Bi(t){return typeof t!="string"?!1:[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(n=>n.test(t))}const mt=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,Gi=function(t,s){const i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:"/"},a=encodeURIComponent(s);let o=`${t}=${a}`;if(i.maxAge>0){const l=i.maxAge-0;if(Number.isNaN(l))throw new Error("maxAge should be a Number");o+=`; Max-Age=${Math.floor(l)}`}if(i.domain){if(!mt.test(i.domain))throw new TypeError("option domain is invalid");o+=`; Domain=${i.domain}`}if(i.path){if(!mt.test(i.path))throw new TypeError("option path is invalid");o+=`; Path=${i.path}`}if(i.expires){if(typeof i.expires.toUTCString!="function")throw new TypeError("option expires is invalid");o+=`; Expires=${i.expires.toUTCString()}`}if(i.httpOnly&&(o+="; HttpOnly"),i.secure&&(o+="; Secure"),i.sameSite)switch(typeof i.sameSite=="string"?i.sameSite.toLowerCase():i.sameSite){case!0:o+="; SameSite=Strict";break;case"lax":o+="; SameSite=Lax";break;case"strict":o+="; SameSite=Strict";break;case"none":o+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return i.partitioned&&(o+="; Partitioned"),o},gt={create(t,s,n,i){let a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:"/",sameSite:"strict"};n&&(a.expires=new Date,a.expires.setTime(a.expires.getTime()+n*60*1e3)),i&&(a.domain=i),document.cookie=Gi(t,s,a)},read(t){const s=`${t}=`,n=document.cookie.split(";");for(let i=0;i<n.length;i++){let a=n[i];for(;a.charAt(0)===" ";)a=a.substring(1,a.length);if(a.indexOf(s)===0)return a.substring(s.length,a.length)}return null},remove(t,s){this.create(t,"",-1,s)}};var Hi={name:"cookie",lookup(t){let{lookupCookie:s}=t;if(s&&typeof document<"u")return gt.read(s)||void 0},cacheUserLanguage(t,s){let{lookupCookie:n,cookieMinutes:i,cookieDomain:a,cookieOptions:o}=s;n&&typeof document<"u"&>.create(n,t,i,a,o)}},Oi={name:"querystring",lookup(t){let{lookupQuerystring:s}=t,n;if(typeof window<"u"){let{search:i}=window.location;!window.location.search&&window.location.hash?.indexOf("?")>-1&&(i=window.location.hash.substring(window.location.hash.indexOf("?")));const o=i.substring(1).split("&");for(let l=0;l<o.length;l++){const c=o[l].indexOf("=");c>0&&o[l].substring(0,c)===s&&(n=o[l].substring(c+1))}}return n}},Ui={name:"hash",lookup(t){let{lookupHash:s,lookupFromHashIndex:n}=t,i;if(typeof window<"u"){const{hash:a}=window.location;if(a&&a.length>2){const o=a.substring(1);if(s){const l=o.split("&");for(let c=0;c<l.length;c++){const u=l[c].indexOf("=");u>0&&l[c].substring(0,u)===s&&(i=l[c].substring(u+1))}}if(i)return i;if(!i&&n>-1){const l=a.match(/\/([a-zA-Z-]*)/g);return Array.isArray(l)?l[typeof n=="number"?n:0]?.replace("/",""):void 0}}}return i}};let me=null;const ht=()=>{if(me!==null)return me;try{if(me=typeof window<"u"&&window.localStorage!==null,!me)return!1;const t="i18next.translate.boo";window.localStorage.setItem(t,"foo"),window.localStorage.removeItem(t)}catch{me=!1}return me};var qi={name:"localStorage",lookup(t){let{lookupLocalStorage:s}=t;if(s&&ht())return window.localStorage.getItem(s)||void 0},cacheUserLanguage(t,s){let{lookupLocalStorage:n}=s;n&&ht()&&window.localStorage.setItem(n,t)}};let ge=null;const ft=()=>{if(ge!==null)return ge;try{if(ge=typeof window<"u"&&window.sessionStorage!==null,!ge)return!1;const t="i18next.translate.boo";window.sessionStorage.setItem(t,"foo"),window.sessionStorage.removeItem(t)}catch{ge=!1}return ge};var Wi={name:"sessionStorage",lookup(t){let{lookupSessionStorage:s}=t;if(s&&ft())return window.sessionStorage.getItem(s)||void 0},cacheUserLanguage(t,s){let{lookupSessionStorage:n}=s;n&&ft()&&window.sessionStorage.setItem(n,t)}},Vi={name:"navigator",lookup(t){const s=[];if(typeof navigator<"u"){const{languages:n,userLanguage:i,language:a}=navigator;if(n)for(let o=0;o<n.length;o++)s.push(n[o]);i&&s.push(i),a&&s.push(a)}return s.length>0?s:void 0}},Ki={name:"htmlTag",lookup(t){let{htmlTag:s}=t,n;const i=s||(typeof document<"u"?document.documentElement:null);return i&&typeof i.getAttribute=="function"&&(n=i.getAttribute("lang")),n}},_i={name:"path",lookup(t){let{lookupFromPathIndex:s}=t;if(typeof window>"u")return;const n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);return Array.isArray(n)?n[typeof s=="number"?s:0]?.replace("/",""):void 0}},Yi={name:"subdomain",lookup(t){let{lookupFromSubdomainIndex:s}=t;const n=typeof s=="number"?s+1:1,i=typeof window<"u"&&window.location?.hostname?.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(i)return i[n]}};let Ot=!1;try{document.cookie,Ot=!0}catch{}const Ut=["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"];Ot||Ut.splice(1,1);const Ji=()=>({order:Ut,lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:t=>t});class qt{constructor(s){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type="languageDetector",this.detectors={},this.init(s,n)}init(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=s,this.options=Fi(n,this.options||{},Ji()),typeof this.options.convertDetectedLanguage=="string"&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=a=>a.replace("-","_")),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=i,this.addDetector(Hi),this.addDetector(Oi),this.addDetector(qi),this.addDetector(Wi),this.addDetector(Vi),this.addDetector(Ki),this.addDetector(_i),this.addDetector(Yi),this.addDetector(Ui)}addDetector(s){return this.detectors[s.name]=s,this}detect(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,n=[];return s.forEach(i=>{if(this.detectors[i]){let a=this.detectors[i].lookup(this.options);a&&typeof a=="string"&&(a=[a]),a&&(n=n.concat(a))}}),n=n.filter(i=>i!=null&&!Bi(i)).map(i=>this.options.convertDetectedLanguage(i)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?n:n.length>0?n[0]:null}cacheUserLanguage(s){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;n&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(s)>-1||n.forEach(i=>{this.detectors[i]&&this.detectors[i].cacheUserLanguage(s,this.options)}))}}qt.type="languageDetector";const Qi={save:"Save",cancel:"Cancel",delete:"Delete",create:"Create",edit:"Edit",close:"Close",confirm:"Confirm",submit:"Submit",retry:"Retry",refresh:"Refresh",search:"Search",clear:"Clear",copy:"Copy",download:"Download",upload:"Upload",browse:"Browse"},Zi={chat:"Chat",shell:"Shell",herdr:"Herdr",files:"Files",git:"Source Control",tasks:"Tasks",browser:"Browser",computer:"Computer"},Xi={loading:"Loading...",success:"Success",error:"Error",failed:"Failed",pending:"Pending",completed:"Completed",inProgress:"In Progress"},ea={savedSuccessfully:"Saved successfully",deletedSuccessfully:"Deleted successfully",updatedSuccessfully:"Updated successfully",operationFailed:"Operation failed",networkError:"Network error. Please check your connection.",unauthorized:"Unauthorized. Please log in.",notFound:"Not found",invalidInput:"Invalid input",requiredField:"This field is required",unknownError:"An unknown error occurred"},ta={settings:"Settings",home:"Home",back:"Back",next:"Next",previous:"Previous",logout:"Logout"},na={language:"Language",theme:"Theme",darkMode:"Dark Mode",lightMode:"Light Mode",name:"Name",description:"Description",enabled:"Enabled",disabled:"Disabled",optional:"Optional",version:"Version",select:"Select",selectAll:"Select All",deselectAll:"Deselect All"},sa={justNow:"Just now",minutesAgo:"{{count}} mins ago",hoursAgo:"{{count}} hours ago",daysAgo:"{{count}} days ago",yesterday:"Yesterday"},ia={newFile:"New File",newFolder:"New Folder",rename:"Rename",move:"Move",copyPath:"Copy Path",openInEditor:"Open in Editor"},aa={loading:"Loading WindCli",settingUpWorkspace:"Setting up your workspace...",chooseProject:"Choose Your Project",selectProjectDescription:"Select a project from the sidebar to start coding with Claude. Each project contains your chat sessions and file history.",tip:"Tip",createProjectMobile:"Tap the menu button above to access projects",createProjectDesktop:"Create a new project by clicking the folder icon in the sidebar",newSession:"New Session",untitledSession:"Untitled Session",projectFiles:"Project Files"},oa={loading:"Loading files...",files:"Files",simpleView:"Simple view",compactView:"Compact view",detailedView:"Detailed view",searchPlaceholder:"Search files and folders...",clearSearch:"Clear search",name:"Name",size:"Size",modified:"Modified",permissions:"Permissions",noFilesFound:"No files found",checkProjectPath:"Check if the project path is accessible",loadFailed:"Unable to load files",noMatchesFound:"No matches found",tryDifferentSearch:"Try a different search term or clear the search",justNow:"just now",minAgo:"{{count}} min ago",hoursAgo:"{{count}} hours ago",daysAgo:"{{count}} days ago",newFile:"New File (Cmd+N)",newFolder:"New Folder (Cmd+Shift+N)",refresh:"Refresh",collapseAll:"Collapse All",context:{rename:"Rename",delete:"Delete",copyPath:"Copy Path",download:"Download",newFile:"New File",newFolder:"New Folder",upload:"Upload Files",refresh:"Refresh",menuLabel:"File context menu",loading:"Loading..."}},ra={title:"Create New Project",steps:{type:"Type",configure:"Configure",confirm:"Confirm"},step1:{question:"Do you already have a workspace, or would you like to create a new one?",existing:{title:"Existing Workspace",description:"I already have a workspace on my server and just need to add it to the project list"},new:{title:"New Workspace",description:"Create a new workspace, optionally clone from a GitHub repository"}},step2:{existingPath:"Workspace Path",newPath:"Workspace Path",existingPlaceholder:"/path/to/existing/workspace",newPlaceholder:"/path/to/new/workspace",existingHelp:"Full path to your existing workspace directory",newHelp:"Full path to your workspace directory",githubUrl:"GitHub URL (Optional)",githubPlaceholder:"https://github.com/username/repository",githubHelp:"Optional: provide a GitHub URL to clone a repository",githubAuth:"GitHub Authentication (Optional)",githubAuthHelp:"Only required for private repositories. Public repos can be cloned without authentication.",loadingTokens:"Loading stored tokens...",storedToken:"Stored Token",newToken:"New Token",nonePublic:"None (Public)",selectToken:"Select Token",selectTokenPlaceholder:"-- Select a token --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"This token will be used only for this operation",publicRepoInfo:"Public repositories don't require authentication. You can skip providing a token if cloning a public repo.",noTokensHelp:"No stored tokens available. You can add tokens in Settings → API Keys for easier reuse.",optionalTokenPublic:"GitHub Token (Optional for Public Repos)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (leave empty for public repos)"},step3:{reviewConfig:"Review Your Configuration",existingWorkspace:"Existing Workspace",newWorkspace:"New Workspace",path:"Path:",cloneFrom:"Clone From:",authentication:"Authentication:",usingStoredToken:"Using stored token:",usingProvidedToken:"Using provided token",noAuthentication:"No authentication",sshKey:"SSH Key",existingInfo:"The workspace will be added to your project list and will be available for Claude/Cursor sessions.",newWithClone:"The repository will be cloned from this folder.",newEmpty:"The workspace will be added to your project list and will be available for Claude/Cursor sessions.",cloningRepository:"Cloning repository..."},buttons:{cancel:"Cancel",back:"Back",next:"Next",createProject:"Create Project",creating:"Creating...",cloning:"Cloning..."},errors:{selectType:"Please select whether you have an existing workspace or want to create a new one",providePath:"Please provide a workspace path",failedToCreate:"Failed to create workspace",failedToCreateFolder:"Failed to create folder"}},la={genericTool:"a tool",codes:{generic:{info:{title:"Notification"}},permission:{required:{title:"Action Required",body:"{{toolName}} is waiting for your decision."}},run:{stopped:{title:"Run Stopped",body:"Reason: {{reason}}"},failed:{title:"Run Failed"}},agent:{notification:{title:"Agent Notification"}}}},ca={updateReady:"A new version of WindCli is ready.",reload:"Reload",installAvailable:"Install WindCli for faster access and offline support.",install:"Install",offlineReady:"WindCli is ready to use offline.",dismiss:"Dismiss"},da={title:"Update Available",newVersionReady:"A new version is ready",currentVersion:"Current Version",latestVersion:"Latest Version",whatsNew:"What's New:",viewFullRelease:"View full release",updateProgress:"Update Progress:",manualUpgrade:"Manual upgrade:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:'Or click "Update Now" to run the update automatically.',updateCompleted:"Update completed successfully!",restartServer:"Please restart the server to apply changes.",updateFailed:"Update failed",buttons:{close:"Close",later:"Later",copyCommand:"Copy Command",updateNow:"Update Now",updating:"Updating..."},ariaLabels:{closeModal:"Close version upgrade modal",showSidebar:"Show sidebar",settings:"Settings",updateAvailable:"Update available",closeSidebar:"Close sidebar"}},ua={buttons:Qi,tabs:Zi,status:Xi,messages:ea,navigation:ta,common:na,time:sa,fileOperations:ia,mainContent:aa,fileTree:oa,projectWizard:ra,notifications:la,pwa:ca,versionUpdate:da},pa="Settings",ma={account:"Account",permissions:"Permissions",mcpServers:"MCP Servers",skills:"Skills",appearance:"Appearance"},ga={title:"Account",language:"Language",languageLabel:"Display Language",languageDescription:"Choose your preferred language for the interface",username:"Username",email:"Email",profile:"Profile",changePassword:"Change Password"},ha={title:"MCP Servers",addServer:"Add Server",editServer:"Edit Server",deleteServer:"Delete Server",serverName:"Server Name",serverType:"Server Type",config:"Configuration",testConnection:"Test Connection",status:"Status",connected:"Connected",disconnected:"Disconnected",scope:{label:"Scope",user:"User",project:"Project"}},fa={title:"Appearance",theme:"Theme",codeEditor:"Code Editor",editorTheme:"Editor Theme",wordWrap:"Word Wrap",showMinimap:"Show Minimap",lineNumbers:"Line Numbers",fontSize:"Font Size"},ba={saveChanges:"Save Changes",resetToDefaults:"Reset to Defaults",cancelChanges:"Cancel Changes"},va={title:"Voice",description:"Speech-to-text input and read-aloud, via an OpenAI-compatible audio backend.",enable:"Enable voice",enableDescription:"Show the mic button and the read-aloud button on messages.",backendTitle:"Backend",backendDescription:"Point at OpenAI, Groq, or a local server (LocalAI, Speaches, Kokoro-FastAPI). Leave blank to use the server default.",baseUrl:"Base URL",apiKey:"API key",sttModel:"Speech-to-text model",ttsModel:"Text-to-speech model",voice:"Voice",format:"Audio format",note:"A custom base URL is called directly by your browser and must allow browser CORS requests. Leave it blank to use the server-configured backend."},ka={title:"Quick Settings",sections:{appearance:"Appearance",toolDisplay:"Tool Display",inputSettings:"Input Settings"},darkMode:"Dark Mode",showRawParameters:"Show raw parameters",showThinking:"Show thinking",sendByCtrlEnter:"Send by Ctrl+Enter",voiceEnabled:"Voice (mic + read aloud)",sendByCtrlEnterDescription:"When enabled, pressing Ctrl+Enter will send the message instead of just Enter. This is useful for IME users to avoid accidental sends.",dragHandle:{dragging:"Dragging handle",closePanel:"Close settings panel",openPanel:"Open settings panel",draggingStatus:"Dragging...",toggleAndMove:"Click to toggle, drag to move"}},xa={title:"Terminal Shortcuts",sectionKeys:"Keys",sectionNavigation:"Navigation",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"Arrow Up",arrowDown:"Arrow Down",scrollDown:"Scroll Down",handle:{closePanel:"Close shortcuts panel",openPanel:"Open shortcuts panel"}},ya={label:"Settings",agents:"Agents",appearance:"Appearance",git:"Git",apiTokens:"API & Tokens",voice:"Voice",tasks:"Tasks",browser:"Browser",notifications:"Notifications",plugins:"Plugins",about:"About"},wa={title:"Notifications",description:"Control which notification events you receive.",webPush:{title:"Notify this browser",enable:"Enable notifications",disable:"Disable notifications",enabled:"Notifications are enabled for this browser",loading:"Updating...",unsupported:"Push notifications are not supported in this browser.",denied:"Push notifications are blocked. Please allow them in your browser settings."},desktop:{title:"Notify this desktop app",enable:"Enable notifications",disable:"Disable notifications",enabled:"Notifications are enabled for this desktop app",unsupported:"Desktop notifications are not supported on this system."},sound:{title:"Sound",description:"Play a short tone when a chat run finishes or needs tool approval.",enabled:"Enabled",test:"Test sound"},events:{title:"Event Types",actionRequired:"Action required",stop:"Run stopped",error:"Run failed"}},Ca={darkMode:{label:"Dark Mode",description:"Toggle between light and dark themes"},projectSorting:{label:"Project Sorting",description:"How projects are ordered in the sidebar",alphabetical:"Alphabetical",recentActivity:"Recent Activity"},codeEditor:{title:"Code Editor",theme:{label:"Editor Theme",description:"Default theme for the code editor"},wordWrap:{label:"Word Wrap",description:"Enable word wrapping by default in the editor"},showMinimap:{label:"Show Minimap",description:"Display a minimap for easier navigation in diff view"},lineNumbers:{label:"Show Line Numbers",description:"Display line numbers in the editor"},fontSize:{label:"Font Size",description:"Editor font size in pixels"}}},Sa={title:{add:"Add MCP Server",edit:"Edit MCP Server"},importMode:{form:"Form Input",json:"JSON Import"},scope:{label:"Scope",userGlobal:"User (Global)",projectLocal:"Project (Local)",userDescription:"User scope: Available across all projects on your machine",projectDescription:"Local scope: Only available in the selected project",cannotChange:"Scope cannot be changed when editing an existing server"},fields:{serverName:"Server Name",transportType:"Transport Type",command:"Command",arguments:"Arguments (one per line)",jsonConfig:"JSON Configuration",url:"URL",envVars:"Environment Variables (KEY=value, one per line)",headers:"Headers (KEY=value, one per line)",selectProject:"Select a project..."},placeholders:{serverName:"my-server"},validation:{missingType:"Missing required field: type",stdioRequiresCommand:"stdio type requires a command field",httpRequiresUrl:"{{type}} type requires a url field",invalidJson:"Invalid JSON format",jsonHelp:"Paste your MCP server configuration in JSON format. Example formats:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"Configuration Details (from {{configFile}})",projectPath:"Path: {{path}}",actions:{cancel:"Cancel",saving:"Saving...",addServer:"Add Server",updateServer:"Update Server"}},Pa={success:"Settings saved successfully!",error:"Failed to save settings",saving:"Saving..."},Aa={save:"Save Settings",cancel:"Cancel"},ja={title:"Git Configuration",description:"Configure your git identity for commits. These settings will be applied globally via git config --global",name:{label:"Git Name",help:"Your name for git commits"},email:{label:"Git Email",help:"Your email for git commits"},actions:{save:"Save Configuration",saving:"Saving..."},status:{success:"Saved successfully"}},Ta={title:"API Keys",description:"Generate API keys to access the external API from other applications.",newKey:{alertTitle:"⚠️ Save Your API Key",alertMessage:"This is the only time you'll see this key. Store it securely.",iveSavedIt:"I've saved it"},form:{placeholder:"API Key Name (e.g., Production Server)",createButton:"Create",cancelButton:"Cancel"},newButton:"New API Key",empty:"No API keys created yet.",list:{created:"Created:",lastUsed:"Last used:"},confirmDelete:"Are you sure you want to delete this API key?",status:{active:"Active",inactive:"Inactive"},github:{title:"GitHub Tokens",description:"Add GitHub Personal Access Tokens to clone private repositories via the external API.",descriptionAlt:"Add GitHub Personal Access Tokens to clone private repositories. You can also pass tokens directly in API requests without storing them.",addButton:"Add Token",form:{namePlaceholder:"Token Name (e.g., Personal Repos)",tokenPlaceholder:"GitHub Personal Access Token (ghp_...)",descriptionPlaceholder:"Description (optional)",addButton:"Add Token",cancelButton:"Cancel",howToCreate:"How to create a GitHub Personal Access Token →"},empty:"No GitHub tokens added yet.",added:"Added:",confirmDelete:"Are you sure you want to delete this GitHub token?"},apiDocsLink:"API Documentation",documentation:{title:"External API Documentation",description:"Learn how to use the external API to trigger Claude/Cursor sessions from your applications.",viewLink:"View API Documentation →"},loading:"Loading...",version:{updateAvailable:"Update available: v{{version}}"}},Ia={checking:"Checking TaskMaster installation...",notInstalled:{title:"TaskMaster AI CLI Not Installed",description:"TaskMaster CLI is required to use task management features. Install it to get started:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"View on GitHub",afterInstallation:"After installation:",steps:{restart:"Restart this application",autoAvailable:"TaskMaster features will automatically become available",initCommand:"Use task-master init in your project directory"}},settings:{enableLabel:"Enable TaskMaster Integration",enableDescription:"Show TaskMaster tasks, banners, and sidebar indicators across the interface"}},Ea={authStatus:{checking:"Checking...",connected:"Connected",notConnected:"Not connected",disconnected:"Disconnected",checkingAuth:"Checking authentication status...",loggedInAs:"Logged in as {{email}}",authenticatedUser:"authenticated user"},account:{claude:{description:"Anthropic Claude AI assistant"},cursor:{description:"Cursor AI-powered code editor"},codex:{description:"OpenAI Codex AI assistant"},opencode:{description:"OpenCode CLI assistant"}},connectionStatus:"Connection Status",login:{title:"Login",reAuthenticate:"Re-authenticate",description:"Sign in to your {{agent}} account to enable AI features",reAuthDescription:"Sign in with a different account or refresh credentials",button:"Login",reLoginButton:"Re-login"},error:"Error: {{error}}"},Ma={title:"Permission Settings",skipPermissions:{label:"Skip permission prompts (use with caution)",claudeDescription:"Equivalent to --dangerously-skip-permissions flag",cursorDescription:"Equivalent to -f flag in Cursor CLI"},allowedTools:{title:"Allowed Tools",description:"Tools that are automatically allowed without prompting for permission",placeholder:'e.g., "Bash(git log:*)" or "Write"',quickAdd:"Quick add common tools:",empty:"No allowed tools configured"},blockedTools:{title:"Blocked Tools",description:"Tools that are automatically blocked without prompting for permission",placeholder:'e.g., "Bash(rm:*)"',empty:"No blocked tools configured"},allowedCommands:{title:"Allowed Shell Commands",description:"Shell commands that are automatically allowed without prompting",placeholder:'e.g., "Shell(ls)" or "Shell(git status)"',quickAdd:"Quick add common commands:",empty:"No allowed commands configured"},blockedCommands:{title:"Blocked Shell Commands",description:"Shell commands that are automatically blocked",placeholder:'e.g., "Shell(rm -rf)" or "Shell(sudo)"',empty:"No blocked commands configured"},toolExamples:{title:"Tool Pattern Examples:",bashGitLog:"- Allow all git log commands",bashGitDiff:"- Allow all git diff commands",write:"- Allow all Write tool usage",bashRm:"- Block all rm commands (dangerous)"},shellExamples:{title:"Shell Command Examples:",ls:"- Allow ls command",gitStatus:"- Allow git status",npmInstall:"- Allow npm install",rmRf:"- Block recursive delete"},codex:{permissionMode:"Permission Mode",description:"Controls how Codex handles file modifications and command execution",modes:{default:{title:"Default",description:"Only trusted commands (ls, cat, grep, git status, etc.) run automatically. Other commands are skipped. Can write to workspace."},acceptEdits:{title:"Accept Edits",description:"All commands run automatically within the workspace. Full auto mode with sandboxed execution."},bypassPermissions:{title:"Bypass Permissions",description:"Full system access with no restrictions. All commands run automatically with full disk and network access. Use with caution."}},technicalDetails:"Technical details",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted. Trusted commands: cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find (without -exec), etc.",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never. All commands auto-execute within project directory.",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never. Full system access, use only in trusted environments.",overrideNote:"You can override this per-session using the mode button in the chat interface."}},actions:{add:"Add"}},za={title:"MCP Servers",description:{claude:"Model Context Protocol servers provide additional tools and data sources to Claude",cursor:"Model Context Protocol servers provide additional tools and data sources to Cursor",codex:"Model Context Protocol servers provide additional tools and data sources to Codex",opencode:"Model Context Protocol servers provide additional tools and data sources to OpenCode"},addButton:"Add MCP Server",empty:"No MCP servers configured",serverType:"Type",scope:{local:"local",user:"user"},config:{command:"Command",url:"URL",args:"Args",environment:"Environment"},tools:{title:"Tools",count:"({{count}}):",more:"+{{count}} more"},actions:{edit:"Edit server",delete:"Delete server"},managed:{badge:"Managed",hint:"Managed by WindCli."},help:{title:"About Codex MCP",description:"Codex supports stdio-based MCP servers. You can add servers that extend Codex's capabilities with additional tools and resources."}},Da={title:"Plugins",description:"Extend the interface with custom plugins. Install from git or drop a folder in ~/.claude-code-ui/plugins/",installPlaceholder:"https://github.com/user/my-plugin",installButton:"Install",installing:"Installing…",securityWarning:"Only install plugins whose source code you have reviewed or from authors you trust.",scanningPlugins:"Scanning plugins…",noPluginsInstalled:"No plugins installed",pullLatest:"Pull latest from git",noGitRemote:"No git remote — update not available",uninstallPlugin:"Uninstall plugin",confirmUninstall:"Click again to confirm",confirmUninstallMessage:"Remove {{name}}? This cannot be undone.",cancel:"Cancel",remove:"Remove",updateFailed:"Update failed",installFailed:"Installation failed",uninstallFailed:"Uninstall failed",toggleFailed:"Toggle failed",starterPluginLabel:"Starter Plugin",starter:"Starter",docs:"Docs",sections:{officialTitle:"Official Plugins",officialDescription:"Maintained by the WindCli team and ready for direct install.",unofficialTitle:"Other Plugins",unofficialDescription:"Unofficial plugins and integrations from other users. Review the source before installing."},starterPlugin:{name:"Project Stats",badge:"starter",description:"File counts, lines of code, file-type breakdown, and recent activity for your project.",install:"Install"},terminalPlugin:{name:"Terminal",badge:"official",description:"Integrated terminal with full shell access directly within the interface.",install:"Install"},scheduledPromptPlugin:{name:"Scheduled Prompts",badge:"unofficial",description:"Schedule workspace prompts, review run history, and manage recurring local tasks.",install:"Install"},claudeWatchPlugin:{name:"Claude Watch",badge:"unofficial",description:"Watch long-running Claude Code sessions for hangs and expose process controls.",install:"Install"},prismCloudCLI:{name:"PRISM CloudCLI",badge:"unofficial",description:"Session intelligence for Claude Code, inside WindCli. See why your sessions are burning tokens without leaving the browser.",install:"Install"},sessionManagerPlugin:{name:"Sessions",badge:"unofficial",description:"View, manage, and kill active Claude Code sessions.",install:"Install"},tokenCostCalculatorPlugin:{name:"Token Cost Calculator",badge:"unofficial",description:"Calculate API costs from model prices and token usage, with preset model pricing support.",install:"Install"},taskQueuePlugin:{name:"Task Queue",badge:"unofficial",description:"Task queue dashboard to view, filter, and launch agent tasks.",install:"Install"},githubIssuesBoardPlugin:{name:"GitHub Issues Board",badge:"unofficial",description:"Kanban board for GitHub Issues with bidirectional TaskMaster sync and /github-task CLI skill auto-install",install:"Install"},claudeUsagePlugin:{name:"Claude Usage",badge:"unofficial",description:"Track live Claude Code plan limits and explore 30-day token and cost history.",install:"Install"},codexUsagePlugin:{name:"Codex Usage",badge:"unofficial",description:"Track live Codex plan limits, reset timing, and 30-day account token activity.",install:"Install"},morePlugins:"More",enable:"Enable",disable:"Disable",installAriaLabel:"Plugin git repository URL",tab:"tab",runningStatus:"running"},Na={title:pa,tabs:ma,account:ga,mcp:ha,appearance:fa,actions:ba,voiceSettings:va,quickSettings:ka,terminalShortcuts:xa,mainTabs:ya,notifications:wa,appearanceSettings:Ca,mcpForm:Sa,saveStatus:Pa,footerActions:Aa,git:ja,apiKeys:Ta,tasks:Ia,agents:Ea,permissions:Ma,mcpServers:za,pluginSettings:Da},$a={title:"Welcome Back",description:"Sign in to your WindCli self-hosted account",username:"Username",password:"Password",submit:"Sign In",loading:"Signing in...",errors:{invalidCredentials:"Invalid username or password",requiredFields:"Please fill in all fields",networkError:"Network error. Please try again."},placeholders:{username:"Enter your username",password:"Enter your password"}},Ra={title:"Create Account",username:"Username",password:"Password",confirmPassword:"Confirm Password",submit:"Create Account",loading:"Creating account...",errors:{passwordMismatch:"Passwords do not match",usernameTaken:"Username is already taken",weakPassword:"Password is too weak"}},La={title:"Sign Out",confirm:"Are you sure you want to sign out?",button:"Sign Out"},Fa={login:$a,register:Ra,logout:La},Ba={title:"Projects",newProject:"New Project",deleteProject:"Remove Project",renameProject:"Rename Project",noProjects:"No projects found",loadingProjects:"Loading projects...",searchPlaceholder:"Search projects...",projectNamePlaceholder:"Project name",starred:"Starred",all:"All",untitledSession:"Untitled Session",newSession:"New Session",codexSession:"Codex Session",fetchingProjects:"Fetching your Claude projects and sessions",projects:"projects",noMatchingProjects:"No matching projects",tryDifferentSearch:"Try adjusting your search term",runClaudeCli:"Run Claude CLI in a project directory to get started"},Ga={title:"WindCli",subtitle:"AI coding assistant interface"},Ha={title:"Sessions",newSession:"New Session",deleteSession:"Delete Session",renameSession:"Rename Session",noSessions:"No sessions yet",loadingSessions:"Loading sessions...",unnamed:"Unnamed",loading:"Loading...",showMore:"Show more sessions"},Oa={viewEnvironments:"View Environments",hideSidebar:"Hide sidebar",createProject:"Create new project",refresh:"Refresh projects and sessions (Ctrl+R)",renameProject:"Rename project (F2)",deleteProject:"Remove project from sidebar (Delete)",addToFavorites:"Add to favorites",removeFromFavorites:"Remove from favorites",editSessionName:"Manually edit session name",deleteSession:"Delete this session permanently",activeSessionIndicator:"Recently active session (last 10 minutes)",save:"Save",cancel:"Cancel",clearSearch:"Clear search",openCommandPalette:"Open command palette",attentionRequiredIndicator:"Session needs attention"},Ua={chat:"Chat",files:"Files",git:"Git",terminal:"Terminal",tasks:"Tasks"},qa={refresh:"Refresh",settings:"Settings",collapseAll:"Collapse All",expandAll:"Expand All",cancel:"Cancel",save:"Save",delete:"Delete",rename:"Rename",joinCommunity:"Join Community",reportIssue:"Report Issue",starOnGithub:"Star on GitHub"},Wa={openSource:"Open Source"},Va={active:"Active",inactive:"Inactive",thinking:"Thinking...",error:"Error",aborted:"Aborted",unknown:"Unknown"},Ka={justNow:"Just now",oneMinuteAgo:"1 min ago",minutesAgo:"{{count}} mins ago",oneHourAgo:"1 hour ago",hoursAgo:"{{count}} hours ago",oneDayAgo:"1 day ago",daysAgo:"{{count}} days ago"},_a={deleteConfirm:"Are you sure you want to delete this?",renameSuccess:"Renamed successfully",deleteSuccess:"Deleted successfully",errorOccurred:"An error occurred",deleteSessionConfirm:"Are you sure you want to delete this session? This action cannot be undone.",deleteProjectConfirm:"Remove this project from the sidebar? Your project files, memories, and session data will not be deleted.",enterProjectPath:"Please enter a project path",deleteSessionFailed:"Failed to delete session. Please try again.",deleteSessionError:"Error deleting session. Please try again.",renameSessionFailed:"Failed to rename session. Please try again.",renameSessionError:"Error renaming session. Please try again.",deleteProjectFailed:"Failed to remove project. Please try again.",deleteProjectError:"Error removing project. Please try again.",createProjectFailed:"Failed to create project. Please try again.",createProjectError:"Error creating project. Please try again.",updateProjectError:"Error updating project. Please try again.",refreshError:"Failed to refresh. Please try again.",restoreProjectFailed:"Failed to restore project. Please try again.",restoreProjectError:"Error restoring project. Please try again.",restoreSessionFailed:"Failed to restore session. Please try again.",restoreSessionError:"Error restoring session. Please try again."},Ya={updateAvailable:"Update available",restartRequired:"Update installed — restart the server to apply"},Ja={modeProjects:"Projects",modeConversations:"Conversations",conversationsPlaceholder:"Search in conversations...",searching:"Searching...",sessionTitles:"Session",conversationContents:"Conversation contents",noResults:"No results found",tryDifferentQuery:"Try a different search query",matches_one:"{{count}} match",matches_other:"{{count}} matches",projectsScanned_one:"{{count}} project scanned",projectsScanned_other:"{{count}} projects scanned"},Qa={title:"Recent conversations",emptyTitle:"No conversations yet",emptyDescription:"Your most recently updated conversations will appear here.",loadFailed:"Could not load recent conversations",loadMore:"Load older conversations",loadingMore:"Loading more..."},Za={deleteProject:"Remove Project",deleteSession:"Delete Session",confirmDelete:"What would you like to do with",sessionCount_one:"This project contains {{count}} conversation.",sessionCount_other:"This project contains {{count}} conversations.",removeFromSidebar:"Remove from sidebar only",deleteAllData:"Delete all data permanently",allConversationsDeleted:"The project will be removed from the sidebar. Your files, memories, and session data will be preserved.",cannotUndo:"You can re-add the project later."},Xa={projects:Ba,app:Ga,sessions:Ha,tooltips:Oa,navigation:Ua,actions:qa,branding:Wa,status:Va,time:Ka,messages:_a,version:Ya,search:Ja,recent:Qa,deleteConfirmation:Za},eo={copy:"Copy",copied:"Copied",copyCode:"Copy code"},to={copy:"Copy message",copied:"Message copied",selectFormat:"Select copy format",copyAsMarkdown:"Copy as markdown",copyAsText:"Copy as text"},no={user:"U",error:"Error",tool:"Tool",claude:"Claude",cursor:"Cursor",codex:"Codex",opencode:"OpenCode"},so={settings:"Tool Settings",error:"Tool Error",result:"Tool Result",viewParams:"View input parameters",viewRawParams:"View raw parameters",viewDiff:"View edit diff for",creatingFile:"Creating new file:",updatingTodo:"Updating Todo List",read:"Read",readFile:"Read file",updateTodo:"Update todo list",readTodo:"Read todo list",searchResults:"results"},io={found:"Found {{count}} {{type}}",file:"file",files:"files",pattern:"pattern:",in:"in:"},ao={updated:"File updated successfully",created:"File created successfully",written:"File written successfully",diff:"Diff",newFile:"New File",viewContent:"View file content",viewFullOutput:"View full output ({{count}} chars)",contentDisplayed:"The file content is displayed in the diff view above"},oo={title:"Interactive Prompt",waiting:"Waiting for your response in the CLI",instruction:"Please select an option in your terminal where Claude is running.",selectedOption:"✓ Claude selected option {{number}}",instructionDetail:"In the CLI, you would select this option interactively using arrow keys or by typing the number."},ro={title:"Thinking...",emoji:"💭 Thinking..."},lo={response:"JSON Response"},co={grant:"Grant permission for {{tool}}",added:"Permission added",addTo:"Adds {{entry}} to Allowed Tools.",retry:"Permission saved. Retry the request to use the tool.",error:"Unable to update permissions. Please try again.",openSettings:"Open settings"},uo={updated:"Todo list has been updated successfully",current:"Current Todo List"},po={viewPlan:"📋 View implementation plan",title:"Implementation Plan"},mo={resetAt:"Claude usage limit reached. Your limit will reset at **{{time}} {{timezone}}** - {{date}}"},go={permissionMode:"Permission Mode",modes:{default:"Default Mode",auto:"Auto Mode",acceptEdits:"Accept Edits",bypassPermissions:"Bypass Permissions",plan:"Plan Mode"},descriptions:{default:"Only trusted commands (ls, cat, grep, git status, etc.) run automatically. Other commands are skipped. Can write to workspace.",auto:"A model classifier decides per tool call whether to approve or deny. Hands-off, but safer than Bypass — denials still happen.",acceptEdits:"All commands run automatically within the workspace. Full auto mode with sandboxed execution.",bypassPermissions:"Full system access with no restrictions. All commands run automatically with full disk and network access. Use with caution.",plan:"Planning mode - no commands are executed"},technicalDetails:"Technical details"},ho={input:"Voice input",stopRecording:"Stop recording",transcribing:"Transcribing…",speak:"Read aloud",stopSpeaking:"Stop",loading:"Loading…"},fo={placeholder:"Type / for commands, @ for files, or ask {{provider}} anything...",placeholderDefault:"Type your message...",disabled:"Input disabled",attachFiles:"Attach files",attachImages:"Attach images",send:"Send",stop:"Stop",hintText:{ctrlEnter:"Ctrl+Enter to send • Shift+Enter for new line • Tab to change modes • / for slash commands",enter:"Enter to send • Shift+Enter for new line • Tab to change modes • / for slash commands",queue:"Enter to queue your next message",updateQueued:"Enter to update queued message"},clickToChangeMode:"Click to change permission mode (or press Tab in input)",showAllCommands:"Show all commands",clearInput:"Clear input",scrollToBottom:"Scroll to bottom",queue:{sendNext:"Queue next message",update:"Update queued message",label:"Queued",willSend:"Will send when this finishes",edit:"Edit queued message",delete:"Delete queued message"}},bo={reasoning:"Reasoning",model:"Model",effortDefault:"Default",loadingModels:"Loading models…",modelMenu:"Select model and reasoning effort",permissionHeading:"How should {{provider}} actions be approved?"},vo={title:"Choose Your AI Assistant",description:"Select a provider to start a new conversation",selectModel:"Select Model",providerInfo:{anthropic:"by Anthropic",openai:"by OpenAI",cursorEditor:"AI Code Editor",google:"by Google"},readyPrompt:{claude:"Ready to use Claude with {{model}}. Start typing your message below.",cursor:"Ready to use Cursor with {{model}}. Start typing your message below.",codex:"Ready to use Codex with {{model}}. Start typing your message below.",opencode:"Ready to use OpenCode with {{model}}. Start typing your message below.",default:"Select a provider above to begin"},pressToSearch:"Press <kbd>{{shortcut}}</kbd> to search sessions, files, and commits"},ko={continue:{title:"Continue your conversation",description:"Ask questions about your code, request changes, or get help with development tasks"},loading:{olderMessages:"Loading older messages...",sessionMessages:"Loading session messages..."},messages:{showingOf:"Showing {{shown}} of {{total}} messages",scrollToLoad:"Scroll up to load more",showingLast:"Showing last {{count}} messages ({{total}} total)",loadEarlier:"Load earlier messages",loadAll:"Load all messages",loadingAll:"Loading all messages...",allLoaded:"All messages loaded",perfWarning:'All messages loaded — scrolling may be slower. Click "Scroll to bottom" to restore performance.'}},xo={selectProject:{title:"Select a Project",description:"Choose a project to open an interactive shell in that directory"},status:{newSession:"New Session",initializing:"Initializing...",restarting:"Restarting..."},actions:{disconnect:"Disconnect",disconnectTitle:"Disconnect from shell",restart:"Restart",restartTitle:"Restart Shell",connect:"Continue in Shell",connectTitle:"Connect to shell"},loading:"Loading terminal...",connecting:"Connecting to shell...",startSession:"Start a new Claude session",resumeSession:"Resume session: {{displayName}}...",runCommand:"Run {{command}} in {{projectName}}",startCli:"Starting Claude CLI in {{projectName}}",defaultCommand:"command"},yo={actions:{thinking:"Thinking",processing:"Processing",analyzing:"Analyzing",working:"Working",computing:"Computing",reasoning:"Reasoning"},state:{live:"Live",paused:"Paused"},elapsed:{seconds:"{{count}}s",minutesSeconds:"{{minutes}}m {{seconds}}s",label:"{{time}} elapsed",startingNow:"Starting now"},stop:"Stop",controls:{stopGeneration:"Stop Generation",pressEscToStop:"Press Esc anytime to stop"},providers:{assistant:"Assistant"}},wo={startChatWithProvider:"Select a project to start chatting with {{provider}}"},Co={nextTaskPrompt:"Start the next task"},So={codeBlock:eo,copyMessage:to,messageTypes:no,tools:so,search:io,fileOperations:ao,interactive:oo,thinking:ro,json:lo,permissions:co,todo:uo,plan:po,usageLimit:mo,codex:go,voice:ho,input:fo,composer:bo,providerSelection:vo,session:ko,shell:xo,claudeStatus:yo,projectSelection:wo,tasks:Co},Po={changes:"changes",previousChange:"Previous change",nextChange:"Next change",hideDiff:"Hide diff highlighting",showDiff:"Show diff highlighting",settings:"Editor Settings",collapse:"Collapse editor",expand:"Expand editor to full width"},Ao="Loading {{fileName}}...",jo={showingChanges:"Showing changes"},To={copyPath:"Copy file path",pathCopied:"File path copied",download:"Download file",save:"Save",saving:"Saving...",saved:"Saved!",exitFullscreen:"Exit fullscreen",fullscreen:"Fullscreen",close:"Close",previewMarkdown:"Preview markdown",editMarkdown:"Edit markdown"},Io={lines:"Lines:",characters:"Characters:",shortcuts:"Press Ctrl+S to save • Esc to close"},Eo={title:"Binary File",message:'The file "{{fileName}}" cannot be displayed in the text editor because it is a binary file.'},Mo={loading:"Loading preview...",error:"Unable to display this file.",openInNewTab:"Open in new tab"},zo={toolbar:Po,loading:Ao,header:jo,actions:To,footer:Io,binaryFile:Eo,filePreview:Mo},Do={title:"TaskMaster AI is not configured",description:"TaskMaster helps break down complex projects into manageable tasks with AI-powered assistance",whatIsTitle:"🎯 What is TaskMaster?",features:{aiPowered:"AI-Powered Task Management: Break complex projects into manageable subtasks",prdTemplates:"PRD Templates: Generate tasks from Product Requirements Documents",dependencyTracking:"Dependency Tracking: Understand task relationships and execution order",progressVisualization:"Progress Visualization: Kanban boards and detailed task analytics",cliIntegration:"CLI Integration: Use taskmaster commands for advanced workflows"},initializeButton:"Initialize TaskMaster AI"},No={title:"Getting Started with TaskMaster",subtitle:"TaskMaster is initialized! Here's what to do next:",steps:{createPRD:{title:"Create a Product Requirements Document (PRD)",description:"Discuss your project idea and create a PRD that describes what you want to build.",addButton:"Add PRD",existingPRDs:"Existing PRDs:"},generateTasks:{title:"Generate Tasks from PRD",description:"Once you have a PRD, ask your AI assistant to parse it and TaskMaster will automatically break it down into manageable tasks with implementation details."},analyzeTasks:{title:"Analyze & Expand Tasks",description:"Ask your AI assistant to analyze task complexity and expand them into detailed subtasks for easier implementation."},startBuilding:{title:"Start Building",description:"Ask your AI assistant to begin working on tasks, update their status, and add new tasks as your project evolves."}},tip:"💡 Tip: Start with a PRD to get the most out of TaskMaster's AI-powered task generation"},$o={title:"TaskMaster Setup",subtitle:"Interactive CLI for {{projectName}}",willStart:"TaskMaster initialization will start automatically",completed:"TaskMaster setup completed! You can now close this window.",closeButton:"Close",closeContinueButton:"Close & Continue"},Ro={title:"Getting Started with TaskMaster",subtitle:"Your guide to productive task management",examples:{parsePRD:`💬 Example:
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/CodeEditor-C9qFO6L8.js","assets/vendor-react-C2GTiUCy.js","assets/MarkdownPreview-C7pAt3xI.js","assets/vendor-markdown-DkITEES2.js","assets/feature-chat-CNYDDkFQ.js","assets/feature-workspace-BMlv7Ust.js","assets/vendor-ui-CAUHSABu.js","assets/vendor-i18n-B6HjLCnN.js","assets/vendor-data-DsEZeNPr.js","assets/FileTree-0yJEzBi9.js","assets/StandaloneShell-J5BR1g26.js","assets/Shell-CrjXAW4f.js","assets/Shell-DrlLKa8f.css","assets/GitPanel-BhbG7yVZ.js","assets/index-CPP7a6gU.js","assets/index-BTFkWJZe.js","assets/TaskMasterPanel-B2wpEHWP.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{j as e,r,d as vt,u as kt,f as Yt,B as Jt,h as Qt,i as We,k as Zt}from"./vendor-react-C2GTiUCy.js";import{L as xt,aa as Xt,a as ae,ab as en,ac as tn,a6 as yt,ad as Be,ae as nn,c as ie,_ as ee,af as wt,ag as sn,a4 as an,ah as on,ai as rn,aj as Ve,f as ln,ak as Ct,a2 as cn,al as St,u as Pt,h as dn,D as un,z as pn,A as mn,E as gn,F as hn,G as fn,H as bn,J as se,K as V,am as vn,an as kn,ao as xn,ap as At,aq as yn,a3 as wn,ar as Cn,as as Ke,at as Sn,au as Pn,av as An,aw as jn,ax as Tn,ay as In,az as En}from"./feature-workspace-BMlv7Ust.js";import{o as Ge,G as He,aG as Oe,bB as Mn,a3 as zn,ao as Ue,L as we,t as Ce,n as Dn,a8 as Nn,a9 as jt,Q as Tt,bC as _e,bD as $n,j as It,U as Rn,F as Et,z as Ln,bE as Fn,X as Mt,bF as Bn,S as Gn,bG as Hn,R as zt,bA as On,bH as Un,$ as qn,bs as Wn,bv as Vn,a5 as Kn,x as _n,B as Yn,M as Jn,c as Qn,bI as Zn,bJ as Xn,bK as es,aa as ts}from"./vendor-ui-CAUHSABu.js";import{u as Z,i as qe,a as ns,I as ss}from"./vendor-i18n-B6HjLCnN.js";import{C as is,r as as,c as os}from"./feature-chat-CNYDDkFQ.js";import"./vendor-data-DsEZeNPr.js";import"./vendor-markdown-DkITEES2.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))i(a);new MutationObserver(a=>{for(const o of a)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&i(l)}).observe(document,{childList:!0,subtree:!0});function n(a){const o={};return a.integrity&&(o.integrity=a.integrity),a.referrerPolicy&&(o.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?o.credentials="include":a.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function i(a){if(a.ep)return;a.ep=!0;const o=n(a);fetch(a.href,o)}})();function rs({provider:t,title:s,status:n,connectedClassName:i,iconContainerClassName:a,loginButtonClassName:o,onLogin:l}){const c=n.authenticated?i:"border-border bg-card",u=n.loading?"Checking...":n.authenticated?n.email||"Connected":n.error||"Not connected";return e.jsx("div",{className:`rounded-xl border px-3 py-2.5 transition-colors ${c}`,children:e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-3",children:[e.jsx("div",{className:`flex h-9 w-9 flex-shrink-0 items-center justify-center rounded-full ${a}`,children:e.jsx(xt,{provider:t,className:"h-5 w-5"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-sm font-medium text-foreground",children:[s,n.authenticated&&e.jsx(Ge,{className:"h-3.5 w-3.5 flex-shrink-0 text-emerald-500"})]}),e.jsx("div",{className:"truncate text-xs text-muted-foreground",title:u,children:u})]})]}),!n.authenticated&&!n.loading&&e.jsx("button",{onClick:l,className:`${o} flex-shrink-0 rounded-lg px-4 py-1.5 text-sm font-medium text-white transition-colors`,children:"Login"})]})})}const ls=[{provider:"claude",title:"Claude Code",connectedClassName:"bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800",iconContainerClassName:"bg-blue-100 dark:bg-blue-900/30",loginButtonClassName:"bg-blue-600 hover:bg-blue-700"},{provider:"cursor",title:"Cursor",connectedClassName:"bg-purple-50 dark:bg-purple-900/20 border-purple-200 dark:border-purple-800",iconContainerClassName:"bg-purple-100 dark:bg-purple-900/30",loginButtonClassName:"bg-purple-600 hover:bg-purple-700"},{provider:"codex",title:"OpenAI Codex",connectedClassName:"bg-gray-100 dark:bg-gray-800/50 border-gray-300 dark:border-gray-600",iconContainerClassName:"bg-gray-100 dark:bg-gray-800",loginButtonClassName:"bg-gray-800 hover:bg-gray-900 dark:bg-gray-700 dark:hover:bg-gray-600"},{provider:"opencode",title:"OpenCode",connectedClassName:"bg-zinc-100 dark:bg-zinc-800/50 border-zinc-300 dark:border-zinc-600",iconContainerClassName:"bg-zinc-100 dark:bg-zinc-800",loginButtonClassName:"bg-zinc-800 hover:bg-zinc-900 dark:bg-zinc-700 dark:hover:bg-zinc-600"}];function cs({providerStatuses:t,onOpenProviderLogin:s}){return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("h2",{className:"font-serif text-xl font-bold tracking-tight text-foreground",children:"Connect Your AI Agents"}),e.jsx("p",{className:"mx-auto mt-1 max-w-sm text-sm leading-relaxed text-muted-foreground",children:"Login to one or more AI coding assistants. All are optional."})]}),e.jsx("div",{className:"-mr-1 max-h-[38vh] space-y-2 overflow-y-auto pr-1",children:ls.map(n=>e.jsx(rs,{provider:n.provider,title:n.title,status:t[n.provider],connectedClassName:n.connectedClassName,iconContainerClassName:n.iconContainerClassName,loginButtonClassName:n.loginButtonClassName,onLogin:()=>s(n.provider)},n.provider))}),e.jsx("p",{className:"text-center text-xs text-muted-foreground",children:"You can configure these later in Settings."})]})}function ds({gitName:t,gitEmail:s,isSubmitting:n,onGitNameChange:i,onGitEmailChange:a}){return e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"mx-auto mb-3 flex h-14 w-14 items-center justify-center rounded-2xl bg-primary/10 ring-1 ring-inset ring-primary/20",children:e.jsx(He,{className:"h-7 w-7 text-primary"})}),e.jsx("h2",{className:"font-serif text-xl font-bold tracking-tight text-foreground",children:"Git Configuration"}),e.jsx("p",{className:"mx-auto mt-1 max-w-sm text-sm leading-relaxed text-muted-foreground",children:"Configure your git identity to ensure proper attribution for commits."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"gitName",className:"mb-2 flex items-center gap-2 text-sm font-medium text-foreground",children:[e.jsx(Oe,{className:"h-4 w-4"}),"Git Name ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx("input",{type:"text",id:"gitName",value:t,onChange:o=>i(o.target.value),className:"w-full rounded-xl border border-border bg-background/60 px-4 py-2.5 text-foreground shadow-sm transition-colors placeholder:text-muted-foreground/60 hover:border-foreground/20 focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary/30",placeholder:"John Doe",required:!0,disabled:n}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"Saved as `git config --global user.name`."})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"gitEmail",className:"mb-2 flex items-center gap-2 text-sm font-medium text-foreground",children:[e.jsx(Mn,{className:"h-4 w-4"}),"Git Email ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx("input",{type:"email",id:"gitEmail",value:s,onChange:o=>a(o.target.value),className:"w-full rounded-xl border border-border bg-background/60 px-4 py-2.5 text-foreground shadow-sm transition-colors placeholder:text-muted-foreground/60 hover:border-foreground/20 focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary/30",placeholder:"john@example.com",required:!0,disabled:n}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"Saved as `git config --global user.email`."})]})]})]})}const Ye=[{title:"Git Configuration",icon:He,required:!0},{title:"Connect Agents",icon:zn,required:!1}];function us({currentStep:t}){return e.jsx("div",{className:"mb-5",children:e.jsx("div",{className:"flex items-center justify-between",children:Ye.map((s,n)=>{const i=n<t,a=n===t,o=s.icon;return e.jsxs("div",{className:"contents",children:[e.jsxs("div",{className:"flex flex-1 flex-col items-center",children:[e.jsx("div",{className:`flex h-10 w-10 items-center justify-center rounded-full border-2 transition-all duration-200 ${i?"border-emerald-500 bg-emerald-500 text-white shadow-lg shadow-emerald-500/25":a?"border-primary bg-primary text-primary-foreground shadow-lg shadow-primary/25":"border-border bg-card text-muted-foreground"}`,children:i?e.jsx(Ge,{className:"h-5 w-5"}):e.jsx(o,{className:"h-5 w-5"})}),e.jsxs("div",{className:"mt-1.5 text-center",children:[e.jsx("p",{className:`text-sm font-medium ${a?"text-foreground":"text-muted-foreground"}`,children:s.title}),s.required&&e.jsx("span",{className:"text-xs text-red-500",children:"Required"})]})]}),n<Ye.length-1&&e.jsx("div",{className:`mx-2 h-0.5 flex-1 transition-colors duration-200 ${i?"bg-emerald-500":"bg-border"}`})]},s.title)})})})}const Je=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,Qe=async(t,s)=>{try{return(await t.json()).error||s}catch{return s}};function Ze({onComplete:t}){const[s,n]=r.useState(0),[i,a]=r.useState(""),[o,l]=r.useState(""),[c,u]=r.useState(!1),[d,g]=r.useState(""),[p,f]=r.useState(null),{providerAuthStatus:m,checkProviderAuthStatus:k,refreshProviderAuthStatuses:v}=Xt(),I=r.useRef(void 0),x=r.useCallback(async()=>{try{const S=await ae("/api/user/git-config");if(!S.ok)return;const N=await S.json();N.gitName&&a(N.gitName),N.gitEmail&&l(N.gitEmail)}catch(S){console.error("Error loading git config:",S)}},[]);r.useEffect(()=>{x(),v()},[x,v]),r.useEffect(()=>{const S=I.current;I.current=p,S!=null&&p===null&&v()},[p,v]);const A=S=>{f(S)},P=S=>{S===0&&p&&k(p)},E=async()=>{if(g(""),s!==0){n(S=>S+1);return}if(!i.trim()||!o.trim()){g("Both git name and email are required.");return}if(!Je.test(o)){g("Please enter a valid email address.");return}u(!0);try{const S=await ae("/api/user/git-config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({gitName:i,gitEmail:o})});if(!S.ok){const N=await Qe(S,"Failed to save git configuration");throw new Error(N)}n(N=>N+1)}catch(S){g(S instanceof Error?S.message:"Failed to save git configuration")}finally{u(!1)}},L=()=>{g(""),n(S=>S-1)},D=async()=>{u(!0),g("");try{const S=await ae("/api/user/complete-onboarding",{method:"POST"});if(!S.ok){const N=await Qe(S,"Failed to complete onboarding");throw new Error(N)}await t?.()}catch(S){g(S instanceof Error?S.message:"Failed to complete onboarding")}finally{u(!1)}},F=s===0?!!(i.trim()&&o.trim()&&Je.test(o)):!0;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"relative h-screen overflow-y-auto bg-background",children:[e.jsxs("div",{"aria-hidden":!0,className:"pointer-events-none fixed inset-0",children:[e.jsx("div",{className:"absolute -top-40 left-1/2 h-[36rem] w-[36rem] -translate-x-1/2 rounded-full bg-primary/10 blur-3xl"}),e.jsx("div",{className:"absolute -bottom-32 -left-24 h-[26rem] w-[26rem] rounded-full bg-primary/5 blur-3xl"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(hsl(var(--foreground)/0.04)_1px,transparent_1px)] opacity-60 [background-size:22px_22px]"})]}),e.jsx("div",{className:"relative mx-auto flex min-h-full w-full max-w-2xl items-center justify-center p-4",children:e.jsxs("div",{className:"w-full py-6",children:[e.jsx(us,{currentStep:s}),e.jsxs("div",{className:"rounded-2xl border border-border/70 bg-card/90 p-6 shadow-[0_24px_60px_-20px_hsl(var(--foreground)/0.18)] ring-1 ring-foreground/5 backdrop-blur-xl",children:[s===0?e.jsx(ds,{gitName:i,gitEmail:o,isSubmitting:c,onGitNameChange:a,onGitEmailChange:l}):e.jsx(cs,{providerStatuses:m,onOpenProviderLogin:A}),d&&e.jsx("div",{role:"alert",className:"mt-5 rounded-xl border border-destructive/30 bg-destructive/10 p-3.5",children:e.jsx("p",{className:"text-sm text-destructive",children:d})}),e.jsxs("div",{className:"mt-6 flex items-center justify-between border-t border-border pt-5",children:[e.jsxs("button",{onClick:L,disabled:s===0||c,className:"flex items-center gap-2 px-4 py-2 text-sm font-medium text-muted-foreground transition-colors duration-200 hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",children:[e.jsx(Ue,{className:"h-4 w-4"}),"Previous"]}),e.jsx("div",{className:"flex items-center gap-3",children:s<1?e.jsx("button",{onClick:E,disabled:!F||c,className:"flex items-center gap-2 rounded-xl bg-primary px-6 py-2.5 font-medium text-primary-foreground shadow-lg shadow-primary/25 transition-all duration-200 hover:brightness-110 active:scale-[0.99] disabled:cursor-not-allowed disabled:opacity-60 disabled:shadow-none",children:c?e.jsxs(e.Fragment,{children:[e.jsx(we,{className:"h-4 w-4 animate-spin"}),"Saving..."]}):e.jsxs(e.Fragment,{children:["Next",e.jsx(Ce,{className:"h-4 w-4"})]})}):e.jsx("button",{onClick:D,disabled:c,className:"flex items-center gap-2 rounded-xl bg-emerald-600 px-6 py-2.5 font-medium text-white shadow-lg shadow-emerald-600/25 transition-all duration-200 hover:bg-emerald-700 active:scale-[0.99] disabled:cursor-not-allowed disabled:opacity-60 disabled:shadow-none",children:c?e.jsxs(e.Fragment,{children:[e.jsx(we,{className:"h-4 w-4 animate-spin"}),"Completing..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Ge,{className:"h-4 w-4"}),"Complete Setup"]})})})]})]})]})})]}),p&&e.jsx(en,{isOpen:!!p,onClose:()=>f(null),provider:p,onComplete:P})]})}const ps=["0s","0.15s","0.3s"];function ms(){return e.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[e.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0",children:e.jsx("div",{className:"absolute -top-40 left-1/2 h-[36rem] w-[36rem] -translate-x-1/2 rounded-full bg-primary/10 blur-3xl"})}),e.jsxs("div",{className:"relative text-center",role:"status","aria-live":"polite",children:[e.jsx("div",{className:"mb-5 flex justify-center",children:e.jsx("div",{className:"flex h-16 w-16 items-center justify-center rounded-2xl bg-gradient-to-br from-primary to-primary/80 shadow-lg shadow-primary/25 ring-1 ring-inset ring-white/20",children:e.jsx("img",{src:"/logo.svg",alt:"WindCli",className:"h-9 w-9"})})}),e.jsx("h1",{className:"mb-4 text-2xl font-bold tracking-tight text-foreground",style:{fontFamily:tn},children:"WindCli"}),e.jsx("p",{className:"sr-only",children:"Loading authentication state…"}),e.jsx("div",{"aria-hidden":!0,className:"flex items-center justify-center gap-2",children:ps.map(t=>e.jsx("div",{className:"h-2 w-2 animate-bounce rounded-full bg-primary",style:{animationDelay:t}},t))})]})]})}function Dt({errorMessage:t}){return t?e.jsxs("div",{role:"alert",className:"flex items-start gap-2.5 rounded-xl border border-destructive/30 bg-destructive/10 p-3 text-destructive",children:[e.jsx(Dn,{className:"mt-0.5 h-4 w-4 flex-shrink-0"}),e.jsx("p",{className:"text-sm leading-relaxed",children:t})]}):null}function fe({id:t,label:s,value:n,onChange:i,placeholder:a,isDisabled:o,type:l="text",name:c,autoComplete:u,icon:d}){const[g,p]=r.useState(!1),f=l==="password",m=f&&g?"text":l;return e.jsxs("div",{children:[e.jsx("label",{htmlFor:t,className:"mb-1.5 block text-sm font-medium text-foreground",children:s}),e.jsxs("div",{className:"group relative",children:[d&&e.jsx(d,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground transition-colors group-focus-within:text-primary"}),e.jsx("input",{id:t,type:m,name:c??t,autoComplete:u,value:n,onChange:k=>i(k.target.value),className:`w-full rounded-xl border border-border bg-background/60 py-2.5 text-foreground shadow-sm transition-colors placeholder:text-muted-foreground/60 hover:border-foreground/20 focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary/30 disabled:cursor-not-allowed disabled:opacity-60 ${d?"pl-10":"pl-3.5"} ${f?"pr-11":"pr-3.5"}`,placeholder:a,required:!0,disabled:o}),f&&e.jsx("button",{type:"button",onClick:()=>p(k=>!k),disabled:o,"aria-label":g?"Hide password":"Show password",className:"absolute right-2 top-1/2 flex h-7 w-7 -translate-y-1/2 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 disabled:opacity-60",children:g?e.jsx(Nn,{className:"h-4 w-4"}):e.jsx(jt,{className:"h-4 w-4"})})]})]})}function Nt({title:t,description:s,children:n,footerText:i,logo:a}){return e.jsxs("div",{className:"relative h-screen overflow-y-auto bg-background",children:[e.jsxs("div",{"aria-hidden":!0,className:"pointer-events-none fixed inset-0",children:[e.jsx("div",{className:"absolute -top-40 left-1/2 h-[36rem] w-[36rem] -translate-x-1/2 rounded-full bg-primary/10 blur-3xl"}),e.jsx("div",{className:"absolute -bottom-32 -left-24 h-[26rem] w-[26rem] rounded-full bg-primary/5 blur-3xl"}),e.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(hsl(var(--foreground)/0.04)_1px,transparent_1px)] opacity-60 [background-size:22px_22px]"})]}),e.jsx("div",{className:"relative mx-auto flex min-h-full w-full max-w-md items-center justify-center p-4 py-8",children:e.jsxs("div",{className:"w-full rounded-2xl border border-border/70 bg-card/90 p-8 shadow-[0_24px_60px_-20px_hsl(var(--foreground)/0.18)] ring-1 ring-foreground/5 backdrop-blur-xl sm:p-10",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"mb-5 flex justify-center",children:a??e.jsx("div",{className:"flex h-16 w-16 items-center justify-center rounded-2xl bg-gradient-to-br from-primary to-primary/80 shadow-lg shadow-primary/25 ring-1 ring-inset ring-white/20",children:e.jsx("img",{src:"/logo.svg",alt:"WindCli",className:"h-9 w-9"})})}),e.jsx("h1",{className:"font-serif text-3xl font-bold tracking-tight text-foreground",children:t}),e.jsx("p",{className:"mx-auto mt-2 max-w-xs text-sm leading-relaxed text-muted-foreground",children:s})]}),e.jsx("div",{className:"mt-8",children:n}),e.jsx("div",{className:"mt-6 border-t border-border/60 pt-5 text-center",children:e.jsx("p",{className:"text-xs leading-relaxed text-muted-foreground",children:i})}),!yt&&e.jsxs("div",{className:"mt-4 flex items-center justify-center gap-1.5",children:[e.jsx("svg",{className:"h-3.5 w-3.5 text-muted-foreground/50",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"})}),e.jsx("a",{href:"https://github.com/CaineWind/wacli",target:"_blank",rel:"noopener noreferrer",className:"text-xs text-muted-foreground/50 transition-colors hover:text-muted-foreground",children:"WindCli is open source"})]})]})})]})}const gs={username:"",password:""};function hs(){const{t}=Z("auth"),{error:s,login:n}=Be(),[i,a]=r.useState(gs),[o,l]=r.useState(""),[c,u]=r.useState(!1),d=r.useCallback((p,f)=>{a(m=>({...m,[p]:f}))},[]),g=r.useCallback(async p=>{if(p.preventDefault(),l(""),!i.username.trim()||!i.password){l(t("login.errors.requiredFields"));return}u(!0);const f=await n(i.username.trim(),i.password);f.success||l(f.error),u(!1)},[i.password,i.username,n,t]);return e.jsx(Nt,{title:t("login.title"),description:t("login.description"),footerText:"Enter your credentials to access WindCli",children:e.jsxs("form",{onSubmit:g,className:"space-y-4",children:[e.jsx(fe,{id:"username",label:t("login.username"),value:i.username,onChange:p=>d("username",p),placeholder:t("login.placeholders.username"),isDisabled:c,autoComplete:"username",icon:Oe}),e.jsx(fe,{id:"password",label:t("login.password"),value:i.password,onChange:p=>d("password",p),placeholder:t("login.placeholders.password"),isDisabled:c,type:"password",autoComplete:"current-password",icon:Tt}),e.jsx(Dt,{errorMessage:o||s||""}),e.jsx("button",{type:"submit",disabled:c,className:"flex w-full items-center justify-center gap-2 rounded-xl bg-primary px-4 py-2.5 font-medium text-primary-foreground shadow-lg shadow-primary/25 transition-all duration-200 hover:shadow-primary/30 hover:brightness-110 focus:outline-none focus:ring-2 focus:ring-primary/40 focus:ring-offset-2 focus:ring-offset-card active:scale-[0.99] disabled:cursor-not-allowed disabled:opacity-60",children:c?e.jsxs(e.Fragment,{children:[e.jsx(we,{className:"h-4 w-4 animate-spin"}),t("login.loading")]}):t("login.submit")})]})})}const fs={username:"",password:"",confirmPassword:""};function bs(t){return!t.username.trim()||!t.password||!t.confirmPassword?"Please fill in all fields.":t.username.trim().length<3?"Username must be at least 3 characters long.":t.password.length<6?"Password must be at least 6 characters long.":t.password!==t.confirmPassword?"Passwords do not match.":null}function vs(){const{register:t}=Be(),[s,n]=r.useState(fs),[i,a]=r.useState(""),[o,l]=r.useState(!1),c=r.useCallback((d,g)=>{n(p=>({...p,[d]:g}))},[]),u=r.useCallback(async d=>{d.preventDefault(),a("");const g=bs(s);if(g){a(g);return}l(!0);const p=await t(s.username.trim(),s.password);p.success||a(p.error),l(!1)},[s,t]);return e.jsx(Nt,{title:"Welcome to WindCli",description:"Set up your account to get started",footerText:"This is a single-user system. Only one account can be created.",children:e.jsxs("form",{onSubmit:u,className:"space-y-4",children:[e.jsx(fe,{id:"username",name:"username",label:"Username",value:s.username,onChange:d=>c("username",d),placeholder:"Choose a username",isDisabled:o,autoComplete:"username",icon:Oe}),e.jsx(fe,{id:"password",name:"password",label:"Password",value:s.password,onChange:d=>c("password",d),placeholder:"Create a password",isDisabled:o,type:"password",autoComplete:"new-password",icon:Tt}),e.jsx(fe,{id:"confirmPassword",name:"confirmPassword",label:"Confirm Password",value:s.confirmPassword,onChange:d=>c("confirmPassword",d),placeholder:"Re-enter your password",isDisabled:o,type:"password",autoComplete:"new-password",icon:_e}),e.jsxs("p",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:[e.jsx(_e,{className:"h-3.5 w-3.5"}),"At least 3 characters for username, 6 for password."]}),e.jsx(Dt,{errorMessage:i}),e.jsx("button",{type:"submit",disabled:o,className:"flex w-full items-center justify-center gap-2 rounded-xl bg-primary px-4 py-2.5 font-medium text-primary-foreground shadow-lg shadow-primary/25 transition-all duration-200 hover:shadow-primary/30 hover:brightness-110 focus:outline-none focus:ring-2 focus:ring-primary/40 focus:ring-offset-2 focus:ring-offset-card active:scale-[0.99] disabled:cursor-not-allowed disabled:opacity-60",children:o?e.jsxs(e.Fragment,{children:[e.jsx(we,{className:"h-4 w-4 animate-spin"}),"Setting up..."]}):"Create Account"})]})})}function ks({children:t}){const{user:s,isLoading:n,needsSetup:i,hasCompletedOnboarding:a,refreshOnboardingStatus:o}=Be();return n?e.jsx(ms,{}):yt?a?e.jsx(e.Fragment,{children:t}):e.jsx(Ze,{onComplete:o}):i?e.jsx(vs,{}):s?a?e.jsx(e.Fragment,{children:t}):e.jsx(Ze,{onComplete:o}):e.jsx(hs,{})}const $t="windcli:pwa-install-prompt-seen";function xs(t){try{return t.getItem($t)==="true"}catch{return!1}}function ys(t){try{t.setItem($t,"true")}catch{}}function Xe(){if(typeof window>"u")return!1;const t=navigator;return window.matchMedia("(display-mode: standalone)").matches||t.standalone===!0}function ws({children:t}){const[s,n]=r.useState(),[i,a]=r.useState(!1),[o,l]=r.useState(Xe);r.useEffect(()=>{const p=window.matchMedia("(display-mode: standalone)"),f=()=>l(Xe()),m=v=>{v.preventDefault(),n(v),xs(window.localStorage)||a(!0)},k=()=>{n(void 0),a(!1),l(!0)};return window.addEventListener("beforeinstallprompt",m),window.addEventListener("appinstalled",k),p.addEventListener("change",f),()=>{window.removeEventListener("beforeinstallprompt",m),window.removeEventListener("appinstalled",k),p.removeEventListener("change",f)}},[]);const c=r.useCallback(()=>{a(!1)},[]),u=r.useCallback(()=>{ys(window.localStorage)},[]),d=r.useCallback(async()=>{if(!s)return null;a(!1),await s.prompt();const p=await s.userChoice;return n(void 0),p.outcome==="accepted"&&l(!0),p.outcome},[s]),g=r.useMemo(()=>({automaticPromptVisible:i,canInstall:!!s,dismissAutomaticPrompt:c,install:d,isInstalled:o,recordAutomaticPromptShown:u}),[i,c,d,s,o,u]);return e.jsx(nn.Provider,{value:g,children:t})}const Re=t=>t.replace(/\\/g,"/"),Rt=(t,s)=>{for(const n of t)n.type==="file"?s.push({name:n.name,path:n.path}):n.children&&n.children.length>0&&Rt(n.children,s)},Cs=(t,s)=>{const n=Re(s).replace(/^\.\//,"").replace(/^\/+/,"");if(!n)return null;const i=t.find(o=>{const l=Re(o.path);return l===n||l.endsWith(`/${n}`)});if(i)return i.path;const a=n.split("/").pop()||n;return t.find(o=>o.name===a)?.path??null};function Ss(t,s){const n=t?.projectId,i=r.useRef({projectId:void 0,files:null}),a=r.useCallback(()=>{if(!n)return Promise.resolve([]);if(i.current.projectId===n&&i.current.files)return i.current.files;const o=(async()=>{try{const l=await ie.getFiles(n);if(!l.ok)return[];const c=await l.json(),u=Array.isArray(c)?c:[],d=[];return Rt(u,d),d}catch{return[]}})();return i.current={projectId:n,files:o},o},[n]);return r.useCallback((o,l)=>{const c=Re(o).trim();a().then(u=>{const d=Cs(u,c);s(d??o,l)})},[a,s])}const Ps=({selectedProject:t,isMobile:s,initialWidth:n=600})=>{const[i,a]=r.useState(null),[o,l]=r.useState(n),[c,u]=r.useState(!1),[d,g]=r.useState(!1),[p,f]=r.useState(!1),m=r.useRef(null),k=r.useCallback((A,P=null)=>{const L=A.replace(/\\/g,"/").split("/").pop()||A;a({name:L,path:A,projectId:t?.projectId,diffInfo:P})},[t?.projectId]),v=r.useCallback(()=>{a(null),u(!1)},[]),I=r.useCallback(()=>{u(A=>!A)},[]),x=r.useCallback(A=>{s||(f(!0),g(!0),A.preventDefault())},[s]);return r.useEffect(()=>{const A=E=>{if(!d)return;const D=m.current?.parentElement?.parentElement;if(!D)return;const F=D.getBoundingClientRect(),S=F.right-E.clientX,N=300,K=F.width*.8;S>=N&&S<=K&&l(S)},P=()=>{g(!1)};return d&&(document.addEventListener("mousemove",A),document.addEventListener("mouseup",P),document.body.style.cursor="col-resize",document.body.style.userSelect="none"),()=>{document.removeEventListener("mousemove",A),document.removeEventListener("mouseup",P),document.body.style.cursor="",document.body.style.userSelect=""}},[d]),{editingFile:i,editorWidth:o,editorExpanded:c,hasManualWidth:p,resizeHandleRef:m,handleFileOpen:k,handleCloseEditor:v,handleToggleEditorExpand:I,handleResizeStart:x}},et=r.lazy(()=>ee(()=>import("./CodeEditor-C9qFO6L8.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8])));function tt(){return e.jsx("div",{className:"flex h-full min-h-0 flex-1 items-center justify-center",role:"status","aria-label":"Loading editor",children:e.jsx("div",{className:"h-5 w-5 animate-spin rounded-full border-2 border-muted-foreground/30 border-t-muted-foreground"})})}const As=200,De=280;function js({editingFile:t,isMobile:s,editorExpanded:n,editorWidth:i,hasManualWidth:a,resizeHandleRef:o,onResizeStart:l,onCloseEditor:c,onToggleEditorExpand:u,projectPath:d,fillSpace:g}){const[p,f]=r.useState(!1),m=r.useRef(null),[k,v]=r.useState(i);if(r.useEffect(()=>{if(!t||s||p)return;const x=()=>{if(!m.current)return;const E=m.current.parentElement;if(!E)return;const D=E.clientWidth-As;D<De?f(!0):i>D?v(D):v(i)};x(),window.addEventListener("resize",x);const A=new ResizeObserver(x),P=m.current?.parentElement;return P&&A.observe(P),()=>{window.removeEventListener("resize",x),A.disconnect()}},[t,s,p,i]),!t)return null;if(s||p)return e.jsx(r.Suspense,{fallback:e.jsx(tt,{}),children:e.jsx(et,{file:t,onClose:()=>{f(!1),c()},projectPath:d,isSidebar:!1})});const I=n||g&&!a;return e.jsxs("div",{ref:m,className:`flex h-full min-w-0 ${n?"flex-1":""}`,children:[!n&&e.jsx("div",{ref:o,onMouseDown:l,className:"group relative w-1 flex-shrink-0 cursor-col-resize bg-gray-200 transition-colors hover:bg-blue-500 dark:bg-gray-700 dark:hover:bg-blue-600",title:"Drag to resize",children:e.jsx("div",{className:"absolute inset-y-0 left-1/2 w-1 -translate-x-1/2 bg-blue-500 opacity-0 transition-opacity group-hover:opacity-100 dark:bg-blue-600"})}),e.jsx("div",{className:`h-full overflow-hidden border-l border-gray-200 dark:border-gray-700 ${I?"min-w-0 flex-1":`min-w-[ flex-shrink-0${De}px]`}`,style:I?void 0:{width:`${k}px`,minWidth:`${De}px`},children:e.jsx(r.Suspense,{fallback:e.jsx(tt,{}),children:e.jsx(et,{file:t,onClose:c,projectPath:d,isSidebar:!0,isExpanded:n,onToggleExpand:u,onPopOut:()=>f(!0)})})})]})}function Ts({hasSelectedProject:t,children:s}){const n=t?"flex min-w-0 flex-col gap-1.5 sm:flex-row sm:items-center sm:gap-3":"flex min-w-0 flex-row items-center justify-between gap-2 sm:gap-3";return e.jsx("div",{className:n,children:s})}function Is(t){const s=r.useRef(!1),n=r.useCallback(o=>{o&&(o.preventDefault(),o.stopPropagation()),t()},[t]),i=r.useCallback(o=>{s.current=!0,n(o),window.setTimeout(()=>{s.current=!1},350)},[n]);return{handleMobileMenuClick:r.useCallback(o=>{if(s.current){o.preventDefault(),o.stopPropagation();return}n(o)},[n]),handleMobileMenuTouchEnd:i}}function Lt({onMenuClick:t,compact:s=!1}){const{handleMobileMenuClick:n,handleMobileMenuTouchEnd:i}=Is(t),a=s?"flex h-10 w-10 items-center justify-center rounded-lg text-muted-foreground hover:bg-accent/60 hover:text-foreground pwa-menu-button":"flex h-10 w-10 flex-shrink-0 touch-manipulation items-center justify-center rounded-lg text-muted-foreground hover:bg-accent/60 hover:text-foreground active:scale-95 pwa-menu-button";return e.jsx("button",{onClick:n,onTouchEnd:i,className:a,"aria-label":"Open menu",children:e.jsx("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 6h16M4 12h16M4 18h16"})})})}const Ft={kind:"builtin",id:"herdr",labelKey:"tabs.herdr",icon:$n},Es=[{kind:"builtin",id:"chat",labelKey:"tabs.chat",icon:It},{kind:"builtin",id:"shell",labelKey:"tabs.shell",icon:Rn},Ft,{kind:"builtin",id:"files",labelKey:"tabs.files",icon:Et},{kind:"builtin",id:"git",labelKey:"tabs.git",icon:He}],Ms={kind:"builtin",id:"browser",labelKey:"tabs.browser",icon:Ln},zs={kind:"builtin",id:"tasks",labelKey:"tabs.tasks",icon:Fn};function Ds({hasSelectedProject:t,shouldShowTasksTab:s,shouldShowBrowserTab:n}){return t?[...Es,...n?[Ms]:[],...s?[zs]:[]]:[Ft]}function Ns({activeTab:t,setActiveTab:s,hasSelectedProject:n,shouldShowTasksTab:i,shouldShowBrowserTab:a}){const{t:o}=Z(),{plugins:l}=wt(),c=Ds({hasSelectedProject:n,shouldShowBrowserTab:a,shouldShowTasksTab:i}),u=(n?l:[]).filter(p=>p.enabled).map(p=>({kind:"plugin",id:`plugin:${p.name}`,label:p.displayName,pluginName:p.name,iconFile:p.icon})),d=[...c,...u],g=p=>{const f=p.currentTarget.closest('[role="tablist"]');if(!f)return;const m=Array.from(f.querySelectorAll('[role="tab"]')),k=m.indexOf(p.currentTarget);let v;if(p.key==="ArrowRight")v=(k+1)%m.length;else if(p.key==="ArrowLeft")v=(k-1+m.length)%m.length;else if(p.key==="Home")v=0;else if(p.key==="End")v=m.length-1;else return;p.preventDefault(),m[v]?.focus(),m[v]?.click()};return e.jsx(sn,{role:"tablist","aria-label":o("tabs.views",{defaultValue:"Workspace views"}),className:d.length===1?"min-w-max bg-transparent p-0 shadow-none":"min-w-max border border-border/40 bg-muted/50 shadow-inner shadow-black/[0.025] dark:shadow-black/10",children:d.map((p,f)=>{const m=p.id===t,k=p.kind==="builtin"?o(p.labelKey):p.label;return e.jsxs(r.Fragment,{children:[f===c.length&&u.length>0&&e.jsx("span",{"aria-hidden":"true",className:"mx-1 h-4 w-px shrink-0 bg-border"}),e.jsx(an,{content:k,position:"bottom",children:e.jsxs(on,{role:"tab","aria-label":k,"aria-selected":m,tabIndex:m?0:-1,isActive:m,onClick:()=>s(p.id),onKeyDown:g,className:"h-10 max-w-44 px-3 py-[5px] sm:h-8 sm:px-2.5",children:[p.kind==="builtin"?e.jsx(p.icon,{className:"h-3.5 w-3.5 shrink-0",strokeWidth:m?2.2:1.8}):e.jsx(rn,{pluginName:p.pluginName,iconFile:p.iconFile,className:"flex h-3.5 w-3.5 shrink-0 items-center justify-center [&>svg]:h-full [&>svg]:w-full"}),e.jsx("span",{className:`${m?"inline max-w-28":"hidden"} truncate sm:max-w-36 lg:inline`,children:k})]})})]},`${p.id}-${f}`)})})}function $s(t,s,n,i){return t.startsWith("plugin:")&&i?i:t==="files"?n("mainContent.projectFiles"):t==="git"?n("tabs.git"):t==="herdr"?n("tabs.herdr"):t==="tasks"&&s?"TaskMaster":t==="browser"?n("tabs.browser"):"Project"}function Rs({activeTab:t,selectedProject:s,selectedSession:n,shouldShowTasksTab:i}){const{t:a}=Z(),{plugins:o}=wt(),l=t.startsWith("plugin:")?o.find(d=>d.name===t.replace("plugin:",""))?.displayName:void 0,c=t==="chat"&&!!n,u=t==="chat"&&!n;return e.jsxs("div",{className:"scrollbar-hide flex min-w-0 flex-1 items-center gap-2 overflow-x-auto",children:[c&&e.jsx("div",{className:"flex h-5 w-5 flex-shrink-0 items-center justify-center",children:e.jsx(xt,{provider:n?.__provider,className:"h-4 w-4"})}),e.jsx("div",{className:"min-w-0 flex-1",children:t==="chat"&&n?e.jsxs("div",{className:"min-w-0",children:[e.jsx("h2",{title:Ve(n),className:"truncate text-sm font-semibold leading-tight text-foreground",children:Ve(n)}),e.jsx("div",{className:"truncate text-[11px] leading-tight text-muted-foreground",children:s.displayName})]}):u?e.jsxs("div",{className:"min-w-0",children:[e.jsx("h2",{className:"text-base font-semibold leading-tight text-foreground",children:a("mainContent.newSession")}),e.jsx("div",{className:"truncate text-xs leading-tight text-muted-foreground",children:s.displayName})]}):e.jsxs("div",{className:"min-w-0",children:[e.jsx("h2",{className:"text-sm font-semibold leading-tight text-foreground",children:$s(t,i,a,l)}),e.jsx("div",{className:"truncate text-[11px] leading-tight text-muted-foreground",children:s.displayName})]})})]})}function nt({activeTab:t,setActiveTab:s,selectedProject:n,selectedSession:i,shouldShowTasksTab:a,shouldShowBrowserTab:o,isMobile:l,onMenuClick:c}){const{t:u}=Z(),d=r.useRef(null),[g,p]=r.useState(!1),[f,m]=r.useState(!1),k=g||f,v=r.useCallback(()=>{const x=d.current;x&&(p(x.scrollLeft>2),m(x.scrollLeft<x.scrollWidth-x.clientWidth-2))},[]);r.useEffect(()=>{const x=d.current;if(!x)return;v();const A=new ResizeObserver(v);return A.observe(x),x.firstElementChild&&A.observe(x.firstElementChild),()=>A.disconnect()},[v]),r.useEffect(()=>{const x=d.current;if(!x)return;const A=P=>{if(Math.abs(P.deltaY)<=Math.abs(P.deltaX))return;const E=x.scrollWidth-x.clientWidth;if(!(P.deltaY<0?x.scrollLeft>0:x.scrollLeft<E))return;P.preventDefault();const D=P.deltaMode===WheelEvent.DOM_DELTA_LINE?20:1;x.scrollBy({left:P.deltaY*D,behavior:"auto"})};return x.addEventListener("wheel",A,{passive:!1}),()=>x.removeEventListener("wheel",A)},[]),r.useEffect(()=>{const x=window.requestAnimationFrame(()=>{d.current?.querySelector('[role="tab"][aria-selected="true"]')?.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"}),v()});return()=>window.cancelAnimationFrame(x)},[t,v]);const I=x=>{const A=d.current;A&&A.scrollBy({left:x*Math.max(180,A.clientWidth*.65),behavior:"smooth"})};return e.jsx("header",{className:"pwa-header-safe flex-shrink-0 border-b border-border/60 bg-background/95 px-3 py-1.5 backdrop-blur-sm sm:px-4 sm:py-2",children:e.jsxs(Ts,{hasSelectedProject:!!n,children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-2 sm:max-w-[min(34%,24rem)] sm:flex-[1_1_18rem]",children:[l&&e.jsx(Lt,{onMenuClick:c}),n&&e.jsx(Rs,{activeTab:t,selectedProject:n,selectedSession:i,shouldShowTasksTab:a})]}),e.jsx("div",{className:"-mx-3 min-w-0 sm:mx-0 sm:flex-1",children:e.jsxs("div",{className:"relative ml-auto w-fit max-w-full",children:[g&&e.jsx("div",{className:"pointer-events-none absolute inset-y-0 left-0 z-10 w-12 bg-gradient-to-r from-background via-background/90 to-transparent"}),e.jsx("div",{ref:d,onScroll:v,className:ln("scrollbar-hide max-w-full scroll-smooth overflow-x-auto overscroll-x-contain px-3 [-webkit-overflow-scrolling:touch]",k?"sm:px-9":"sm:pl-3 sm:pr-0"),children:e.jsx(Ns,{activeTab:t,setActiveTab:s,hasSelectedProject:!!n,shouldShowTasksTab:a,shouldShowBrowserTab:o})}),f&&e.jsx("div",{className:"pointer-events-none absolute inset-y-0 right-0 z-10 w-12 bg-gradient-to-l from-background via-background/90 to-transparent"}),g&&e.jsx("button",{type:"button",onClick:()=>I(-1),"aria-label":u("navigation.scrollTabsLeft",{defaultValue:"Scroll tabs left"}),className:"absolute left-1 top-1/2 z-20 hidden h-7 w-7 -translate-y-1/2 items-center justify-center rounded-md border border-border/70 bg-background/95 text-muted-foreground shadow-sm outline-none hover:bg-accent hover:text-foreground focus-visible:ring-2 focus-visible:ring-primary/60 sm:flex",children:e.jsx(Ue,{className:"h-4 w-4"})}),f&&e.jsx("button",{type:"button",onClick:()=>I(1),"aria-label":u("navigation.scrollTabsRight",{defaultValue:"Scroll tabs right"}),className:"absolute right-1 top-1/2 z-20 hidden h-7 w-7 -translate-y-1/2 items-center justify-center rounded-md border border-border/70 bg-background/95 text-muted-foreground shadow-sm outline-none hover:bg-accent hover:text-foreground focus-visible:ring-2 focus-visible:ring-primary/60 sm:flex",children:e.jsx(Ce,{className:"h-4 w-4"})})]})})]})})}function st({mode:t,isMobile:s,onMenuClick:n,showMobileHeader:i=!0}){const{t:a}=Z(),o=t==="loading";return e.jsxs("div",{className:"flex h-full flex-col",children:[s&&i&&e.jsx("div",{className:"pwa-header-safe flex-shrink-0 border-b border-border/50 bg-background/80 p-2 backdrop-blur-sm sm:p-3",children:e.jsx(Lt,{onMenuClick:n,compact:!0})}),o?e.jsx("div",{className:"flex flex-1 items-center justify-center",children:e.jsxs("div",{className:"text-center text-muted-foreground",children:[e.jsx("div",{className:"mx-auto mb-4 h-10 w-10",children:e.jsx("div",{className:"h-full w-full rounded-full border-[3px] border-muted border-t-primary",style:{animation:"spin 1s linear infinite",WebkitAnimation:"spin 1s linear infinite",MozAnimation:"spin 1s linear infinite"}})}),e.jsx("h2",{className:"mb-1 text-lg font-semibold text-foreground",children:a("mainContent.loading")}),e.jsx("p",{className:"text-sm",children:a("mainContent.settingUpWorkspace")})]})}):e.jsx("div",{className:"flex flex-1 items-center justify-center",children:e.jsxs("div",{className:"mx-auto max-w-md px-6 text-center",children:[e.jsx("div",{className:"mx-auto mb-5 flex h-14 w-14 items-center justify-center rounded-2xl bg-muted/50",children:e.jsx(Et,{className:"h-7 w-7 text-muted-foreground"})}),e.jsx("h2",{className:"mb-2 text-xl font-semibold text-foreground",children:a("mainContent.chooseProject")}),e.jsx("p",{className:"mb-5 text-sm leading-relaxed text-muted-foreground",children:a("mainContent.selectProjectDescription")}),e.jsx("div",{className:"rounded-xl border border-primary/10 bg-primary/5 p-3.5",children:e.jsxs("p",{className:"text-sm text-primary",children:[e.jsxs("strong",{children:[a("mainContent.tip"),":"]})," ",a(s?"mainContent.createProjectMobile":"mainContent.createProjectDesktop")]})})]})})]})}const Ls=r.createContext(null),Ne={didCatch:!1,error:null};let Fs=class extends r.Component{constructor(s){super(s),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=Ne}static getDerivedStateFromError(s){return{didCatch:!0,error:s}}resetErrorBoundary(){const{error:s}=this.state;if(s!==null){for(var n,i,a=arguments.length,o=new Array(a),l=0;l<a;l++)o[l]=arguments[l];(n=(i=this.props).onReset)===null||n===void 0||n.call(i,{args:o,reason:"imperative-api"}),this.setState(Ne)}}componentDidCatch(s,n){var i,a;(i=(a=this.props).onError)===null||i===void 0||i.call(a,s,n)}componentDidUpdate(s,n){const{didCatch:i}=this.state,{resetKeys:a}=this.props;if(i&&n.error!==null&&Bs(s.resetKeys,a)){var o,l;(o=(l=this.props).onReset)===null||o===void 0||o.call(l,{next:a,prev:s.resetKeys,reason:"keys"}),this.setState(Ne)}}render(){const{children:s,fallbackRender:n,FallbackComponent:i,fallback:a}=this.props,{didCatch:o,error:l}=this.state;let c=s;if(o){const u={error:l,resetErrorBoundary:this.resetErrorBoundary};if(typeof n=="function")c=n(u);else if(i)c=r.createElement(i,u);else if(a!==void 0)c=a;else throw l}return r.createElement(Ls.Provider,{value:{didCatch:o,error:l,resetErrorBoundary:this.resetErrorBoundary}},c)}};function Bs(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return t.length!==s.length||t.some((n,i)=>!Object.is(n,s[i]))}function Gs(t){return t instanceof Error?`${t.name}: ${t.message}`:String(t)}function Hs({error:t,resetErrorBoundary:s,showDetails:n,componentStack:i}){return e.jsx("div",{className:"flex flex-col items-center justify-center p-8 text-center",children:e.jsxs("div",{className:"max-w-md rounded-lg border border-red-200 bg-red-50 p-6",children:[e.jsxs("div",{className:"mb-4 flex items-center",children:[e.jsx("div",{className:"flex-shrink-0",children:e.jsx("svg",{className:"h-5 w-5 text-red-400",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"})})}),e.jsx("h3",{className:"ml-3 text-sm font-medium text-red-800",children:"Something went wrong"})]}),e.jsxs("div",{className:"text-sm text-red-700",children:[e.jsx("p",{className:"mb-2",children:"An error occurred while loading this view."}),n&&e.jsxs("details",{className:"mt-4",children:[e.jsx("summary",{className:"cursor-pointer font-mono text-xs",children:"Error Details"}),e.jsxs("pre",{className:"mt-2 max-h-40 overflow-auto rounded bg-red-100 p-2 text-xs",children:[Gs(t),i]})]})]}),e.jsx("div",{className:"mt-4",children:e.jsx("button",{onClick:s,className:"rounded bg-red-600 px-4 py-2 text-sm text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-red-500",children:"Try Again"})})]})})}function Bt({children:t,showDetails:s=!1,onRetry:n=void 0,resetKeys:i=void 0}){const[a,o]=r.useState(null),l=r.useCallback((d,g)=>{console.error("ErrorBoundary caught an error:",d,g),o(g?.componentStack??null)},[]),c=r.useCallback(()=>{o(null),n?.()},[n]),u=r.useCallback(({error:d,resetErrorBoundary:g})=>e.jsx(Hs,{error:d,resetErrorBoundary:g,showDetails:s,componentStack:a}),[s,a]);return e.jsx(Fs,{fallbackRender:u,onError:l,onReset:c,resetKeys:i,children:t})}const Os=r.lazy(()=>ee(()=>import("./FileTree-0yJEzBi9.js"),__vite__mapDeps([9,1,5,6,7,8,3]))),Us=r.lazy(()=>ee(()=>import("./StandaloneShell-J5BR1g26.js"),__vite__mapDeps([10,1,11,5,6,7,8,3,12]))),qs=r.lazy(()=>ee(()=>import("./GitPanel-BhbG7yVZ.js"),__vite__mapDeps([13,1,5,6,7,8,3]))),Ws=r.lazy(()=>ee(()=>import("./feature-workspace-BMlv7Ust.js").then(t=>t.aA),__vite__mapDeps([5,1,6,7,8,3]))),Vs=r.lazy(()=>ee(()=>import("./index-CPP7a6gU.js"),__vite__mapDeps([14,1,5,6,7,8,3])).then(t=>({default:t.BrowserUsePanel}))),it=r.lazy(()=>ee(()=>import("./index-BTFkWJZe.js"),__vite__mapDeps([15,1,10,11,5,6,7,8,3,12])).then(t=>({default:t.HerdrPanel}))),Ks=r.lazy(()=>ee(()=>import("./TaskMasterPanel-B2wpEHWP.js"),__vite__mapDeps([16,5,1,6,7,8,3,4])));function _s(){return e.jsx("div",{className:"flex h-full w-full items-center justify-center",role:"status","aria-label":"Loading view",children:e.jsx("div",{className:"h-5 w-5 animate-spin rounded-full border-2 border-muted-foreground/30 border-t-muted-foreground"})})}function X({children:t,resetKey:s}){return e.jsx(Bt,{resetKeys:[s],onRetry:()=>window.location.reload(),children:e.jsx(r.Suspense,{fallback:e.jsx(_s,{}),children:t})})}function Ys({selectedProject:t,selectedSession:s,activeTab:n,setActiveTab:i,ws:a,sendMessage:o,isMobile:l,onMenuClick:c,isLoading:u,onInputFocusChange:d,onSessionProcessing:g,onSessionIdle:p,processingSessions:f,onNavigateToSession:m,onSessionEstablished:k,onShowSettings:v,externalMessageUpdate:I,newSessionTrigger:x,onProjectSelect:A,onProjectsRefresh:P}){const{preferences:E}=Ct(),{showRawParameters:L,showThinking:D,sendByCtrlEnter:F}=E,{tasksEnabled:S,isTaskMasterInstalled:N}=cn(),[K,U]=r.useState(!1),[W,M]=r.useState(n==="tasks"),B=!!(S&&N),$=K,{editingFile:R,editorWidth:re,editorExpanded:te,hasManualWidth:le,resizeHandleRef:ce,handleFileOpen:b,handleCloseEditor:z,handleToggleEditorExpand:q,handleResizeStart:J}=Ps({selectedProject:t,isMobile:l}),Pe=Ss(t,b);r.useEffect(()=>{!B&&n==="tasks"&&i("chat")},[B,n,i]),r.useEffect(()=>{n==="tasks"&&M(!0)},[n]);const ue=r.useCallback(async()=>{try{const ne=await ae("/api/browser-use/settings"),be=await ne.json();U(!!(ne.ok&&be?.success!==!1&&be?.data?.settings?.enabled))}catch{U(!1)}},[]);return r.useEffect(()=>(ue(),window.addEventListener("browserUseSettingsChanged",ue),()=>window.removeEventListener("browserUseSettingsChanged",ue)),[ue]),r.useEffect(()=>{!$&&n==="browser"&&i("chat")},[$,n,i]),St({openFile:ne=>{i("files"),b(ne)},openFileInEditor:ne=>{Pe(ne)}}),u?e.jsx(st,{mode:"loading",isMobile:l,onMenuClick:c}):t?e.jsxs("div",{className:"flex h-full flex-col",children:[e.jsx(nt,{activeTab:n,setActiveTab:i,selectedProject:t,selectedSession:s,shouldShowTasksTab:B,shouldShowBrowserTab:$,isMobile:l,onMenuClick:c}),e.jsxs("div",{className:"flex min-h-0 flex-1 overflow-hidden",children:[e.jsxs("div",{className:`flex min-h-0 min-w-[200px] flex-col overflow-hidden ${te?"hidden":""} flex-1`,children:[e.jsx("div",{className:`h-full ${n==="chat"?"block":"hidden"}`,children:e.jsx(Bt,{showDetails:!0,children:e.jsx(is,{isActive:n==="chat",selectedProject:t,selectedSession:s,ws:a,sendMessage:o,onFileOpen:b,onInputFocusChange:d,onSessionProcessing:g,onSessionIdle:p,processingSessions:f,onNavigateToSession:m,onSessionEstablished:k,onShowSettings:v,showRawParameters:L,showThinking:D,sendByCtrlEnter:F,externalMessageUpdate:I,newSessionTrigger:x,onShowAllTasks:S?()=>i("tasks"):null})})}),n==="files"&&e.jsx("div",{className:"h-full overflow-hidden",children:e.jsx(X,{resetKey:"files",children:e.jsx(Os,{selectedProject:t,onFileOpen:b})})}),n==="shell"&&e.jsx("div",{className:"h-full w-full overflow-hidden",children:e.jsx(X,{resetKey:"shell",children:e.jsx(Us,{project:t,session:s,showHeader:!1,isActive:n==="shell"})})}),n==="herdr"&&e.jsx("div",{className:"h-full w-full overflow-hidden bg-gray-900",children:e.jsx(X,{resetKey:"herdr",children:e.jsx(it,{isActive:n==="herdr"})})}),n==="git"&&e.jsx("div",{className:"h-full overflow-hidden",children:e.jsx(X,{resetKey:"git",children:e.jsx(qs,{selectedProject:t,isMobile:l,onFileOpen:b,onProjectSelect:A,onProjectsRefresh:P})})}),B&&W&&e.jsx(X,{resetKey:"tasks",children:e.jsx(Ks,{isVisible:n==="tasks"})}),$&&n==="browser"&&e.jsx("div",{className:"h-full overflow-hidden",children:e.jsx(X,{resetKey:"browser",children:e.jsx(Vs,{isVisible:n==="browser",onShowSettings:v})})}),n.startsWith("plugin:")&&e.jsx("div",{className:"h-full overflow-hidden",children:e.jsx(X,{resetKey:n,children:e.jsx(Ws,{pluginName:n.replace("plugin:",""),selectedProject:t,selectedSession:s})})})]}),e.jsx(X,{resetKey:`editor:${R?.path??"closed"}`,children:e.jsx(js,{editingFile:R,isMobile:l,editorExpanded:te,editorWidth:re,hasManualWidth:le,resizeHandleRef:ce,onResizeStart:J,onCloseEditor:z,onToggleEditorExpand:q,projectPath:t.path,fillSpace:n==="files"})})]})]}):e.jsxs("div",{className:"flex h-full flex-col",children:[e.jsx(nt,{activeTab:n,setActiveTab:i,selectedProject:null,selectedSession:null,shouldShowTasksTab:!1,shouldShowBrowserTab:!1,isMobile:l,onMenuClick:c}),e.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",children:n==="herdr"?e.jsx("div",{className:"h-full w-full overflow-hidden bg-gray-900",children:e.jsx(X,{resetKey:"herdr-empty-project",children:e.jsx(it,{isActive:!0})})}):e.jsx(st,{mode:"empty",isMobile:l,onMenuClick:c,showMobileHeader:!1})})]})}const Js=vt.memo(Ys);function Se(t){const[s,n]=r.useState([]),{enabled:i,deps:a,fetcher:o,parse:l}=t;return r.useEffect(()=>{if(!i){n([]);return}const c=new AbortController;return o(c.signal).then(u=>u.json()).then(u=>{c.signal.aborted||n(l(u))}).catch(u=>{c.signal.aborted||u instanceof DOMException&&u.name==="AbortError"||n([])}),()=>c.abort()},[i,...a]),s}function Qs(t,s){return Se({enabled:s&&!!t,deps:[t],fetcher:n=>{const i=new URLSearchParams({limit:"50",offset:"0"});return ae(`/api/projects/${encodeURIComponent(t)}/sessions?${i.toString()}`,{signal:n})},parse:n=>(n.sessions??[]).map(i=>({id:i.id,label:i.title||i.summary||i.name||i.id,provider:i.__provider||i.provider}))})}const Zs=500;function Gt(t,s){for(const n of t){if(s.length>=Zs)return;n.type==="file"?s.push({path:n.path,name:n.name}):n.children&&n.children.length>0&&Gt(n.children,s)}}function Xs(t,s){return Se({enabled:s&&!!t,deps:[t],fetcher:n=>ie.getFiles(t,{signal:n}),parse:n=>{const i=Array.isArray(n)?n:[],a=[];return Gt(i,a),a}})}function ei(t,s){return Se({enabled:s&&!!t,deps:[t],fetcher:n=>{const i=new URLSearchParams({project:t,limit:"50"});return ae(`/api/git/commits?${i.toString()}`,{signal:n})},parse:n=>n.commits?n.commits.map(i=>({hash:i.hash,shortHash:i.hash.slice(0,7),message:i.message,author:i.author})):[]})}const ti=2,ni=250;function si(t,s,n){const[i,a]=r.useState([]),o=r.useRef(0),l=r.useRef(null);return r.useEffect(()=>{const c=s.trim();if(!n||!t||c.length<ti){a([]),l.current?.close(),l.current=null;return}l.current?.close(),l.current=null,o.current++;const u=setTimeout(()=>{const d=++o.current,g=ie.searchConversationsUrl(c),p=new EventSource(g);l.current=p;const f=[];p.addEventListener("result",k=>{if(d!==o.current){p.close();return}try{const I=JSON.parse(k.data).projectResult;if(I.projectId!==t)return;for(const x of I.sessions)f.push({sessionId:x.sessionId,label:x.sessionSummary||x.sessionId,snippet:x.matches[0]?.snippet??"",provider:x.provider});a([...f])}catch{}});const m=()=>{d===o.current&&(p.close(),l.current=null)};p.addEventListener("done",m),p.addEventListener("error",m)},ni);return()=>{clearTimeout(u)}},[t,s,n]),r.useEffect(()=>()=>{l.current?.close(),l.current=null},[]),i}function ii(t,s){return Se({enabled:s&&!!t,deps:[t],fetcher:n=>{const i=new URLSearchParams({project:t});return ae(`/api/git/branches?${i.toString()}`,{signal:n})},parse:n=>(n.localBranches??[]).map(i=>({name:i}))})}async function ke(t,s){return(await ae(t,{method:"POST",body:JSON.stringify(s)})).json()}function ai(t){const s=r.useCallback(()=>t?ke("/api/git/fetch",{project:t}):Promise.resolve(),[t]),n=r.useCallback(()=>t?ke("/api/git/pull",{project:t}):Promise.resolve(),[t]),i=r.useCallback(()=>t?ke("/api/git/push",{project:t}):Promise.resolve(),[t]),a=r.useCallback(o=>t?ke("/api/git/checkout",{project:t,branch:o}):Promise.resolve(),[t]);return{fetch:s,pull:n,push:i,checkout:a}}const at={actions:"Actions",files:"Files",sessions:"Sessions",commits:"Commits",branches:"Branches"},oi=[{id:"chat",label:"Go to Chat",keywords:"chat messages conversation"},{id:"files",label:"Go to Files",keywords:"files file tree explorer"},{id:"shell",label:"Go to Shell",keywords:"shell terminal console"},{id:"herdr",label:"Go to Herdr",keywords:"herdr agents panes workspace terminal"},{id:"git",label:"Go to Git",keywords:"git diff branches"},{id:"tasks",label:"Go to Tasks",keywords:"tasks taskmaster"}];function ri({selectedProject:t,onStartNewChat:s,onOpenSettings:n,onShowTab:i}){const[a,o]=r.useState(!1),[l,c]=r.useState(""),[u,d]=r.useState([]),{toggleDarkMode:g}=Pt(),p=kt(),f=dn(),m=u.at(-1);r.useEffect(()=>{const b=z=>{(z.metaKey||z.ctrlKey)&&!z.shiftKey&&!z.altKey&&z.key.toLowerCase()==="k"&&(z.preventDefault(),o(J=>!J))};return document.addEventListener("keydown",b),()=>document.removeEventListener("keydown",b)},[]),r.useEffect(()=>{a||(c(""),d([]))},[a]);const k=t?.projectId,v=!m||m==="actions",I=!m||m==="sessions",x=!m||m==="files",A=!m||m==="commits",P=!m||m==="branches"||m==="actions",E=Qs(k,a&&I),L=si(k,l,a&&I),D=Xs(k,a&&x),F=ei(k,a&&A),S=ii(k,a&&P),N=ai(k),K=r.useMemo(()=>{if(!I)return[];const b=new Map;for(const z of E)b.set(z.id,{id:z.id,label:z.label,provider:z.provider});for(const z of L){const q=b.get(z.sessionId);q?q.snippet=z.snippet:b.set(z.sessionId,{id:z.sessionId,label:z.label,provider:z.provider,snippet:z.snippet})}return Array.from(b.values())},[E,L,I]),U=r.useCallback(b=>{o(!1),b()},[]),W=r.useCallback(b=>{c(""),d(z=>[...z,b])},[]),M=r.useCallback(()=>{c(""),d(b=>b.slice(0,-1))},[]),B=r.useCallback(b=>{b.key==="Backspace"&&!l&&u.length>0&&(b.preventDefault(),M())},[l,u.length,M]),$=!t,R=5,re=m==="files"?D:D.slice(0,R),te=m==="commits"?F:F.slice(0,R),le=m==="sessions"?K:K.slice(0,R),ce=m==="branches"?S:S.slice(0,R);return e.jsx(un,{open:a,onOpenChange:o,children:e.jsxs(pn,{className:"max-w-xl overflow-hidden p-0",children:[e.jsx(mn,{children:"Command palette"}),e.jsxs(gn,{label:"Command palette",onKeyDown:B,children:[m&&e.jsxs("div",{className:"flex items-center gap-2 border-b px-3 py-2",children:[e.jsxs("span",{className:"inline-flex items-center gap-1 rounded-md bg-accent px-2 py-0.5 text-xs font-medium text-accent-foreground",children:[at[m],e.jsx("button",{type:"button",onClick:M,"aria-label":"Back to all",className:"ml-0.5 rounded-sm opacity-70 hover:opacity-100",children:e.jsx(Mt,{className:"h-3 w-3"})})]}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Backspace to go back"})]}),e.jsx(hn,{placeholder:m?`Search ${at[m].toLowerCase()}…`:"Type to search anything…",value:l,onValueChange:c}),e.jsxs(fn,{children:[e.jsx(bn,{children:"No results."}),v&&e.jsxs(se,{heading:"Actions",children:[e.jsxs(V,{value:"Start new chat",disabled:$,onSelect:()=>{t&&U(()=>s(t))},children:[e.jsx(Bn,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("span",{className:"flex-1",children:"Start new chat"}),$&&e.jsx("span",{className:"text-xs text-muted-foreground",children:"Select a project first"})]}),e.jsxs(V,{value:"Open settings",onSelect:()=>U(()=>n()),children:[e.jsx(Gn,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("span",{className:"flex-1",children:"Open settings"})]}),e.jsxs(V,{value:"Toggle theme dark light mode",onSelect:()=>U(g),children:[e.jsx(Hn,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("span",{className:"flex-1",children:"Toggle theme"})]})]}),v&&e.jsx(se,{heading:"Navigate",children:oi.map(b=>e.jsx(V,{value:`${b.label} ${b.keywords}`,onSelect:()=>U(()=>i?.(b.id)),children:e.jsx("span",{className:"flex-1",children:b.label})},b.id))}),v&&k&&e.jsxs(se,{heading:"Git",children:[e.jsxs(V,{value:"Git Fetch remote",onSelect:()=>U(()=>{N.fetch(),i?.("git")}),children:[e.jsx(zt,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("span",{className:"flex-1",children:"Git: Fetch"})]}),e.jsxs(V,{value:"Git Pull merge upstream",onSelect:()=>U(()=>{N.pull(),i?.("git")}),children:[e.jsx(On,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("span",{className:"flex-1",children:"Git: Pull"})]}),e.jsxs(V,{value:"Git Push origin remote",onSelect:()=>U(()=>{N.push(),i?.("git")}),children:[e.jsx(Un,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("span",{className:"flex-1",children:"Git: Push"})]})]}),v&&e.jsx(se,{heading:"Settings",children:vn.map(({id:b,label:z,keywords:q,icon:J})=>e.jsxs(V,{value:`Settings ${z} ${q}`,onSelect:()=>U(()=>n(b)),children:[e.jsx(J,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsxs("span",{className:"flex-1",children:["Settings: ",z]})]},b))}),I&&k&&le.length>0&&e.jsxs(se,{heading:"Sessions",children:[le.map(b=>e.jsxs(V,{value:`${b.label} ${b.snippet??""} ${b.id}`.trim(),onSelect:()=>U(()=>p(`/session/${b.id}`)),children:[e.jsx(It,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsxs("div",{className:"flex min-w-0 flex-1 flex-col",children:[e.jsx("span",{className:"truncate",children:b.label}),b.snippet&&e.jsx("span",{className:"truncate text-xs text-muted-foreground",children:b.snippet})]}),b.provider&&e.jsx("span",{className:"text-xs text-muted-foreground",children:b.provider})]},b.id)),!m&&K.length>R&&e.jsx(xe,{label:`Browse all sessions (${K.length})`,onSelect:()=>W("sessions")})]}),x&&k&&re.length>0&&e.jsxs(se,{heading:"Files",children:[re.map(b=>e.jsxs(V,{value:b.path,onSelect:()=>U(()=>f.openFile(b.path)),children:[e.jsx(qn,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("span",{className:"flex-1 truncate",children:b.name}),e.jsx("span",{className:"truncate text-xs text-muted-foreground",children:b.path})]},b.path)),!m&&D.length>R&&e.jsx(xe,{label:`Browse all files (${D.length})`,onSelect:()=>W("files")})]}),A&&k&&te.length>0&&e.jsxs(se,{heading:"Commits",children:[te.map(b=>e.jsxs(V,{value:`${b.message} ${b.author} ${b.shortHash}`,onSelect:()=>U(()=>i?.("git")),children:[e.jsx(Wn,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:b.shortHash}),e.jsx("span",{className:"flex-1 truncate",children:b.message}),e.jsx("span",{className:"truncate text-xs text-muted-foreground",children:b.author})]},b.hash)),!m&&F.length>R&&e.jsx(xe,{label:`Browse all commits (${F.length})`,onSelect:()=>W("commits")})]}),P&&k&&ce.length>0&&e.jsxs(se,{heading:"Branches",children:[ce.map(b=>e.jsxs(V,{value:b.name,onSelect:()=>U(()=>{N.checkout(b.name),i?.("git")}),children:[e.jsx(Vn,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsxs("span",{className:"flex-1 truncate",children:["Switch to: ",b.name]})]},`branch-${b.name}`)),!m&&S.length>R&&e.jsx(xe,{label:`Browse all branches (${S.length})`,onSelect:()=>W("branches")})]})]})]})]})})}function xe({label:t,onSelect:s}){return e.jsxs(V,{value:t,onSelect:s,children:[e.jsx(Ce,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("span",{className:"flex-1 text-muted-foreground",children:t})]})}const Le="quickSettingsHandlePosition",he=50,li=10,ci=90,di=5,Ht="flex items-center justify-between p-3 rounded-lg bg-muted/60 hover:bg-accent transition-colors border border-transparent hover:border-border",ui=`${Ht} cursor-pointer`,pi="h-4 w-4 rounded border-gray-300 dark:border-gray-600 text-blue-600 dark:text-blue-500 focus:ring-blue-500 focus:ring-2 dark:focus:ring-blue-400 bg-gray-100 dark:bg-gray-800 checked:bg-blue-600 dark:checked:bg-blue-600",mi=[{key:"showRawParameters",labelKey:"quickSettings.showRawParameters",icon:jt},{key:"showThinking",labelKey:"quickSettings.showThinking",icon:Yn}],ot=[{key:"sendByCtrlEnter",labelKey:"quickSettings.sendByCtrlEnter",icon:Kn},{key:"voiceEnabled",labelKey:"quickSettings.voiceEnabled",icon:_n}],Ot=t=>Math.max(li,Math.min(ci,t)),gi=()=>{if(typeof window>"u")return he;const t=localStorage.getItem(Le);if(!t)return he;try{const s=JSON.parse(t);if(typeof s.y=="number"&&Number.isFinite(s.y))return Ot(s.y)}catch{return localStorage.removeItem(Le),he}return he},rt=t=>t.type.includes("touch"),lt=t=>"touches"in t?t.touches[0]?.clientY??null:"clientY"in t&&typeof t.clientY=="number"?t.clientY:null;function hi({isMobile:t}){const[s,n]=r.useState(gi),[i,a]=r.useState(!1),[o,l]=r.useState(!1),c=r.useRef(null),u=r.useRef(he),d=r.useRef(!1),g=r.useRef(!1),p=r.useRef(!1),f=r.useCallback(()=>{p.current&&(document.body.style.cursor="",document.body.style.userSelect="",document.body.style.overflow="",document.body.style.position="",document.body.style.width="",p.current=!1)},[]),m=r.useCallback(P=>{p.current||(document.body.style.cursor="grabbing",document.body.style.userSelect="none",P&&(document.body.style.overflow="hidden",document.body.style.position="fixed",document.body.style.width="100%"),p.current=!0)},[]),k=r.useCallback(()=>{!i&&c.current===null||(g.current=d.current,d.current=!1,c.current=null,a(!1),l(!1),f())},[f,i]),v=r.useCallback(P=>{if(!i||c.current===null)return;const E=lt(P);if(E===null)return;const L=E-c.current,D=Math.abs(L)>di;if(!d.current&&D&&(d.current=!0,l(!0),m(rt(P))),!d.current)return;rt(P)&&P.preventDefault();const F=Math.max(window.innerHeight,1),S=L/F*100,N=t?-S:S;n(Ot(u.current+N))},[m,t,i]),I=r.useCallback(P=>{P.stopPropagation();const E=lt(P);E!==null&&(c.current=E,u.current=s,d.current=!1,l(!1),a(!0))},[s]);r.useEffect(()=>{localStorage.setItem(Le,JSON.stringify({y:s}))},[s]),r.useEffect(()=>{if(!i)return;const P=F=>{v(F)},E=()=>{k()},L=F=>{v(F)},D=()=>{k()};return document.addEventListener("mousemove",P),document.addEventListener("mouseup",E),document.addEventListener("touchmove",L,{passive:!1}),document.addEventListener("touchend",D),()=>{document.removeEventListener("mousemove",P),document.removeEventListener("mouseup",E),document.removeEventListener("touchmove",L),document.removeEventListener("touchend",D)}},[k,v,i]),r.useEffect(()=>(()=>{f()}),[f]);const x=r.useCallback(()=>g.current?(g.current=!1,!0):!1,[]),A=r.useMemo(()=>!t||typeof window>"u"?{top:`${s}%`,transform:"translateY(-50%)"}:{bottom:`${window.innerHeight*s/100}px`},[s,t]);return{isDragging:o,handleStyle:A,startDrag:I,endDrag:k,consumeSuppressedClick:x}}function $e({title:t,children:s,className:n=""}){return e.jsxs("div",{className:`space-y-2 ${n}`,children:[e.jsx("h4",{className:"mb-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground",children:t}),s]})}function fi({label:t,icon:s,checked:n,onCheckedChange:i}){return e.jsxs("label",{className:ui,children:[e.jsxs("span",{className:"flex items-center gap-2 text-sm text-foreground",children:[e.jsx(s,{className:"h-4 w-4 text-muted-foreground"}),t]}),e.jsx("input",{type:"checkbox",checked:n,onChange:a=>i(a.target.checked),className:pi})]})}const bi=r.memo(fi);function vi({isDarkMode:t,preferences:s,onPreferenceChange:n}){const{t:i}=Z("settings"),a=s.voiceEnabled?ot:ot.filter(({key:l})=>l!=="voiceEnabled"),o=l=>l.map(({key:c,labelKey:u,icon:d})=>e.jsx(bi,{label:i(u),icon:d,checked:s[c],onCheckedChange:g=>n(c,g)},c));return e.jsxs("div",{className:"flex-1 space-y-6 overflow-y-auto overflow-x-hidden bg-background p-4",children:[e.jsxs($e,{title:i("quickSettings.sections.appearance"),children:[e.jsxs("div",{className:Ht,children:[e.jsxs("span",{className:"flex items-center gap-2 text-sm text-foreground",children:[t?e.jsx(Jn,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Qn,{className:"h-4 w-4 text-muted-foreground"}),i("quickSettings.darkMode")]}),e.jsx(kn,{})]}),e.jsx(xn,{compact:!0})]}),e.jsx($e,{title:i("quickSettings.sections.toolDisplay"),children:o(mi)}),e.jsxs($e,{title:i("quickSettings.sections.inputSettings"),children:[o(a),e.jsx("p",{className:"ml-3 text-xs text-muted-foreground",children:i("quickSettings.sendByCtrlEnterDescription")})]})]})}function ki({isOpen:t,isDragging:s,hideOnMobile:n=!1,style:i,onClick:a,onMouseDown:o,onTouchStart:l}){const{t:c}=Z("settings"),u=t?"right-64":"right-0",d=s?"border-blue-500 dark:border-blue-400":"border-gray-200 dark:border-gray-700",g=s?"":"transition-all duration-150 ease-out",p=s?"cursor-grabbing":"cursor-pointer",f=c(s?"quickSettings.dragHandle.dragging":t?"quickSettings.dragHandle.closePanel":"quickSettings.dragHandle.openPanel"),m=c(s?"quickSettings.dragHandle.draggingStatus":"quickSettings.dragHandle.toggleAndMove");return e.jsx("button",{type:"button",onClick:a,onMouseDown:o,onTouchStart:l,className:`fixed ${u} z-50 ${n?"hidden md:block":""} ${g} border bg-white dark:bg-gray-800 ${d} rounded-l-md p-2 shadow-lg transition-colors hover:bg-gray-100 dark:hover:bg-gray-700 ${p} touch-none`,style:{...i,touchAction:"none",WebkitTouchCallout:"none",WebkitUserSelect:"none"},"aria-label":f,title:m,children:s?e.jsx(Zn,{className:"h-5 w-5 text-blue-500 dark:text-blue-400"}):t?e.jsx(Ce,{className:"h-5 w-5 text-gray-600 dark:text-gray-400"}):e.jsx(Ue,{className:"h-5 w-5 text-gray-600 dark:text-gray-400"})})}function xi(){const{t}=Z("settings");return e.jsx("div",{className:"border-b border-border bg-muted/40 p-4",children:e.jsxs("h3",{className:"flex items-center gap-2 text-lg font-semibold text-foreground",children:[e.jsx(Xn,{className:"h-5 w-5 text-muted-foreground"}),t("quickSettings.title")]})})}function yi({hideHandleOnMobile:t=!1}){const[s,n]=r.useState(!1),{isMobile:i}=At({trackPWA:!1}),{isDarkMode:a}=Pt(),{preferences:o,setPreference:l}=Ct(),{isDragging:c,handleStyle:u,startDrag:d,consumeSuppressedClick:g}=hi({isMobile:i}),p=r.useMemo(()=>({showRawParameters:o.showRawParameters,showThinking:o.showThinking,sendByCtrlEnter:o.sendByCtrlEnter,voiceEnabled:o.voiceEnabled}),[o.sendByCtrlEnter,o.showRawParameters,o.showThinking,o.voiceEnabled]),f=r.useCallback((k,v)=>{l(k,v)},[l]),m=r.useCallback(k=>{if(g()){k.preventDefault();return}n(v=>!v)},[g]);return e.jsxs(e.Fragment,{children:[e.jsx(ki,{isOpen:s,isDragging:c,hideOnMobile:t,style:u,onClick:m,onMouseDown:d,onTouchStart:d}),e.jsx("div",{className:`fixed right-0 top-0 z-[9999] h-full w-64 transform border-l border-border bg-background shadow-xl transition-transform duration-150 ease-out ${s?"translate-x-0":"translate-x-full"} ${i?"h-screen":""}`,children:e.jsxs("div",{className:"flex h-full flex-col",children:[e.jsx(xi,{}),e.jsx(vi,{isDarkMode:a,preferences:p,onPreferenceChange:f})]})}),s&&e.jsx("div",{className:"fixed inset-0 z-[9998] bg-background/80 backdrop-blur-sm transition-opacity duration-150 ease-out",onClick:()=>n(!1)})]})}const wi=1e4,Ci=(t,s)=>{if(t.size!==s.size)return!1;for(const[n,i]of t){const a=s.get(n);if(!a||i.statusText!==a.statusText||i.canInterrupt!==a.canInterrupt||i.startedAt!==a.startedAt)return!1}return!0};function Si(){const[t,s]=r.useState(new Map),n=r.useCallback((o,l)=>{o&&s(c=>{const u=c.get(o),d={statusText:l?.statusText!==void 0?l.statusText:u?.statusText??null,canInterrupt:l?.canInterrupt??u?.canInterrupt??!0,startedAt:u?.startedAt??Date.now()};if(u&&u.statusText===d.statusText&&u.canInterrupt===d.canInterrupt)return c;const g=new Map(c);return g.set(o,d),g})},[]),i=r.useCallback((o,l)=>{o&&s(c=>{const u=c.get(o);if(!u||l?.ifStartedBefore!==void 0&&u.startedAt>=l.ifStartedBefore)return c;const d=new Map(c);return d.delete(o),d})},[]),a=r.useCallback(o=>{const l=Date.now();s(c=>{const u=new Map;for(const g of o)g.sessionId&&u.set(g.sessionId,g);const d=new Map;for(const[g,p]of u){const f=c.get(g),m=typeof p.startedAt=="number"&&Number.isFinite(p.startedAt)&&p.startedAt>0?p.startedAt:void 0;d.set(g,{statusText:p.statusText!==void 0?p.statusText:f?.statusText??null,canInterrupt:p.canInterrupt??f?.canInterrupt??!0,startedAt:m??f?.startedAt??l})}for(const[g,p]of c)!u.has(g)&&l-p.startedAt<wi&&d.set(g,p);return Ci(c,d)?c:d})},[]);return{processingSessions:t,markSessionProcessing:n,markSessionIdle:i,syncProcessingSessions:a}}const Fe="claude",Y=t=>JSON.stringify(t??null),ct=()=>{try{const t=localStorage.getItem("selected-provider");return t||Fe}catch{return Fe}},Pi=t=>{const s=t.__provider??t.provider;return typeof s=="string"&&s.trim()?s:Fe},Ai=t=>({...t,__provider:Pi(t)}),dt=(t,s)=>t.length!==s.length?!0:s.some((n,i)=>{const a=t[i];return a?n.projectId!==a.projectId||n.displayName!==a.displayName||n.fullPath!==a.fullPath||!!n.isStarred!=!!a.isStarred||Y(n.sessionMeta)!==Y(a.sessionMeta)||Y(n.sessions)!==Y(a.sessions)||Y(n.taskmaster)!==Y(a.taskmaster):!0}),ut=(t,s)=>{if(s.length===0)return t;const n=new Map(s.filter(i=>!!i.taskmaster).map(i=>[i.projectId,i.taskmaster]));return t.map(i=>{const a=n.get(i.projectId);return a?{...i,taskmaster:a}:i})},ye=t=>t.sessions??[],oe=t=>ye(t).length,Ut=(t,s)=>{const n=[...t],i=new Set(t.map(a=>String(a.id)));for(const a of s){const o=String(a.id);i.has(o)||(n.push(a),i.add(o))}return n},pt=(t,s)=>{if(t.length===0)return s;const n=new Map(t.map(i=>[i.projectId,i]));return s.map(i=>{const a=n.get(i.projectId);if(!a)return i;const o=oe(a),l=oe(i);if(o<=l)return i;const c={...i,sessions:Ut(i.sessions??[],a.sessions??[])},u=Number(i.sessionMeta?.total??o);return c.sessionMeta={...i.sessionMeta,total:u,hasMore:oe(c)<u},c})},ji=(t,s)=>{const n={...t,sessions:Ut(t.sessions??[],s.sessions??[])},i=Number(s.sessionMeta?.total??t.sessionMeta?.total??0);return n.sessionMeta={...t.sessionMeta,...s.sessionMeta,total:i,hasMore:oe(n)<i},n},Ti=t=>{const s=new Set,n=i=>{if(typeof i!="string")return;const a=i.trim();a&&s.add(a)};return n(t.sessionId),n(t.providerSessionId),n(t.session?.id),s},pe=(t,s)=>{const n=t.sessions??[],i=Ti(s),a={...s.session,id:s.sessionId,__provider:s.provider},o=n.findIndex(d=>i.has(String(d.id)));let l,c=!1;if(o>=0){let d=!1;l=[];for(const[g,p]of n.entries()){if(g===o){const f={...p,...a};!a.summary?.trim()&&p.summary?.trim()&&(f.summary=p.summary),Y(p)!==Y(f)&&(d=!0),l.push(f);continue}if(i.has(String(p.id))){d=!0;continue}l.push(p)}if(!d)return t}else l=[a,...n],c=!0;const u={...t,sessions:l};if(c){const d=Number(t.sessionMeta?.total??0)+1;u.sessionMeta={...t.sessionMeta,total:d,hasMore:oe(u)<d}}return u},Ii=t=>({projectId:t.projectId,path:t.path||t.fullPath,fullPath:t.fullPath||t.path||"",displayName:t.displayName,isStarred:t.isStarred,sessions:t.sessions??[],sessionMeta:t.sessionMeta??{hasMore:!1,total:oe(t)},taskmaster:t.taskmaster}),Ei=(t,s)=>{const n=t.sessions??[],i=n.filter(l=>l.id!==s);if(i.length===n.length)return t;const a={...t,sessions:i},o=Math.max(0,Number(t.sessionMeta?.total??0)-1);return a.sessionMeta={...t.sessionMeta,total:o,hasMore:oe(a)<o},a},Mi=new Set(["chat","files","shell","herdr","git","tasks","browser"]),zi=t=>Mi.has(t)||t.startsWith("plugin:"),Di=()=>{try{const t=localStorage.getItem("activeTab");if(t&&zi(t))return t}catch{}return"chat"};function Ni({sessionId:t,navigate:s,subscribe:n,isMobile:i,activeSessions:a}){const[o,l]=r.useState([]),[c,u]=r.useState(null),[d,g]=r.useState(null),[p,f]=r.useState(new Set),[m,k]=r.useState(Di);r.useEffect(()=>{try{localStorage.setItem("activeTab",m)}catch{}},[m]);const[v,I]=r.useState(!1),[x,A]=r.useState(!0),[P,E]=r.useState(null),[L,D]=r.useState(!1),[F,S]=r.useState(!1),[N,K]=r.useState("agents"),[U,W]=r.useState(0),[M,B]=r.useState(0),$=r.useRef(null),R=r.useRef(d);R.current=d;const re=r.useRef(a);re.current=a;const te=r.useRef(c);te.current=c;const le=r.useRef(o);le.current=o;const ce=r.useRef(t);ce.current=t;const b=r.useRef(null);r.useEffect(()=>{b.current=null},[t]);const z=r.useCallback(h=>{if(!h)return;const y=R.current?.id??t??null;h!==y&&f(w=>{if(w.has(h))return w;const j=new Set(w);return j.add(h),j})},[t]),q=r.useCallback(h=>{h&&f(y=>{if(!y.has(h))return y;const w=new Set(y);return w.delete(h),w})},[]),J=r.useCallback(async({showLoadingState:h=!0}={})=>{try{h&&A(!0);const w=await(await ie.projects()).json();l(j=>{const C=ut(w,j),O=pt(j,C);return j.length===0||dt(j,O)?O:j})}catch(y){console.error("Error fetching projects:",y)}finally{h&&A(!1)}},[]),Pe=r.useCallback(async()=>{await J({showLoadingState:!1})},[J]),ue=r.useCallback(({sessionId:h,provider:y,project:w,summary:j})=>{if(!h||!w?.projectId)return;const C=new Date().toISOString(),O={id:h,summary:j??"",messageCount:0,createdAt:C,created_at:C,updated_at:C,lastActivity:C,__provider:y,__projectId:w.projectId},G={sessionId:h,provider:y,session:O,project:{projectId:w.projectId,path:w.path||w.fullPath,fullPath:w.fullPath||w.path||"",displayName:w.displayName,isStarred:!!w.isStarred}};l(H=>{const T=H.find(_=>_.projectId===w.projectId);if(!T)return[pe(Ii(w),G),...H];const Q=pe(T,G);return Q===T?H:H.map(_=>_.projectId===T.projectId?Q:_)}),u(H=>{if(!H||H.projectId!==w.projectId)return H;const T=pe(H,G);return T===H?H:T}),g(H=>H?.id===h?{...H,...O}:O)},[]),ne=r.useCallback((h,y)=>{l(w=>w.map(j=>j.projectId===h?{...j,taskmaster:y??void 0}:j)),u(w=>w?.projectId===h?{...w,taskmaster:y??void 0}:w)},[]),be=r.useCallback((h="tools")=>{K(h),S(!0)},[]);r.useEffect(()=>{J()},[J]),r.useEffect(()=>{!x&&o.length===1&&!c&&!t&&u(o[0])},[x,o,c,t]),r.useEffect(()=>n(y=>{if(y.kind==="loading_progress"){$.current&&(clearTimeout($.current),$.current=null),E(y),y.phase==="complete"&&($.current=setTimeout(()=>{E(null),$.current=null},500));return}const w=typeof y.sessionId=="string"&&y.sessionId?y.sessionId:null,j=R.current?.id??t??null;if(w&&w!==j&&y.kind!=="chat_subscribed"&&y.kind!=="loading_progress"&&y.kind!=="session_upserted"&&y.kind!=="status"&&y.kind!=="stream_end"&&y.kind!=="permission_cancelled"&&y.kind!=="websocket_reconnected"&&z(w),y.kind!=="session_upserted")return;const C=y;if(!C.sessionId||!C.session)return;const O=R.current;O&&C.sessionId===O.id&&!re.current.has(C.sessionId)?W(T=>T+1):z(C.sessionId),l(T=>{const Q=C.project?.projectId,_=T.find(de=>Q?de.projectId===Q:ye(de).some(_t=>_t.id===C.sessionId));if(!_){if(!C.project)return T;const de={projectId:C.project.projectId,path:C.project.path,fullPath:C.project.fullPath,displayName:C.project.displayName,isStarred:C.project.isStarred,sessions:[],sessionMeta:{hasMore:!1,total:0}};return[...T,pe(de,C)]}const ve=pe(_,C);return ve===_?T:T.map(de=>de.projectId===_.projectId?ve:de)}),u(T=>{if(!T||!(C.project?T.projectId===C.project.projectId:ye(T).some(ve=>ve.id===C.sessionId)))return T;const _=pe(T,C);return _===T?T:_});const G=typeof C.providerSessionId=="string"&&C.providerSessionId!==C.sessionId?C.providerSessionId:null;if(!G)return;const H={...C.session,id:C.sessionId,__provider:C.provider,__projectId:C.project?.projectId??O?.__projectId};g(T=>T?.id!==G?T:{...T,...H}),t===G&&s(`/session/${C.sessionId}`)}),[z,s,t,n]),r.useEffect(()=>()=>{$.current&&(clearTimeout($.current),$.current=null)},[]),r.useEffect(()=>{q(d?.id??t??null)},[q,d?.id,t]),r.useEffect(()=>{if(t){for(const h of o){const y=h.sessions?.find(w=>w.id===t);if(y){const w=Ai(y),j=c?.projectId!==h.projectId,C=d?.id!==t||d.__provider!==w.__provider;j&&u(h),C&&g(w);return}}d?.id!==t&&b.current!==t&&(b.current=t,(async()=>{let h=null;try{const j=await ie.sessionDetails(t);j.ok&&(h=(await j.json()).data??null)}catch(j){console.error(`Error resolving session ${t}:`,j)}if(ce.current!==t)return;if(!h){const j=te.current;if(!j||R.current?.id===t)return;g({id:t,__provider:ct(),__projectId:j.projectId,summary:""});return}if(typeof h.sessionId=="string"&&h.sessionId&&h.sessionId!==t){s(`/session/${h.sessionId}`,{replace:!0});return}const y=h.project?.projectId;y&&u(j=>{if(j?.projectId===y)return j;const C=le.current.find(O=>O.projectId===y);return C||{projectId:y,path:h.project?.path??h.project?.fullPath??"",fullPath:h.project?.fullPath??h.project?.path??"",displayName:h.project?.displayName??"",isStarred:!!h.project?.isStarred,sessions:[],sessionMeta:{hasMore:!1,total:0}}});const w={id:t,summary:h.summary??"",createdAt:h.createdAt??void 0,lastActivity:h.lastActivity??void 0,__provider:typeof h.provider=="string"&&h.provider.trim()?h.provider:ct(),__projectId:y};g(j=>j?.id===t?{...j,...w}:w)})())}},[s,t,o,c,d?.id,d?.__provider]);const Ae=r.useCallback(h=>{u(h),g(null),s("/"),i&&I(!1)},[i,s]),je=r.useCallback(h=>{if(q(h.id),g(h),(m==="tasks"||m==="browser")&&k("chat"),i){const y=h.__projectId,w=c?.projectId;y!==w&&I(!1)}s(`/session/${h.id}`)},[m,q,i,s,c?.projectId]),Te=r.useCallback(h=>{u(h),g(null),k("chat"),B(y=>y+1),s("/"),i&&I(!1)},[i,s]),Ie=r.useCallback(h=>{q(h),d?.id===h&&(g(null),s("/")),l(y=>y.map(w=>Ei(w,h)))},[q,s,d?.id]),Ee=r.useCallback(async()=>{try{const y=await(await ie.projects()).json(),w=ut(y,o),j=pt(o,w);if(l(G=>dt(G,j)?j:G),!c)return;const C=j.find(G=>G.projectId===c.projectId);if(!C||(Y(C)!==Y(c)&&u(C),!d))return;const O=ye(C).find(G=>G.id===d.id);if(O){const G=O.__provider||!d.__provider?O:{...O,__provider:d.__provider};Y(G)!==Y(d)&&g(G)}}catch(h){console.error("Error refreshing sidebar:",h)}},[o,c,d]),Me=r.useCallback(async h=>{const y=o.find(H=>H.projectId===h);if(!y)return;const w=oe(y),j=Number(y.sessionMeta?.total??0);if(j>0&&w>=j)return;const C=await ie.projectSessions(h,{limit:20,offset:w});if(!C.ok){const T=(await C.json().catch(()=>({}))).error,Q=typeof T=="string"?T:T&&typeof T=="object"&&T.message?T.message:`Failed to load more sessions for project ${h}`;throw new Error(Q)}const O=await C.json();let G=null;l(H=>H.map(T=>{if(T.projectId!==h)return T;const Q=ji(T,O);return G=Q,Q})),c?.projectId===h&&G&&u(G)},[o,c?.projectId]),ze=r.useCallback(h=>{c?.projectId===h&&(u(null),g(null),s("/")),l(y=>y.filter(w=>w.projectId!==h))},[s,c?.projectId]),Kt=r.useMemo(()=>({projects:o,selectedProject:c,selectedSession:d,activeSessions:a,attentionSessionIds:p,onProjectSelect:Ae,onSessionSelect:je,onNewSession:Te,onSessionDelete:Ie,onLoadMoreSessions:Me,onProjectDelete:ze,isLoading:x,loadingProgress:P,onRefresh:Ee,onShowSettings:()=>S(!0),showSettings:F,settingsInitialTab:N,onCloseSettings:()=>S(!1),isMobile:i}),[p,Te,ze,Ae,Ie,Me,je,Ee,x,i,P,a,o,N,c,d,F]);return{projects:o,selectedProject:c,selectedSession:d,activeTab:m,sidebarOpen:v,isLoadingProjects:x,loadingProgress:P,isInputFocused:L,showSettings:F,settingsInitialTab:N,externalMessageUpdate:U,newSessionTrigger:M,setActiveTab:k,setSidebarOpen:I,setIsInputFocused:D,setShowSettings:S,openSettings:be,fetchProjects:J,refreshProjectsSilently:Pe,registerOptimisticSession:ue,updateProjectTaskMaster:ne,sidebarSharedProps:Kt,handleProjectSelect:Ae,handleSessionSelect:je,handleNewSession:Te,handleSessionDelete:Ie,loadMoreProjectSessions:Me,handleProjectDelete:ze,handleSidebarRefresh:Ee}}function $i({processingSessions:t,activeSessionId:s,ws:n,sendMessage:i,markSessionProcessing:a}){const o=r.useRef(new Set);r.useEffect(()=>{const l=o.current,c=new Set(t.keys());o.current=c;for(const u of l){if(c.has(u)||u===s)continue;const d=as(u);d&&(!n||n.readyState!==WebSocket.OPEN||(os(u),i({type:"chat.send",sessionId:u,content:d.content,options:{...d.options??{},attachments:d.attachments??d.images??[]}}),a(u,{statusText:null,canInterrupt:!0})))}},[t,s,n,i,a])}function Ri(t){return/iPad|iPhone|iPod/.test(t.userAgent)||t.platform==="MacIntel"&&t.maxTouchPoints>1}function Li(t,s,n){return Ri(n)?Math.max(0,t-s):0}const Fi=t=>{if(typeof t=="number"&&Number.isFinite(t)&&t>0)return t;if(typeof t!="string")return;const s=Date.parse(t);return Number.isFinite(s)?s:void 0};function mt(){return e.jsx(yn,{children:e.jsx(Bi,{})})}function Bi(){const t=kt(),{sessionId:s}=Yt(),{t:n}=Z("common"),{isMobile:i}=At({trackPWA:!1}),{ws:a,sendMessage:o,subscribe:l}=wn(),{processingSessions:c,markSessionProcessing:u,markSessionIdle:d,syncProcessingSessions:g}=Si(),{selectedProject:p,selectedSession:f,activeTab:m,sidebarOpen:k,isLoadingProjects:v,externalMessageUpdate:I,newSessionTrigger:x,setActiveTab:A,setSidebarOpen:P,setIsInputFocused:E,openSettings:L,refreshProjectsSilently:D,registerOptimisticSession:F,updateProjectTaskMaster:S,sidebarSharedProps:N,handleNewSession:K,handleProjectSelect:U}=Ni({sessionId:s,navigate:t,subscribe:l,isMobile:i,activeSessions:c});$i({processingSessions:c,activeSessionId:f?.id??s??null,ws:a,sendMessage:o,markSessionProcessing:u});const W=r.useCallback(async()=>{try{const M=await ie.runningSessions();if(!M.ok)return;const B=await M.json(),$=Array.isArray(B.data?.sessions)?B.data.sessions:[];g($.map(R=>typeof R.sessionId!="string"||!R.sessionId?null:{sessionId:R.sessionId,startedAt:Fi(R.startedAt),statusText:typeof R.statusText=="string"?R.statusText:void 0,canInterrupt:typeof R.canInterrupt=="boolean"?R.canInterrupt:void 0}).filter(R=>!!R))}catch(M){console.error("[AppContent] Failed to sync running sessions:",M)}},[g]);return r.useEffect(()=>{W()},[W]),r.useEffect(()=>{const M=window.setInterval(()=>{W()},5e3);return()=>window.clearInterval(M)},[W]),St({openSettings:L,refreshProjects:D}),r.useEffect(()=>{if(typeof navigator>"u"||!("serviceWorker"in navigator))return;const M=B=>{const $=B.data;if(!(!$||$.type!=="notification:navigate")){if(typeof $.provider=="string"&&$.provider.trim()&&localStorage.setItem("selected-provider",$.provider),A("chat"),P(!1),D(),typeof $.sessionId=="string"&&$.sessionId){t(`/session/${$.sessionId}`);return}t("/")}};return navigator.serviceWorker.addEventListener("message",M),()=>{navigator.serviceWorker.removeEventListener("message",M)}},[t,D,A,P]),r.useEffect(()=>{const M=window.visualViewport;if(!M)return;const B=()=>{const $=Li(window.innerHeight,M.height,navigator);document.documentElement.style.setProperty("--keyboard-height",`${$}px`)};return B(),M.addEventListener("resize",B),()=>{M.removeEventListener("resize",B),document.documentElement.style.removeProperty("--keyboard-height")}},[]),e.jsx(Cn,{project:p,onProjectTaskMasterChange:S,children:e.jsxs("div",{className:"fixed inset-0 flex bg-background",style:{bottom:"var(--keyboard-height, 0px)"},children:[i?e.jsxs("div",{className:`fixed inset-0 z-50 flex transition-all duration-150 ease-out ${k?"visible opacity-100":"invisible opacity-0"}`,children:[e.jsx("button",{className:"fixed inset-0 bg-background/60 backdrop-blur-sm transition-opacity duration-150 ease-out",onClick:M=>{M.stopPropagation(),P(!1)},onTouchStart:M=>{M.preventDefault(),M.stopPropagation(),P(!1)},"aria-label":n("versionUpdate.ariaLabels.closeSidebar")}),e.jsx("div",{className:`relative h-full w-[85vw] max-w-sm transform border-r border-border/40 bg-card transition-transform duration-150 ease-out sm:w-80 ${k?"translate-x-0":"-translate-x-full"}`,onClick:M=>M.stopPropagation(),onTouchStart:M=>M.stopPropagation(),children:e.jsx(Ke,{...N})})]}):e.jsx("div",{className:"h-full flex-shrink-0 border-r border-border/50",children:e.jsx(Ke,{...N})}),e.jsx("div",{className:"flex min-w-0 flex-1 flex-col",children:e.jsx(Js,{selectedProject:p,selectedSession:f,activeTab:m,setActiveTab:A,ws:a,sendMessage:o,isMobile:i,onMenuClick:()=>P(!0),isLoading:v,onInputFocusChange:E,onSessionProcessing:u,onSessionIdle:d,processingSessions:c,onNavigateToSession:(M,B)=>t(`/session/${M}`,{replace:!!B?.replace}),onSessionEstablished:(M,B)=>F({sessionId:M,...B}),onShowSettings:L,externalMessageUpdate:I,newSessionTrigger:x,onProjectSelect:U,onProjectsRefresh:()=>{D()}})}),e.jsx(ri,{selectedProject:p,onStartNewChat:K,onOpenSettings:()=>L(),onShowTab:A}),e.jsx(yi,{hideHandleOnMobile:m==="herdr"})]})})}function Gi(t={}){const{immediate:s=!1,onNeedReload:n,onNeedRefresh:i,onOfflineReady:a,onRegistered:o,onRegisteredSW:l,onRegisterError:c}=t;let u,d,g;const p=async(m=!0)=>{await d,g?.()};async function f(){if("serviceWorker"in navigator){if(u=await ee(async()=>{const{Workbox:m}=await import("./workbox-window.prod.es5-BBnX5xw4.js");return{Workbox:m}},[]).then(({Workbox:m})=>new m("/sw.js",{scope:"/",type:"classic"})).catch(m=>{c?.(m)}),!u)return;g=()=>{u?.messageSkipWaiting()};{let m=!1;const k=()=>{m=!0,u?.addEventListener("controlling",v=>{v.isUpdate&&(n?n():window.location.reload())}),i?.()};u.addEventListener("installed",v=>{typeof v.isUpdate>"u"?typeof v.isExternal<"u"&&v.isExternal?k():!m&&a?.():v.isUpdate||a?.()}),u.addEventListener("waiting",k)}u.register({immediate:s}).then(m=>{l?l("/sw.js",m):o?.(m)}).catch(m=>{c?.(m)})}}return d=f(),p}function Hi(t={}){const{immediate:s=!0,onNeedReload:n,onNeedRefresh:i,onOfflineReady:a,onRegistered:o,onRegisteredSW:l,onRegisterError:c}=t,[u,d]=r.useState(!1),[g,p]=r.useState(!1),[f]=r.useState(()=>Gi({immediate:s,onNeedReload:n,onOfflineReady(){p(!0),a?.()},onNeedRefresh(){d(!0),i?.()},onRegistered:o,onRegisteredSW:l,onRegisterError:c}));return{needRefresh:[u,d],offlineReady:[g,p],updateServiceWorker:f}}function Oi(t){return t.needRefresh?"update":t.installAvailable?"install":t.offlineReady&&!t.offlineDismissed?"offline":null}const Ui=3600*1e3;function qi(){const{t}=Z("common"),[s,n]=r.useState(),[i,a]=r.useState(!1),{automaticPromptVisible:o,canInstall:l,dismissAutomaticPrompt:c,install:u,recordAutomaticPromptShown:d}=Sn(),{needRefresh:[g,p],offlineReady:[f,m],updateServiceWorker:k}=Hi({immediate:!0,onRegisteredSW:(E,L)=>n(L),onRegisterError:E=>console.error("Service worker registration failed:",E)});r.useEffect(()=>{if(!s)return;const E=window.setInterval(()=>{navigator.onLine&&s.update()},Ui);return()=>window.clearInterval(E)},[s]),r.useEffect(()=>{if(!f)return;const E=window.setTimeout(()=>a(!0),8e3);return()=>window.clearTimeout(E)},[f]);const v=Oi({installAvailable:l&&o,needRefresh:g,offlineDismissed:i,offlineReady:f});if(r.useEffect(()=>{v==="install"&&d()},[v,d]),!v)return null;const I={update:{icon:zt,message:t("pwa.updateReady"),action:t("pwa.reload")},install:{icon:ts,message:t("pwa.installAvailable"),action:t("pwa.install")},offline:{icon:es,message:t("pwa.offlineReady"),action:null}}[v],x=I.icon,A=()=>{v==="update"&&p(!1),v==="install"&&c(),v==="offline"&&(a(!0),m(!1))},P=async()=>{if(v==="update"){await k(!0);return}v==="install"&&await u()};return e.jsxs("aside",{role:"status","aria-live":"polite",className:"fixed inset-x-3 bottom-[calc(0.75rem+env(safe-area-inset-bottom,0px))] z-[100] mx-auto flex min-h-12 max-w-xl items-center gap-3 rounded-lg border border-border bg-card px-3 py-2.5 text-card-foreground shadow-lg",children:[e.jsx(x,{className:"h-4 w-4 flex-shrink-0 text-primary"}),e.jsx("span",{className:"min-w-0 flex-1 text-sm",children:I.message}),I.action&&e.jsx("button",{type:"button",className:"flex-shrink-0 text-sm font-medium text-primary hover:underline",onClick:()=>{P()},children:I.action}),e.jsx("button",{type:"button",className:"flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground",onClick:A,"aria-label":t("pwa.dismiss"),title:t("pwa.dismiss"),children:e.jsx(Mt,{className:"h-4 w-4"})})]})}const{slice:Wi,forEach:Vi}=[];function Ki(t){return Vi.call(Wi.call(arguments,1),s=>{if(s)for(const n in s)t[n]===void 0&&(t[n]=s[n])}),t}function _i(t){return typeof t!="string"?!1:[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(n=>n.test(t))}const gt=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,Yi=function(t,s){const i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:"/"},a=encodeURIComponent(s);let o=`${t}=${a}`;if(i.maxAge>0){const l=i.maxAge-0;if(Number.isNaN(l))throw new Error("maxAge should be a Number");o+=`; Max-Age=${Math.floor(l)}`}if(i.domain){if(!gt.test(i.domain))throw new TypeError("option domain is invalid");o+=`; Domain=${i.domain}`}if(i.path){if(!gt.test(i.path))throw new TypeError("option path is invalid");o+=`; Path=${i.path}`}if(i.expires){if(typeof i.expires.toUTCString!="function")throw new TypeError("option expires is invalid");o+=`; Expires=${i.expires.toUTCString()}`}if(i.httpOnly&&(o+="; HttpOnly"),i.secure&&(o+="; Secure"),i.sameSite)switch(typeof i.sameSite=="string"?i.sameSite.toLowerCase():i.sameSite){case!0:o+="; SameSite=Strict";break;case"lax":o+="; SameSite=Lax";break;case"strict":o+="; SameSite=Strict";break;case"none":o+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return i.partitioned&&(o+="; Partitioned"),o},ht={create(t,s,n,i){let a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:"/",sameSite:"strict"};n&&(a.expires=new Date,a.expires.setTime(a.expires.getTime()+n*60*1e3)),i&&(a.domain=i),document.cookie=Yi(t,s,a)},read(t){const s=`${t}=`,n=document.cookie.split(";");for(let i=0;i<n.length;i++){let a=n[i];for(;a.charAt(0)===" ";)a=a.substring(1,a.length);if(a.indexOf(s)===0)return a.substring(s.length,a.length)}return null},remove(t,s){this.create(t,"",-1,s)}};var Ji={name:"cookie",lookup(t){let{lookupCookie:s}=t;if(s&&typeof document<"u")return ht.read(s)||void 0},cacheUserLanguage(t,s){let{lookupCookie:n,cookieMinutes:i,cookieDomain:a,cookieOptions:o}=s;n&&typeof document<"u"&&ht.create(n,t,i,a,o)}},Qi={name:"querystring",lookup(t){let{lookupQuerystring:s}=t,n;if(typeof window<"u"){let{search:i}=window.location;!window.location.search&&window.location.hash?.indexOf("?")>-1&&(i=window.location.hash.substring(window.location.hash.indexOf("?")));const o=i.substring(1).split("&");for(let l=0;l<o.length;l++){const c=o[l].indexOf("=");c>0&&o[l].substring(0,c)===s&&(n=o[l].substring(c+1))}}return n}},Zi={name:"hash",lookup(t){let{lookupHash:s,lookupFromHashIndex:n}=t,i;if(typeof window<"u"){const{hash:a}=window.location;if(a&&a.length>2){const o=a.substring(1);if(s){const l=o.split("&");for(let c=0;c<l.length;c++){const u=l[c].indexOf("=");u>0&&l[c].substring(0,u)===s&&(i=l[c].substring(u+1))}}if(i)return i;if(!i&&n>-1){const l=a.match(/\/([a-zA-Z-]*)/g);return Array.isArray(l)?l[typeof n=="number"?n:0]?.replace("/",""):void 0}}}return i}};let me=null;const ft=()=>{if(me!==null)return me;try{if(me=typeof window<"u"&&window.localStorage!==null,!me)return!1;const t="i18next.translate.boo";window.localStorage.setItem(t,"foo"),window.localStorage.removeItem(t)}catch{me=!1}return me};var Xi={name:"localStorage",lookup(t){let{lookupLocalStorage:s}=t;if(s&&ft())return window.localStorage.getItem(s)||void 0},cacheUserLanguage(t,s){let{lookupLocalStorage:n}=s;n&&ft()&&window.localStorage.setItem(n,t)}};let ge=null;const bt=()=>{if(ge!==null)return ge;try{if(ge=typeof window<"u"&&window.sessionStorage!==null,!ge)return!1;const t="i18next.translate.boo";window.sessionStorage.setItem(t,"foo"),window.sessionStorage.removeItem(t)}catch{ge=!1}return ge};var ea={name:"sessionStorage",lookup(t){let{lookupSessionStorage:s}=t;if(s&&bt())return window.sessionStorage.getItem(s)||void 0},cacheUserLanguage(t,s){let{lookupSessionStorage:n}=s;n&&bt()&&window.sessionStorage.setItem(n,t)}},ta={name:"navigator",lookup(t){const s=[];if(typeof navigator<"u"){const{languages:n,userLanguage:i,language:a}=navigator;if(n)for(let o=0;o<n.length;o++)s.push(n[o]);i&&s.push(i),a&&s.push(a)}return s.length>0?s:void 0}},na={name:"htmlTag",lookup(t){let{htmlTag:s}=t,n;const i=s||(typeof document<"u"?document.documentElement:null);return i&&typeof i.getAttribute=="function"&&(n=i.getAttribute("lang")),n}},sa={name:"path",lookup(t){let{lookupFromPathIndex:s}=t;if(typeof window>"u")return;const n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);return Array.isArray(n)?n[typeof s=="number"?s:0]?.replace("/",""):void 0}},ia={name:"subdomain",lookup(t){let{lookupFromSubdomainIndex:s}=t;const n=typeof s=="number"?s+1:1,i=typeof window<"u"&&window.location?.hostname?.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(i)return i[n]}};let qt=!1;try{document.cookie,qt=!0}catch{}const Wt=["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"];qt||Wt.splice(1,1);const aa=()=>({order:Wt,lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:t=>t});class Vt{constructor(s){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type="languageDetector",this.detectors={},this.init(s,n)}init(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=s,this.options=Ki(n,this.options||{},aa()),typeof this.options.convertDetectedLanguage=="string"&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=a=>a.replace("-","_")),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=i,this.addDetector(Ji),this.addDetector(Qi),this.addDetector(Xi),this.addDetector(ea),this.addDetector(ta),this.addDetector(na),this.addDetector(sa),this.addDetector(ia),this.addDetector(Zi)}addDetector(s){return this.detectors[s.name]=s,this}detect(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,n=[];return s.forEach(i=>{if(this.detectors[i]){let a=this.detectors[i].lookup(this.options);a&&typeof a=="string"&&(a=[a]),a&&(n=n.concat(a))}}),n=n.filter(i=>i!=null&&!_i(i)).map(i=>this.options.convertDetectedLanguage(i)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?n:n.length>0?n[0]:null}cacheUserLanguage(s){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;n&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(s)>-1||n.forEach(i=>{this.detectors[i]&&this.detectors[i].cacheUserLanguage(s,this.options)}))}}Vt.type="languageDetector";const oa={save:"Save",cancel:"Cancel",delete:"Delete",create:"Create",edit:"Edit",close:"Close",confirm:"Confirm",submit:"Submit",retry:"Retry",refresh:"Refresh",search:"Search",clear:"Clear",copy:"Copy",download:"Download",upload:"Upload",browse:"Browse"},ra={chat:"Chat",shell:"Shell",herdr:"Herdr",files:"Files",git:"Source Control",tasks:"Tasks",browser:"Browser",computer:"Computer"},la={loading:"Loading...",success:"Success",error:"Error",failed:"Failed",pending:"Pending",completed:"Completed",inProgress:"In Progress"},ca={savedSuccessfully:"Saved successfully",deletedSuccessfully:"Deleted successfully",updatedSuccessfully:"Updated successfully",operationFailed:"Operation failed",networkError:"Network error. Please check your connection.",unauthorized:"Unauthorized. Please log in.",notFound:"Not found",invalidInput:"Invalid input",requiredField:"This field is required",unknownError:"An unknown error occurred"},da={settings:"Settings",home:"Home",back:"Back",next:"Next",previous:"Previous",logout:"Logout"},ua={language:"Language",theme:"Theme",darkMode:"Dark Mode",lightMode:"Light Mode",name:"Name",description:"Description",enabled:"Enabled",disabled:"Disabled",optional:"Optional",version:"Version",select:"Select",selectAll:"Select All",deselectAll:"Deselect All"},pa={justNow:"Just now",minutesAgo:"{{count}} mins ago",hoursAgo:"{{count}} hours ago",daysAgo:"{{count}} days ago",yesterday:"Yesterday"},ma={newFile:"New File",newFolder:"New Folder",rename:"Rename",move:"Move",copyPath:"Copy Path",openInEditor:"Open in Editor"},ga={loading:"Loading WindCli",settingUpWorkspace:"Setting up your workspace...",chooseProject:"Choose Your Project",selectProjectDescription:"Select a project from the sidebar to start coding with Claude. Each project contains your chat sessions and file history.",tip:"Tip",createProjectMobile:"Tap the menu button above to access projects",createProjectDesktop:"Create a new project by clicking the folder icon in the sidebar",newSession:"New Session",untitledSession:"Untitled Session",projectFiles:"Project Files"},ha={loading:"Loading files...",files:"Files",simpleView:"Simple view",compactView:"Compact view",detailedView:"Detailed view",searchPlaceholder:"Search files and folders...",clearSearch:"Clear search",name:"Name",size:"Size",modified:"Modified",permissions:"Permissions",noFilesFound:"No files found",checkProjectPath:"Check if the project path is accessible",loadFailed:"Unable to load files",noMatchesFound:"No matches found",tryDifferentSearch:"Try a different search term or clear the search",justNow:"just now",minAgo:"{{count}} min ago",hoursAgo:"{{count}} hours ago",daysAgo:"{{count}} days ago",newFile:"New File (Cmd+N)",newFolder:"New Folder (Cmd+Shift+N)",refresh:"Refresh",collapseAll:"Collapse All",context:{rename:"Rename",delete:"Delete",copyPath:"Copy Path",download:"Download",newFile:"New File",newFolder:"New Folder",upload:"Upload Files",refresh:"Refresh",menuLabel:"File context menu",loading:"Loading..."}},fa={title:"Create New Project",steps:{type:"Type",configure:"Configure",confirm:"Confirm"},step1:{question:"Do you already have a workspace, or would you like to create a new one?",existing:{title:"Existing Workspace",description:"I already have a workspace on my server and just need to add it to the project list"},new:{title:"New Workspace",description:"Create a new workspace, optionally clone from a GitHub repository"}},step2:{existingPath:"Workspace Path",newPath:"Workspace Path",existingPlaceholder:"/path/to/existing/workspace",newPlaceholder:"/path/to/new/workspace",existingHelp:"Full path to your existing workspace directory",newHelp:"Full path to your workspace directory",githubUrl:"GitHub URL (Optional)",githubPlaceholder:"https://github.com/username/repository",githubHelp:"Optional: provide a GitHub URL to clone a repository",githubAuth:"GitHub Authentication (Optional)",githubAuthHelp:"Only required for private repositories. Public repos can be cloned without authentication.",loadingTokens:"Loading stored tokens...",storedToken:"Stored Token",newToken:"New Token",nonePublic:"None (Public)",selectToken:"Select Token",selectTokenPlaceholder:"-- Select a token --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"This token will be used only for this operation",publicRepoInfo:"Public repositories don't require authentication. You can skip providing a token if cloning a public repo.",noTokensHelp:"No stored tokens available. You can add tokens in Settings → API Keys for easier reuse.",optionalTokenPublic:"GitHub Token (Optional for Public Repos)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (leave empty for public repos)"},step3:{reviewConfig:"Review Your Configuration",existingWorkspace:"Existing Workspace",newWorkspace:"New Workspace",path:"Path:",cloneFrom:"Clone From:",authentication:"Authentication:",usingStoredToken:"Using stored token:",usingProvidedToken:"Using provided token",noAuthentication:"No authentication",sshKey:"SSH Key",existingInfo:"The workspace will be added to your project list and will be available for Claude/Cursor sessions.",newWithClone:"The repository will be cloned from this folder.",newEmpty:"The workspace will be added to your project list and will be available for Claude/Cursor sessions.",cloningRepository:"Cloning repository..."},buttons:{cancel:"Cancel",back:"Back",next:"Next",createProject:"Create Project",creating:"Creating...",cloning:"Cloning..."},errors:{selectType:"Please select whether you have an existing workspace or want to create a new one",providePath:"Please provide a workspace path",failedToCreate:"Failed to create workspace",failedToCreateFolder:"Failed to create folder"}},ba={genericTool:"a tool",codes:{generic:{info:{title:"Notification"}},permission:{required:{title:"Action Required",body:"{{toolName}} is waiting for your decision."}},run:{stopped:{title:"Run Stopped",body:"Reason: {{reason}}"},failed:{title:"Run Failed"}},agent:{notification:{title:"Agent Notification"}}}},va={updateReady:"A new version of WindCli is ready.",reload:"Reload",installAvailable:"Install WindCli for faster access and offline support.",install:"Install",offlineReady:"WindCli is ready to use offline.",dismiss:"Dismiss"},ka={title:"Update Available",newVersionReady:"A new version is ready",currentVersion:"Current Version",latestVersion:"Latest Version",whatsNew:"What's New:",viewFullRelease:"View full release",updateProgress:"Update Progress:",manualUpgrade:"Manual upgrade:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:'Or click "Update Now" to run the update automatically.',updateCompleted:"Update completed successfully!",restartServer:"Please restart the server to apply changes.",updateFailed:"Update failed",buttons:{close:"Close",later:"Later",copyCommand:"Copy Command",updateNow:"Update Now",updating:"Updating..."},ariaLabels:{closeModal:"Close version upgrade modal",showSidebar:"Show sidebar",settings:"Settings",updateAvailable:"Update available",closeSidebar:"Close sidebar"}},xa={buttons:oa,tabs:ra,status:la,messages:ca,navigation:da,common:ua,time:pa,fileOperations:ma,mainContent:ga,fileTree:ha,projectWizard:fa,notifications:ba,pwa:va,versionUpdate:ka},ya="Settings",wa={account:"Account",permissions:"Permissions",mcpServers:"MCP Servers",skills:"Skills",appearance:"Appearance"},Ca={title:"Account",language:"Language",languageLabel:"Display Language",languageDescription:"Choose your preferred language for the interface",username:"Username",email:"Email",profile:"Profile",changePassword:"Change Password"},Sa={title:"MCP Servers",addServer:"Add Server",editServer:"Edit Server",deleteServer:"Delete Server",serverName:"Server Name",serverType:"Server Type",config:"Configuration",testConnection:"Test Connection",status:"Status",connected:"Connected",disconnected:"Disconnected",scope:{label:"Scope",user:"User",project:"Project"}},Pa={title:"Appearance",theme:"Theme",codeEditor:"Code Editor",editorTheme:"Editor Theme",wordWrap:"Word Wrap",showMinimap:"Show Minimap",lineNumbers:"Line Numbers",fontSize:"Font Size"},Aa={saveChanges:"Save Changes",resetToDefaults:"Reset to Defaults",cancelChanges:"Cancel Changes"},ja={title:"Voice",description:"Speech-to-text input and read-aloud, via an OpenAI-compatible audio backend.",enable:"Enable voice",enableDescription:"Show the mic button and the read-aloud button on messages.",backendTitle:"Backend",backendDescription:"Point at OpenAI, Groq, or a local server (LocalAI, Speaches, Kokoro-FastAPI). Leave blank to use the server default.",baseUrl:"Base URL",apiKey:"API key",sttModel:"Speech-to-text model",ttsModel:"Text-to-speech model",voice:"Voice",format:"Audio format",note:"A custom base URL is called directly by your browser and must allow browser CORS requests. Leave it blank to use the server-configured backend."},Ta={title:"Quick Settings",sections:{appearance:"Appearance",toolDisplay:"Tool Display",inputSettings:"Input Settings"},darkMode:"Dark Mode",showRawParameters:"Show raw parameters",showThinking:"Show thinking",sendByCtrlEnter:"Send by Ctrl+Enter",voiceEnabled:"Voice (mic + read aloud)",sendByCtrlEnterDescription:"When enabled, pressing Ctrl+Enter will send the message instead of just Enter. This is useful for IME users to avoid accidental sends.",dragHandle:{dragging:"Dragging handle",closePanel:"Close settings panel",openPanel:"Open settings panel",draggingStatus:"Dragging...",toggleAndMove:"Click to toggle, drag to move"}},Ia={title:"Terminal Shortcuts",sectionKeys:"Keys",sectionNavigation:"Navigation",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"Arrow Up",arrowDown:"Arrow Down",scrollDown:"Scroll Down",handle:{closePanel:"Close shortcuts panel",openPanel:"Open shortcuts panel"}},Ea={label:"Settings",agents:"Agents",appearance:"Appearance",git:"Git",apiTokens:"API & Tokens",voice:"Voice",tasks:"Tasks",browser:"Browser",notifications:"Notifications",plugins:"Plugins",about:"About"},Ma={installApp:{title:"Install WindCli",description:"Install this app from this browser.",install:"Install",installed:"Installed",installedDescription:"WindCli is installed on this device."}},za={title:"Notifications",description:"Control which notification events you receive.",webPush:{title:"Notify this browser",enable:"Enable notifications",disable:"Disable notifications",enabled:"Notifications are enabled for this browser",loading:"Updating...",unsupported:"Push notifications are not supported in this browser.",denied:"Push notifications are blocked. Please allow them in your browser settings."},desktop:{title:"Notify this desktop app",enable:"Enable notifications",disable:"Disable notifications",enabled:"Notifications are enabled for this desktop app",unsupported:"Desktop notifications are not supported on this system."},sound:{title:"Sound",description:"Play a short tone when a chat run finishes or needs tool approval.",enabled:"Enabled",test:"Test sound"},events:{title:"Event Types",actionRequired:"Action required",stop:"Run stopped",error:"Run failed"}},Da={darkMode:{label:"Dark Mode",description:"Toggle between light and dark themes"},projectSorting:{label:"Project Sorting",description:"How projects are ordered in the sidebar",alphabetical:"Alphabetical",recentActivity:"Recent Activity"},codeEditor:{title:"Code Editor",theme:{label:"Editor Theme",description:"Default theme for the code editor"},wordWrap:{label:"Word Wrap",description:"Enable word wrapping by default in the editor"},showMinimap:{label:"Show Minimap",description:"Display a minimap for easier navigation in diff view"},lineNumbers:{label:"Show Line Numbers",description:"Display line numbers in the editor"},fontSize:{label:"Font Size",description:"Editor font size in pixels"}}},Na={title:{add:"Add MCP Server",edit:"Edit MCP Server"},importMode:{form:"Form Input",json:"JSON Import"},scope:{label:"Scope",userGlobal:"User (Global)",projectLocal:"Project (Local)",userDescription:"User scope: Available across all projects on your machine",projectDescription:"Local scope: Only available in the selected project",cannotChange:"Scope cannot be changed when editing an existing server"},fields:{serverName:"Server Name",transportType:"Transport Type",command:"Command",arguments:"Arguments (one per line)",jsonConfig:"JSON Configuration",url:"URL",envVars:"Environment Variables (KEY=value, one per line)",headers:"Headers (KEY=value, one per line)",selectProject:"Select a project..."},placeholders:{serverName:"my-server"},validation:{missingType:"Missing required field: type",stdioRequiresCommand:"stdio type requires a command field",httpRequiresUrl:"{{type}} type requires a url field",invalidJson:"Invalid JSON format",jsonHelp:"Paste your MCP server configuration in JSON format. Example formats:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"Configuration Details (from {{configFile}})",projectPath:"Path: {{path}}",actions:{cancel:"Cancel",saving:"Saving...",addServer:"Add Server",updateServer:"Update Server"}},$a={success:"Settings saved successfully!",error:"Failed to save settings",saving:"Saving..."},Ra={save:"Save Settings",cancel:"Cancel"},La={title:"Git Configuration",description:"Configure your git identity for commits. These settings will be applied globally via git config --global",name:{label:"Git Name",help:"Your name for git commits"},email:{label:"Git Email",help:"Your email for git commits"},actions:{save:"Save Configuration",saving:"Saving..."},status:{success:"Saved successfully"}},Fa={title:"API Keys",description:"Generate API keys to access the external API from other applications.",newKey:{alertTitle:"⚠️ Save Your API Key",alertMessage:"This is the only time you'll see this key. Store it securely.",iveSavedIt:"I've saved it"},form:{placeholder:"API Key Name (e.g., Production Server)",createButton:"Create",cancelButton:"Cancel"},newButton:"New API Key",empty:"No API keys created yet.",list:{created:"Created:",lastUsed:"Last used:"},confirmDelete:"Are you sure you want to delete this API key?",status:{active:"Active",inactive:"Inactive"},github:{title:"GitHub Tokens",description:"Add GitHub Personal Access Tokens to clone private repositories via the external API.",descriptionAlt:"Add GitHub Personal Access Tokens to clone private repositories. You can also pass tokens directly in API requests without storing them.",addButton:"Add Token",form:{namePlaceholder:"Token Name (e.g., Personal Repos)",tokenPlaceholder:"GitHub Personal Access Token (ghp_...)",descriptionPlaceholder:"Description (optional)",addButton:"Add Token",cancelButton:"Cancel",howToCreate:"How to create a GitHub Personal Access Token →"},empty:"No GitHub tokens added yet.",added:"Added:",confirmDelete:"Are you sure you want to delete this GitHub token?"},apiDocsLink:"API Documentation",documentation:{title:"External API Documentation",description:"Learn how to use the external API to trigger Claude/Cursor sessions from your applications.",viewLink:"View API Documentation →"},loading:"Loading...",version:{updateAvailable:"Update available: v{{version}}"}},Ba={checking:"Checking TaskMaster installation...",notInstalled:{title:"TaskMaster AI CLI Not Installed",description:"TaskMaster CLI is required to use task management features. Install it to get started:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"View on GitHub",afterInstallation:"After installation:",steps:{restart:"Restart this application",autoAvailable:"TaskMaster features will automatically become available",initCommand:"Use task-master init in your project directory"}},settings:{enableLabel:"Enable TaskMaster Integration",enableDescription:"Show TaskMaster tasks, banners, and sidebar indicators across the interface"}},Ga={authStatus:{checking:"Checking...",connected:"Connected",notConnected:"Not connected",disconnected:"Disconnected",checkingAuth:"Checking authentication status...",loggedInAs:"Logged in as {{email}}",authenticatedUser:"authenticated user"},account:{claude:{description:"Anthropic Claude AI assistant"},cursor:{description:"Cursor AI-powered code editor"},codex:{description:"OpenAI Codex AI assistant"},opencode:{description:"OpenCode CLI assistant"}},connectionStatus:"Connection Status",login:{title:"Login",reAuthenticate:"Re-authenticate",description:"Sign in to your {{agent}} account to enable AI features",reAuthDescription:"Sign in with a different account or refresh credentials",button:"Login",reLoginButton:"Re-login"},error:"Error: {{error}}"},Ha={title:"Permission Settings",skipPermissions:{label:"Skip permission prompts (use with caution)",claudeDescription:"Equivalent to --dangerously-skip-permissions flag",cursorDescription:"Equivalent to -f flag in Cursor CLI"},allowedTools:{title:"Allowed Tools",description:"Tools that are automatically allowed without prompting for permission",placeholder:'e.g., "Bash(git log:*)" or "Write"',quickAdd:"Quick add common tools:",empty:"No allowed tools configured"},blockedTools:{title:"Blocked Tools",description:"Tools that are automatically blocked without prompting for permission",placeholder:'e.g., "Bash(rm:*)"',empty:"No blocked tools configured"},allowedCommands:{title:"Allowed Shell Commands",description:"Shell commands that are automatically allowed without prompting",placeholder:'e.g., "Shell(ls)" or "Shell(git status)"',quickAdd:"Quick add common commands:",empty:"No allowed commands configured"},blockedCommands:{title:"Blocked Shell Commands",description:"Shell commands that are automatically blocked",placeholder:'e.g., "Shell(rm -rf)" or "Shell(sudo)"',empty:"No blocked commands configured"},toolExamples:{title:"Tool Pattern Examples:",bashGitLog:"- Allow all git log commands",bashGitDiff:"- Allow all git diff commands",write:"- Allow all Write tool usage",bashRm:"- Block all rm commands (dangerous)"},shellExamples:{title:"Shell Command Examples:",ls:"- Allow ls command",gitStatus:"- Allow git status",npmInstall:"- Allow npm install",rmRf:"- Block recursive delete"},codex:{permissionMode:"Permission Mode",description:"Controls how Codex handles file modifications and command execution",modes:{default:{title:"Default",description:"Only trusted commands (ls, cat, grep, git status, etc.) run automatically. Other commands are skipped. Can write to workspace."},acceptEdits:{title:"Accept Edits",description:"All commands run automatically within the workspace. Full auto mode with sandboxed execution."},bypassPermissions:{title:"Bypass Permissions",description:"Full system access with no restrictions. All commands run automatically with full disk and network access. Use with caution."}},technicalDetails:"Technical details",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted. Trusted commands: cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find (without -exec), etc.",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never. All commands auto-execute within project directory.",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never. Full system access, use only in trusted environments.",overrideNote:"You can override this per-session using the mode button in the chat interface."}},actions:{add:"Add"}},Oa={title:"MCP Servers",description:{claude:"Model Context Protocol servers provide additional tools and data sources to Claude",cursor:"Model Context Protocol servers provide additional tools and data sources to Cursor",codex:"Model Context Protocol servers provide additional tools and data sources to Codex",opencode:"Model Context Protocol servers provide additional tools and data sources to OpenCode"},addButton:"Add MCP Server",empty:"No MCP servers configured",serverType:"Type",scope:{local:"local",user:"user"},config:{command:"Command",url:"URL",args:"Args",environment:"Environment"},tools:{title:"Tools",count:"({{count}}):",more:"+{{count}} more"},actions:{edit:"Edit server",delete:"Delete server"},managed:{badge:"Managed",hint:"Managed by WindCli."},help:{title:"About Codex MCP",description:"Codex supports stdio-based MCP servers. You can add servers that extend Codex's capabilities with additional tools and resources."}},Ua={title:"Plugins",description:"Extend the interface with custom plugins. Install from git or drop a folder in ~/.claude-code-ui/plugins/",installPlaceholder:"https://github.com/user/my-plugin",installButton:"Install",installing:"Installing…",securityWarning:"Only install plugins whose source code you have reviewed or from authors you trust.",scanningPlugins:"Scanning plugins…",noPluginsInstalled:"No plugins installed",pullLatest:"Pull latest from git",noGitRemote:"No git remote — update not available",uninstallPlugin:"Uninstall plugin",confirmUninstall:"Click again to confirm",confirmUninstallMessage:"Remove {{name}}? This cannot be undone.",cancel:"Cancel",remove:"Remove",updateFailed:"Update failed",installFailed:"Installation failed",uninstallFailed:"Uninstall failed",toggleFailed:"Toggle failed",starterPluginLabel:"Starter Plugin",starter:"Starter",docs:"Docs",sections:{officialTitle:"Official Plugins",officialDescription:"Maintained by the WindCli team and ready for direct install.",unofficialTitle:"Other Plugins",unofficialDescription:"Unofficial plugins and integrations from other users. Review the source before installing."},starterPlugin:{name:"Project Stats",badge:"starter",description:"File counts, lines of code, file-type breakdown, and recent activity for your project.",install:"Install"},terminalPlugin:{name:"Terminal",badge:"official",description:"Integrated terminal with full shell access directly within the interface.",install:"Install"},scheduledPromptPlugin:{name:"Scheduled Prompts",badge:"unofficial",description:"Schedule workspace prompts, review run history, and manage recurring local tasks.",install:"Install"},claudeWatchPlugin:{name:"Claude Watch",badge:"unofficial",description:"Watch long-running Claude Code sessions for hangs and expose process controls.",install:"Install"},prismCloudCLI:{name:"PRISM CloudCLI",badge:"unofficial",description:"Session intelligence for Claude Code, inside WindCli. See why your sessions are burning tokens without leaving the browser.",install:"Install"},sessionManagerPlugin:{name:"Sessions",badge:"unofficial",description:"View, manage, and kill active Claude Code sessions.",install:"Install"},tokenCostCalculatorPlugin:{name:"Token Cost Calculator",badge:"unofficial",description:"Calculate API costs from model prices and token usage, with preset model pricing support.",install:"Install"},taskQueuePlugin:{name:"Task Queue",badge:"unofficial",description:"Task queue dashboard to view, filter, and launch agent tasks.",install:"Install"},githubIssuesBoardPlugin:{name:"GitHub Issues Board",badge:"unofficial",description:"Kanban board for GitHub Issues with bidirectional TaskMaster sync and /github-task CLI skill auto-install",install:"Install"},claudeUsagePlugin:{name:"Claude Usage",badge:"unofficial",description:"Track live Claude Code plan limits and explore 30-day token and cost history.",install:"Install"},codexUsagePlugin:{name:"Codex Usage",badge:"unofficial",description:"Track live Codex plan limits, reset timing, and 30-day account token activity.",install:"Install"},morePlugins:"More",enable:"Enable",disable:"Disable",installAriaLabel:"Plugin git repository URL",tab:"tab",runningStatus:"running"},qa={title:ya,tabs:wa,account:Ca,mcp:Sa,appearance:Pa,actions:Aa,voiceSettings:ja,quickSettings:Ta,terminalShortcuts:Ia,mainTabs:Ea,about:Ma,notifications:za,appearanceSettings:Da,mcpForm:Na,saveStatus:$a,footerActions:Ra,git:La,apiKeys:Fa,tasks:Ba,agents:Ga,permissions:Ha,mcpServers:Oa,pluginSettings:Ua},Wa={title:"Welcome Back",description:"Sign in to your WindCli self-hosted account",username:"Username",password:"Password",submit:"Sign In",loading:"Signing in...",errors:{invalidCredentials:"Invalid username or password",requiredFields:"Please fill in all fields",networkError:"Network error. Please try again."},placeholders:{username:"Enter your username",password:"Enter your password"}},Va={title:"Create Account",username:"Username",password:"Password",confirmPassword:"Confirm Password",submit:"Create Account",loading:"Creating account...",errors:{passwordMismatch:"Passwords do not match",usernameTaken:"Username is already taken",weakPassword:"Password is too weak"}},Ka={title:"Sign Out",confirm:"Are you sure you want to sign out?",button:"Sign Out"},_a={login:Wa,register:Va,logout:Ka},Ya={title:"Projects",newProject:"New Project",deleteProject:"Remove Project",renameProject:"Rename Project",noProjects:"No projects found",loadingProjects:"Loading projects...",searchPlaceholder:"Search projects...",projectNamePlaceholder:"Project name",starred:"Starred",all:"All",untitledSession:"Untitled Session",newSession:"New Session",codexSession:"Codex Session",fetchingProjects:"Fetching your Claude projects and sessions",projects:"projects",noMatchingProjects:"No matching projects",tryDifferentSearch:"Try adjusting your search term",runClaudeCli:"Run Claude CLI in a project directory to get started"},Ja={title:"WindCli",subtitle:"AI coding assistant interface"},Qa={title:"Sessions",newSession:"New Session",deleteSession:"Delete Session",renameSession:"Rename Session",noSessions:"No sessions yet",loadingSessions:"Loading sessions...",unnamed:"Unnamed",loading:"Loading...",showMore:"Show more sessions"},Za={viewEnvironments:"View Environments",hideSidebar:"Hide sidebar",createProject:"Create new project",refresh:"Refresh projects and sessions (Ctrl+R)",renameProject:"Rename project (F2)",deleteProject:"Remove project from sidebar (Delete)",addToFavorites:"Add to favorites",removeFromFavorites:"Remove from favorites",editSessionName:"Manually edit session name",deleteSession:"Delete this session permanently",activeSessionIndicator:"Recently active session (last 10 minutes)",save:"Save",cancel:"Cancel",clearSearch:"Clear search",openCommandPalette:"Open command palette",attentionRequiredIndicator:"Session needs attention"},Xa={chat:"Chat",files:"Files",git:"Git",terminal:"Terminal",tasks:"Tasks"},eo={refresh:"Refresh",settings:"Settings",collapseAll:"Collapse All",expandAll:"Expand All",cancel:"Cancel",save:"Save",delete:"Delete",rename:"Rename",joinCommunity:"Join Community",reportIssue:"Report Issue",starOnGithub:"Star on GitHub"},to={openSource:"Open Source"},no={active:"Active",inactive:"Inactive",thinking:"Thinking...",error:"Error",aborted:"Aborted",unknown:"Unknown"},so={justNow:"Just now",oneMinuteAgo:"1 min ago",minutesAgo:"{{count}} mins ago",oneHourAgo:"1 hour ago",hoursAgo:"{{count}} hours ago",oneDayAgo:"1 day ago",daysAgo:"{{count}} days ago"},io={deleteConfirm:"Are you sure you want to delete this?",renameSuccess:"Renamed successfully",deleteSuccess:"Deleted successfully",errorOccurred:"An error occurred",deleteSessionConfirm:"Are you sure you want to delete this session? This action cannot be undone.",deleteProjectConfirm:"Remove this project from the sidebar? Your project files, memories, and session data will not be deleted.",enterProjectPath:"Please enter a project path",deleteSessionFailed:"Failed to delete session. Please try again.",deleteSessionError:"Error deleting session. Please try again.",renameSessionFailed:"Failed to rename session. Please try again.",renameSessionError:"Error renaming session. Please try again.",deleteProjectFailed:"Failed to remove project. Please try again.",deleteProjectError:"Error removing project. Please try again.",createProjectFailed:"Failed to create project. Please try again.",createProjectError:"Error creating project. Please try again.",updateProjectError:"Error updating project. Please try again.",refreshError:"Failed to refresh. Please try again.",restoreProjectFailed:"Failed to restore project. Please try again.",restoreProjectError:"Error restoring project. Please try again.",restoreSessionFailed:"Failed to restore session. Please try again.",restoreSessionError:"Error restoring session. Please try again."},ao={updateAvailable:"Update available",restartRequired:"Update installed — restart the server to apply"},oo={modeProjects:"Projects",modeConversations:"Conversations",conversationsPlaceholder:"Search in conversations...",searching:"Searching...",sessionTitles:"Session",conversationContents:"Conversation contents",noResults:"No results found",tryDifferentQuery:"Try a different search query",matches_one:"{{count}} match",matches_other:"{{count}} matches",projectsScanned_one:"{{count}} project scanned",projectsScanned_other:"{{count}} projects scanned"},ro={title:"Recent conversations",emptyTitle:"No conversations yet",emptyDescription:"Your most recently updated conversations will appear here.",loadFailed:"Could not load recent conversations",loadMore:"Load older conversations",loadingMore:"Loading more..."},lo={deleteProject:"Remove Project",deleteSession:"Delete Session",confirmDelete:"What would you like to do with",sessionCount_one:"This project contains {{count}} conversation.",sessionCount_other:"This project contains {{count}} conversations.",removeFromSidebar:"Remove from sidebar only",deleteAllData:"Delete all data permanently",allConversationsDeleted:"The project will be removed from the sidebar. Your files, memories, and session data will be preserved.",cannotUndo:"You can re-add the project later."},co={projects:Ya,app:Ja,sessions:Qa,tooltips:Za,navigation:Xa,actions:eo,branding:to,status:no,time:so,messages:io,version:ao,search:oo,recent:ro,deleteConfirmation:lo},uo={copy:"Copy",copied:"Copied",copyCode:"Copy code"},po={copy:"Copy message",copied:"Message copied",selectFormat:"Select copy format",copyAsMarkdown:"Copy as markdown",copyAsText:"Copy as text"},mo={user:"U",error:"Error",tool:"Tool",claude:"Claude",cursor:"Cursor",codex:"Codex",opencode:"OpenCode"},go={settings:"Tool Settings",error:"Tool Error",result:"Tool Result",viewParams:"View input parameters",viewRawParams:"View raw parameters",viewDiff:"View edit diff for",creatingFile:"Creating new file:",updatingTodo:"Updating Todo List",read:"Read",readFile:"Read file",updateTodo:"Update todo list",readTodo:"Read todo list",searchResults:"results"},ho={found:"Found {{count}} {{type}}",file:"file",files:"files",pattern:"pattern:",in:"in:"},fo={updated:"File updated successfully",created:"File created successfully",written:"File written successfully",diff:"Diff",newFile:"New File",viewContent:"View file content",viewFullOutput:"View full output ({{count}} chars)",contentDisplayed:"The file content is displayed in the diff view above"},bo={title:"Interactive Prompt",waiting:"Waiting for your response in the CLI",instruction:"Please select an option in your terminal where Claude is running.",selectedOption:"✓ Claude selected option {{number}}",instructionDetail:"In the CLI, you would select this option interactively using arrow keys or by typing the number."},vo={title:"Thinking...",emoji:"💭 Thinking..."},ko={response:"JSON Response"},xo={grant:"Grant permission for {{tool}}",added:"Permission added",addTo:"Adds {{entry}} to Allowed Tools.",retry:"Permission saved. Retry the request to use the tool.",error:"Unable to update permissions. Please try again.",openSettings:"Open settings"},yo={updated:"Todo list has been updated successfully",current:"Current Todo List"},wo={viewPlan:"📋 View implementation plan",title:"Implementation Plan"},Co={resetAt:"Claude usage limit reached. Your limit will reset at **{{time}} {{timezone}}** - {{date}}"},So={permissionMode:"Permission Mode",modes:{default:"Default Mode",auto:"Auto Mode",acceptEdits:"Accept Edits",bypassPermissions:"Bypass Permissions",plan:"Plan Mode"},descriptions:{default:"Only trusted commands (ls, cat, grep, git status, etc.) run automatically. Other commands are skipped. Can write to workspace.",auto:"A model classifier decides per tool call whether to approve or deny. Hands-off, but safer than Bypass — denials still happen.",acceptEdits:"All commands run automatically within the workspace. Full auto mode with sandboxed execution.",bypassPermissions:"Full system access with no restrictions. All commands run automatically with full disk and network access. Use with caution.",plan:"Planning mode - no commands are executed"},technicalDetails:"Technical details"},Po={input:"Voice input",stopRecording:"Stop recording",transcribing:"Transcribing…",speak:"Read aloud",stopSpeaking:"Stop",loading:"Loading…"},Ao={placeholder:"Type / for commands, @ for files, or ask {{provider}} anything...",placeholderDefault:"Type your message...",disabled:"Input disabled",attachFiles:"Attach files",attachImages:"Attach images",send:"Send",stop:"Stop",hintText:{ctrlEnter:"Ctrl+Enter to send • Shift+Enter for new line • Tab to change modes • / for slash commands",enter:"Enter to send • Shift+Enter for new line • Tab to change modes • / for slash commands",queue:"Enter to queue your next message",updateQueued:"Enter to update queued message"},clickToChangeMode:"Click to change permission mode (or press Tab in input)",showAllCommands:"Show all commands",clearInput:"Clear input",scrollToBottom:"Scroll to bottom",queue:{sendNext:"Queue next message",update:"Update queued message",label:"Queued",willSend:"Will send when this finishes",edit:"Edit queued message",delete:"Delete queued message"}},jo={reasoning:"Reasoning",model:"Model",effortDefault:"Default",loadingModels:"Loading models…",modelMenu:"Select model and reasoning effort",permissionHeading:"How should {{provider}} actions be approved?"},To={title:"Choose Your AI Assistant",description:"Select a provider to start a new conversation",selectModel:"Select Model",providerInfo:{anthropic:"by Anthropic",openai:"by OpenAI",cursorEditor:"AI Code Editor",google:"by Google"},readyPrompt:{claude:"Ready to use Claude with {{model}}. Start typing your message below.",cursor:"Ready to use Cursor with {{model}}. Start typing your message below.",codex:"Ready to use Codex with {{model}}. Start typing your message below.",opencode:"Ready to use OpenCode with {{model}}. Start typing your message below.",default:"Select a provider above to begin"},pressToSearch:"Press <kbd>{{shortcut}}</kbd> to search sessions, files, and commits"},Io={continue:{title:"Continue your conversation",description:"Ask questions about your code, request changes, or get help with development tasks"},loading:{olderMessages:"Loading older messages...",sessionMessages:"Loading session messages..."},messages:{showingOf:"Showing {{shown}} of {{total}} messages",scrollToLoad:"Scroll up to load more",showingLast:"Showing last {{count}} messages ({{total}} total)",loadEarlier:"Load earlier messages",loadAll:"Load all messages",loadingAll:"Loading all messages...",allLoaded:"All messages loaded",perfWarning:'All messages loaded — scrolling may be slower. Click "Scroll to bottom" to restore performance.'}},Eo={selectProject:{title:"Select a Project",description:"Choose a project to open an interactive shell in that directory"},status:{newSession:"New Session",initializing:"Initializing...",restarting:"Restarting..."},actions:{disconnect:"Disconnect",disconnectTitle:"Disconnect from shell",restart:"Restart",restartTitle:"Restart Shell",connect:"Continue in Shell",connectTitle:"Connect to shell"},loading:"Loading terminal...",connecting:"Connecting to shell...",startSession:"Start a new Claude session",resumeSession:"Resume session: {{displayName}}...",runCommand:"Run {{command}} in {{projectName}}",startCli:"Starting Claude CLI in {{projectName}}",defaultCommand:"command"},Mo={actions:{thinking:"Thinking",processing:"Processing",analyzing:"Analyzing",working:"Working",computing:"Computing",reasoning:"Reasoning"},state:{live:"Live",paused:"Paused"},elapsed:{seconds:"{{count}}s",minutesSeconds:"{{minutes}}m {{seconds}}s",label:"{{time}} elapsed",startingNow:"Starting now"},stop:"Stop",controls:{stopGeneration:"Stop Generation",pressEscToStop:"Press Esc anytime to stop"},providers:{assistant:"Assistant"}},zo={startChatWithProvider:"Select a project to start chatting with {{provider}}"},Do={nextTaskPrompt:"Start the next task"},No={codeBlock:uo,copyMessage:po,messageTypes:mo,tools:go,search:ho,fileOperations:fo,interactive:bo,thinking:vo,json:ko,permissions:xo,todo:yo,plan:wo,usageLimit:Co,codex:So,voice:Po,input:Ao,composer:jo,providerSelection:To,session:Io,shell:Eo,claudeStatus:Mo,projectSelection:zo,tasks:Do},$o={changes:"changes",previousChange:"Previous change",nextChange:"Next change",hideDiff:"Hide diff highlighting",showDiff:"Show diff highlighting",settings:"Editor Settings",collapse:"Collapse editor",expand:"Expand editor to full width"},Ro="Loading {{fileName}}...",Lo={showingChanges:"Showing changes"},Fo={copyPath:"Copy file path",pathCopied:"File path copied",download:"Download file",save:"Save",saving:"Saving...",saved:"Saved!",exitFullscreen:"Exit fullscreen",fullscreen:"Fullscreen",close:"Close",previewMarkdown:"Preview markdown",editMarkdown:"Edit markdown"},Bo={lines:"Lines:",characters:"Characters:",shortcuts:"Press Ctrl+S to save • Esc to close"},Go={title:"Binary File",message:'The file "{{fileName}}" cannot be displayed in the text editor because it is a binary file.'},Ho={loading:"Loading preview...",error:"Unable to display this file.",openInNewTab:"Open in new tab"},Oo={toolbar:$o,loading:Ro,header:Lo,actions:Fo,footer:Bo,binaryFile:Go,filePreview:Ho},Uo={title:"TaskMaster AI is not configured",description:"TaskMaster helps break down complex projects into manageable tasks with AI-powered assistance",whatIsTitle:"🎯 What is TaskMaster?",features:{aiPowered:"AI-Powered Task Management: Break complex projects into manageable subtasks",prdTemplates:"PRD Templates: Generate tasks from Product Requirements Documents",dependencyTracking:"Dependency Tracking: Understand task relationships and execution order",progressVisualization:"Progress Visualization: Kanban boards and detailed task analytics",cliIntegration:"CLI Integration: Use taskmaster commands for advanced workflows"},initializeButton:"Initialize TaskMaster AI"},qo={title:"Getting Started with TaskMaster",subtitle:"TaskMaster is initialized! Here's what to do next:",steps:{createPRD:{title:"Create a Product Requirements Document (PRD)",description:"Discuss your project idea and create a PRD that describes what you want to build.",addButton:"Add PRD",existingPRDs:"Existing PRDs:"},generateTasks:{title:"Generate Tasks from PRD",description:"Once you have a PRD, ask your AI assistant to parse it and TaskMaster will automatically break it down into manageable tasks with implementation details."},analyzeTasks:{title:"Analyze & Expand Tasks",description:"Ask your AI assistant to analyze task complexity and expand them into detailed subtasks for easier implementation."},startBuilding:{title:"Start Building",description:"Ask your AI assistant to begin working on tasks, update their status, and add new tasks as your project evolves."}},tip:"💡 Tip: Start with a PRD to get the most out of TaskMaster's AI-powered task generation"},Wo={title:"TaskMaster Setup",subtitle:"Interactive CLI for {{projectName}}",willStart:"TaskMaster initialization will start automatically",completed:"TaskMaster setup completed! You can now close this window.",closeButton:"Close",closeContinueButton:"Close & Continue"},Vo={title:"Getting Started with TaskMaster",subtitle:"Your guide to productive task management",examples:{parsePRD:`💬 Example:
|
|
3
3
|
"I've just initialized a new project with Claude Task Master. I have a PRD at .taskmaster/docs/prd.txt. Can you help me parse it and set up the initial tasks?"`,expandTask:`💬 Example:
|
|
4
4
|
"Task 5 seems complex. Can you break it down into subtasks?"`,addTask:`💬 Example:
|
|
5
|
-
"Please add a new task to implement user profile image uploads using Cloudinary, research the best approach."`},moreExamples:"View more examples and usage patterns →",proTips:{title:"💡 Pro Tips",search:"Use the search bar to quickly find specific tasks",views:"Switch between Kanban, List, and Grid views using the view toggles",filters:"Use filters to focus on specific task statuses or priorities",details:"Click on any task to view detailed information and manage subtasks"},learnMore:{title:"📚 Learn More",description:"TaskMaster AI is an advanced task management system built for developers. Get documentation, examples, and contribute to the project.",githubButton:"View on GitHub"}},Lo={placeholder:"Search tasks..."},Fo={button:"Filters",status:"Status",priority:"Priority",sortBy:"Sort By",allStatuses:"All Statuses",allPriorities:"All Priorities",showing:"Showing {{filtered}} of {{total}} tasks",clearFilters:"Clear Filters"},Bo={id:"ID",status:"Status",priority:"Priority",idAsc:"ID (Ascending)",idDesc:"ID (Descending)",titleAsc:"Title (A-Z)",titleDesc:"Title (Z-A)",statusAsc:"Status (Pending First)",statusDesc:"Status (Done First)",priorityAsc:"Priority (High First)",priorityDesc:"Priority (Low First)"},Go={kanban:"Kanban view",list:"List view",grid:"Grid view"},Ho={pending:"📋 To Do",inProgress:"🚀 In Progress",done:"✅ Done",blocked:"🚫 Blocked",deferred:"⏳ Deferred",cancelled:"❌ Cancelled",noTasksYet:"No tasks yet",tasksWillAppear:"Tasks will appear here",moveTasksHere:"Move tasks here when started",completedTasksHere:"Completed tasks appear here",statusTasksHere:"Tasks with this status will appear here"},Oo={help:"TaskMaster Getting Started Guide",prds:"PRDs",addPRD:"Add PRD",addTask:"Add Task",createNewPRD:"Create New PRD",prdsAvailable:"{{count}} PRD(s) available"},Uo={modified:"Modified: {{date}}"},qo={pending:"Pending","in-progress":"In Progress",done:"Done",blocked:"Blocked",deferred:"Deferred",cancelled:"Cancelled"},Wo={high:"High",medium:"Medium",low:"Low"},Vo={title:"No tasks match your filters",description:"Try adjusting your search or filter criteria."},Ko={notConfigured:Do,gettingStarted:No,setupModal:$o,helpGuide:Ro,search:Lo,filters:Fo,sort:Bo,views:Go,kanban:Ho,buttons:Oo,prd:Uo,statuses:qo,priorities:Wo,noMatchingTasks:Vo},_o={save:"Enregistrer",cancel:"Annuler",delete:"Supprimer",create:"Créer",edit:"Modifier",close:"Fermer",confirm:"Confirmer",submit:"Soumettre",retry:"Réessayer",refresh:"Actualiser",search:"Rechercher",clear:"Effacer",copy:"Copier",download:"Télécharger",upload:"Envoyer",browse:"Parcourir"},Yo={chat:"Chat",shell:"Terminal",files:"Fichiers",git:"Contrôle de source",tasks:"Tâches",browser:"Navigateur",computer:"Ordinateur"},Jo={loading:"Chargement...",success:"Succès",error:"Erreur",failed:"Échec",pending:"En attente",completed:"Terminé",inProgress:"En cours"},Qo={savedSuccessfully:"Enregistré avec succès",deletedSuccessfully:"Supprimé avec succès",updatedSuccessfully:"Mis à jour avec succès",operationFailed:"Opération échouée",networkError:"Erreur réseau. Vérifiez votre connexion.",unauthorized:"Non autorisé. Veuillez vous connecter.",notFound:"Introuvable",invalidInput:"Entrée invalide",requiredField:"Ce champ est obligatoire",unknownError:"Une erreur inconnue s'est produite"},Zo={settings:"Paramètres",home:"Accueil",back:"Retour",next:"Suivant",previous:"Précédent",logout:"Déconnexion"},Xo={language:"Langue",theme:"Thème",darkMode:"Mode sombre",lightMode:"Mode clair",name:"Nom",description:"Description",enabled:"Activé",disabled:"Désactivé",optional:"Optionnel",version:"Version",select:"Sélectionner",selectAll:"Tout sélectionner",deselectAll:"Tout désélectionner"},er={justNow:"À l'instant",minutesAgo:"Il y a {{count}} min",hoursAgo:"Il y a {{count}} h",daysAgo:"Il y a {{count}} j",yesterday:"Hier"},tr={newFile:"Nouveau fichier",newFolder:"Nouveau dossier",rename:"Renommer",move:"Déplacer",copyPath:"Copier le chemin",openInEditor:"Ouvrir dans l'éditeur"},nr={loading:"Chargement de WindCli",settingUpWorkspace:"Préparation de votre espace de travail...",chooseProject:"Choisissez votre projet",selectProjectDescription:"Sélectionnez un projet dans la barre latérale pour commencer à coder avec Claude. Chaque projet contient vos sessions de chat et l'historique des fichiers.",tip:"Astuce",createProjectMobile:"Appuyez sur le bouton menu ci-dessus pour accéder aux projets",createProjectDesktop:"Créez un nouveau projet en cliquant sur l'icône de dossier dans la barre latérale",newSession:"Nouvelle session",untitledSession:"Session sans titre",projectFiles:"Fichiers du projet"},sr={loading:"Chargement des fichiers...",files:"Fichiers",simpleView:"Vue simple",compactView:"Vue compacte",detailedView:"Vue détaillée",searchPlaceholder:"Rechercher fichiers et dossiers...",clearSearch:"Effacer la recherche",name:"Nom",size:"Taille",modified:"Modifié",permissions:"Permissions",noFilesFound:"Aucun fichier trouvé",checkProjectPath:"Vérifiez si le chemin du projet est accessible",noMatchesFound:"Aucun résultat",tryDifferentSearch:"Essayez un autre terme ou effacez la recherche",justNow:"à l'instant",minAgo:"il y a {{count}} min",hoursAgo:"il y a {{count}} h",daysAgo:"il y a {{count}} j",newFile:"Nouveau fichier (Cmd+N)",newFolder:"Nouveau dossier (Cmd+Maj+N)",refresh:"Actualiser",collapseAll:"Tout réduire",context:{rename:"Renommer",delete:"Supprimer",copyPath:"Copier le chemin",download:"Télécharger",newFile:"Nouveau fichier",newFolder:"Nouveau dossier",upload:"Téléverser des fichiers",refresh:"Actualiser",menuLabel:"Menu contextuel du fichier",loading:"Chargement..."}},ir={title:"Créer un nouveau projet",steps:{type:"Type",configure:"Configurer",confirm:"Confirmer"},step1:{question:"Avez-vous déjà un espace de travail, ou souhaitez-vous en créer un nouveau ?",existing:{title:"Espace de travail existant",description:"J'ai déjà un espace de travail sur mon serveur et je veux juste l'ajouter à la liste des projets"},new:{title:"Nouvel espace de travail",description:"Créer un nouvel espace de travail, éventuellement cloné depuis un dépôt GitHub"}},step2:{existingPath:"Chemin de l'espace de travail",newPath:"Chemin de l'espace de travail",existingPlaceholder:"/chemin/vers/espace-de-travail",newPlaceholder:"/chemin/vers/nouvel-espace",existingHelp:"Chemin complet vers votre répertoire d'espace de travail existant",newHelp:"Chemin complet vers votre répertoire d'espace de travail",githubUrl:"URL GitHub (optionnel)",githubPlaceholder:"https://github.com/utilisateur/depot",githubHelp:"Optionnel : fournissez une URL GitHub pour cloner un dépôt",githubAuth:"Authentification GitHub (optionnel)",githubAuthHelp:"Uniquement requis pour les dépôts privés. Les dépôts publics peuvent être clonés sans authentification.",loadingTokens:"Chargement des tokens enregistrés...",storedToken:"Token enregistré",newToken:"Nouveau token",nonePublic:"Aucun (Public)",selectToken:"Sélectionner un token",selectTokenPlaceholder:"-- Sélectionner un token --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"Ce token sera utilisé uniquement pour cette opération",publicRepoInfo:"Les dépôts publics ne nécessitent pas d'authentification. Vous pouvez ignorer le token pour cloner un dépôt public.",noTokensHelp:"Aucun token enregistré. Vous pouvez en ajouter dans Paramètres → Clés API.",optionalTokenPublic:"Token GitHub (optionnel pour les dépôts publics)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (laisser vide pour les dépôts publics)"},step3:{reviewConfig:"Vérifiez votre configuration",existingWorkspace:"Espace de travail existant",newWorkspace:"Nouvel espace de travail",path:"Chemin :",cloneFrom:"Cloner depuis :",authentication:"Authentification :",usingStoredToken:"Utilisation du token enregistré :",usingProvidedToken:"Utilisation du token fourni",noAuthentication:"Sans authentification",sshKey:"Clé SSH",existingInfo:"L'espace de travail sera ajouté à votre liste de projets et disponible pour les sessions Claude/Cursor.",newWithClone:"Le dépôt sera cloné depuis ce dossier.",newEmpty:"L'espace de travail sera ajouté à votre liste de projets et disponible pour les sessions Claude/Cursor.",cloningRepository:"Clonage du dépôt..."},buttons:{cancel:"Annuler",back:"Retour",next:"Suivant",createProject:"Créer le projet",creating:"Création...",cloning:"Clonage..."},errors:{selectType:"Veuillez indiquer si vous avez un espace de travail existant ou si vous souhaitez en créer un nouveau",providePath:"Veuillez fournir un chemin d'espace de travail",failedToCreate:"Échec de la création de l'espace de travail",failedToCreateFolder:"Échec de la création du dossier"}},ar={genericTool:"un outil",codes:{generic:{info:{title:"Notification"}},permission:{required:{title:"Action requise",body:"{{toolName}} attend votre décision."}},run:{stopped:{title:"Exécution arrêtée",body:"Raison : {{reason}}"},failed:{title:"Exécution échouée"}},agent:{notification:{title:"Notification de l'agent"}}}},or={title:"Mise à jour disponible",newVersionReady:"Une nouvelle version est prête",currentVersion:"Version actuelle",latestVersion:"Dernière version",whatsNew:"Nouveautés :",viewFullRelease:"Voir les notes de version complètes",updateProgress:"Progression de la mise à jour :",manualUpgrade:"Mise à jour manuelle :",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:"Ou cliquez sur « Mettre à jour maintenant » pour lancer la mise à jour automatiquement.",updateCompleted:"Mise à jour effectuée avec succès !",restartServer:"Veuillez redémarrer le serveur pour appliquer les modifications.",updateFailed:"Échec de la mise à jour",buttons:{close:"Fermer",later:"Plus tard",copyCommand:"Copier la commande",updateNow:"Mettre à jour maintenant",updating:"Mise à jour..."},ariaLabels:{closeModal:"Fermer la fenêtre de mise à jour",showSidebar:"Afficher la barre latérale",settings:"Paramètres",updateAvailable:"Mise à jour disponible",closeSidebar:"Masquer la barre latérale"}},rr={buttons:_o,tabs:Yo,status:Jo,messages:Qo,navigation:Zo,common:Xo,time:er,fileOperations:tr,mainContent:nr,fileTree:sr,projectWizard:ir,notifications:ar,versionUpdate:or},lr="Paramètres",cr={account:"Compte",permissions:"Permissions",mcpServers:"Serveurs MCP",appearance:"Apparence"},dr={title:"Compte",language:"Langue",languageLabel:"Langue d'affichage",languageDescription:"Choisissez votre langue préférée pour l'interface",username:"Nom d'utilisateur",email:"E-mail",profile:"Profil",changePassword:"Changer le mot de passe"},ur={title:"Serveurs MCP",addServer:"Ajouter un serveur",editServer:"Modifier le serveur",deleteServer:"Supprimer le serveur",serverName:"Nom du serveur",serverType:"Type de serveur",config:"Configuration",testConnection:"Tester la connexion",status:"Statut",connected:"Connecté",disconnected:"Déconnecté",scope:{label:"Portée",user:"Utilisateur",project:"Projet"}},pr={title:"Apparence",theme:"Thème",codeEditor:"Éditeur de code",editorTheme:"Thème de l'éditeur",wordWrap:"Retour à la ligne",showMinimap:"Afficher la minimap",lineNumbers:"Numéros de ligne",fontSize:"Taille de police"},mr={saveChanges:"Enregistrer les modifications",resetToDefaults:"Rétablir les valeurs par défaut",cancelChanges:"Annuler les modifications"},gr={title:"Paramètres rapides",sections:{appearance:"Apparence",toolDisplay:"Affichage des outils",inputSettings:"Paramètres de saisie"},darkMode:"Mode sombre",showRawParameters:"Afficher les paramètres bruts",showThinking:"Afficher la réflexion",sendByCtrlEnter:"Envoyer avec Ctrl+Entrée",sendByCtrlEnterDescription:"Lorsqu'activé, appuyer sur Ctrl+Entrée envoie le message au lieu de simplement Entrée. Utile pour les utilisateurs IME pour éviter les envois accidentels.",dragHandle:{dragging:"Glissement en cours",closePanel:"Fermer le panneau de paramètres",openPanel:"Ouvrir le panneau de paramètres",draggingStatus:"Glissement...",toggleAndMove:"Cliquer pour basculer, glisser pour déplacer"}},hr={title:"Raccourcis terminal",sectionKeys:"Touches",sectionNavigation:"Navigation",escape:"Échap",tab:"Tab",shiftTab:"Maj+Tab",arrowUp:"Flèche haut",arrowDown:"Flèche bas",scrollDown:"Défiler vers le bas",handle:{closePanel:"Fermer le panneau de raccourcis",openPanel:"Ouvrir le panneau de raccourcis"}},fr={label:"Paramètres",agents:"Agents",appearance:"Apparence",git:"Git",apiTokens:"API & Tokens",tasks:"Tâches",notifications:"Notifications",plugins:"Plugins",about:"À propos"},br={title:"Notifications",description:"Contrôlez les événements de notification que vous recevez.",webPush:{title:"Notifications push web",enable:"Activer les notifications push",disable:"Désactiver les notifications push",enabled:"Les notifications push sont activées",loading:"Mise à jour...",unsupported:"Les notifications push ne sont pas prises en charge dans ce navigateur.",denied:"Les notifications push sont bloquées. Veuillez les autoriser dans les paramètres de votre navigateur."},sound:{title:"Son",description:"Jouer un court son lorsqu'une exécution de chat se termine.",enabled:"Activé",test:"Tester le son"},events:{title:"Types d'événements",actionRequired:"Action requise",stop:"Exécution arrêtée",error:"Exécution échouée"}},vr={darkMode:{label:"Mode sombre",description:"Basculer entre les thèmes clair et sombre"},projectSorting:{label:"Tri des projets",description:"Ordre d'affichage des projets dans la barre latérale",alphabetical:"Alphabétique",recentActivity:"Activité récente"},codeEditor:{title:"Éditeur de code",theme:{label:"Thème de l'éditeur",description:"Thème par défaut pour l'éditeur de code"},wordWrap:{label:"Retour à la ligne",description:"Activer le retour à la ligne par défaut dans l'éditeur"},showMinimap:{label:"Afficher la minimap",description:"Afficher une minimap pour une navigation plus facile en vue diff"},lineNumbers:{label:"Afficher les numéros de ligne",description:"Afficher les numéros de ligne dans l'éditeur"},fontSize:{label:"Taille de police",description:"Taille de police de l'éditeur en pixels"}}},kr={title:{add:"Ajouter un serveur MCP",edit:"Modifier le serveur MCP"},importMode:{form:"Saisie via formulaire",json:"Import JSON"},scope:{label:"Portée",userGlobal:"Utilisateur (global)",projectLocal:"Projet (local)",userDescription:"Portée utilisateur : Disponible dans tous les projets sur votre machine",projectDescription:"Portée locale : Disponible uniquement dans le projet sélectionné",cannotChange:"La portée ne peut pas être modifiée lors de la modification d'un serveur existant"},fields:{serverName:"Nom du serveur",transportType:"Type de transport",command:"Commande",arguments:"Arguments (un par ligne)",jsonConfig:"Configuration JSON",url:"URL",envVars:"Variables d'environnement (CLÉ=valeur, une par ligne)",headers:"En-têtes (CLÉ=valeur, un par ligne)",selectProject:"Sélectionner un projet..."},placeholders:{serverName:"mon-serveur"},validation:{missingType:"Champ requis manquant : type",stdioRequiresCommand:"Le type stdio nécessite un champ command",httpRequiresUrl:"Le type {{type}} nécessite un champ url",invalidJson:"Format JSON invalide",jsonHelp:"Collez la configuration de votre serveur MCP en format JSON. Exemples :",jsonExampleStdio:'• stdio : {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse : {"type":"http","url":"https://api.exemple.com/mcp"}'},configDetails:"Détails de configuration (depuis {{configFile}})",projectPath:"Chemin : {{path}}",actions:{cancel:"Annuler",saving:"Enregistrement...",addServer:"Ajouter le serveur",updateServer:"Mettre à jour le serveur"}},xr={success:"Paramètres enregistrés avec succès !",error:"Échec de l'enregistrement des paramètres",saving:"Enregistrement..."},yr={save:"Enregistrer les paramètres",cancel:"Annuler"},wr={title:"Configuration Git",description:"Configurez votre identité git pour les commits. Ces paramètres seront appliqués globalement via git config --global",name:{label:"Nom Git",help:"Votre nom pour les commits git"},email:{label:"E-mail Git",help:"Votre e-mail pour les commits git"},actions:{save:"Enregistrer la configuration",saving:"Enregistrement..."},status:{success:"Enregistré avec succès"}},Cr={title:"Clés API",description:"Générez des clés API pour accéder à l'API externe depuis d'autres applications.",newKey:{alertTitle:"⚠️ Sauvegardez votre clé API",alertMessage:"C'est la seule fois que vous verrez cette clé. Stockez-la en lieu sûr.",iveSavedIt:"Je l'ai sauvegardée"},form:{placeholder:"Nom de la clé API (ex. : Serveur de production)",createButton:"Créer",cancelButton:"Annuler"},newButton:"Nouvelle clé API",empty:"Aucune clé API créée pour l'instant.",list:{created:"Créée :",lastUsed:"Dernière utilisation :"},confirmDelete:"Êtes-vous sûr de vouloir supprimer cette clé API ?",status:{active:"Active",inactive:"Inactive"},github:{title:"Tokens GitHub",description:"Ajoutez des tokens d'accès personnel GitHub pour cloner des dépôts privés via l'API externe.",descriptionAlt:"Ajoutez des tokens d'accès personnel GitHub pour cloner des dépôts privés. Vous pouvez aussi passer des tokens directement dans les requêtes API sans les stocker.",addButton:"Ajouter un token",form:{namePlaceholder:"Nom du token (ex. : Dépôts personnels)",tokenPlaceholder:"Token d'accès personnel GitHub (ghp_...)",descriptionPlaceholder:"Description (optionnel)",addButton:"Ajouter le token",cancelButton:"Annuler",howToCreate:"Comment créer un token d'accès personnel GitHub →"},empty:"Aucun token GitHub ajouté pour l'instant.",added:"Ajouté :",confirmDelete:"Êtes-vous sûr de vouloir supprimer ce token GitHub ?"},apiDocsLink:"Documentation API",documentation:{title:"Documentation de l'API externe",description:"Apprenez à utiliser l'API externe pour déclencher des sessions Claude/Cursor depuis vos applications.",viewLink:"Voir la documentation API →"},loading:"Chargement...",version:{updateAvailable:"Mise à jour disponible : v{{version}}"}},Sr={checking:"Vérification de l'installation TaskMaster...",notInstalled:{title:"CLI TaskMaster AI non installé",description:"Le CLI TaskMaster est requis pour utiliser les fonctionnalités de gestion des tâches. Installez-le pour commencer :",installCommand:"npm install -g task-master-ai",viewOnGitHub:"Voir sur GitHub",afterInstallation:"Après l'installation :",steps:{restart:"Redémarrez cette application",autoAvailable:"Les fonctionnalités TaskMaster deviendront automatiquement disponibles",initCommand:"Utilisez task-master init dans votre répertoire de projet"}},settings:{enableLabel:"Activer l'intégration TaskMaster",enableDescription:"Afficher les tâches TaskMaster, les bannières et les indicateurs dans la barre latérale"}},Pr={authStatus:{checking:"Vérification...",connected:"Connecté",notConnected:"Non connecté",disconnected:"Déconnecté",checkingAuth:"Vérification du statut d'authentification...",loggedInAs:"Connecté en tant que {{email}}",authenticatedUser:"utilisateur authentifié"},account:{claude:{description:"Assistant IA Claude d'Anthropic"},cursor:{description:"Éditeur de code IA Cursor"},codex:{description:"Assistant IA Codex d'OpenAI"},opencode:{description:"Assistant CLI OpenCode"}},connectionStatus:"Statut de la connexion",login:{title:"Connexion",reAuthenticate:"Se ré-authentifier",description:"Connectez-vous à votre compte {{agent}} pour activer les fonctionnalités IA",reAuthDescription:"Connectez-vous avec un autre compte ou actualisez les identifiants",button:"Se connecter",reLoginButton:"Se reconnecter"},error:"Erreur : {{error}}"},Ar={title:"Paramètres de permission",skipPermissions:{label:"Ignorer les invites de permission (à utiliser avec précaution)",claudeDescription:"Équivalent au flag --dangerously-skip-permissions",cursorDescription:"Équivalent au flag -f dans le CLI Cursor"},allowedTools:{title:"Outils autorisés",description:"Outils automatiquement autorisés sans demande de permission",placeholder:'ex. : "Bash(git log:*)" ou "Write"',quickAdd:"Ajout rapide d'outils courants :",empty:"Aucun outil autorisé configuré"},blockedTools:{title:"Outils bloqués",description:"Outils automatiquement bloqués sans demande de permission",placeholder:'ex. : "Bash(rm:*)"',empty:"Aucun outil bloqué configuré"},allowedCommands:{title:"Commandes shell autorisées",description:"Commandes shell automatiquement autorisées sans demande",placeholder:'ex. : "Shell(ls)" ou "Shell(git status)"',quickAdd:"Ajout rapide de commandes courantes :",empty:"Aucune commande autorisée configurée"},blockedCommands:{title:"Commandes shell bloquées",description:"Commandes shell automatiquement bloquées",placeholder:'ex. : "Shell(rm -rf)" ou "Shell(sudo)"',empty:"Aucune commande bloquée configurée"},toolExamples:{title:"Exemples de motifs d'outils :",bashGitLog:"- Autoriser toutes les commandes git log",bashGitDiff:"- Autoriser toutes les commandes git diff",write:"- Autoriser toutes les utilisations de l'outil Write",bashRm:"- Bloquer toutes les commandes rm (dangereux)"},shellExamples:{title:"Exemples de commandes shell :",ls:"- Autoriser la commande ls",gitStatus:"- Autoriser git status",npmInstall:"- Autoriser npm install",rmRf:"- Bloquer la suppression récursive"},codex:{permissionMode:"Mode de permission",description:"Contrôle comment Codex gère les modifications de fichiers et l'exécution des commandes",modes:{default:{title:"Par défaut",description:"Seules les commandes de confiance (ls, cat, grep, git status, etc.) s'exécutent automatiquement. Les autres sont ignorées. Peut écrire dans l'espace de travail."},acceptEdits:{title:"Accepter les modifications",description:"Toutes les commandes s'exécutent automatiquement dans l'espace de travail. Mode entièrement automatique avec exécution sandboxée."},bypassPermissions:{title:"Contourner les permissions",description:"Accès système complet sans restrictions. Toutes les commandes s'exécutent automatiquement avec accès disque et réseau complet. À utiliser avec précaution."}},technicalDetails:"Détails techniques",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted. Commandes de confiance : cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find (sans -exec), etc.",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never. Toutes les commandes s'exécutent automatiquement dans le répertoire du projet.",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never. Accès système complet, à utiliser uniquement dans des environnements de confiance.",overrideNote:"Vous pouvez remplacer ce mode par session via le bouton de mode dans l'interface de chat."}},actions:{add:"Ajouter"}},jr={title:"Serveurs MCP",description:{claude:"Les serveurs Model Context Protocol fournissent des outils et sources de données supplémentaires à Claude",cursor:"Les serveurs Model Context Protocol fournissent des outils et sources de données supplémentaires à Cursor",codex:"Les serveurs Model Context Protocol fournissent des outils et sources de données supplémentaires à Codex",opencode:"Les serveurs Model Context Protocol fournissent des outils et sources de données supplémentaires à OpenCode"},addButton:"Ajouter un serveur MCP",empty:"Aucun serveur MCP configuré",serverType:"Type",scope:{local:"local",user:"utilisateur"},config:{command:"Commande",url:"URL",args:"Arguments",environment:"Environnement"},tools:{title:"Outils",count:"({{count}}) :",more:"+{{count}} de plus"},actions:{edit:"Modifier le serveur",delete:"Supprimer le serveur"},help:{title:"À propos de Codex MCP",description:"Codex prend en charge les serveurs MCP basés sur stdio. Vous pouvez ajouter des serveurs qui étendent les capacités de Codex avec des outils et ressources supplémentaires."}},Tr={title:"Plugins",description:"Étendez l'interface avec des plugins personnalisés. Installez depuis git ou déposez un dossier dans ~/.claude-code-ui/plugins/",installPlaceholder:"https://github.com/utilisateur/mon-plugin",installButton:"Installer",installing:"Installation…",securityWarning:"N'installez que des plugins dont vous avez examiné le code source ou provenant d'auteurs de confiance.",scanningPlugins:"Analyse des plugins…",noPluginsInstalled:"Aucun plugin installé",pullLatest:"Récupérer la dernière version depuis git",noGitRemote:"Pas de remote git — mise à jour indisponible",uninstallPlugin:"Désinstaller le plugin",confirmUninstall:"Cliquez à nouveau pour confirmer",confirmUninstallMessage:"Supprimer {{name}} ? Cette action est irréversible.",cancel:"Annuler",remove:"Supprimer",updateFailed:"Échec de la mise à jour",installFailed:"Échec de l'installation",uninstallFailed:"Échec de la désinstallation",toggleFailed:"Échec du basculement",starterPluginLabel:"Plugin de démarrage",starter:"Démarrage",docs:"Docs",sections:{officialTitle:"Plugins officiels",officialDescription:"Maintenus par l'équipe WindCli et prêts à être installés directement.",unofficialTitle:"Autres plugins",unofficialDescription:"Plugins non officiels et intégrations d'autres utilisateurs. Examinez le code source avant d'installer."},starterPlugin:{name:"Statistiques du projet",badge:"démarrage",description:"Nombre de fichiers, lignes de code, répartition par type de fichier et activité récente pour votre projet.",install:"Installer"},terminalPlugin:{name:"Terminal",badge:"officiel",description:"Terminal intégré avec accès shell complet directement dans l'interface.",install:"Installer"},scheduledPromptPlugin:{name:"Invites planifiées",badge:"non officiel",description:"Planifiez des invites d'espace de travail, consultez l'historique des exécutions et gérez les tâches locales récurrentes.",install:"Installer"},claudeWatchPlugin:{name:"Claude Watch",badge:"non officiel",description:"Surveillez les sessions Claude Code longues pour détecter les blocages et exposez les contrôles de processus.",install:"Installer"},prismCloudCLI:{name:"PRISM CloudCLI",badge:"non officiel",description:"Intelligence de session pour Claude Code, dans WindCli. Voyez pourquoi vos sessions consomment des tokens sans quitter le navigateur.",install:"Installer"},sessionManagerPlugin:{name:"Sessions",badge:"non officiel",description:"Visualisez, gérez et terminez les sessions Claude Code actives.",install:"Installer"},tokenCostCalculatorPlugin:{name:"Calculateur de coût en tokens",badge:"non officiel",description:"Calculez les coûts API à partir des prix des modèles et de l'utilisation des tokens, avec prise en charge des tarifs préréglés.",install:"Installer"},taskQueuePlugin:{name:"File de tâches",badge:"non officiel",description:"Tableau de bord de file de tâches pour visualiser, filtrer et lancer des tâches d'agent.",install:"Installer"},githubIssuesBoardPlugin:{name:"Tableau des issues GitHub",badge:"non officiel",description:"Tableau Kanban pour les issues GitHub avec synchronisation bidirectionnelle TaskMaster et installation automatique de la compétence CLI /github-task",install:"Installer"},morePlugins:"Plus",enable:"Activer",disable:"Désactiver",installAriaLabel:"URL du dépôt git du plugin",tab:"onglet",runningStatus:"en cours"},Ir={title:lr,tabs:cr,account:dr,mcp:ur,appearance:pr,actions:mr,quickSettings:gr,terminalShortcuts:hr,mainTabs:fr,notifications:br,appearanceSettings:vr,mcpForm:kr,saveStatus:xr,footerActions:yr,git:wr,apiKeys:Cr,tasks:Sr,agents:Pr,permissions:Ar,mcpServers:jr,pluginSettings:Tr},Er={title:"Bon retour",description:"Connectez-vous à votre compte WindCli auto-hébergé",username:"Nom d'utilisateur",password:"Mot de passe",submit:"Se connecter",loading:"Connexion en cours...",errors:{invalidCredentials:"Nom d'utilisateur ou mot de passe incorrect",requiredFields:"Veuillez remplir tous les champs",networkError:"Erreur réseau. Veuillez réessayer."},placeholders:{username:"Entrez votre nom d'utilisateur",password:"Entrez votre mot de passe"}},Mr={title:"Créer un compte",username:"Nom d'utilisateur",password:"Mot de passe",confirmPassword:"Confirmer le mot de passe",submit:"Créer le compte",loading:"Création du compte...",errors:{passwordMismatch:"Les mots de passe ne correspondent pas",usernameTaken:"Ce nom d'utilisateur est déjà pris",weakPassword:"Le mot de passe est trop faible"}},zr={title:"Se déconnecter",confirm:"Êtes-vous sûr de vouloir vous déconnecter ?",button:"Se déconnecter"},Dr={login:Er,register:Mr,logout:zr},Nr={title:"Projets",newProject:"Nouveau projet",deleteProject:"Supprimer le projet",renameProject:"Renommer le projet",noProjects:"Aucun projet trouvé",loadingProjects:"Chargement des projets...",searchPlaceholder:"Rechercher des projets...",projectNamePlaceholder:"Nom du projet",starred:"Favoris",all:"Tous",untitledSession:"Session sans titre",newSession:"Nouvelle session",codexSession:"Session Codex",fetchingProjects:"Récupération de vos projets et sessions Claude",projects:"projets",noMatchingProjects:"Aucun projet correspondant",tryDifferentSearch:"Essayez d'ajuster votre terme de recherche",runClaudeCli:"Exécutez le CLI Claude dans un répertoire de projet pour commencer"},$r={title:"WindCli",subtitle:"Interface d'assistant de codage IA"},Rr={title:"Sessions",newSession:"Nouvelle session",deleteSession:"Supprimer la session",renameSession:"Renommer la session",noSessions:"Aucune session pour l'instant",loadingSessions:"Chargement des sessions...",unnamed:"Sans nom",loading:"Chargement...",showMore:"Afficher plus de sessions"},Lr={viewEnvironments:"Voir les environnements",hideSidebar:"Masquer la barre latérale",createProject:"Créer un nouveau projet",refresh:"Actualiser les projets et sessions (Ctrl+R)",renameProject:"Renommer le projet (F2)",deleteProject:"Retirer le projet de la barre latérale (Suppr)",addToFavorites:"Ajouter aux favoris",removeFromFavorites:"Retirer des favoris",editSessionName:"Modifier manuellement le nom de la session",deleteSession:"Supprimer définitivement cette session",activeSessionIndicator:"Session récemment active (10 dernières minutes)",save:"Enregistrer",cancel:"Annuler",clearSearch:"Effacer la recherche",openCommandPalette:"Ouvrir la palette de commandes",attentionRequiredIndicator:"La session nécessite votre attention"},Fr={chat:"Chat",files:"Fichiers",git:"Git",terminal:"Terminal",tasks:"Tâches"},Br={refresh:"Actualiser",settings:"Paramètres",collapseAll:"Tout réduire",expandAll:"Tout développer",cancel:"Annuler",save:"Enregistrer",delete:"Supprimer",rename:"Renommer",joinCommunity:"Rejoindre la communauté",reportIssue:"Signaler un problème",starOnGithub:"Étoile sur GitHub"},Gr={openSource:"Open Source"},Hr={active:"Actif",inactive:"Inactif",thinking:"Réflexion...",error:"Erreur",aborted:"Annulé",unknown:"Inconnu"},Or={justNow:"À l'instant",oneMinuteAgo:"Il y a 1 min",minutesAgo:"Il y a {{count}} min",oneHourAgo:"Il y a 1 heure",hoursAgo:"Il y a {{count}} heures",oneDayAgo:"Il y a 1 jour",daysAgo:"Il y a {{count}} jours"},Ur={deleteConfirm:"Êtes-vous sûr de vouloir supprimer ceci ?",renameSuccess:"Renommé avec succès",deleteSuccess:"Supprimé avec succès",errorOccurred:"Une erreur s'est produite",deleteSessionConfirm:"Êtes-vous sûr de vouloir supprimer cette session ? Cette action est irréversible.",deleteProjectConfirm:"Retirer ce projet de la barre latérale ? Vos fichiers, mémoires et données de session ne seront pas supprimés.",enterProjectPath:"Veuillez entrer un chemin de projet",deleteSessionFailed:"Échec de la suppression de la session. Veuillez réessayer.",deleteSessionError:"Erreur lors de la suppression de la session. Veuillez réessayer.",renameSessionFailed:"Échec du renommage de la session. Veuillez réessayer.",renameSessionError:"Erreur lors du renommage de la session. Veuillez réessayer.",deleteProjectFailed:"Échec de la suppression du projet. Veuillez réessayer.",deleteProjectError:"Erreur lors de la suppression du projet. Veuillez réessayer.",createProjectFailed:"Échec de la création du projet. Veuillez réessayer.",createProjectError:"Erreur lors de la création du projet. Veuillez réessayer.",updateProjectError:"Erreur lors de la mise à jour du projet. Veuillez réessayer.",refreshError:"Échec de l'actualisation. Veuillez réessayer.",restoreProjectFailed:"Échec de la restauration du projet. Veuillez réessayer.",restoreProjectError:"Erreur lors de la restauration du projet. Veuillez réessayer.",restoreSessionFailed:"Échec de la restauration de la session. Veuillez réessayer.",restoreSessionError:"Erreur lors de la restauration de la session. Veuillez réessayer."},qr={updateAvailable:"Mise à jour disponible",restartRequired:"Mise à jour installée — redémarrez le serveur pour l'appliquer"},Wr={modeProjects:"Projets",modeConversations:"Conversations",conversationsPlaceholder:"Rechercher dans les conversations...",searching:"Recherche en cours...",sessionTitles:"Titres des sessions",conversationContents:"Contenu des conversations",noResults:"Aucun résultat trouvé",tryDifferentQuery:"Essayez une autre requête de recherche",matches_one:"{{count}} résultat",matches_other:"{{count}} résultats",projectsScanned_one:"{{count}} projet analysé",projectsScanned_other:"{{count}} projets analysés"},Vr={deleteProject:"Supprimer le projet",deleteSession:"Supprimer la session",confirmDelete:"Que souhaitez-vous faire avec",sessionCount_one:"Ce projet contient {{count}} conversation.",sessionCount_other:"Ce projet contient {{count}} conversations.",removeFromSidebar:"Retirer de la barre latérale uniquement",deleteAllData:"Supprimer toutes les données définitivement",allConversationsDeleted:"Le projet sera retiré de la barre latérale. Vos fichiers, mémoires et données de session seront conservés.",cannotUndo:"Vous pourrez rajouter le projet ultérieurement."},Kr={projects:Nr,app:$r,sessions:Rr,tooltips:Lr,navigation:Fr,actions:Br,branding:Gr,status:Hr,time:Or,messages:Ur,version:qr,search:Wr,deleteConfirmation:Vr},_r={copy:"Copier",copied:"Copié",copyCode:"Copier le code"},Yr={copy:"Copier le message",copied:"Message copié",selectFormat:"Sélectionner le format de copie",copyAsMarkdown:"Copier en markdown",copyAsText:"Copier en texte brut"},Jr={user:"U",error:"Erreur",tool:"Outil",claude:"Claude",cursor:"Cursor",codex:"Codex",opencode:"OpenCode"},Qr={settings:"Paramètres de l'outil",error:"Erreur de l'outil",result:"Résultat de l'outil",viewParams:"Voir les paramètres d'entrée",viewRawParams:"Voir les paramètres bruts",viewDiff:"Voir les différences pour",creatingFile:"Création du fichier :",updatingTodo:"Mise à jour de la liste de tâches",read:"Lire",readFile:"Lire le fichier",updateTodo:"Mettre à jour la liste de tâches",readTodo:"Lire la liste de tâches",searchResults:"résultats"},Zr={found:"{{count}} {{type}} trouvé(s)",file:"fichier",files:"fichiers",pattern:"motif :",in:"dans :"},Xr={updated:"Fichier mis à jour avec succès",created:"Fichier créé avec succès",written:"Fichier écrit avec succès",diff:"Diff",newFile:"Nouveau fichier",viewContent:"Voir le contenu du fichier",viewFullOutput:"Voir la sortie complète ({{count}} caractères)",contentDisplayed:"Le contenu du fichier est affiché dans la vue diff ci-dessus"},el={title:"Invite interactive",waiting:"En attente de votre réponse dans le CLI",instruction:"Veuillez sélectionner une option dans votre terminal où Claude s'exécute.",selectedOption:"✓ Claude a sélectionné l'option {{number}}",instructionDetail:"Dans le CLI, vous sélectionneriez cette option de manière interactive avec les touches fléchées ou en tapant le numéro."},tl={title:"Réflexion...",emoji:"💭 Réflexion..."},nl={response:"Réponse JSON"},sl={grant:"Autoriser {{tool}}",added:"Permission ajoutée",addTo:"Ajoute {{entry}} aux outils autorisés.",retry:"Permission enregistrée. Relancez la requête pour utiliser l'outil.",error:"Impossible de mettre à jour les permissions. Veuillez réessayer.",openSettings:"Ouvrir les paramètres"},il={updated:"La liste de tâches a été mise à jour avec succès",current:"Liste de tâches actuelle"},al={viewPlan:"📋 Voir le plan d'implémentation",title:"Plan d'implémentation"},ol={resetAt:"Limite d'utilisation Claude atteinte. Votre limite sera réinitialisée à **{{time}} {{timezone}}** - {{date}}"},rl={permissionMode:"Mode de permission",modes:{default:"Mode par défaut",auto:"Mode automatique",acceptEdits:"Accepter les modifications",bypassPermissions:"Contourner les permissions",plan:"Mode planification"},descriptions:{default:"Seules les commandes de confiance (ls, cat, grep, git status, etc.) s'exécutent automatiquement. Les autres commandes sont ignorées. Peut écrire dans l'espace de travail.",auto:"Un classifieur de modèle décide pour chaque appel d'outil d'approuver ou refuser. Mode mains libres, mais plus sûr que le contournement — des refus peuvent toujours se produire.",acceptEdits:"Toutes les commandes s'exécutent automatiquement dans l'espace de travail. Mode entièrement automatique avec exécution sandboxée.",bypassPermissions:"Accès système complet sans restrictions. Toutes les commandes s'exécutent automatiquement avec accès disque et réseau complet. À utiliser avec précaution.",plan:"Mode planification - aucune commande n'est exécutée"},technicalDetails:"Détails techniques"},ll={placeholder:"Tapez / pour les commandes, @ pour les fichiers, ou posez une question à {{provider}}...",placeholderDefault:"Tapez votre message...",disabled:"Saisie désactivée",attachFiles:"Joindre des fichiers",attachImages:"Joindre des images",send:"Envoyer",stop:"Arrêter",hintText:{ctrlEnter:"Ctrl+Entrée pour envoyer • Maj+Entrée pour nouvelle ligne • Tab pour changer de mode • / pour les commandes slash",enter:"Entrée pour envoyer • Maj+Entrée pour nouvelle ligne • Tab pour changer de mode • / pour les commandes slash"},clickToChangeMode:"Cliquez pour changer le mode de permission (ou appuyez sur Tab dans la saisie)",showAllCommands:"Afficher toutes les commandes",clearInput:"Effacer la saisie",scrollToBottom:"Défiler vers le bas"},cl={title:"Choisissez votre assistant IA",description:"Sélectionnez un fournisseur pour démarrer une nouvelle conversation",selectModel:"Sélectionner un modèle",providerInfo:{anthropic:"par Anthropic",openai:"par OpenAI",cursorEditor:"Éditeur de code IA",google:"par Google"},readyPrompt:{claude:"Prêt à utiliser Claude avec {{model}}. Commencez à taper votre message ci-dessous.",cursor:"Prêt à utiliser Cursor avec {{model}}. Commencez à taper votre message ci-dessous.",codex:"Prêt à utiliser Codex avec {{model}}. Commencez à taper votre message ci-dessous.",opencode:"Prêt à utiliser OpenCode avec {{model}}. Commencez à taper votre message ci-dessous.",default:"Sélectionnez un fournisseur ci-dessus pour commencer"},pressToSearch:"Appuyez sur <kbd>{{shortcut}}</kbd> pour rechercher sessions, fichiers et commits"},dl={continue:{title:"Continuer votre conversation",description:"Posez des questions sur votre code, demandez des modifications ou obtenez de l'aide pour vos tâches de développement"},loading:{olderMessages:"Chargement des messages précédents...",sessionMessages:"Chargement des messages de la session..."},messages:{showingOf:"Affichage de {{shown}} sur {{total}} messages",scrollToLoad:"Faites défiler vers le haut pour charger plus",showingLast:"Affichage des {{count}} derniers messages ({{total}} au total)",loadEarlier:"Charger les messages précédents",loadAll:"Charger tous les messages",loadingAll:"Chargement de tous les messages...",allLoaded:"Tous les messages chargés",perfWarning:"Tous les messages chargés — le défilement peut être plus lent. Cliquez sur « Défiler vers le bas » pour rétablir les performances."}},ul={selectProject:{title:"Sélectionner un projet",description:"Choisissez un projet pour ouvrir un shell interactif dans ce répertoire"},status:{newSession:"Nouvelle session",initializing:"Initialisation...",restarting:"Redémarrage..."},actions:{disconnect:"Déconnecter",disconnectTitle:"Se déconnecter du shell",restart:"Redémarrer",restartTitle:"Redémarrer le shell",connect:"Continuer dans le shell",connectTitle:"Se connecter au shell"},loading:"Chargement du terminal...",connecting:"Connexion au shell...",startSession:"Démarrer une nouvelle session Claude",resumeSession:"Reprendre la session : {{displayName}}...",runCommand:"Exécuter {{command}} dans {{projectName}}",startCli:"Démarrage du CLI Claude dans {{projectName}}",defaultCommand:"commande"},pl={actions:{thinking:"Réflexion",processing:"Traitement",analyzing:"Analyse",working:"Travail",computing:"Calcul",reasoning:"Raisonnement"},state:{live:"En direct",paused:"En pause"},elapsed:{seconds:"{{count}}s",minutesSeconds:"{{minutes}}m {{seconds}}s",label:"{{time}} écoulé",startingNow:"Démarrage"},controls:{stopGeneration:"Arrêter la génération",pressEscToStop:"Appuyez sur Échap à tout moment pour arrêter"},providers:{assistant:"Assistant"}},ml={startChatWithProvider:"Sélectionnez un projet pour commencer à chatter avec {{provider}}"},gl={nextTaskPrompt:"Commencer la prochaine tâche"},hl={codeBlock:_r,copyMessage:Yr,messageTypes:Jr,tools:Qr,search:Zr,fileOperations:Xr,interactive:el,thinking:tl,json:nl,permissions:sl,todo:il,plan:al,usageLimit:ol,codex:rl,input:ll,providerSelection:cl,session:dl,shell:ul,claudeStatus:pl,projectSelection:ml,tasks:gl},fl={changes:"modifications",previousChange:"Modification précédente",nextChange:"Modification suivante",hideDiff:"Masquer la mise en évidence des différences",showDiff:"Afficher la mise en évidence des différences",settings:"Paramètres de l'éditeur",collapse:"Réduire l'éditeur",expand:"Étendre l'éditeur en pleine largeur"},bl="Chargement de {{fileName}}...",vl={showingChanges:"Affichage des modifications"},kl={copyPath:"Copier le chemin du fichier",pathCopied:"Chemin du fichier copié",download:"Télécharger le fichier",save:"Enregistrer",saving:"Enregistrement...",saved:"Enregistré !",exitFullscreen:"Quitter le plein écran",fullscreen:"Plein écran",close:"Fermer",previewMarkdown:"Aperçu markdown",editMarkdown:"Modifier le markdown"},xl={lines:"Lignes :",characters:"Caractères :",shortcuts:"Ctrl+S pour enregistrer • Échap pour fermer"},yl={title:"Fichier binaire",message:`Le fichier "{{fileName}}" ne peut pas être affiché dans l'éditeur de texte car c'est un fichier binaire.`},wl={toolbar:fl,loading:bl,header:vl,actions:kl,footer:xl,binaryFile:yl},Cl={title:"TaskMaster AI n'est pas configuré",description:"TaskMaster aide à décomposer des projets complexes en tâches gérables avec une assistance IA",whatIsTitle:"🎯 Qu'est-ce que TaskMaster ?",features:{aiPowered:"Gestion des tâches assistée par IA : Décomposez des projets complexes en sous-tâches gérables",prdTemplates:"Modèles PRD : Générez des tâches à partir de documents d'exigences produit",dependencyTracking:"Suivi des dépendances : Comprenez les relations entre tâches et l'ordre d'exécution",progressVisualization:"Visualisation de l'avancement : Tableaux Kanban et analyses détaillées des tâches",cliIntegration:"Intégration CLI : Utilisez les commandes taskmaster pour des flux de travail avancés"},initializeButton:"Initialiser TaskMaster AI"},Sl={title:"Démarrer avec TaskMaster",subtitle:"TaskMaster est initialisé ! Voici la suite :",steps:{createPRD:{title:"Créer un document d'exigences produit (PRD)",description:"Discutez de votre idée de projet et créez un PRD décrivant ce que vous voulez construire.",addButton:"Ajouter un PRD",existingPRDs:"PRDs existants :"},generateTasks:{title:"Générer des tâches à partir du PRD",description:"Une fois votre PRD prêt, demandez à votre assistant IA de l'analyser et TaskMaster le décomposera automatiquement en tâches gérables avec des détails d'implémentation."},analyzeTasks:{title:"Analyser et développer les tâches",description:"Demandez à votre assistant IA d'analyser la complexité des tâches et de les développer en sous-tâches détaillées pour une implémentation plus facile."},startBuilding:{title:"Commencer à construire",description:"Demandez à votre assistant IA de commencer à travailler sur les tâches, mettre à jour leur statut et ajouter de nouvelles tâches au fur et à mesure."}},tip:"💡 Astuce : Commencez par un PRD pour tirer le meilleur parti de la génération de tâches IA de TaskMaster"},Pl={title:"Configuration TaskMaster",subtitle:"CLI interactif pour {{projectName}}",willStart:"L'initialisation de TaskMaster démarrera automatiquement",completed:"Configuration TaskMaster terminée ! Vous pouvez fermer cette fenêtre.",closeButton:"Fermer",closeContinueButton:"Fermer et continuer"},Al={title:"Démarrer avec TaskMaster",subtitle:"Votre guide pour une gestion productive des tâches",examples:{parsePRD:`💬 Exemple :
|
|
5
|
+
"Please add a new task to implement user profile image uploads using Cloudinary, research the best approach."`},moreExamples:"View more examples and usage patterns →",proTips:{title:"💡 Pro Tips",search:"Use the search bar to quickly find specific tasks",views:"Switch between Kanban, List, and Grid views using the view toggles",filters:"Use filters to focus on specific task statuses or priorities",details:"Click on any task to view detailed information and manage subtasks"},learnMore:{title:"📚 Learn More",description:"TaskMaster AI is an advanced task management system built for developers. Get documentation, examples, and contribute to the project.",githubButton:"View on GitHub"}},Ko={placeholder:"Search tasks..."},_o={button:"Filters",status:"Status",priority:"Priority",sortBy:"Sort By",allStatuses:"All Statuses",allPriorities:"All Priorities",showing:"Showing {{filtered}} of {{total}} tasks",clearFilters:"Clear Filters"},Yo={id:"ID",status:"Status",priority:"Priority",idAsc:"ID (Ascending)",idDesc:"ID (Descending)",titleAsc:"Title (A-Z)",titleDesc:"Title (Z-A)",statusAsc:"Status (Pending First)",statusDesc:"Status (Done First)",priorityAsc:"Priority (High First)",priorityDesc:"Priority (Low First)"},Jo={kanban:"Kanban view",list:"List view",grid:"Grid view"},Qo={pending:"📋 To Do",inProgress:"🚀 In Progress",done:"✅ Done",blocked:"🚫 Blocked",deferred:"⏳ Deferred",cancelled:"❌ Cancelled",noTasksYet:"No tasks yet",tasksWillAppear:"Tasks will appear here",moveTasksHere:"Move tasks here when started",completedTasksHere:"Completed tasks appear here",statusTasksHere:"Tasks with this status will appear here"},Zo={help:"TaskMaster Getting Started Guide",prds:"PRDs",addPRD:"Add PRD",addTask:"Add Task",createNewPRD:"Create New PRD",prdsAvailable:"{{count}} PRD(s) available"},Xo={modified:"Modified: {{date}}"},er={pending:"Pending","in-progress":"In Progress",done:"Done",blocked:"Blocked",deferred:"Deferred",cancelled:"Cancelled"},tr={high:"High",medium:"Medium",low:"Low"},nr={title:"No tasks match your filters",description:"Try adjusting your search or filter criteria."},sr={notConfigured:Uo,gettingStarted:qo,setupModal:Wo,helpGuide:Vo,search:Ko,filters:_o,sort:Yo,views:Jo,kanban:Qo,buttons:Zo,prd:Xo,statuses:er,priorities:tr,noMatchingTasks:nr},ir={save:"Enregistrer",cancel:"Annuler",delete:"Supprimer",create:"Créer",edit:"Modifier",close:"Fermer",confirm:"Confirmer",submit:"Soumettre",retry:"Réessayer",refresh:"Actualiser",search:"Rechercher",clear:"Effacer",copy:"Copier",download:"Télécharger",upload:"Envoyer",browse:"Parcourir"},ar={chat:"Chat",shell:"Terminal",files:"Fichiers",git:"Contrôle de source",tasks:"Tâches",browser:"Navigateur",computer:"Ordinateur"},or={loading:"Chargement...",success:"Succès",error:"Erreur",failed:"Échec",pending:"En attente",completed:"Terminé",inProgress:"En cours"},rr={savedSuccessfully:"Enregistré avec succès",deletedSuccessfully:"Supprimé avec succès",updatedSuccessfully:"Mis à jour avec succès",operationFailed:"Opération échouée",networkError:"Erreur réseau. Vérifiez votre connexion.",unauthorized:"Non autorisé. Veuillez vous connecter.",notFound:"Introuvable",invalidInput:"Entrée invalide",requiredField:"Ce champ est obligatoire",unknownError:"Une erreur inconnue s'est produite"},lr={settings:"Paramètres",home:"Accueil",back:"Retour",next:"Suivant",previous:"Précédent",logout:"Déconnexion"},cr={language:"Langue",theme:"Thème",darkMode:"Mode sombre",lightMode:"Mode clair",name:"Nom",description:"Description",enabled:"Activé",disabled:"Désactivé",optional:"Optionnel",version:"Version",select:"Sélectionner",selectAll:"Tout sélectionner",deselectAll:"Tout désélectionner"},dr={justNow:"À l'instant",minutesAgo:"Il y a {{count}} min",hoursAgo:"Il y a {{count}} h",daysAgo:"Il y a {{count}} j",yesterday:"Hier"},ur={newFile:"Nouveau fichier",newFolder:"Nouveau dossier",rename:"Renommer",move:"Déplacer",copyPath:"Copier le chemin",openInEditor:"Ouvrir dans l'éditeur"},pr={loading:"Chargement de WindCli",settingUpWorkspace:"Préparation de votre espace de travail...",chooseProject:"Choisissez votre projet",selectProjectDescription:"Sélectionnez un projet dans la barre latérale pour commencer à coder avec Claude. Chaque projet contient vos sessions de chat et l'historique des fichiers.",tip:"Astuce",createProjectMobile:"Appuyez sur le bouton menu ci-dessus pour accéder aux projets",createProjectDesktop:"Créez un nouveau projet en cliquant sur l'icône de dossier dans la barre latérale",newSession:"Nouvelle session",untitledSession:"Session sans titre",projectFiles:"Fichiers du projet"},mr={loading:"Chargement des fichiers...",files:"Fichiers",simpleView:"Vue simple",compactView:"Vue compacte",detailedView:"Vue détaillée",searchPlaceholder:"Rechercher fichiers et dossiers...",clearSearch:"Effacer la recherche",name:"Nom",size:"Taille",modified:"Modifié",permissions:"Permissions",noFilesFound:"Aucun fichier trouvé",checkProjectPath:"Vérifiez si le chemin du projet est accessible",noMatchesFound:"Aucun résultat",tryDifferentSearch:"Essayez un autre terme ou effacez la recherche",justNow:"à l'instant",minAgo:"il y a {{count}} min",hoursAgo:"il y a {{count}} h",daysAgo:"il y a {{count}} j",newFile:"Nouveau fichier (Cmd+N)",newFolder:"Nouveau dossier (Cmd+Maj+N)",refresh:"Actualiser",collapseAll:"Tout réduire",context:{rename:"Renommer",delete:"Supprimer",copyPath:"Copier le chemin",download:"Télécharger",newFile:"Nouveau fichier",newFolder:"Nouveau dossier",upload:"Téléverser des fichiers",refresh:"Actualiser",menuLabel:"Menu contextuel du fichier",loading:"Chargement..."}},gr={title:"Créer un nouveau projet",steps:{type:"Type",configure:"Configurer",confirm:"Confirmer"},step1:{question:"Avez-vous déjà un espace de travail, ou souhaitez-vous en créer un nouveau ?",existing:{title:"Espace de travail existant",description:"J'ai déjà un espace de travail sur mon serveur et je veux juste l'ajouter à la liste des projets"},new:{title:"Nouvel espace de travail",description:"Créer un nouvel espace de travail, éventuellement cloné depuis un dépôt GitHub"}},step2:{existingPath:"Chemin de l'espace de travail",newPath:"Chemin de l'espace de travail",existingPlaceholder:"/chemin/vers/espace-de-travail",newPlaceholder:"/chemin/vers/nouvel-espace",existingHelp:"Chemin complet vers votre répertoire d'espace de travail existant",newHelp:"Chemin complet vers votre répertoire d'espace de travail",githubUrl:"URL GitHub (optionnel)",githubPlaceholder:"https://github.com/utilisateur/depot",githubHelp:"Optionnel : fournissez une URL GitHub pour cloner un dépôt",githubAuth:"Authentification GitHub (optionnel)",githubAuthHelp:"Uniquement requis pour les dépôts privés. Les dépôts publics peuvent être clonés sans authentification.",loadingTokens:"Chargement des tokens enregistrés...",storedToken:"Token enregistré",newToken:"Nouveau token",nonePublic:"Aucun (Public)",selectToken:"Sélectionner un token",selectTokenPlaceholder:"-- Sélectionner un token --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"Ce token sera utilisé uniquement pour cette opération",publicRepoInfo:"Les dépôts publics ne nécessitent pas d'authentification. Vous pouvez ignorer le token pour cloner un dépôt public.",noTokensHelp:"Aucun token enregistré. Vous pouvez en ajouter dans Paramètres → Clés API.",optionalTokenPublic:"Token GitHub (optionnel pour les dépôts publics)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (laisser vide pour les dépôts publics)"},step3:{reviewConfig:"Vérifiez votre configuration",existingWorkspace:"Espace de travail existant",newWorkspace:"Nouvel espace de travail",path:"Chemin :",cloneFrom:"Cloner depuis :",authentication:"Authentification :",usingStoredToken:"Utilisation du token enregistré :",usingProvidedToken:"Utilisation du token fourni",noAuthentication:"Sans authentification",sshKey:"Clé SSH",existingInfo:"L'espace de travail sera ajouté à votre liste de projets et disponible pour les sessions Claude/Cursor.",newWithClone:"Le dépôt sera cloné depuis ce dossier.",newEmpty:"L'espace de travail sera ajouté à votre liste de projets et disponible pour les sessions Claude/Cursor.",cloningRepository:"Clonage du dépôt..."},buttons:{cancel:"Annuler",back:"Retour",next:"Suivant",createProject:"Créer le projet",creating:"Création...",cloning:"Clonage..."},errors:{selectType:"Veuillez indiquer si vous avez un espace de travail existant ou si vous souhaitez en créer un nouveau",providePath:"Veuillez fournir un chemin d'espace de travail",failedToCreate:"Échec de la création de l'espace de travail",failedToCreateFolder:"Échec de la création du dossier"}},hr={genericTool:"un outil",codes:{generic:{info:{title:"Notification"}},permission:{required:{title:"Action requise",body:"{{toolName}} attend votre décision."}},run:{stopped:{title:"Exécution arrêtée",body:"Raison : {{reason}}"},failed:{title:"Exécution échouée"}},agent:{notification:{title:"Notification de l'agent"}}}},fr={title:"Mise à jour disponible",newVersionReady:"Une nouvelle version est prête",currentVersion:"Version actuelle",latestVersion:"Dernière version",whatsNew:"Nouveautés :",viewFullRelease:"Voir les notes de version complètes",updateProgress:"Progression de la mise à jour :",manualUpgrade:"Mise à jour manuelle :",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:"Ou cliquez sur « Mettre à jour maintenant » pour lancer la mise à jour automatiquement.",updateCompleted:"Mise à jour effectuée avec succès !",restartServer:"Veuillez redémarrer le serveur pour appliquer les modifications.",updateFailed:"Échec de la mise à jour",buttons:{close:"Fermer",later:"Plus tard",copyCommand:"Copier la commande",updateNow:"Mettre à jour maintenant",updating:"Mise à jour..."},ariaLabels:{closeModal:"Fermer la fenêtre de mise à jour",showSidebar:"Afficher la barre latérale",settings:"Paramètres",updateAvailable:"Mise à jour disponible",closeSidebar:"Masquer la barre latérale"}},br={buttons:ir,tabs:ar,status:or,messages:rr,navigation:lr,common:cr,time:dr,fileOperations:ur,mainContent:pr,fileTree:mr,projectWizard:gr,notifications:hr,versionUpdate:fr},vr="Paramètres",kr={account:"Compte",permissions:"Permissions",mcpServers:"Serveurs MCP",appearance:"Apparence"},xr={title:"Compte",language:"Langue",languageLabel:"Langue d'affichage",languageDescription:"Choisissez votre langue préférée pour l'interface",username:"Nom d'utilisateur",email:"E-mail",profile:"Profil",changePassword:"Changer le mot de passe"},yr={title:"Serveurs MCP",addServer:"Ajouter un serveur",editServer:"Modifier le serveur",deleteServer:"Supprimer le serveur",serverName:"Nom du serveur",serverType:"Type de serveur",config:"Configuration",testConnection:"Tester la connexion",status:"Statut",connected:"Connecté",disconnected:"Déconnecté",scope:{label:"Portée",user:"Utilisateur",project:"Projet"}},wr={title:"Apparence",theme:"Thème",codeEditor:"Éditeur de code",editorTheme:"Thème de l'éditeur",wordWrap:"Retour à la ligne",showMinimap:"Afficher la minimap",lineNumbers:"Numéros de ligne",fontSize:"Taille de police"},Cr={saveChanges:"Enregistrer les modifications",resetToDefaults:"Rétablir les valeurs par défaut",cancelChanges:"Annuler les modifications"},Sr={title:"Paramètres rapides",sections:{appearance:"Apparence",toolDisplay:"Affichage des outils",inputSettings:"Paramètres de saisie"},darkMode:"Mode sombre",showRawParameters:"Afficher les paramètres bruts",showThinking:"Afficher la réflexion",sendByCtrlEnter:"Envoyer avec Ctrl+Entrée",sendByCtrlEnterDescription:"Lorsqu'activé, appuyer sur Ctrl+Entrée envoie le message au lieu de simplement Entrée. Utile pour les utilisateurs IME pour éviter les envois accidentels.",dragHandle:{dragging:"Glissement en cours",closePanel:"Fermer le panneau de paramètres",openPanel:"Ouvrir le panneau de paramètres",draggingStatus:"Glissement...",toggleAndMove:"Cliquer pour basculer, glisser pour déplacer"}},Pr={title:"Raccourcis terminal",sectionKeys:"Touches",sectionNavigation:"Navigation",escape:"Échap",tab:"Tab",shiftTab:"Maj+Tab",arrowUp:"Flèche haut",arrowDown:"Flèche bas",scrollDown:"Défiler vers le bas",handle:{closePanel:"Fermer le panneau de raccourcis",openPanel:"Ouvrir le panneau de raccourcis"}},Ar={label:"Paramètres",agents:"Agents",appearance:"Apparence",git:"Git",apiTokens:"API & Tokens",tasks:"Tâches",notifications:"Notifications",plugins:"Plugins",about:"À propos"},jr={title:"Notifications",description:"Contrôlez les événements de notification que vous recevez.",webPush:{title:"Notifications push web",enable:"Activer les notifications push",disable:"Désactiver les notifications push",enabled:"Les notifications push sont activées",loading:"Mise à jour...",unsupported:"Les notifications push ne sont pas prises en charge dans ce navigateur.",denied:"Les notifications push sont bloquées. Veuillez les autoriser dans les paramètres de votre navigateur."},sound:{title:"Son",description:"Jouer un court son lorsqu'une exécution de chat se termine.",enabled:"Activé",test:"Tester le son"},events:{title:"Types d'événements",actionRequired:"Action requise",stop:"Exécution arrêtée",error:"Exécution échouée"}},Tr={darkMode:{label:"Mode sombre",description:"Basculer entre les thèmes clair et sombre"},projectSorting:{label:"Tri des projets",description:"Ordre d'affichage des projets dans la barre latérale",alphabetical:"Alphabétique",recentActivity:"Activité récente"},codeEditor:{title:"Éditeur de code",theme:{label:"Thème de l'éditeur",description:"Thème par défaut pour l'éditeur de code"},wordWrap:{label:"Retour à la ligne",description:"Activer le retour à la ligne par défaut dans l'éditeur"},showMinimap:{label:"Afficher la minimap",description:"Afficher une minimap pour une navigation plus facile en vue diff"},lineNumbers:{label:"Afficher les numéros de ligne",description:"Afficher les numéros de ligne dans l'éditeur"},fontSize:{label:"Taille de police",description:"Taille de police de l'éditeur en pixels"}}},Ir={title:{add:"Ajouter un serveur MCP",edit:"Modifier le serveur MCP"},importMode:{form:"Saisie via formulaire",json:"Import JSON"},scope:{label:"Portée",userGlobal:"Utilisateur (global)",projectLocal:"Projet (local)",userDescription:"Portée utilisateur : Disponible dans tous les projets sur votre machine",projectDescription:"Portée locale : Disponible uniquement dans le projet sélectionné",cannotChange:"La portée ne peut pas être modifiée lors de la modification d'un serveur existant"},fields:{serverName:"Nom du serveur",transportType:"Type de transport",command:"Commande",arguments:"Arguments (un par ligne)",jsonConfig:"Configuration JSON",url:"URL",envVars:"Variables d'environnement (CLÉ=valeur, une par ligne)",headers:"En-têtes (CLÉ=valeur, un par ligne)",selectProject:"Sélectionner un projet..."},placeholders:{serverName:"mon-serveur"},validation:{missingType:"Champ requis manquant : type",stdioRequiresCommand:"Le type stdio nécessite un champ command",httpRequiresUrl:"Le type {{type}} nécessite un champ url",invalidJson:"Format JSON invalide",jsonHelp:"Collez la configuration de votre serveur MCP en format JSON. Exemples :",jsonExampleStdio:'• stdio : {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse : {"type":"http","url":"https://api.exemple.com/mcp"}'},configDetails:"Détails de configuration (depuis {{configFile}})",projectPath:"Chemin : {{path}}",actions:{cancel:"Annuler",saving:"Enregistrement...",addServer:"Ajouter le serveur",updateServer:"Mettre à jour le serveur"}},Er={success:"Paramètres enregistrés avec succès !",error:"Échec de l'enregistrement des paramètres",saving:"Enregistrement..."},Mr={save:"Enregistrer les paramètres",cancel:"Annuler"},zr={title:"Configuration Git",description:"Configurez votre identité git pour les commits. Ces paramètres seront appliqués globalement via git config --global",name:{label:"Nom Git",help:"Votre nom pour les commits git"},email:{label:"E-mail Git",help:"Votre e-mail pour les commits git"},actions:{save:"Enregistrer la configuration",saving:"Enregistrement..."},status:{success:"Enregistré avec succès"}},Dr={title:"Clés API",description:"Générez des clés API pour accéder à l'API externe depuis d'autres applications.",newKey:{alertTitle:"⚠️ Sauvegardez votre clé API",alertMessage:"C'est la seule fois que vous verrez cette clé. Stockez-la en lieu sûr.",iveSavedIt:"Je l'ai sauvegardée"},form:{placeholder:"Nom de la clé API (ex. : Serveur de production)",createButton:"Créer",cancelButton:"Annuler"},newButton:"Nouvelle clé API",empty:"Aucune clé API créée pour l'instant.",list:{created:"Créée :",lastUsed:"Dernière utilisation :"},confirmDelete:"Êtes-vous sûr de vouloir supprimer cette clé API ?",status:{active:"Active",inactive:"Inactive"},github:{title:"Tokens GitHub",description:"Ajoutez des tokens d'accès personnel GitHub pour cloner des dépôts privés via l'API externe.",descriptionAlt:"Ajoutez des tokens d'accès personnel GitHub pour cloner des dépôts privés. Vous pouvez aussi passer des tokens directement dans les requêtes API sans les stocker.",addButton:"Ajouter un token",form:{namePlaceholder:"Nom du token (ex. : Dépôts personnels)",tokenPlaceholder:"Token d'accès personnel GitHub (ghp_...)",descriptionPlaceholder:"Description (optionnel)",addButton:"Ajouter le token",cancelButton:"Annuler",howToCreate:"Comment créer un token d'accès personnel GitHub →"},empty:"Aucun token GitHub ajouté pour l'instant.",added:"Ajouté :",confirmDelete:"Êtes-vous sûr de vouloir supprimer ce token GitHub ?"},apiDocsLink:"Documentation API",documentation:{title:"Documentation de l'API externe",description:"Apprenez à utiliser l'API externe pour déclencher des sessions Claude/Cursor depuis vos applications.",viewLink:"Voir la documentation API →"},loading:"Chargement...",version:{updateAvailable:"Mise à jour disponible : v{{version}}"}},Nr={checking:"Vérification de l'installation TaskMaster...",notInstalled:{title:"CLI TaskMaster AI non installé",description:"Le CLI TaskMaster est requis pour utiliser les fonctionnalités de gestion des tâches. Installez-le pour commencer :",installCommand:"npm install -g task-master-ai",viewOnGitHub:"Voir sur GitHub",afterInstallation:"Après l'installation :",steps:{restart:"Redémarrez cette application",autoAvailable:"Les fonctionnalités TaskMaster deviendront automatiquement disponibles",initCommand:"Utilisez task-master init dans votre répertoire de projet"}},settings:{enableLabel:"Activer l'intégration TaskMaster",enableDescription:"Afficher les tâches TaskMaster, les bannières et les indicateurs dans la barre latérale"}},$r={authStatus:{checking:"Vérification...",connected:"Connecté",notConnected:"Non connecté",disconnected:"Déconnecté",checkingAuth:"Vérification du statut d'authentification...",loggedInAs:"Connecté en tant que {{email}}",authenticatedUser:"utilisateur authentifié"},account:{claude:{description:"Assistant IA Claude d'Anthropic"},cursor:{description:"Éditeur de code IA Cursor"},codex:{description:"Assistant IA Codex d'OpenAI"},opencode:{description:"Assistant CLI OpenCode"}},connectionStatus:"Statut de la connexion",login:{title:"Connexion",reAuthenticate:"Se ré-authentifier",description:"Connectez-vous à votre compte {{agent}} pour activer les fonctionnalités IA",reAuthDescription:"Connectez-vous avec un autre compte ou actualisez les identifiants",button:"Se connecter",reLoginButton:"Se reconnecter"},error:"Erreur : {{error}}"},Rr={title:"Paramètres de permission",skipPermissions:{label:"Ignorer les invites de permission (à utiliser avec précaution)",claudeDescription:"Équivalent au flag --dangerously-skip-permissions",cursorDescription:"Équivalent au flag -f dans le CLI Cursor"},allowedTools:{title:"Outils autorisés",description:"Outils automatiquement autorisés sans demande de permission",placeholder:'ex. : "Bash(git log:*)" ou "Write"',quickAdd:"Ajout rapide d'outils courants :",empty:"Aucun outil autorisé configuré"},blockedTools:{title:"Outils bloqués",description:"Outils automatiquement bloqués sans demande de permission",placeholder:'ex. : "Bash(rm:*)"',empty:"Aucun outil bloqué configuré"},allowedCommands:{title:"Commandes shell autorisées",description:"Commandes shell automatiquement autorisées sans demande",placeholder:'ex. : "Shell(ls)" ou "Shell(git status)"',quickAdd:"Ajout rapide de commandes courantes :",empty:"Aucune commande autorisée configurée"},blockedCommands:{title:"Commandes shell bloquées",description:"Commandes shell automatiquement bloquées",placeholder:'ex. : "Shell(rm -rf)" ou "Shell(sudo)"',empty:"Aucune commande bloquée configurée"},toolExamples:{title:"Exemples de motifs d'outils :",bashGitLog:"- Autoriser toutes les commandes git log",bashGitDiff:"- Autoriser toutes les commandes git diff",write:"- Autoriser toutes les utilisations de l'outil Write",bashRm:"- Bloquer toutes les commandes rm (dangereux)"},shellExamples:{title:"Exemples de commandes shell :",ls:"- Autoriser la commande ls",gitStatus:"- Autoriser git status",npmInstall:"- Autoriser npm install",rmRf:"- Bloquer la suppression récursive"},codex:{permissionMode:"Mode de permission",description:"Contrôle comment Codex gère les modifications de fichiers et l'exécution des commandes",modes:{default:{title:"Par défaut",description:"Seules les commandes de confiance (ls, cat, grep, git status, etc.) s'exécutent automatiquement. Les autres sont ignorées. Peut écrire dans l'espace de travail."},acceptEdits:{title:"Accepter les modifications",description:"Toutes les commandes s'exécutent automatiquement dans l'espace de travail. Mode entièrement automatique avec exécution sandboxée."},bypassPermissions:{title:"Contourner les permissions",description:"Accès système complet sans restrictions. Toutes les commandes s'exécutent automatiquement avec accès disque et réseau complet. À utiliser avec précaution."}},technicalDetails:"Détails techniques",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted. Commandes de confiance : cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find (sans -exec), etc.",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never. Toutes les commandes s'exécutent automatiquement dans le répertoire du projet.",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never. Accès système complet, à utiliser uniquement dans des environnements de confiance.",overrideNote:"Vous pouvez remplacer ce mode par session via le bouton de mode dans l'interface de chat."}},actions:{add:"Ajouter"}},Lr={title:"Serveurs MCP",description:{claude:"Les serveurs Model Context Protocol fournissent des outils et sources de données supplémentaires à Claude",cursor:"Les serveurs Model Context Protocol fournissent des outils et sources de données supplémentaires à Cursor",codex:"Les serveurs Model Context Protocol fournissent des outils et sources de données supplémentaires à Codex",opencode:"Les serveurs Model Context Protocol fournissent des outils et sources de données supplémentaires à OpenCode"},addButton:"Ajouter un serveur MCP",empty:"Aucun serveur MCP configuré",serverType:"Type",scope:{local:"local",user:"utilisateur"},config:{command:"Commande",url:"URL",args:"Arguments",environment:"Environnement"},tools:{title:"Outils",count:"({{count}}) :",more:"+{{count}} de plus"},actions:{edit:"Modifier le serveur",delete:"Supprimer le serveur"},help:{title:"À propos de Codex MCP",description:"Codex prend en charge les serveurs MCP basés sur stdio. Vous pouvez ajouter des serveurs qui étendent les capacités de Codex avec des outils et ressources supplémentaires."}},Fr={title:"Plugins",description:"Étendez l'interface avec des plugins personnalisés. Installez depuis git ou déposez un dossier dans ~/.claude-code-ui/plugins/",installPlaceholder:"https://github.com/utilisateur/mon-plugin",installButton:"Installer",installing:"Installation…",securityWarning:"N'installez que des plugins dont vous avez examiné le code source ou provenant d'auteurs de confiance.",scanningPlugins:"Analyse des plugins…",noPluginsInstalled:"Aucun plugin installé",pullLatest:"Récupérer la dernière version depuis git",noGitRemote:"Pas de remote git — mise à jour indisponible",uninstallPlugin:"Désinstaller le plugin",confirmUninstall:"Cliquez à nouveau pour confirmer",confirmUninstallMessage:"Supprimer {{name}} ? Cette action est irréversible.",cancel:"Annuler",remove:"Supprimer",updateFailed:"Échec de la mise à jour",installFailed:"Échec de l'installation",uninstallFailed:"Échec de la désinstallation",toggleFailed:"Échec du basculement",starterPluginLabel:"Plugin de démarrage",starter:"Démarrage",docs:"Docs",sections:{officialTitle:"Plugins officiels",officialDescription:"Maintenus par l'équipe WindCli et prêts à être installés directement.",unofficialTitle:"Autres plugins",unofficialDescription:"Plugins non officiels et intégrations d'autres utilisateurs. Examinez le code source avant d'installer."},starterPlugin:{name:"Statistiques du projet",badge:"démarrage",description:"Nombre de fichiers, lignes de code, répartition par type de fichier et activité récente pour votre projet.",install:"Installer"},terminalPlugin:{name:"Terminal",badge:"officiel",description:"Terminal intégré avec accès shell complet directement dans l'interface.",install:"Installer"},scheduledPromptPlugin:{name:"Invites planifiées",badge:"non officiel",description:"Planifiez des invites d'espace de travail, consultez l'historique des exécutions et gérez les tâches locales récurrentes.",install:"Installer"},claudeWatchPlugin:{name:"Claude Watch",badge:"non officiel",description:"Surveillez les sessions Claude Code longues pour détecter les blocages et exposez les contrôles de processus.",install:"Installer"},prismCloudCLI:{name:"PRISM CloudCLI",badge:"non officiel",description:"Intelligence de session pour Claude Code, dans WindCli. Voyez pourquoi vos sessions consomment des tokens sans quitter le navigateur.",install:"Installer"},sessionManagerPlugin:{name:"Sessions",badge:"non officiel",description:"Visualisez, gérez et terminez les sessions Claude Code actives.",install:"Installer"},tokenCostCalculatorPlugin:{name:"Calculateur de coût en tokens",badge:"non officiel",description:"Calculez les coûts API à partir des prix des modèles et de l'utilisation des tokens, avec prise en charge des tarifs préréglés.",install:"Installer"},taskQueuePlugin:{name:"File de tâches",badge:"non officiel",description:"Tableau de bord de file de tâches pour visualiser, filtrer et lancer des tâches d'agent.",install:"Installer"},githubIssuesBoardPlugin:{name:"Tableau des issues GitHub",badge:"non officiel",description:"Tableau Kanban pour les issues GitHub avec synchronisation bidirectionnelle TaskMaster et installation automatique de la compétence CLI /github-task",install:"Installer"},morePlugins:"Plus",enable:"Activer",disable:"Désactiver",installAriaLabel:"URL du dépôt git du plugin",tab:"onglet",runningStatus:"en cours"},Br={title:vr,tabs:kr,account:xr,mcp:yr,appearance:wr,actions:Cr,quickSettings:Sr,terminalShortcuts:Pr,mainTabs:Ar,notifications:jr,appearanceSettings:Tr,mcpForm:Ir,saveStatus:Er,footerActions:Mr,git:zr,apiKeys:Dr,tasks:Nr,agents:$r,permissions:Rr,mcpServers:Lr,pluginSettings:Fr},Gr={title:"Bon retour",description:"Connectez-vous à votre compte WindCli auto-hébergé",username:"Nom d'utilisateur",password:"Mot de passe",submit:"Se connecter",loading:"Connexion en cours...",errors:{invalidCredentials:"Nom d'utilisateur ou mot de passe incorrect",requiredFields:"Veuillez remplir tous les champs",networkError:"Erreur réseau. Veuillez réessayer."},placeholders:{username:"Entrez votre nom d'utilisateur",password:"Entrez votre mot de passe"}},Hr={title:"Créer un compte",username:"Nom d'utilisateur",password:"Mot de passe",confirmPassword:"Confirmer le mot de passe",submit:"Créer le compte",loading:"Création du compte...",errors:{passwordMismatch:"Les mots de passe ne correspondent pas",usernameTaken:"Ce nom d'utilisateur est déjà pris",weakPassword:"Le mot de passe est trop faible"}},Or={title:"Se déconnecter",confirm:"Êtes-vous sûr de vouloir vous déconnecter ?",button:"Se déconnecter"},Ur={login:Gr,register:Hr,logout:Or},qr={title:"Projets",newProject:"Nouveau projet",deleteProject:"Supprimer le projet",renameProject:"Renommer le projet",noProjects:"Aucun projet trouvé",loadingProjects:"Chargement des projets...",searchPlaceholder:"Rechercher des projets...",projectNamePlaceholder:"Nom du projet",starred:"Favoris",all:"Tous",untitledSession:"Session sans titre",newSession:"Nouvelle session",codexSession:"Session Codex",fetchingProjects:"Récupération de vos projets et sessions Claude",projects:"projets",noMatchingProjects:"Aucun projet correspondant",tryDifferentSearch:"Essayez d'ajuster votre terme de recherche",runClaudeCli:"Exécutez le CLI Claude dans un répertoire de projet pour commencer"},Wr={title:"WindCli",subtitle:"Interface d'assistant de codage IA"},Vr={title:"Sessions",newSession:"Nouvelle session",deleteSession:"Supprimer la session",renameSession:"Renommer la session",noSessions:"Aucune session pour l'instant",loadingSessions:"Chargement des sessions...",unnamed:"Sans nom",loading:"Chargement...",showMore:"Afficher plus de sessions"},Kr={viewEnvironments:"Voir les environnements",hideSidebar:"Masquer la barre latérale",createProject:"Créer un nouveau projet",refresh:"Actualiser les projets et sessions (Ctrl+R)",renameProject:"Renommer le projet (F2)",deleteProject:"Retirer le projet de la barre latérale (Suppr)",addToFavorites:"Ajouter aux favoris",removeFromFavorites:"Retirer des favoris",editSessionName:"Modifier manuellement le nom de la session",deleteSession:"Supprimer définitivement cette session",activeSessionIndicator:"Session récemment active (10 dernières minutes)",save:"Enregistrer",cancel:"Annuler",clearSearch:"Effacer la recherche",openCommandPalette:"Ouvrir la palette de commandes",attentionRequiredIndicator:"La session nécessite votre attention"},_r={chat:"Chat",files:"Fichiers",git:"Git",terminal:"Terminal",tasks:"Tâches"},Yr={refresh:"Actualiser",settings:"Paramètres",collapseAll:"Tout réduire",expandAll:"Tout développer",cancel:"Annuler",save:"Enregistrer",delete:"Supprimer",rename:"Renommer",joinCommunity:"Rejoindre la communauté",reportIssue:"Signaler un problème",starOnGithub:"Étoile sur GitHub"},Jr={openSource:"Open Source"},Qr={active:"Actif",inactive:"Inactif",thinking:"Réflexion...",error:"Erreur",aborted:"Annulé",unknown:"Inconnu"},Zr={justNow:"À l'instant",oneMinuteAgo:"Il y a 1 min",minutesAgo:"Il y a {{count}} min",oneHourAgo:"Il y a 1 heure",hoursAgo:"Il y a {{count}} heures",oneDayAgo:"Il y a 1 jour",daysAgo:"Il y a {{count}} jours"},Xr={deleteConfirm:"Êtes-vous sûr de vouloir supprimer ceci ?",renameSuccess:"Renommé avec succès",deleteSuccess:"Supprimé avec succès",errorOccurred:"Une erreur s'est produite",deleteSessionConfirm:"Êtes-vous sûr de vouloir supprimer cette session ? Cette action est irréversible.",deleteProjectConfirm:"Retirer ce projet de la barre latérale ? Vos fichiers, mémoires et données de session ne seront pas supprimés.",enterProjectPath:"Veuillez entrer un chemin de projet",deleteSessionFailed:"Échec de la suppression de la session. Veuillez réessayer.",deleteSessionError:"Erreur lors de la suppression de la session. Veuillez réessayer.",renameSessionFailed:"Échec du renommage de la session. Veuillez réessayer.",renameSessionError:"Erreur lors du renommage de la session. Veuillez réessayer.",deleteProjectFailed:"Échec de la suppression du projet. Veuillez réessayer.",deleteProjectError:"Erreur lors de la suppression du projet. Veuillez réessayer.",createProjectFailed:"Échec de la création du projet. Veuillez réessayer.",createProjectError:"Erreur lors de la création du projet. Veuillez réessayer.",updateProjectError:"Erreur lors de la mise à jour du projet. Veuillez réessayer.",refreshError:"Échec de l'actualisation. Veuillez réessayer.",restoreProjectFailed:"Échec de la restauration du projet. Veuillez réessayer.",restoreProjectError:"Erreur lors de la restauration du projet. Veuillez réessayer.",restoreSessionFailed:"Échec de la restauration de la session. Veuillez réessayer.",restoreSessionError:"Erreur lors de la restauration de la session. Veuillez réessayer."},el={updateAvailable:"Mise à jour disponible",restartRequired:"Mise à jour installée — redémarrez le serveur pour l'appliquer"},tl={modeProjects:"Projets",modeConversations:"Conversations",conversationsPlaceholder:"Rechercher dans les conversations...",searching:"Recherche en cours...",sessionTitles:"Titres des sessions",conversationContents:"Contenu des conversations",noResults:"Aucun résultat trouvé",tryDifferentQuery:"Essayez une autre requête de recherche",matches_one:"{{count}} résultat",matches_other:"{{count}} résultats",projectsScanned_one:"{{count}} projet analysé",projectsScanned_other:"{{count}} projets analysés"},nl={deleteProject:"Supprimer le projet",deleteSession:"Supprimer la session",confirmDelete:"Que souhaitez-vous faire avec",sessionCount_one:"Ce projet contient {{count}} conversation.",sessionCount_other:"Ce projet contient {{count}} conversations.",removeFromSidebar:"Retirer de la barre latérale uniquement",deleteAllData:"Supprimer toutes les données définitivement",allConversationsDeleted:"Le projet sera retiré de la barre latérale. Vos fichiers, mémoires et données de session seront conservés.",cannotUndo:"Vous pourrez rajouter le projet ultérieurement."},sl={projects:qr,app:Wr,sessions:Vr,tooltips:Kr,navigation:_r,actions:Yr,branding:Jr,status:Qr,time:Zr,messages:Xr,version:el,search:tl,deleteConfirmation:nl},il={copy:"Copier",copied:"Copié",copyCode:"Copier le code"},al={copy:"Copier le message",copied:"Message copié",selectFormat:"Sélectionner le format de copie",copyAsMarkdown:"Copier en markdown",copyAsText:"Copier en texte brut"},ol={user:"U",error:"Erreur",tool:"Outil",claude:"Claude",cursor:"Cursor",codex:"Codex",opencode:"OpenCode"},rl={settings:"Paramètres de l'outil",error:"Erreur de l'outil",result:"Résultat de l'outil",viewParams:"Voir les paramètres d'entrée",viewRawParams:"Voir les paramètres bruts",viewDiff:"Voir les différences pour",creatingFile:"Création du fichier :",updatingTodo:"Mise à jour de la liste de tâches",read:"Lire",readFile:"Lire le fichier",updateTodo:"Mettre à jour la liste de tâches",readTodo:"Lire la liste de tâches",searchResults:"résultats"},ll={found:"{{count}} {{type}} trouvé(s)",file:"fichier",files:"fichiers",pattern:"motif :",in:"dans :"},cl={updated:"Fichier mis à jour avec succès",created:"Fichier créé avec succès",written:"Fichier écrit avec succès",diff:"Diff",newFile:"Nouveau fichier",viewContent:"Voir le contenu du fichier",viewFullOutput:"Voir la sortie complète ({{count}} caractères)",contentDisplayed:"Le contenu du fichier est affiché dans la vue diff ci-dessus"},dl={title:"Invite interactive",waiting:"En attente de votre réponse dans le CLI",instruction:"Veuillez sélectionner une option dans votre terminal où Claude s'exécute.",selectedOption:"✓ Claude a sélectionné l'option {{number}}",instructionDetail:"Dans le CLI, vous sélectionneriez cette option de manière interactive avec les touches fléchées ou en tapant le numéro."},ul={title:"Réflexion...",emoji:"💭 Réflexion..."},pl={response:"Réponse JSON"},ml={grant:"Autoriser {{tool}}",added:"Permission ajoutée",addTo:"Ajoute {{entry}} aux outils autorisés.",retry:"Permission enregistrée. Relancez la requête pour utiliser l'outil.",error:"Impossible de mettre à jour les permissions. Veuillez réessayer.",openSettings:"Ouvrir les paramètres"},gl={updated:"La liste de tâches a été mise à jour avec succès",current:"Liste de tâches actuelle"},hl={viewPlan:"📋 Voir le plan d'implémentation",title:"Plan d'implémentation"},fl={resetAt:"Limite d'utilisation Claude atteinte. Votre limite sera réinitialisée à **{{time}} {{timezone}}** - {{date}}"},bl={permissionMode:"Mode de permission",modes:{default:"Mode par défaut",auto:"Mode automatique",acceptEdits:"Accepter les modifications",bypassPermissions:"Contourner les permissions",plan:"Mode planification"},descriptions:{default:"Seules les commandes de confiance (ls, cat, grep, git status, etc.) s'exécutent automatiquement. Les autres commandes sont ignorées. Peut écrire dans l'espace de travail.",auto:"Un classifieur de modèle décide pour chaque appel d'outil d'approuver ou refuser. Mode mains libres, mais plus sûr que le contournement — des refus peuvent toujours se produire.",acceptEdits:"Toutes les commandes s'exécutent automatiquement dans l'espace de travail. Mode entièrement automatique avec exécution sandboxée.",bypassPermissions:"Accès système complet sans restrictions. Toutes les commandes s'exécutent automatiquement avec accès disque et réseau complet. À utiliser avec précaution.",plan:"Mode planification - aucune commande n'est exécutée"},technicalDetails:"Détails techniques"},vl={placeholder:"Tapez / pour les commandes, @ pour les fichiers, ou posez une question à {{provider}}...",placeholderDefault:"Tapez votre message...",disabled:"Saisie désactivée",attachFiles:"Joindre des fichiers",attachImages:"Joindre des images",send:"Envoyer",stop:"Arrêter",hintText:{ctrlEnter:"Ctrl+Entrée pour envoyer • Maj+Entrée pour nouvelle ligne • Tab pour changer de mode • / pour les commandes slash",enter:"Entrée pour envoyer • Maj+Entrée pour nouvelle ligne • Tab pour changer de mode • / pour les commandes slash"},clickToChangeMode:"Cliquez pour changer le mode de permission (ou appuyez sur Tab dans la saisie)",showAllCommands:"Afficher toutes les commandes",clearInput:"Effacer la saisie",scrollToBottom:"Défiler vers le bas"},kl={title:"Choisissez votre assistant IA",description:"Sélectionnez un fournisseur pour démarrer une nouvelle conversation",selectModel:"Sélectionner un modèle",providerInfo:{anthropic:"par Anthropic",openai:"par OpenAI",cursorEditor:"Éditeur de code IA",google:"par Google"},readyPrompt:{claude:"Prêt à utiliser Claude avec {{model}}. Commencez à taper votre message ci-dessous.",cursor:"Prêt à utiliser Cursor avec {{model}}. Commencez à taper votre message ci-dessous.",codex:"Prêt à utiliser Codex avec {{model}}. Commencez à taper votre message ci-dessous.",opencode:"Prêt à utiliser OpenCode avec {{model}}. Commencez à taper votre message ci-dessous.",default:"Sélectionnez un fournisseur ci-dessus pour commencer"},pressToSearch:"Appuyez sur <kbd>{{shortcut}}</kbd> pour rechercher sessions, fichiers et commits"},xl={continue:{title:"Continuer votre conversation",description:"Posez des questions sur votre code, demandez des modifications ou obtenez de l'aide pour vos tâches de développement"},loading:{olderMessages:"Chargement des messages précédents...",sessionMessages:"Chargement des messages de la session..."},messages:{showingOf:"Affichage de {{shown}} sur {{total}} messages",scrollToLoad:"Faites défiler vers le haut pour charger plus",showingLast:"Affichage des {{count}} derniers messages ({{total}} au total)",loadEarlier:"Charger les messages précédents",loadAll:"Charger tous les messages",loadingAll:"Chargement de tous les messages...",allLoaded:"Tous les messages chargés",perfWarning:"Tous les messages chargés — le défilement peut être plus lent. Cliquez sur « Défiler vers le bas » pour rétablir les performances."}},yl={selectProject:{title:"Sélectionner un projet",description:"Choisissez un projet pour ouvrir un shell interactif dans ce répertoire"},status:{newSession:"Nouvelle session",initializing:"Initialisation...",restarting:"Redémarrage..."},actions:{disconnect:"Déconnecter",disconnectTitle:"Se déconnecter du shell",restart:"Redémarrer",restartTitle:"Redémarrer le shell",connect:"Continuer dans le shell",connectTitle:"Se connecter au shell"},loading:"Chargement du terminal...",connecting:"Connexion au shell...",startSession:"Démarrer une nouvelle session Claude",resumeSession:"Reprendre la session : {{displayName}}...",runCommand:"Exécuter {{command}} dans {{projectName}}",startCli:"Démarrage du CLI Claude dans {{projectName}}",defaultCommand:"commande"},wl={actions:{thinking:"Réflexion",processing:"Traitement",analyzing:"Analyse",working:"Travail",computing:"Calcul",reasoning:"Raisonnement"},state:{live:"En direct",paused:"En pause"},elapsed:{seconds:"{{count}}s",minutesSeconds:"{{minutes}}m {{seconds}}s",label:"{{time}} écoulé",startingNow:"Démarrage"},controls:{stopGeneration:"Arrêter la génération",pressEscToStop:"Appuyez sur Échap à tout moment pour arrêter"},providers:{assistant:"Assistant"}},Cl={startChatWithProvider:"Sélectionnez un projet pour commencer à chatter avec {{provider}}"},Sl={nextTaskPrompt:"Commencer la prochaine tâche"},Pl={codeBlock:il,copyMessage:al,messageTypes:ol,tools:rl,search:ll,fileOperations:cl,interactive:dl,thinking:ul,json:pl,permissions:ml,todo:gl,plan:hl,usageLimit:fl,codex:bl,input:vl,providerSelection:kl,session:xl,shell:yl,claudeStatus:wl,projectSelection:Cl,tasks:Sl},Al={changes:"modifications",previousChange:"Modification précédente",nextChange:"Modification suivante",hideDiff:"Masquer la mise en évidence des différences",showDiff:"Afficher la mise en évidence des différences",settings:"Paramètres de l'éditeur",collapse:"Réduire l'éditeur",expand:"Étendre l'éditeur en pleine largeur"},jl="Chargement de {{fileName}}...",Tl={showingChanges:"Affichage des modifications"},Il={copyPath:"Copier le chemin du fichier",pathCopied:"Chemin du fichier copié",download:"Télécharger le fichier",save:"Enregistrer",saving:"Enregistrement...",saved:"Enregistré !",exitFullscreen:"Quitter le plein écran",fullscreen:"Plein écran",close:"Fermer",previewMarkdown:"Aperçu markdown",editMarkdown:"Modifier le markdown"},El={lines:"Lignes :",characters:"Caractères :",shortcuts:"Ctrl+S pour enregistrer • Échap pour fermer"},Ml={title:"Fichier binaire",message:`Le fichier "{{fileName}}" ne peut pas être affiché dans l'éditeur de texte car c'est un fichier binaire.`},zl={toolbar:Al,loading:jl,header:Tl,actions:Il,footer:El,binaryFile:Ml},Dl={title:"TaskMaster AI n'est pas configuré",description:"TaskMaster aide à décomposer des projets complexes en tâches gérables avec une assistance IA",whatIsTitle:"🎯 Qu'est-ce que TaskMaster ?",features:{aiPowered:"Gestion des tâches assistée par IA : Décomposez des projets complexes en sous-tâches gérables",prdTemplates:"Modèles PRD : Générez des tâches à partir de documents d'exigences produit",dependencyTracking:"Suivi des dépendances : Comprenez les relations entre tâches et l'ordre d'exécution",progressVisualization:"Visualisation de l'avancement : Tableaux Kanban et analyses détaillées des tâches",cliIntegration:"Intégration CLI : Utilisez les commandes taskmaster pour des flux de travail avancés"},initializeButton:"Initialiser TaskMaster AI"},Nl={title:"Démarrer avec TaskMaster",subtitle:"TaskMaster est initialisé ! Voici la suite :",steps:{createPRD:{title:"Créer un document d'exigences produit (PRD)",description:"Discutez de votre idée de projet et créez un PRD décrivant ce que vous voulez construire.",addButton:"Ajouter un PRD",existingPRDs:"PRDs existants :"},generateTasks:{title:"Générer des tâches à partir du PRD",description:"Une fois votre PRD prêt, demandez à votre assistant IA de l'analyser et TaskMaster le décomposera automatiquement en tâches gérables avec des détails d'implémentation."},analyzeTasks:{title:"Analyser et développer les tâches",description:"Demandez à votre assistant IA d'analyser la complexité des tâches et de les développer en sous-tâches détaillées pour une implémentation plus facile."},startBuilding:{title:"Commencer à construire",description:"Demandez à votre assistant IA de commencer à travailler sur les tâches, mettre à jour leur statut et ajouter de nouvelles tâches au fur et à mesure."}},tip:"💡 Astuce : Commencez par un PRD pour tirer le meilleur parti de la génération de tâches IA de TaskMaster"},$l={title:"Configuration TaskMaster",subtitle:"CLI interactif pour {{projectName}}",willStart:"L'initialisation de TaskMaster démarrera automatiquement",completed:"Configuration TaskMaster terminée ! Vous pouvez fermer cette fenêtre.",closeButton:"Fermer",closeContinueButton:"Fermer et continuer"},Rl={title:"Démarrer avec TaskMaster",subtitle:"Votre guide pour une gestion productive des tâches",examples:{parsePRD:`💬 Exemple :
|
|
6
6
|
« Je viens d'initialiser un nouveau projet avec Claude Task Master. J'ai un PRD dans .taskmaster/docs/prd.txt. Pouvez-vous m'aider à l'analyser et configurer les tâches initiales ? »`,expandTask:`💬 Exemple :
|
|
7
7
|
« La tâche 5 semble complexe. Pouvez-vous la décomposer en sous-tâches ? »`,addTask:`💬 Exemple :
|
|
8
|
-
« Veuillez ajouter une nouvelle tâche pour implémenter le téléchargement d'images de profil utilisateur avec Cloudinary, recherchez la meilleure approche. »`},moreExamples:"Voir plus d'exemples et de patterns d'utilisation →",proTips:{title:"💡 Conseils pro",search:"Utilisez la barre de recherche pour trouver rapidement des tâches spécifiques",views:"Basculez entre les vues Kanban, Liste et Grille via les boutons de vue",filters:"Utilisez les filtres pour vous concentrer sur des statuts ou priorités de tâches spécifiques",details:"Cliquez sur une tâche pour voir les détails et gérer les sous-tâches"},learnMore:{title:"📚 En savoir plus",description:"TaskMaster AI est un système avancé de gestion des tâches conçu pour les développeurs. Documentation, exemples et contributions au projet.",githubButton:"Voir sur GitHub"}},jl={placeholder:"Rechercher des tâches..."},Tl={button:"Filtres",status:"Statut",priority:"Priorité",sortBy:"Trier par",allStatuses:"Tous les statuts",allPriorities:"Toutes les priorités",showing:"Affichage de {{filtered}} sur {{total}} tâches",clearFilters:"Effacer les filtres"},Il={id:"ID",status:"Statut",priority:"Priorité",idAsc:"ID (croissant)",idDesc:"ID (décroissant)",titleAsc:"Titre (A-Z)",titleDesc:"Titre (Z-A)",statusAsc:"Statut (en attente en premier)",statusDesc:"Statut (terminé en premier)",priorityAsc:"Priorité (haute en premier)",priorityDesc:"Priorité (basse en premier)"},El={kanban:"Vue Kanban",list:"Vue liste",grid:"Vue grille"},Ml={pending:"📋 À faire",inProgress:"🚀 En cours",done:"✅ Terminé",blocked:"🚫 Bloqué",deferred:"⏳ Différé",cancelled:"❌ Annulé",noTasksYet:"Aucune tâche pour l'instant",tasksWillAppear:"Les tâches apparaîtront ici",moveTasksHere:"Déplacez les tâches ici au démarrage",completedTasksHere:"Les tâches terminées apparaissent ici",statusTasksHere:"Les tâches avec ce statut apparaîtront ici"},zl={help:"Guide de démarrage TaskMaster",prds:"PRDs",addPRD:"Ajouter un PRD",addTask:"Ajouter une tâche",createNewPRD:"Créer un nouveau PRD",prdsAvailable:"{{count}} PRD(s) disponible(s)"},Dl={modified:"Modifié : {{date}}"},Nl={pending:"En attente","in-progress":"En cours",done:"Terminé",blocked:"Bloqué",deferred:"Différé",cancelled:"Annulé"},$l={high:"Haute",medium:"Moyenne",low:"Basse"},Rl={title:"Aucune tâche ne correspond à vos filtres",description:"Essayez d'ajuster votre recherche ou vos critères de filtre."},Ll={notConfigured:Cl,gettingStarted:Sl,setupModal:Pl,helpGuide:Al,search:jl,filters:Tl,sort:Il,views:El,kanban:Ml,buttons:zl,prd:Dl,statuses:Nl,priorities:$l,noMatchingTasks:Rl},Fl={save:"Guardar",cancel:"Cancelar",delete:"Eliminar",create:"Crear",edit:"Editar",close:"Cerrar",confirm:"Confirmar",submit:"Enviar",retry:"Reintentar",refresh:"Actualizar",search:"Buscar",clear:"Limpiar",copy:"Copiar",download:"Descargar",upload:"Subir",browse:"Explorar"},Bl={chat:"Chat",shell:"Shell",files:"Archivos",git:"Control de versiones",tasks:"Tareas",browser:"Navegador",computer:"Equipo"},Gl={loading:"Cargando...",success:"Éxito",error:"Error",failed:"Falló",pending:"Pendiente",completed:"Completado",inProgress:"En curso"},Hl={savedSuccessfully:"Guardado correctamente",deletedSuccessfully:"Eliminado correctamente",updatedSuccessfully:"Actualizado correctamente",operationFailed:"La operación falló",networkError:"Error de red. Comprueba tu conexión.",unauthorized:"No autorizado. Inicia sesión.",notFound:"No encontrado",invalidInput:"Entrada no válida",requiredField:"Este campo es obligatorio",unknownError:"Ocurrió un error desconocido"},Ol={settings:"Ajustes",home:"Inicio",back:"Atrás",next:"Siguiente",previous:"Anterior",logout:"Cerrar sesión"},Ul={language:"Idioma",theme:"Tema",darkMode:"Modo oscuro",lightMode:"Modo claro",name:"Nombre",description:"Descripción",enabled:"Activado",disabled:"Desactivado",optional:"Opcional",version:"Versión",select:"Seleccionar",selectAll:"Seleccionar todo",deselectAll:"Deseleccionar todo"},ql={justNow:"Justo ahora",minutesAgo:"hace {{count}} min",hoursAgo:"hace {{count}} horas",daysAgo:"hace {{count}} días",yesterday:"Ayer"},Wl={newFile:"Archivo nuevo",newFolder:"Carpeta nueva",rename:"Renombrar",move:"Mover",copyPath:"Copiar ruta",openInEditor:"Abrir en el editor"},Vl={loading:"Cargando WindCli",settingUpWorkspace:"Preparando tu espacio de trabajo...",chooseProject:"Elige tu proyecto",selectProjectDescription:"Selecciona un proyecto en la barra lateral para empezar a programar con Claude. Cada proyecto contiene tus sesiones de chat e historial de archivos.",tip:"Consejo",createProjectMobile:"Toca el botón de menú de arriba para acceder a los proyectos",createProjectDesktop:"Crea un proyecto nuevo haciendo clic en el icono de carpeta de la barra lateral",newSession:"Nueva sesión",untitledSession:"Sesión sin título",projectFiles:"Archivos del proyecto"},Kl={loading:"Cargando archivos...",files:"Archivos",simpleView:"Vista simple",compactView:"Vista compacta",detailedView:"Vista detallada",searchPlaceholder:"Buscar archivos y carpetas...",clearSearch:"Limpiar búsqueda",name:"Nombre",size:"Tamaño",modified:"Modificado",permissions:"Permisos",noFilesFound:"No se encontraron archivos",checkProjectPath:"Comprueba si la ruta del proyecto es accesible",noMatchesFound:"No se encontraron coincidencias",tryDifferentSearch:"Prueba con otro término o limpia la búsqueda",justNow:"justo ahora",minAgo:"hace {{count}} min",hoursAgo:"hace {{count}} horas",daysAgo:"hace {{count}} días",newFile:"Archivo nuevo (Cmd+N)",newFolder:"Carpeta nueva (Cmd+Shift+N)",refresh:"Actualizar",collapseAll:"Contraer todo",context:{rename:"Renombrar",delete:"Eliminar",copyPath:"Copiar ruta",download:"Descargar",newFile:"Archivo nuevo",newFolder:"Carpeta nueva",upload:"Subir archivos",refresh:"Actualizar",menuLabel:"Menú contextual de archivo",loading:"Cargando..."}},_l={title:"Crear proyecto nuevo",steps:{type:"Tipo",configure:"Configurar",confirm:"Confirmar"},step1:{question:"¿Ya tienes un espacio de trabajo o quieres crear uno nuevo?",existing:{title:"Espacio de trabajo existente",description:"Ya tengo un espacio de trabajo en mi servidor y solo necesito añadirlo a la lista de proyectos"},new:{title:"Espacio de trabajo nuevo",description:"Crea un espacio de trabajo nuevo, opcionalmente clonando un repositorio de GitHub"}},step2:{existingPath:"Ruta del espacio de trabajo",newPath:"Ruta del espacio de trabajo",existingPlaceholder:"/ruta/al/espacio/existente",newPlaceholder:"/ruta/al/espacio/nuevo",existingHelp:"Ruta completa al directorio de tu espacio de trabajo existente",newHelp:"Ruta completa al directorio de tu espacio de trabajo",githubUrl:"URL de GitHub (opcional)",githubPlaceholder:"https://github.com/usuario/repositorio",githubHelp:"Opcional: proporciona una URL de GitHub para clonar un repositorio",githubAuth:"Autenticación de GitHub (opcional)",githubAuthHelp:"Solo se requiere para repositorios privados. Los repos públicos se pueden clonar sin autenticación.",loadingTokens:"Cargando tokens guardados...",storedToken:"Token guardado",newToken:"Token nuevo",nonePublic:"Ninguno (público)",selectToken:"Seleccionar token",selectTokenPlaceholder:"-- Selecciona un token --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"Este token se usará solo para esta operación",publicRepoInfo:"Los repositorios públicos no requieren autenticación. Puedes omitir el token si clonas un repo público.",noTokensHelp:"No hay tokens guardados disponibles. Puedes añadir tokens en Ajustes → Claves API para reutilizarlos fácilmente.",optionalTokenPublic:"Token de GitHub (opcional para repos públicos)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (déjalo vacío para repos públicos)"},step3:{reviewConfig:"Revisa tu configuración",existingWorkspace:"Espacio de trabajo existente",newWorkspace:"Espacio de trabajo nuevo",path:"Ruta:",cloneFrom:"Clonar desde:",authentication:"Autenticación:",usingStoredToken:"Usando token guardado:",usingProvidedToken:"Usando token proporcionado",noAuthentication:"Sin autenticación",sshKey:"Clave SSH",existingInfo:"El espacio de trabajo se añadirá a tu lista de proyectos y estará disponible para sesiones de Claude/Cursor.",newWithClone:"El repositorio se clonará desde esta carpeta.",newEmpty:"El espacio de trabajo se añadirá a tu lista de proyectos y estará disponible para sesiones de Claude/Cursor.",cloningRepository:"Clonando repositorio..."},buttons:{cancel:"Cancelar",back:"Atrás",next:"Siguiente",createProject:"Crear proyecto",creating:"Creando...",cloning:"Clonando..."},errors:{selectType:"Selecciona si tienes un espacio de trabajo existente o quieres crear uno nuevo",providePath:"Proporciona la ruta del espacio de trabajo",failedToCreate:"No se pudo crear el espacio de trabajo",failedToCreateFolder:"No se pudo crear la carpeta"}},Yl={genericTool:"una herramienta",codes:{generic:{info:{title:"Notificación"}},permission:{required:{title:"Acción requerida",body:"{{toolName}} está esperando tu decisión."}},run:{stopped:{title:"Ejecución detenida",body:"Motivo: {{reason}}"},failed:{title:"La ejecución falló"}},agent:{notification:{title:"Notificación del agente"}}}},Jl={title:"Actualización disponible",newVersionReady:"Hay una versión nueva lista",currentVersion:"Versión actual",latestVersion:"Última versión",whatsNew:"Novedades:",viewFullRelease:"Ver la publicación completa",updateProgress:"Progreso de la actualización:",manualUpgrade:"Actualización manual:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:'O haz clic en "Actualizar ahora" para ejecutar la actualización automáticamente.',updateCompleted:"¡Actualización completada correctamente!",restartServer:"Reinicia el servidor para aplicar los cambios.",updateFailed:"La actualización falló",buttons:{close:"Cerrar",later:"Más tarde",copyCommand:"Copiar comando",updateNow:"Actualizar ahora",updating:"Actualizando..."},ariaLabels:{closeModal:"Cerrar el modal de actualización de versión",showSidebar:"Mostrar barra lateral",settings:"Ajustes",updateAvailable:"Actualización disponible",closeSidebar:"Cerrar barra lateral"}},Ql={buttons:Fl,tabs:Bl,status:Gl,messages:Hl,navigation:Ol,common:Ul,time:ql,fileOperations:Wl,mainContent:Vl,fileTree:Kl,projectWizard:_l,notifications:Yl,versionUpdate:Jl},Zl="Ajustes",Xl={account:"Cuenta",permissions:"Permisos",mcpServers:"Servidores MCP",skills:"Skills",appearance:"Apariencia"},ec={title:"Cuenta",language:"Idioma",languageLabel:"Idioma de la interfaz",languageDescription:"Elige tu idioma preferido para la interfaz",username:"Usuario",email:"Correo electrónico",profile:"Perfil",changePassword:"Cambiar contraseña"},tc={title:"Servidores MCP",addServer:"Añadir servidor",editServer:"Editar servidor",deleteServer:"Eliminar servidor",serverName:"Nombre del servidor",serverType:"Tipo de servidor",config:"Configuración",testConnection:"Probar conexión",status:"Estado",connected:"Conectado",disconnected:"Desconectado",scope:{label:"Ámbito",user:"Usuario",project:"Proyecto"}},nc={title:"Apariencia",theme:"Tema",codeEditor:"Editor de código",editorTheme:"Tema del editor",wordWrap:"Ajuste de línea",showMinimap:"Mostrar minimapa",lineNumbers:"Números de línea",fontSize:"Tamaño de fuente"},sc={saveChanges:"Guardar cambios",resetToDefaults:"Restablecer valores por defecto",cancelChanges:"Cancelar cambios"},ic={title:"Voz",description:"Entrada de voz a texto y lectura en voz alta, mediante un backend de audio compatible con OpenAI.",enable:"Activar voz",enableDescription:"Muestra el botón del micrófono y el botón de lectura en voz alta en los mensajes.",backendTitle:"Backend",backendDescription:"Apunta a OpenAI, Groq o un servidor local (LocalAI, Speaches, Kokoro-FastAPI). Déjalo en blanco para usar el valor por defecto del servidor.",baseUrl:"URL base",apiKey:"Clave API",sttModel:"Modelo de voz a texto",ttsModel:"Modelo de texto a voz",voice:"Voz",format:"Formato de audio",note:"Una URL base personalizada la llama directamente tu navegador y debe permitir solicitudes CORS. Déjala en blanco para usar el backend configurado en el servidor."},ac={title:"Ajustes rápidos",sections:{appearance:"Apariencia",toolDisplay:"Visualización de herramientas",inputSettings:"Ajustes de entrada"},darkMode:"Modo oscuro",showRawParameters:"Mostrar parámetros sin procesar",showThinking:"Mostrar razonamiento",sendByCtrlEnter:"Enviar con Ctrl+Enter",voiceEnabled:"Voz (micro + lectura en voz alta)",sendByCtrlEnterDescription:"Si está activado, Ctrl+Enter envía el mensaje en lugar de solo Enter. Útil para usuarios de IME y evitar envíos accidentales.",dragHandle:{dragging:"Arrastrando el control",closePanel:"Cerrar panel de ajustes",openPanel:"Abrir panel de ajustes",draggingStatus:"Arrastrando...",toggleAndMove:"Clic para alternar, arrastra para mover"}},oc={title:"Atajos de terminal",sectionKeys:"Teclas",sectionNavigation:"Navegación",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"Flecha arriba",arrowDown:"Flecha abajo",scrollDown:"Desplazar hacia abajo",handle:{closePanel:"Cerrar panel de atajos",openPanel:"Abrir panel de atajos"}},rc={label:"Ajustes",agents:"Agentes",appearance:"Apariencia",git:"Git",apiTokens:"API y tokens",voice:"Voz",tasks:"Tareas",browser:"Navegador",notifications:"Notificaciones",plugins:"Plugins",about:"Acerca de"},lc={title:"Notificaciones",description:"Controla qué eventos de notificación recibes.",webPush:{title:"Notificar en este navegador",enable:"Activar notificaciones",disable:"Desactivar notificaciones",enabled:"Las notificaciones están activadas en este navegador",loading:"Actualizando...",unsupported:"Las notificaciones push no son compatibles con este navegador.",denied:"Las notificaciones push están bloqueadas. Permítelas en los ajustes de tu navegador."},desktop:{title:"Notificar en esta app de escritorio",enable:"Activar notificaciones",disable:"Desactivar notificaciones",enabled:"Las notificaciones están activadas en esta app de escritorio",unsupported:"Las notificaciones de escritorio no son compatibles con este sistema."},sound:{title:"Sonido",description:"Reproduce un tono corto cuando una ejecución del chat termina o necesita aprobación de una herramienta.",enabled:"Activado",test:"Probar sonido"},events:{title:"Tipos de evento",actionRequired:"Acción requerida",stop:"Ejecución detenida",error:"Ejecución fallida"}},cc={darkMode:{label:"Modo oscuro",description:"Alterna entre el tema claro y el oscuro"},projectSorting:{label:"Orden de proyectos",description:"Cómo se ordenan los proyectos en la barra lateral",alphabetical:"Alfabético",recentActivity:"Actividad reciente"},codeEditor:{title:"Editor de código",theme:{label:"Tema del editor",description:"Tema por defecto del editor de código"},wordWrap:{label:"Ajuste de línea",description:"Activa el ajuste de línea por defecto en el editor"},showMinimap:{label:"Mostrar minimapa",description:"Muestra un minimapa para navegar más fácil en la vista de diff"},lineNumbers:{label:"Mostrar números de línea",description:"Muestra los números de línea en el editor"},fontSize:{label:"Tamaño de fuente",description:"Tamaño de fuente del editor en píxeles"}}},dc={title:{add:"Añadir servidor MCP",edit:"Editar servidor MCP"},importMode:{form:"Formulario",json:"Importar JSON"},scope:{label:"Ámbito",userGlobal:"Usuario (global)",projectLocal:"Proyecto (local)",userDescription:"Ámbito de usuario: disponible en todos los proyectos de tu máquina",projectDescription:"Ámbito local: solo disponible en el proyecto seleccionado",cannotChange:"El ámbito no se puede cambiar al editar un servidor existente"},fields:{serverName:"Nombre del servidor",transportType:"Tipo de transporte",command:"Comando",arguments:"Argumentos (uno por línea)",jsonConfig:"Configuración JSON",url:"URL",envVars:"Variables de entorno (CLAVE=valor, una por línea)",headers:"Cabeceras (CLAVE=valor, una por línea)",selectProject:"Selecciona un proyecto..."},placeholders:{serverName:"mi-servidor"},validation:{missingType:"Falta el campo obligatorio: type",stdioRequiresCommand:"El tipo stdio requiere un campo command",httpRequiresUrl:"El tipo {{type}} requiere un campo url",invalidJson:"Formato JSON no válido",jsonHelp:"Pega la configuración de tu servidor MCP en formato JSON. Formatos de ejemplo:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"Detalles de configuración (de {{configFile}})",projectPath:"Ruta: {{path}}",actions:{cancel:"Cancelar",saving:"Guardando...",addServer:"Añadir servidor",updateServer:"Actualizar servidor"}},uc={success:"¡Ajustes guardados correctamente!",error:"No se pudieron guardar los ajustes",saving:"Guardando..."},pc={save:"Guardar ajustes",cancel:"Cancelar"},mc={title:"Configuración de Git",description:"Configura tu identidad de git para los commits. Estos ajustes se aplicarán globalmente mediante git config --global",name:{label:"Nombre para Git",help:"Tu nombre para los commits de git"},email:{label:"Correo para Git",help:"Tu correo para los commits de git"},actions:{save:"Guardar configuración",saving:"Guardando..."},status:{success:"Guardado correctamente"}},gc={title:"Claves API",description:"Genera claves API para acceder a la API externa desde otras aplicaciones.",newKey:{alertTitle:"⚠️ Guarda tu clave API",alertMessage:"Esta es la única vez que verás esta clave. Guárdala en un lugar seguro.",iveSavedIt:"Ya la guardé"},form:{placeholder:"Nombre de la clave API (p. ej., Servidor de producción)",createButton:"Crear",cancelButton:"Cancelar"},newButton:"Nueva clave API",empty:"Aún no se han creado claves API.",list:{created:"Creada:",lastUsed:"Último uso:"},confirmDelete:"¿Seguro que quieres eliminar esta clave API?",status:{active:"Activa",inactive:"Inactiva"},github:{title:"Tokens de GitHub",description:"Añade tokens de acceso personal de GitHub para clonar repositorios privados mediante la API externa.",descriptionAlt:"Añade tokens de acceso personal de GitHub para clonar repositorios privados. También puedes pasar tokens directamente en las solicitudes de API sin guardarlos.",addButton:"Añadir token",form:{namePlaceholder:"Nombre del token (p. ej., Repos personales)",tokenPlaceholder:"Token de acceso personal de GitHub (ghp_...)",descriptionPlaceholder:"Descripción (opcional)",addButton:"Añadir token",cancelButton:"Cancelar",howToCreate:"Cómo crear un token de acceso personal de GitHub →"},empty:"Aún no se han añadido tokens de GitHub.",added:"Añadido:",confirmDelete:"¿Seguro que quieres eliminar este token de GitHub?"},apiDocsLink:"Documentación de la API",documentation:{title:"Documentación de la API externa",description:"Aprende a usar la API externa para lanzar sesiones de Claude/Cursor desde tus aplicaciones.",viewLink:"Ver documentación de la API →"},loading:"Cargando...",version:{updateAvailable:"Actualización disponible: v{{version}}"}},hc={checking:"Comprobando la instalación de TaskMaster...",notInstalled:{title:"La CLI de TaskMaster AI no está instalada",description:"La CLI de TaskMaster es necesaria para usar las funciones de gestión de tareas. Instálala para empezar:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"Ver en GitHub",afterInstallation:"Después de la instalación:",steps:{restart:"Reinicia esta aplicación",autoAvailable:"Las funciones de TaskMaster estarán disponibles automáticamente",initCommand:"Usa task-master init en el directorio de tu proyecto"}},settings:{enableLabel:"Activar integración con TaskMaster",enableDescription:"Muestra tareas, banners e indicadores de TaskMaster en la barra lateral y el resto de la interfaz"}},fc={authStatus:{checking:"Comprobando...",connected:"Conectado",notConnected:"No conectado",disconnected:"Desconectado",checkingAuth:"Comprobando el estado de autenticación...",loggedInAs:"Sesión iniciada como {{email}}",authenticatedUser:"usuario autenticado"},account:{claude:{description:"Asistente de IA Claude de Anthropic"},cursor:{description:"Editor de código con IA Cursor"},codex:{description:"Asistente de IA Codex de OpenAI"},opencode:{description:"Asistente CLI OpenCode"}},connectionStatus:"Estado de la conexión",login:{title:"Iniciar sesión",reAuthenticate:"Volver a autenticar",description:"Inicia sesión en tu cuenta de {{agent}} para activar las funciones de IA",reAuthDescription:"Inicia sesión con otra cuenta o actualiza las credenciales",button:"Iniciar sesión",reLoginButton:"Volver a iniciar sesión"},error:"Error: {{error}}"},bc={title:"Ajustes de permisos",skipPermissions:{label:"Omitir avisos de permisos (usar con precaución)",claudeDescription:"Equivalente al flag --dangerously-skip-permissions",cursorDescription:"Equivalente al flag -f en la CLI de Cursor"},allowedTools:{title:"Herramientas permitidas",description:"Herramientas que se permiten automáticamente sin pedir permiso",placeholder:'p. ej., "Bash(git log:*)" o "Write"',quickAdd:"Añadir rápido herramientas comunes:",empty:"No hay herramientas permitidas configuradas"},blockedTools:{title:"Herramientas bloqueadas",description:"Herramientas que se bloquean automáticamente sin pedir permiso",placeholder:'p. ej., "Bash(rm:*)"',empty:"No hay herramientas bloqueadas configuradas"},allowedCommands:{title:"Comandos de shell permitidos",description:"Comandos de shell que se permiten automáticamente sin preguntar",placeholder:'p. ej., "Shell(ls)" o "Shell(git status)"',quickAdd:"Añadir rápido comandos comunes:",empty:"No hay comandos permitidos configurados"},blockedCommands:{title:"Comandos de shell bloqueados",description:"Comandos de shell que se bloquean automáticamente",placeholder:'p. ej., "Shell(rm -rf)" o "Shell(sudo)"',empty:"No hay comandos bloqueados configurados"},toolExamples:{title:"Ejemplos de patrones de herramientas:",bashGitLog:"- Permitir todos los comandos git log",bashGitDiff:"- Permitir todos los comandos git diff",write:"- Permitir todo uso de la herramienta Write",bashRm:"- Bloquear todos los comandos rm (peligroso)"},shellExamples:{title:"Ejemplos de comandos de shell:",ls:"- Permitir el comando ls",gitStatus:"- Permitir git status",npmInstall:"- Permitir npm install",rmRf:"- Bloquear el borrado recursivo"},codex:{permissionMode:"Modo de permisos",description:"Controla cómo Codex gestiona las modificaciones de archivos y la ejecución de comandos",modes:{default:{title:"Por defecto",description:"Solo los comandos de confianza (ls, cat, grep, git status, etc.) se ejecutan automáticamente. Los demás comandos se omiten. Puede escribir en el espacio de trabajo."},acceptEdits:{title:"Aceptar ediciones",description:"Todos los comandos se ejecutan automáticamente dentro del espacio de trabajo. Modo automático completo con ejecución en sandbox."},bypassPermissions:{title:"Omitir permisos",description:"Acceso completo al sistema sin restricciones. Todos los comandos se ejecutan automáticamente con acceso total a disco y red. Úsalo con precaución."}},technicalDetails:"Detalles técnicos",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted. Comandos de confianza: cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find (sin -exec), etc.",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never. Todos los comandos se autoejecutan dentro del directorio del proyecto.",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never. Acceso completo al sistema; úsalo solo en entornos de confianza.",overrideNote:"Puedes cambiar esto por sesión con el botón de modo en la interfaz del chat."}},actions:{add:"Añadir"}},vc={title:"Servidores MCP",description:{claude:"Los servidores del Model Context Protocol proporcionan herramientas y fuentes de datos adicionales a Claude",cursor:"Los servidores del Model Context Protocol proporcionan herramientas y fuentes de datos adicionales a Cursor",codex:"Los servidores del Model Context Protocol proporcionan herramientas y fuentes de datos adicionales a Codex",opencode:"Los servidores del Model Context Protocol proporcionan herramientas y fuentes de datos adicionales a OpenCode"},addButton:"Añadir servidor MCP",empty:"No hay servidores MCP configurados",serverType:"Tipo",scope:{local:"local",user:"usuario"},config:{command:"Comando",url:"URL",args:"Argumentos",environment:"Entorno"},tools:{title:"Herramientas",count:"({{count}}):",more:"+{{count}} más"},actions:{edit:"Editar servidor",delete:"Eliminar servidor"},managed:{badge:"Gestionado",hint:"Gestionado por WindCli."},help:{title:"Acerca de MCP en Codex",description:"Codex admite servidores MCP basados en stdio. Puedes añadir servidores que amplíen las capacidades de Codex con herramientas y recursos adicionales."}},kc={title:"Plugins",description:"Amplía la interfaz con plugins personalizados. Instala desde git o suelta una carpeta en ~/.claude-code-ui/plugins/",installPlaceholder:"https://github.com/usuario/mi-plugin",installButton:"Instalar",installing:"Instalando…",securityWarning:"Instala solo plugins cuyo código fuente hayas revisado o de autores en los que confíes.",scanningPlugins:"Buscando plugins…",noPluginsInstalled:"No hay plugins instalados",pullLatest:"Traer lo último desde git",noGitRemote:"Sin remoto de git — actualización no disponible",uninstallPlugin:"Desinstalar plugin",confirmUninstall:"Haz clic de nuevo para confirmar",confirmUninstallMessage:"¿Quitar {{name}}? Esto no se puede deshacer.",cancel:"Cancelar",remove:"Quitar",updateFailed:"La actualización falló",installFailed:"La instalación falló",uninstallFailed:"La desinstalación falló",toggleFailed:"El cambio de estado falló",starterPluginLabel:"Plugin de inicio",starter:"Inicio",docs:"Docs",sections:{officialTitle:"Plugins oficiales",officialDescription:"Mantenidos por el equipo de WindCli y listos para instalar directamente.",unofficialTitle:"Otros plugins",unofficialDescription:"Plugins e integraciones no oficiales de otros usuarios. Revisa el código fuente antes de instalar."},starterPlugin:{name:"Estadísticas del proyecto",badge:"inicio",description:"Recuento de archivos, líneas de código, desglose por tipo de archivo y actividad reciente de tu proyecto.",install:"Instalar"},terminalPlugin:{name:"Terminal",badge:"oficial",description:"Terminal integrada con acceso completo a la shell directamente en la interfaz.",install:"Instalar"},scheduledPromptPlugin:{name:"Prompts programados",badge:"no oficial",description:"Programa prompts del espacio de trabajo, revisa el historial de ejecuciones y gestiona tareas locales recurrentes.",install:"Instalar"},claudeWatchPlugin:{name:"Claude Watch",badge:"no oficial",description:"Vigila sesiones largas de Claude Code por si se cuelgan y expone controles del proceso.",install:"Instalar"},prismCloudCLI:{name:"PRISM CloudCLI",badge:"no oficial",description:"Inteligencia de sesiones para Claude Code, dentro de WindCli. Descubre por qué tus sesiones queman tokens sin salir del navegador.",install:"Instalar"},sessionManagerPlugin:{name:"Sesiones",badge:"no oficial",description:"Ver, gestionar y terminar sesiones activas de Claude Code.",install:"Instalar"},tokenCostCalculatorPlugin:{name:"Calculadora de costes de tokens",badge:"no oficial",description:"Calcula costes de API a partir de precios de modelos y uso de tokens, con precios de modelos predefinidos.",install:"Instalar"},taskQueuePlugin:{name:"Cola de tareas",badge:"no oficial",description:"Panel de cola de tareas para ver, filtrar y lanzar tareas de agentes.",install:"Instalar"},githubIssuesBoardPlugin:{name:"Tablero de GitHub Issues",badge:"no oficial",description:"Tablero Kanban para GitHub Issues con sincronización bidireccional con TaskMaster e instalación automática de la skill CLI /github-task",install:"Instalar"},claudeUsagePlugin:{name:"Uso de Claude",badge:"no oficial",description:"Sigue en vivo los límites del plan de Claude Code y explora el historial de tokens y costes de 30 días.",install:"Instalar"},morePlugins:"Más",enable:"Activar",disable:"Desactivar",installAriaLabel:"URL del repositorio git del plugin",tab:"pestaña",runningStatus:"en ejecución"},xc={title:Zl,tabs:Xl,account:ec,mcp:tc,appearance:nc,actions:sc,voiceSettings:ic,quickSettings:ac,terminalShortcuts:oc,mainTabs:rc,notifications:lc,appearanceSettings:cc,mcpForm:dc,saveStatus:uc,footerActions:pc,git:mc,apiKeys:gc,tasks:hc,agents:fc,permissions:bc,mcpServers:vc,pluginSettings:kc},yc={title:"Bienvenido de nuevo",description:"Inicia sesión en tu cuenta autoalojada de WindCli",username:"Usuario",password:"Contraseña",submit:"Iniciar sesión",loading:"Iniciando sesión...",errors:{invalidCredentials:"Usuario o contraseña incorrectos",requiredFields:"Completa todos los campos",networkError:"Error de red. Inténtalo de nuevo."},placeholders:{username:"Escribe tu usuario",password:"Escribe tu contraseña"}},wc={title:"Crear cuenta",username:"Usuario",password:"Contraseña",confirmPassword:"Confirmar contraseña",submit:"Crear cuenta",loading:"Creando cuenta...",errors:{passwordMismatch:"Las contraseñas no coinciden",usernameTaken:"El nombre de usuario ya está en uso",weakPassword:"La contraseña es demasiado débil"}},Cc={title:"Cerrar sesión",confirm:"¿Seguro que quieres cerrar sesión?",button:"Cerrar sesión"},Sc={login:yc,register:wc,logout:Cc},Pc={title:"Proyectos",newProject:"Nuevo proyecto",deleteProject:"Quitar proyecto",renameProject:"Renombrar proyecto",noProjects:"No se encontraron proyectos",loadingProjects:"Cargando proyectos...",searchPlaceholder:"Buscar proyectos...",projectNamePlaceholder:"Nombre del proyecto",starred:"Favoritos",all:"Todos",untitledSession:"Sesión sin título",newSession:"Nueva sesión",codexSession:"Sesión de Codex",fetchingProjects:"Obteniendo tus proyectos y sesiones de Claude",projects:"proyectos",noMatchingProjects:"No hay proyectos que coincidan",tryDifferentSearch:"Prueba con otro término de búsqueda",runClaudeCli:"Ejecuta Claude CLI en el directorio de un proyecto para empezar"},Ac={title:"WindCli",subtitle:"Interfaz de asistente de programación con IA"},jc={title:"Sesiones",newSession:"Nueva sesión",deleteSession:"Eliminar sesión",renameSession:"Renombrar sesión",noSessions:"Aún no hay sesiones",loadingSessions:"Cargando sesiones...",unnamed:"Sin nombre",loading:"Cargando...",showMore:"Mostrar más sesiones"},Tc={viewEnvironments:"Ver entornos",hideSidebar:"Ocultar barra lateral",createProject:"Crear proyecto nuevo",refresh:"Actualizar proyectos y sesiones (Ctrl+R)",renameProject:"Renombrar proyecto (F2)",deleteProject:"Quitar proyecto de la barra lateral (Supr)",addToFavorites:"Añadir a favoritos",removeFromFavorites:"Quitar de favoritos",editSessionName:"Editar manualmente el nombre de la sesión",deleteSession:"Eliminar esta sesión de forma permanente",activeSessionIndicator:"Sesión activa recientemente (últimos 10 minutos)",save:"Guardar",cancel:"Cancelar",clearSearch:"Limpiar búsqueda",openCommandPalette:"Abrir paleta de comandos",attentionRequiredIndicator:"La sesión requiere atención"},Ic={chat:"Chat",files:"Archivos",git:"Git",terminal:"Terminal",tasks:"Tareas"},Ec={refresh:"Actualizar",settings:"Ajustes",collapseAll:"Contraer todo",expandAll:"Expandir todo",cancel:"Cancelar",save:"Guardar",delete:"Eliminar",rename:"Renombrar",joinCommunity:"Unirse a la comunidad",reportIssue:"Informar de un problema",starOnGithub:"Dar estrella en GitHub"},Mc={openSource:"Código abierto"},zc={active:"Activa",inactive:"Inactiva",thinking:"Pensando...",error:"Error",aborted:"Cancelada",unknown:"Desconocido"},Dc={justNow:"Justo ahora",oneMinuteAgo:"hace 1 min",minutesAgo:"hace {{count}} min",oneHourAgo:"hace 1 hora",hoursAgo:"hace {{count}} horas",oneDayAgo:"hace 1 día",daysAgo:"hace {{count}} días"},Nc={deleteConfirm:"¿Seguro que quieres eliminar esto?",renameSuccess:"Renombrado correctamente",deleteSuccess:"Eliminado correctamente",errorOccurred:"Ocurrió un error",deleteSessionConfirm:"¿Seguro que quieres eliminar esta sesión? Esta acción no se puede deshacer.",deleteProjectConfirm:"¿Quitar este proyecto de la barra lateral? Tus archivos, memorias y datos de sesión no se eliminarán.",enterProjectPath:"Introduce la ruta del proyecto",deleteSessionFailed:"No se pudo eliminar la sesión. Inténtalo de nuevo.",deleteSessionError:"Error al eliminar la sesión. Inténtalo de nuevo.",renameSessionFailed:"No se pudo renombrar la sesión. Inténtalo de nuevo.",renameSessionError:"Error al renombrar la sesión. Inténtalo de nuevo.",deleteProjectFailed:"No se pudo quitar el proyecto. Inténtalo de nuevo.",deleteProjectError:"Error al quitar el proyecto. Inténtalo de nuevo.",createProjectFailed:"No se pudo crear el proyecto. Inténtalo de nuevo.",createProjectError:"Error al crear el proyecto. Inténtalo de nuevo.",updateProjectError:"Error al actualizar el proyecto. Inténtalo de nuevo.",refreshError:"No se pudo actualizar. Inténtalo de nuevo.",restoreProjectFailed:"No se pudo restaurar el proyecto. Inténtalo de nuevo.",restoreProjectError:"Error al restaurar el proyecto. Inténtalo de nuevo.",restoreSessionFailed:"No se pudo restaurar la sesión. Inténtalo de nuevo.",restoreSessionError:"Error al restaurar la sesión. Inténtalo de nuevo."},$c={updateAvailable:"Actualización disponible",restartRequired:"Actualización instalada — reinicia el servidor para aplicarla"},Rc={modeProjects:"Proyectos",modeConversations:"Conversaciones",conversationsPlaceholder:"Buscar en conversaciones...",searching:"Buscando...",sessionTitles:"Títulos de sesiones",conversationContents:"Contenido de conversaciones",noResults:"No se encontraron resultados",tryDifferentQuery:"Prueba con otra búsqueda",matches_one:"{{count}} coincidencia",matches_other:"{{count}} coincidencias",projectsScanned_one:"{{count}} proyecto examinado",projectsScanned_other:"{{count}} proyectos examinados"},Lc={deleteProject:"Quitar proyecto",deleteSession:"Eliminar sesión",confirmDelete:"¿Qué quieres hacer con",sessionCount_one:"Este proyecto contiene {{count}} conversación.",sessionCount_other:"Este proyecto contiene {{count}} conversaciones.",removeFromSidebar:"Solo quitar de la barra lateral",deleteAllData:"Eliminar todos los datos permanentemente",allConversationsDeleted:"El proyecto se quitará de la barra lateral. Tus archivos, memorias y datos de sesión se conservarán.",cannotUndo:"Puedes volver a añadir el proyecto más tarde."},Fc={projects:Pc,app:Ac,sessions:jc,tooltips:Tc,navigation:Ic,actions:Ec,branding:Mc,status:zc,time:Dc,messages:Nc,version:$c,search:Rc,deleteConfirmation:Lc},Bc={copy:"Copiar",copied:"Copiado",copyCode:"Copiar código"},Gc={copy:"Copiar mensaje",copied:"Mensaje copiado",selectFormat:"Selecciona el formato de copia",copyAsMarkdown:"Copiar como markdown",copyAsText:"Copiar como texto"},Hc={user:"U",error:"Error",tool:"Herramienta",claude:"Claude",cursor:"Cursor",codex:"Codex",opencode:"OpenCode"},Oc={settings:"Ajustes de herramientas",error:"Error de herramienta",result:"Resultado de herramienta",viewParams:"Ver parámetros de entrada",viewRawParams:"Ver parámetros sin procesar",viewDiff:"Ver diff de edición de",creatingFile:"Creando archivo nuevo:",updatingTodo:"Actualizando lista de pendientes",read:"Leer",readFile:"Leer archivo",updateTodo:"Actualizar lista de pendientes",readTodo:"Leer lista de pendientes",searchResults:"resultados"},Uc={found:"Se encontraron {{count}} {{type}}",file:"archivo",files:"archivos",pattern:"patrón:",in:"en:"},qc={updated:"Archivo actualizado correctamente",created:"Archivo creado correctamente",written:"Archivo escrito correctamente",diff:"Diff",newFile:"Archivo nuevo",viewContent:"Ver contenido del archivo",viewFullOutput:"Ver salida completa ({{count}} caracteres)",contentDisplayed:"El contenido del archivo se muestra en la vista de diff de arriba"},Wc={title:"Prompt interactivo",waiting:"Esperando tu respuesta en la CLI",instruction:"Selecciona una opción en la terminal donde está corriendo Claude.",selectedOption:"✓ Claude seleccionó la opción {{number}}",instructionDetail:"En la CLI seleccionarías esta opción de forma interactiva con las flechas o escribiendo el número."},Vc={title:"Pensando...",emoji:"💭 Pensando..."},Kc={response:"Respuesta JSON"},_c={grant:"Conceder permiso para {{tool}}",added:"Permiso añadido",addTo:"Añade {{entry}} a las herramientas permitidas.",retry:"Permiso guardado. Reintenta la solicitud para usar la herramienta.",error:"No se pudieron actualizar los permisos. Inténtalo de nuevo.",openSettings:"Abrir ajustes"},Yc={updated:"La lista de pendientes se actualizó correctamente",current:"Lista de pendientes actual"},Jc={viewPlan:"📋 Ver plan de implementación",title:"Plan de implementación"},Qc={resetAt:"Se alcanzó el límite de uso de Claude. Tu límite se restablecerá a las **{{time}} {{timezone}}** - {{date}}"},Zc={permissionMode:"Modo de permisos",modes:{default:"Modo por defecto",auto:"Modo automático",acceptEdits:"Aceptar ediciones",bypassPermissions:"Omitir permisos",plan:"Modo de planificación"},descriptions:{default:"Solo los comandos de confianza (ls, cat, grep, git status, etc.) se ejecutan automáticamente. Los demás comandos se omiten. Puede escribir en el espacio de trabajo.",auto:"Un clasificador del modelo decide en cada llamada si aprobar o denegar. Sin intervención, pero más seguro que Omitir — las denegaciones siguen ocurriendo.",acceptEdits:"Todos los comandos se ejecutan automáticamente dentro del espacio de trabajo. Modo automático completo con ejecución en sandbox.",bypassPermissions:"Acceso completo al sistema sin restricciones. Todos los comandos se ejecutan automáticamente con acceso total a disco y red. Úsalo con precaución.",plan:"Modo de planificación: no se ejecutan comandos"},technicalDetails:"Detalles técnicos"},Xc={input:"Entrada de voz",stopRecording:"Detener grabación",transcribing:"Transcribiendo…",speak:"Leer en voz alta",stopSpeaking:"Detener",loading:"Cargando…"},ed={placeholder:"Escribe / para comandos, @ para archivos, o pregúntale lo que quieras a {{provider}}...",placeholderDefault:"Escribe tu mensaje...",disabled:"Entrada deshabilitada",attachFiles:"Adjuntar archivos",attachImages:"Adjuntar imágenes",send:"Enviar",stop:"Detener",hintText:{ctrlEnter:"Ctrl+Enter para enviar • Shift+Enter para nueva línea • Tab para cambiar de modo • / para comandos",enter:"Enter para enviar • Shift+Enter para nueva línea • Tab para cambiar de modo • / para comandos",queue:"Enter para poner en cola tu siguiente mensaje",updateQueued:"Enter para actualizar el mensaje en cola"},clickToChangeMode:"Haz clic para cambiar el modo de permisos (o pulsa Tab en el campo de texto)",showAllCommands:"Mostrar todos los comandos",clearInput:"Limpiar entrada",scrollToBottom:"Ir al final",queue:{sendNext:"Poner en cola el siguiente mensaje",update:"Actualizar mensaje en cola",label:"En cola",willSend:"Se enviará cuando esto termine",edit:"Editar mensaje en cola",delete:"Eliminar mensaje en cola"}},td={reasoning:"Razonamiento",model:"Modelo",effortDefault:"Por defecto",loadingModels:"Cargando modelos…",modelMenu:"Seleccionar modelo y esfuerzo de razonamiento",permissionHeading:"¿Cómo se deben aprobar las acciones de {{provider}}?"},nd={title:"Elige tu asistente de IA",description:"Selecciona un proveedor para iniciar una conversación nueva",selectModel:"Seleccionar modelo",providerInfo:{anthropic:"de Anthropic",openai:"de OpenAI",cursorEditor:"Editor de código con IA",google:"de Google"},readyPrompt:{claude:"Listo para usar Claude con {{model}}. Escribe tu mensaje abajo.",cursor:"Listo para usar Cursor con {{model}}. Escribe tu mensaje abajo.",codex:"Listo para usar Codex con {{model}}. Escribe tu mensaje abajo.",opencode:"Listo para usar OpenCode con {{model}}. Escribe tu mensaje abajo.",default:"Selecciona un proveedor arriba para empezar"},pressToSearch:"Pulsa <kbd>{{shortcut}}</kbd> para buscar sesiones, archivos y commits"},sd={continue:{title:"Continúa tu conversación",description:"Haz preguntas sobre tu código, pide cambios u obtén ayuda con tareas de desarrollo"},loading:{olderMessages:"Cargando mensajes anteriores...",sessionMessages:"Cargando mensajes de la sesión..."},messages:{showingOf:"Mostrando {{shown}} de {{total}} mensajes",scrollToLoad:"Desplázate hacia arriba para cargar más",showingLast:"Mostrando los últimos {{count}} mensajes ({{total}} en total)",loadEarlier:"Cargar mensajes anteriores",loadAll:"Cargar todos los mensajes",loadingAll:"Cargando todos los mensajes...",allLoaded:"Todos los mensajes cargados",perfWarning:'Todos los mensajes cargados — el desplazamiento puede ser más lento. Haz clic en "Ir al final" para recuperar el rendimiento.'}},id={selectProject:{title:"Selecciona un proyecto",description:"Elige un proyecto para abrir una shell interactiva en ese directorio"},status:{newSession:"Sesión nueva",initializing:"Inicializando...",restarting:"Reiniciando..."},actions:{disconnect:"Desconectar",disconnectTitle:"Desconectar de la shell",restart:"Reiniciar",restartTitle:"Reiniciar shell",connect:"Continuar en la shell",connectTitle:"Conectar a la shell"},loading:"Cargando terminal...",connecting:"Conectando a la shell...",startSession:"Iniciar una sesión nueva de Claude",resumeSession:"Reanudar sesión: {{displayName}}...",runCommand:"Ejecutar {{command}} en {{projectName}}",startCli:"Iniciando Claude CLI en {{projectName}}",defaultCommand:"comando"},ad={actions:{thinking:"Pensando",processing:"Procesando",analyzing:"Analizando",working:"Trabajando",computing:"Calculando",reasoning:"Razonando"},state:{live:"En vivo",paused:"En pausa"},elapsed:{seconds:"{{count}}s",minutesSeconds:"{{minutes}}m {{seconds}}s",label:"{{time}} transcurridos",startingNow:"Empezando ahora"},stop:"Detener",controls:{stopGeneration:"Detener generación",pressEscToStop:"Pulsa Esc en cualquier momento para detener"},providers:{assistant:"Asistente"}},od={startChatWithProvider:"Selecciona un proyecto para empezar a chatear con {{provider}}"},rd={nextTaskPrompt:"Empezar la siguiente tarea"},ld={codeBlock:Bc,copyMessage:Gc,messageTypes:Hc,tools:Oc,search:Uc,fileOperations:qc,interactive:Wc,thinking:Vc,json:Kc,permissions:_c,todo:Yc,plan:Jc,usageLimit:Qc,codex:Zc,voice:Xc,input:ed,composer:td,providerSelection:nd,session:sd,shell:id,claudeStatus:ad,projectSelection:od,tasks:rd},cd={changes:"cambios",previousChange:"Cambio anterior",nextChange:"Cambio siguiente",hideDiff:"Ocultar resaltado de diferencias",showDiff:"Mostrar resaltado de diferencias",settings:"Ajustes del editor",collapse:"Contraer editor",expand:"Expandir editor a ancho completo"},dd="Cargando {{fileName}}...",ud={showingChanges:"Mostrando cambios"},pd={copyPath:"Copiar ruta del archivo",pathCopied:"Ruta del archivo copiada",download:"Descargar archivo",save:"Guardar",saving:"Guardando...",saved:"¡Guardado!",exitFullscreen:"Salir de pantalla completa",fullscreen:"Pantalla completa",close:"Cerrar",previewMarkdown:"Vista previa de markdown",editMarkdown:"Editar markdown"},md={lines:"Líneas:",characters:"Caracteres:",shortcuts:"Ctrl+S para guardar • Esc para cerrar"},gd={title:"Archivo binario",message:'El archivo "{{fileName}}" no se puede mostrar en el editor de texto porque es un archivo binario.'},hd={loading:"Cargando vista previa...",error:"No se puede mostrar este archivo.",openInNewTab:"Abrir en una pestaña nueva"},fd={toolbar:cd,loading:dd,header:ud,actions:pd,footer:md,binaryFile:gd,filePreview:hd},bd={title:"TaskMaster AI no está configurado",description:"TaskMaster ayuda a descomponer proyectos complejos en tareas manejables con asistencia de IA",whatIsTitle:"🎯 ¿Qué es TaskMaster?",features:{aiPowered:"Gestión de tareas con IA: descompone proyectos complejos en subtareas manejables",prdTemplates:"Plantillas PRD: genera tareas a partir de Documentos de Requisitos de Producto",dependencyTracking:"Seguimiento de dependencias: entiende las relaciones entre tareas y el orden de ejecución",progressVisualization:"Visualización del progreso: tableros Kanban y analíticas detalladas de tareas",cliIntegration:"Integración CLI: usa comandos de taskmaster para flujos de trabajo avanzados"},initializeButton:"Inicializar TaskMaster AI"},vd={title:"Primeros pasos con TaskMaster",subtitle:"¡TaskMaster está inicializado! Esto es lo que puedes hacer ahora:",steps:{createPRD:{title:"Crea un Documento de Requisitos de Producto (PRD)",description:"Conversa sobre la idea de tu proyecto y crea un PRD que describa lo que quieres construir.",addButton:"Añadir PRD",existingPRDs:"PRDs existentes:"},generateTasks:{title:"Genera tareas desde el PRD",description:"Cuando tengas un PRD, pídele a tu asistente de IA que lo analice y TaskMaster lo descompondrá automáticamente en tareas manejables con detalles de implementación."},analyzeTasks:{title:"Analiza y expande tareas",description:"Pídele a tu asistente de IA que analice la complejidad de las tareas y las expanda en subtareas detalladas para facilitar la implementación."},startBuilding:{title:"Empieza a construir",description:"Pídele a tu asistente de IA que empiece a trabajar en las tareas, actualice su estado y añada tareas nuevas a medida que tu proyecto evoluciona."}},tip:"💡 Consejo: empieza con un PRD para sacar el máximo partido a la generación de tareas con IA de TaskMaster"},kd={title:"Configuración de TaskMaster",subtitle:"CLI interactiva para {{projectName}}",willStart:"La inicialización de TaskMaster comenzará automáticamente",completed:"¡Configuración de TaskMaster completada! Ya puedes cerrar esta ventana.",closeButton:"Cerrar",closeContinueButton:"Cerrar y continuar"},xd={title:"Primeros pasos con TaskMaster",subtitle:"Tu guía para una gestión de tareas productiva",examples:{parsePRD:`💬 Ejemplo:
|
|
8
|
+
« Veuillez ajouter une nouvelle tâche pour implémenter le téléchargement d'images de profil utilisateur avec Cloudinary, recherchez la meilleure approche. »`},moreExamples:"Voir plus d'exemples et de patterns d'utilisation →",proTips:{title:"💡 Conseils pro",search:"Utilisez la barre de recherche pour trouver rapidement des tâches spécifiques",views:"Basculez entre les vues Kanban, Liste et Grille via les boutons de vue",filters:"Utilisez les filtres pour vous concentrer sur des statuts ou priorités de tâches spécifiques",details:"Cliquez sur une tâche pour voir les détails et gérer les sous-tâches"},learnMore:{title:"📚 En savoir plus",description:"TaskMaster AI est un système avancé de gestion des tâches conçu pour les développeurs. Documentation, exemples et contributions au projet.",githubButton:"Voir sur GitHub"}},Ll={placeholder:"Rechercher des tâches..."},Fl={button:"Filtres",status:"Statut",priority:"Priorité",sortBy:"Trier par",allStatuses:"Tous les statuts",allPriorities:"Toutes les priorités",showing:"Affichage de {{filtered}} sur {{total}} tâches",clearFilters:"Effacer les filtres"},Bl={id:"ID",status:"Statut",priority:"Priorité",idAsc:"ID (croissant)",idDesc:"ID (décroissant)",titleAsc:"Titre (A-Z)",titleDesc:"Titre (Z-A)",statusAsc:"Statut (en attente en premier)",statusDesc:"Statut (terminé en premier)",priorityAsc:"Priorité (haute en premier)",priorityDesc:"Priorité (basse en premier)"},Gl={kanban:"Vue Kanban",list:"Vue liste",grid:"Vue grille"},Hl={pending:"📋 À faire",inProgress:"🚀 En cours",done:"✅ Terminé",blocked:"🚫 Bloqué",deferred:"⏳ Différé",cancelled:"❌ Annulé",noTasksYet:"Aucune tâche pour l'instant",tasksWillAppear:"Les tâches apparaîtront ici",moveTasksHere:"Déplacez les tâches ici au démarrage",completedTasksHere:"Les tâches terminées apparaissent ici",statusTasksHere:"Les tâches avec ce statut apparaîtront ici"},Ol={help:"Guide de démarrage TaskMaster",prds:"PRDs",addPRD:"Ajouter un PRD",addTask:"Ajouter une tâche",createNewPRD:"Créer un nouveau PRD",prdsAvailable:"{{count}} PRD(s) disponible(s)"},Ul={modified:"Modifié : {{date}}"},ql={pending:"En attente","in-progress":"En cours",done:"Terminé",blocked:"Bloqué",deferred:"Différé",cancelled:"Annulé"},Wl={high:"Haute",medium:"Moyenne",low:"Basse"},Vl={title:"Aucune tâche ne correspond à vos filtres",description:"Essayez d'ajuster votre recherche ou vos critères de filtre."},Kl={notConfigured:Dl,gettingStarted:Nl,setupModal:$l,helpGuide:Rl,search:Ll,filters:Fl,sort:Bl,views:Gl,kanban:Hl,buttons:Ol,prd:Ul,statuses:ql,priorities:Wl,noMatchingTasks:Vl},_l={save:"Guardar",cancel:"Cancelar",delete:"Eliminar",create:"Crear",edit:"Editar",close:"Cerrar",confirm:"Confirmar",submit:"Enviar",retry:"Reintentar",refresh:"Actualizar",search:"Buscar",clear:"Limpiar",copy:"Copiar",download:"Descargar",upload:"Subir",browse:"Explorar"},Yl={chat:"Chat",shell:"Shell",files:"Archivos",git:"Control de versiones",tasks:"Tareas",browser:"Navegador",computer:"Equipo"},Jl={loading:"Cargando...",success:"Éxito",error:"Error",failed:"Falló",pending:"Pendiente",completed:"Completado",inProgress:"En curso"},Ql={savedSuccessfully:"Guardado correctamente",deletedSuccessfully:"Eliminado correctamente",updatedSuccessfully:"Actualizado correctamente",operationFailed:"La operación falló",networkError:"Error de red. Comprueba tu conexión.",unauthorized:"No autorizado. Inicia sesión.",notFound:"No encontrado",invalidInput:"Entrada no válida",requiredField:"Este campo es obligatorio",unknownError:"Ocurrió un error desconocido"},Zl={settings:"Ajustes",home:"Inicio",back:"Atrás",next:"Siguiente",previous:"Anterior",logout:"Cerrar sesión"},Xl={language:"Idioma",theme:"Tema",darkMode:"Modo oscuro",lightMode:"Modo claro",name:"Nombre",description:"Descripción",enabled:"Activado",disabled:"Desactivado",optional:"Opcional",version:"Versión",select:"Seleccionar",selectAll:"Seleccionar todo",deselectAll:"Deseleccionar todo"},ec={justNow:"Justo ahora",minutesAgo:"hace {{count}} min",hoursAgo:"hace {{count}} horas",daysAgo:"hace {{count}} días",yesterday:"Ayer"},tc={newFile:"Archivo nuevo",newFolder:"Carpeta nueva",rename:"Renombrar",move:"Mover",copyPath:"Copiar ruta",openInEditor:"Abrir en el editor"},nc={loading:"Cargando WindCli",settingUpWorkspace:"Preparando tu espacio de trabajo...",chooseProject:"Elige tu proyecto",selectProjectDescription:"Selecciona un proyecto en la barra lateral para empezar a programar con Claude. Cada proyecto contiene tus sesiones de chat e historial de archivos.",tip:"Consejo",createProjectMobile:"Toca el botón de menú de arriba para acceder a los proyectos",createProjectDesktop:"Crea un proyecto nuevo haciendo clic en el icono de carpeta de la barra lateral",newSession:"Nueva sesión",untitledSession:"Sesión sin título",projectFiles:"Archivos del proyecto"},sc={loading:"Cargando archivos...",files:"Archivos",simpleView:"Vista simple",compactView:"Vista compacta",detailedView:"Vista detallada",searchPlaceholder:"Buscar archivos y carpetas...",clearSearch:"Limpiar búsqueda",name:"Nombre",size:"Tamaño",modified:"Modificado",permissions:"Permisos",noFilesFound:"No se encontraron archivos",checkProjectPath:"Comprueba si la ruta del proyecto es accesible",noMatchesFound:"No se encontraron coincidencias",tryDifferentSearch:"Prueba con otro término o limpia la búsqueda",justNow:"justo ahora",minAgo:"hace {{count}} min",hoursAgo:"hace {{count}} horas",daysAgo:"hace {{count}} días",newFile:"Archivo nuevo (Cmd+N)",newFolder:"Carpeta nueva (Cmd+Shift+N)",refresh:"Actualizar",collapseAll:"Contraer todo",context:{rename:"Renombrar",delete:"Eliminar",copyPath:"Copiar ruta",download:"Descargar",newFile:"Archivo nuevo",newFolder:"Carpeta nueva",upload:"Subir archivos",refresh:"Actualizar",menuLabel:"Menú contextual de archivo",loading:"Cargando..."}},ic={title:"Crear proyecto nuevo",steps:{type:"Tipo",configure:"Configurar",confirm:"Confirmar"},step1:{question:"¿Ya tienes un espacio de trabajo o quieres crear uno nuevo?",existing:{title:"Espacio de trabajo existente",description:"Ya tengo un espacio de trabajo en mi servidor y solo necesito añadirlo a la lista de proyectos"},new:{title:"Espacio de trabajo nuevo",description:"Crea un espacio de trabajo nuevo, opcionalmente clonando un repositorio de GitHub"}},step2:{existingPath:"Ruta del espacio de trabajo",newPath:"Ruta del espacio de trabajo",existingPlaceholder:"/ruta/al/espacio/existente",newPlaceholder:"/ruta/al/espacio/nuevo",existingHelp:"Ruta completa al directorio de tu espacio de trabajo existente",newHelp:"Ruta completa al directorio de tu espacio de trabajo",githubUrl:"URL de GitHub (opcional)",githubPlaceholder:"https://github.com/usuario/repositorio",githubHelp:"Opcional: proporciona una URL de GitHub para clonar un repositorio",githubAuth:"Autenticación de GitHub (opcional)",githubAuthHelp:"Solo se requiere para repositorios privados. Los repos públicos se pueden clonar sin autenticación.",loadingTokens:"Cargando tokens guardados...",storedToken:"Token guardado",newToken:"Token nuevo",nonePublic:"Ninguno (público)",selectToken:"Seleccionar token",selectTokenPlaceholder:"-- Selecciona un token --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"Este token se usará solo para esta operación",publicRepoInfo:"Los repositorios públicos no requieren autenticación. Puedes omitir el token si clonas un repo público.",noTokensHelp:"No hay tokens guardados disponibles. Puedes añadir tokens en Ajustes → Claves API para reutilizarlos fácilmente.",optionalTokenPublic:"Token de GitHub (opcional para repos públicos)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (déjalo vacío para repos públicos)"},step3:{reviewConfig:"Revisa tu configuración",existingWorkspace:"Espacio de trabajo existente",newWorkspace:"Espacio de trabajo nuevo",path:"Ruta:",cloneFrom:"Clonar desde:",authentication:"Autenticación:",usingStoredToken:"Usando token guardado:",usingProvidedToken:"Usando token proporcionado",noAuthentication:"Sin autenticación",sshKey:"Clave SSH",existingInfo:"El espacio de trabajo se añadirá a tu lista de proyectos y estará disponible para sesiones de Claude/Cursor.",newWithClone:"El repositorio se clonará desde esta carpeta.",newEmpty:"El espacio de trabajo se añadirá a tu lista de proyectos y estará disponible para sesiones de Claude/Cursor.",cloningRepository:"Clonando repositorio..."},buttons:{cancel:"Cancelar",back:"Atrás",next:"Siguiente",createProject:"Crear proyecto",creating:"Creando...",cloning:"Clonando..."},errors:{selectType:"Selecciona si tienes un espacio de trabajo existente o quieres crear uno nuevo",providePath:"Proporciona la ruta del espacio de trabajo",failedToCreate:"No se pudo crear el espacio de trabajo",failedToCreateFolder:"No se pudo crear la carpeta"}},ac={genericTool:"una herramienta",codes:{generic:{info:{title:"Notificación"}},permission:{required:{title:"Acción requerida",body:"{{toolName}} está esperando tu decisión."}},run:{stopped:{title:"Ejecución detenida",body:"Motivo: {{reason}}"},failed:{title:"La ejecución falló"}},agent:{notification:{title:"Notificación del agente"}}}},oc={title:"Actualización disponible",newVersionReady:"Hay una versión nueva lista",currentVersion:"Versión actual",latestVersion:"Última versión",whatsNew:"Novedades:",viewFullRelease:"Ver la publicación completa",updateProgress:"Progreso de la actualización:",manualUpgrade:"Actualización manual:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:'O haz clic en "Actualizar ahora" para ejecutar la actualización automáticamente.',updateCompleted:"¡Actualización completada correctamente!",restartServer:"Reinicia el servidor para aplicar los cambios.",updateFailed:"La actualización falló",buttons:{close:"Cerrar",later:"Más tarde",copyCommand:"Copiar comando",updateNow:"Actualizar ahora",updating:"Actualizando..."},ariaLabels:{closeModal:"Cerrar el modal de actualización de versión",showSidebar:"Mostrar barra lateral",settings:"Ajustes",updateAvailable:"Actualización disponible",closeSidebar:"Cerrar barra lateral"}},rc={buttons:_l,tabs:Yl,status:Jl,messages:Ql,navigation:Zl,common:Xl,time:ec,fileOperations:tc,mainContent:nc,fileTree:sc,projectWizard:ic,notifications:ac,versionUpdate:oc},lc="Ajustes",cc={account:"Cuenta",permissions:"Permisos",mcpServers:"Servidores MCP",skills:"Skills",appearance:"Apariencia"},dc={title:"Cuenta",language:"Idioma",languageLabel:"Idioma de la interfaz",languageDescription:"Elige tu idioma preferido para la interfaz",username:"Usuario",email:"Correo electrónico",profile:"Perfil",changePassword:"Cambiar contraseña"},uc={title:"Servidores MCP",addServer:"Añadir servidor",editServer:"Editar servidor",deleteServer:"Eliminar servidor",serverName:"Nombre del servidor",serverType:"Tipo de servidor",config:"Configuración",testConnection:"Probar conexión",status:"Estado",connected:"Conectado",disconnected:"Desconectado",scope:{label:"Ámbito",user:"Usuario",project:"Proyecto"}},pc={title:"Apariencia",theme:"Tema",codeEditor:"Editor de código",editorTheme:"Tema del editor",wordWrap:"Ajuste de línea",showMinimap:"Mostrar minimapa",lineNumbers:"Números de línea",fontSize:"Tamaño de fuente"},mc={saveChanges:"Guardar cambios",resetToDefaults:"Restablecer valores por defecto",cancelChanges:"Cancelar cambios"},gc={title:"Voz",description:"Entrada de voz a texto y lectura en voz alta, mediante un backend de audio compatible con OpenAI.",enable:"Activar voz",enableDescription:"Muestra el botón del micrófono y el botón de lectura en voz alta en los mensajes.",backendTitle:"Backend",backendDescription:"Apunta a OpenAI, Groq o un servidor local (LocalAI, Speaches, Kokoro-FastAPI). Déjalo en blanco para usar el valor por defecto del servidor.",baseUrl:"URL base",apiKey:"Clave API",sttModel:"Modelo de voz a texto",ttsModel:"Modelo de texto a voz",voice:"Voz",format:"Formato de audio",note:"Una URL base personalizada la llama directamente tu navegador y debe permitir solicitudes CORS. Déjala en blanco para usar el backend configurado en el servidor."},hc={title:"Ajustes rápidos",sections:{appearance:"Apariencia",toolDisplay:"Visualización de herramientas",inputSettings:"Ajustes de entrada"},darkMode:"Modo oscuro",showRawParameters:"Mostrar parámetros sin procesar",showThinking:"Mostrar razonamiento",sendByCtrlEnter:"Enviar con Ctrl+Enter",voiceEnabled:"Voz (micro + lectura en voz alta)",sendByCtrlEnterDescription:"Si está activado, Ctrl+Enter envía el mensaje en lugar de solo Enter. Útil para usuarios de IME y evitar envíos accidentales.",dragHandle:{dragging:"Arrastrando el control",closePanel:"Cerrar panel de ajustes",openPanel:"Abrir panel de ajustes",draggingStatus:"Arrastrando...",toggleAndMove:"Clic para alternar, arrastra para mover"}},fc={title:"Atajos de terminal",sectionKeys:"Teclas",sectionNavigation:"Navegación",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"Flecha arriba",arrowDown:"Flecha abajo",scrollDown:"Desplazar hacia abajo",handle:{closePanel:"Cerrar panel de atajos",openPanel:"Abrir panel de atajos"}},bc={label:"Ajustes",agents:"Agentes",appearance:"Apariencia",git:"Git",apiTokens:"API y tokens",voice:"Voz",tasks:"Tareas",browser:"Navegador",notifications:"Notificaciones",plugins:"Plugins",about:"Acerca de"},vc={title:"Notificaciones",description:"Controla qué eventos de notificación recibes.",webPush:{title:"Notificar en este navegador",enable:"Activar notificaciones",disable:"Desactivar notificaciones",enabled:"Las notificaciones están activadas en este navegador",loading:"Actualizando...",unsupported:"Las notificaciones push no son compatibles con este navegador.",denied:"Las notificaciones push están bloqueadas. Permítelas en los ajustes de tu navegador."},desktop:{title:"Notificar en esta app de escritorio",enable:"Activar notificaciones",disable:"Desactivar notificaciones",enabled:"Las notificaciones están activadas en esta app de escritorio",unsupported:"Las notificaciones de escritorio no son compatibles con este sistema."},sound:{title:"Sonido",description:"Reproduce un tono corto cuando una ejecución del chat termina o necesita aprobación de una herramienta.",enabled:"Activado",test:"Probar sonido"},events:{title:"Tipos de evento",actionRequired:"Acción requerida",stop:"Ejecución detenida",error:"Ejecución fallida"}},kc={darkMode:{label:"Modo oscuro",description:"Alterna entre el tema claro y el oscuro"},projectSorting:{label:"Orden de proyectos",description:"Cómo se ordenan los proyectos en la barra lateral",alphabetical:"Alfabético",recentActivity:"Actividad reciente"},codeEditor:{title:"Editor de código",theme:{label:"Tema del editor",description:"Tema por defecto del editor de código"},wordWrap:{label:"Ajuste de línea",description:"Activa el ajuste de línea por defecto en el editor"},showMinimap:{label:"Mostrar minimapa",description:"Muestra un minimapa para navegar más fácil en la vista de diff"},lineNumbers:{label:"Mostrar números de línea",description:"Muestra los números de línea en el editor"},fontSize:{label:"Tamaño de fuente",description:"Tamaño de fuente del editor en píxeles"}}},xc={title:{add:"Añadir servidor MCP",edit:"Editar servidor MCP"},importMode:{form:"Formulario",json:"Importar JSON"},scope:{label:"Ámbito",userGlobal:"Usuario (global)",projectLocal:"Proyecto (local)",userDescription:"Ámbito de usuario: disponible en todos los proyectos de tu máquina",projectDescription:"Ámbito local: solo disponible en el proyecto seleccionado",cannotChange:"El ámbito no se puede cambiar al editar un servidor existente"},fields:{serverName:"Nombre del servidor",transportType:"Tipo de transporte",command:"Comando",arguments:"Argumentos (uno por línea)",jsonConfig:"Configuración JSON",url:"URL",envVars:"Variables de entorno (CLAVE=valor, una por línea)",headers:"Cabeceras (CLAVE=valor, una por línea)",selectProject:"Selecciona un proyecto..."},placeholders:{serverName:"mi-servidor"},validation:{missingType:"Falta el campo obligatorio: type",stdioRequiresCommand:"El tipo stdio requiere un campo command",httpRequiresUrl:"El tipo {{type}} requiere un campo url",invalidJson:"Formato JSON no válido",jsonHelp:"Pega la configuración de tu servidor MCP en formato JSON. Formatos de ejemplo:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"Detalles de configuración (de {{configFile}})",projectPath:"Ruta: {{path}}",actions:{cancel:"Cancelar",saving:"Guardando...",addServer:"Añadir servidor",updateServer:"Actualizar servidor"}},yc={success:"¡Ajustes guardados correctamente!",error:"No se pudieron guardar los ajustes",saving:"Guardando..."},wc={save:"Guardar ajustes",cancel:"Cancelar"},Cc={title:"Configuración de Git",description:"Configura tu identidad de git para los commits. Estos ajustes se aplicarán globalmente mediante git config --global",name:{label:"Nombre para Git",help:"Tu nombre para los commits de git"},email:{label:"Correo para Git",help:"Tu correo para los commits de git"},actions:{save:"Guardar configuración",saving:"Guardando..."},status:{success:"Guardado correctamente"}},Sc={title:"Claves API",description:"Genera claves API para acceder a la API externa desde otras aplicaciones.",newKey:{alertTitle:"⚠️ Guarda tu clave API",alertMessage:"Esta es la única vez que verás esta clave. Guárdala en un lugar seguro.",iveSavedIt:"Ya la guardé"},form:{placeholder:"Nombre de la clave API (p. ej., Servidor de producción)",createButton:"Crear",cancelButton:"Cancelar"},newButton:"Nueva clave API",empty:"Aún no se han creado claves API.",list:{created:"Creada:",lastUsed:"Último uso:"},confirmDelete:"¿Seguro que quieres eliminar esta clave API?",status:{active:"Activa",inactive:"Inactiva"},github:{title:"Tokens de GitHub",description:"Añade tokens de acceso personal de GitHub para clonar repositorios privados mediante la API externa.",descriptionAlt:"Añade tokens de acceso personal de GitHub para clonar repositorios privados. También puedes pasar tokens directamente en las solicitudes de API sin guardarlos.",addButton:"Añadir token",form:{namePlaceholder:"Nombre del token (p. ej., Repos personales)",tokenPlaceholder:"Token de acceso personal de GitHub (ghp_...)",descriptionPlaceholder:"Descripción (opcional)",addButton:"Añadir token",cancelButton:"Cancelar",howToCreate:"Cómo crear un token de acceso personal de GitHub →"},empty:"Aún no se han añadido tokens de GitHub.",added:"Añadido:",confirmDelete:"¿Seguro que quieres eliminar este token de GitHub?"},apiDocsLink:"Documentación de la API",documentation:{title:"Documentación de la API externa",description:"Aprende a usar la API externa para lanzar sesiones de Claude/Cursor desde tus aplicaciones.",viewLink:"Ver documentación de la API →"},loading:"Cargando...",version:{updateAvailable:"Actualización disponible: v{{version}}"}},Pc={checking:"Comprobando la instalación de TaskMaster...",notInstalled:{title:"La CLI de TaskMaster AI no está instalada",description:"La CLI de TaskMaster es necesaria para usar las funciones de gestión de tareas. Instálala para empezar:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"Ver en GitHub",afterInstallation:"Después de la instalación:",steps:{restart:"Reinicia esta aplicación",autoAvailable:"Las funciones de TaskMaster estarán disponibles automáticamente",initCommand:"Usa task-master init en el directorio de tu proyecto"}},settings:{enableLabel:"Activar integración con TaskMaster",enableDescription:"Muestra tareas, banners e indicadores de TaskMaster en la barra lateral y el resto de la interfaz"}},Ac={authStatus:{checking:"Comprobando...",connected:"Conectado",notConnected:"No conectado",disconnected:"Desconectado",checkingAuth:"Comprobando el estado de autenticación...",loggedInAs:"Sesión iniciada como {{email}}",authenticatedUser:"usuario autenticado"},account:{claude:{description:"Asistente de IA Claude de Anthropic"},cursor:{description:"Editor de código con IA Cursor"},codex:{description:"Asistente de IA Codex de OpenAI"},opencode:{description:"Asistente CLI OpenCode"}},connectionStatus:"Estado de la conexión",login:{title:"Iniciar sesión",reAuthenticate:"Volver a autenticar",description:"Inicia sesión en tu cuenta de {{agent}} para activar las funciones de IA",reAuthDescription:"Inicia sesión con otra cuenta o actualiza las credenciales",button:"Iniciar sesión",reLoginButton:"Volver a iniciar sesión"},error:"Error: {{error}}"},jc={title:"Ajustes de permisos",skipPermissions:{label:"Omitir avisos de permisos (usar con precaución)",claudeDescription:"Equivalente al flag --dangerously-skip-permissions",cursorDescription:"Equivalente al flag -f en la CLI de Cursor"},allowedTools:{title:"Herramientas permitidas",description:"Herramientas que se permiten automáticamente sin pedir permiso",placeholder:'p. ej., "Bash(git log:*)" o "Write"',quickAdd:"Añadir rápido herramientas comunes:",empty:"No hay herramientas permitidas configuradas"},blockedTools:{title:"Herramientas bloqueadas",description:"Herramientas que se bloquean automáticamente sin pedir permiso",placeholder:'p. ej., "Bash(rm:*)"',empty:"No hay herramientas bloqueadas configuradas"},allowedCommands:{title:"Comandos de shell permitidos",description:"Comandos de shell que se permiten automáticamente sin preguntar",placeholder:'p. ej., "Shell(ls)" o "Shell(git status)"',quickAdd:"Añadir rápido comandos comunes:",empty:"No hay comandos permitidos configurados"},blockedCommands:{title:"Comandos de shell bloqueados",description:"Comandos de shell que se bloquean automáticamente",placeholder:'p. ej., "Shell(rm -rf)" o "Shell(sudo)"',empty:"No hay comandos bloqueados configurados"},toolExamples:{title:"Ejemplos de patrones de herramientas:",bashGitLog:"- Permitir todos los comandos git log",bashGitDiff:"- Permitir todos los comandos git diff",write:"- Permitir todo uso de la herramienta Write",bashRm:"- Bloquear todos los comandos rm (peligroso)"},shellExamples:{title:"Ejemplos de comandos de shell:",ls:"- Permitir el comando ls",gitStatus:"- Permitir git status",npmInstall:"- Permitir npm install",rmRf:"- Bloquear el borrado recursivo"},codex:{permissionMode:"Modo de permisos",description:"Controla cómo Codex gestiona las modificaciones de archivos y la ejecución de comandos",modes:{default:{title:"Por defecto",description:"Solo los comandos de confianza (ls, cat, grep, git status, etc.) se ejecutan automáticamente. Los demás comandos se omiten. Puede escribir en el espacio de trabajo."},acceptEdits:{title:"Aceptar ediciones",description:"Todos los comandos se ejecutan automáticamente dentro del espacio de trabajo. Modo automático completo con ejecución en sandbox."},bypassPermissions:{title:"Omitir permisos",description:"Acceso completo al sistema sin restricciones. Todos los comandos se ejecutan automáticamente con acceso total a disco y red. Úsalo con precaución."}},technicalDetails:"Detalles técnicos",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted. Comandos de confianza: cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find (sin -exec), etc.",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never. Todos los comandos se autoejecutan dentro del directorio del proyecto.",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never. Acceso completo al sistema; úsalo solo en entornos de confianza.",overrideNote:"Puedes cambiar esto por sesión con el botón de modo en la interfaz del chat."}},actions:{add:"Añadir"}},Tc={title:"Servidores MCP",description:{claude:"Los servidores del Model Context Protocol proporcionan herramientas y fuentes de datos adicionales a Claude",cursor:"Los servidores del Model Context Protocol proporcionan herramientas y fuentes de datos adicionales a Cursor",codex:"Los servidores del Model Context Protocol proporcionan herramientas y fuentes de datos adicionales a Codex",opencode:"Los servidores del Model Context Protocol proporcionan herramientas y fuentes de datos adicionales a OpenCode"},addButton:"Añadir servidor MCP",empty:"No hay servidores MCP configurados",serverType:"Tipo",scope:{local:"local",user:"usuario"},config:{command:"Comando",url:"URL",args:"Argumentos",environment:"Entorno"},tools:{title:"Herramientas",count:"({{count}}):",more:"+{{count}} más"},actions:{edit:"Editar servidor",delete:"Eliminar servidor"},managed:{badge:"Gestionado",hint:"Gestionado por WindCli."},help:{title:"Acerca de MCP en Codex",description:"Codex admite servidores MCP basados en stdio. Puedes añadir servidores que amplíen las capacidades de Codex con herramientas y recursos adicionales."}},Ic={title:"Plugins",description:"Amplía la interfaz con plugins personalizados. Instala desde git o suelta una carpeta en ~/.claude-code-ui/plugins/",installPlaceholder:"https://github.com/usuario/mi-plugin",installButton:"Instalar",installing:"Instalando…",securityWarning:"Instala solo plugins cuyo código fuente hayas revisado o de autores en los que confíes.",scanningPlugins:"Buscando plugins…",noPluginsInstalled:"No hay plugins instalados",pullLatest:"Traer lo último desde git",noGitRemote:"Sin remoto de git — actualización no disponible",uninstallPlugin:"Desinstalar plugin",confirmUninstall:"Haz clic de nuevo para confirmar",confirmUninstallMessage:"¿Quitar {{name}}? Esto no se puede deshacer.",cancel:"Cancelar",remove:"Quitar",updateFailed:"La actualización falló",installFailed:"La instalación falló",uninstallFailed:"La desinstalación falló",toggleFailed:"El cambio de estado falló",starterPluginLabel:"Plugin de inicio",starter:"Inicio",docs:"Docs",sections:{officialTitle:"Plugins oficiales",officialDescription:"Mantenidos por el equipo de WindCli y listos para instalar directamente.",unofficialTitle:"Otros plugins",unofficialDescription:"Plugins e integraciones no oficiales de otros usuarios. Revisa el código fuente antes de instalar."},starterPlugin:{name:"Estadísticas del proyecto",badge:"inicio",description:"Recuento de archivos, líneas de código, desglose por tipo de archivo y actividad reciente de tu proyecto.",install:"Instalar"},terminalPlugin:{name:"Terminal",badge:"oficial",description:"Terminal integrada con acceso completo a la shell directamente en la interfaz.",install:"Instalar"},scheduledPromptPlugin:{name:"Prompts programados",badge:"no oficial",description:"Programa prompts del espacio de trabajo, revisa el historial de ejecuciones y gestiona tareas locales recurrentes.",install:"Instalar"},claudeWatchPlugin:{name:"Claude Watch",badge:"no oficial",description:"Vigila sesiones largas de Claude Code por si se cuelgan y expone controles del proceso.",install:"Instalar"},prismCloudCLI:{name:"PRISM CloudCLI",badge:"no oficial",description:"Inteligencia de sesiones para Claude Code, dentro de WindCli. Descubre por qué tus sesiones queman tokens sin salir del navegador.",install:"Instalar"},sessionManagerPlugin:{name:"Sesiones",badge:"no oficial",description:"Ver, gestionar y terminar sesiones activas de Claude Code.",install:"Instalar"},tokenCostCalculatorPlugin:{name:"Calculadora de costes de tokens",badge:"no oficial",description:"Calcula costes de API a partir de precios de modelos y uso de tokens, con precios de modelos predefinidos.",install:"Instalar"},taskQueuePlugin:{name:"Cola de tareas",badge:"no oficial",description:"Panel de cola de tareas para ver, filtrar y lanzar tareas de agentes.",install:"Instalar"},githubIssuesBoardPlugin:{name:"Tablero de GitHub Issues",badge:"no oficial",description:"Tablero Kanban para GitHub Issues con sincronización bidireccional con TaskMaster e instalación automática de la skill CLI /github-task",install:"Instalar"},claudeUsagePlugin:{name:"Uso de Claude",badge:"no oficial",description:"Sigue en vivo los límites del plan de Claude Code y explora el historial de tokens y costes de 30 días.",install:"Instalar"},morePlugins:"Más",enable:"Activar",disable:"Desactivar",installAriaLabel:"URL del repositorio git del plugin",tab:"pestaña",runningStatus:"en ejecución"},Ec={title:lc,tabs:cc,account:dc,mcp:uc,appearance:pc,actions:mc,voiceSettings:gc,quickSettings:hc,terminalShortcuts:fc,mainTabs:bc,notifications:vc,appearanceSettings:kc,mcpForm:xc,saveStatus:yc,footerActions:wc,git:Cc,apiKeys:Sc,tasks:Pc,agents:Ac,permissions:jc,mcpServers:Tc,pluginSettings:Ic},Mc={title:"Bienvenido de nuevo",description:"Inicia sesión en tu cuenta autoalojada de WindCli",username:"Usuario",password:"Contraseña",submit:"Iniciar sesión",loading:"Iniciando sesión...",errors:{invalidCredentials:"Usuario o contraseña incorrectos",requiredFields:"Completa todos los campos",networkError:"Error de red. Inténtalo de nuevo."},placeholders:{username:"Escribe tu usuario",password:"Escribe tu contraseña"}},zc={title:"Crear cuenta",username:"Usuario",password:"Contraseña",confirmPassword:"Confirmar contraseña",submit:"Crear cuenta",loading:"Creando cuenta...",errors:{passwordMismatch:"Las contraseñas no coinciden",usernameTaken:"El nombre de usuario ya está en uso",weakPassword:"La contraseña es demasiado débil"}},Dc={title:"Cerrar sesión",confirm:"¿Seguro que quieres cerrar sesión?",button:"Cerrar sesión"},Nc={login:Mc,register:zc,logout:Dc},$c={title:"Proyectos",newProject:"Nuevo proyecto",deleteProject:"Quitar proyecto",renameProject:"Renombrar proyecto",noProjects:"No se encontraron proyectos",loadingProjects:"Cargando proyectos...",searchPlaceholder:"Buscar proyectos...",projectNamePlaceholder:"Nombre del proyecto",starred:"Favoritos",all:"Todos",untitledSession:"Sesión sin título",newSession:"Nueva sesión",codexSession:"Sesión de Codex",fetchingProjects:"Obteniendo tus proyectos y sesiones de Claude",projects:"proyectos",noMatchingProjects:"No hay proyectos que coincidan",tryDifferentSearch:"Prueba con otro término de búsqueda",runClaudeCli:"Ejecuta Claude CLI en el directorio de un proyecto para empezar"},Rc={title:"WindCli",subtitle:"Interfaz de asistente de programación con IA"},Lc={title:"Sesiones",newSession:"Nueva sesión",deleteSession:"Eliminar sesión",renameSession:"Renombrar sesión",noSessions:"Aún no hay sesiones",loadingSessions:"Cargando sesiones...",unnamed:"Sin nombre",loading:"Cargando...",showMore:"Mostrar más sesiones"},Fc={viewEnvironments:"Ver entornos",hideSidebar:"Ocultar barra lateral",createProject:"Crear proyecto nuevo",refresh:"Actualizar proyectos y sesiones (Ctrl+R)",renameProject:"Renombrar proyecto (F2)",deleteProject:"Quitar proyecto de la barra lateral (Supr)",addToFavorites:"Añadir a favoritos",removeFromFavorites:"Quitar de favoritos",editSessionName:"Editar manualmente el nombre de la sesión",deleteSession:"Eliminar esta sesión de forma permanente",activeSessionIndicator:"Sesión activa recientemente (últimos 10 minutos)",save:"Guardar",cancel:"Cancelar",clearSearch:"Limpiar búsqueda",openCommandPalette:"Abrir paleta de comandos",attentionRequiredIndicator:"La sesión requiere atención"},Bc={chat:"Chat",files:"Archivos",git:"Git",terminal:"Terminal",tasks:"Tareas"},Gc={refresh:"Actualizar",settings:"Ajustes",collapseAll:"Contraer todo",expandAll:"Expandir todo",cancel:"Cancelar",save:"Guardar",delete:"Eliminar",rename:"Renombrar",joinCommunity:"Unirse a la comunidad",reportIssue:"Informar de un problema",starOnGithub:"Dar estrella en GitHub"},Hc={openSource:"Código abierto"},Oc={active:"Activa",inactive:"Inactiva",thinking:"Pensando...",error:"Error",aborted:"Cancelada",unknown:"Desconocido"},Uc={justNow:"Justo ahora",oneMinuteAgo:"hace 1 min",minutesAgo:"hace {{count}} min",oneHourAgo:"hace 1 hora",hoursAgo:"hace {{count}} horas",oneDayAgo:"hace 1 día",daysAgo:"hace {{count}} días"},qc={deleteConfirm:"¿Seguro que quieres eliminar esto?",renameSuccess:"Renombrado correctamente",deleteSuccess:"Eliminado correctamente",errorOccurred:"Ocurrió un error",deleteSessionConfirm:"¿Seguro que quieres eliminar esta sesión? Esta acción no se puede deshacer.",deleteProjectConfirm:"¿Quitar este proyecto de la barra lateral? Tus archivos, memorias y datos de sesión no se eliminarán.",enterProjectPath:"Introduce la ruta del proyecto",deleteSessionFailed:"No se pudo eliminar la sesión. Inténtalo de nuevo.",deleteSessionError:"Error al eliminar la sesión. Inténtalo de nuevo.",renameSessionFailed:"No se pudo renombrar la sesión. Inténtalo de nuevo.",renameSessionError:"Error al renombrar la sesión. Inténtalo de nuevo.",deleteProjectFailed:"No se pudo quitar el proyecto. Inténtalo de nuevo.",deleteProjectError:"Error al quitar el proyecto. Inténtalo de nuevo.",createProjectFailed:"No se pudo crear el proyecto. Inténtalo de nuevo.",createProjectError:"Error al crear el proyecto. Inténtalo de nuevo.",updateProjectError:"Error al actualizar el proyecto. Inténtalo de nuevo.",refreshError:"No se pudo actualizar. Inténtalo de nuevo.",restoreProjectFailed:"No se pudo restaurar el proyecto. Inténtalo de nuevo.",restoreProjectError:"Error al restaurar el proyecto. Inténtalo de nuevo.",restoreSessionFailed:"No se pudo restaurar la sesión. Inténtalo de nuevo.",restoreSessionError:"Error al restaurar la sesión. Inténtalo de nuevo."},Wc={updateAvailable:"Actualización disponible",restartRequired:"Actualización instalada — reinicia el servidor para aplicarla"},Vc={modeProjects:"Proyectos",modeConversations:"Conversaciones",conversationsPlaceholder:"Buscar en conversaciones...",searching:"Buscando...",sessionTitles:"Títulos de sesiones",conversationContents:"Contenido de conversaciones",noResults:"No se encontraron resultados",tryDifferentQuery:"Prueba con otra búsqueda",matches_one:"{{count}} coincidencia",matches_other:"{{count}} coincidencias",projectsScanned_one:"{{count}} proyecto examinado",projectsScanned_other:"{{count}} proyectos examinados"},Kc={deleteProject:"Quitar proyecto",deleteSession:"Eliminar sesión",confirmDelete:"¿Qué quieres hacer con",sessionCount_one:"Este proyecto contiene {{count}} conversación.",sessionCount_other:"Este proyecto contiene {{count}} conversaciones.",removeFromSidebar:"Solo quitar de la barra lateral",deleteAllData:"Eliminar todos los datos permanentemente",allConversationsDeleted:"El proyecto se quitará de la barra lateral. Tus archivos, memorias y datos de sesión se conservarán.",cannotUndo:"Puedes volver a añadir el proyecto más tarde."},_c={projects:$c,app:Rc,sessions:Lc,tooltips:Fc,navigation:Bc,actions:Gc,branding:Hc,status:Oc,time:Uc,messages:qc,version:Wc,search:Vc,deleteConfirmation:Kc},Yc={copy:"Copiar",copied:"Copiado",copyCode:"Copiar código"},Jc={copy:"Copiar mensaje",copied:"Mensaje copiado",selectFormat:"Selecciona el formato de copia",copyAsMarkdown:"Copiar como markdown",copyAsText:"Copiar como texto"},Qc={user:"U",error:"Error",tool:"Herramienta",claude:"Claude",cursor:"Cursor",codex:"Codex",opencode:"OpenCode"},Zc={settings:"Ajustes de herramientas",error:"Error de herramienta",result:"Resultado de herramienta",viewParams:"Ver parámetros de entrada",viewRawParams:"Ver parámetros sin procesar",viewDiff:"Ver diff de edición de",creatingFile:"Creando archivo nuevo:",updatingTodo:"Actualizando lista de pendientes",read:"Leer",readFile:"Leer archivo",updateTodo:"Actualizar lista de pendientes",readTodo:"Leer lista de pendientes",searchResults:"resultados"},Xc={found:"Se encontraron {{count}} {{type}}",file:"archivo",files:"archivos",pattern:"patrón:",in:"en:"},ed={updated:"Archivo actualizado correctamente",created:"Archivo creado correctamente",written:"Archivo escrito correctamente",diff:"Diff",newFile:"Archivo nuevo",viewContent:"Ver contenido del archivo",viewFullOutput:"Ver salida completa ({{count}} caracteres)",contentDisplayed:"El contenido del archivo se muestra en la vista de diff de arriba"},td={title:"Prompt interactivo",waiting:"Esperando tu respuesta en la CLI",instruction:"Selecciona una opción en la terminal donde está corriendo Claude.",selectedOption:"✓ Claude seleccionó la opción {{number}}",instructionDetail:"En la CLI seleccionarías esta opción de forma interactiva con las flechas o escribiendo el número."},nd={title:"Pensando...",emoji:"💭 Pensando..."},sd={response:"Respuesta JSON"},id={grant:"Conceder permiso para {{tool}}",added:"Permiso añadido",addTo:"Añade {{entry}} a las herramientas permitidas.",retry:"Permiso guardado. Reintenta la solicitud para usar la herramienta.",error:"No se pudieron actualizar los permisos. Inténtalo de nuevo.",openSettings:"Abrir ajustes"},ad={updated:"La lista de pendientes se actualizó correctamente",current:"Lista de pendientes actual"},od={viewPlan:"📋 Ver plan de implementación",title:"Plan de implementación"},rd={resetAt:"Se alcanzó el límite de uso de Claude. Tu límite se restablecerá a las **{{time}} {{timezone}}** - {{date}}"},ld={permissionMode:"Modo de permisos",modes:{default:"Modo por defecto",auto:"Modo automático",acceptEdits:"Aceptar ediciones",bypassPermissions:"Omitir permisos",plan:"Modo de planificación"},descriptions:{default:"Solo los comandos de confianza (ls, cat, grep, git status, etc.) se ejecutan automáticamente. Los demás comandos se omiten. Puede escribir en el espacio de trabajo.",auto:"Un clasificador del modelo decide en cada llamada si aprobar o denegar. Sin intervención, pero más seguro que Omitir — las denegaciones siguen ocurriendo.",acceptEdits:"Todos los comandos se ejecutan automáticamente dentro del espacio de trabajo. Modo automático completo con ejecución en sandbox.",bypassPermissions:"Acceso completo al sistema sin restricciones. Todos los comandos se ejecutan automáticamente con acceso total a disco y red. Úsalo con precaución.",plan:"Modo de planificación: no se ejecutan comandos"},technicalDetails:"Detalles técnicos"},cd={input:"Entrada de voz",stopRecording:"Detener grabación",transcribing:"Transcribiendo…",speak:"Leer en voz alta",stopSpeaking:"Detener",loading:"Cargando…"},dd={placeholder:"Escribe / para comandos, @ para archivos, o pregúntale lo que quieras a {{provider}}...",placeholderDefault:"Escribe tu mensaje...",disabled:"Entrada deshabilitada",attachFiles:"Adjuntar archivos",attachImages:"Adjuntar imágenes",send:"Enviar",stop:"Detener",hintText:{ctrlEnter:"Ctrl+Enter para enviar • Shift+Enter para nueva línea • Tab para cambiar de modo • / para comandos",enter:"Enter para enviar • Shift+Enter para nueva línea • Tab para cambiar de modo • / para comandos",queue:"Enter para poner en cola tu siguiente mensaje",updateQueued:"Enter para actualizar el mensaje en cola"},clickToChangeMode:"Haz clic para cambiar el modo de permisos (o pulsa Tab en el campo de texto)",showAllCommands:"Mostrar todos los comandos",clearInput:"Limpiar entrada",scrollToBottom:"Ir al final",queue:{sendNext:"Poner en cola el siguiente mensaje",update:"Actualizar mensaje en cola",label:"En cola",willSend:"Se enviará cuando esto termine",edit:"Editar mensaje en cola",delete:"Eliminar mensaje en cola"}},ud={reasoning:"Razonamiento",model:"Modelo",effortDefault:"Por defecto",loadingModels:"Cargando modelos…",modelMenu:"Seleccionar modelo y esfuerzo de razonamiento",permissionHeading:"¿Cómo se deben aprobar las acciones de {{provider}}?"},pd={title:"Elige tu asistente de IA",description:"Selecciona un proveedor para iniciar una conversación nueva",selectModel:"Seleccionar modelo",providerInfo:{anthropic:"de Anthropic",openai:"de OpenAI",cursorEditor:"Editor de código con IA",google:"de Google"},readyPrompt:{claude:"Listo para usar Claude con {{model}}. Escribe tu mensaje abajo.",cursor:"Listo para usar Cursor con {{model}}. Escribe tu mensaje abajo.",codex:"Listo para usar Codex con {{model}}. Escribe tu mensaje abajo.",opencode:"Listo para usar OpenCode con {{model}}. Escribe tu mensaje abajo.",default:"Selecciona un proveedor arriba para empezar"},pressToSearch:"Pulsa <kbd>{{shortcut}}</kbd> para buscar sesiones, archivos y commits"},md={continue:{title:"Continúa tu conversación",description:"Haz preguntas sobre tu código, pide cambios u obtén ayuda con tareas de desarrollo"},loading:{olderMessages:"Cargando mensajes anteriores...",sessionMessages:"Cargando mensajes de la sesión..."},messages:{showingOf:"Mostrando {{shown}} de {{total}} mensajes",scrollToLoad:"Desplázate hacia arriba para cargar más",showingLast:"Mostrando los últimos {{count}} mensajes ({{total}} en total)",loadEarlier:"Cargar mensajes anteriores",loadAll:"Cargar todos los mensajes",loadingAll:"Cargando todos los mensajes...",allLoaded:"Todos los mensajes cargados",perfWarning:'Todos los mensajes cargados — el desplazamiento puede ser más lento. Haz clic en "Ir al final" para recuperar el rendimiento.'}},gd={selectProject:{title:"Selecciona un proyecto",description:"Elige un proyecto para abrir una shell interactiva en ese directorio"},status:{newSession:"Sesión nueva",initializing:"Inicializando...",restarting:"Reiniciando..."},actions:{disconnect:"Desconectar",disconnectTitle:"Desconectar de la shell",restart:"Reiniciar",restartTitle:"Reiniciar shell",connect:"Continuar en la shell",connectTitle:"Conectar a la shell"},loading:"Cargando terminal...",connecting:"Conectando a la shell...",startSession:"Iniciar una sesión nueva de Claude",resumeSession:"Reanudar sesión: {{displayName}}...",runCommand:"Ejecutar {{command}} en {{projectName}}",startCli:"Iniciando Claude CLI en {{projectName}}",defaultCommand:"comando"},hd={actions:{thinking:"Pensando",processing:"Procesando",analyzing:"Analizando",working:"Trabajando",computing:"Calculando",reasoning:"Razonando"},state:{live:"En vivo",paused:"En pausa"},elapsed:{seconds:"{{count}}s",minutesSeconds:"{{minutes}}m {{seconds}}s",label:"{{time}} transcurridos",startingNow:"Empezando ahora"},stop:"Detener",controls:{stopGeneration:"Detener generación",pressEscToStop:"Pulsa Esc en cualquier momento para detener"},providers:{assistant:"Asistente"}},fd={startChatWithProvider:"Selecciona un proyecto para empezar a chatear con {{provider}}"},bd={nextTaskPrompt:"Empezar la siguiente tarea"},vd={codeBlock:Yc,copyMessage:Jc,messageTypes:Qc,tools:Zc,search:Xc,fileOperations:ed,interactive:td,thinking:nd,json:sd,permissions:id,todo:ad,plan:od,usageLimit:rd,codex:ld,voice:cd,input:dd,composer:ud,providerSelection:pd,session:md,shell:gd,claudeStatus:hd,projectSelection:fd,tasks:bd},kd={changes:"cambios",previousChange:"Cambio anterior",nextChange:"Cambio siguiente",hideDiff:"Ocultar resaltado de diferencias",showDiff:"Mostrar resaltado de diferencias",settings:"Ajustes del editor",collapse:"Contraer editor",expand:"Expandir editor a ancho completo"},xd="Cargando {{fileName}}...",yd={showingChanges:"Mostrando cambios"},wd={copyPath:"Copiar ruta del archivo",pathCopied:"Ruta del archivo copiada",download:"Descargar archivo",save:"Guardar",saving:"Guardando...",saved:"¡Guardado!",exitFullscreen:"Salir de pantalla completa",fullscreen:"Pantalla completa",close:"Cerrar",previewMarkdown:"Vista previa de markdown",editMarkdown:"Editar markdown"},Cd={lines:"Líneas:",characters:"Caracteres:",shortcuts:"Ctrl+S para guardar • Esc para cerrar"},Sd={title:"Archivo binario",message:'El archivo "{{fileName}}" no se puede mostrar en el editor de texto porque es un archivo binario.'},Pd={loading:"Cargando vista previa...",error:"No se puede mostrar este archivo.",openInNewTab:"Abrir en una pestaña nueva"},Ad={toolbar:kd,loading:xd,header:yd,actions:wd,footer:Cd,binaryFile:Sd,filePreview:Pd},jd={title:"TaskMaster AI no está configurado",description:"TaskMaster ayuda a descomponer proyectos complejos en tareas manejables con asistencia de IA",whatIsTitle:"🎯 ¿Qué es TaskMaster?",features:{aiPowered:"Gestión de tareas con IA: descompone proyectos complejos en subtareas manejables",prdTemplates:"Plantillas PRD: genera tareas a partir de Documentos de Requisitos de Producto",dependencyTracking:"Seguimiento de dependencias: entiende las relaciones entre tareas y el orden de ejecución",progressVisualization:"Visualización del progreso: tableros Kanban y analíticas detalladas de tareas",cliIntegration:"Integración CLI: usa comandos de taskmaster para flujos de trabajo avanzados"},initializeButton:"Inicializar TaskMaster AI"},Td={title:"Primeros pasos con TaskMaster",subtitle:"¡TaskMaster está inicializado! Esto es lo que puedes hacer ahora:",steps:{createPRD:{title:"Crea un Documento de Requisitos de Producto (PRD)",description:"Conversa sobre la idea de tu proyecto y crea un PRD que describa lo que quieres construir.",addButton:"Añadir PRD",existingPRDs:"PRDs existentes:"},generateTasks:{title:"Genera tareas desde el PRD",description:"Cuando tengas un PRD, pídele a tu asistente de IA que lo analice y TaskMaster lo descompondrá automáticamente en tareas manejables con detalles de implementación."},analyzeTasks:{title:"Analiza y expande tareas",description:"Pídele a tu asistente de IA que analice la complejidad de las tareas y las expanda en subtareas detalladas para facilitar la implementación."},startBuilding:{title:"Empieza a construir",description:"Pídele a tu asistente de IA que empiece a trabajar en las tareas, actualice su estado y añada tareas nuevas a medida que tu proyecto evoluciona."}},tip:"💡 Consejo: empieza con un PRD para sacar el máximo partido a la generación de tareas con IA de TaskMaster"},Id={title:"Configuración de TaskMaster",subtitle:"CLI interactiva para {{projectName}}",willStart:"La inicialización de TaskMaster comenzará automáticamente",completed:"¡Configuración de TaskMaster completada! Ya puedes cerrar esta ventana.",closeButton:"Cerrar",closeContinueButton:"Cerrar y continuar"},Ed={title:"Primeros pasos con TaskMaster",subtitle:"Tu guía para una gestión de tareas productiva",examples:{parsePRD:`💬 Ejemplo:
|
|
9
9
|
"Acabo de inicializar un proyecto nuevo con Claude Task Master. Tengo un PRD en .taskmaster/docs/prd.txt. ¿Me ayudas a analizarlo y configurar las tareas iniciales?"`,expandTask:`💬 Ejemplo:
|
|
10
10
|
"La tarea 5 parece compleja. ¿Puedes descomponerla en subtareas?"`,addTask:`💬 Ejemplo:
|
|
11
|
-
"Añade una tarea nueva para implementar la subida de imágenes de perfil de usuario con Cloudinary, e investiga el mejor enfoque."`},moreExamples:"Ver más ejemplos y patrones de uso →",proTips:{title:"💡 Consejos pro",search:"Usa la barra de búsqueda para encontrar tareas específicas rápidamente",views:"Cambia entre las vistas Kanban, Lista y Cuadrícula con los selectores de vista",filters:"Usa los filtros para centrarte en estados o prioridades específicas",details:"Haz clic en cualquier tarea para ver información detallada y gestionar subtareas"},learnMore:{title:"📚 Más información",description:"TaskMaster AI es un sistema avanzado de gestión de tareas creado para desarrolladores. Consulta la documentación, ejemplos y contribuye al proyecto.",githubButton:"Ver en GitHub"}},yd={placeholder:"Buscar tareas..."},wd={button:"Filtros",status:"Estado",priority:"Prioridad",sortBy:"Ordenar por",allStatuses:"Todos los estados",allPriorities:"Todas las prioridades",showing:"Mostrando {{filtered}} de {{total}} tareas",clearFilters:"Limpiar filtros"},Cd={id:"ID",status:"Estado",priority:"Prioridad",idAsc:"ID (ascendente)",idDesc:"ID (descendente)",titleAsc:"Título (A-Z)",titleDesc:"Título (Z-A)",statusAsc:"Estado (pendientes primero)",statusDesc:"Estado (completadas primero)",priorityAsc:"Prioridad (alta primero)",priorityDesc:"Prioridad (baja primero)"},Sd={kanban:"Vista Kanban",list:"Vista de lista",grid:"Vista de cuadrícula"},Pd={pending:"📋 Por hacer",inProgress:"🚀 En curso",done:"✅ Hechas",blocked:"🚫 Bloqueadas",deferred:"⏳ Aplazadas",cancelled:"❌ Canceladas",noTasksYet:"Aún no hay tareas",tasksWillAppear:"Las tareas aparecerán aquí",moveTasksHere:"Mueve las tareas aquí cuando empiecen",completedTasksHere:"Las tareas completadas aparecen aquí",statusTasksHere:"Las tareas con este estado aparecerán aquí"},Ad={help:"Guía de primeros pasos de TaskMaster",prds:"PRDs",addPRD:"Añadir PRD",addTask:"Añadir tarea",createNewPRD:"Crear PRD nuevo",prdsAvailable:"{{count}} PRD(s) disponibles"},jd={modified:"Modificado: {{date}}"},Td={pending:"Pendiente","in-progress":"En curso",done:"Hecha",blocked:"Bloqueada",deferred:"Aplazada",cancelled:"Cancelada"},Id={high:"Alta",medium:"Media",low:"Baja"},Ed={title:"Ninguna tarea coincide con tus filtros",description:"Prueba a ajustar la búsqueda o los criterios de filtrado."},Md={notConfigured:bd,gettingStarted:vd,setupModal:kd,helpGuide:xd,search:yd,filters:wd,sort:Cd,views:Sd,kanban:Pd,buttons:Ad,prd:jd,statuses:Td,priorities:Id,noMatchingTasks:Ed},zd={save:"저장",cancel:"취소",delete:"삭제",create:"생성",edit:"편집",close:"닫기",confirm:"확인",submit:"제출",retry:"재시도",refresh:"새로고침",search:"검색",clear:"지우기",copy:"복사",download:"다운로드",upload:"업로드",browse:"찾아보기"},Dd={chat:"채팅",shell:"Shell",files:"파일",git:"소스 관리",tasks:"작업",browser:"Browser",computer:"Computer"},Nd={loading:"로딩 중...",success:"성공",error:"오류",failed:"실패",pending:"대기 중",completed:"완료",inProgress:"진행 중"},$d={savedSuccessfully:"저장되었습니다",deletedSuccessfully:"삭제되었습니다",updatedSuccessfully:"업데이트되었습니다",operationFailed:"작업 실패",networkError:"네트워크 오류. 연결을 확인해주세요.",unauthorized:"인증되지 않았습니다. 로그인해주세요.",notFound:"찾을 수 없음",invalidInput:"잘못된 입력",requiredField:"필수 항목입니다",unknownError:"알 수 없는 오류가 발생했습니다"},Rd={settings:"설정",home:"홈",back:"뒤로",next:"다음",previous:"이전",logout:"로그아웃"},Ld={language:"언어",theme:"테마",darkMode:"다크 모드",lightMode:"라이트 모드",name:"이름",description:"설명",enabled:"활성화",disabled:"비활성화",optional:"선택사항",version:"버전",select:"선택",selectAll:"전체 선택",deselectAll:"전체 해제"},Fd={justNow:"방금 전",minutesAgo:"{{count}}분 전",hoursAgo:"{{count}}시간 전",daysAgo:"{{count}}일 전",yesterday:"어제"},Bd={newFile:"새 파일",newFolder:"새 폴더",rename:"이름 변경",move:"이동",copyPath:"경로 복사",openInEditor:"에디터에서 열기"},Gd={loading:"WindCli 로딩 중",settingUpWorkspace:"워크스페이스 설정 중...",chooseProject:"프로젝트 선택",selectProjectDescription:"사이드바에서 프로젝트를 선택하여 Claude와 코딩을 시작하세요. 각 프로젝트에는 채팅 세션과 파일 히스토리가 포함됩니다.",tip:"팁",createProjectMobile:"위의 메뉴 버튼을 눌러 프로젝트에 접근하세요",createProjectDesktop:"사이드바의 폴더 아이콘을 클릭하여 새 프로젝트를 생성하세요",newSession:"새 세션",untitledSession:"제목 없는 세션",projectFiles:"프로젝트 파일"},Hd={loading:"파일 로딩 중...",files:"파일",simpleView:"간단히 보기",compactView:"컴팩트 보기",detailedView:"상세히 보기",searchPlaceholder:"파일 및 폴더 검색...",clearSearch:"검색 지우기",name:"이름",size:"크기",modified:"수정일",permissions:"권한",noFilesFound:"파일을 찾을 수 없음",checkProjectPath:"프로젝트 경로가 접근 가능한지 확인하세요",noMatchesFound:"일치하는 항목 없음",tryDifferentSearch:"다른 검색어를 시도하거나 검색을 지우세요",justNow:"방금 전",minAgo:"{{count}}분 전",hoursAgo:"{{count}}시간 전",daysAgo:"{{count}}일 전",newFile:"새 파일 (Cmd+N)",newFolder:"새 폴더 (Cmd+Shift+N)",refresh:"새로고침",collapseAll:"모두 접기",context:{rename:"이름 변경",delete:"삭제",copyPath:"경로 복사",download:"다운로드",newFile:"새 파일",newFolder:"새 폴더",upload:"파일 업로드",refresh:"새로 고침",menuLabel:"파일 컨텍스트 메뉴",loading:"로딩 중..."}},Od={title:"새 프로젝트 생성",steps:{type:"유형",configure:"설정",confirm:"확인"},step1:{question:"이미 워크스페이스가 있으신가요, 아니면 새로 생성하시겠습니까?",existing:{title:"기존 워크스페이스",description:"서버에 이미 워크스페이스가 있고 프로젝트 목록에 추가만 하면 됩니다"},new:{title:"새 워크스페이스",description:"새 워크스페이스를 생성하고, 선택적으로 GitHub 저장소에서 clone합니다"}},step2:{existingPath:"워크스페이스 경로",newPath:"워크스페이스 경로",existingPlaceholder:"/path/to/existing/workspace",newPlaceholder:"/path/to/new/workspace",existingHelp:"기존 워크스페이스 디렉토리의 전체 경로",newHelp:"워크스페이스 디렉토리의 전체 경로",githubUrl:"GitHub URL (선택사항)",githubPlaceholder:"https://github.com/username/repository",githubHelp:"선택사항: 저장소를 clone하려면 GitHub URL을 입력하세요",githubAuth:"GitHub 인증 (선택사항)",githubAuthHelp:"비공개 저장소에만 필요합니다. 공개 저장소는 인증 없이 clone할 수 있습니다.",loadingTokens:"저장된 토큰 로딩 중...",storedToken:"저장된 토큰",newToken:"새 토큰",nonePublic:"없음 (공개)",selectToken:"토큰 선택",selectTokenPlaceholder:"-- 토큰 선택 --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"이 토큰은 이 작업에만 사용됩니다",publicRepoInfo:"공개 저장소는 인증이 필요하지 않습니다. 공개 저장소를 clone하는 경우 토큰을 생략할 수 있습니다.",noTokensHelp:"저장된 토큰이 없습니다. 설정 → API Keys에서 토큰을 추가하면 재사용이 편리합니다.",optionalTokenPublic:"GitHub 토큰 (공개 저장소는 선택사항)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (공개 저장소는 비워두세요)"},step3:{reviewConfig:"설정 검토",existingWorkspace:"기존 워크스페이스",newWorkspace:"새 워크스페이스",path:"경로:",cloneFrom:"Clone 소스:",authentication:"인증:",usingStoredToken:"저장된 토큰 사용:",usingProvidedToken:"제공된 토큰 사용",noAuthentication:"인증 없음",sshKey:"SSH 키",existingInfo:"워크스페이스가 프로젝트 목록에 추가되며 Claude/Cursor 세션에서 사용할 수 있습니다.",newWithClone:"이 폴더에 저장소가 clone됩니다.",newEmpty:"워크스페이스가 프로젝트 목록에 추가되며 Claude/Cursor 세션에서 사용할 수 있습니다.",cloningRepository:"저장소 clone 중..."},buttons:{cancel:"취소",back:"뒤로",next:"다음",createProject:"프로젝트 생성",creating:"생성 중...",cloning:"Clone 중..."},errors:{selectType:"기존 워크스페이스를 사용할지 새로 생성할지 선택해주세요",providePath:"워크스페이스 경로를 입력해주세요",failedToCreate:"워크스페이스 생성 실패",failedToCreateFolder:"폴더 생성 실패"}},Ud={genericTool:"도구",codes:{generic:{info:{title:"알림"}},permission:{required:{title:"작업 필요",body:"{{toolName}} 에 대한 결정을 기다리고 있습니다."}},run:{stopped:{title:"실행이 중지되었습니다",body:"사유: {{reason}}"},failed:{title:"실행 실패"}},agent:{notification:{title:"에이전트 알림"}}}},qd={title:"업데이트 가능",newVersionReady:"새 버전이 준비되었습니다",currentVersion:"현재 버전",latestVersion:"최신 버전",whatsNew:"새로운 기능:",viewFullRelease:"전체 릴리스 보기",updateProgress:"업데이트 진행 상황:",manualUpgrade:"수동 업그레이드:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:'또는 "지금 업데이트"를 클릭하여 자동으로 업데이트합니다.',updateCompleted:"업데이트가 완료되었습니다!",restartServer:"변경사항을 적용하려면 서버를 재시작하세요.",updateFailed:"업데이트 실패",buttons:{close:"닫기",later:"나중에",copyCommand:"명령어 복사",updateNow:"지금 업데이트",updating:"업데이트 중..."},ariaLabels:{closeModal:"버전 업그레이드 모달 닫기",showSidebar:"사이드바 표시",settings:"설정",updateAvailable:"업데이트 가능",closeSidebar:"사이드바 닫기"}},Wd={buttons:zd,tabs:Dd,status:Nd,messages:$d,navigation:Rd,common:Ld,time:Fd,fileOperations:Bd,mainContent:Gd,fileTree:Hd,projectWizard:Od,notifications:Ud,versionUpdate:qd},Vd="설정",Kd={account:"계정",permissions:"권한",mcpServers:"MCP 서버",skills:"스킬",appearance:"외관"},_d={title:"계정",language:"언어",languageLabel:"표시 언어",languageDescription:"인터페이스에 사용할 언어를 선택하세요",username:"사용자명",email:"이메일",profile:"프로필",changePassword:"비밀번호 변경"},Yd={title:"MCP 서버",addServer:"서버 추가",editServer:"서버 편집",deleteServer:"서버 삭제",serverName:"서버 이름",serverType:"서버 유형",config:"설정",testConnection:"연결 테스트",status:"상태",connected:"연결됨",disconnected:"연결 끊김",scope:{label:"범위",user:"사용자",project:"프로젝트"}},Jd={title:"외관",theme:"테마",codeEditor:"코드 에디터",editorTheme:"에디터 테마",wordWrap:"자동 줄바꿈",showMinimap:"미니맵 표시",lineNumbers:"줄 번호",fontSize:"글꼴 크기"},Qd={saveChanges:"변경사항 저장",resetToDefaults:"기본값으로 초기화",cancelChanges:"변경 취소"},Zd={title:"음성",description:"OpenAI 호환 오디오 백엔드를 통한 음성-텍스트 입력 및 소리 내어 읽기 기능입니다.",enable:"음성 활성화",enableDescription:"메시지에 마이크 버튼과 소리 내어 읽기 버튼을 표시합니다.",backendTitle:"백엔드",backendDescription:"OpenAI, Groq 또는 로컬 서버(LocalAI, Speaches, Kokoro-FastAPI)를 지정하세요. 비워두면 서버 기본값을 사용합니다.",baseUrl:"기본 URL",apiKey:"API 키",sttModel:"음성-텍스트 변환 모델",ttsModel:"텍스트-음성 변환 모델",voice:"음성",format:"오디오 형식",note:"사용자 지정 기본 URL은 브라우저에서 직접 호출되므로 브라우저 CORS 요청을 허용해야 합니다. 비워두면 서버에 설정된 백엔드를 사용합니다."},Xd={title:"빠른 설정",sections:{appearance:"외관",toolDisplay:"도구 표시",inputSettings:"입력 설정"},darkMode:"다크 모드",showRawParameters:"Raw 파라미터 표시",showThinking:"생각 과정 표시",sendByCtrlEnter:"Ctrl+Enter로 전송",voiceEnabled:"음성 (마이크 + 소리 내어 읽기)",sendByCtrlEnterDescription:"활성화하면 Enter 대신 Ctrl+Enter로 메시지를 전송합니다. IME 사용자가 실수로 전송하는 것을 방지하는 데 유용합니다.",dragHandle:{dragging:"드래그 핸들",closePanel:"설정 패널 닫기",openPanel:"설정 패널 열기",draggingStatus:"드래그 중...",toggleAndMove:"클릭하여 토글, 드래그하여 이동"}},eu={title:"터미널 단축키",sectionKeys:"키",sectionNavigation:"탐색",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"위쪽 화살표",arrowDown:"아래쪽 화살표",scrollDown:"아래로 스크롤",handle:{closePanel:"단축키 패널 닫기",openPanel:"단축키 패널 열기"}},tu={label:"설정",agents:"에이전트",appearance:"외관",git:"Git",apiTokens:"API & 토큰",voice:"음성",tasks:"작업",browser:"브라우저",notifications:"알림",plugins:"플러그인",about:"정보"},nu={title:"알림",description:"수신할 알림 이벤트를 설정합니다.",webPush:{title:"웹 푸시 알림",enable:"푸시 알림 활성화",disable:"푸시 알림 비활성화",enabled:"푸시 알림이 활성화되었습니다",loading:"업데이트 중...",unsupported:"이 브라우저에서는 푸시 알림이 지원되지 않습니다.",denied:"푸시 알림이 차단되었습니다. 브라우저 설정에서 허용해 주세요."},desktop:{title:"데스크톱 앱 알림",enable:"알림 활성화",disable:"알림 비활성화",enabled:"이 데스크톱 앱에 대한 알림이 활성화되었습니다",unsupported:"이 시스템에서는 데스크톱 알림이 지원되지 않습니다."},sound:{title:"소리",description:"채팅 실행이 완료되면 짧은 알림음을 재생합니다.",enabled:"사용",test:"소리 테스트"},events:{title:"이벤트 유형",actionRequired:"작업 필요",stop:"실행 중지",error:"실행 실패"}},su={darkMode:{label:"다크 모드",description:"라이트/다크 테마 전환"},projectSorting:{label:"프로젝트 정렬",description:"사이드바에서 프로젝트 정렬 방식",alphabetical:"알파벳순",recentActivity:"최근 활동순"},codeEditor:{title:"코드 에디터",theme:{label:"에디터 테마",description:"코드 에디터의 기본 테마"},wordWrap:{label:"자동 줄바꿈",description:"에디터에서 기본적으로 자동 줄바꿈 활성화"},showMinimap:{label:"미니맵 표시",description:"Diff 보기에서 쉬운 탐색을 위한 미니맵 표시"},lineNumbers:{label:"줄 번호 표시",description:"에디터에 줄 번호 표시"},fontSize:{label:"글꼴 크기",description:"에디터 글꼴 크기 (픽셀)"}}},iu={title:{add:"MCP 서버 추가",edit:"MCP 서버 편집"},importMode:{form:"폼 입력",json:"JSON 가져오기"},scope:{label:"범위",userGlobal:"사용자 (전역)",projectLocal:"프로젝트 (로컬)",userDescription:"사용자 범위: 모든 프로젝트에서 사용 가능",projectDescription:"로컬 범위: 선택한 프로젝트에서만 사용 가능",cannotChange:"기존 서버를 편집할 때는 범위를 변경할 수 없습니다"},fields:{serverName:"서버 이름",transportType:"전송 유형",command:"명령어",arguments:"인수 (한 줄에 하나씩)",jsonConfig:"JSON 설정",url:"URL",envVars:"환경 변수 (KEY=value, 한 줄에 하나씩)",headers:"헤더 (KEY=value, 한 줄에 하나씩)",selectProject:"프로젝트 선택..."},placeholders:{serverName:"my-server"},validation:{missingType:"필수 항목 누락: type",stdioRequiresCommand:"stdio 유형은 command 필드가 필요합니다",httpRequiresUrl:"{{type}} 유형은 url 필드가 필요합니다",invalidJson:"잘못된 JSON 형식",jsonHelp:"MCP 서버 설정을 JSON 형식으로 붙여넣으세요. 예시:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"설정 상세 ({{configFile}}에서)",projectPath:"경로: {{path}}",actions:{cancel:"취소",saving:"저장 중...",addServer:"서버 추가",updateServer:"서버 업데이트"}},au={success:"설정이 저장되었습니다!",error:"설정 저장 실패",saving:"저장 중..."},ou={save:"설정 저장",cancel:"취소"},ru={title:"Git 설정",description:"커밋을 위한 Git 정보를 설정합니다. 이 설정은 git config --global로 전역 적용됩니다",name:{label:"Git 이름",help:"Git 커밋에 사용될 이름"},email:{label:"Git 이메일",help:"Git 커밋에 사용될 이메일"},actions:{save:"설정 저장",saving:"저장 중..."},status:{success:"저장 완료"}},lu={title:"API 키",description:"다른 애플리케이션에서 외부 API에 접근하기 위한 API 키를 생성합니다.",newKey:{alertTitle:"⚠️ API 키를 저장하세요",alertMessage:"이 키는 지금만 볼 수 있습니다. 안전하게 보관하세요.",iveSavedIt:"저장했습니다"},form:{placeholder:"API 키 이름 (예: Production Server)",createButton:"생성",cancelButton:"취소"},newButton:"새 API 키",empty:"생성된 API 키가 없습니다.",list:{created:"생성일:",lastUsed:"마지막 사용:"},confirmDelete:"이 API 키를 삭제하시겠습니까?",status:{active:"활성",inactive:"비활성"},github:{title:"GitHub 토큰",description:"외부 API를 통해 비공개 저장소를 clone하기 위한 GitHub Personal Access Token을 추가합니다.",descriptionAlt:"비공개 저장소를 clone하기 위한 GitHub Personal Access Token을 추가합니다. 저장하지 않고 API 요청에 직접 토큰을 전달할 수도 있습니다.",addButton:"토큰 추가",form:{namePlaceholder:"토큰 이름 (예: Personal Repos)",tokenPlaceholder:"GitHub Personal Access Token (ghp_...)",descriptionPlaceholder:"설명 (선택사항)",addButton:"토큰 추가",cancelButton:"취소",howToCreate:"GitHub Personal Access Token 생성 방법 →"},empty:"추가된 GitHub 토큰이 없습니다.",added:"추가일:",confirmDelete:"이 GitHub 토큰을 삭제하시겠습니까?"},apiDocsLink:"API 문서",documentation:{title:"외부 API 문서",description:"외부 API를 사용하여 애플리케이션에서 Claude/Cursor 세션을 트리거하는 방법을 알아보세요.",viewLink:"API 문서 보기 →"},loading:"로딩 중...",version:{updateAvailable:"업데이트 가능: v{{version}}"}},cu={checking:"TaskMaster 설치 확인 중...",notInstalled:{title:"TaskMaster AI CLI가 설치되지 않았습니다",description:"작업 관리 기능을 사용하려면 TaskMaster CLI가 필요합니다. 시작하려면 설치하세요:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"GitHub에서 보기",afterInstallation:"설치 후:",steps:{restart:"이 애플리케이션을 재시작하세요",autoAvailable:"TaskMaster 기능이 자동으로 활성화됩니다",initCommand:"프로젝트 디렉토리에서 task-master init을 사용하세요"}},settings:{enableLabel:"TaskMaster 통합 활성화",enableDescription:"인터페이스 전체에 TaskMaster 작업, 배너 및 사이드바 표시"}},du={authStatus:{checking:"확인 중...",connected:"연결됨",notConnected:"연결되지 않음",disconnected:"연결 끊김",checkingAuth:"인증 상태 확인 중...",loggedInAs:"{{email}}(으)로 로그인됨",authenticatedUser:"인증된 사용자"},account:{claude:{description:"Anthropic Claude AI 어시스턴트"},cursor:{description:"Cursor AI 기반 코드 에디터"},codex:{description:"OpenAI Codex AI 어시스턴트"},opencode:{description:"OpenCode CLI 어시스턴트"}},connectionStatus:"연결 상태",login:{title:"로그인",reAuthenticate:"재인증",description:"AI 기능을 활성화하려면 {{agent}} 계정에 로그인하세요",reAuthDescription:"다른 계정으로 로그인하거나 자격 증명을 새로고침하세요",button:"로그인",reLoginButton:"재로그인"},error:"오류: {{error}}"},uu={title:"권한 설정",skipPermissions:{label:"권한 확인 건너뛰기 (주의해서 사용)",claudeDescription:"--dangerously-skip-permissions 플래그와 동일",cursorDescription:"Cursor CLI의 -f 플래그와 동일"},allowedTools:{title:"허용된 도구",description:"권한 확인 없이 자동으로 허용되는 도구",placeholder:'예: "Bash(git log:*)" 또는 "Write"',quickAdd:"자주 쓰는 도구 빠른 추가:",empty:"설정된 허용 도구 없음"},blockedTools:{title:"차단된 도구",description:"권한 확인 없이 자동으로 차단되는 도구",placeholder:'예: "Bash(rm:*)"',empty:"설정된 차단 도구 없음"},allowedCommands:{title:"허용된 Shell 명령어",description:"권한 확인 없이 자동으로 허용되는 Shell 명령어",placeholder:'예: "Shell(ls)" 또는 "Shell(git status)"',quickAdd:"자주 쓰는 명령어 빠른 추가:",empty:"설정된 허용 명령어 없음"},blockedCommands:{title:"차단된 Shell 명령어",description:"자동으로 차단되는 Shell 명령어",placeholder:'예: "Shell(rm -rf)" 또는 "Shell(sudo)"',empty:"설정된 차단 명령어 없음"},toolExamples:{title:"도구 패턴 예시:",bashGitLog:"- 모든 git log 명령어 허용",bashGitDiff:"- 모든 git diff 명령어 허용",write:"- 모든 Write 도구 사용 허용",bashRm:"- 모든 rm 명령어 차단 (위험)"},shellExamples:{title:"Shell 명령어 예시:",ls:"- ls 명령어 허용",gitStatus:"- git status 허용",npmInstall:"- npm install 허용",rmRf:"- 재귀 삭제 차단"},codex:{permissionMode:"권한 모드",description:"Codex가 파일 수정 및 명령어 실행을 처리하는 방식을 제어합니다",modes:{default:{title:"기본",description:"신뢰할 수 있는 명령어(ls, cat, grep, git status 등)만 자동 실행됩니다. 다른 명령어는 건너뜁니다. 워크스페이스에 쓰기 가능."},acceptEdits:{title:"편집 허용",description:"워크스페이스 내에서 모든 명령어가 자동 실행됩니다. 샌드박스 내 완전 자동 모드."},bypassPermissions:{title:"권한 우회",description:"제한 없는 전체 시스템 접근. 모든 명령어가 전체 디스크 및 네트워크 접근 권한으로 자동 실행됩니다. 주의해서 사용하세요."}},technicalDetails:"기술 상세",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted. 신뢰할 수 있는 명령어: cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find(-exec 제외) 등.",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never. 프로젝트 디렉토리 내에서 모든 명령어 자동 실행.",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never. 전체 시스템 접근, 신뢰할 수 있는 환경에서만 사용하세요.",overrideNote:"채팅 인터페이스의 모드 버튼을 사용하여 세션별로 재정의할 수 있습니다."}},actions:{add:"추가"}},pu={title:"MCP 서버",description:{claude:"Model Context Protocol 서버는 Claude에 추가 도구와 데이터 소스를 제공합니다",cursor:"Model Context Protocol 서버는 Cursor에 추가 도구와 데이터 소스를 제공합니다",codex:"Model Context Protocol 서버는 Codex에 추가 도구와 데이터 소스를 제공합니다",opencode:"Model Context Protocol 서버는 OpenCode에 추가 도구와 데이터 소스를 제공합니다"},addButton:"MCP 서버 추가",empty:"설정된 MCP 서버 없음",serverType:"유형",scope:{local:"로컬",user:"사용자"},config:{command:"명령어",url:"URL",args:"인수",environment:"환경"},tools:{title:"도구",count:"({{count}}):",more:"+{{count}}개 더"},actions:{edit:"서버 편집",delete:"서버 삭제"},managed:{badge:"관리됨",hint:"WindCli가 관리합니다."},help:{title:"Codex MCP 정보",description:"Codex는 stdio 기반 MCP 서버를 지원합니다. 추가 도구와 리소스로 Codex의 기능을 확장하는 서버를 추가할 수 있습니다."}},mu={title:"플러그인",description:"커스텀 플러그인으로 인터페이스를 확장하세요. git에서 설치하거나 ~/.claude-code-ui/plugins/ 폴더에 직접 추가할 수 있습니다.",installPlaceholder:"https://github.com/user/my-plugin",installButton:"설치",installing:"설치 중…",securityWarning:"소스 코드를 검토했거나 신뢰할 수 있는 작성자의 플러그인만 설치하세요.",scanningPlugins:"플러그인 스캔 중…",noPluginsInstalled:"설치된 플러그인이 없습니다",pullLatest:"git에서 최신 버전 가져오기",noGitRemote:"git 리모트가 없음 — 업데이트 불가",uninstallPlugin:"플러그인 삭제",confirmUninstall:"다시 클릭하여 확인",confirmUninstallMessage:"{{name}} 플러그인을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.",cancel:"취소",remove:"삭제",updateFailed:"업데이트 실패",installFailed:"설치 실패",uninstallFailed:"삭제 실패",toggleFailed:"토글 실패",starterPluginLabel:"스타터 플러그인",starter:"스타터",docs:"문서",sections:{officialTitle:"공식 플러그인",officialDescription:"WindCli 팀이 관리하며 바로 설치할 수 있습니다.",unofficialTitle:"기타 플러그인",unofficialDescription:"다른 사용자가 만든 비공식 플러그인과 통합입니다. 설치 전에 소스 코드를 검토하세요."},starterPlugin:{name:"프로젝트 통계",badge:"스타터",description:"프로젝트의 파일 수, 코드 라인 수, 파일 유형별 분석 및 최근 활동을 확인합니다.",install:"설치"},terminalPlugin:{name:"터미널",badge:"공식",description:"인터페이스 내에서 전체 셸 접근 권한을 가진 통합 터미널입니다.",install:"설치"},scheduledPromptPlugin:{name:"예약 프롬프트",badge:"비공식",description:"워크스페이스 프롬프트를 예약하고, 실행 기록을 확인하고, 반복되는 로컬 작업을 관리합니다.",install:"설치"},claudeWatchPlugin:{name:"Claude Watch",badge:"비공식",description:"장시간 실행되는 Claude Code 세션의 멈춤 현상을 감시하고 프로세스 제어 기능을 제공합니다.",install:"설치"},prismCloudCLI:{name:"PRISM CloudCLI",badge:"비공식",description:"WindCli 안에서 제공되는 Claude Code용 세션 인텔리전스입니다. 브라우저를 벗어나지 않고도 세션에서 토큰이 왜 소모되는지 확인하세요.",install:"설치"},sessionManagerPlugin:{name:"세션",badge:"비공식",description:"활성 Claude Code 세션을 보고, 관리하고, 종료합니다.",install:"설치"},tokenCostCalculatorPlugin:{name:"토큰 비용 계산기",badge:"비공식",description:"모델 가격과 토큰 사용량으로 API 비용을 계산합니다. 사전 설정된 모델 가격을 지원합니다.",install:"설치"},taskQueuePlugin:{name:"작업 큐",badge:"비공식",description:"에이전트 작업을 보고, 필터링하고, 실행할 수 있는 작업 큐 대시보드입니다.",install:"설치"},githubIssuesBoardPlugin:{name:"GitHub 이슈 보드",badge:"비공식",description:"양방향 TaskMaster 동기화와 /github-task CLI 스킬 자동 설치를 지원하는 GitHub 이슈용 칸반 보드입니다.",install:"설치"},morePlugins:"더 보기",enable:"활성화",disable:"비활성화",installAriaLabel:"플러그인 git 저장소 URL",tab:"탭",runningStatus:"실행 중"},gu={title:Vd,tabs:Kd,account:_d,mcp:Yd,appearance:Jd,actions:Qd,voiceSettings:Zd,quickSettings:Xd,terminalShortcuts:eu,mainTabs:tu,notifications:nu,appearanceSettings:su,mcpForm:iu,saveStatus:au,footerActions:ou,git:ru,apiKeys:lu,tasks:cu,agents:du,permissions:uu,mcpServers:pu,pluginSettings:mu},hu={title:"다시 오신 것을 환영합니다",description:"WindCli 계정에 로그인하세요",username:"사용자명",password:"비밀번호",submit:"로그인",loading:"로그인 중...",errors:{invalidCredentials:"사용자명 또는 비밀번호가 잘못되었습니다",requiredFields:"모든 항목을 입력해주세요",networkError:"네트워크 오류. 다시 시도해주세요."},placeholders:{username:"사용자명을 입력하세요",password:"비밀번호를 입력하세요"}},fu={title:"계정 생성",username:"사용자명",password:"비밀번호",confirmPassword:"비밀번호 확인",submit:"계정 생성",loading:"계정 생성 중...",errors:{passwordMismatch:"비밀번호가 일치하지 않습니다",usernameTaken:"이미 사용 중인 사용자명입니다",weakPassword:"비밀번호가 너무 약합니다"}},bu={title:"로그아웃",confirm:"정말 로그아웃하시겠습니까?",button:"로그아웃"},vu={login:hu,register:fu,logout:bu},ku={title:"프로젝트",newProject:"새 프로젝트",deleteProject:"프로젝트 제거",renameProject:"프로젝트 이름 변경",noProjects:"프로젝트가 없습니다",loadingProjects:"프로젝트 로딩 중...",searchPlaceholder:"프로젝트 검색...",projectNamePlaceholder:"프로젝트 이름",starred:"즐겨찾기",all:"전체",untitledSession:"제목 없는 세션",newSession:"새 세션",codexSession:"Codex 세션",fetchingProjects:"Claude 프로젝트와 세션을 가져오는 중",projects:"프로젝트",noMatchingProjects:"일치하는 프로젝트 없음",tryDifferentSearch:"검색어를 변경해보세요",runClaudeCli:"프로젝트 디렉토리에서 Claude CLI를 실행하여 시작하세요"},xu={title:"WindCli",subtitle:"AI 코딩 어시스턴트 UI"},yu={title:"세션",newSession:"새 세션",deleteSession:"세션 삭제",renameSession:"세션 이름 변경",noSessions:"세션이 없습니다",loadingSessions:"세션 로딩 중...",unnamed:"이름 없음",loading:"로딩 중...",showMore:"더 많은 세션 보기"},wu={viewEnvironments:"환경 보기",hideSidebar:"사이드바 숨기기",createProject:"새 프로젝트 생성",refresh:"프로젝트 및 세션 새로고침 (Ctrl+R)",renameProject:"프로젝트 이름 변경 (F2)",deleteProject:"사이드바에서 프로젝트 제거 (Delete)",addToFavorites:"즐겨찾기에 추가",removeFromFavorites:"즐겨찾기에서 제거",editSessionName:"세션 이름 직접 편집",deleteSession:"이 세션 영구 삭제",activeSessionIndicator:"최근 활성 세션 (지난 10분)",save:"저장",cancel:"취소",clearSearch:"검색 지우기",openCommandPalette:"명령 팔레트 열기",attentionRequiredIndicator:"세션에 주의가 필요합니다"},Cu={chat:"채팅",files:"파일",git:"Git",terminal:"터미널",tasks:"작업"},Su={refresh:"새로고침",settings:"설정",collapseAll:"모두 접기",expandAll:"모두 펼치기",cancel:"취소",save:"저장",delete:"삭제",rename:"이름 변경",joinCommunity:"커뮤니티 참여",reportIssue:"문제 신고",starOnGithub:"GitHub에서 스타"},Pu={openSource:"오픈 소스"},Au={active:"활성",inactive:"비활성",thinking:"생각 중...",error:"오류",aborted:"중단됨",unknown:"알 수 없음"},ju={justNow:"방금 전",oneMinuteAgo:"1분 전",minutesAgo:"{{count}}분 전",oneHourAgo:"1시간 전",hoursAgo:"{{count}}시간 전",oneDayAgo:"1일 전",daysAgo:"{{count}}일 전"},Tu={deleteConfirm:"정말 삭제하시겠습니까?",renameSuccess:"이름이 변경되었습니다",deleteSuccess:"삭제되었습니다",errorOccurred:"오류가 발생했습니다",deleteSessionConfirm:"이 세션을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.",deleteProjectConfirm:"사이드바에서 이 프로젝트를 제거하시겠습니까? 프로젝트 파일, 메모리 및 세션 데이터는 삭제되지 않습니다.",enterProjectPath:"프로젝트 경로를 입력해주세요",deleteSessionFailed:"세션 삭제 실패. 다시 시도해주세요.",deleteSessionError:"세션 삭제 오류. 다시 시도해주세요.",renameSessionFailed:"세션 이름 변경 실패. 다시 시도해주세요.",renameSessionError:"세션 이름 변경 오류. 다시 시도해주세요.",deleteProjectFailed:"프로젝트 제거 실패. 다시 시도해주세요.",deleteProjectError:"프로젝트 제거 오류. 다시 시도해주세요.",createProjectFailed:"프로젝트 생성 실패. 다시 시도해주세요.",createProjectError:"프로젝트 생성 오류. 다시 시도해주세요.",updateProjectError:"프로젝트 업데이트 오류. 다시 시도해주세요.",refreshError:"새로고침 실패. 다시 시도해주세요.",restoreProjectFailed:"프로젝트 복원 실패. 다시 시도해주세요.",restoreProjectError:"프로젝트 복원 오류. 다시 시도해주세요.",restoreSessionFailed:"세션 복원 실패. 다시 시도해주세요.",restoreSessionError:"세션 복원 오류. 다시 시도해주세요."},Iu={updateAvailable:"업데이트 가능",restartRequired:"업데이트가 설치됨 — 적용하려면 서버를 재시작하세요"},Eu={modeProjects:"프로젝트",modeConversations:"대화",conversationsPlaceholder:"대화 내용 검색...",searching:"검색 중...",sessionTitles:"세션 제목",conversationContents:"대화 내용",noResults:"결과를 찾을 수 없습니다",tryDifferentQuery:"다른 검색어로 시도해보세요",matches_one:"{{count}}개 일치",matches_other:"{{count}}개 일치",projectsScanned_one:"프로젝트 {{count}}개 검색됨",projectsScanned_other:"프로젝트 {{count}}개 검색됨"},Mu={deleteProject:"프로젝트 제거",deleteSession:"세션 삭제",confirmDelete:"이 프로젝트를 어떻게 하시겠습니까:",sessionCount_one:"이 프로젝트에는 {{count}}개의 대화가 있습니다.",sessionCount_other:"이 프로젝트에는 {{count}}개의 대화가 있습니다.",removeFromSidebar:"사이드바에서만 제거",deleteAllData:"모든 데이터 영구 삭제",allConversationsDeleted:"프로젝트가 사이드바에서 제거됩니다. 파일, 메모리 및 세션 데이터는 보존됩니다.",cannotUndo:"나중에 프로젝트를 다시 추가할 수 있습니다."},zu={projects:ku,app:xu,sessions:yu,tooltips:wu,navigation:Cu,actions:Su,branding:Pu,status:Au,time:ju,messages:Tu,version:Iu,search:Eu,deleteConfirmation:Mu},Du={copy:"복사",copied:"복사됨",copyCode:"코드 복사"},Nu={copy:"메시지 복사",copied:"메시지 복사됨",selectFormat:"복사 형식 선택",copyAsMarkdown:"마크다운으로 복사",copyAsText:"텍스트로 복사"},$u={user:"U",error:"오류",tool:"도구",claude:"Claude",cursor:"Cursor",codex:"Codex",opencode:"OpenCode"},Ru={settings:"도구 설정",error:"도구 오류",result:"도구 결과",viewParams:"입력 파라미터 보기",viewRawParams:"Raw 파라미터 보기",viewDiff:"편집 Diff 보기:",creatingFile:"새 파일 생성:",updatingTodo:"Todo 리스트 업데이트",read:"읽기",readFile:"파일 읽기",updateTodo:"Todo 리스트 업데이트",readTodo:"Todo 리스트 읽기",searchResults:"결과"},Lu={found:"{{count}}개의 {{type}} 발견",file:"파일",files:"파일",pattern:"패턴:",in:"위치:"},Fu={updated:"파일이 업데이트되었습니다",created:"파일이 생성되었습니다",written:"파일이 작성되었습니다",diff:"Diff",newFile:"새 파일",viewContent:"파일 내용 보기",viewFullOutput:"전체 출력 보기 ({{count}}자)",contentDisplayed:"파일 내용이 위의 Diff 보기에 표시됩니다"},Bu={title:"대화형 프롬프트",waiting:"CLI에서 응답을 기다리는 중",instruction:"Claude가 실행 중인 터미널에서 옵션을 선택해주세요.",selectedOption:"✓ Claude가 옵션 {{number}}을(를) 선택했습니다",instructionDetail:"CLI에서 화살표 키 또는 숫자를 입력하여 이 옵션을 대화형으로 선택합니다."},Gu={title:"생각 중...",emoji:"💭 생각 중..."},Hu={response:"JSON 응답"},Ou={grant:"{{tool}}에 대한 권한 부여",added:"권한이 추가되었습니다",addTo:"{{entry}}을(를) 허용된 도구에 추가합니다.",retry:"권한이 저장되었습니다. 도구를 사용하려면 요청을 재시도하세요.",error:"권한을 업데이트할 수 없습니다. 다시 시도해주세요.",openSettings:"설정 열기"},Uu={updated:"Todo 리스트가 업데이트되었습니다",current:"현재 Todo 리스트"},qu={viewPlan:"📋 구현 계획 보기",title:"구현 계획"},Wu={resetAt:"Claude 사용량 한도에 도달했습니다. 한도는 **{{time}} {{timezone}}** - {{date}}에 초기화됩니다"},Vu={permissionMode:"권한 모드",modes:{default:"기본 모드",auto:"Auto Mode",acceptEdits:"편집 허용",bypassPermissions:"권한 우회",plan:"Plan 모드"},descriptions:{default:"신뢰할 수 있는 명령어(ls, cat, grep, git status 등)만 자동 실행됩니다. 다른 명령어는 건너뜁니다. 워크스페이스에 쓰기 가능.",auto:"A model classifier decides per tool call whether to approve or deny. Hands-off, but safer than Bypass — denials still happen.",acceptEdits:"워크스페이스 내에서 모든 명령어가 자동 실행됩니다. 샌드박스 내 완전 자동 모드.",bypassPermissions:"제한 없는 전체 시스템 접근. 모든 명령어가 전체 디스크 및 네트워크 접근 권한으로 자동 실행됩니다. 주의해서 사용하세요.",plan:"계획 모드 - 명령어가 실행되지 않습니다"},technicalDetails:"기술 상세"},Ku={input:"음성 입력",stopRecording:"녹음 중지",transcribing:"받아쓰는 중…",speak:"소리 내어 읽기",stopSpeaking:"중지",loading:"로딩 중…"},_u={placeholder:"/를 입력하여 명령어, @를 입력하여 파일, 또는 {{provider}}에게 무엇이든 물어보세요...",placeholderDefault:"메시지를 입력하세요...",disabled:"입력 비활성화",attachFiles:"파일 첨부",attachImages:"이미지 첨부",send:"전송",stop:"중지",hintText:{ctrlEnter:"Ctrl+Enter로 전송 • Shift+Enter로 줄바꿈 • Tab으로 모드 변경 • /로 슬래시 명령어",enter:"Enter로 전송 • Shift+Enter로 줄바꿈 • Tab으로 모드 변경 • /로 슬래시 명령어",queue:"Enter로 다음 메시지 대기열에 추가",updateQueued:"Enter로 대기 중인 메시지 업데이트"},clickToChangeMode:"클릭하여 권한 모드 변경 (또는 입력창에서 Tab)",showAllCommands:"모든 명령어 보기",clearInput:"입력 지우기",scrollToBottom:"맨 아래로 스크롤",queue:{sendNext:"다음 메시지 대기열에 추가",update:"대기 중인 메시지 업데이트",label:"대기 중",willSend:"완료되면 전송됩니다",edit:"대기 중인 메시지 편집",delete:"대기 중인 메시지 삭제"}},Yu={title:"AI 어시스턴트 선택",description:"새 대화를 시작할 프로바이더를 선택하세요",selectModel:"모델 선택",providerInfo:{anthropic:"Anthropic 제공",openai:"OpenAI 제공",cursorEditor:"AI 코드 에디터",google:"Google 제공"},readyPrompt:{claude:"{{model}} 모델로 Claude를 사용할 준비가 되었습니다. 아래에 메시지를 입력하세요.",cursor:"{{model}} 모델로 Cursor를 사용할 준비가 되었습니다. 아래에 메시지를 입력하세요.",codex:"{{model}} 모델로 Codex를 사용할 준비가 되었습니다. 아래에 메시지를 입력하세요.",opencode:"{{model}} 모델로 OpenCode를 사용할 준비가 되었습니다. 아래에 메시지를 입력하세요.",default:"시작하려면 위에서 제공자를 선택하세요"},pressToSearch:"<kbd>{{shortcut}}</kbd>를 눌러 세션, 파일 및 커밋을 검색하세요"},Ju={continue:{title:"대화 계속하기",description:"코드에 대해 질문하거나, 변경을 요청하거나, 개발 작업에 도움을 받으세요"},loading:{olderMessages:"이전 메시지 로딩 중...",sessionMessages:"세션 메시지 로딩 중..."},messages:{showingOf:"{{total}}개 중 {{shown}}개 표시",scrollToLoad:"위로 스크롤하여 더 로드",showingLast:"마지막 {{count}}개 메시지 표시 (총 {{total}}개)",loadEarlier:"이전 메시지 로드",loadAll:"모든 메시지 로드",loadingAll:"모든 메시지 로딩 중...",allLoaded:"모든 메시지 로드 완료",perfWarning:'모든 메시지가 로드됨 - 스크롤이 느려질 수 있습니다. "맨 아래로 스크롤"을 클릭하면 성능이 복구됩니다.'}},Qu={selectProject:{title:"프로젝트 선택",description:"해당 디렉토리에서 대화형 Shell을 열 프로젝트를 선택하세요"},status:{newSession:"새 세션",initializing:"초기화 중...",restarting:"재시작 중..."},actions:{disconnect:"연결 끊기",disconnectTitle:"Shell 연결 끊기",restart:"재시작",restartTitle:"Shell 재시작 (먼저 연결 끊기)",connect:"Shell에서 계속",connectTitle:"Shell에 연결"},loading:"터미널 로딩 중...",connecting:"Shell에 연결 중...",startSession:"새 Claude 세션 시작",resumeSession:"세션 재개: {{displayName}}...",runCommand:"{{projectName}}에서 {{command}} 실행",startCli:"{{projectName}}에서 Claude CLI 시작",defaultCommand:"명령어"},Zu={actions:{thinking:"Thinking",processing:"Processing",analyzing:"Analyzing",working:"Working",computing:"Computing",reasoning:"Reasoning"},state:{live:"Live",paused:"Paused"},elapsed:{seconds:"{{count}}s",minutesSeconds:"{{minutes}}m {{seconds}}s",label:"{{time}} elapsed",startingNow:"Starting now"},stop:"중지",controls:{stopGeneration:"Stop Generation",pressEscToStop:"Press Esc anytime to stop"},providers:{assistant:"Assistant"}},Xu={startChatWithProvider:"{{provider}}와 채팅을 시작하려면 프로젝트를 선택하세요"},ep={nextTaskPrompt:"다음 작업 시작"},tp={codeBlock:Du,copyMessage:Nu,messageTypes:$u,tools:Ru,search:Lu,fileOperations:Fu,interactive:Bu,thinking:Gu,json:Hu,permissions:Ou,todo:Uu,plan:qu,usageLimit:Wu,codex:Vu,voice:Ku,input:_u,providerSelection:Yu,session:Ju,shell:Qu,claudeStatus:Zu,projectSelection:Xu,tasks:ep},np={changes:"변경사항",previousChange:"이전 변경",nextChange:"다음 변경",hideDiff:"Diff 하이라이트 숨기기",showDiff:"Diff 하이라이트 표시",settings:"에디터 설정",collapse:"에디터 접기",expand:"에디터 전체 너비로 펼치기"},sp="{{fileName}} 로딩 중...",ip={showingChanges:"변경사항 표시"},ap={copyPath:"파일 경로 복사",pathCopied:"파일 경로를 복사했습니다",download:"파일 다운로드",save:"저장",saving:"저장 중...",saved:"저장됨!",exitFullscreen:"전체화면 종료",fullscreen:"전체화면",close:"닫기",previewMarkdown:"마크다운 미리보기",editMarkdown:"마크다운 편집"},op={lines:"줄:",characters:"문자:",shortcuts:"Ctrl+S로 저장 • Esc로 닫기"},rp={title:"바이너리 파일",message:'파일 "{{fileName}}"은(는) 바이너리 파일이므로 텍스트 편집기에서 표시할 수 없습니다.'},lp={loading:"미리보기 로딩 중...",error:"이 파일을 표시할 수 없습니다.",openInNewTab:"새 탭에서 열기"},cp={toolbar:np,loading:sp,header:ip,actions:ap,footer:op,binaryFile:rp,filePreview:lp},dp={title:"TaskMaster AI가 설정되지 않았습니다",description:"TaskMaster는 AI 기반 지원으로 복잡한 프로젝트를 관리하기 쉬운 작업 단위로 나눠줍니다",whatIsTitle:"🎯 TaskMaster란?",features:{aiPowered:"AI 기반 작업 관리: 복잡한 프로젝트를 관리하기 쉬운 하위 작업으로 분할",prdTemplates:"PRD 템플릿: 제품 요구사항 문서(PRD)로부터 작업 생성",dependencyTracking:"의존성 추적: 작업 간 관계와 실행 순서 파악",progressVisualization:"진행 상황 시각화: 칸반 보드와 상세한 작업 분석",cliIntegration:"CLI 연동: 고급 워크플로우를 위한 taskmaster 명령어 사용"},initializeButton:"TaskMaster AI 초기화"},up={title:"TaskMaster 시작하기",subtitle:"TaskMaster가 초기화되었습니다! 다음 단계를 안내합니다:",steps:{createPRD:{title:"제품 요구사항 문서(PRD) 작성",description:"프로젝트 아이디어를 정리하고 무엇을 만들고 싶은지 설명하는 PRD를 작성하세요.",addButton:"PRD 추가",existingPRDs:"기존 PRD:"},generateTasks:{title:"PRD로부터 작업 생성",description:"PRD가 준비되면 AI 어시스턴트에게 이를 분석해달라고 요청하세요. TaskMaster가 구현 세부사항과 함께 관리하기 쉬운 작업으로 자동 분할합니다."},analyzeTasks:{title:"작업 분석 및 확장",description:"AI 어시스턴트에게 작업의 복잡도를 분석하고, 더 쉽게 구현할 수 있도록 상세한 하위 작업으로 확장해달라고 요청하세요."},startBuilding:{title:"개발 시작",description:"AI 어시스턴트에게 작업을 시작하고, 상태를 업데이트하고, 프로젝트가 진행됨에 따라 새 작업을 추가해달라고 요청하세요."}},tip:"💡 팁: PRD로 시작하면 TaskMaster의 AI 기반 작업 생성 기능을 최대한 활용할 수 있습니다"},pp={title:"TaskMaster 설정",subtitle:"{{projectName}}용 대화형 CLI",willStart:"TaskMaster 초기화가 자동으로 시작됩니다",completed:"TaskMaster 설정이 완료되었습니다! 이제 이 창을 닫아도 됩니다.",closeButton:"닫기",closeContinueButton:"닫고 계속하기"},mp={title:"TaskMaster 시작하기",subtitle:"생산적인 작업 관리를 위한 가이드",examples:{parsePRD:`💬 예시:
|
|
11
|
+
"Añade una tarea nueva para implementar la subida de imágenes de perfil de usuario con Cloudinary, e investiga el mejor enfoque."`},moreExamples:"Ver más ejemplos y patrones de uso →",proTips:{title:"💡 Consejos pro",search:"Usa la barra de búsqueda para encontrar tareas específicas rápidamente",views:"Cambia entre las vistas Kanban, Lista y Cuadrícula con los selectores de vista",filters:"Usa los filtros para centrarte en estados o prioridades específicas",details:"Haz clic en cualquier tarea para ver información detallada y gestionar subtareas"},learnMore:{title:"📚 Más información",description:"TaskMaster AI es un sistema avanzado de gestión de tareas creado para desarrolladores. Consulta la documentación, ejemplos y contribuye al proyecto.",githubButton:"Ver en GitHub"}},Md={placeholder:"Buscar tareas..."},zd={button:"Filtros",status:"Estado",priority:"Prioridad",sortBy:"Ordenar por",allStatuses:"Todos los estados",allPriorities:"Todas las prioridades",showing:"Mostrando {{filtered}} de {{total}} tareas",clearFilters:"Limpiar filtros"},Dd={id:"ID",status:"Estado",priority:"Prioridad",idAsc:"ID (ascendente)",idDesc:"ID (descendente)",titleAsc:"Título (A-Z)",titleDesc:"Título (Z-A)",statusAsc:"Estado (pendientes primero)",statusDesc:"Estado (completadas primero)",priorityAsc:"Prioridad (alta primero)",priorityDesc:"Prioridad (baja primero)"},Nd={kanban:"Vista Kanban",list:"Vista de lista",grid:"Vista de cuadrícula"},$d={pending:"📋 Por hacer",inProgress:"🚀 En curso",done:"✅ Hechas",blocked:"🚫 Bloqueadas",deferred:"⏳ Aplazadas",cancelled:"❌ Canceladas",noTasksYet:"Aún no hay tareas",tasksWillAppear:"Las tareas aparecerán aquí",moveTasksHere:"Mueve las tareas aquí cuando empiecen",completedTasksHere:"Las tareas completadas aparecen aquí",statusTasksHere:"Las tareas con este estado aparecerán aquí"},Rd={help:"Guía de primeros pasos de TaskMaster",prds:"PRDs",addPRD:"Añadir PRD",addTask:"Añadir tarea",createNewPRD:"Crear PRD nuevo",prdsAvailable:"{{count}} PRD(s) disponibles"},Ld={modified:"Modificado: {{date}}"},Fd={pending:"Pendiente","in-progress":"En curso",done:"Hecha",blocked:"Bloqueada",deferred:"Aplazada",cancelled:"Cancelada"},Bd={high:"Alta",medium:"Media",low:"Baja"},Gd={title:"Ninguna tarea coincide con tus filtros",description:"Prueba a ajustar la búsqueda o los criterios de filtrado."},Hd={notConfigured:jd,gettingStarted:Td,setupModal:Id,helpGuide:Ed,search:Md,filters:zd,sort:Dd,views:Nd,kanban:$d,buttons:Rd,prd:Ld,statuses:Fd,priorities:Bd,noMatchingTasks:Gd},Od={save:"저장",cancel:"취소",delete:"삭제",create:"생성",edit:"편집",close:"닫기",confirm:"확인",submit:"제출",retry:"재시도",refresh:"새로고침",search:"검색",clear:"지우기",copy:"복사",download:"다운로드",upload:"업로드",browse:"찾아보기"},Ud={chat:"채팅",shell:"Shell",files:"파일",git:"소스 관리",tasks:"작업",browser:"Browser",computer:"Computer"},qd={loading:"로딩 중...",success:"성공",error:"오류",failed:"실패",pending:"대기 중",completed:"완료",inProgress:"진행 중"},Wd={savedSuccessfully:"저장되었습니다",deletedSuccessfully:"삭제되었습니다",updatedSuccessfully:"업데이트되었습니다",operationFailed:"작업 실패",networkError:"네트워크 오류. 연결을 확인해주세요.",unauthorized:"인증되지 않았습니다. 로그인해주세요.",notFound:"찾을 수 없음",invalidInput:"잘못된 입력",requiredField:"필수 항목입니다",unknownError:"알 수 없는 오류가 발생했습니다"},Vd={settings:"설정",home:"홈",back:"뒤로",next:"다음",previous:"이전",logout:"로그아웃"},Kd={language:"언어",theme:"테마",darkMode:"다크 모드",lightMode:"라이트 모드",name:"이름",description:"설명",enabled:"활성화",disabled:"비활성화",optional:"선택사항",version:"버전",select:"선택",selectAll:"전체 선택",deselectAll:"전체 해제"},_d={justNow:"방금 전",minutesAgo:"{{count}}분 전",hoursAgo:"{{count}}시간 전",daysAgo:"{{count}}일 전",yesterday:"어제"},Yd={newFile:"새 파일",newFolder:"새 폴더",rename:"이름 변경",move:"이동",copyPath:"경로 복사",openInEditor:"에디터에서 열기"},Jd={loading:"WindCli 로딩 중",settingUpWorkspace:"워크스페이스 설정 중...",chooseProject:"프로젝트 선택",selectProjectDescription:"사이드바에서 프로젝트를 선택하여 Claude와 코딩을 시작하세요. 각 프로젝트에는 채팅 세션과 파일 히스토리가 포함됩니다.",tip:"팁",createProjectMobile:"위의 메뉴 버튼을 눌러 프로젝트에 접근하세요",createProjectDesktop:"사이드바의 폴더 아이콘을 클릭하여 새 프로젝트를 생성하세요",newSession:"새 세션",untitledSession:"제목 없는 세션",projectFiles:"프로젝트 파일"},Qd={loading:"파일 로딩 중...",files:"파일",simpleView:"간단히 보기",compactView:"컴팩트 보기",detailedView:"상세히 보기",searchPlaceholder:"파일 및 폴더 검색...",clearSearch:"검색 지우기",name:"이름",size:"크기",modified:"수정일",permissions:"권한",noFilesFound:"파일을 찾을 수 없음",checkProjectPath:"프로젝트 경로가 접근 가능한지 확인하세요",noMatchesFound:"일치하는 항목 없음",tryDifferentSearch:"다른 검색어를 시도하거나 검색을 지우세요",justNow:"방금 전",minAgo:"{{count}}분 전",hoursAgo:"{{count}}시간 전",daysAgo:"{{count}}일 전",newFile:"새 파일 (Cmd+N)",newFolder:"새 폴더 (Cmd+Shift+N)",refresh:"새로고침",collapseAll:"모두 접기",context:{rename:"이름 변경",delete:"삭제",copyPath:"경로 복사",download:"다운로드",newFile:"새 파일",newFolder:"새 폴더",upload:"파일 업로드",refresh:"새로 고침",menuLabel:"파일 컨텍스트 메뉴",loading:"로딩 중..."}},Zd={title:"새 프로젝트 생성",steps:{type:"유형",configure:"설정",confirm:"확인"},step1:{question:"이미 워크스페이스가 있으신가요, 아니면 새로 생성하시겠습니까?",existing:{title:"기존 워크스페이스",description:"서버에 이미 워크스페이스가 있고 프로젝트 목록에 추가만 하면 됩니다"},new:{title:"새 워크스페이스",description:"새 워크스페이스를 생성하고, 선택적으로 GitHub 저장소에서 clone합니다"}},step2:{existingPath:"워크스페이스 경로",newPath:"워크스페이스 경로",existingPlaceholder:"/path/to/existing/workspace",newPlaceholder:"/path/to/new/workspace",existingHelp:"기존 워크스페이스 디렉토리의 전체 경로",newHelp:"워크스페이스 디렉토리의 전체 경로",githubUrl:"GitHub URL (선택사항)",githubPlaceholder:"https://github.com/username/repository",githubHelp:"선택사항: 저장소를 clone하려면 GitHub URL을 입력하세요",githubAuth:"GitHub 인증 (선택사항)",githubAuthHelp:"비공개 저장소에만 필요합니다. 공개 저장소는 인증 없이 clone할 수 있습니다.",loadingTokens:"저장된 토큰 로딩 중...",storedToken:"저장된 토큰",newToken:"새 토큰",nonePublic:"없음 (공개)",selectToken:"토큰 선택",selectTokenPlaceholder:"-- 토큰 선택 --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"이 토큰은 이 작업에만 사용됩니다",publicRepoInfo:"공개 저장소는 인증이 필요하지 않습니다. 공개 저장소를 clone하는 경우 토큰을 생략할 수 있습니다.",noTokensHelp:"저장된 토큰이 없습니다. 설정 → API Keys에서 토큰을 추가하면 재사용이 편리합니다.",optionalTokenPublic:"GitHub 토큰 (공개 저장소는 선택사항)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (공개 저장소는 비워두세요)"},step3:{reviewConfig:"설정 검토",existingWorkspace:"기존 워크스페이스",newWorkspace:"새 워크스페이스",path:"경로:",cloneFrom:"Clone 소스:",authentication:"인증:",usingStoredToken:"저장된 토큰 사용:",usingProvidedToken:"제공된 토큰 사용",noAuthentication:"인증 없음",sshKey:"SSH 키",existingInfo:"워크스페이스가 프로젝트 목록에 추가되며 Claude/Cursor 세션에서 사용할 수 있습니다.",newWithClone:"이 폴더에 저장소가 clone됩니다.",newEmpty:"워크스페이스가 프로젝트 목록에 추가되며 Claude/Cursor 세션에서 사용할 수 있습니다.",cloningRepository:"저장소 clone 중..."},buttons:{cancel:"취소",back:"뒤로",next:"다음",createProject:"프로젝트 생성",creating:"생성 중...",cloning:"Clone 중..."},errors:{selectType:"기존 워크스페이스를 사용할지 새로 생성할지 선택해주세요",providePath:"워크스페이스 경로를 입력해주세요",failedToCreate:"워크스페이스 생성 실패",failedToCreateFolder:"폴더 생성 실패"}},Xd={genericTool:"도구",codes:{generic:{info:{title:"알림"}},permission:{required:{title:"작업 필요",body:"{{toolName}} 에 대한 결정을 기다리고 있습니다."}},run:{stopped:{title:"실행이 중지되었습니다",body:"사유: {{reason}}"},failed:{title:"실행 실패"}},agent:{notification:{title:"에이전트 알림"}}}},eu={title:"업데이트 가능",newVersionReady:"새 버전이 준비되었습니다",currentVersion:"현재 버전",latestVersion:"최신 버전",whatsNew:"새로운 기능:",viewFullRelease:"전체 릴리스 보기",updateProgress:"업데이트 진행 상황:",manualUpgrade:"수동 업그레이드:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:'또는 "지금 업데이트"를 클릭하여 자동으로 업데이트합니다.',updateCompleted:"업데이트가 완료되었습니다!",restartServer:"변경사항을 적용하려면 서버를 재시작하세요.",updateFailed:"업데이트 실패",buttons:{close:"닫기",later:"나중에",copyCommand:"명령어 복사",updateNow:"지금 업데이트",updating:"업데이트 중..."},ariaLabels:{closeModal:"버전 업그레이드 모달 닫기",showSidebar:"사이드바 표시",settings:"설정",updateAvailable:"업데이트 가능",closeSidebar:"사이드바 닫기"}},tu={buttons:Od,tabs:Ud,status:qd,messages:Wd,navigation:Vd,common:Kd,time:_d,fileOperations:Yd,mainContent:Jd,fileTree:Qd,projectWizard:Zd,notifications:Xd,versionUpdate:eu},nu="설정",su={account:"계정",permissions:"권한",mcpServers:"MCP 서버",skills:"스킬",appearance:"외관"},iu={title:"계정",language:"언어",languageLabel:"표시 언어",languageDescription:"인터페이스에 사용할 언어를 선택하세요",username:"사용자명",email:"이메일",profile:"프로필",changePassword:"비밀번호 변경"},au={title:"MCP 서버",addServer:"서버 추가",editServer:"서버 편집",deleteServer:"서버 삭제",serverName:"서버 이름",serverType:"서버 유형",config:"설정",testConnection:"연결 테스트",status:"상태",connected:"연결됨",disconnected:"연결 끊김",scope:{label:"범위",user:"사용자",project:"프로젝트"}},ou={title:"외관",theme:"테마",codeEditor:"코드 에디터",editorTheme:"에디터 테마",wordWrap:"자동 줄바꿈",showMinimap:"미니맵 표시",lineNumbers:"줄 번호",fontSize:"글꼴 크기"},ru={saveChanges:"변경사항 저장",resetToDefaults:"기본값으로 초기화",cancelChanges:"변경 취소"},lu={title:"음성",description:"OpenAI 호환 오디오 백엔드를 통한 음성-텍스트 입력 및 소리 내어 읽기 기능입니다.",enable:"음성 활성화",enableDescription:"메시지에 마이크 버튼과 소리 내어 읽기 버튼을 표시합니다.",backendTitle:"백엔드",backendDescription:"OpenAI, Groq 또는 로컬 서버(LocalAI, Speaches, Kokoro-FastAPI)를 지정하세요. 비워두면 서버 기본값을 사용합니다.",baseUrl:"기본 URL",apiKey:"API 키",sttModel:"음성-텍스트 변환 모델",ttsModel:"텍스트-음성 변환 모델",voice:"음성",format:"오디오 형식",note:"사용자 지정 기본 URL은 브라우저에서 직접 호출되므로 브라우저 CORS 요청을 허용해야 합니다. 비워두면 서버에 설정된 백엔드를 사용합니다."},cu={title:"빠른 설정",sections:{appearance:"외관",toolDisplay:"도구 표시",inputSettings:"입력 설정"},darkMode:"다크 모드",showRawParameters:"Raw 파라미터 표시",showThinking:"생각 과정 표시",sendByCtrlEnter:"Ctrl+Enter로 전송",voiceEnabled:"음성 (마이크 + 소리 내어 읽기)",sendByCtrlEnterDescription:"활성화하면 Enter 대신 Ctrl+Enter로 메시지를 전송합니다. IME 사용자가 실수로 전송하는 것을 방지하는 데 유용합니다.",dragHandle:{dragging:"드래그 핸들",closePanel:"설정 패널 닫기",openPanel:"설정 패널 열기",draggingStatus:"드래그 중...",toggleAndMove:"클릭하여 토글, 드래그하여 이동"}},du={title:"터미널 단축키",sectionKeys:"키",sectionNavigation:"탐색",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"위쪽 화살표",arrowDown:"아래쪽 화살표",scrollDown:"아래로 스크롤",handle:{closePanel:"단축키 패널 닫기",openPanel:"단축키 패널 열기"}},uu={label:"설정",agents:"에이전트",appearance:"외관",git:"Git",apiTokens:"API & 토큰",voice:"음성",tasks:"작업",browser:"브라우저",notifications:"알림",plugins:"플러그인",about:"정보"},pu={title:"알림",description:"수신할 알림 이벤트를 설정합니다.",webPush:{title:"웹 푸시 알림",enable:"푸시 알림 활성화",disable:"푸시 알림 비활성화",enabled:"푸시 알림이 활성화되었습니다",loading:"업데이트 중...",unsupported:"이 브라우저에서는 푸시 알림이 지원되지 않습니다.",denied:"푸시 알림이 차단되었습니다. 브라우저 설정에서 허용해 주세요."},desktop:{title:"데스크톱 앱 알림",enable:"알림 활성화",disable:"알림 비활성화",enabled:"이 데스크톱 앱에 대한 알림이 활성화되었습니다",unsupported:"이 시스템에서는 데스크톱 알림이 지원되지 않습니다."},sound:{title:"소리",description:"채팅 실행이 완료되면 짧은 알림음을 재생합니다.",enabled:"사용",test:"소리 테스트"},events:{title:"이벤트 유형",actionRequired:"작업 필요",stop:"실행 중지",error:"실행 실패"}},mu={darkMode:{label:"다크 모드",description:"라이트/다크 테마 전환"},projectSorting:{label:"프로젝트 정렬",description:"사이드바에서 프로젝트 정렬 방식",alphabetical:"알파벳순",recentActivity:"최근 활동순"},codeEditor:{title:"코드 에디터",theme:{label:"에디터 테마",description:"코드 에디터의 기본 테마"},wordWrap:{label:"자동 줄바꿈",description:"에디터에서 기본적으로 자동 줄바꿈 활성화"},showMinimap:{label:"미니맵 표시",description:"Diff 보기에서 쉬운 탐색을 위한 미니맵 표시"},lineNumbers:{label:"줄 번호 표시",description:"에디터에 줄 번호 표시"},fontSize:{label:"글꼴 크기",description:"에디터 글꼴 크기 (픽셀)"}}},gu={title:{add:"MCP 서버 추가",edit:"MCP 서버 편집"},importMode:{form:"폼 입력",json:"JSON 가져오기"},scope:{label:"범위",userGlobal:"사용자 (전역)",projectLocal:"프로젝트 (로컬)",userDescription:"사용자 범위: 모든 프로젝트에서 사용 가능",projectDescription:"로컬 범위: 선택한 프로젝트에서만 사용 가능",cannotChange:"기존 서버를 편집할 때는 범위를 변경할 수 없습니다"},fields:{serverName:"서버 이름",transportType:"전송 유형",command:"명령어",arguments:"인수 (한 줄에 하나씩)",jsonConfig:"JSON 설정",url:"URL",envVars:"환경 변수 (KEY=value, 한 줄에 하나씩)",headers:"헤더 (KEY=value, 한 줄에 하나씩)",selectProject:"프로젝트 선택..."},placeholders:{serverName:"my-server"},validation:{missingType:"필수 항목 누락: type",stdioRequiresCommand:"stdio 유형은 command 필드가 필요합니다",httpRequiresUrl:"{{type}} 유형은 url 필드가 필요합니다",invalidJson:"잘못된 JSON 형식",jsonHelp:"MCP 서버 설정을 JSON 형식으로 붙여넣으세요. 예시:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"설정 상세 ({{configFile}}에서)",projectPath:"경로: {{path}}",actions:{cancel:"취소",saving:"저장 중...",addServer:"서버 추가",updateServer:"서버 업데이트"}},hu={success:"설정이 저장되었습니다!",error:"설정 저장 실패",saving:"저장 중..."},fu={save:"설정 저장",cancel:"취소"},bu={title:"Git 설정",description:"커밋을 위한 Git 정보를 설정합니다. 이 설정은 git config --global로 전역 적용됩니다",name:{label:"Git 이름",help:"Git 커밋에 사용될 이름"},email:{label:"Git 이메일",help:"Git 커밋에 사용될 이메일"},actions:{save:"설정 저장",saving:"저장 중..."},status:{success:"저장 완료"}},vu={title:"API 키",description:"다른 애플리케이션에서 외부 API에 접근하기 위한 API 키를 생성합니다.",newKey:{alertTitle:"⚠️ API 키를 저장하세요",alertMessage:"이 키는 지금만 볼 수 있습니다. 안전하게 보관하세요.",iveSavedIt:"저장했습니다"},form:{placeholder:"API 키 이름 (예: Production Server)",createButton:"생성",cancelButton:"취소"},newButton:"새 API 키",empty:"생성된 API 키가 없습니다.",list:{created:"생성일:",lastUsed:"마지막 사용:"},confirmDelete:"이 API 키를 삭제하시겠습니까?",status:{active:"활성",inactive:"비활성"},github:{title:"GitHub 토큰",description:"외부 API를 통해 비공개 저장소를 clone하기 위한 GitHub Personal Access Token을 추가합니다.",descriptionAlt:"비공개 저장소를 clone하기 위한 GitHub Personal Access Token을 추가합니다. 저장하지 않고 API 요청에 직접 토큰을 전달할 수도 있습니다.",addButton:"토큰 추가",form:{namePlaceholder:"토큰 이름 (예: Personal Repos)",tokenPlaceholder:"GitHub Personal Access Token (ghp_...)",descriptionPlaceholder:"설명 (선택사항)",addButton:"토큰 추가",cancelButton:"취소",howToCreate:"GitHub Personal Access Token 생성 방법 →"},empty:"추가된 GitHub 토큰이 없습니다.",added:"추가일:",confirmDelete:"이 GitHub 토큰을 삭제하시겠습니까?"},apiDocsLink:"API 문서",documentation:{title:"외부 API 문서",description:"외부 API를 사용하여 애플리케이션에서 Claude/Cursor 세션을 트리거하는 방법을 알아보세요.",viewLink:"API 문서 보기 →"},loading:"로딩 중...",version:{updateAvailable:"업데이트 가능: v{{version}}"}},ku={checking:"TaskMaster 설치 확인 중...",notInstalled:{title:"TaskMaster AI CLI가 설치되지 않았습니다",description:"작업 관리 기능을 사용하려면 TaskMaster CLI가 필요합니다. 시작하려면 설치하세요:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"GitHub에서 보기",afterInstallation:"설치 후:",steps:{restart:"이 애플리케이션을 재시작하세요",autoAvailable:"TaskMaster 기능이 자동으로 활성화됩니다",initCommand:"프로젝트 디렉토리에서 task-master init을 사용하세요"}},settings:{enableLabel:"TaskMaster 통합 활성화",enableDescription:"인터페이스 전체에 TaskMaster 작업, 배너 및 사이드바 표시"}},xu={authStatus:{checking:"확인 중...",connected:"연결됨",notConnected:"연결되지 않음",disconnected:"연결 끊김",checkingAuth:"인증 상태 확인 중...",loggedInAs:"{{email}}(으)로 로그인됨",authenticatedUser:"인증된 사용자"},account:{claude:{description:"Anthropic Claude AI 어시스턴트"},cursor:{description:"Cursor AI 기반 코드 에디터"},codex:{description:"OpenAI Codex AI 어시스턴트"},opencode:{description:"OpenCode CLI 어시스턴트"}},connectionStatus:"연결 상태",login:{title:"로그인",reAuthenticate:"재인증",description:"AI 기능을 활성화하려면 {{agent}} 계정에 로그인하세요",reAuthDescription:"다른 계정으로 로그인하거나 자격 증명을 새로고침하세요",button:"로그인",reLoginButton:"재로그인"},error:"오류: {{error}}"},yu={title:"권한 설정",skipPermissions:{label:"권한 확인 건너뛰기 (주의해서 사용)",claudeDescription:"--dangerously-skip-permissions 플래그와 동일",cursorDescription:"Cursor CLI의 -f 플래그와 동일"},allowedTools:{title:"허용된 도구",description:"권한 확인 없이 자동으로 허용되는 도구",placeholder:'예: "Bash(git log:*)" 또는 "Write"',quickAdd:"자주 쓰는 도구 빠른 추가:",empty:"설정된 허용 도구 없음"},blockedTools:{title:"차단된 도구",description:"권한 확인 없이 자동으로 차단되는 도구",placeholder:'예: "Bash(rm:*)"',empty:"설정된 차단 도구 없음"},allowedCommands:{title:"허용된 Shell 명령어",description:"권한 확인 없이 자동으로 허용되는 Shell 명령어",placeholder:'예: "Shell(ls)" 또는 "Shell(git status)"',quickAdd:"자주 쓰는 명령어 빠른 추가:",empty:"설정된 허용 명령어 없음"},blockedCommands:{title:"차단된 Shell 명령어",description:"자동으로 차단되는 Shell 명령어",placeholder:'예: "Shell(rm -rf)" 또는 "Shell(sudo)"',empty:"설정된 차단 명령어 없음"},toolExamples:{title:"도구 패턴 예시:",bashGitLog:"- 모든 git log 명령어 허용",bashGitDiff:"- 모든 git diff 명령어 허용",write:"- 모든 Write 도구 사용 허용",bashRm:"- 모든 rm 명령어 차단 (위험)"},shellExamples:{title:"Shell 명령어 예시:",ls:"- ls 명령어 허용",gitStatus:"- git status 허용",npmInstall:"- npm install 허용",rmRf:"- 재귀 삭제 차단"},codex:{permissionMode:"권한 모드",description:"Codex가 파일 수정 및 명령어 실행을 처리하는 방식을 제어합니다",modes:{default:{title:"기본",description:"신뢰할 수 있는 명령어(ls, cat, grep, git status 등)만 자동 실행됩니다. 다른 명령어는 건너뜁니다. 워크스페이스에 쓰기 가능."},acceptEdits:{title:"편집 허용",description:"워크스페이스 내에서 모든 명령어가 자동 실행됩니다. 샌드박스 내 완전 자동 모드."},bypassPermissions:{title:"권한 우회",description:"제한 없는 전체 시스템 접근. 모든 명령어가 전체 디스크 및 네트워크 접근 권한으로 자동 실행됩니다. 주의해서 사용하세요."}},technicalDetails:"기술 상세",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted. 신뢰할 수 있는 명령어: cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find(-exec 제외) 등.",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never. 프로젝트 디렉토리 내에서 모든 명령어 자동 실행.",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never. 전체 시스템 접근, 신뢰할 수 있는 환경에서만 사용하세요.",overrideNote:"채팅 인터페이스의 모드 버튼을 사용하여 세션별로 재정의할 수 있습니다."}},actions:{add:"추가"}},wu={title:"MCP 서버",description:{claude:"Model Context Protocol 서버는 Claude에 추가 도구와 데이터 소스를 제공합니다",cursor:"Model Context Protocol 서버는 Cursor에 추가 도구와 데이터 소스를 제공합니다",codex:"Model Context Protocol 서버는 Codex에 추가 도구와 데이터 소스를 제공합니다",opencode:"Model Context Protocol 서버는 OpenCode에 추가 도구와 데이터 소스를 제공합니다"},addButton:"MCP 서버 추가",empty:"설정된 MCP 서버 없음",serverType:"유형",scope:{local:"로컬",user:"사용자"},config:{command:"명령어",url:"URL",args:"인수",environment:"환경"},tools:{title:"도구",count:"({{count}}):",more:"+{{count}}개 더"},actions:{edit:"서버 편집",delete:"서버 삭제"},managed:{badge:"관리됨",hint:"WindCli가 관리합니다."},help:{title:"Codex MCP 정보",description:"Codex는 stdio 기반 MCP 서버를 지원합니다. 추가 도구와 리소스로 Codex의 기능을 확장하는 서버를 추가할 수 있습니다."}},Cu={title:"플러그인",description:"커스텀 플러그인으로 인터페이스를 확장하세요. git에서 설치하거나 ~/.claude-code-ui/plugins/ 폴더에 직접 추가할 수 있습니다.",installPlaceholder:"https://github.com/user/my-plugin",installButton:"설치",installing:"설치 중…",securityWarning:"소스 코드를 검토했거나 신뢰할 수 있는 작성자의 플러그인만 설치하세요.",scanningPlugins:"플러그인 스캔 중…",noPluginsInstalled:"설치된 플러그인이 없습니다",pullLatest:"git에서 최신 버전 가져오기",noGitRemote:"git 리모트가 없음 — 업데이트 불가",uninstallPlugin:"플러그인 삭제",confirmUninstall:"다시 클릭하여 확인",confirmUninstallMessage:"{{name}} 플러그인을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.",cancel:"취소",remove:"삭제",updateFailed:"업데이트 실패",installFailed:"설치 실패",uninstallFailed:"삭제 실패",toggleFailed:"토글 실패",starterPluginLabel:"스타터 플러그인",starter:"스타터",docs:"문서",sections:{officialTitle:"공식 플러그인",officialDescription:"WindCli 팀이 관리하며 바로 설치할 수 있습니다.",unofficialTitle:"기타 플러그인",unofficialDescription:"다른 사용자가 만든 비공식 플러그인과 통합입니다. 설치 전에 소스 코드를 검토하세요."},starterPlugin:{name:"프로젝트 통계",badge:"스타터",description:"프로젝트의 파일 수, 코드 라인 수, 파일 유형별 분석 및 최근 활동을 확인합니다.",install:"설치"},terminalPlugin:{name:"터미널",badge:"공식",description:"인터페이스 내에서 전체 셸 접근 권한을 가진 통합 터미널입니다.",install:"설치"},scheduledPromptPlugin:{name:"예약 프롬프트",badge:"비공식",description:"워크스페이스 프롬프트를 예약하고, 실행 기록을 확인하고, 반복되는 로컬 작업을 관리합니다.",install:"설치"},claudeWatchPlugin:{name:"Claude Watch",badge:"비공식",description:"장시간 실행되는 Claude Code 세션의 멈춤 현상을 감시하고 프로세스 제어 기능을 제공합니다.",install:"설치"},prismCloudCLI:{name:"PRISM CloudCLI",badge:"비공식",description:"WindCli 안에서 제공되는 Claude Code용 세션 인텔리전스입니다. 브라우저를 벗어나지 않고도 세션에서 토큰이 왜 소모되는지 확인하세요.",install:"설치"},sessionManagerPlugin:{name:"세션",badge:"비공식",description:"활성 Claude Code 세션을 보고, 관리하고, 종료합니다.",install:"설치"},tokenCostCalculatorPlugin:{name:"토큰 비용 계산기",badge:"비공식",description:"모델 가격과 토큰 사용량으로 API 비용을 계산합니다. 사전 설정된 모델 가격을 지원합니다.",install:"설치"},taskQueuePlugin:{name:"작업 큐",badge:"비공식",description:"에이전트 작업을 보고, 필터링하고, 실행할 수 있는 작업 큐 대시보드입니다.",install:"설치"},githubIssuesBoardPlugin:{name:"GitHub 이슈 보드",badge:"비공식",description:"양방향 TaskMaster 동기화와 /github-task CLI 스킬 자동 설치를 지원하는 GitHub 이슈용 칸반 보드입니다.",install:"설치"},morePlugins:"더 보기",enable:"활성화",disable:"비활성화",installAriaLabel:"플러그인 git 저장소 URL",tab:"탭",runningStatus:"실행 중"},Su={title:nu,tabs:su,account:iu,mcp:au,appearance:ou,actions:ru,voiceSettings:lu,quickSettings:cu,terminalShortcuts:du,mainTabs:uu,notifications:pu,appearanceSettings:mu,mcpForm:gu,saveStatus:hu,footerActions:fu,git:bu,apiKeys:vu,tasks:ku,agents:xu,permissions:yu,mcpServers:wu,pluginSettings:Cu},Pu={title:"다시 오신 것을 환영합니다",description:"WindCli 계정에 로그인하세요",username:"사용자명",password:"비밀번호",submit:"로그인",loading:"로그인 중...",errors:{invalidCredentials:"사용자명 또는 비밀번호가 잘못되었습니다",requiredFields:"모든 항목을 입력해주세요",networkError:"네트워크 오류. 다시 시도해주세요."},placeholders:{username:"사용자명을 입력하세요",password:"비밀번호를 입력하세요"}},Au={title:"계정 생성",username:"사용자명",password:"비밀번호",confirmPassword:"비밀번호 확인",submit:"계정 생성",loading:"계정 생성 중...",errors:{passwordMismatch:"비밀번호가 일치하지 않습니다",usernameTaken:"이미 사용 중인 사용자명입니다",weakPassword:"비밀번호가 너무 약합니다"}},ju={title:"로그아웃",confirm:"정말 로그아웃하시겠습니까?",button:"로그아웃"},Tu={login:Pu,register:Au,logout:ju},Iu={title:"프로젝트",newProject:"새 프로젝트",deleteProject:"프로젝트 제거",renameProject:"프로젝트 이름 변경",noProjects:"프로젝트가 없습니다",loadingProjects:"프로젝트 로딩 중...",searchPlaceholder:"프로젝트 검색...",projectNamePlaceholder:"프로젝트 이름",starred:"즐겨찾기",all:"전체",untitledSession:"제목 없는 세션",newSession:"새 세션",codexSession:"Codex 세션",fetchingProjects:"Claude 프로젝트와 세션을 가져오는 중",projects:"프로젝트",noMatchingProjects:"일치하는 프로젝트 없음",tryDifferentSearch:"검색어를 변경해보세요",runClaudeCli:"프로젝트 디렉토리에서 Claude CLI를 실행하여 시작하세요"},Eu={title:"WindCli",subtitle:"AI 코딩 어시스턴트 UI"},Mu={title:"세션",newSession:"새 세션",deleteSession:"세션 삭제",renameSession:"세션 이름 변경",noSessions:"세션이 없습니다",loadingSessions:"세션 로딩 중...",unnamed:"이름 없음",loading:"로딩 중...",showMore:"더 많은 세션 보기"},zu={viewEnvironments:"환경 보기",hideSidebar:"사이드바 숨기기",createProject:"새 프로젝트 생성",refresh:"프로젝트 및 세션 새로고침 (Ctrl+R)",renameProject:"프로젝트 이름 변경 (F2)",deleteProject:"사이드바에서 프로젝트 제거 (Delete)",addToFavorites:"즐겨찾기에 추가",removeFromFavorites:"즐겨찾기에서 제거",editSessionName:"세션 이름 직접 편집",deleteSession:"이 세션 영구 삭제",activeSessionIndicator:"최근 활성 세션 (지난 10분)",save:"저장",cancel:"취소",clearSearch:"검색 지우기",openCommandPalette:"명령 팔레트 열기",attentionRequiredIndicator:"세션에 주의가 필요합니다"},Du={chat:"채팅",files:"파일",git:"Git",terminal:"터미널",tasks:"작업"},Nu={refresh:"새로고침",settings:"설정",collapseAll:"모두 접기",expandAll:"모두 펼치기",cancel:"취소",save:"저장",delete:"삭제",rename:"이름 변경",joinCommunity:"커뮤니티 참여",reportIssue:"문제 신고",starOnGithub:"GitHub에서 스타"},$u={openSource:"오픈 소스"},Ru={active:"활성",inactive:"비활성",thinking:"생각 중...",error:"오류",aborted:"중단됨",unknown:"알 수 없음"},Lu={justNow:"방금 전",oneMinuteAgo:"1분 전",minutesAgo:"{{count}}분 전",oneHourAgo:"1시간 전",hoursAgo:"{{count}}시간 전",oneDayAgo:"1일 전",daysAgo:"{{count}}일 전"},Fu={deleteConfirm:"정말 삭제하시겠습니까?",renameSuccess:"이름이 변경되었습니다",deleteSuccess:"삭제되었습니다",errorOccurred:"오류가 발생했습니다",deleteSessionConfirm:"이 세션을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.",deleteProjectConfirm:"사이드바에서 이 프로젝트를 제거하시겠습니까? 프로젝트 파일, 메모리 및 세션 데이터는 삭제되지 않습니다.",enterProjectPath:"프로젝트 경로를 입력해주세요",deleteSessionFailed:"세션 삭제 실패. 다시 시도해주세요.",deleteSessionError:"세션 삭제 오류. 다시 시도해주세요.",renameSessionFailed:"세션 이름 변경 실패. 다시 시도해주세요.",renameSessionError:"세션 이름 변경 오류. 다시 시도해주세요.",deleteProjectFailed:"프로젝트 제거 실패. 다시 시도해주세요.",deleteProjectError:"프로젝트 제거 오류. 다시 시도해주세요.",createProjectFailed:"프로젝트 생성 실패. 다시 시도해주세요.",createProjectError:"프로젝트 생성 오류. 다시 시도해주세요.",updateProjectError:"프로젝트 업데이트 오류. 다시 시도해주세요.",refreshError:"새로고침 실패. 다시 시도해주세요.",restoreProjectFailed:"프로젝트 복원 실패. 다시 시도해주세요.",restoreProjectError:"프로젝트 복원 오류. 다시 시도해주세요.",restoreSessionFailed:"세션 복원 실패. 다시 시도해주세요.",restoreSessionError:"세션 복원 오류. 다시 시도해주세요."},Bu={updateAvailable:"업데이트 가능",restartRequired:"업데이트가 설치됨 — 적용하려면 서버를 재시작하세요"},Gu={modeProjects:"프로젝트",modeConversations:"대화",conversationsPlaceholder:"대화 내용 검색...",searching:"검색 중...",sessionTitles:"세션 제목",conversationContents:"대화 내용",noResults:"결과를 찾을 수 없습니다",tryDifferentQuery:"다른 검색어로 시도해보세요",matches_one:"{{count}}개 일치",matches_other:"{{count}}개 일치",projectsScanned_one:"프로젝트 {{count}}개 검색됨",projectsScanned_other:"프로젝트 {{count}}개 검색됨"},Hu={deleteProject:"프로젝트 제거",deleteSession:"세션 삭제",confirmDelete:"이 프로젝트를 어떻게 하시겠습니까:",sessionCount_one:"이 프로젝트에는 {{count}}개의 대화가 있습니다.",sessionCount_other:"이 프로젝트에는 {{count}}개의 대화가 있습니다.",removeFromSidebar:"사이드바에서만 제거",deleteAllData:"모든 데이터 영구 삭제",allConversationsDeleted:"프로젝트가 사이드바에서 제거됩니다. 파일, 메모리 및 세션 데이터는 보존됩니다.",cannotUndo:"나중에 프로젝트를 다시 추가할 수 있습니다."},Ou={projects:Iu,app:Eu,sessions:Mu,tooltips:zu,navigation:Du,actions:Nu,branding:$u,status:Ru,time:Lu,messages:Fu,version:Bu,search:Gu,deleteConfirmation:Hu},Uu={copy:"복사",copied:"복사됨",copyCode:"코드 복사"},qu={copy:"메시지 복사",copied:"메시지 복사됨",selectFormat:"복사 형식 선택",copyAsMarkdown:"마크다운으로 복사",copyAsText:"텍스트로 복사"},Wu={user:"U",error:"오류",tool:"도구",claude:"Claude",cursor:"Cursor",codex:"Codex",opencode:"OpenCode"},Vu={settings:"도구 설정",error:"도구 오류",result:"도구 결과",viewParams:"입력 파라미터 보기",viewRawParams:"Raw 파라미터 보기",viewDiff:"편집 Diff 보기:",creatingFile:"새 파일 생성:",updatingTodo:"Todo 리스트 업데이트",read:"읽기",readFile:"파일 읽기",updateTodo:"Todo 리스트 업데이트",readTodo:"Todo 리스트 읽기",searchResults:"결과"},Ku={found:"{{count}}개의 {{type}} 발견",file:"파일",files:"파일",pattern:"패턴:",in:"위치:"},_u={updated:"파일이 업데이트되었습니다",created:"파일이 생성되었습니다",written:"파일이 작성되었습니다",diff:"Diff",newFile:"새 파일",viewContent:"파일 내용 보기",viewFullOutput:"전체 출력 보기 ({{count}}자)",contentDisplayed:"파일 내용이 위의 Diff 보기에 표시됩니다"},Yu={title:"대화형 프롬프트",waiting:"CLI에서 응답을 기다리는 중",instruction:"Claude가 실행 중인 터미널에서 옵션을 선택해주세요.",selectedOption:"✓ Claude가 옵션 {{number}}을(를) 선택했습니다",instructionDetail:"CLI에서 화살표 키 또는 숫자를 입력하여 이 옵션을 대화형으로 선택합니다."},Ju={title:"생각 중...",emoji:"💭 생각 중..."},Qu={response:"JSON 응답"},Zu={grant:"{{tool}}에 대한 권한 부여",added:"권한이 추가되었습니다",addTo:"{{entry}}을(를) 허용된 도구에 추가합니다.",retry:"권한이 저장되었습니다. 도구를 사용하려면 요청을 재시도하세요.",error:"권한을 업데이트할 수 없습니다. 다시 시도해주세요.",openSettings:"설정 열기"},Xu={updated:"Todo 리스트가 업데이트되었습니다",current:"현재 Todo 리스트"},ep={viewPlan:"📋 구현 계획 보기",title:"구현 계획"},tp={resetAt:"Claude 사용량 한도에 도달했습니다. 한도는 **{{time}} {{timezone}}** - {{date}}에 초기화됩니다"},np={permissionMode:"권한 모드",modes:{default:"기본 모드",auto:"Auto Mode",acceptEdits:"편집 허용",bypassPermissions:"권한 우회",plan:"Plan 모드"},descriptions:{default:"신뢰할 수 있는 명령어(ls, cat, grep, git status 등)만 자동 실행됩니다. 다른 명령어는 건너뜁니다. 워크스페이스에 쓰기 가능.",auto:"A model classifier decides per tool call whether to approve or deny. Hands-off, but safer than Bypass — denials still happen.",acceptEdits:"워크스페이스 내에서 모든 명령어가 자동 실행됩니다. 샌드박스 내 완전 자동 모드.",bypassPermissions:"제한 없는 전체 시스템 접근. 모든 명령어가 전체 디스크 및 네트워크 접근 권한으로 자동 실행됩니다. 주의해서 사용하세요.",plan:"계획 모드 - 명령어가 실행되지 않습니다"},technicalDetails:"기술 상세"},sp={input:"음성 입력",stopRecording:"녹음 중지",transcribing:"받아쓰는 중…",speak:"소리 내어 읽기",stopSpeaking:"중지",loading:"로딩 중…"},ip={placeholder:"/를 입력하여 명령어, @를 입력하여 파일, 또는 {{provider}}에게 무엇이든 물어보세요...",placeholderDefault:"메시지를 입력하세요...",disabled:"입력 비활성화",attachFiles:"파일 첨부",attachImages:"이미지 첨부",send:"전송",stop:"중지",hintText:{ctrlEnter:"Ctrl+Enter로 전송 • Shift+Enter로 줄바꿈 • Tab으로 모드 변경 • /로 슬래시 명령어",enter:"Enter로 전송 • Shift+Enter로 줄바꿈 • Tab으로 모드 변경 • /로 슬래시 명령어",queue:"Enter로 다음 메시지 대기열에 추가",updateQueued:"Enter로 대기 중인 메시지 업데이트"},clickToChangeMode:"클릭하여 권한 모드 변경 (또는 입력창에서 Tab)",showAllCommands:"모든 명령어 보기",clearInput:"입력 지우기",scrollToBottom:"맨 아래로 스크롤",queue:{sendNext:"다음 메시지 대기열에 추가",update:"대기 중인 메시지 업데이트",label:"대기 중",willSend:"완료되면 전송됩니다",edit:"대기 중인 메시지 편집",delete:"대기 중인 메시지 삭제"}},ap={title:"AI 어시스턴트 선택",description:"새 대화를 시작할 프로바이더를 선택하세요",selectModel:"모델 선택",providerInfo:{anthropic:"Anthropic 제공",openai:"OpenAI 제공",cursorEditor:"AI 코드 에디터",google:"Google 제공"},readyPrompt:{claude:"{{model}} 모델로 Claude를 사용할 준비가 되었습니다. 아래에 메시지를 입력하세요.",cursor:"{{model}} 모델로 Cursor를 사용할 준비가 되었습니다. 아래에 메시지를 입력하세요.",codex:"{{model}} 모델로 Codex를 사용할 준비가 되었습니다. 아래에 메시지를 입력하세요.",opencode:"{{model}} 모델로 OpenCode를 사용할 준비가 되었습니다. 아래에 메시지를 입력하세요.",default:"시작하려면 위에서 제공자를 선택하세요"},pressToSearch:"<kbd>{{shortcut}}</kbd>를 눌러 세션, 파일 및 커밋을 검색하세요"},op={continue:{title:"대화 계속하기",description:"코드에 대해 질문하거나, 변경을 요청하거나, 개발 작업에 도움을 받으세요"},loading:{olderMessages:"이전 메시지 로딩 중...",sessionMessages:"세션 메시지 로딩 중..."},messages:{showingOf:"{{total}}개 중 {{shown}}개 표시",scrollToLoad:"위로 스크롤하여 더 로드",showingLast:"마지막 {{count}}개 메시지 표시 (총 {{total}}개)",loadEarlier:"이전 메시지 로드",loadAll:"모든 메시지 로드",loadingAll:"모든 메시지 로딩 중...",allLoaded:"모든 메시지 로드 완료",perfWarning:'모든 메시지가 로드됨 - 스크롤이 느려질 수 있습니다. "맨 아래로 스크롤"을 클릭하면 성능이 복구됩니다.'}},rp={selectProject:{title:"프로젝트 선택",description:"해당 디렉토리에서 대화형 Shell을 열 프로젝트를 선택하세요"},status:{newSession:"새 세션",initializing:"초기화 중...",restarting:"재시작 중..."},actions:{disconnect:"연결 끊기",disconnectTitle:"Shell 연결 끊기",restart:"재시작",restartTitle:"Shell 재시작 (먼저 연결 끊기)",connect:"Shell에서 계속",connectTitle:"Shell에 연결"},loading:"터미널 로딩 중...",connecting:"Shell에 연결 중...",startSession:"새 Claude 세션 시작",resumeSession:"세션 재개: {{displayName}}...",runCommand:"{{projectName}}에서 {{command}} 실행",startCli:"{{projectName}}에서 Claude CLI 시작",defaultCommand:"명령어"},lp={actions:{thinking:"Thinking",processing:"Processing",analyzing:"Analyzing",working:"Working",computing:"Computing",reasoning:"Reasoning"},state:{live:"Live",paused:"Paused"},elapsed:{seconds:"{{count}}s",minutesSeconds:"{{minutes}}m {{seconds}}s",label:"{{time}} elapsed",startingNow:"Starting now"},stop:"중지",controls:{stopGeneration:"Stop Generation",pressEscToStop:"Press Esc anytime to stop"},providers:{assistant:"Assistant"}},cp={startChatWithProvider:"{{provider}}와 채팅을 시작하려면 프로젝트를 선택하세요"},dp={nextTaskPrompt:"다음 작업 시작"},up={codeBlock:Uu,copyMessage:qu,messageTypes:Wu,tools:Vu,search:Ku,fileOperations:_u,interactive:Yu,thinking:Ju,json:Qu,permissions:Zu,todo:Xu,plan:ep,usageLimit:tp,codex:np,voice:sp,input:ip,providerSelection:ap,session:op,shell:rp,claudeStatus:lp,projectSelection:cp,tasks:dp},pp={changes:"변경사항",previousChange:"이전 변경",nextChange:"다음 변경",hideDiff:"Diff 하이라이트 숨기기",showDiff:"Diff 하이라이트 표시",settings:"에디터 설정",collapse:"에디터 접기",expand:"에디터 전체 너비로 펼치기"},mp="{{fileName}} 로딩 중...",gp={showingChanges:"변경사항 표시"},hp={copyPath:"파일 경로 복사",pathCopied:"파일 경로를 복사했습니다",download:"파일 다운로드",save:"저장",saving:"저장 중...",saved:"저장됨!",exitFullscreen:"전체화면 종료",fullscreen:"전체화면",close:"닫기",previewMarkdown:"마크다운 미리보기",editMarkdown:"마크다운 편집"},fp={lines:"줄:",characters:"문자:",shortcuts:"Ctrl+S로 저장 • Esc로 닫기"},bp={title:"바이너리 파일",message:'파일 "{{fileName}}"은(는) 바이너리 파일이므로 텍스트 편집기에서 표시할 수 없습니다.'},vp={loading:"미리보기 로딩 중...",error:"이 파일을 표시할 수 없습니다.",openInNewTab:"새 탭에서 열기"},kp={toolbar:pp,loading:mp,header:gp,actions:hp,footer:fp,binaryFile:bp,filePreview:vp},xp={title:"TaskMaster AI가 설정되지 않았습니다",description:"TaskMaster는 AI 기반 지원으로 복잡한 프로젝트를 관리하기 쉬운 작업 단위로 나눠줍니다",whatIsTitle:"🎯 TaskMaster란?",features:{aiPowered:"AI 기반 작업 관리: 복잡한 프로젝트를 관리하기 쉬운 하위 작업으로 분할",prdTemplates:"PRD 템플릿: 제품 요구사항 문서(PRD)로부터 작업 생성",dependencyTracking:"의존성 추적: 작업 간 관계와 실행 순서 파악",progressVisualization:"진행 상황 시각화: 칸반 보드와 상세한 작업 분석",cliIntegration:"CLI 연동: 고급 워크플로우를 위한 taskmaster 명령어 사용"},initializeButton:"TaskMaster AI 초기화"},yp={title:"TaskMaster 시작하기",subtitle:"TaskMaster가 초기화되었습니다! 다음 단계를 안내합니다:",steps:{createPRD:{title:"제품 요구사항 문서(PRD) 작성",description:"프로젝트 아이디어를 정리하고 무엇을 만들고 싶은지 설명하는 PRD를 작성하세요.",addButton:"PRD 추가",existingPRDs:"기존 PRD:"},generateTasks:{title:"PRD로부터 작업 생성",description:"PRD가 준비되면 AI 어시스턴트에게 이를 분석해달라고 요청하세요. TaskMaster가 구현 세부사항과 함께 관리하기 쉬운 작업으로 자동 분할합니다."},analyzeTasks:{title:"작업 분석 및 확장",description:"AI 어시스턴트에게 작업의 복잡도를 분석하고, 더 쉽게 구현할 수 있도록 상세한 하위 작업으로 확장해달라고 요청하세요."},startBuilding:{title:"개발 시작",description:"AI 어시스턴트에게 작업을 시작하고, 상태를 업데이트하고, 프로젝트가 진행됨에 따라 새 작업을 추가해달라고 요청하세요."}},tip:"💡 팁: PRD로 시작하면 TaskMaster의 AI 기반 작업 생성 기능을 최대한 활용할 수 있습니다"},wp={title:"TaskMaster 설정",subtitle:"{{projectName}}용 대화형 CLI",willStart:"TaskMaster 초기화가 자동으로 시작됩니다",completed:"TaskMaster 설정이 완료되었습니다! 이제 이 창을 닫아도 됩니다.",closeButton:"닫기",closeContinueButton:"닫고 계속하기"},Cp={title:"TaskMaster 시작하기",subtitle:"생산적인 작업 관리를 위한 가이드",examples:{parsePRD:`💬 예시:
|
|
12
12
|
"Claude Task Master로 새 프로젝트를 초기화했어요. .taskmaster/docs/prd.txt에 PRD가 있는데, 이를 분석해서 초기 작업을 설정하는 걸 도와줄 수 있나요?"`,expandTask:`💬 예시:
|
|
13
13
|
"작업 5가 복잡해 보이는데, 하위 작업으로 나눠줄 수 있나요?"`,addTask:`💬 예시:
|
|
14
|
-
"Cloudinary를 사용한 사용자 프로필 이미지 업로드 기능을 구현하는 새 작업을 추가해주세요. 가장 좋은 방법을 조사해주세요."`},moreExamples:"더 많은 예시와 사용 패턴 보기 →",proTips:{title:"💡 유용한 팁",search:"검색창을 사용해 특정 작업을 빠르게 찾으세요",views:"보기 전환 버튼으로 칸반, 목록, 그리드 보기를 전환하세요",filters:"필터를 사용해 특정 상태나 우선순위의 작업에 집중하세요",details:"작업을 클릭하면 상세 정보를 확인하고 하위 작업을 관리할 수 있습니다"},learnMore:{title:"📚 더 알아보기",description:"TaskMaster AI는 개발자를 위한 고급 작업 관리 시스템입니다. 문서와 예시를 확인하고 프로젝트에 기여해보세요.",githubButton:"GitHub에서 보기"}},gp={placeholder:"작업 검색..."},hp={button:"필터",status:"상태",priority:"우선순위",sortBy:"정렬 기준",allStatuses:"모든 상태",allPriorities:"모든 우선순위",showing:"{{total}}개 중 {{filtered}}개 표시",clearFilters:"필터 초기화"},fp={id:"ID",status:"상태",priority:"우선순위",idAsc:"ID (오름차순)",idDesc:"ID (내림차순)",titleAsc:"제목 (A-Z)",titleDesc:"제목 (Z-A)",statusAsc:"상태 (대기 우선)",statusDesc:"상태 (완료 우선)",priorityAsc:"우선순위 (높은 순)",priorityDesc:"우선순위 (낮은 순)"},bp={kanban:"칸반 보기",list:"목록 보기",grid:"그리드 보기"},vp={pending:"📋 대기 중",inProgress:"🚀 진행 중",done:"✅ 완료",blocked:"🚫 차단됨",deferred:"⏳ 보류",cancelled:"❌ 취소됨",noTasksYet:"아직 작업이 없습니다",tasksWillAppear:"작업이 여기에 표시됩니다",moveTasksHere:"시작하면 작업을 여기로 옮기세요",completedTasksHere:"완료된 작업이 여기에 표시됩니다",statusTasksHere:"이 상태의 작업이 여기에 표시됩니다"},kp={help:"TaskMaster 시작 가이드",prds:"PRD",addPRD:"PRD 추가",addTask:"작업 추가",createNewPRD:"새 PRD 생성",prdsAvailable:"PRD {{count}}개 사용 가능"},xp={modified:"수정됨: {{date}}"},yp={pending:"대기 중","in-progress":"진행 중",done:"완료",blocked:"차단됨",deferred:"보류",cancelled:"취소됨"},wp={high:"높음",medium:"중간",low:"낮음"},Cp={title:"필터와 일치하는 작업이 없습니다",description:"검색어나 필터 조건을 조정해보세요."},Sp={notConfigured:dp,gettingStarted:up,setupModal:pp,helpGuide:mp,search:gp,filters:hp,sort:fp,views:bp,kanban:vp,buttons:kp,prd:xp,statuses:yp,priorities:wp,noMatchingTasks:Cp},Pp={save:"保存",cancel:"取消",delete:"删除",create:"创建",edit:"编辑",close:"关闭",confirm:"确认",submit:"提交",retry:"重试",refresh:"刷新",search:"搜索",clear:"清除",copy:"复制",download:"下载",upload:"上传",browse:"浏览"},Ap={chat:"聊天",shell:"终端",herdr:"Herdr",files:"文件",git:"源代码管理",tasks:"任务",browser:"浏览器",computer:"计算机"},jp={loading:"加载中...",success:"成功",error:"错误",failed:"失败",pending:"待处理",completed:"已完成",inProgress:"进行中"},Tp={savedSuccessfully:"保存成功",deletedSuccessfully:"删除成功",updatedSuccessfully:"更新成功",operationFailed:"操作失败",networkError:"网络错误,请检查您的连接。",unauthorized:"未授权,请登录。",notFound:"未找到",invalidInput:"输入无效",requiredField:"此字段为必填项",unknownError:"发生未知错误"},Ip={settings:"设置",home:"首页",back:"返回",next:"下一步",previous:"上一步",logout:"退出登录"},Ep={language:"语言",theme:"主题",darkMode:"深色模式",lightMode:"浅色模式",name:"名称",description:"描述",enabled:"已启用",disabled:"已禁用",optional:"可选",version:"版本",select:"选择",selectAll:"全选",deselectAll:"取消全选"},Mp={justNow:"刚刚",minutesAgo:"{{count}} 分钟前",hoursAgo:"{{count}} 小时前",daysAgo:"{{count}} 天前",yesterday:"昨天"},zp={newFile:"新建文件",newFolder:"新建文件夹",rename:"重命名",move:"移动",copyPath:"复制路径",openInEditor:"在编辑器中打开"},Dp={loading:"正在加载 WindCli",settingUpWorkspace:"正在设置您的工作空间...",chooseProject:"选择您的项目",selectProjectDescription:"从侧边栏选择一个项目以开始使用 Claude 进行编程。每个项目包含您的聊天会话和文件历史。",tip:"提示",createProjectMobile:"点击上方的菜单按钮以访问项目",createProjectDesktop:"点击侧边栏中的文件夹图标以创建新项目",newSession:"新会话",untitledSession:"未命名会话",projectFiles:"项目文件"},Np={loading:"正在加载文件...",files:"文件",simpleView:"简单视图",compactView:"紧凑视图",detailedView:"详细视图",searchPlaceholder:"搜索文件和文件夹...",clearSearch:"清除搜索",name:"名称",size:"大小",modified:"修改时间",permissions:"权限",noFilesFound:"未找到文件",checkProjectPath:"检查项目路径是否可访问",noMatchesFound:"未找到匹配项",tryDifferentSearch:"尝试不同的搜索词或清除搜索",justNow:"刚刚",minAgo:"{{count}} 分钟前",hoursAgo:"{{count}} 小时前",daysAgo:"{{count}} 天前",newFile:"新建文件 (Cmd+N)",newFolder:"新建文件夹 (Cmd+Shift+N)",refresh:"刷新",collapseAll:"全部折叠",context:{rename:"重命名",delete:"删除",copyPath:"复制路径",download:"下载",newFile:"新建文件",newFolder:"新建文件夹",upload:"上传文件",refresh:"刷新",menuLabel:"文件上下文菜单",loading:"加载中..."}},$p={title:"创建新项目",steps:{type:"类型",configure:"配置",confirm:"确认"},step1:{question:"您已经有工作区,还是想创建一个新的工作区?",existing:{title:"现有工作区",description:"我的服务器上已经有工作区,只需要将其添加到项目列表中"},new:{title:"新建工作区",description:"创建一个新工作区,可选择从 GitHub 仓库克隆"}},step2:{existingPath:"工作区路径",newPath:"工作区路径",existingPlaceholder:"/path/to/existing/workspace",newPlaceholder:"/path/to/new/workspace",existingHelp:"您现有工作区目录的完整路径",newHelp:"工作区目录的完整路径",githubUrl:"GitHub URL(可选)",githubPlaceholder:"https://github.com/username/repository",githubHelp:"可选:提供 GitHub URL 以克隆仓库",githubAuth:"GitHub 身份验证(可选)",githubAuthHelp:"仅私有仓库需要。公共仓库无需身份验证即可克隆。",loadingTokens:"正在加载已保存的令牌...",storedToken:"已保存的令牌",newToken:"新令牌",nonePublic:"无(公共)",selectToken:"选择令牌",selectTokenPlaceholder:"-- 选择令牌 --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"此令牌仅用于此操作",publicRepoInfo:"公共仓库不需要身份验证。如果克隆公共仓库,可以跳过提供令牌。",noTokensHelp:"没有可用的已保存令牌。您可以在 设置 → API 密钥 中添加令牌以便重复使用。",optionalTokenPublic:"GitHub 令牌(公共仓库可选)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(公共仓库可留空)"},step3:{reviewConfig:"查看您的配置",existingWorkspace:"现有工作区",newWorkspace:"新建工作区",path:"路径:",cloneFrom:"克隆自:",authentication:"身份验证:",usingStoredToken:"使用已保存的令牌:",usingProvidedToken:"使用提供的令牌",noAuthentication:"无身份验证",sshKey:"SSH 密钥",existingInfo:"工作区将被添加到您的项目列表中,并可用于 Claude/Cursor 会话。",newWithClone:"仓库将从此文件夹克隆。",newEmpty:"工作区将被添加到您的项目列表中,并可用于 Claude/Cursor 会话。",cloningRepository:"正在克隆仓库..."},buttons:{cancel:"取消",back:"返回",next:"下一步",createProject:"创建项目",creating:"创建中...",cloning:"正在克隆..."},errors:{selectType:"请选择您已有现有工作区还是想创建新工作区",providePath:"请提供工作区路径",failedToCreate:"创建工作区失败",failedToCreateFolder:"创建文件夹失败"}},Rp={genericTool:"工具",codes:{generic:{info:{title:"通知"}},permission:{required:{title:"需要处理",body:"{{toolName}} 正在等待你的决策。"}},run:{stopped:{title:"运行已停止",body:"原因:{{reason}}"},failed:{title:"运行失败"}},agent:{notification:{title:"Agent 通知"}}}},Lp={updateReady:"WindCli 新版本已准备就绪。",reload:"刷新",installAvailable:"安装 WindCli,以便快速访问并支持离线使用。",install:"安装",offlineReady:"WindCli 已可离线使用。",dismiss:"关闭"},Fp={title:"有可用更新",newVersionReady:"新版本已准备就绪",currentVersion:"当前版本",latestVersion:"最新版本",whatsNew:"新内容:",viewFullRelease:"查看完整发布",updateProgress:"更新进度:",manualUpgrade:"手动升级:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:"或点击'立即更新'以自动运行更新。",updateCompleted:"更新成功完成!",restartServer:"请重启服务器以应用更改。",updateFailed:"更新失败",buttons:{close:"关闭",later:"稍后",copyCommand:"复制命令",updateNow:"立即更新",updating:"更新中..."},ariaLabels:{closeModal:"关闭版本升级模态框",showSidebar:"显示侧边栏",settings:"设置",updateAvailable:"有可用更新",closeSidebar:"关闭侧边栏"}},Bp={buttons:Pp,tabs:Ap,status:jp,messages:Tp,navigation:Ip,common:Ep,time:Mp,fileOperations:zp,mainContent:Dp,fileTree:Np,projectWizard:$p,notifications:Rp,pwa:Lp,versionUpdate:Fp},Gp="设置",Hp={account:"账户",permissions:"权限",mcpServers:"MCP 服务器",skills:"技能",appearance:"外观"},Op={title:"账户",language:"语言",languageLabel:"显示语言",languageDescription:"选择您偏好的界面语言",username:"用户名",email:"邮箱",profile:"个人资料",changePassword:"修改密码"},Up={title:"MCP 服务器",addServer:"添加服务器",editServer:"编辑服务器",deleteServer:"删除服务器",serverName:"服务器名称",serverType:"服务器类型",config:"配置",testConnection:"测试连接",status:"状态",connected:"已连接",disconnected:"未连接",scope:{label:"范围",user:"用户",project:"项目"}},qp={title:"外观",theme:"主题",codeEditor:"代码编辑器",editorTheme:"编辑器主题",wordWrap:"自动换行",showMinimap:"显示缩略图",lineNumbers:"行号",fontSize:"字体大小"},Wp={saveChanges:"保存更改",resetToDefaults:"重置为默认值",cancelChanges:"取消更改"},Vp={title:"语音",description:"通过兼容 OpenAI 的音频后端实现语音转文字输入和朗读功能。",enable:"启用语音",enableDescription:"在消息上显示麦克风按钮和朗读按钮。",backendTitle:"后端",backendDescription:"指向 OpenAI、Groq 或本地服务器(LocalAI、Speaches、Kokoro-FastAPI)。留空以使用服务器默认值。",baseUrl:"基础 URL",apiKey:"API 密钥",sttModel:"语音转文字模型",ttsModel:"文字转语音模型",voice:"语音",format:"音频格式",note:"自定义基础 URL 由您的浏览器直接调用,必须允许浏览器 CORS 请求。留空以使用服务器配置的后端。"},Kp={title:"快速设置",sections:{appearance:"外观",toolDisplay:"工具显示",inputSettings:"输入设置"},darkMode:"深色模式",showRawParameters:"显示原始参数",showThinking:"显示思考过程",sendByCtrlEnter:"使用 Ctrl+Enter 发送",voiceEnabled:"语音(麦克风 + 朗读)",sendByCtrlEnterDescription:"启用后,按 Ctrl+Enter 发送消息,而不是仅按 Enter。这对于使用输入法的用户可以避免意外发送。",dragHandle:{dragging:"正在拖拽手柄",closePanel:"关闭设置面板",openPanel:"打开设置面板",draggingStatus:"正在拖拽...",toggleAndMove:"点击切换,拖拽移动"}},_p={title:"终端快捷键",sectionKeys:"按键",sectionNavigation:"导航",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"上箭头",arrowDown:"下箭头",scrollDown:"滚动到底部",handle:{closePanel:"关闭快捷键面板",openPanel:"打开快捷键面板"}},Yp={label:"设置",agents:"智能体",appearance:"外观",git:"Git",apiTokens:"API 和令牌",voice:"语音",tasks:"任务",browser:"浏览器",notifications:"通知",plugins:"插件",about:"关于"},Jp={title:"通知",description:"控制你希望接收的通知事件。",webPush:{title:"通知此浏览器",enable:"启用通知",disable:"关闭通知",enabled:"此浏览器已启用通知",loading:"更新中...",unsupported:"此浏览器不支持推送通知。",denied:"推送通知已被阻止,请在浏览器设置中允许。"},desktop:{title:"通知此桌面应用",enable:"启用通知",disable:"关闭通知",enabled:"此桌面应用已启用通知",unsupported:"此系统不支持桌面通知。"},sound:{title:"声音",description:"聊天运行完成时播放短提示音。",enabled:"已启用",test:"测试声音"},events:{title:"事件类型",actionRequired:"需要处理",stop:"运行已停止",error:"运行失败"}},Qp={darkMode:{label:"深色模式",description:"切换浅色和深色主题"},projectSorting:{label:"项目排序",description:"项目在侧边栏中的排列方式",alphabetical:"按字母顺序",recentActivity:"最近活动"},codeEditor:{title:"代码编辑器",theme:{label:"编辑器主题",description:"代码编辑器的默认主题"},wordWrap:{label:"自动换行",description:"在编辑器中默认启用自动换行"},showMinimap:{label:"显示缩略图",description:"在差异视图中显示缩略图以便于导航"},lineNumbers:{label:"显示行号",description:"在编辑器中显示行号"},fontSize:{label:"字体大小",description:"编辑器字体大小(px)"}}},Zp={title:{add:"添加 MCP 服务器",edit:"编辑 MCP 服务器"},importMode:{form:"表单输入",json:"JSON 导入"},scope:{label:"范围",userGlobal:"用户(全局)",projectLocal:"项目(本地)",userDescription:"用户范围:在您机器上的所有项目中可用",projectDescription:"本地范围:仅在选定项目中可用",cannotChange:"编辑现有服务器时无法更改范围"},fields:{serverName:"服务器名称",transportType:"传输类型",command:"命令",arguments:"参数(每行一个)",jsonConfig:"JSON 配置",url:"URL",envVars:"环境变量(KEY=值,每行一个)",headers:"请求头(KEY=值,每行一个)",selectProject:"选择项目..."},placeholders:{serverName:"我的服务"},validation:{missingType:"缺少必填字段:type",stdioRequiresCommand:"stdio 类型需要 command 字段",httpRequiresUrl:"{{type}} 类型需要 url 字段",invalidJson:"无效的 JSON 格式",jsonHelp:"粘贴您的 MCP 服务器配置(JSON 格式)。示例格式:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"配置详细信息(来自 {{configFile}})",projectPath:"路径:{{path}}",actions:{cancel:"取消",saving:"保存中...",addServer:"添加服务器",updateServer:"更新服务器"}},Xp={success:"设置保存成功!",error:"保存设置失败",saving:"保存中..."},em={save:"保存设置",cancel:"取消"},tm={title:"Git 配置",description:"配置您的 git 提交身份。这些设置将通过 git config --global 全局应用",name:{label:"Git 名称",help:"您的 git 提交名称"},email:{label:"Git 邮箱",help:"您的 git 提交邮箱"},actions:{save:"保存配置",saving:"保存中..."},status:{success:"保存成功"}},nm={title:"API 密钥",description:"生成 API 密钥以从其他应用访问外部 API。",newKey:{alertTitle:"⚠️ 保存您的 API 密钥",alertMessage:"这是您唯一一次看到此密钥。请妥善保存。",iveSavedIt:"我已保存"},form:{placeholder:"API 密钥名称(例如:生产服务器)",createButton:"创建",cancelButton:"取消"},newButton:"新建 API 密钥",empty:"尚未创建 API 密钥。",list:{created:"创建时间:",lastUsed:"最后使用:"},confirmDelete:"确定要删除此 API 密钥吗?",status:{active:"激活",inactive:"未激活"},github:{title:"GitHub 令牌",description:"添加 GitHub 个人访问令牌以通过外部 API 克隆私有仓库。",descriptionAlt:"添加 GitHub 个人访问令牌以克隆私有仓库。您也可以直接在 API 请求中传递令牌而无需存储。",addButton:"添加令牌",form:{namePlaceholder:"令牌名称(例如:个人仓库)",tokenPlaceholder:"GitHub 个人访问令牌(ghp_...)",descriptionPlaceholder:"描述(可选)",addButton:"添加令牌",cancelButton:"取消",howToCreate:"如何创建 GitHub 个人访问令牌 →"},empty:"尚未添加 GitHub 令牌。",added:"添加时间:",confirmDelete:"确定要删除此 GitHub 令牌吗?"},apiDocsLink:"API 文档",documentation:{title:"外部 API 文档",description:"了解如何使用外部 API 从您的应用程序触发 Claude/Cursor 会话。",viewLink:"查看 API 文档 →"},loading:"加载中...",version:{updateAvailable:"有可用更新:v{{version}}"}},sm={checking:"正在检查 TaskMaster 安装...",notInstalled:{title:"未安装 TaskMaster AI CLI",description:"需要 TaskMaster CLI 才能使用任务管理功能。安装它以开始使用:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"在 GitHub 上查看",afterInstallation:"安装后:",steps:{restart:"重启此应用程序",autoAvailable:"TaskMaster 功能将自动可用",initCommand:"在项目目录中使用 task-master init"}},settings:{enableLabel:"启用 TaskMaster 集成",enableDescription:"在整个界面中显示 TaskMaster 任务、横幅和侧边栏指示器"}},im={authStatus:{checking:"检查中...",connected:"已连接",notConnected:"未连接",disconnected:"已断开",checkingAuth:"正在检查认证状态...",loggedInAs:"登录为 {{email}}",authenticatedUser:"已认证用户"},account:{claude:{description:"Anthropic Claude AI 助手"},cursor:{description:"Cursor AI 驱动的代码编辑器"},codex:{description:"OpenAI Codex AI 助手"},opencode:{description:"OpenCode CLI 助手"}},connectionStatus:"连接状态",login:{title:"登录",reAuthenticate:"重新认证",description:"登录您的 {{agent}} 账户以启用 AI 功能",reAuthDescription:"使用其他账户登录或刷新凭据",button:"登录",reLoginButton:"重新登录"},error:"错误:{{error}}"},am={title:"权限设置",skipPermissions:{label:"跳过权限提示(请谨慎使用)",claudeDescription:"等同于 --dangerously-skip-permissions 标志",cursorDescription:"等同于 Cursor CLI 中的 -f 标志"},allowedTools:{title:"允许的工具",description:"无需权限提示即可自动使用的工具",placeholder:'例如:"Bash(git log:*)" 或 "Write"',quickAdd:"快速添加常用工具:",empty:"未配置允许的工具"},blockedTools:{title:"禁用的工具",description:"无需权限提示即可自动禁用的工具",placeholder:'例如:"Bash(rm:*)"',empty:"未配置禁用的工具"},allowedCommands:{title:"允许的 Shell 命令",description:"无需权限提示即可自动执行的 Shell 命令",placeholder:'例如:"Shell(ls)" 或 "Shell(git status)"',quickAdd:"快速添加常用命令:",empty:"未配置允许的命令"},blockedCommands:{title:"阻止的 Shell 命令",description:"自动阻止的 Shell 命令",placeholder:'例如:"Shell(rm -rf)" 或 "Shell(sudo)"',empty:"未配置阻止的命令"},toolExamples:{title:"工具模式示例:",bashGitLog:"- 允许所有 git log 命令",bashGitDiff:"- 允许所有 git diff 命令",write:"- 允许所有 Write 工具使用",bashRm:"- 阻止所有 rm 命令(危险)"},shellExamples:{title:"Shell 命令示例:",ls:"- 允许 ls 命令",gitStatus:"- 允许 git status",npmInstall:"- 允许 npm install",rmRf:"- 阻止递归删除"},codex:{permissionMode:"权限模式",description:"控制 Codex 如何处理文件修改和命令执行",modes:{default:{title:"默认",description:"只有受信任的命令(ls、cat、grep、git status 等)会自动运行。其他命令将被跳过。可以写入工作区。"},acceptEdits:{title:"接受编辑",description:"所有命令在工作区内自动运行。具有沙箱执行的全自动模式。"},bypassPermissions:{title:"绕过权限",description:"完全系统访问,无任何限制。所有命令自动运行,具有完整的磁盘和网络访问权限。请谨慎使用。"}},technicalDetails:"技术详情",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted。受信任的命令:cat、cd、grep、head、ls、pwd、tail、git status/log/diff/show、find(不带 -exec)等。",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never。所有命令在项目目录内自动执行。",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never。完全系统访问权限,仅在可信环境中使用。",overrideNote:"您可以使用聊天界面中的模式按钮按会话覆盖此设置。"}},actions:{add:"添加"}},om={title:"MCP 服务器",description:{claude:"Model Context Protocol 服务器为 Claude 提供额外的工具和数据源",cursor:"Model Context Protocol 服务器为 Cursor 提供额外的工具和数据源",codex:"Model Context Protocol 服务器为 Codex 提供额外的工具和数据源",opencode:"Model Context Protocol 服务器为 OpenCode 提供额外的工具和数据源"},addButton:"添加 MCP 服务器",empty:"未配置 MCP 服务器",serverType:"类型",scope:{local:"本地",user:"用户"},config:{command:"命令",url:"URL",args:"参数",environment:"环境变量"},tools:{title:"工具",count:"({{count}}):",more:"还有 {{count}} 个"},actions:{edit:"编辑服务器",delete:"删除服务器"},managed:{badge:"已托管",hint:"由 WindCli 管理。"},help:{title:"关于 Codex MCP",description:"Codex 支持基于 stdio 的 MCP 服务器。您可以添加服务器,通过额外的工具和资源来扩展 Codex 的功能。"}},rm={title:"插件",description:"通过自定义插件扩展界面。从 git 安装或直接将文件夹放入 ~/.claude-code-ui/plugins/",installPlaceholder:"https://github.com/user/my-plugin",installButton:"安装",installing:"安装中…",securityWarning:"仅安装您已审查过源代码或信任作者的插件。",scanningPlugins:"正在扫描插件…",noPluginsInstalled:"未安装插件",pullLatest:"从 git 拉取最新内容",noGitRemote:"无 git 远程仓库 — 无法更新",uninstallPlugin:"卸载插件",confirmUninstall:"再次点击确认",confirmUninstallMessage:"移除 {{name}}?此操作无法撤销。",cancel:"取消",remove:"移除",updateFailed:"更新失败",installFailed:"安装失败",uninstallFailed:"卸载失败",toggleFailed:"切换失败",starterPluginLabel:"入门插件",starter:"入门模板",docs:"文档",sections:{officialTitle:"官方插件",officialDescription:"由 WindCli 团队维护,可直接安装。",unofficialTitle:"其他插件",unofficialDescription:"来自其他用户的非官方插件和集成。安装前请审查源代码。"},starterPlugin:{name:"项目统计",badge:"入门",description:"查看项目的文件数、代码行数、文件类型分布以及最近活动。",install:"安装"},terminalPlugin:{name:"终端",badge:"官方",description:"集成终端,可直接在界面内获得完整 Shell 访问权限。",install:"安装"},scheduledPromptPlugin:{name:"定时提示",badge:"非官方",description:"安排工作区提示、查看运行历史并管理定期本地任务。",install:"安装"},claudeWatchPlugin:{name:"Claude Watch",badge:"非官方",description:"监控长时间运行的 Claude Code 会话,检测挂起并暴露进程控制。",install:"安装"},prismCloudCLI:{name:"PRISM CloudCLI",badge:"非官方",description:"WindCli 内的 Claude Code 会话智能分析。无需离开浏览器即可了解会话为何消耗大量 Token。",install:"安装"},sessionManagerPlugin:{name:"会话管理",badge:"非官方",description:"查看、管理和终止活跃的 Claude Code 会话。",install:"安装"},tokenCostCalculatorPlugin:{name:"Token 费用计算器",badge:"非官方",description:"根据模型价格和 Token 使用量计算 API 费用,支持预设模型定价。",install:"安装"},taskQueuePlugin:{name:"任务队列",badge:"非官方",description:"任务队列仪表板,用于查看、筛选和启动 Agent 任务。",install:"安装"},githubIssuesBoardPlugin:{name:"GitHub Issues 看板",badge:"非官方",description:"GitHub Issues 看板,支持双向 TaskMaster 同步和 /github-task CLI 技能自动安装",install:"安装"},morePlugins:"更多",enable:"启用",disable:"禁用",installAriaLabel:"插件 git 仓库 URL",tab:"标签",runningStatus:"运行中"},lm={title:Gp,tabs:Hp,account:Op,mcp:Up,appearance:qp,actions:Wp,voiceSettings:Vp,quickSettings:Kp,terminalShortcuts:_p,mainTabs:Yp,notifications:Jp,appearanceSettings:Qp,mcpForm:Zp,saveStatus:Xp,footerActions:em,git:tm,apiKeys:nm,tasks:sm,agents:im,permissions:am,mcpServers:om,pluginSettings:rm},cm={title:"欢迎回来",description:"登录您的 WindCli 账户",username:"用户名",password:"密码",submit:"登录",loading:"登录中...",errors:{invalidCredentials:"用户名或密码无效",requiredFields:"请填写所有字段",networkError:"网络错误,请重试。"},placeholders:{username:"输入您的用户名",password:"输入您的密码"}},dm={title:"创建账户",username:"用户名",password:"密码",confirmPassword:"确认密码",submit:"创建账户",loading:"创建账户中...",errors:{passwordMismatch:"密码不匹配",usernameTaken:"用户名已被占用",weakPassword:"密码强度太弱"}},um={title:"退出登录",confirm:"确定要退出登录吗?",button:"退出登录"},pm={login:cm,register:dm,logout:um},mm={title:"项目",newProject:"新建项目",deleteProject:"移除项目",renameProject:"重命名项目",noProjects:"未找到项目",loadingProjects:"加载项目中...",searchPlaceholder:"搜索项目...",projectNamePlaceholder:"项目名称",starred:"星标",all:"全部",untitledSession:"未命名会话",newSession:"新会话",codexSession:"Codex 会话",fetchingProjects:"正在获取您的 Claude 项目和会话",projects:"项目",noMatchingProjects:"未找到匹配的项目",tryDifferentSearch:"尝试调整您的搜索词",runClaudeCli:"在项目目录中运行 Claude CLI 以开始使用"},gm={title:"WindCli",subtitle:"AI 编程助手"},hm={title:"会话",newSession:"新建会话",deleteSession:"删除会话",renameSession:"重命名会话",noSessions:"暂无会话",loadingSessions:"加载会话中...",unnamed:"未命名",loading:"加载中...",showMore:"显示更多会话"},fm={viewEnvironments:"查看环境",hideSidebar:"隐藏侧边栏",createProject:"创建新项目",refresh:"刷新项目和会话 (Ctrl+R)",renameProject:"重命名项目 (F2)",deleteProject:"从侧边栏移除项目 (Delete)",addToFavorites:"添加到收藏",removeFromFavorites:"从收藏移除",editSessionName:"手动编辑会话名称",deleteSession:"永久删除此会话",activeSessionIndicator:"最近活跃的会话(最近 10 分钟)",save:"保存",cancel:"取消",clearSearch:"清除搜索",openCommandPalette:"打开命令面板",attentionRequiredIndicator:"会话需要处理"},bm={chat:"聊天",files:"文件",git:"Git",terminal:"终端",tasks:"任务"},vm={refresh:"刷新",settings:"设置",collapseAll:"全部折叠",expandAll:"全部展开",cancel:"取消",save:"保存",delete:"删除",rename:"重命名",joinCommunity:"加入社区",reportIssue:"报告问题",starOnGithub:"在GitHub上加星"},km={openSource:"开源"},xm={active:"活动",inactive:"非活动",thinking:"思考中...",error:"错误",aborted:"已中止",unknown:"未知"},ym={justNow:"刚刚",oneMinuteAgo:"1 分钟前",minutesAgo:"{{count}} 分钟前",oneHourAgo:"1 小时前",hoursAgo:"{{count}} 小时前",oneDayAgo:"1 天前",daysAgo:"{{count}} 天前"},wm={deleteConfirm:"确定要删除吗?",renameSuccess:"重命名成功",deleteSuccess:"删除成功",errorOccurred:"发生错误",deleteSessionConfirm:"确定要删除此会话吗?此操作无法撤销。",deleteProjectConfirm:"从侧边栏移除此项目?您的项目文件、记忆和会话数据不会被删除。",enterProjectPath:"请输入项目路径",deleteSessionFailed:"删除会话失败,请重试。",deleteSessionError:"删除会话时出错,请重试。",renameSessionFailed:"重命名会话失败,请重试。",renameSessionError:"重命名会话时出错,请重试。",deleteProjectFailed:"移除项目失败,请重试。",deleteProjectError:"移除项目时出错,请重试。",createProjectFailed:"创建项目失败,请重试。",createProjectError:"创建项目时出错,请重试。",updateProjectError:"更新项目时出错,请重试。",refreshError:"刷新失败,请重试。",restoreProjectFailed:"恢复项目失败,请重试。",restoreProjectError:"恢复项目时出错,请重试。",restoreSessionFailed:"恢复会话失败,请重试。",restoreSessionError:"恢复会话时出错,请重试。"},Cm={updateAvailable:"有可用更新",restartRequired:"已安装更新 — 请重启服务器以生效"},Sm={modeProjects:"项目",modeConversations:"对话",conversationsPlaceholder:"搜索对话内容...",searching:"搜索中...",sessionTitles:"会话标题",conversationContents:"对话内容",noResults:"未找到结果",tryDifferentQuery:"尝试不同的搜索词",matches_one:"{{count}} 个匹配",matches_other:"{{count}} 个匹配",projectsScanned_one:"{{count}} 个项目已扫描",projectsScanned_other:"{{count}} 个项目已扫描"},Pm={deleteProject:"移除项目",deleteSession:"删除会话",confirmDelete:"您想如何处理",sessionCount_one:"此项目包含 {{count}} 个对话。",sessionCount_other:"此项目包含 {{count}} 个对话。",removeFromSidebar:"仅从侧边栏移除",deleteAllData:"永久删除所有数据",allConversationsDeleted:"项目将从侧边栏中移除。您的文件、记忆和会话数据将会保留。",cannotUndo:"您可以稍后重新添加此项目。"},Am={projects:mm,app:gm,sessions:hm,tooltips:fm,navigation:bm,actions:vm,branding:km,status:xm,time:ym,messages:wm,version:Cm,search:Sm,deleteConfirmation:Pm},jm={copy:"复制",copied:"已复制",copyCode:"复制代码"},Tm={copy:"复制消息",copied:"消息已复制",selectFormat:"选择复制格式",copyAsMarkdown:"复制为 Markdown",copyAsText:"复制为纯文本"},Im={user:"U",error:"错误",tool:"工具",claude:"Claude",cursor:"Cursor",codex:"Codex",opencode:"OpenCode"},Em={settings:"工具设置",error:"工具错误",result:"工具结果",viewParams:"查看输入参数",viewRawParams:"查看原始参数",viewDiff:"查看编辑差异",creatingFile:"创建新文件:",updatingTodo:"更新待办事项",read:"读取",readFile:"读取文件",updateTodo:"更新待办列表",readTodo:"读取待办列表",searchResults:"结果"},Mm={found:"找到 {{count}} 个{{type}}",file:"文件",files:"文件",pattern:"模式:",in:"在:"},zm={updated:"文件更新成功",created:"文件创建成功",written:"文件写入成功",diff:"差异",newFile:"新文件",viewContent:"查看文件内容",viewFullOutput:"查看完整输出({{count}} 个字符)",contentDisplayed:"文件内容显示在上面的差异视图中"},Dm={title:"交互式提示",waiting:"等待您在 CLI 中响应",instruction:"请在 Claude 运行的终端中选择一个选项。",selectedOption:"✓ Claude 选择了选项 {{number}}",instructionDetail:"在 CLI 中,您可以使用方向键或输入数字来交互式地选择此选项。"},Nm={title:"思考中...",emoji:"💭 思考中..."},$m={response:"JSON 响应"},Rm={grant:"授予 {{tool}} 权限",added:"权限已添加",addTo:"将 {{entry}} 添加到允许的工具。",retry:"权限已保存。重试请求以使用该工具。",error:"无法更新权限。请重试。",openSettings:"打开设置"},Lm={updated:"待办列表已成功更新",current:"当前待办列表"},Fm={viewPlan:"📋 查看实施计划",title:"实施计划"},Bm={resetAt:"Claude 使用限制已达到。您的限制将在 **{{time}} {{timezone}}** - {{date}} 重置"},Gm={permissionMode:"权限模式",modes:{default:"默认模式",auto:"Auto Mode",acceptEdits:"编辑模式",bypassPermissions:"无限制模式",plan:"计划模式"},descriptions:{default:"只有受信任的命令(ls、cat、grep、git status 等)自动运行。其他命令将被跳过。可以写入工作区。",auto:"A model classifier decides per tool call whether to approve or deny. Hands-off, but safer than Bypass — denials still happen.",acceptEdits:"工作区内的所有命令自动运行。完全自动模式,具有沙盒执行功能。",bypassPermissions:"完全的系统访问,无限制。所有命令自动运行,具有完整的磁盘和网络访问权限。请谨慎使用。",plan:"计划模式 - 不执行任何命令"},technicalDetails:"技术细节"},Hm={input:"语音输入",stopRecording:"停止录音",transcribing:"转写中…",speak:"朗读",stopSpeaking:"停止",loading:"加载中…"},Om={placeholder:"输入 / 调用命令,@ 选择文件,或向 {{provider}} 提问...",placeholderDefault:"输入您的消息...",disabled:"输入已禁用",attachFiles:"附加文件",attachImages:"附加图片",send:"发送",stop:"停止",hintText:{ctrlEnter:"Ctrl+Enter 发送 • Shift+Enter 换行 • Tab 切换模式 • / 斜杠命令",enter:"Enter 发送 • Shift+Enter 换行 • Tab 切换模式 • / 斜杠命令",queue:"Enter 排队发送下一条消息",updateQueued:"Enter 更新排队消息"},clickToChangeMode:"点击更改权限模式(或在输入框中按 Tab)",showAllCommands:"显示所有命令",clearInput:"清空输入",scrollToBottom:"滚动到底部",queue:{sendNext:"排队发送下一条消息",update:"更新排队消息",label:"已排队",willSend:"将在当前完成后发送",edit:"编辑排队消息",delete:"删除排队消息"}},Um={title:"选择您的 AI 助手",description:"选择一个供应商以开始新对话",selectModel:"选择模型",providerInfo:{anthropic:"由 Anthropic 提供",openai:"由 OpenAI 提供",cursorEditor:"AI 代码编辑器",google:"由 Google 提供"},readyPrompt:{claude:"准备好使用带有 {{model}} 的 Claude。请在下方开始输入您的消息。",cursor:"准备好使用带有 {{model}} 的 Cursor。请在下方开始输入您的消息。",codex:"准备好使用带有 {{model}} 的 Codex。请在下方开始输入您的消息。",opencode:"准备好使用带有 {{model}} 的 OpenCode。请在下方开始输入您的消息。",default:"请在上方选择一个提供者以开始"},pressToSearch:"按 <kbd>{{shortcut}}</kbd> 搜索会话、文件和提交"},qm={continue:{title:"继续您的对话",description:"询问有关代码的问题、请求更改或获取开发任务的帮助"},loading:{olderMessages:"正在加载更早的消息...",sessionMessages:"正在加载会话消息..."},messages:{showingOf:"显示 {{shown}} / {{total}} 条消息",scrollToLoad:"向上滚动以加载更多",showingLast:"显示最近 {{count}} 条消息(共 {{total}} 条)",loadEarlier:"加载更早的消息",loadAll:"加载全部消息",loadingAll:"正在加载全部消息...",allLoaded:"全部消息已加载",perfWarning:"已加载全部消息 - 滚动可能变慢。点击「滚动到底部」恢复性能。"}},Wm={selectProject:{title:"选择项目",description:"选择一个项目以在该目录中打开交互式 Shell"},status:{newSession:"新会话",initializing:"初始化中...",restarting:"重启中..."},actions:{disconnect:"断开连接",disconnectTitle:"断开 Shell 连接",restart:"重启",restartTitle:"重启 Shell(请先断开连接)",connect:"在 Shell 中继续",connectTitle:"连接到 Shell"},loading:"正在加载终端...",connecting:"正在连接到 Shell...",startSession:"启动新的 Claude 会话",resumeSession:"恢复会话:{{displayName}}...",runCommand:"在 {{projectName}} 中运行 {{command}}",startCli:"在 {{projectName}} 中启动 Claude CLI",defaultCommand:"命令"},Vm={actions:{thinking:"Thinking",processing:"Processing",analyzing:"Analyzing",working:"Working",computing:"Computing",reasoning:"Reasoning"},state:{live:"Live",paused:"Paused"},elapsed:{seconds:"{{count}}s",minutesSeconds:"{{minutes}}m {{seconds}}s",label:"{{time}} elapsed",startingNow:"Starting now"},stop:"停止",controls:{stopGeneration:"Stop Generation",pressEscToStop:"Press Esc anytime to stop"},providers:{assistant:"Assistant"}},Km={startChatWithProvider:"选择一个项目以开始与 {{provider}} 聊天"},_m={nextTaskPrompt:"开始下一个任务"},Ym={codeBlock:jm,copyMessage:Tm,messageTypes:Im,tools:Em,search:Mm,fileOperations:zm,interactive:Dm,thinking:Nm,json:$m,permissions:Rm,todo:Lm,plan:Fm,usageLimit:Bm,codex:Gm,voice:Hm,input:Om,providerSelection:Um,session:qm,shell:Wm,claudeStatus:Vm,projectSelection:Km,tasks:_m},Jm={changes:"个更改",previousChange:"上一个更改",nextChange:"下一个更改",hideDiff:"隐藏差异高亮",showDiff:"显示差异高亮",settings:"编辑器设置",collapse:"折叠编辑器",expand:"展开编辑器到全宽"},Qm="正在加载 {{fileName}}...",Zm={showingChanges:"显示更改"},Xm={copyPath:"复制文件路径",pathCopied:"文件路径已复制",download:"下载文件",save:"保存",saving:"保存中...",saved:"已保存!",exitFullscreen:"退出全屏",fullscreen:"全屏",close:"关闭",previewMarkdown:"预览 Markdown",editMarkdown:"编辑 Markdown"},eg={lines:"行数:",characters:"字符数:",shortcuts:"按 Ctrl+S 保存 • Esc 关闭"},tg={title:"二进制文件",message:'文件 "{{fileName}}" 无法在文本编辑器中显示,因为它是二进制文件。'},ng={loading:"正在加载预览...",error:"无法显示此文件。",openInNewTab:"在新标签页中打开"},sg={toolbar:Jm,loading:Qm,header:Zm,actions:Xm,footer:eg,binaryFile:tg,filePreview:ng},ig={title:"TaskMaster AI 尚未配置",description:"TaskMaster 帮助将复杂的项目分解为可管理的任务,配合 AI 驱动的辅助功能",whatIsTitle:"🎯 什么是 TaskMaster?",features:{aiPowered:"AI 驱动的任务管理:将复杂项目分解为可管理的子任务",prdTemplates:"PRD 模板:从产品需求文档生成任务",dependencyTracking:"依赖追踪:了解任务关系和执行顺序",progressVisualization:"进度可视化:看板和详细的任务分析",cliIntegration:"CLI 集成:使用 taskmaster 命令进行高级工作流"},initializeButton:"初始化 TaskMaster AI"},ag={title:"开始使用 TaskMaster",subtitle:"TaskMaster 已初始化!以下是接下来要做的事:",steps:{createPRD:{title:"创建产品需求文档(PRD)",description:"讨论您的项目构想并创建描述您想构建什么的 PRD。",addButton:"添加 PRD",existingPRDs:"现有的 PRD:"},generateTasks:{title:"从 PRD 生成任务",description:"一旦您有了 PRD,请 AI 助手解析它,TaskMaster 将自动将其分解为可管理的任务,包含实现细节。"},analyzeTasks:{title:"分析并展开任务",description:"请 AI 助手分析任务复杂度,并将其展开为详细的子任务以便于实现。"},startBuilding:{title:"开始构建",description:"请 AI 助手开始处理任务、更新状态,并在项目演进时添加新任务。"}},tip:"💡 提示:从 PRD 开始可以充分利用 TaskMaster 的 AI 驱动任务生成功能"},og={title:"TaskMaster 设置",subtitle:"{{projectName}} 的交互式 CLI",willStart:"TaskMaster 初始化将自动开始",completed:"TaskMaster 设置完成!您现在可以关闭此窗口。",closeButton:"关闭",closeContinueButton:"关闭并继续"},rg={title:"开始使用 TaskMaster",subtitle:"您的高效任务管理指南",examples:{parsePRD:`💬 示例:
|
|
14
|
+
"Cloudinary를 사용한 사용자 프로필 이미지 업로드 기능을 구현하는 새 작업을 추가해주세요. 가장 좋은 방법을 조사해주세요."`},moreExamples:"더 많은 예시와 사용 패턴 보기 →",proTips:{title:"💡 유용한 팁",search:"검색창을 사용해 특정 작업을 빠르게 찾으세요",views:"보기 전환 버튼으로 칸반, 목록, 그리드 보기를 전환하세요",filters:"필터를 사용해 특정 상태나 우선순위의 작업에 집중하세요",details:"작업을 클릭하면 상세 정보를 확인하고 하위 작업을 관리할 수 있습니다"},learnMore:{title:"📚 더 알아보기",description:"TaskMaster AI는 개발자를 위한 고급 작업 관리 시스템입니다. 문서와 예시를 확인하고 프로젝트에 기여해보세요.",githubButton:"GitHub에서 보기"}},Sp={placeholder:"작업 검색..."},Pp={button:"필터",status:"상태",priority:"우선순위",sortBy:"정렬 기준",allStatuses:"모든 상태",allPriorities:"모든 우선순위",showing:"{{total}}개 중 {{filtered}}개 표시",clearFilters:"필터 초기화"},Ap={id:"ID",status:"상태",priority:"우선순위",idAsc:"ID (오름차순)",idDesc:"ID (내림차순)",titleAsc:"제목 (A-Z)",titleDesc:"제목 (Z-A)",statusAsc:"상태 (대기 우선)",statusDesc:"상태 (완료 우선)",priorityAsc:"우선순위 (높은 순)",priorityDesc:"우선순위 (낮은 순)"},jp={kanban:"칸반 보기",list:"목록 보기",grid:"그리드 보기"},Tp={pending:"📋 대기 중",inProgress:"🚀 진행 중",done:"✅ 완료",blocked:"🚫 차단됨",deferred:"⏳ 보류",cancelled:"❌ 취소됨",noTasksYet:"아직 작업이 없습니다",tasksWillAppear:"작업이 여기에 표시됩니다",moveTasksHere:"시작하면 작업을 여기로 옮기세요",completedTasksHere:"완료된 작업이 여기에 표시됩니다",statusTasksHere:"이 상태의 작업이 여기에 표시됩니다"},Ip={help:"TaskMaster 시작 가이드",prds:"PRD",addPRD:"PRD 추가",addTask:"작업 추가",createNewPRD:"새 PRD 생성",prdsAvailable:"PRD {{count}}개 사용 가능"},Ep={modified:"수정됨: {{date}}"},Mp={pending:"대기 중","in-progress":"진행 중",done:"완료",blocked:"차단됨",deferred:"보류",cancelled:"취소됨"},zp={high:"높음",medium:"중간",low:"낮음"},Dp={title:"필터와 일치하는 작업이 없습니다",description:"검색어나 필터 조건을 조정해보세요."},Np={notConfigured:xp,gettingStarted:yp,setupModal:wp,helpGuide:Cp,search:Sp,filters:Pp,sort:Ap,views:jp,kanban:Tp,buttons:Ip,prd:Ep,statuses:Mp,priorities:zp,noMatchingTasks:Dp},$p={save:"保存",cancel:"取消",delete:"删除",create:"创建",edit:"编辑",close:"关闭",confirm:"确认",submit:"提交",retry:"重试",refresh:"刷新",search:"搜索",clear:"清除",copy:"复制",download:"下载",upload:"上传",browse:"浏览"},Rp={chat:"聊天",shell:"终端",herdr:"Herdr",files:"文件",git:"源代码管理",tasks:"任务",browser:"浏览器",computer:"计算机"},Lp={loading:"加载中...",success:"成功",error:"错误",failed:"失败",pending:"待处理",completed:"已完成",inProgress:"进行中"},Fp={savedSuccessfully:"保存成功",deletedSuccessfully:"删除成功",updatedSuccessfully:"更新成功",operationFailed:"操作失败",networkError:"网络错误,请检查您的连接。",unauthorized:"未授权,请登录。",notFound:"未找到",invalidInput:"输入无效",requiredField:"此字段为必填项",unknownError:"发生未知错误"},Bp={settings:"设置",home:"首页",back:"返回",next:"下一步",previous:"上一步",logout:"退出登录"},Gp={language:"语言",theme:"主题",darkMode:"深色模式",lightMode:"浅色模式",name:"名称",description:"描述",enabled:"已启用",disabled:"已禁用",optional:"可选",version:"版本",select:"选择",selectAll:"全选",deselectAll:"取消全选"},Hp={justNow:"刚刚",minutesAgo:"{{count}} 分钟前",hoursAgo:"{{count}} 小时前",daysAgo:"{{count}} 天前",yesterday:"昨天"},Op={newFile:"新建文件",newFolder:"新建文件夹",rename:"重命名",move:"移动",copyPath:"复制路径",openInEditor:"在编辑器中打开"},Up={loading:"正在加载 WindCli",settingUpWorkspace:"正在设置您的工作空间...",chooseProject:"选择您的项目",selectProjectDescription:"从侧边栏选择一个项目以开始使用 Claude 进行编程。每个项目包含您的聊天会话和文件历史。",tip:"提示",createProjectMobile:"点击上方的菜单按钮以访问项目",createProjectDesktop:"点击侧边栏中的文件夹图标以创建新项目",newSession:"新会话",untitledSession:"未命名会话",projectFiles:"项目文件"},qp={loading:"正在加载文件...",files:"文件",simpleView:"简单视图",compactView:"紧凑视图",detailedView:"详细视图",searchPlaceholder:"搜索文件和文件夹...",clearSearch:"清除搜索",name:"名称",size:"大小",modified:"修改时间",permissions:"权限",noFilesFound:"未找到文件",checkProjectPath:"检查项目路径是否可访问",noMatchesFound:"未找到匹配项",tryDifferentSearch:"尝试不同的搜索词或清除搜索",justNow:"刚刚",minAgo:"{{count}} 分钟前",hoursAgo:"{{count}} 小时前",daysAgo:"{{count}} 天前",newFile:"新建文件 (Cmd+N)",newFolder:"新建文件夹 (Cmd+Shift+N)",refresh:"刷新",collapseAll:"全部折叠",context:{rename:"重命名",delete:"删除",copyPath:"复制路径",download:"下载",newFile:"新建文件",newFolder:"新建文件夹",upload:"上传文件",refresh:"刷新",menuLabel:"文件上下文菜单",loading:"加载中..."}},Wp={title:"创建新项目",steps:{type:"类型",configure:"配置",confirm:"确认"},step1:{question:"您已经有工作区,还是想创建一个新的工作区?",existing:{title:"现有工作区",description:"我的服务器上已经有工作区,只需要将其添加到项目列表中"},new:{title:"新建工作区",description:"创建一个新工作区,可选择从 GitHub 仓库克隆"}},step2:{existingPath:"工作区路径",newPath:"工作区路径",existingPlaceholder:"/path/to/existing/workspace",newPlaceholder:"/path/to/new/workspace",existingHelp:"您现有工作区目录的完整路径",newHelp:"工作区目录的完整路径",githubUrl:"GitHub URL(可选)",githubPlaceholder:"https://github.com/username/repository",githubHelp:"可选:提供 GitHub URL 以克隆仓库",githubAuth:"GitHub 身份验证(可选)",githubAuthHelp:"仅私有仓库需要。公共仓库无需身份验证即可克隆。",loadingTokens:"正在加载已保存的令牌...",storedToken:"已保存的令牌",newToken:"新令牌",nonePublic:"无(公共)",selectToken:"选择令牌",selectTokenPlaceholder:"-- 选择令牌 --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"此令牌仅用于此操作",publicRepoInfo:"公共仓库不需要身份验证。如果克隆公共仓库,可以跳过提供令牌。",noTokensHelp:"没有可用的已保存令牌。您可以在 设置 → API 密钥 中添加令牌以便重复使用。",optionalTokenPublic:"GitHub 令牌(公共仓库可选)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(公共仓库可留空)"},step3:{reviewConfig:"查看您的配置",existingWorkspace:"现有工作区",newWorkspace:"新建工作区",path:"路径:",cloneFrom:"克隆自:",authentication:"身份验证:",usingStoredToken:"使用已保存的令牌:",usingProvidedToken:"使用提供的令牌",noAuthentication:"无身份验证",sshKey:"SSH 密钥",existingInfo:"工作区将被添加到您的项目列表中,并可用于 Claude/Cursor 会话。",newWithClone:"仓库将从此文件夹克隆。",newEmpty:"工作区将被添加到您的项目列表中,并可用于 Claude/Cursor 会话。",cloningRepository:"正在克隆仓库..."},buttons:{cancel:"取消",back:"返回",next:"下一步",createProject:"创建项目",creating:"创建中...",cloning:"正在克隆..."},errors:{selectType:"请选择您已有现有工作区还是想创建新工作区",providePath:"请提供工作区路径",failedToCreate:"创建工作区失败",failedToCreateFolder:"创建文件夹失败"}},Vp={genericTool:"工具",codes:{generic:{info:{title:"通知"}},permission:{required:{title:"需要处理",body:"{{toolName}} 正在等待你的决策。"}},run:{stopped:{title:"运行已停止",body:"原因:{{reason}}"},failed:{title:"运行失败"}},agent:{notification:{title:"Agent 通知"}}}},Kp={updateReady:"WindCli 新版本已准备就绪。",reload:"刷新",installAvailable:"安装 WindCli,以便快速访问并支持离线使用。",install:"安装",offlineReady:"WindCli 已可离线使用。",dismiss:"关闭"},_p={title:"有可用更新",newVersionReady:"新版本已准备就绪",currentVersion:"当前版本",latestVersion:"最新版本",whatsNew:"新内容:",viewFullRelease:"查看完整发布",updateProgress:"更新进度:",manualUpgrade:"手动升级:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:"或点击'立即更新'以自动运行更新。",updateCompleted:"更新成功完成!",restartServer:"请重启服务器以应用更改。",updateFailed:"更新失败",buttons:{close:"关闭",later:"稍后",copyCommand:"复制命令",updateNow:"立即更新",updating:"更新中..."},ariaLabels:{closeModal:"关闭版本升级模态框",showSidebar:"显示侧边栏",settings:"设置",updateAvailable:"有可用更新",closeSidebar:"关闭侧边栏"}},Yp={buttons:$p,tabs:Rp,status:Lp,messages:Fp,navigation:Bp,common:Gp,time:Hp,fileOperations:Op,mainContent:Up,fileTree:qp,projectWizard:Wp,notifications:Vp,pwa:Kp,versionUpdate:_p},Jp="设置",Qp={account:"账户",permissions:"权限",mcpServers:"MCP 服务器",skills:"技能",appearance:"外观"},Zp={title:"账户",language:"语言",languageLabel:"显示语言",languageDescription:"选择您偏好的界面语言",username:"用户名",email:"邮箱",profile:"个人资料",changePassword:"修改密码"},Xp={title:"MCP 服务器",addServer:"添加服务器",editServer:"编辑服务器",deleteServer:"删除服务器",serverName:"服务器名称",serverType:"服务器类型",config:"配置",testConnection:"测试连接",status:"状态",connected:"已连接",disconnected:"未连接",scope:{label:"范围",user:"用户",project:"项目"}},em={title:"外观",theme:"主题",codeEditor:"代码编辑器",editorTheme:"编辑器主题",wordWrap:"自动换行",showMinimap:"显示缩略图",lineNumbers:"行号",fontSize:"字体大小"},tm={saveChanges:"保存更改",resetToDefaults:"重置为默认值",cancelChanges:"取消更改"},nm={title:"语音",description:"通过兼容 OpenAI 的音频后端实现语音转文字输入和朗读功能。",enable:"启用语音",enableDescription:"在消息上显示麦克风按钮和朗读按钮。",backendTitle:"后端",backendDescription:"指向 OpenAI、Groq 或本地服务器(LocalAI、Speaches、Kokoro-FastAPI)。留空以使用服务器默认值。",baseUrl:"基础 URL",apiKey:"API 密钥",sttModel:"语音转文字模型",ttsModel:"文字转语音模型",voice:"语音",format:"音频格式",note:"自定义基础 URL 由您的浏览器直接调用,必须允许浏览器 CORS 请求。留空以使用服务器配置的后端。"},sm={title:"快速设置",sections:{appearance:"外观",toolDisplay:"工具显示",inputSettings:"输入设置"},darkMode:"深色模式",showRawParameters:"显示原始参数",showThinking:"显示思考过程",sendByCtrlEnter:"使用 Ctrl+Enter 发送",voiceEnabled:"语音(麦克风 + 朗读)",sendByCtrlEnterDescription:"启用后,按 Ctrl+Enter 发送消息,而不是仅按 Enter。这对于使用输入法的用户可以避免意外发送。",dragHandle:{dragging:"正在拖拽手柄",closePanel:"关闭设置面板",openPanel:"打开设置面板",draggingStatus:"正在拖拽...",toggleAndMove:"点击切换,拖拽移动"}},im={title:"终端快捷键",sectionKeys:"按键",sectionNavigation:"导航",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"上箭头",arrowDown:"下箭头",scrollDown:"滚动到底部",handle:{closePanel:"关闭快捷键面板",openPanel:"打开快捷键面板"}},am={label:"设置",agents:"智能体",appearance:"外观",git:"Git",apiTokens:"API 和令牌",voice:"语音",tasks:"任务",browser:"浏览器",notifications:"通知",plugins:"插件",about:"关于"},om={installApp:{title:"安装 WindCli",description:"将应用安装到当前设备。",install:"安装",installed:"已安装",installedDescription:"WindCli 已安装到当前设备。"}},rm={title:"通知",description:"控制你希望接收的通知事件。",webPush:{title:"通知此浏览器",enable:"启用通知",disable:"关闭通知",enabled:"此浏览器已启用通知",loading:"更新中...",unsupported:"此浏览器不支持推送通知。",denied:"推送通知已被阻止,请在浏览器设置中允许。"},desktop:{title:"通知此桌面应用",enable:"启用通知",disable:"关闭通知",enabled:"此桌面应用已启用通知",unsupported:"此系统不支持桌面通知。"},sound:{title:"声音",description:"聊天运行完成时播放短提示音。",enabled:"已启用",test:"测试声音"},events:{title:"事件类型",actionRequired:"需要处理",stop:"运行已停止",error:"运行失败"}},lm={darkMode:{label:"深色模式",description:"切换浅色和深色主题"},projectSorting:{label:"项目排序",description:"项目在侧边栏中的排列方式",alphabetical:"按字母顺序",recentActivity:"最近活动"},codeEditor:{title:"代码编辑器",theme:{label:"编辑器主题",description:"代码编辑器的默认主题"},wordWrap:{label:"自动换行",description:"在编辑器中默认启用自动换行"},showMinimap:{label:"显示缩略图",description:"在差异视图中显示缩略图以便于导航"},lineNumbers:{label:"显示行号",description:"在编辑器中显示行号"},fontSize:{label:"字体大小",description:"编辑器字体大小(px)"}}},cm={title:{add:"添加 MCP 服务器",edit:"编辑 MCP 服务器"},importMode:{form:"表单输入",json:"JSON 导入"},scope:{label:"范围",userGlobal:"用户(全局)",projectLocal:"项目(本地)",userDescription:"用户范围:在您机器上的所有项目中可用",projectDescription:"本地范围:仅在选定项目中可用",cannotChange:"编辑现有服务器时无法更改范围"},fields:{serverName:"服务器名称",transportType:"传输类型",command:"命令",arguments:"参数(每行一个)",jsonConfig:"JSON 配置",url:"URL",envVars:"环境变量(KEY=值,每行一个)",headers:"请求头(KEY=值,每行一个)",selectProject:"选择项目..."},placeholders:{serverName:"我的服务"},validation:{missingType:"缺少必填字段:type",stdioRequiresCommand:"stdio 类型需要 command 字段",httpRequiresUrl:"{{type}} 类型需要 url 字段",invalidJson:"无效的 JSON 格式",jsonHelp:"粘贴您的 MCP 服务器配置(JSON 格式)。示例格式:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"配置详细信息(来自 {{configFile}})",projectPath:"路径:{{path}}",actions:{cancel:"取消",saving:"保存中...",addServer:"添加服务器",updateServer:"更新服务器"}},dm={success:"设置保存成功!",error:"保存设置失败",saving:"保存中..."},um={save:"保存设置",cancel:"取消"},pm={title:"Git 配置",description:"配置您的 git 提交身份。这些设置将通过 git config --global 全局应用",name:{label:"Git 名称",help:"您的 git 提交名称"},email:{label:"Git 邮箱",help:"您的 git 提交邮箱"},actions:{save:"保存配置",saving:"保存中..."},status:{success:"保存成功"}},mm={title:"API 密钥",description:"生成 API 密钥以从其他应用访问外部 API。",newKey:{alertTitle:"⚠️ 保存您的 API 密钥",alertMessage:"这是您唯一一次看到此密钥。请妥善保存。",iveSavedIt:"我已保存"},form:{placeholder:"API 密钥名称(例如:生产服务器)",createButton:"创建",cancelButton:"取消"},newButton:"新建 API 密钥",empty:"尚未创建 API 密钥。",list:{created:"创建时间:",lastUsed:"最后使用:"},confirmDelete:"确定要删除此 API 密钥吗?",status:{active:"激活",inactive:"未激活"},github:{title:"GitHub 令牌",description:"添加 GitHub 个人访问令牌以通过外部 API 克隆私有仓库。",descriptionAlt:"添加 GitHub 个人访问令牌以克隆私有仓库。您也可以直接在 API 请求中传递令牌而无需存储。",addButton:"添加令牌",form:{namePlaceholder:"令牌名称(例如:个人仓库)",tokenPlaceholder:"GitHub 个人访问令牌(ghp_...)",descriptionPlaceholder:"描述(可选)",addButton:"添加令牌",cancelButton:"取消",howToCreate:"如何创建 GitHub 个人访问令牌 →"},empty:"尚未添加 GitHub 令牌。",added:"添加时间:",confirmDelete:"确定要删除此 GitHub 令牌吗?"},apiDocsLink:"API 文档",documentation:{title:"外部 API 文档",description:"了解如何使用外部 API 从您的应用程序触发 Claude/Cursor 会话。",viewLink:"查看 API 文档 →"},loading:"加载中...",version:{updateAvailable:"有可用更新:v{{version}}"}},gm={checking:"正在检查 TaskMaster 安装...",notInstalled:{title:"未安装 TaskMaster AI CLI",description:"需要 TaskMaster CLI 才能使用任务管理功能。安装它以开始使用:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"在 GitHub 上查看",afterInstallation:"安装后:",steps:{restart:"重启此应用程序",autoAvailable:"TaskMaster 功能将自动可用",initCommand:"在项目目录中使用 task-master init"}},settings:{enableLabel:"启用 TaskMaster 集成",enableDescription:"在整个界面中显示 TaskMaster 任务、横幅和侧边栏指示器"}},hm={authStatus:{checking:"检查中...",connected:"已连接",notConnected:"未连接",disconnected:"已断开",checkingAuth:"正在检查认证状态...",loggedInAs:"登录为 {{email}}",authenticatedUser:"已认证用户"},account:{claude:{description:"Anthropic Claude AI 助手"},cursor:{description:"Cursor AI 驱动的代码编辑器"},codex:{description:"OpenAI Codex AI 助手"},opencode:{description:"OpenCode CLI 助手"}},connectionStatus:"连接状态",login:{title:"登录",reAuthenticate:"重新认证",description:"登录您的 {{agent}} 账户以启用 AI 功能",reAuthDescription:"使用其他账户登录或刷新凭据",button:"登录",reLoginButton:"重新登录"},error:"错误:{{error}}"},fm={title:"权限设置",skipPermissions:{label:"跳过权限提示(请谨慎使用)",claudeDescription:"等同于 --dangerously-skip-permissions 标志",cursorDescription:"等同于 Cursor CLI 中的 -f 标志"},allowedTools:{title:"允许的工具",description:"无需权限提示即可自动使用的工具",placeholder:'例如:"Bash(git log:*)" 或 "Write"',quickAdd:"快速添加常用工具:",empty:"未配置允许的工具"},blockedTools:{title:"禁用的工具",description:"无需权限提示即可自动禁用的工具",placeholder:'例如:"Bash(rm:*)"',empty:"未配置禁用的工具"},allowedCommands:{title:"允许的 Shell 命令",description:"无需权限提示即可自动执行的 Shell 命令",placeholder:'例如:"Shell(ls)" 或 "Shell(git status)"',quickAdd:"快速添加常用命令:",empty:"未配置允许的命令"},blockedCommands:{title:"阻止的 Shell 命令",description:"自动阻止的 Shell 命令",placeholder:'例如:"Shell(rm -rf)" 或 "Shell(sudo)"',empty:"未配置阻止的命令"},toolExamples:{title:"工具模式示例:",bashGitLog:"- 允许所有 git log 命令",bashGitDiff:"- 允许所有 git diff 命令",write:"- 允许所有 Write 工具使用",bashRm:"- 阻止所有 rm 命令(危险)"},shellExamples:{title:"Shell 命令示例:",ls:"- 允许 ls 命令",gitStatus:"- 允许 git status",npmInstall:"- 允许 npm install",rmRf:"- 阻止递归删除"},codex:{permissionMode:"权限模式",description:"控制 Codex 如何处理文件修改和命令执行",modes:{default:{title:"默认",description:"只有受信任的命令(ls、cat、grep、git status 等)会自动运行。其他命令将被跳过。可以写入工作区。"},acceptEdits:{title:"接受编辑",description:"所有命令在工作区内自动运行。具有沙箱执行的全自动模式。"},bypassPermissions:{title:"绕过权限",description:"完全系统访问,无任何限制。所有命令自动运行,具有完整的磁盘和网络访问权限。请谨慎使用。"}},technicalDetails:"技术详情",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted。受信任的命令:cat、cd、grep、head、ls、pwd、tail、git status/log/diff/show、find(不带 -exec)等。",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never。所有命令在项目目录内自动执行。",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never。完全系统访问权限,仅在可信环境中使用。",overrideNote:"您可以使用聊天界面中的模式按钮按会话覆盖此设置。"}},actions:{add:"添加"}},bm={title:"MCP 服务器",description:{claude:"Model Context Protocol 服务器为 Claude 提供额外的工具和数据源",cursor:"Model Context Protocol 服务器为 Cursor 提供额外的工具和数据源",codex:"Model Context Protocol 服务器为 Codex 提供额外的工具和数据源",opencode:"Model Context Protocol 服务器为 OpenCode 提供额外的工具和数据源"},addButton:"添加 MCP 服务器",empty:"未配置 MCP 服务器",serverType:"类型",scope:{local:"本地",user:"用户"},config:{command:"命令",url:"URL",args:"参数",environment:"环境变量"},tools:{title:"工具",count:"({{count}}):",more:"还有 {{count}} 个"},actions:{edit:"编辑服务器",delete:"删除服务器"},managed:{badge:"已托管",hint:"由 WindCli 管理。"},help:{title:"关于 Codex MCP",description:"Codex 支持基于 stdio 的 MCP 服务器。您可以添加服务器,通过额外的工具和资源来扩展 Codex 的功能。"}},vm={title:"插件",description:"通过自定义插件扩展界面。从 git 安装或直接将文件夹放入 ~/.claude-code-ui/plugins/",installPlaceholder:"https://github.com/user/my-plugin",installButton:"安装",installing:"安装中…",securityWarning:"仅安装您已审查过源代码或信任作者的插件。",scanningPlugins:"正在扫描插件…",noPluginsInstalled:"未安装插件",pullLatest:"从 git 拉取最新内容",noGitRemote:"无 git 远程仓库 — 无法更新",uninstallPlugin:"卸载插件",confirmUninstall:"再次点击确认",confirmUninstallMessage:"移除 {{name}}?此操作无法撤销。",cancel:"取消",remove:"移除",updateFailed:"更新失败",installFailed:"安装失败",uninstallFailed:"卸载失败",toggleFailed:"切换失败",starterPluginLabel:"入门插件",starter:"入门模板",docs:"文档",sections:{officialTitle:"官方插件",officialDescription:"由 WindCli 团队维护,可直接安装。",unofficialTitle:"其他插件",unofficialDescription:"来自其他用户的非官方插件和集成。安装前请审查源代码。"},starterPlugin:{name:"项目统计",badge:"入门",description:"查看项目的文件数、代码行数、文件类型分布以及最近活动。",install:"安装"},terminalPlugin:{name:"终端",badge:"官方",description:"集成终端,可直接在界面内获得完整 Shell 访问权限。",install:"安装"},scheduledPromptPlugin:{name:"定时提示",badge:"非官方",description:"安排工作区提示、查看运行历史并管理定期本地任务。",install:"安装"},claudeWatchPlugin:{name:"Claude Watch",badge:"非官方",description:"监控长时间运行的 Claude Code 会话,检测挂起并暴露进程控制。",install:"安装"},prismCloudCLI:{name:"PRISM CloudCLI",badge:"非官方",description:"WindCli 内的 Claude Code 会话智能分析。无需离开浏览器即可了解会话为何消耗大量 Token。",install:"安装"},sessionManagerPlugin:{name:"会话管理",badge:"非官方",description:"查看、管理和终止活跃的 Claude Code 会话。",install:"安装"},tokenCostCalculatorPlugin:{name:"Token 费用计算器",badge:"非官方",description:"根据模型价格和 Token 使用量计算 API 费用,支持预设模型定价。",install:"安装"},taskQueuePlugin:{name:"任务队列",badge:"非官方",description:"任务队列仪表板,用于查看、筛选和启动 Agent 任务。",install:"安装"},githubIssuesBoardPlugin:{name:"GitHub Issues 看板",badge:"非官方",description:"GitHub Issues 看板,支持双向 TaskMaster 同步和 /github-task CLI 技能自动安装",install:"安装"},morePlugins:"更多",enable:"启用",disable:"禁用",installAriaLabel:"插件 git 仓库 URL",tab:"标签",runningStatus:"运行中"},km={title:Jp,tabs:Qp,account:Zp,mcp:Xp,appearance:em,actions:tm,voiceSettings:nm,quickSettings:sm,terminalShortcuts:im,mainTabs:am,about:om,notifications:rm,appearanceSettings:lm,mcpForm:cm,saveStatus:dm,footerActions:um,git:pm,apiKeys:mm,tasks:gm,agents:hm,permissions:fm,mcpServers:bm,pluginSettings:vm},xm={title:"欢迎回来",description:"登录您的 WindCli 账户",username:"用户名",password:"密码",submit:"登录",loading:"登录中...",errors:{invalidCredentials:"用户名或密码无效",requiredFields:"请填写所有字段",networkError:"网络错误,请重试。"},placeholders:{username:"输入您的用户名",password:"输入您的密码"}},ym={title:"创建账户",username:"用户名",password:"密码",confirmPassword:"确认密码",submit:"创建账户",loading:"创建账户中...",errors:{passwordMismatch:"密码不匹配",usernameTaken:"用户名已被占用",weakPassword:"密码强度太弱"}},wm={title:"退出登录",confirm:"确定要退出登录吗?",button:"退出登录"},Cm={login:xm,register:ym,logout:wm},Sm={title:"项目",newProject:"新建项目",deleteProject:"移除项目",renameProject:"重命名项目",noProjects:"未找到项目",loadingProjects:"加载项目中...",searchPlaceholder:"搜索项目...",projectNamePlaceholder:"项目名称",starred:"星标",all:"全部",untitledSession:"未命名会话",newSession:"新会话",codexSession:"Codex 会话",fetchingProjects:"正在获取您的 Claude 项目和会话",projects:"项目",noMatchingProjects:"未找到匹配的项目",tryDifferentSearch:"尝试调整您的搜索词",runClaudeCli:"在项目目录中运行 Claude CLI 以开始使用"},Pm={title:"WindCli",subtitle:"AI 编程助手"},Am={title:"会话",newSession:"新建会话",deleteSession:"删除会话",renameSession:"重命名会话",noSessions:"暂无会话",loadingSessions:"加载会话中...",unnamed:"未命名",loading:"加载中...",showMore:"显示更多会话"},jm={viewEnvironments:"查看环境",hideSidebar:"隐藏侧边栏",createProject:"创建新项目",refresh:"刷新项目和会话 (Ctrl+R)",renameProject:"重命名项目 (F2)",deleteProject:"从侧边栏移除项目 (Delete)",addToFavorites:"添加到收藏",removeFromFavorites:"从收藏移除",editSessionName:"手动编辑会话名称",deleteSession:"永久删除此会话",activeSessionIndicator:"最近活跃的会话(最近 10 分钟)",save:"保存",cancel:"取消",clearSearch:"清除搜索",openCommandPalette:"打开命令面板",attentionRequiredIndicator:"会话需要处理"},Tm={chat:"聊天",files:"文件",git:"Git",terminal:"终端",tasks:"任务"},Im={refresh:"刷新",settings:"设置",collapseAll:"全部折叠",expandAll:"全部展开",cancel:"取消",save:"保存",delete:"删除",rename:"重命名",joinCommunity:"加入社区",reportIssue:"报告问题",starOnGithub:"在GitHub上加星"},Em={openSource:"开源"},Mm={active:"活动",inactive:"非活动",thinking:"思考中...",error:"错误",aborted:"已中止",unknown:"未知"},zm={justNow:"刚刚",oneMinuteAgo:"1 分钟前",minutesAgo:"{{count}} 分钟前",oneHourAgo:"1 小时前",hoursAgo:"{{count}} 小时前",oneDayAgo:"1 天前",daysAgo:"{{count}} 天前"},Dm={deleteConfirm:"确定要删除吗?",renameSuccess:"重命名成功",deleteSuccess:"删除成功",errorOccurred:"发生错误",deleteSessionConfirm:"确定要删除此会话吗?此操作无法撤销。",deleteProjectConfirm:"从侧边栏移除此项目?您的项目文件、记忆和会话数据不会被删除。",enterProjectPath:"请输入项目路径",deleteSessionFailed:"删除会话失败,请重试。",deleteSessionError:"删除会话时出错,请重试。",renameSessionFailed:"重命名会话失败,请重试。",renameSessionError:"重命名会话时出错,请重试。",deleteProjectFailed:"移除项目失败,请重试。",deleteProjectError:"移除项目时出错,请重试。",createProjectFailed:"创建项目失败,请重试。",createProjectError:"创建项目时出错,请重试。",updateProjectError:"更新项目时出错,请重试。",refreshError:"刷新失败,请重试。",restoreProjectFailed:"恢复项目失败,请重试。",restoreProjectError:"恢复项目时出错,请重试。",restoreSessionFailed:"恢复会话失败,请重试。",restoreSessionError:"恢复会话时出错,请重试。"},Nm={updateAvailable:"有可用更新",restartRequired:"已安装更新 — 请重启服务器以生效"},$m={modeProjects:"项目",modeConversations:"对话",conversationsPlaceholder:"搜索对话内容...",searching:"搜索中...",sessionTitles:"会话标题",conversationContents:"对话内容",noResults:"未找到结果",tryDifferentQuery:"尝试不同的搜索词",matches_one:"{{count}} 个匹配",matches_other:"{{count}} 个匹配",projectsScanned_one:"{{count}} 个项目已扫描",projectsScanned_other:"{{count}} 个项目已扫描"},Rm={deleteProject:"移除项目",deleteSession:"删除会话",confirmDelete:"您想如何处理",sessionCount_one:"此项目包含 {{count}} 个对话。",sessionCount_other:"此项目包含 {{count}} 个对话。",removeFromSidebar:"仅从侧边栏移除",deleteAllData:"永久删除所有数据",allConversationsDeleted:"项目将从侧边栏中移除。您的文件、记忆和会话数据将会保留。",cannotUndo:"您可以稍后重新添加此项目。"},Lm={projects:Sm,app:Pm,sessions:Am,tooltips:jm,navigation:Tm,actions:Im,branding:Em,status:Mm,time:zm,messages:Dm,version:Nm,search:$m,deleteConfirmation:Rm},Fm={copy:"复制",copied:"已复制",copyCode:"复制代码"},Bm={copy:"复制消息",copied:"消息已复制",selectFormat:"选择复制格式",copyAsMarkdown:"复制为 Markdown",copyAsText:"复制为纯文本"},Gm={user:"U",error:"错误",tool:"工具",claude:"Claude",cursor:"Cursor",codex:"Codex",opencode:"OpenCode"},Hm={settings:"工具设置",error:"工具错误",result:"工具结果",viewParams:"查看输入参数",viewRawParams:"查看原始参数",viewDiff:"查看编辑差异",creatingFile:"创建新文件:",updatingTodo:"更新待办事项",read:"读取",readFile:"读取文件",updateTodo:"更新待办列表",readTodo:"读取待办列表",searchResults:"结果"},Om={found:"找到 {{count}} 个{{type}}",file:"文件",files:"文件",pattern:"模式:",in:"在:"},Um={updated:"文件更新成功",created:"文件创建成功",written:"文件写入成功",diff:"差异",newFile:"新文件",viewContent:"查看文件内容",viewFullOutput:"查看完整输出({{count}} 个字符)",contentDisplayed:"文件内容显示在上面的差异视图中"},qm={title:"交互式提示",waiting:"等待您在 CLI 中响应",instruction:"请在 Claude 运行的终端中选择一个选项。",selectedOption:"✓ Claude 选择了选项 {{number}}",instructionDetail:"在 CLI 中,您可以使用方向键或输入数字来交互式地选择此选项。"},Wm={title:"思考中...",emoji:"💭 思考中..."},Vm={response:"JSON 响应"},Km={grant:"授予 {{tool}} 权限",added:"权限已添加",addTo:"将 {{entry}} 添加到允许的工具。",retry:"权限已保存。重试请求以使用该工具。",error:"无法更新权限。请重试。",openSettings:"打开设置"},_m={updated:"待办列表已成功更新",current:"当前待办列表"},Ym={viewPlan:"📋 查看实施计划",title:"实施计划"},Jm={resetAt:"Claude 使用限制已达到。您的限制将在 **{{time}} {{timezone}}** - {{date}} 重置"},Qm={permissionMode:"权限模式",modes:{default:"默认模式",auto:"Auto Mode",acceptEdits:"编辑模式",bypassPermissions:"无限制模式",plan:"计划模式"},descriptions:{default:"只有受信任的命令(ls、cat、grep、git status 等)自动运行。其他命令将被跳过。可以写入工作区。",auto:"A model classifier decides per tool call whether to approve or deny. Hands-off, but safer than Bypass — denials still happen.",acceptEdits:"工作区内的所有命令自动运行。完全自动模式,具有沙盒执行功能。",bypassPermissions:"完全的系统访问,无限制。所有命令自动运行,具有完整的磁盘和网络访问权限。请谨慎使用。",plan:"计划模式 - 不执行任何命令"},technicalDetails:"技术细节"},Zm={input:"语音输入",stopRecording:"停止录音",transcribing:"转写中…",speak:"朗读",stopSpeaking:"停止",loading:"加载中…"},Xm={placeholder:"输入 / 调用命令,@ 选择文件,或向 {{provider}} 提问...",placeholderDefault:"输入您的消息...",disabled:"输入已禁用",attachFiles:"附加文件",attachImages:"附加图片",send:"发送",stop:"停止",hintText:{ctrlEnter:"Ctrl+Enter 发送 • Shift+Enter 换行 • Tab 切换模式 • / 斜杠命令",enter:"Enter 发送 • Shift+Enter 换行 • Tab 切换模式 • / 斜杠命令",queue:"Enter 排队发送下一条消息",updateQueued:"Enter 更新排队消息"},clickToChangeMode:"点击更改权限模式(或在输入框中按 Tab)",showAllCommands:"显示所有命令",clearInput:"清空输入",scrollToBottom:"滚动到底部",queue:{sendNext:"排队发送下一条消息",update:"更新排队消息",label:"已排队",willSend:"将在当前完成后发送",edit:"编辑排队消息",delete:"删除排队消息"}},eg={title:"选择您的 AI 助手",description:"选择一个供应商以开始新对话",selectModel:"选择模型",providerInfo:{anthropic:"由 Anthropic 提供",openai:"由 OpenAI 提供",cursorEditor:"AI 代码编辑器",google:"由 Google 提供"},readyPrompt:{claude:"准备好使用带有 {{model}} 的 Claude。请在下方开始输入您的消息。",cursor:"准备好使用带有 {{model}} 的 Cursor。请在下方开始输入您的消息。",codex:"准备好使用带有 {{model}} 的 Codex。请在下方开始输入您的消息。",opencode:"准备好使用带有 {{model}} 的 OpenCode。请在下方开始输入您的消息。",default:"请在上方选择一个提供者以开始"},pressToSearch:"按 <kbd>{{shortcut}}</kbd> 搜索会话、文件和提交"},tg={continue:{title:"继续您的对话",description:"询问有关代码的问题、请求更改或获取开发任务的帮助"},loading:{olderMessages:"正在加载更早的消息...",sessionMessages:"正在加载会话消息..."},messages:{showingOf:"显示 {{shown}} / {{total}} 条消息",scrollToLoad:"向上滚动以加载更多",showingLast:"显示最近 {{count}} 条消息(共 {{total}} 条)",loadEarlier:"加载更早的消息",loadAll:"加载全部消息",loadingAll:"正在加载全部消息...",allLoaded:"全部消息已加载",perfWarning:"已加载全部消息 - 滚动可能变慢。点击「滚动到底部」恢复性能。"}},ng={selectProject:{title:"选择项目",description:"选择一个项目以在该目录中打开交互式 Shell"},status:{newSession:"新会话",initializing:"初始化中...",restarting:"重启中..."},actions:{disconnect:"断开连接",disconnectTitle:"断开 Shell 连接",restart:"重启",restartTitle:"重启 Shell(请先断开连接)",connect:"在 Shell 中继续",connectTitle:"连接到 Shell"},loading:"正在加载终端...",connecting:"正在连接到 Shell...",startSession:"启动新的 Claude 会话",resumeSession:"恢复会话:{{displayName}}...",runCommand:"在 {{projectName}} 中运行 {{command}}",startCli:"在 {{projectName}} 中启动 Claude CLI",defaultCommand:"命令"},sg={actions:{thinking:"Thinking",processing:"Processing",analyzing:"Analyzing",working:"Working",computing:"Computing",reasoning:"Reasoning"},state:{live:"Live",paused:"Paused"},elapsed:{seconds:"{{count}}s",minutesSeconds:"{{minutes}}m {{seconds}}s",label:"{{time}} elapsed",startingNow:"Starting now"},stop:"停止",controls:{stopGeneration:"Stop Generation",pressEscToStop:"Press Esc anytime to stop"},providers:{assistant:"Assistant"}},ig={startChatWithProvider:"选择一个项目以开始与 {{provider}} 聊天"},ag={nextTaskPrompt:"开始下一个任务"},og={codeBlock:Fm,copyMessage:Bm,messageTypes:Gm,tools:Hm,search:Om,fileOperations:Um,interactive:qm,thinking:Wm,json:Vm,permissions:Km,todo:_m,plan:Ym,usageLimit:Jm,codex:Qm,voice:Zm,input:Xm,providerSelection:eg,session:tg,shell:ng,claudeStatus:sg,projectSelection:ig,tasks:ag},rg={changes:"个更改",previousChange:"上一个更改",nextChange:"下一个更改",hideDiff:"隐藏差异高亮",showDiff:"显示差异高亮",settings:"编辑器设置",collapse:"折叠编辑器",expand:"展开编辑器到全宽"},lg="正在加载 {{fileName}}...",cg={showingChanges:"显示更改"},dg={copyPath:"复制文件路径",pathCopied:"文件路径已复制",download:"下载文件",save:"保存",saving:"保存中...",saved:"已保存!",exitFullscreen:"退出全屏",fullscreen:"全屏",close:"关闭",previewMarkdown:"预览 Markdown",editMarkdown:"编辑 Markdown"},ug={lines:"行数:",characters:"字符数:",shortcuts:"按 Ctrl+S 保存 • Esc 关闭"},pg={title:"二进制文件",message:'文件 "{{fileName}}" 无法在文本编辑器中显示,因为它是二进制文件。'},mg={loading:"正在加载预览...",error:"无法显示此文件。",openInNewTab:"在新标签页中打开"},gg={toolbar:rg,loading:lg,header:cg,actions:dg,footer:ug,binaryFile:pg,filePreview:mg},hg={title:"TaskMaster AI 尚未配置",description:"TaskMaster 帮助将复杂的项目分解为可管理的任务,配合 AI 驱动的辅助功能",whatIsTitle:"🎯 什么是 TaskMaster?",features:{aiPowered:"AI 驱动的任务管理:将复杂项目分解为可管理的子任务",prdTemplates:"PRD 模板:从产品需求文档生成任务",dependencyTracking:"依赖追踪:了解任务关系和执行顺序",progressVisualization:"进度可视化:看板和详细的任务分析",cliIntegration:"CLI 集成:使用 taskmaster 命令进行高级工作流"},initializeButton:"初始化 TaskMaster AI"},fg={title:"开始使用 TaskMaster",subtitle:"TaskMaster 已初始化!以下是接下来要做的事:",steps:{createPRD:{title:"创建产品需求文档(PRD)",description:"讨论您的项目构想并创建描述您想构建什么的 PRD。",addButton:"添加 PRD",existingPRDs:"现有的 PRD:"},generateTasks:{title:"从 PRD 生成任务",description:"一旦您有了 PRD,请 AI 助手解析它,TaskMaster 将自动将其分解为可管理的任务,包含实现细节。"},analyzeTasks:{title:"分析并展开任务",description:"请 AI 助手分析任务复杂度,并将其展开为详细的子任务以便于实现。"},startBuilding:{title:"开始构建",description:"请 AI 助手开始处理任务、更新状态,并在项目演进时添加新任务。"}},tip:"💡 提示:从 PRD 开始可以充分利用 TaskMaster 的 AI 驱动任务生成功能"},bg={title:"TaskMaster 设置",subtitle:"{{projectName}} 的交互式 CLI",willStart:"TaskMaster 初始化将自动开始",completed:"TaskMaster 设置完成!您现在可以关闭此窗口。",closeButton:"关闭",closeContinueButton:"关闭并继续"},vg={title:"开始使用 TaskMaster",subtitle:"您的高效任务管理指南",examples:{parsePRD:`💬 示例:
|
|
15
15
|
「我刚用 Claude Task Master 初始化了一个新项目。我有一个 PRD 在 .taskmaster/docs/prd.txt。你能帮我解析它并设置初始任务吗?」`,expandTask:`💬 示例:
|
|
16
16
|
「任务 5 看起来很复杂。你能把它分解成子任务吗?」`,addTask:`💬 示例:
|
|
17
|
-
「请添加一个新任务来实现使用 Cloudinary 的用户个人头像上传功能,研究最佳方法。」`},moreExamples:"查看更多示例和使用模式 →",proTips:{title:"💡 专业提示",search:"使用搜索栏快速找到特定任务",views:"使用视图切换在看板、列表和网格视图之间切换",filters:"使用筛选器聚焦特定任务状态或优先级",details:"点击任何任务以查看详细信息和管理子任务"},learnMore:{title:"📚 了解更多",description:"TaskMaster AI 是为开发者打造的高级任务管理系统。获取文档、示例并为项目做出贡献。",githubButton:"在 GitHub 上查看"}},lg={placeholder:"搜索任务..."},cg={button:"筛选",status:"状态",priority:"优先级",sortBy:"排序方式",allStatuses:"所有状态",allPriorities:"所有优先级",showing:"显示 {{filtered}} / {{total}} 个任务",clearFilters:"清除筛选"},dg={id:"ID",status:"状态",priority:"优先级",idAsc:"ID(递增)",idDesc:"ID(递减)",titleAsc:"标题(A-Z)",titleDesc:"标题(Z-A)",statusAsc:"状态(待处理优先)",statusDesc:"状态(已完成优先)",priorityAsc:"优先级(高优先)",priorityDesc:"优先级(低优先)"},ug={kanban:"看板视图",list:"列表视图",grid:"网格视图"},pg={pending:"📋 待办",inProgress:"🚀 进行中",done:"✅ 已完成",blocked:"🚫 已阻止",deferred:"⏳ 已延后",cancelled:"❌ 已取消",noTasksYet:"暂无任务",tasksWillAppear:"任务将显示在这里",moveTasksHere:"开始后将任务移到这里",completedTasksHere:"已完成的任务显示在这里",statusTasksHere:"此状态的任务将显示在这里"},mg={help:"TaskMaster 入门指南",prds:"PRD",addPRD:"添加 PRD",addTask:"添加任务",createNewPRD:"创建新 PRD",prdsAvailable:"{{count}} 个 PRD 可用"},gg={modified:"修改时间:{{date}}"},hg={pending:"待处理","in-progress":"进行中",done:"已完成",blocked:"已阻止",deferred:"已延后",cancelled:"已取消"},fg={high:"高",medium:"中",low:"低"},bg={title:"没有符合筛选条件的任务",description:"尝试调整您的搜索或筛选条件。"},vg={notConfigured:ig,gettingStarted:ag,setupModal:og,helpGuide:rg,search:lg,filters:cg,sort:dg,views:ug,kanban:pg,buttons:mg,prd:gg,statuses:hg,priorities:fg,noMatchingTasks:bg},kg={save:"保存",cancel:"キャンセル",delete:"削除",create:"作成",edit:"編集",close:"閉じる",confirm:"確認",submit:"送信",retry:"再試行",refresh:"更新",search:"検索",clear:"クリア",copy:"コピー",download:"ダウンロード",upload:"アップロード",browse:"参照"},xg={chat:"チャット",shell:"シェル",files:"ファイル",git:"ソース管理",tasks:"タスク",browser:"Browser",computer:"Computer"},yg={loading:"読み込み中...",success:"成功",error:"エラー",failed:"失敗",pending:"保留中",completed:"完了",inProgress:"進行中"},wg={savedSuccessfully:"保存しました",deletedSuccessfully:"削除しました",updatedSuccessfully:"更新しました",operationFailed:"操作に失敗しました",networkError:"ネットワークエラー。接続を確認してください。",unauthorized:"認証されていません。ログインしてください。",notFound:"見つかりません",invalidInput:"入力が無効です",requiredField:"この項目は必須です",unknownError:"不明なエラーが発生しました"},Cg={settings:"設定",home:"ホーム",back:"戻る",next:"次へ",previous:"前へ",logout:"ログアウト"},Sg={language:"言語",theme:"テーマ",darkMode:"ダークモード",lightMode:"ライトモード",name:"名前",description:"説明",enabled:"有効",disabled:"無効",optional:"任意",version:"バージョン",select:"選択",selectAll:"すべて選択",deselectAll:"すべて解除"},Pg={justNow:"たった今",minutesAgo:"{{count}}分前",hoursAgo:"{{count}}時間前",daysAgo:"{{count}}日前",yesterday:"昨日"},Ag={newFile:"新規ファイル",newFolder:"新規フォルダ",rename:"名前の変更",move:"移動",copyPath:"パスをコピー",openInEditor:"エディタで開く"},jg={loading:"WindCli を読み込んでいます",settingUpWorkspace:"ワークスペースを準備しています...",chooseProject:"プロジェクトを選択",selectProjectDescription:"サイドバーからプロジェクトを選択して、Claudeとコーディングを始めましょう。各プロジェクトにはチャットセッションとファイル履歴が含まれています。",tip:"ヒント",createProjectMobile:"上部のメニューボタンからプロジェクトにアクセスできます",createProjectDesktop:"サイドバーのフォルダアイコンをクリックして新しいプロジェクトを作成できます",newSession:"新しいセッション",untitledSession:"無題のセッション",projectFiles:"プロジェクトファイル"},Tg={loading:"ファイルを読み込んでいます...",files:"ファイル",simpleView:"シンプル表示",compactView:"コンパクト表示",detailedView:"詳細表示",searchPlaceholder:"ファイルやフォルダを検索...",clearSearch:"検索をクリア",name:"名前",size:"サイズ",modified:"更新日時",permissions:"権限",noFilesFound:"ファイルが見つかりません",checkProjectPath:"プロジェクトのパスがアクセス可能か確認してください",noMatchesFound:"一致するものが見つかりません",tryDifferentSearch:"別の検索語を試すか、検索をクリアしてください",justNow:"たった今",minAgo:"{{count}}分前",hoursAgo:"{{count}}時間前",daysAgo:"{{count}}日前",newFile:"新規ファイル (Cmd+N)",newFolder:"新規フォルダ (Cmd+Shift+N)",refresh:"更新",collapseAll:"すべて折りたたむ",context:{rename:"名前を変更",delete:"削除",copyPath:"パスをコピー",download:"ダウンロード",newFile:"新しいファイル",newFolder:"新しいフォルダ",upload:"ファイルをアップロード",refresh:"更新",menuLabel:"ファイルのコンテキストメニュー",loading:"読み込み中..."}},Ig={title:"新規プロジェクトを作成",steps:{type:"種類",configure:"設定",confirm:"確認"},step1:{question:"既存のワークスペースがありますか?それとも新しく作成しますか?",existing:{title:"既存のワークスペース",description:"サーバー上に既存のワークスペースがあり、プロジェクト一覧に追加したい"},new:{title:"新しいワークスペース",description:"新しいワークスペースを作成し、必要に応じてGitHubリポジトリからクローンする"}},step2:{existingPath:"ワークスペースのパス",newPath:"ワークスペースのパス",existingPlaceholder:"/path/to/existing/workspace",newPlaceholder:"/path/to/new/workspace",existingHelp:"既存のワークスペースディレクトリのフルパス",newHelp:"ワークスペースディレクトリのフルパス",githubUrl:"GitHub URL(任意)",githubPlaceholder:"https://github.com/username/repository",githubHelp:"任意: リポジトリをクローンするためのGitHub URLを入力してください",githubAuth:"GitHub認証(任意)",githubAuthHelp:"プライベートリポジトリの場合のみ必要です。パブリックリポジトリは認証なしでクローンできます。",loadingTokens:"保存済みトークンを読み込んでいます...",storedToken:"保存済みトークン",newToken:"新しいトークン",nonePublic:"なし(パブリック)",selectToken:"トークンを選択",selectTokenPlaceholder:"-- トークンを選択 --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"このトークンはこの操作にのみ使用されます",publicRepoInfo:"パブリックリポジトリには認証は不要です。パブリックリポジトリをクローンする場合、トークンは省略できます。",noTokensHelp:"保存済みトークンがありません。設定 → APIキーでトークンを追加すると再利用が簡単になります。",optionalTokenPublic:"GitHubトークン(パブリックリポジトリの場合は任意)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(パブリックリポジトリの場合は空欄可)"},step3:{reviewConfig:"設定の確認",existingWorkspace:"既存のワークスペース",newWorkspace:"新しいワークスペース",path:"パス:",cloneFrom:"クローン元:",authentication:"認証:",usingStoredToken:"保存済みトークンを使用:",usingProvidedToken:"入力されたトークンを使用",noAuthentication:"認証なし",sshKey:"SSHキー",existingInfo:"ワークスペースがプロジェクト一覧に追加され、Claude/Cursorセッションで使用できるようになります。",newWithClone:"このフォルダからリポジトリがクローンされます。",newEmpty:"ワークスペースがプロジェクト一覧に追加され、Claude/Cursorセッションで使用できるようになります。",cloningRepository:"リポジトリをクローンしています..."},buttons:{cancel:"キャンセル",back:"戻る",next:"次へ",createProject:"プロジェクトを作成",creating:"作成中...",cloning:"クローン中..."},errors:{selectType:"既存のワークスペースか新規作成かを選択してください",providePath:"ワークスペースのパスを入力してください",failedToCreate:"ワークスペースの作成に失敗しました",failedToCreateFolder:"フォルダの作成に失敗しました"}},Eg={genericTool:"ツール",codes:{generic:{info:{title:"通知"}},permission:{required:{title:"対応が必要です",body:"{{toolName}} があなたの判断を待っています。"}},run:{stopped:{title:"実行が停止しました",body:"理由: {{reason}}"},failed:{title:"実行に失敗しました"}},agent:{notification:{title:"エージェント通知"}}}},Mg={title:"アップデートのお知らせ",newVersionReady:"新しいバージョンが利用可能です",currentVersion:"現在のバージョン",latestVersion:"最新バージョン",whatsNew:"変更点:",viewFullRelease:"リリース全文を見る",updateProgress:"アップデートの進捗:",manualUpgrade:"手動アップグレード:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:"または「今すぐ更新」をクリックして自動的にアップデートを実行できます。",updateCompleted:"アップデートが完了しました!",restartServer:"変更を適用するにはサーバーを再起動してください。",updateFailed:"アップデートに失敗しました",buttons:{close:"閉じる",later:"後で",copyCommand:"コマンドをコピー",updateNow:"今すぐ更新",updating:"更新中..."},ariaLabels:{closeModal:"バージョンアップグレードモーダルを閉じる",showSidebar:"サイドバーを表示",settings:"設定",updateAvailable:"アップデートあり",closeSidebar:"サイドバーを閉じる"}},zg={buttons:kg,tabs:xg,status:yg,messages:wg,navigation:Cg,common:Sg,time:Pg,fileOperations:Ag,mainContent:jg,fileTree:Tg,projectWizard:Ig,notifications:Eg,versionUpdate:Mg},Dg="設定",Ng={account:"アカウント",permissions:"権限",mcpServers:"MCPサーバー",appearance:"外観"},$g={title:"アカウント",language:"言語",languageLabel:"表示言語",languageDescription:"インターフェースの表示言語を選択してください",username:"ユーザー名",email:"メールアドレス",profile:"プロフィール",changePassword:"パスワードを変更"},Rg={title:"MCPサーバー",addServer:"サーバーを追加",editServer:"サーバーを編集",deleteServer:"サーバーを削除",serverName:"サーバー名",serverType:"サーバーの種類",config:"設定",testConnection:"接続テスト",status:"状態",connected:"接続済み",disconnected:"未接続",scope:{label:"スコープ",user:"ユーザー",project:"プロジェクト"}},Lg={title:"外観",theme:"テーマ",codeEditor:"コードエディタ",editorTheme:"エディタのテーマ",wordWrap:"折り返し",showMinimap:"ミニマップを表示",lineNumbers:"行番号",fontSize:"フォントサイズ"},Fg={saveChanges:"変更を保存",resetToDefaults:"デフォルトに戻す",cancelChanges:"変更をキャンセル"},Bg={title:"クイック設定",sections:{appearance:"外観",toolDisplay:"ツール表示",inputSettings:"入力設定"},darkMode:"ダークモード",showRawParameters:"生パラメータを表示",showThinking:"思考を表示",sendByCtrlEnter:"Ctrl+Enterで送信",sendByCtrlEnterDescription:"有効にすると、Enterではなく Ctrl+Enter でメッセージを送信します。IMEユーザーの誤送信防止に便利です。",dragHandle:{dragging:"ドラッグ中",closePanel:"設定パネルを閉じる",openPanel:"設定パネルを開く",draggingStatus:"ドラッグ中...",toggleAndMove:"クリックで切替、ドラッグで移動"}},Gg={title:"ターミナルショートカット",sectionKeys:"キー",sectionNavigation:"ナビゲーション",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"上矢印",arrowDown:"下矢印",scrollDown:"下にスクロール",handle:{closePanel:"ショートカットパネルを閉じる",openPanel:"ショートカットパネルを開く"}},Hg={label:"設定",agents:"エージェント",appearance:"外観",git:"Git",apiTokens:"API & トークン",tasks:"タスク",notifications:"通知",plugins:"プラグイン",about:"概要"},Og={title:"通知",description:"受信する通知イベントを設定します。",webPush:{title:"Webプッシュ通知",enable:"プッシュ通知を有効にする",disable:"プッシュ通知を無効にする",enabled:"プッシュ通知は有効です",loading:"更新中...",unsupported:"このブラウザではプッシュ通知がサポートされていません。",denied:"プッシュ通知がブロックされています。ブラウザの設定で許可してください。"},sound:{title:"サウンド",description:"チャット実行が完了したときに短い音を再生します。",enabled:"有効",test:"サウンドをテスト"},events:{title:"イベント種別",actionRequired:"対応が必要",stop:"実行停止",error:"実行失敗"}},Ug={darkMode:{label:"ダークモード",description:"ライトテーマとダークテーマを切り替えます"},projectSorting:{label:"プロジェクトの並び順",description:"サイドバーでのプロジェクトの並び順を設定します",alphabetical:"アルファベット順",recentActivity:"最近のアクティビティ順"},codeEditor:{title:"コードエディタ",theme:{label:"エディタのテーマ",description:"コードエディタのデフォルトテーマ"},wordWrap:{label:"折り返し",description:"エディタでデフォルトで折り返しを有効にします"},showMinimap:{label:"ミニマップを表示",description:"差分ビューでナビゲーション用のミニマップを表示します"},lineNumbers:{label:"行番号を表示",description:"エディタに行番号を表示します"},fontSize:{label:"フォントサイズ",description:"エディタのフォントサイズ(ピクセル)"}}},qg={title:{add:"MCPサーバーを追加",edit:"MCPサーバーを編集"},importMode:{form:"フォーム入力",json:"JSONインポート"},scope:{label:"スコープ",userGlobal:"ユーザー(グローバル)",projectLocal:"プロジェクト(ローカル)",userDescription:"ユーザースコープ: すべてのプロジェクトで利用可能",projectDescription:"ローカルスコープ: 選択したプロジェクトでのみ利用可能",cannotChange:"既存のサーバーを編集する場合、スコープは変更できません"},fields:{serverName:"サーバー名",transportType:"トランスポートの種類",command:"コマンド",arguments:"引数(1行に1つ)",jsonConfig:"JSON設定",url:"URL",envVars:"環境変数(KEY=value、1行に1つ)",headers:"ヘッダー(KEY=value、1行に1つ)",selectProject:"プロジェクトを選択..."},placeholders:{serverName:"my-server"},validation:{missingType:"必須フィールドがありません: type",stdioRequiresCommand:"stdioタイプにはcommandフィールドが必要です",httpRequiresUrl:"{{type}}タイプにはurlフィールドが必要です",invalidJson:"無効なJSON形式です",jsonHelp:"MCPサーバー設定をJSON形式で貼り付けてください。例:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"設定の詳細({{configFile}}より)",projectPath:"パス: {{path}}",actions:{cancel:"キャンセル",saving:"保存中...",addServer:"サーバーを追加",updateServer:"サーバーを更新"}},Wg={success:"設定を保存しました!",error:"設定の保存に失敗しました",saving:"保存中..."},Vg={save:"設定を保存",cancel:"キャンセル"},Kg={title:"Git設定",description:"コミット用のGit IDを設定します。この設定は git config --global で適用されます",name:{label:"Git名前",help:"コミットに使用する名前"},email:{label:"Gitメールアドレス",help:"コミットに使用するメールアドレス"},actions:{save:"設定を保存",saving:"保存中..."},status:{success:"保存しました"}},_g={title:"APIキー",description:"外部APIにアクセスするためのAPIキーを生成します。",newKey:{alertTitle:"⚠️ APIキーを保存してください",alertMessage:"このキーが表示されるのは今回限りです。安全な場所に保管してください。",iveSavedIt:"保存しました"},form:{placeholder:"APIキーの名前(例: 本番サーバー)",createButton:"作成",cancelButton:"キャンセル"},newButton:"新しいAPIキー",empty:"APIキーはまだ作成されていません。",list:{created:"作成日:",lastUsed:"最終使用日:"},confirmDelete:"このAPIキーを削除してもよろしいですか?",status:{active:"有効",inactive:"無効"},github:{title:"GitHubトークン",description:"外部APIからプライベートリポジトリをクローンするためのGitHubパーソナルアクセストークンを追加します。",descriptionAlt:"プライベートリポジトリをクローンするためのGitHubパーソナルアクセストークンを追加します。保存せずにAPIリクエストで直接トークンを渡すこともできます。",addButton:"トークンを追加",form:{namePlaceholder:"トークンの名前(例: 個人リポジトリ)",tokenPlaceholder:"GitHubパーソナルアクセストークン(ghp_...)",descriptionPlaceholder:"説明(任意)",addButton:"トークンを追加",cancelButton:"キャンセル",howToCreate:"GitHubパーソナルアクセストークンの作成方法 →"},empty:"GitHubトークンはまだ追加されていません。",added:"追加日:",confirmDelete:"このGitHubトークンを削除してもよろしいですか?"},apiDocsLink:"APIドキュメント",documentation:{title:"外部APIドキュメント",description:"外部APIを使用してアプリケーションからClaude/Cursorセッションを起動する方法を学びます。",viewLink:"APIドキュメントを見る →"},loading:"読み込み中...",version:{updateAvailable:"アップデートあり: v{{version}}"}},Yg={checking:"TaskMasterのインストールを確認しています...",notInstalled:{title:"TaskMaster AI CLIがインストールされていません",description:"タスク管理機能を使用するにはTaskMaster CLIが必要です。以下のコマンドでインストールしてください:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"GitHubで見る",afterInstallation:"インストール後:",steps:{restart:"このアプリケーションを再起動してください",autoAvailable:"TaskMaster機能が自動的に利用可能になります",initCommand:"プロジェクトディレクトリで task-master init を実行してください"}},settings:{enableLabel:"TaskMaster統合を有効にする",enableDescription:"インターフェース全体でTaskMasterのタスク、バナー、サイドバーインジケータを表示します"}},Jg={authStatus:{checking:"確認中...",connected:"接続済み",notConnected:"未接続",disconnected:"切断",checkingAuth:"認証状態を確認しています...",loggedInAs:"{{email}}でログイン中",authenticatedUser:"認証済みユーザー"},account:{claude:{description:"Anthropic Claude AIアシスタント"},cursor:{description:"Cursor AI搭載コードエディタ"},codex:{description:"OpenAI Codex AIアシスタント"}},connectionStatus:"接続状態",login:{title:"ログイン",reAuthenticate:"再認証",description:"{{agent}}アカウントにサインインしてAI機能を有効にします",reAuthDescription:"別のアカウントでサインインするか、認証情報を更新します",button:"ログイン",reLoginButton:"再ログイン"},error:"エラー: {{error}}"},Qg={title:"権限設定",skipPermissions:{label:"権限プロンプトをスキップ(注意して使用)",claudeDescription:"--dangerously-skip-permissions フラグに相当",cursorDescription:"Cursor CLIの -f フラグに相当"},allowedTools:{title:"許可されたツール",description:"権限の確認なしに自動的に許可されるツール",placeholder:'例: "Bash(git log:*)" または "Write"',quickAdd:"よく使うツールを追加:",empty:"許可されたツールはありません"},blockedTools:{title:"ブロックされたツール",description:"権限の確認なしに自動的にブロックされるツール",placeholder:'例: "Bash(rm:*)"',empty:"ブロックされたツールはありません"},allowedCommands:{title:"許可されたシェルコマンド",description:"権限の確認なしに自動的に許可されるシェルコマンド",placeholder:'例: "Shell(ls)" または "Shell(git status)"',quickAdd:"よく使うコマンドを追加:",empty:"許可されたコマンドはありません"},blockedCommands:{title:"ブロックされたシェルコマンド",description:"自動的にブロックされるシェルコマンド",placeholder:'例: "Shell(rm -rf)" または "Shell(sudo)"',empty:"ブロックされたコマンドはありません"},toolExamples:{title:"ツールパターンの例:",bashGitLog:"- すべてのgit logコマンドを許可",bashGitDiff:"- すべてのgit diffコマンドを許可",write:"- すべてのWriteツールの使用を許可",bashRm:"- すべてのrmコマンドをブロック(危険)"},shellExamples:{title:"シェルコマンドの例:",ls:"- lsコマンドを許可",gitStatus:"- git statusを許可",npmInstall:"- npm installを許可",rmRf:"- 再帰的削除をブロック"},codex:{permissionMode:"権限モード",description:"Codexがファイルの変更やコマンドの実行を処理する方法を制御します",modes:{default:{title:"デフォルト",description:"信頼されたコマンド(ls、cat、grep、git statusなど)のみ自動実行。その他のコマンドはスキップ。ワークスペースへの書き込みは可能。"},acceptEdits:{title:"編集を許可",description:"ワークスペース内ですべてのコマンドを自動実行。サンドボックス環境での完全自動モード。"},bypassPermissions:{title:"権限をバイパス",description:"制限なしの完全なシステムアクセス。すべてのコマンドがディスクとネットワークへの完全なアクセスで自動実行されます。注意して使用してください。"}},technicalDetails:"技術的な詳細",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted。信頼されたコマンド: cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find(-execなし)など。",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never。すべてのコマンドがプロジェクトディレクトリ内で自動実行。",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never。完全なシステムアクセス。信頼された環境でのみ使用してください。",overrideNote:"チャットインターフェースのモードボタンを使用してセッションごとに上書きできます。"}},actions:{add:"追加"}},Zg={title:"MCPサーバー",description:{claude:"Model Context Protocolサーバーは、Claudeに追加のツールやデータソースを提供します",cursor:"Model Context Protocolサーバーは、Cursorに追加のツールやデータソースを提供します",codex:"Model Context Protocolサーバーは、Codexに追加のツールやデータソースを提供します"},addButton:"MCPサーバーを追加",empty:"MCPサーバーは設定されていません",serverType:"種類",scope:{local:"ローカル",user:"ユーザー"},config:{command:"コマンド",url:"URL",args:"引数",environment:"環境変数"},tools:{title:"ツール",count:"({{count}}):",more:"他{{count}}件"},actions:{edit:"サーバーを編集",delete:"サーバーを削除"},help:{title:"Codex MCPについて",description:"Codexはstdioベースのツールサーバーをサポートしています。追加のツールやリソースでCodexの機能を拡張するサーバーを追加できます。"}},Xg={title:"プラグイン",description:"カスタムプラグインでインターフェースを拡張します。gitからインストールするか、~/.claude-code-ui/plugins/ にフォルダを配置してください。",installPlaceholder:"https://github.com/user/my-plugin",installButton:"インストール",installing:"インストール中…",securityWarning:"信頼できる作成者のプラグイン、またはソースコードを確認済みのプラグインのみをインストールしてください。",scanningPlugins:"プラグインをスキャン中…",noPluginsInstalled:"プラグインがインストールされていません",pullLatest:"gitから最新を取得",noGitRemote:"リモートgitリポジトリがありません — アップデート不可",uninstallPlugin:"プラグインを削除",confirmUninstall:"クリックして確定",confirmUninstallMessage:"{{name}} を削除しますか?この操作は取り消せません。",cancel:"キャンセル",remove:"削除",updateFailed:"アップデートに失敗しました",installFailed:"インストールに失敗しました",uninstallFailed:"削除に失敗しました",toggleFailed:"切り替えに失敗しました",buildYourOwn:"プラグインを自作する",starter:"スターター",docs:"ドキュメント",starterPlugin:{name:"プロジェクト統計",badge:"スターター",description:"プロジェクトのファイル数、コード行数、ファイルタイプの内訳、最近のアクティビティを表示します。",install:"インストール"},morePlugins:"詳細",enable:"有効にする",disable:"無効にする",installAriaLabel:"プラグインのgitリポジトリURL",tab:"タブ",runningStatus:"実行中"},eh={title:Dg,tabs:Ng,account:$g,mcp:Rg,appearance:Lg,actions:Fg,quickSettings:Bg,terminalShortcuts:Gg,mainTabs:Hg,notifications:Og,appearanceSettings:Ug,mcpForm:qg,saveStatus:Wg,footerActions:Vg,git:Kg,apiKeys:_g,tasks:Yg,agents:Jg,permissions:Qg,mcpServers:Zg,pluginSettings:Xg},th={title:"おかえりなさい",description:"WindCliアカウントにサインイン",username:"ユーザー名",password:"パスワード",submit:"サインイン",loading:"サインイン中...",errors:{invalidCredentials:"ユーザー名またはパスワードが正しくありません",requiredFields:"すべての項目を入力してください",networkError:"ネットワークエラー。もう一度お試しください。"},placeholders:{username:"ユーザー名を入力",password:"パスワードを入力"}},nh={title:"アカウント作成",username:"ユーザー名",password:"パスワード",confirmPassword:"パスワードの確認",submit:"アカウントを作成",loading:"アカウントを作成中...",errors:{passwordMismatch:"パスワードが一致しません",usernameTaken:"このユーザー名は既に使用されています",weakPassword:"パスワードが弱すぎます"}},sh={title:"サインアウト",confirm:"サインアウトしてもよろしいですか?",button:"サインアウト"},ih={login:th,register:nh,logout:sh},ah={title:"プロジェクト",newProject:"新規プロジェクト",deleteProject:"プロジェクトを除去",renameProject:"プロジェクト名を変更",noProjects:"プロジェクトが見つかりません",loadingProjects:"プロジェクトを読み込んでいます...",searchPlaceholder:"プロジェクトを検索...",projectNamePlaceholder:"プロジェクト名",starred:"お気に入り",all:"すべて",untitledSession:"無題のセッション",newSession:"新しいセッション",codexSession:"Codexセッション",fetchingProjects:"Claudeのプロジェクトとセッションを取得しています",projects:"プロジェクト",noMatchingProjects:"一致するプロジェクトがありません",tryDifferentSearch:"検索語を変えてお試しください",runClaudeCli:"プロジェクトディレクトリでClaude CLIを実行して始めましょう"},oh={title:"WindCli",subtitle:"AIコーディングアシスタント"},rh={title:"セッション",newSession:"新しいセッション",deleteSession:"セッションを削除",renameSession:"セッション名を変更",noSessions:"セッションはまだありません",loadingSessions:"セッションを読み込んでいます...",unnamed:"名称未設定",loading:"読み込み中...",showMore:"さらにセッションを表示"},lh={viewEnvironments:"環境を表示",hideSidebar:"サイドバーを隠す",createProject:"新しいプロジェクトを作成",refresh:"プロジェクトとセッションを更新 (Ctrl+R)",renameProject:"プロジェクト名を変更 (F2)",deleteProject:"サイドバーからプロジェクトを除去 (Delete)",addToFavorites:"お気に入りに追加",removeFromFavorites:"お気に入りから削除",editSessionName:"セッション名を手動で編集",deleteSession:"このセッションを完全に削除",activeSessionIndicator:"最近アクティブなセッション(過去10分以内)",save:"保存",cancel:"キャンセル",openCommandPalette:"コマンドパレットを開く",attentionRequiredIndicator:"セッションが対応を必要としています"},ch={chat:"チャット",files:"ファイル",git:"Git",terminal:"ターミナル",tasks:"タスク"},dh={refresh:"更新",settings:"設定",collapseAll:"すべて折りたたむ",expandAll:"すべて展開",cancel:"キャンセル",save:"保存",delete:"削除",rename:"名前の変更",joinCommunity:"コミュニティに参加",reportIssue:"問題を報告",starOnGithub:"GitHubでスター"},uh={openSource:"オープンソース"},ph={active:"アクティブ",inactive:"非アクティブ",thinking:"思考中...",error:"エラー",aborted:"中断",unknown:"不明"},mh={justNow:"たった今",oneMinuteAgo:"1分前",minutesAgo:"{{count}}分前",oneHourAgo:"1時間前",hoursAgo:"{{count}}時間前",oneDayAgo:"1日前",daysAgo:"{{count}}日前"},gh={deleteConfirm:"本当に削除しますか?",renameSuccess:"名前を変更しました",deleteSuccess:"削除しました",errorOccurred:"エラーが発生しました",deleteSessionConfirm:"このセッションを削除してもよろしいですか?この操作は取り消せません。",deleteProjectConfirm:"サイドバーからこのプロジェクトを除去しますか?プロジェクトファイル、メモリ、セッションデータは削除されません。",enterProjectPath:"プロジェクトのパスを入力してください",deleteSessionFailed:"セッションの削除に失敗しました。もう一度お試しください。",deleteSessionError:"セッションの削除でエラーが発生しました。もう一度お試しください。",renameSessionFailed:"セッション名の変更に失敗しました。もう一度お試しください。",renameSessionError:"セッション名の変更でエラーが発生しました。もう一度お試しください。",deleteProjectFailed:"プロジェクトの除去に失敗しました。もう一度お試しください。",deleteProjectError:"プロジェクトの除去でエラーが発生しました。もう一度お試しください。",createProjectFailed:"プロジェクトの作成に失敗しました。もう一度お試しください。",createProjectError:"プロジェクトの作成でエラーが発生しました。もう一度お試しください。",updateProjectError:"プロジェクトの更新でエラーが発生しました。もう一度お試しください。",refreshError:"更新に失敗しました。もう一度お試しください。",restoreProjectFailed:"プロジェクトの復元に失敗しました。もう一度お試しください。",restoreProjectError:"プロジェクトの復元でエラーが発生しました。もう一度お試しください。",restoreSessionFailed:"セッションの復元に失敗しました。もう一度お試しください。",restoreSessionError:"セッションの復元でエラーが発生しました。もう一度お試しください。"},hh={updateAvailable:"アップデートあり",restartRequired:"更新が適用されていません。サーバーを再起動してください"},fh={deleteProject:"プロジェクトを除去",deleteSession:"セッションを削除",confirmDelete:"このプロジェクトをどうしますか:",sessionCount:"このプロジェクトには{{count}}件の会話があります。",removeFromSidebar:"サイドバーからのみ除去",deleteAllData:"すべてのデータを完全に削除",allConversationsDeleted:"プロジェクトはサイドバーから除去されます。ファイル、メモリ、セッションデータは保持されます。",cannotUndo:"後からプロジェクトを再追加できます。"},bh={projects:ah,app:oh,sessions:rh,tooltips:lh,navigation:ch,actions:dh,branding:uh,status:ph,time:mh,messages:gh,version:hh,deleteConfirmation:fh},vh={copy:"コピー",copied:"コピーしました",copyCode:"コードをコピー"},kh={copy:"メッセージをコピー",copied:"メッセージをコピーしました",selectFormat:"コピー形式を選択",copyAsMarkdown:"Markdownとしてコピー",copyAsText:"テキストとしてコピー"},xh={user:"U",error:"エラー",tool:"ツール",claude:"Claude",cursor:"Cursor",codex:"Codex"},yh={settings:"ツール設定",error:"ツールエラー",result:"ツール結果",viewParams:"入力パラメータを表示",viewRawParams:"生パラメータを表示",viewDiff:"編集差分を表示:",creatingFile:"新規ファイルを作成:",updatingTodo:"Todoリストを更新中",read:"読み取り",readFile:"ファイルを読み取り",updateTodo:"Todoリストを更新",readTodo:"Todoリストを読み取り",searchResults:"件の結果"},wh={found:"{{count}}件の{{type}}が見つかりました",file:"ファイル",files:"ファイル",pattern:"パターン:",in:"場所:"},Ch={updated:"ファイルを更新しました",created:"ファイルを作成しました",written:"ファイルを書き込みました",diff:"差分",newFile:"新規ファイル",viewContent:"ファイルの内容を表示",viewFullOutput:"全出力を表示({{count}}文字)",contentDisplayed:"ファイルの内容は上の差分ビューに表示されています"},Sh={title:"インタラクティブプロンプト",waiting:"CLIでの応答を待っています",instruction:"Claudeが実行されているターミナルでオプションを選択してください。",selectedOption:"✓ Claudeがオプション{{number}}を選択しました",instructionDetail:"CLIでは、矢印キーまたは番号を入力してオプションを選択します。"},Ph={title:"思考中...",emoji:"💭 思考中..."},Ah={response:"JSONレスポンス"},jh={grant:"{{tool}}に権限を付与",added:"権限を追加しました",addTo:"{{entry}}を許可されたツールに追加します。",retry:"権限を保存しました。ツールを使用するにはリクエストを再試行してください。",error:"権限を更新できませんでした。もう一度お試しください。",openSettings:"設定を開く"},Th={updated:"Todoリストを更新しました",current:"現在のTodoリスト"},Ih={viewPlan:"📋 実装プランを表示",title:"実装プラン"},Eh={resetAt:"Claudeの使用制限に達しました。制限は**{{time}} {{timezone}}** - {{date}}にリセットされます"},Mh={permissionMode:"権限モード",modes:{default:"デフォルトモード",auto:"Auto Mode",acceptEdits:"編集を許可",bypassPermissions:"権限をバイパス",plan:"プランモード"},descriptions:{default:"信頼されたコマンド(ls、cat、grep、git statusなど)のみ自動実行。その他のコマンドはスキップ。ワークスペースへの書き込みは可能。",auto:"A model classifier decides per tool call whether to approve or deny. Hands-off, but safer than Bypass — denials still happen.",acceptEdits:"ワークスペース内ですべてのコマンドを自動実行。サンドボックス環境での完全自動モード。",bypassPermissions:"制限なしの完全なシステムアクセス。すべてのコマンドがディスクとネットワークへの完全なアクセスで自動実行されます。注意して使用してください。",plan:"プランニングモード - コマンドは実行されません"},technicalDetails:"技術的な詳細"},zh={placeholder:"/ でコマンド、@ でファイル指定、または {{provider}} に何でも聞いてください...",placeholderDefault:"メッセージを入力...",disabled:"入力無効",attachFiles:"ファイルを添付",attachImages:"画像を添付",send:"送信",stop:"停止",hintText:{ctrlEnter:"Ctrl+Enterで送信 • Shift+Enterで改行 • Tabでモード切替 • / でスラッシュコマンド",enter:"Enterで送信 • Shift+Enterで改行 • Tabでモード切替 • / でスラッシュコマンド"},clickToChangeMode:"クリックで権限モードを変更(または入力欄でTab)",showAllCommands:"すべてのコマンドを表示"},Dh={title:"AIアシスタントを選択",description:"新しい会話を始めるプロバイダーを選択してください",selectModel:"モデルを選択",providerInfo:{anthropic:"by Anthropic",openai:"by OpenAI",cursorEditor:"AIコードエディタ"},readyPrompt:{claude:"{{model}}でClaudeを使用する準備ができました。下にメッセージを入力してください。",cursor:"{{model}}でCursorを使用する準備ができました。下にメッセージを入力してください。",codex:"{{model}}でCodexを使用する準備ができました。下にメッセージを入力してください。",default:"上からプロバイダーを選択して開始してください"},pressToSearch:"<kbd>{{shortcut}}</kbd> を押してセッション、ファイル、コミットを検索"},Nh={continue:{title:"会話を続ける",description:"コードについて質問したり、変更をリクエストしたり、開発タスクのサポートを受けられます"},loading:{olderMessages:"過去のメッセージを読み込んでいます...",sessionMessages:"セッションメッセージを読み込んでいます..."},messages:{showingOf:"{{total}}件中{{shown}}件を表示",scrollToLoad:"上にスクロールしてさらに読み込む",showingLast:"最新{{count}}件を表示(全{{total}}件)",loadEarlier:"過去のメッセージを読み込む"}},$h={selectProject:{title:"プロジェクトを選択",description:"プロジェクトを選択してそのディレクトリでシェルを開きます"},status:{newSession:"新しいセッション",initializing:"初期化中...",restarting:"再起動中..."},actions:{disconnect:"切断",disconnectTitle:"シェルから切断",restart:"再起動",restartTitle:"シェルを再起動(先に切断してください)",connect:"シェルで続行",connectTitle:"シェルに接続"},loading:"ターミナルを読み込んでいます...",connecting:"シェルに接続しています...",startSession:"新しいClaudeセッションを開始",resumeSession:"セッションを再開: {{displayName}}...",runCommand:"{{projectName}}で{{command}}を実行",startCli:"{{projectName}}でClaude CLIを起動しています",defaultCommand:"コマンド"},Rh={actions:{thinking:"Thinking",processing:"Processing",analyzing:"Analyzing",working:"Working",computing:"Computing",reasoning:"Reasoning"},state:{live:"Live",paused:"Paused"},elapsed:{seconds:"{{count}}s",minutesSeconds:"{{minutes}}m {{seconds}}s",label:"{{time}} elapsed",startingNow:"Starting now"},controls:{stopGeneration:"Stop Generation",pressEscToStop:"Press Esc anytime to stop"},providers:{assistant:"Assistant"}},Lh={codeBlock:vh,copyMessage:kh,messageTypes:xh,tools:yh,search:wh,fileOperations:Ch,interactive:Sh,thinking:Ph,json:Ah,permissions:jh,todo:Th,plan:Ih,usageLimit:Eh,codex:Mh,input:zh,providerSelection:Dh,session:Nh,shell:$h,claudeStatus:Rh},Fh={changes:"件の変更",previousChange:"前の変更",nextChange:"次の変更",hideDiff:"差分ハイライトを非表示",showDiff:"差分ハイライトを表示",settings:"エディタ設定",collapse:"エディタを折りたたむ",expand:"エディタを全幅に展開"},Bh="{{fileName}}を読み込んでいます...",Gh={showingChanges:"変更を表示中"},Hh={copyPath:"ファイルパスをコピー",pathCopied:"ファイルパスをコピーしました",download:"ファイルをダウンロード",save:"保存",saving:"保存中...",saved:"保存しました!",exitFullscreen:"全画面を終了",fullscreen:"全画面",close:"閉じる"},Oh={lines:"行数:",characters:"文字数:",shortcuts:"Ctrl+Sで保存 • Escで閉じる"},Uh={title:"バイナリファイル",message:'ファイル "{{fileName}}" はバイナリファイルのため、テキストエディタで表示できません。'},qh={toolbar:Fh,loading:Bh,header:Gh,actions:Hh,footer:Oh,binaryFile:Uh},Wh={title:"TaskMaster AIが設定されていません",description:"TaskMasterは、AIを活用した支援により、複雑なプロジェクトを管理しやすいタスクに分解するのに役立ちます",whatIsTitle:"🎯 TaskMasterとは?",features:{aiPowered:"AIを活用したタスク管理:複雑なプロジェクトを管理しやすいサブタスクに分解",prdTemplates:"PRDテンプレート:Product Requirements Documentからタスクを生成",dependencyTracking:"依存関係の追跡:タスクの関係性と実行順序を理解",progressVisualization:"進捗の可視化:カンバンボードと詳細なタスク分析",cliIntegration:"CLI統合:高度なワークフローのためにtaskmasterコマンドを使用"},initializeButton:"TaskMaster AIを初期化"},Vh={title:"TaskMasterを始める",subtitle:"TaskMasterが初期化されました!次にすることは:",steps:{createPRD:{title:"Product Requirements Document (PRD) を作成",description:"プロジェクトのアイデアについて話し合い、構築したい内容を説明するPRDを作成します。",addButton:"PRDを追加",existingPRDs:"既存のPRD:"},generateTasks:{title:"PRDからタスクを生成",description:"PRDができたら、AIアシスタントに解析を依頼してください。TaskMasterが自動的に実装の詳細を含む管理しやすいタスクに分解します。"},analyzeTasks:{title:"タスクの分析と展開",description:"AIアシスタントにタスクの複雑さを分析してもらい、より簡単に実装できる詳細なサブタスクに展開します。"},startBuilding:{title:"開発を始める",description:"AIアシスタントにタスクの作業を開始してもらい、ステータスを更新し、プロジェクトの進行に応じて新しいタスクを追加します。"}},tip:"💡 ヒント:TaskMasterのAIを活用したタスク生成を最大限に活用するには、PRDから始めましょう"},Kh={title:"TaskMasterのセットアップ",subtitle:"{{projectName}}のインタラクティブCLI",willStart:"TaskMasterの初期化が自動的に開始されます",completed:"TaskMasterのセットアップが完了しました!このウィンドウを閉じることができます。",closeButton:"閉じる",closeContinueButton:"閉じて続ける"},_h={title:"TaskMasterを始める",subtitle:"生産的なタスク管理のガイド",examples:{parsePRD:`💬 例:
|
|
17
|
+
「请添加一个新任务来实现使用 Cloudinary 的用户个人头像上传功能,研究最佳方法。」`},moreExamples:"查看更多示例和使用模式 →",proTips:{title:"💡 专业提示",search:"使用搜索栏快速找到特定任务",views:"使用视图切换在看板、列表和网格视图之间切换",filters:"使用筛选器聚焦特定任务状态或优先级",details:"点击任何任务以查看详细信息和管理子任务"},learnMore:{title:"📚 了解更多",description:"TaskMaster AI 是为开发者打造的高级任务管理系统。获取文档、示例并为项目做出贡献。",githubButton:"在 GitHub 上查看"}},kg={placeholder:"搜索任务..."},xg={button:"筛选",status:"状态",priority:"优先级",sortBy:"排序方式",allStatuses:"所有状态",allPriorities:"所有优先级",showing:"显示 {{filtered}} / {{total}} 个任务",clearFilters:"清除筛选"},yg={id:"ID",status:"状态",priority:"优先级",idAsc:"ID(递增)",idDesc:"ID(递减)",titleAsc:"标题(A-Z)",titleDesc:"标题(Z-A)",statusAsc:"状态(待处理优先)",statusDesc:"状态(已完成优先)",priorityAsc:"优先级(高优先)",priorityDesc:"优先级(低优先)"},wg={kanban:"看板视图",list:"列表视图",grid:"网格视图"},Cg={pending:"📋 待办",inProgress:"🚀 进行中",done:"✅ 已完成",blocked:"🚫 已阻止",deferred:"⏳ 已延后",cancelled:"❌ 已取消",noTasksYet:"暂无任务",tasksWillAppear:"任务将显示在这里",moveTasksHere:"开始后将任务移到这里",completedTasksHere:"已完成的任务显示在这里",statusTasksHere:"此状态的任务将显示在这里"},Sg={help:"TaskMaster 入门指南",prds:"PRD",addPRD:"添加 PRD",addTask:"添加任务",createNewPRD:"创建新 PRD",prdsAvailable:"{{count}} 个 PRD 可用"},Pg={modified:"修改时间:{{date}}"},Ag={pending:"待处理","in-progress":"进行中",done:"已完成",blocked:"已阻止",deferred:"已延后",cancelled:"已取消"},jg={high:"高",medium:"中",low:"低"},Tg={title:"没有符合筛选条件的任务",description:"尝试调整您的搜索或筛选条件。"},Ig={notConfigured:hg,gettingStarted:fg,setupModal:bg,helpGuide:vg,search:kg,filters:xg,sort:yg,views:wg,kanban:Cg,buttons:Sg,prd:Pg,statuses:Ag,priorities:jg,noMatchingTasks:Tg},Eg={save:"保存",cancel:"キャンセル",delete:"削除",create:"作成",edit:"編集",close:"閉じる",confirm:"確認",submit:"送信",retry:"再試行",refresh:"更新",search:"検索",clear:"クリア",copy:"コピー",download:"ダウンロード",upload:"アップロード",browse:"参照"},Mg={chat:"チャット",shell:"シェル",files:"ファイル",git:"ソース管理",tasks:"タスク",browser:"Browser",computer:"Computer"},zg={loading:"読み込み中...",success:"成功",error:"エラー",failed:"失敗",pending:"保留中",completed:"完了",inProgress:"進行中"},Dg={savedSuccessfully:"保存しました",deletedSuccessfully:"削除しました",updatedSuccessfully:"更新しました",operationFailed:"操作に失敗しました",networkError:"ネットワークエラー。接続を確認してください。",unauthorized:"認証されていません。ログインしてください。",notFound:"見つかりません",invalidInput:"入力が無効です",requiredField:"この項目は必須です",unknownError:"不明なエラーが発生しました"},Ng={settings:"設定",home:"ホーム",back:"戻る",next:"次へ",previous:"前へ",logout:"ログアウト"},$g={language:"言語",theme:"テーマ",darkMode:"ダークモード",lightMode:"ライトモード",name:"名前",description:"説明",enabled:"有効",disabled:"無効",optional:"任意",version:"バージョン",select:"選択",selectAll:"すべて選択",deselectAll:"すべて解除"},Rg={justNow:"たった今",minutesAgo:"{{count}}分前",hoursAgo:"{{count}}時間前",daysAgo:"{{count}}日前",yesterday:"昨日"},Lg={newFile:"新規ファイル",newFolder:"新規フォルダ",rename:"名前の変更",move:"移動",copyPath:"パスをコピー",openInEditor:"エディタで開く"},Fg={loading:"WindCli を読み込んでいます",settingUpWorkspace:"ワークスペースを準備しています...",chooseProject:"プロジェクトを選択",selectProjectDescription:"サイドバーからプロジェクトを選択して、Claudeとコーディングを始めましょう。各プロジェクトにはチャットセッションとファイル履歴が含まれています。",tip:"ヒント",createProjectMobile:"上部のメニューボタンからプロジェクトにアクセスできます",createProjectDesktop:"サイドバーのフォルダアイコンをクリックして新しいプロジェクトを作成できます",newSession:"新しいセッション",untitledSession:"無題のセッション",projectFiles:"プロジェクトファイル"},Bg={loading:"ファイルを読み込んでいます...",files:"ファイル",simpleView:"シンプル表示",compactView:"コンパクト表示",detailedView:"詳細表示",searchPlaceholder:"ファイルやフォルダを検索...",clearSearch:"検索をクリア",name:"名前",size:"サイズ",modified:"更新日時",permissions:"権限",noFilesFound:"ファイルが見つかりません",checkProjectPath:"プロジェクトのパスがアクセス可能か確認してください",noMatchesFound:"一致するものが見つかりません",tryDifferentSearch:"別の検索語を試すか、検索をクリアしてください",justNow:"たった今",minAgo:"{{count}}分前",hoursAgo:"{{count}}時間前",daysAgo:"{{count}}日前",newFile:"新規ファイル (Cmd+N)",newFolder:"新規フォルダ (Cmd+Shift+N)",refresh:"更新",collapseAll:"すべて折りたたむ",context:{rename:"名前を変更",delete:"削除",copyPath:"パスをコピー",download:"ダウンロード",newFile:"新しいファイル",newFolder:"新しいフォルダ",upload:"ファイルをアップロード",refresh:"更新",menuLabel:"ファイルのコンテキストメニュー",loading:"読み込み中..."}},Gg={title:"新規プロジェクトを作成",steps:{type:"種類",configure:"設定",confirm:"確認"},step1:{question:"既存のワークスペースがありますか?それとも新しく作成しますか?",existing:{title:"既存のワークスペース",description:"サーバー上に既存のワークスペースがあり、プロジェクト一覧に追加したい"},new:{title:"新しいワークスペース",description:"新しいワークスペースを作成し、必要に応じてGitHubリポジトリからクローンする"}},step2:{existingPath:"ワークスペースのパス",newPath:"ワークスペースのパス",existingPlaceholder:"/path/to/existing/workspace",newPlaceholder:"/path/to/new/workspace",existingHelp:"既存のワークスペースディレクトリのフルパス",newHelp:"ワークスペースディレクトリのフルパス",githubUrl:"GitHub URL(任意)",githubPlaceholder:"https://github.com/username/repository",githubHelp:"任意: リポジトリをクローンするためのGitHub URLを入力してください",githubAuth:"GitHub認証(任意)",githubAuthHelp:"プライベートリポジトリの場合のみ必要です。パブリックリポジトリは認証なしでクローンできます。",loadingTokens:"保存済みトークンを読み込んでいます...",storedToken:"保存済みトークン",newToken:"新しいトークン",nonePublic:"なし(パブリック)",selectToken:"トークンを選択",selectTokenPlaceholder:"-- トークンを選択 --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"このトークンはこの操作にのみ使用されます",publicRepoInfo:"パブリックリポジトリには認証は不要です。パブリックリポジトリをクローンする場合、トークンは省略できます。",noTokensHelp:"保存済みトークンがありません。設定 → APIキーでトークンを追加すると再利用が簡単になります。",optionalTokenPublic:"GitHubトークン(パブリックリポジトリの場合は任意)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(パブリックリポジトリの場合は空欄可)"},step3:{reviewConfig:"設定の確認",existingWorkspace:"既存のワークスペース",newWorkspace:"新しいワークスペース",path:"パス:",cloneFrom:"クローン元:",authentication:"認証:",usingStoredToken:"保存済みトークンを使用:",usingProvidedToken:"入力されたトークンを使用",noAuthentication:"認証なし",sshKey:"SSHキー",existingInfo:"ワークスペースがプロジェクト一覧に追加され、Claude/Cursorセッションで使用できるようになります。",newWithClone:"このフォルダからリポジトリがクローンされます。",newEmpty:"ワークスペースがプロジェクト一覧に追加され、Claude/Cursorセッションで使用できるようになります。",cloningRepository:"リポジトリをクローンしています..."},buttons:{cancel:"キャンセル",back:"戻る",next:"次へ",createProject:"プロジェクトを作成",creating:"作成中...",cloning:"クローン中..."},errors:{selectType:"既存のワークスペースか新規作成かを選択してください",providePath:"ワークスペースのパスを入力してください",failedToCreate:"ワークスペースの作成に失敗しました",failedToCreateFolder:"フォルダの作成に失敗しました"}},Hg={genericTool:"ツール",codes:{generic:{info:{title:"通知"}},permission:{required:{title:"対応が必要です",body:"{{toolName}} があなたの判断を待っています。"}},run:{stopped:{title:"実行が停止しました",body:"理由: {{reason}}"},failed:{title:"実行に失敗しました"}},agent:{notification:{title:"エージェント通知"}}}},Og={title:"アップデートのお知らせ",newVersionReady:"新しいバージョンが利用可能です",currentVersion:"現在のバージョン",latestVersion:"最新バージョン",whatsNew:"変更点:",viewFullRelease:"リリース全文を見る",updateProgress:"アップデートの進捗:",manualUpgrade:"手動アップグレード:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:"または「今すぐ更新」をクリックして自動的にアップデートを実行できます。",updateCompleted:"アップデートが完了しました!",restartServer:"変更を適用するにはサーバーを再起動してください。",updateFailed:"アップデートに失敗しました",buttons:{close:"閉じる",later:"後で",copyCommand:"コマンドをコピー",updateNow:"今すぐ更新",updating:"更新中..."},ariaLabels:{closeModal:"バージョンアップグレードモーダルを閉じる",showSidebar:"サイドバーを表示",settings:"設定",updateAvailable:"アップデートあり",closeSidebar:"サイドバーを閉じる"}},Ug={buttons:Eg,tabs:Mg,status:zg,messages:Dg,navigation:Ng,common:$g,time:Rg,fileOperations:Lg,mainContent:Fg,fileTree:Bg,projectWizard:Gg,notifications:Hg,versionUpdate:Og},qg="設定",Wg={account:"アカウント",permissions:"権限",mcpServers:"MCPサーバー",appearance:"外観"},Vg={title:"アカウント",language:"言語",languageLabel:"表示言語",languageDescription:"インターフェースの表示言語を選択してください",username:"ユーザー名",email:"メールアドレス",profile:"プロフィール",changePassword:"パスワードを変更"},Kg={title:"MCPサーバー",addServer:"サーバーを追加",editServer:"サーバーを編集",deleteServer:"サーバーを削除",serverName:"サーバー名",serverType:"サーバーの種類",config:"設定",testConnection:"接続テスト",status:"状態",connected:"接続済み",disconnected:"未接続",scope:{label:"スコープ",user:"ユーザー",project:"プロジェクト"}},_g={title:"外観",theme:"テーマ",codeEditor:"コードエディタ",editorTheme:"エディタのテーマ",wordWrap:"折り返し",showMinimap:"ミニマップを表示",lineNumbers:"行番号",fontSize:"フォントサイズ"},Yg={saveChanges:"変更を保存",resetToDefaults:"デフォルトに戻す",cancelChanges:"変更をキャンセル"},Jg={title:"クイック設定",sections:{appearance:"外観",toolDisplay:"ツール表示",inputSettings:"入力設定"},darkMode:"ダークモード",showRawParameters:"生パラメータを表示",showThinking:"思考を表示",sendByCtrlEnter:"Ctrl+Enterで送信",sendByCtrlEnterDescription:"有効にすると、Enterではなく Ctrl+Enter でメッセージを送信します。IMEユーザーの誤送信防止に便利です。",dragHandle:{dragging:"ドラッグ中",closePanel:"設定パネルを閉じる",openPanel:"設定パネルを開く",draggingStatus:"ドラッグ中...",toggleAndMove:"クリックで切替、ドラッグで移動"}},Qg={title:"ターミナルショートカット",sectionKeys:"キー",sectionNavigation:"ナビゲーション",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"上矢印",arrowDown:"下矢印",scrollDown:"下にスクロール",handle:{closePanel:"ショートカットパネルを閉じる",openPanel:"ショートカットパネルを開く"}},Zg={label:"設定",agents:"エージェント",appearance:"外観",git:"Git",apiTokens:"API & トークン",tasks:"タスク",notifications:"通知",plugins:"プラグイン",about:"概要"},Xg={title:"通知",description:"受信する通知イベントを設定します。",webPush:{title:"Webプッシュ通知",enable:"プッシュ通知を有効にする",disable:"プッシュ通知を無効にする",enabled:"プッシュ通知は有効です",loading:"更新中...",unsupported:"このブラウザではプッシュ通知がサポートされていません。",denied:"プッシュ通知がブロックされています。ブラウザの設定で許可してください。"},sound:{title:"サウンド",description:"チャット実行が完了したときに短い音を再生します。",enabled:"有効",test:"サウンドをテスト"},events:{title:"イベント種別",actionRequired:"対応が必要",stop:"実行停止",error:"実行失敗"}},eh={darkMode:{label:"ダークモード",description:"ライトテーマとダークテーマを切り替えます"},projectSorting:{label:"プロジェクトの並び順",description:"サイドバーでのプロジェクトの並び順を設定します",alphabetical:"アルファベット順",recentActivity:"最近のアクティビティ順"},codeEditor:{title:"コードエディタ",theme:{label:"エディタのテーマ",description:"コードエディタのデフォルトテーマ"},wordWrap:{label:"折り返し",description:"エディタでデフォルトで折り返しを有効にします"},showMinimap:{label:"ミニマップを表示",description:"差分ビューでナビゲーション用のミニマップを表示します"},lineNumbers:{label:"行番号を表示",description:"エディタに行番号を表示します"},fontSize:{label:"フォントサイズ",description:"エディタのフォントサイズ(ピクセル)"}}},th={title:{add:"MCPサーバーを追加",edit:"MCPサーバーを編集"},importMode:{form:"フォーム入力",json:"JSONインポート"},scope:{label:"スコープ",userGlobal:"ユーザー(グローバル)",projectLocal:"プロジェクト(ローカル)",userDescription:"ユーザースコープ: すべてのプロジェクトで利用可能",projectDescription:"ローカルスコープ: 選択したプロジェクトでのみ利用可能",cannotChange:"既存のサーバーを編集する場合、スコープは変更できません"},fields:{serverName:"サーバー名",transportType:"トランスポートの種類",command:"コマンド",arguments:"引数(1行に1つ)",jsonConfig:"JSON設定",url:"URL",envVars:"環境変数(KEY=value、1行に1つ)",headers:"ヘッダー(KEY=value、1行に1つ)",selectProject:"プロジェクトを選択..."},placeholders:{serverName:"my-server"},validation:{missingType:"必須フィールドがありません: type",stdioRequiresCommand:"stdioタイプにはcommandフィールドが必要です",httpRequiresUrl:"{{type}}タイプにはurlフィールドが必要です",invalidJson:"無効なJSON形式です",jsonHelp:"MCPサーバー設定をJSON形式で貼り付けてください。例:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"設定の詳細({{configFile}}より)",projectPath:"パス: {{path}}",actions:{cancel:"キャンセル",saving:"保存中...",addServer:"サーバーを追加",updateServer:"サーバーを更新"}},nh={success:"設定を保存しました!",error:"設定の保存に失敗しました",saving:"保存中..."},sh={save:"設定を保存",cancel:"キャンセル"},ih={title:"Git設定",description:"コミット用のGit IDを設定します。この設定は git config --global で適用されます",name:{label:"Git名前",help:"コミットに使用する名前"},email:{label:"Gitメールアドレス",help:"コミットに使用するメールアドレス"},actions:{save:"設定を保存",saving:"保存中..."},status:{success:"保存しました"}},ah={title:"APIキー",description:"外部APIにアクセスするためのAPIキーを生成します。",newKey:{alertTitle:"⚠️ APIキーを保存してください",alertMessage:"このキーが表示されるのは今回限りです。安全な場所に保管してください。",iveSavedIt:"保存しました"},form:{placeholder:"APIキーの名前(例: 本番サーバー)",createButton:"作成",cancelButton:"キャンセル"},newButton:"新しいAPIキー",empty:"APIキーはまだ作成されていません。",list:{created:"作成日:",lastUsed:"最終使用日:"},confirmDelete:"このAPIキーを削除してもよろしいですか?",status:{active:"有効",inactive:"無効"},github:{title:"GitHubトークン",description:"外部APIからプライベートリポジトリをクローンするためのGitHubパーソナルアクセストークンを追加します。",descriptionAlt:"プライベートリポジトリをクローンするためのGitHubパーソナルアクセストークンを追加します。保存せずにAPIリクエストで直接トークンを渡すこともできます。",addButton:"トークンを追加",form:{namePlaceholder:"トークンの名前(例: 個人リポジトリ)",tokenPlaceholder:"GitHubパーソナルアクセストークン(ghp_...)",descriptionPlaceholder:"説明(任意)",addButton:"トークンを追加",cancelButton:"キャンセル",howToCreate:"GitHubパーソナルアクセストークンの作成方法 →"},empty:"GitHubトークンはまだ追加されていません。",added:"追加日:",confirmDelete:"このGitHubトークンを削除してもよろしいですか?"},apiDocsLink:"APIドキュメント",documentation:{title:"外部APIドキュメント",description:"外部APIを使用してアプリケーションからClaude/Cursorセッションを起動する方法を学びます。",viewLink:"APIドキュメントを見る →"},loading:"読み込み中...",version:{updateAvailable:"アップデートあり: v{{version}}"}},oh={checking:"TaskMasterのインストールを確認しています...",notInstalled:{title:"TaskMaster AI CLIがインストールされていません",description:"タスク管理機能を使用するにはTaskMaster CLIが必要です。以下のコマンドでインストールしてください:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"GitHubで見る",afterInstallation:"インストール後:",steps:{restart:"このアプリケーションを再起動してください",autoAvailable:"TaskMaster機能が自動的に利用可能になります",initCommand:"プロジェクトディレクトリで task-master init を実行してください"}},settings:{enableLabel:"TaskMaster統合を有効にする",enableDescription:"インターフェース全体でTaskMasterのタスク、バナー、サイドバーインジケータを表示します"}},rh={authStatus:{checking:"確認中...",connected:"接続済み",notConnected:"未接続",disconnected:"切断",checkingAuth:"認証状態を確認しています...",loggedInAs:"{{email}}でログイン中",authenticatedUser:"認証済みユーザー"},account:{claude:{description:"Anthropic Claude AIアシスタント"},cursor:{description:"Cursor AI搭載コードエディタ"},codex:{description:"OpenAI Codex AIアシスタント"}},connectionStatus:"接続状態",login:{title:"ログイン",reAuthenticate:"再認証",description:"{{agent}}アカウントにサインインしてAI機能を有効にします",reAuthDescription:"別のアカウントでサインインするか、認証情報を更新します",button:"ログイン",reLoginButton:"再ログイン"},error:"エラー: {{error}}"},lh={title:"権限設定",skipPermissions:{label:"権限プロンプトをスキップ(注意して使用)",claudeDescription:"--dangerously-skip-permissions フラグに相当",cursorDescription:"Cursor CLIの -f フラグに相当"},allowedTools:{title:"許可されたツール",description:"権限の確認なしに自動的に許可されるツール",placeholder:'例: "Bash(git log:*)" または "Write"',quickAdd:"よく使うツールを追加:",empty:"許可されたツールはありません"},blockedTools:{title:"ブロックされたツール",description:"権限の確認なしに自動的にブロックされるツール",placeholder:'例: "Bash(rm:*)"',empty:"ブロックされたツールはありません"},allowedCommands:{title:"許可されたシェルコマンド",description:"権限の確認なしに自動的に許可されるシェルコマンド",placeholder:'例: "Shell(ls)" または "Shell(git status)"',quickAdd:"よく使うコマンドを追加:",empty:"許可されたコマンドはありません"},blockedCommands:{title:"ブロックされたシェルコマンド",description:"自動的にブロックされるシェルコマンド",placeholder:'例: "Shell(rm -rf)" または "Shell(sudo)"',empty:"ブロックされたコマンドはありません"},toolExamples:{title:"ツールパターンの例:",bashGitLog:"- すべてのgit logコマンドを許可",bashGitDiff:"- すべてのgit diffコマンドを許可",write:"- すべてのWriteツールの使用を許可",bashRm:"- すべてのrmコマンドをブロック(危険)"},shellExamples:{title:"シェルコマンドの例:",ls:"- lsコマンドを許可",gitStatus:"- git statusを許可",npmInstall:"- npm installを許可",rmRf:"- 再帰的削除をブロック"},codex:{permissionMode:"権限モード",description:"Codexがファイルの変更やコマンドの実行を処理する方法を制御します",modes:{default:{title:"デフォルト",description:"信頼されたコマンド(ls、cat、grep、git statusなど)のみ自動実行。その他のコマンドはスキップ。ワークスペースへの書き込みは可能。"},acceptEdits:{title:"編集を許可",description:"ワークスペース内ですべてのコマンドを自動実行。サンドボックス環境での完全自動モード。"},bypassPermissions:{title:"権限をバイパス",description:"制限なしの完全なシステムアクセス。すべてのコマンドがディスクとネットワークへの完全なアクセスで自動実行されます。注意して使用してください。"}},technicalDetails:"技術的な詳細",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted。信頼されたコマンド: cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find(-execなし)など。",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never。すべてのコマンドがプロジェクトディレクトリ内で自動実行。",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never。完全なシステムアクセス。信頼された環境でのみ使用してください。",overrideNote:"チャットインターフェースのモードボタンを使用してセッションごとに上書きできます。"}},actions:{add:"追加"}},ch={title:"MCPサーバー",description:{claude:"Model Context Protocolサーバーは、Claudeに追加のツールやデータソースを提供します",cursor:"Model Context Protocolサーバーは、Cursorに追加のツールやデータソースを提供します",codex:"Model Context Protocolサーバーは、Codexに追加のツールやデータソースを提供します"},addButton:"MCPサーバーを追加",empty:"MCPサーバーは設定されていません",serverType:"種類",scope:{local:"ローカル",user:"ユーザー"},config:{command:"コマンド",url:"URL",args:"引数",environment:"環境変数"},tools:{title:"ツール",count:"({{count}}):",more:"他{{count}}件"},actions:{edit:"サーバーを編集",delete:"サーバーを削除"},help:{title:"Codex MCPについて",description:"Codexはstdioベースのツールサーバーをサポートしています。追加のツールやリソースでCodexの機能を拡張するサーバーを追加できます。"}},dh={title:"プラグイン",description:"カスタムプラグインでインターフェースを拡張します。gitからインストールするか、~/.claude-code-ui/plugins/ にフォルダを配置してください。",installPlaceholder:"https://github.com/user/my-plugin",installButton:"インストール",installing:"インストール中…",securityWarning:"信頼できる作成者のプラグイン、またはソースコードを確認済みのプラグインのみをインストールしてください。",scanningPlugins:"プラグインをスキャン中…",noPluginsInstalled:"プラグインがインストールされていません",pullLatest:"gitから最新を取得",noGitRemote:"リモートgitリポジトリがありません — アップデート不可",uninstallPlugin:"プラグインを削除",confirmUninstall:"クリックして確定",confirmUninstallMessage:"{{name}} を削除しますか?この操作は取り消せません。",cancel:"キャンセル",remove:"削除",updateFailed:"アップデートに失敗しました",installFailed:"インストールに失敗しました",uninstallFailed:"削除に失敗しました",toggleFailed:"切り替えに失敗しました",buildYourOwn:"プラグインを自作する",starter:"スターター",docs:"ドキュメント",starterPlugin:{name:"プロジェクト統計",badge:"スターター",description:"プロジェクトのファイル数、コード行数、ファイルタイプの内訳、最近のアクティビティを表示します。",install:"インストール"},morePlugins:"詳細",enable:"有効にする",disable:"無効にする",installAriaLabel:"プラグインのgitリポジトリURL",tab:"タブ",runningStatus:"実行中"},uh={title:qg,tabs:Wg,account:Vg,mcp:Kg,appearance:_g,actions:Yg,quickSettings:Jg,terminalShortcuts:Qg,mainTabs:Zg,notifications:Xg,appearanceSettings:eh,mcpForm:th,saveStatus:nh,footerActions:sh,git:ih,apiKeys:ah,tasks:oh,agents:rh,permissions:lh,mcpServers:ch,pluginSettings:dh},ph={title:"おかえりなさい",description:"WindCliアカウントにサインイン",username:"ユーザー名",password:"パスワード",submit:"サインイン",loading:"サインイン中...",errors:{invalidCredentials:"ユーザー名またはパスワードが正しくありません",requiredFields:"すべての項目を入力してください",networkError:"ネットワークエラー。もう一度お試しください。"},placeholders:{username:"ユーザー名を入力",password:"パスワードを入力"}},mh={title:"アカウント作成",username:"ユーザー名",password:"パスワード",confirmPassword:"パスワードの確認",submit:"アカウントを作成",loading:"アカウントを作成中...",errors:{passwordMismatch:"パスワードが一致しません",usernameTaken:"このユーザー名は既に使用されています",weakPassword:"パスワードが弱すぎます"}},gh={title:"サインアウト",confirm:"サインアウトしてもよろしいですか?",button:"サインアウト"},hh={login:ph,register:mh,logout:gh},fh={title:"プロジェクト",newProject:"新規プロジェクト",deleteProject:"プロジェクトを除去",renameProject:"プロジェクト名を変更",noProjects:"プロジェクトが見つかりません",loadingProjects:"プロジェクトを読み込んでいます...",searchPlaceholder:"プロジェクトを検索...",projectNamePlaceholder:"プロジェクト名",starred:"お気に入り",all:"すべて",untitledSession:"無題のセッション",newSession:"新しいセッション",codexSession:"Codexセッション",fetchingProjects:"Claudeのプロジェクトとセッションを取得しています",projects:"プロジェクト",noMatchingProjects:"一致するプロジェクトがありません",tryDifferentSearch:"検索語を変えてお試しください",runClaudeCli:"プロジェクトディレクトリでClaude CLIを実行して始めましょう"},bh={title:"WindCli",subtitle:"AIコーディングアシスタント"},vh={title:"セッション",newSession:"新しいセッション",deleteSession:"セッションを削除",renameSession:"セッション名を変更",noSessions:"セッションはまだありません",loadingSessions:"セッションを読み込んでいます...",unnamed:"名称未設定",loading:"読み込み中...",showMore:"さらにセッションを表示"},kh={viewEnvironments:"環境を表示",hideSidebar:"サイドバーを隠す",createProject:"新しいプロジェクトを作成",refresh:"プロジェクトとセッションを更新 (Ctrl+R)",renameProject:"プロジェクト名を変更 (F2)",deleteProject:"サイドバーからプロジェクトを除去 (Delete)",addToFavorites:"お気に入りに追加",removeFromFavorites:"お気に入りから削除",editSessionName:"セッション名を手動で編集",deleteSession:"このセッションを完全に削除",activeSessionIndicator:"最近アクティブなセッション(過去10分以内)",save:"保存",cancel:"キャンセル",openCommandPalette:"コマンドパレットを開く",attentionRequiredIndicator:"セッションが対応を必要としています"},xh={chat:"チャット",files:"ファイル",git:"Git",terminal:"ターミナル",tasks:"タスク"},yh={refresh:"更新",settings:"設定",collapseAll:"すべて折りたたむ",expandAll:"すべて展開",cancel:"キャンセル",save:"保存",delete:"削除",rename:"名前の変更",joinCommunity:"コミュニティに参加",reportIssue:"問題を報告",starOnGithub:"GitHubでスター"},wh={openSource:"オープンソース"},Ch={active:"アクティブ",inactive:"非アクティブ",thinking:"思考中...",error:"エラー",aborted:"中断",unknown:"不明"},Sh={justNow:"たった今",oneMinuteAgo:"1分前",minutesAgo:"{{count}}分前",oneHourAgo:"1時間前",hoursAgo:"{{count}}時間前",oneDayAgo:"1日前",daysAgo:"{{count}}日前"},Ph={deleteConfirm:"本当に削除しますか?",renameSuccess:"名前を変更しました",deleteSuccess:"削除しました",errorOccurred:"エラーが発生しました",deleteSessionConfirm:"このセッションを削除してもよろしいですか?この操作は取り消せません。",deleteProjectConfirm:"サイドバーからこのプロジェクトを除去しますか?プロジェクトファイル、メモリ、セッションデータは削除されません。",enterProjectPath:"プロジェクトのパスを入力してください",deleteSessionFailed:"セッションの削除に失敗しました。もう一度お試しください。",deleteSessionError:"セッションの削除でエラーが発生しました。もう一度お試しください。",renameSessionFailed:"セッション名の変更に失敗しました。もう一度お試しください。",renameSessionError:"セッション名の変更でエラーが発生しました。もう一度お試しください。",deleteProjectFailed:"プロジェクトの除去に失敗しました。もう一度お試しください。",deleteProjectError:"プロジェクトの除去でエラーが発生しました。もう一度お試しください。",createProjectFailed:"プロジェクトの作成に失敗しました。もう一度お試しください。",createProjectError:"プロジェクトの作成でエラーが発生しました。もう一度お試しください。",updateProjectError:"プロジェクトの更新でエラーが発生しました。もう一度お試しください。",refreshError:"更新に失敗しました。もう一度お試しください。",restoreProjectFailed:"プロジェクトの復元に失敗しました。もう一度お試しください。",restoreProjectError:"プロジェクトの復元でエラーが発生しました。もう一度お試しください。",restoreSessionFailed:"セッションの復元に失敗しました。もう一度お試しください。",restoreSessionError:"セッションの復元でエラーが発生しました。もう一度お試しください。"},Ah={updateAvailable:"アップデートあり",restartRequired:"更新が適用されていません。サーバーを再起動してください"},jh={deleteProject:"プロジェクトを除去",deleteSession:"セッションを削除",confirmDelete:"このプロジェクトをどうしますか:",sessionCount:"このプロジェクトには{{count}}件の会話があります。",removeFromSidebar:"サイドバーからのみ除去",deleteAllData:"すべてのデータを完全に削除",allConversationsDeleted:"プロジェクトはサイドバーから除去されます。ファイル、メモリ、セッションデータは保持されます。",cannotUndo:"後からプロジェクトを再追加できます。"},Th={projects:fh,app:bh,sessions:vh,tooltips:kh,navigation:xh,actions:yh,branding:wh,status:Ch,time:Sh,messages:Ph,version:Ah,deleteConfirmation:jh},Ih={copy:"コピー",copied:"コピーしました",copyCode:"コードをコピー"},Eh={copy:"メッセージをコピー",copied:"メッセージをコピーしました",selectFormat:"コピー形式を選択",copyAsMarkdown:"Markdownとしてコピー",copyAsText:"テキストとしてコピー"},Mh={user:"U",error:"エラー",tool:"ツール",claude:"Claude",cursor:"Cursor",codex:"Codex"},zh={settings:"ツール設定",error:"ツールエラー",result:"ツール結果",viewParams:"入力パラメータを表示",viewRawParams:"生パラメータを表示",viewDiff:"編集差分を表示:",creatingFile:"新規ファイルを作成:",updatingTodo:"Todoリストを更新中",read:"読み取り",readFile:"ファイルを読み取り",updateTodo:"Todoリストを更新",readTodo:"Todoリストを読み取り",searchResults:"件の結果"},Dh={found:"{{count}}件の{{type}}が見つかりました",file:"ファイル",files:"ファイル",pattern:"パターン:",in:"場所:"},Nh={updated:"ファイルを更新しました",created:"ファイルを作成しました",written:"ファイルを書き込みました",diff:"差分",newFile:"新規ファイル",viewContent:"ファイルの内容を表示",viewFullOutput:"全出力を表示({{count}}文字)",contentDisplayed:"ファイルの内容は上の差分ビューに表示されています"},$h={title:"インタラクティブプロンプト",waiting:"CLIでの応答を待っています",instruction:"Claudeが実行されているターミナルでオプションを選択してください。",selectedOption:"✓ Claudeがオプション{{number}}を選択しました",instructionDetail:"CLIでは、矢印キーまたは番号を入力してオプションを選択します。"},Rh={title:"思考中...",emoji:"💭 思考中..."},Lh={response:"JSONレスポンス"},Fh={grant:"{{tool}}に権限を付与",added:"権限を追加しました",addTo:"{{entry}}を許可されたツールに追加します。",retry:"権限を保存しました。ツールを使用するにはリクエストを再試行してください。",error:"権限を更新できませんでした。もう一度お試しください。",openSettings:"設定を開く"},Bh={updated:"Todoリストを更新しました",current:"現在のTodoリスト"},Gh={viewPlan:"📋 実装プランを表示",title:"実装プラン"},Hh={resetAt:"Claudeの使用制限に達しました。制限は**{{time}} {{timezone}}** - {{date}}にリセットされます"},Oh={permissionMode:"権限モード",modes:{default:"デフォルトモード",auto:"Auto Mode",acceptEdits:"編集を許可",bypassPermissions:"権限をバイパス",plan:"プランモード"},descriptions:{default:"信頼されたコマンド(ls、cat、grep、git statusなど)のみ自動実行。その他のコマンドはスキップ。ワークスペースへの書き込みは可能。",auto:"A model classifier decides per tool call whether to approve or deny. Hands-off, but safer than Bypass — denials still happen.",acceptEdits:"ワークスペース内ですべてのコマンドを自動実行。サンドボックス環境での完全自動モード。",bypassPermissions:"制限なしの完全なシステムアクセス。すべてのコマンドがディスクとネットワークへの完全なアクセスで自動実行されます。注意して使用してください。",plan:"プランニングモード - コマンドは実行されません"},technicalDetails:"技術的な詳細"},Uh={placeholder:"/ でコマンド、@ でファイル指定、または {{provider}} に何でも聞いてください...",placeholderDefault:"メッセージを入力...",disabled:"入力無効",attachFiles:"ファイルを添付",attachImages:"画像を添付",send:"送信",stop:"停止",hintText:{ctrlEnter:"Ctrl+Enterで送信 • Shift+Enterで改行 • Tabでモード切替 • / でスラッシュコマンド",enter:"Enterで送信 • Shift+Enterで改行 • Tabでモード切替 • / でスラッシュコマンド"},clickToChangeMode:"クリックで権限モードを変更(または入力欄でTab)",showAllCommands:"すべてのコマンドを表示"},qh={title:"AIアシスタントを選択",description:"新しい会話を始めるプロバイダーを選択してください",selectModel:"モデルを選択",providerInfo:{anthropic:"by Anthropic",openai:"by OpenAI",cursorEditor:"AIコードエディタ"},readyPrompt:{claude:"{{model}}でClaudeを使用する準備ができました。下にメッセージを入力してください。",cursor:"{{model}}でCursorを使用する準備ができました。下にメッセージを入力してください。",codex:"{{model}}でCodexを使用する準備ができました。下にメッセージを入力してください。",default:"上からプロバイダーを選択して開始してください"},pressToSearch:"<kbd>{{shortcut}}</kbd> を押してセッション、ファイル、コミットを検索"},Wh={continue:{title:"会話を続ける",description:"コードについて質問したり、変更をリクエストしたり、開発タスクのサポートを受けられます"},loading:{olderMessages:"過去のメッセージを読み込んでいます...",sessionMessages:"セッションメッセージを読み込んでいます..."},messages:{showingOf:"{{total}}件中{{shown}}件を表示",scrollToLoad:"上にスクロールしてさらに読み込む",showingLast:"最新{{count}}件を表示(全{{total}}件)",loadEarlier:"過去のメッセージを読み込む"}},Vh={selectProject:{title:"プロジェクトを選択",description:"プロジェクトを選択してそのディレクトリでシェルを開きます"},status:{newSession:"新しいセッション",initializing:"初期化中...",restarting:"再起動中..."},actions:{disconnect:"切断",disconnectTitle:"シェルから切断",restart:"再起動",restartTitle:"シェルを再起動(先に切断してください)",connect:"シェルで続行",connectTitle:"シェルに接続"},loading:"ターミナルを読み込んでいます...",connecting:"シェルに接続しています...",startSession:"新しいClaudeセッションを開始",resumeSession:"セッションを再開: {{displayName}}...",runCommand:"{{projectName}}で{{command}}を実行",startCli:"{{projectName}}でClaude CLIを起動しています",defaultCommand:"コマンド"},Kh={actions:{thinking:"Thinking",processing:"Processing",analyzing:"Analyzing",working:"Working",computing:"Computing",reasoning:"Reasoning"},state:{live:"Live",paused:"Paused"},elapsed:{seconds:"{{count}}s",minutesSeconds:"{{minutes}}m {{seconds}}s",label:"{{time}} elapsed",startingNow:"Starting now"},controls:{stopGeneration:"Stop Generation",pressEscToStop:"Press Esc anytime to stop"},providers:{assistant:"Assistant"}},_h={codeBlock:Ih,copyMessage:Eh,messageTypes:Mh,tools:zh,search:Dh,fileOperations:Nh,interactive:$h,thinking:Rh,json:Lh,permissions:Fh,todo:Bh,plan:Gh,usageLimit:Hh,codex:Oh,input:Uh,providerSelection:qh,session:Wh,shell:Vh,claudeStatus:Kh},Yh={changes:"件の変更",previousChange:"前の変更",nextChange:"次の変更",hideDiff:"差分ハイライトを非表示",showDiff:"差分ハイライトを表示",settings:"エディタ設定",collapse:"エディタを折りたたむ",expand:"エディタを全幅に展開"},Jh="{{fileName}}を読み込んでいます...",Qh={showingChanges:"変更を表示中"},Zh={copyPath:"ファイルパスをコピー",pathCopied:"ファイルパスをコピーしました",download:"ファイルをダウンロード",save:"保存",saving:"保存中...",saved:"保存しました!",exitFullscreen:"全画面を終了",fullscreen:"全画面",close:"閉じる"},Xh={lines:"行数:",characters:"文字数:",shortcuts:"Ctrl+Sで保存 • Escで閉じる"},ef={title:"バイナリファイル",message:'ファイル "{{fileName}}" はバイナリファイルのため、テキストエディタで表示できません。'},tf={toolbar:Yh,loading:Jh,header:Qh,actions:Zh,footer:Xh,binaryFile:ef},nf={title:"TaskMaster AIが設定されていません",description:"TaskMasterは、AIを活用した支援により、複雑なプロジェクトを管理しやすいタスクに分解するのに役立ちます",whatIsTitle:"🎯 TaskMasterとは?",features:{aiPowered:"AIを活用したタスク管理:複雑なプロジェクトを管理しやすいサブタスクに分解",prdTemplates:"PRDテンプレート:Product Requirements Documentからタスクを生成",dependencyTracking:"依存関係の追跡:タスクの関係性と実行順序を理解",progressVisualization:"進捗の可視化:カンバンボードと詳細なタスク分析",cliIntegration:"CLI統合:高度なワークフローのためにtaskmasterコマンドを使用"},initializeButton:"TaskMaster AIを初期化"},sf={title:"TaskMasterを始める",subtitle:"TaskMasterが初期化されました!次にすることは:",steps:{createPRD:{title:"Product Requirements Document (PRD) を作成",description:"プロジェクトのアイデアについて話し合い、構築したい内容を説明するPRDを作成します。",addButton:"PRDを追加",existingPRDs:"既存のPRD:"},generateTasks:{title:"PRDからタスクを生成",description:"PRDができたら、AIアシスタントに解析を依頼してください。TaskMasterが自動的に実装の詳細を含む管理しやすいタスクに分解します。"},analyzeTasks:{title:"タスクの分析と展開",description:"AIアシスタントにタスクの複雑さを分析してもらい、より簡単に実装できる詳細なサブタスクに展開します。"},startBuilding:{title:"開発を始める",description:"AIアシスタントにタスクの作業を開始してもらい、ステータスを更新し、プロジェクトの進行に応じて新しいタスクを追加します。"}},tip:"💡 ヒント:TaskMasterのAIを活用したタスク生成を最大限に活用するには、PRDから始めましょう"},af={title:"TaskMasterのセットアップ",subtitle:"{{projectName}}のインタラクティブCLI",willStart:"TaskMasterの初期化が自動的に開始されます",completed:"TaskMasterのセットアップが完了しました!このウィンドウを閉じることができます。",closeButton:"閉じる",closeContinueButton:"閉じて続ける"},of={title:"TaskMasterを始める",subtitle:"生産的なタスク管理のガイド",examples:{parsePRD:`💬 例:
|
|
18
18
|
「Claude Task Masterで新しいプロジェクトを初期化しました。.taskmaster/docs/prd.txtにPRDがあります。解析して初期タスクを設定するのを手伝ってもらえますか?」`,expandTask:`💬 例:
|
|
19
19
|
「タスク5は複雑そうです。サブタスクに分解してもらえますか?」`,addTask:`💬 例:
|
|
20
|
-
「Cloudinaryを使用してユーザープロフィール画像のアップロードを実装する新しいタスクを追加してください。最適なアプローチを調査してください。」`},moreExamples:"さらなる例と使用パターンを見る →",proTips:{title:"💡 プロのヒント",search:"検索バーを使用して特定のタスクをすばやく見つける",views:"ビュー切替を使用してカンバン、リスト、グリッドビューを切り替える",filters:"フィルターを使用して特定のタスクステータスや優先度に焦点を当てる",details:"任意のタスクをクリックして詳細情報を表示し、サブタスクを管理する"},learnMore:{title:"📚 詳細を見る",description:"TaskMaster AIは開発者向けに構築された高度なタスク管理システムです。ドキュメント、例を入手し、プロジェクトに貢献できます。",githubButton:"GitHubで見る"}},Yh={placeholder:"タスクを検索..."},Jh={button:"フィルター",status:"ステータス",priority:"優先度",sortBy:"並び替え",allStatuses:"すべてのステータス",allPriorities:"すべての優先度",showing:"{{filtered}}件のタスクを表示中(全{{total}}件)",clearFilters:"フィルターをクリア"},Qh={id:"ID",status:"ステータス",priority:"優先度",idAsc:"ID(昇順)",idDesc:"ID(降順)",titleAsc:"タイトル(A-Z)",titleDesc:"タイトル(Z-A)",statusAsc:"ステータス(保留中が先)",statusDesc:"ステータス(完了が先)",priorityAsc:"優先度(高が先)",priorityDesc:"優先度(低が先)"},Zh={kanban:"カンバンビュー",list:"リストビュー",grid:"グリッドビュー"},Xh={pending:"📋 やること",inProgress:"🚀 進行中",done:"✅ 完了",blocked:"🚫 ブロック中",deferred:"⏳ 延期",cancelled:"❌ キャンセル",noTasksYet:"まだタスクはありません",tasksWillAppear:"タスクはここに表示されます",moveTasksHere:"開始したらタスクをここに移動",completedTasksHere:"完了したタスクはここに表示されます",statusTasksHere:"このステータスのタスクはここに表示されます"},ef={help:"TaskMaster入門ガイド",prds:"PRD",addPRD:"PRDを追加",addTask:"タスクを追加",createNewPRD:"新しいPRDを作成",prdsAvailable:"{{count}}件のPRDがあります"},tf={modified:"更新日: {{date}}"},nf={pending:"保留中","in-progress":"進行中",done:"完了",blocked:"ブロック中",deferred:"延期",cancelled:"キャンセル"},sf={high:"高",medium:"中",low:"低"},af={title:"フィルターに一致するタスクがありません",description:"検索条件またはフィルター基準を調整してみてください。"},of={notConfigured:Wh,gettingStarted:Vh,setupModal:Kh,helpGuide:_h,search:Yh,filters:Jh,sort:Qh,views:Zh,kanban:Xh,buttons:ef,prd:tf,statuses:nf,priorities:sf,noMatchingTasks:af},rf={save:"Сохранить",cancel:"Отмена",delete:"Удалить",create:"Создать",edit:"Редактировать",close:"Закрыть",confirm:"Подтвердить",submit:"Отправить",retry:"Повторить",refresh:"Обновить",search:"Поиск",clear:"Очистить",copy:"Копировать",download:"Скачать",upload:"Загрузить",browse:"Обзор"},lf={chat:"Чат",shell:"Терминал",files:"Файлы",git:"Система контроля версий",tasks:"Задачи",browser:"Browser",computer:"Компьютер"},cf={loading:"Загрузка...",success:"Успешно",error:"Ошибка",failed:"Не удалось",pending:"Ожидание",completed:"Завершено",inProgress:"В процессе"},df={savedSuccessfully:"Успешно сохранено",deletedSuccessfully:"Успешно удалено",updatedSuccessfully:"Успешно обновлено",operationFailed:"Операция не удалась",networkError:"Ошибка сети. Проверьте подключение.",unauthorized:"Не авторизован. Пожалуйста, войдите.",notFound:"Не найдено",invalidInput:"Неверный ввод",requiredField:"Это поле обязательно",unknownError:"Произошла неизвестная ошибка"},uf={settings:"Настройки",home:"Главная",back:"Назад",next:"Далее",previous:"Предыдущий",logout:"Выйти"},pf={language:"Язык",theme:"Тема",darkMode:"Темная тема",lightMode:"Светлая тема",name:"Имя",description:"Описание",enabled:"Включено",disabled:"Отключено",optional:"Необязательно",version:"Версия",select:"Выбрать",selectAll:"Выбрать все",deselectAll:"Снять выделение"},mf={justNow:"Только что",minutesAgo:"{{count}} мин. назад",hoursAgo:"{{count}} ч. назад",daysAgo:"{{count}} дн. назад",yesterday:"Вчера"},gf={newFile:"Новый файл",newFolder:"Новая папка",rename:"Переименовать",move:"Переместить",copyPath:"Копировать путь",openInEditor:"Открыть в редакторе"},hf={loading:"Загрузка WindCli",settingUpWorkspace:"Настройка рабочего пространства...",chooseProject:"Выберите проект",selectProjectDescription:"Выберите проект на боковой панели, чтобы начать работу с Claude. Каждый проект содержит ваши сеансы чата и историю файлов.",tip:"Совет",createProjectMobile:"Нажмите кнопку меню выше для доступа к проектам",createProjectDesktop:"Создайте новый проект, нажав на значок папки на боковой панели",newSession:"Новый сеанс",untitledSession:"Безымянный сеанс",projectFiles:"Файлы проекта"},ff={loading:"Загрузка файлов...",files:"Файлы",simpleView:"Простой вид",compactView:"Компактный вид",detailedView:"Подробный вид",searchPlaceholder:"Поиск файлов и папок...",clearSearch:"Очистить поиск",name:"Имя",size:"Размер",modified:"Изменено",permissions:"Права доступа",noFilesFound:"Файлы не найдены",checkProjectPath:"Проверьте доступность пути к проекту",noMatchesFound:"Совпадений не найдено",tryDifferentSearch:"Попробуйте другой поисковый запрос или очистите поиск",justNow:"только что",minAgo:"{{count}} мин. назад",hoursAgo:"{{count}} ч. назад",daysAgo:"{{count}} дн. назад",newFile:"Новый файл (Cmd+N)",newFolder:"Новая папка (Cmd+Shift+N)",refresh:"Обновить",collapseAll:"Свернуть все",context:{rename:"Переименовать",delete:"Удалить",copyPath:"Копировать путь",download:"Скачать",newFile:"Новый файл",newFolder:"Новая папка",upload:"Загрузить файлы",refresh:"Обновить",menuLabel:"Контекстное меню файла",loading:"Загрузка..."}},bf={title:"Создать новый проект",steps:{type:"Тип",configure:"Настройка",confirm:"Подтверждение"},step1:{question:"У вас уже есть рабочее пространство или вы хотите создать новое?",existing:{title:"Существующее рабочее пространство",description:"У меня уже есть рабочее пространство на сервере, нужно только добавить его в список проектов"},new:{title:"Новое рабочее пространство",description:"Создать новое рабочее пространство, опционально клонировать из репозитория GitHub"}},step2:{existingPath:"Путь к рабочему пространству",newPath:"Путь к рабочему пространству",existingPlaceholder:"/путь/к/существующему/пространству",newPlaceholder:"/путь/к/новому/пространству",existingHelp:"Полный путь к каталогу вашего рабочего пространства",newHelp:"Полный путь к каталогу вашего рабочего пространства",githubUrl:"URL GitHub (необязательно)",githubPlaceholder:"https://github.com/username/repository",githubHelp:"Необязательно: укажите URL GitHub для клонирования репозитория",githubAuth:"Аутентификация GitHub (необязательно)",githubAuthHelp:"Требуется только для приватных репозиториев. Публичные репозитории можно клонировать без аутентификации.",loadingTokens:"Загрузка сохраненных токенов...",storedToken:"Сохраненный токен",newToken:"Новый токен",nonePublic:"Нет (публичный)",selectToken:"Выбрать токен",selectTokenPlaceholder:"-- Выберите токен --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"Этот токен будет использован только для этой операции",publicRepoInfo:"Публичные репозитории не требуют аутентификации. Вы можете пропустить токен при клонировании публичного репозитория.",noTokensHelp:"Нет доступных сохраненных токенов. Вы можете добавить токены в Настройки → API ключи для удобного повторного использования.",optionalTokenPublic:"Токен GitHub (необязательно для публичных репозиториев)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (оставьте пустым для публичных репозиториев)"},step3:{reviewConfig:"Проверьте вашу конфигурацию",existingWorkspace:"Существующее рабочее пространство",newWorkspace:"Новое рабочее пространство",path:"Путь:",cloneFrom:"Клонировать из:",authentication:"Аутентификация:",usingStoredToken:"Использование сохраненного токена:",usingProvidedToken:"Использование предоставленного токена",noAuthentication:"Без аутентификации",sshKey:"SSH ключ",existingInfo:"Рабочее пространство будет добавлено в список проектов и будет доступно для сеансов Claude/Cursor.",newWithClone:"Репозиторий будет клонирован в эту папку.",newEmpty:"Рабочее пространство будет добавлено в список проектов и будет доступно для сеансов Claude/Cursor.",cloningRepository:"Клонирование репозитория..."},buttons:{cancel:"Отмена",back:"Назад",next:"Далее",createProject:"Создать проект",creating:"Создание...",cloning:"Клонирование..."},errors:{selectType:"Пожалуйста, выберите, есть ли у вас существующее рабочее пространство или вы хотите создать новое",providePath:"Пожалуйста, укажите путь к рабочему пространству",failedToCreate:"Не удалось создать рабочее пространство",failedToCreateFolder:"Не удалось создать папку"}},vf={title:"Доступно обновление",newVersionReady:"Новая версия готова",currentVersion:"Текущая версия",latestVersion:"Последняя версия",whatsNew:"Что нового:",viewFullRelease:"Посмотреть полный релиз",updateProgress:"Прогресс обновления:",manualUpgrade:"Ручное обновление:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:'Или нажмите "Обновить сейчас" для автоматического обновления.',updateCompleted:"Обновление успешно завершено!",restartServer:"Пожалуйста, перезапустите сервер для применения изменений.",updateFailed:"Обновление не удалось",buttons:{close:"Закрыть",later:"Позже",copyCommand:"Копировать команду",updateNow:"Обновить сейчас",updating:"Обновление..."},ariaLabels:{closeModal:"Закрыть модальное окно обновления версии",showSidebar:"Показать боковую панель",settings:"Настройки",updateAvailable:"Доступно обновление",closeSidebar:"Закрыть боковую панель"}},kf={buttons:rf,tabs:lf,status:cf,messages:df,navigation:uf,common:pf,time:mf,fileOperations:gf,mainContent:hf,fileTree:ff,projectWizard:bf,versionUpdate:vf},xf="Настройки",yf={account:"Аккаунт",permissions:"Разрешения",mcpServers:"MCP серверы",appearance:"Внешний вид"},wf={title:"Аккаунт",language:"Язык",languageLabel:"Язык интерфейса",languageDescription:"Выберите предпочитаемый язык для интерфейса",username:"Имя пользователя",email:"Email",profile:"Профиль",changePassword:"Изменить пароль"},Cf={title:"MCP серверы",addServer:"Добавить сервер",editServer:"Редактировать сервер",deleteServer:"Удалить сервер",serverName:"Имя сервера",serverType:"Тип сервера",config:"Конфигурация",testConnection:"Проверить подключение",status:"Статус",connected:"Подключен",disconnected:"Отключен",scope:{label:"Область",user:"Пользователь",project:"Проект"}},Sf={title:"Внешний вид",theme:"Тема",codeEditor:"Редактор кода",editorTheme:"Тема редактора",wordWrap:"Перенос слов",showMinimap:"Показать миникарту",lineNumbers:"Номера строк",fontSize:"Размер шрифта"},Pf={saveChanges:"Сохранить изменения",resetToDefaults:"Сбросить к значениям по умолчанию",cancelChanges:"Отменить изменения"},Af={title:"Быстрые настройки",sections:{appearance:"Внешний вид",toolDisplay:"Отображение инструментов",inputSettings:"Настройки ввода"},darkMode:"Темная тема",showRawParameters:"Показывать сырые параметры",showThinking:"Показывать размышления",sendByCtrlEnter:"Отправка по Ctrl+Enter",sendByCtrlEnterDescription:"Когда включено, нажатие Ctrl+Enter будет отправлять сообщение вместо просто Enter. Это полезно для пользователей IME, чтобы избежать случайной отправки.",dragHandle:{dragging:"Перетаскивание ручки",closePanel:"Закрыть панель настроек",openPanel:"Открыть панель настроек",draggingStatus:"Перетаскивание...",toggleAndMove:"Нажмите для переключения, перетащите для перемещения"}},jf={title:"Горячие клавиши терминала",sectionKeys:"Клавиши",sectionNavigation:"Навигация",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"Стрелка вверх",arrowDown:"Стрелка вниз",scrollDown:"Прокрутка вниз",handle:{closePanel:"Закрыть панель горячих клавиш",openPanel:"Открыть панель горячих клавиш"}},Tf={label:"Настройки",agents:"Агенты",appearance:"Внешний вид",git:"Git",apiTokens:"API и токены",tasks:"Задачи",notifications:"Уведомления",plugins:"Плагины",about:"О программе"},If={title:"Уведомления",description:"Управляйте тем, какие события уведомлений вы получаете.",webPush:{title:"Web Push уведомления",enable:"Включить Push уведомления",disable:"Отключить Push уведомления",enabled:"Push уведомления включены",loading:"Обновление...",unsupported:"Push уведомления не поддерживаются в этом браузере.",denied:"Push уведомления заблокированы. Разрешите их в настройках браузера."},sound:{title:"Звук",description:"Воспроизводить короткий сигнал при завершении запуска чата.",enabled:"Включено",test:"Проверить звук"},events:{title:"Типы событий",actionRequired:"Требуется действие",stop:"Запуск остановлен",error:"Запуск завершился с ошибкой"}},Ef={darkMode:{label:"Темная тема",description:"Переключение между светлой и темной темами"},projectSorting:{label:"Сортировка проектов",description:"Как проекты упорядочены на боковой панели",alphabetical:"По алфавиту",recentActivity:"По недавней активности"},codeEditor:{title:"Редактор кода",theme:{label:"Тема редактора",description:"Тема по умолчанию для редактора кода"},wordWrap:{label:"Перенос слов",description:"Включить перенос слов по умолчанию в редакторе"},showMinimap:{label:"Показать миникарту",description:"Отображать миникарту для упрощения навигации в представлении различий"},lineNumbers:{label:"Показать номера строк",description:"Отображать номера строк в редакторе"},fontSize:{label:"Размер шрифта",description:"Размер шрифта редактора в пикселях"}}},Mf={title:{add:"Добавить MCP сервер",edit:"Редактировать MCP сервер"},importMode:{form:"Ввод формы",json:"Импорт JSON"},scope:{label:"Область",userGlobal:"Пользователь (глобально)",projectLocal:"Проект (локально)",userDescription:"Область пользователя: доступно во всех проектах на вашей машине",projectDescription:"Локальная область: доступно только в выбранном проекте",cannotChange:"Область не может быть изменена при редактировании существующего сервера"},fields:{serverName:"Имя сервера",transportType:"Тип транспорта",command:"Команда",arguments:"Аргументы (по одному на строку)",jsonConfig:"JSON конфигурация",url:"URL",envVars:"Переменные окружения (КЛЮЧ=значение, по одной на строку)",headers:"Заголовки (КЛЮЧ=значение, по одному на строку)",selectProject:"Выберите проект..."},placeholders:{serverName:"мой-сервер"},validation:{missingType:"Отсутствует обязательное поле: type",stdioRequiresCommand:"тип stdio требует поле command",httpRequiresUrl:"тип {{type}} требует поле url",invalidJson:"Неверный формат JSON",jsonHelp:"Вставьте конфигурацию вашего MCP сервера в формате JSON. Примеры форматов:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"Детали конфигурации (из {{configFile}})",projectPath:"Путь: {{path}}",actions:{cancel:"Отмена",saving:"Сохранение...",addServer:"Добавить сервер",updateServer:"Обновить сервер"}},zf={success:"Настройки успешно сохранены!",error:"Не удалось сохранить настройки",saving:"Сохранение..."},Df={save:"Сохранить настройки",cancel:"Отмена"},Nf={title:"Конфигурация Git",description:"Настройте вашу git идентичность для коммитов. Эти настройки будут применены глобально через git config --global",name:{label:"Имя Git",help:"Ваше имя для git коммитов"},email:{label:"Email Git",help:"Ваш email для git коммитов"},actions:{save:"Сохранить конфигурацию",saving:"Сохранение..."},status:{success:"Успешно сохранено"}},$f={title:"API ключи",description:"Генерируйте API ключи для доступа к внешнему API из других приложений.",newKey:{alertTitle:"⚠️ Сохраните ваш API ключ",alertMessage:"Это единственный раз, когда вы увидите этот ключ. Сохраните его в безопасном месте.",iveSavedIt:"Я сохранил его"},form:{placeholder:"Имя API ключа (например, Продакшн сервер)",createButton:"Создать",cancelButton:"Отмена"},newButton:"Новый API ключ",empty:"API ключи еще не созданы.",list:{created:"Создан:",lastUsed:"Последнее использование:"},confirmDelete:"Вы уверены, что хотите удалить этот API ключ?",status:{active:"Активен",inactive:"Неактивен"},github:{title:"GitHub токены",description:"Добавьте персональные токены доступа GitHub для клонирования приватных репозиториев через внешний API.",descriptionAlt:"Добавьте персональные токены доступа GitHub для клонирования приватных репозиториев. Вы также можете передавать токены напрямую в API запросах без их сохранения.",addButton:"Добавить токен",form:{namePlaceholder:"Имя токена (например, Личные репозитории)",tokenPlaceholder:"Персональный токен доступа GitHub (ghp_...)",descriptionPlaceholder:"Описание (необязательно)",addButton:"Добавить токен",cancelButton:"Отмена",howToCreate:"Как создать персональный токен доступа GitHub →"},empty:"GitHub токены еще не добавлены.",added:"Добавлен:",confirmDelete:"Вы уверены, что хотите удалить этот GitHub токен?"},apiDocsLink:"Документация API",documentation:{title:"Документация внешнего API",description:"Узнайте, как использовать внешний API для запуска сеансов Claude/Cursor из ваших приложений.",viewLink:"Просмотр документации API →"},loading:"Загрузка...",version:{updateAvailable:"Доступно обновление: v{{version}}"}},Rf={checking:"Проверка установки TaskMaster...",notInstalled:{title:"TaskMaster AI CLI не установлен",description:"TaskMaster CLI требуется для использования функций управления задачами. Установите его для начала работы:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"Посмотреть на GitHub",afterInstallation:"После установки:",steps:{restart:"Перезапустите это приложение",autoAvailable:"Функции TaskMaster станут автоматически доступны",initCommand:"Используйте task-master init в каталоге вашего проекта"}},settings:{enableLabel:"Включить интеграцию TaskMaster",enableDescription:"Показывать задачи TaskMaster, баннеры и индикаторы боковой панели в интерфейсе"}},Lf={authStatus:{checking:"Проверка...",connected:"Подключен",notConnected:"Не подключен",disconnected:"Отключен",checkingAuth:"Проверка статуса аутентификации...",loggedInAs:"Вошли как {{email}}",authenticatedUser:"аутентифицированный пользователь"},account:{claude:{description:"AI-ассистент Anthropic Claude"},cursor:{description:"Редактор кода с AI Cursor"},codex:{description:"AI-ассистент OpenAI Codex"}},connectionStatus:"Статус подключения",login:{title:"Вход",reAuthenticate:"Повторная аутентификация",description:"Войдите в ваш аккаунт {{agent}} для включения AI функций",reAuthDescription:"Войдите с другим аккаунтом или обновите учетные данные",button:"Войти",reLoginButton:"Войти снова"},error:"Ошибка: {{error}}"},Ff={title:"Настройки разрешений",skipPermissions:{label:"Пропускать запросы разрешений (используйте с осторожностью)",claudeDescription:"Эквивалентно флагу --dangerously-skip-permissions",cursorDescription:"Эквивалентно флагу -f в Cursor CLI"},allowedTools:{title:"Разрешенные инструменты",description:"Инструменты, которые автоматически разрешены без запроса разрешения",placeholder:'например, "Bash(git log:*)" или "Write"',quickAdd:"Быстро добавить общие инструменты:",empty:"Разрешенные инструменты не настроены"},blockedTools:{title:"Заблокированные инструменты",description:"Инструменты, которые автоматически блокируются без запроса разрешения",placeholder:'например, "Bash(rm:*)"',empty:"Заблокированные инструменты не настроены"},allowedCommands:{title:"Разрешенные команды оболочки",description:"Команды оболочки, которые автоматически разрешены без запроса",placeholder:'например, "Shell(ls)" или "Shell(git status)"',quickAdd:"Быстро добавить общие команды:",empty:"Разрешенные команды не настроены"},blockedCommands:{title:"Заблокированные команды оболочки",description:"Команды оболочки, которые автоматически блокируются",placeholder:'например, "Shell(rm -rf)" или "Shell(sudo)"',empty:"Заблокированные команды не настроены"},toolExamples:{title:"Примеры шаблонов инструментов:",bashGitLog:"- Разрешить все команды git log",bashGitDiff:"- Разрешить все команды git diff",write:"- Разрешить все использование инструмента Write",bashRm:"- Заблокировать все команды rm (опасно)"},shellExamples:{title:"Примеры команд оболочки:",ls:"- Разрешить команду ls",gitStatus:"- Разрешить git status",npmInstall:"- Разрешить npm install",rmRf:"- Заблокировать рекурсивное удаление"},codex:{permissionMode:"Режим разрешений",description:"Управляет тем, как Codex обрабатывает изменения файлов и выполнение команд",modes:{default:{title:"По умолчанию",description:"Только доверенные команды (ls, cat, grep, git status и т.д.) выполняются автоматически. Другие команды пропускаются. Может записывать в рабочее пространство."},acceptEdits:{title:"Принимать правки",description:"Все команды выполняются автоматически в рабочем пространстве. Полный автоматический режим с изолированным выполнением."},bypassPermissions:{title:"Обход разрешений",description:"Полный системный доступ без ограничений. Все команды выполняются автоматически с полным доступом к диску и сети. Используйте с осторожностью."}},technicalDetails:"Технические детали",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted. Доверенные команды: cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find (без -exec) и т.д.",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never. Все команды автоматически выполняются в каталоге проекта.",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never. Полный системный доступ, используйте только в доверенных средах.",overrideNote:"Вы можете переопределить это для каждого сеанса, используя кнопку режима в интерфейсе чата."}},actions:{add:"Добавить"}},Bf={title:"MCP серверы",description:{claude:"Серверы Model Context Protocol предоставляют дополнительные инструменты и источники данных для Claude",cursor:"Серверы Model Context Protocol предоставляют дополнительные инструменты и источники данных для Cursor",codex:"Серверы Model Context Protocol предоставляют дополнительные инструменты и источники данных для Codex"},addButton:"Добавить MCP сервер",empty:"MCP серверы не настроены",serverType:"Тип",scope:{local:"локальный",user:"пользователь"},config:{command:"Команда",url:"URL",args:"Аргументы",environment:"Окружение"},tools:{title:"Инструменты",count:"({{count}}):",more:"+{{count}} еще"},actions:{edit:"Редактировать сервер",delete:"Удалить сервер"},help:{title:"О Codex MCP",description:"Codex поддерживает MCP серверы на основе stdio. Вы можете добавлять серверы, которые расширяют возможности Codex дополнительными инструментами и ресурсами."}},Gf={title:"Плагины",description:"Расширяйте интерфейс с помощью кастомных плагинов. Установите из git или добавьте папку в ~/.claude-code-ui/plugins/",installPlaceholder:"https://github.com/user/my-plugin",installButton:"Установить",installing:"Установка…",securityWarning:"Устанавливайте только те плагины, исходный код которых вы проверили или от авторов, которым вы доверяете.",scanningPlugins:"Сканирование плагинов…",noPluginsInstalled:"Плагины не установлены",pullLatest:"Получить обновления из git",noGitRemote:"Нет удаленного git-репозитория — обновление недоступно",uninstallPlugin:"Удалить плагин",confirmUninstall:"Нажмите еще раз для подтверждения",confirmUninstallMessage:"Удалить {{name}}? Это действие нельзя отменить.",cancel:"Отмена",remove:"Удалить",updateFailed:"Ошибка обновления",installFailed:"Ошибка установки",uninstallFailed:"Ошибка удаления",toggleFailed:"Ошибка переключения",buildYourOwn:"Создайте свой плагин",starter:"Шаблон",docs:"Документация",starterPlugin:{name:"Статистика проекта",badge:"шаблон",description:"Количество файлов, строк кода, разбивка по типам файлов и недавняя активность в вашем проекте.",install:"Установить"},morePlugins:"Ещё",enable:"Включить",disable:"Выключить",installAriaLabel:"URL git-репозитория плагина",tab:"вкладка",runningStatus:"запущен"},Hf={title:xf,tabs:yf,account:wf,mcp:Cf,appearance:Sf,actions:Pf,quickSettings:Af,terminalShortcuts:jf,mainTabs:Tf,notifications:If,appearanceSettings:Ef,mcpForm:Mf,saveStatus:zf,footerActions:Df,git:Nf,apiKeys:$f,tasks:Rf,agents:Lf,permissions:Ff,mcpServers:Bf,pluginSettings:Gf},Of={title:"Добро пожаловать",description:"Войдите в свой аккаунт WindCli",username:"Имя пользователя",password:"Пароль",submit:"Войти",loading:"Вход...",errors:{invalidCredentials:"Неверное имя пользователя или пароль",requiredFields:"Пожалуйста, заполните все поля",networkError:"Ошибка сети. Попробуйте снова."},placeholders:{username:"Введите имя пользователя",password:"Введите пароль"}},Uf={title:"Создать аккаунт",username:"Имя пользователя",password:"Пароль",confirmPassword:"Подтвердите пароль",submit:"Создать аккаунт",loading:"Создание аккаунта...",errors:{passwordMismatch:"Пароли не совпадают",usernameTaken:"Имя пользователя уже занято",weakPassword:"Пароль слишком слабый"}},qf={title:"Выйти",confirm:"Вы уверены, что хотите выйти?",button:"Выйти"},Wf={login:Of,register:Uf,logout:qf},Vf={title:"Проекты",newProject:"Новый проект",deleteProject:"Убрать проект",renameProject:"Переименовать проект",noProjects:"Проекты не найдены",loadingProjects:"Загрузка проектов...",searchPlaceholder:"Поиск проектов...",projectNamePlaceholder:"Имя проекта",starred:"Избранное",all:"Все",untitledSession:"Безымянный сеанс",newSession:"Новый сеанс",codexSession:"Сеанс Codex",fetchingProjects:"Получение ваших проектов и сеансов Claude",projects:"проекты",noMatchingProjects:"Нет подходящих проектов",tryDifferentSearch:"Попробуйте изменить поисковый запрос",runClaudeCli:"Запустите Claude CLI в каталоге проекта для начала работы"},Kf={title:"WindCli",subtitle:"Интерфейс AI помощника для программирования"},_f={title:"Сеансы",newSession:"Новый сеанс",deleteSession:"Удалить сеанс",renameSession:"Переименовать сеанс",noSessions:"Сеансов пока нет",loadingSessions:"Загрузка сеансов...",unnamed:"Без имени",loading:"Загрузка...",showMore:"Показать больше сеансов"},Yf={viewEnvironments:"Просмотр окружений",hideSidebar:"Скрыть боковую панель",createProject:"Создать новый проект",refresh:"Обновить проекты и сеансы (Ctrl+R)",renameProject:"Переименовать проект (F2)",deleteProject:"Убрать проект из боковой панели (Delete)",addToFavorites:"Добавить в избранное",removeFromFavorites:"Удалить из избранного",editSessionName:"Вручную редактировать имя сеанса",deleteSession:"Удалить этот сеанс навсегда",activeSessionIndicator:"Недавно активный сеанс (последние 10 минут)",save:"Сохранить",cancel:"Отмена",clearSearch:"Очистить поиск",openCommandPalette:"Открыть палитру команд",attentionRequiredIndicator:"Сессия требует внимания"},Jf={chat:"Чат",files:"Файлы",git:"Git",terminal:"Терминал",tasks:"Задачи"},Qf={refresh:"Обновить",settings:"Настройки",collapseAll:"Свернуть все",expandAll:"Развернуть все",cancel:"Отмена",save:"Сохранить",delete:"Удалить",rename:"Переименовать",joinCommunity:"Присоединиться к сообществу",reportIssue:"Сообщить о проблеме",starOnGithub:"Звезда на GitHub"},Zf={openSource:"Открытый исходный код"},Xf={active:"Активен",inactive:"Неактивен",thinking:"Думает...",error:"Ошибка",aborted:"Прервано",unknown:"Неизвестно"},eb={justNow:"Только что",oneMinuteAgo:"1 мин. назад",minutesAgo:"{{count}} мин. назад",oneHourAgo:"1 час назад",hoursAgo:"{{count}} ч. назад",oneDayAgo:"1 день назад",daysAgo:"{{count}} дн. назад"},tb={deleteConfirm:"Вы уверены, что хотите это удалить?",renameSuccess:"Успешно переименовано",deleteSuccess:"Успешно удалено",errorOccurred:"Произошла ошибка",deleteSessionConfirm:"Вы уверены, что хотите удалить этот сеанс? Это действие нельзя отменить.",deleteProjectConfirm:"Убрать этот проект из боковой панели? Файлы проекта, воспоминания и данные сеансов не будут удалены.",enterProjectPath:"Пожалуйста, введите путь к проекту",deleteSessionFailed:"Не удалось удалить сеанс. Попробуйте снова.",deleteSessionError:"Ошибка при удалении сеанса. Попробуйте снова.",renameSessionFailed:"Не удалось переименовать сеанс. Попробуйте снова.",renameSessionError:"Ошибка при переименовании сеанса. Попробуйте снова.",deleteProjectFailed:"Не удалось убрать проект. Попробуйте снова.",deleteProjectError:"Ошибка при удалении проекта из списка. Попробуйте снова.",createProjectFailed:"Не удалось создать проект. Попробуйте снова.",createProjectError:"Ошибка при создании проекта. Попробуйте снова.",updateProjectError:"Ошибка при обновлении проекта. Попробуйте снова.",refreshError:"Не удалось обновить. Попробуйте снова.",restoreProjectFailed:"Не удалось восстановить проект. Попробуйте снова.",restoreProjectError:"Ошибка при восстановлении проекта. Попробуйте снова.",restoreSessionFailed:"Не удалось восстановить сеанс. Попробуйте снова.",restoreSessionError:"Ошибка при восстановлении сеанса. Попробуйте снова."},nb={updateAvailable:"Доступно обновление",restartRequired:"Обновление установлено — перезапустите сервер для применения"},sb={modeProjects:"Проекты",modeConversations:"Разговоры",conversationsPlaceholder:"Поиск в разговорах...",searching:"Поиск...",sessionTitles:"Названия сеансов",conversationContents:"Содержимое разговоров",noResults:"Результаты не найдены",tryDifferentQuery:"Попробуйте другой поисковый запрос",matches_one:"{{count}} совпадение",matches_few:"{{count}} совпадения",matches_many:"{{count}} совпадений",matches_other:"{{count}} совпадений",projectsScanned_one:"{{count}} проект просканирован",projectsScanned_few:"{{count}} проекта просканировано",projectsScanned_many:"{{count}} проектов просканировано",projectsScanned_other:"{{count}} проектов просканировано"},ib={deleteProject:"Убрать проект",deleteSession:"Удалить сеанс",confirmDelete:"Что вы хотите сделать с",sessionCount_one:"Этот проект содержит {{count}} разговор.",sessionCount_few:"Этот проект содержит {{count}} разговора.",sessionCount_many:"Этот проект содержит {{count}} разговоров.",sessionCount_other:"Этот проект содержит {{count}} разговоров.",removeFromSidebar:"Убрать только из боковой панели",deleteAllData:"Удалить все данные навсегда",allConversationsDeleted:"Проект будет убран из боковой панели. Ваши файлы, воспоминания и данные сеансов сохранятся.",cannotUndo:"Вы сможете добавить проект позже."},ab={projects:Vf,app:Kf,sessions:_f,tooltips:Yf,navigation:Jf,actions:Qf,branding:Zf,status:Xf,time:eb,messages:tb,version:nb,search:sb,deleteConfirmation:ib},ob={copy:"Копировать",copied:"Скопировано",copyCode:"Копировать код"},rb={copy:"Копировать сообщение",copied:"Сообщение скопировано",selectFormat:"Выбрать формат копирования",copyAsMarkdown:"Копировать как Markdown",copyAsText:"Копировать как текст"},lb={user:"П",error:"Ошибка",tool:"Инструмент",claude:"Claude",cursor:"Cursor",codex:"Codex"},cb={settings:"Настройки инструмента",error:"Ошибка инструмента",result:"Результат инструмента",viewParams:"Просмотр входных параметров",viewRawParams:"Просмотр сырых параметров",viewDiff:"Просмотр различий редактирования для",creatingFile:"Создание нового файла:",updatingTodo:"Обновление списка задач",read:"Чтение",readFile:"Чтение файла",updateTodo:"Обновить список задач",readTodo:"Прочитать список задач",searchResults:"результаты"},db={found:"Найдено {{count}} {{type}}",file:"файл",files:"файлов",pattern:"шаблон:",in:"в:"},ub={updated:"Файл успешно обновлен",created:"Файл успешно создан",written:"Файл успешно записан",diff:"Различия",newFile:"Новый файл",viewContent:"Просмотр содержимого файла",viewFullOutput:"Просмотр полного вывода ({{count}} символов)",contentDisplayed:"Содержимое файла отображено в представлении различий выше"},pb={title:"Интерактивный запрос",waiting:"Ожидание вашего ответа в CLI",instruction:"Пожалуйста, выберите опцию в терминале, где запущен Claude.",selectedOption:"✓ Claude выбрал опцию {{number}}",instructionDetail:"В CLI вы бы выбрали эту опцию интерактивно, используя клавиши со стрелками или введя номер."},mb={title:"Думаю...",emoji:"💭 Думаю..."},gb={response:"JSON ответ"},hb={grant:"Предоставить разрешение для {{tool}}",added:"Разрешение добавлено",addTo:"Добавляет {{entry}} в разрешенные инструменты.",retry:"Разрешение сохранено. Повторите запрос для использования инструмента.",error:"Не удалось обновить разрешения. Попробуйте снова.",openSettings:"Открыть настройки"},fb={updated:"Список задач успешно обновлен",current:"Текущий список задач"},bb={viewPlan:"📋 Просмотр плана реализации",title:"План реализации"},vb={resetAt:"Достигнут лимит использования Claude. Ваш лимит будет сброшен в **{{time}} {{timezone}}** - {{date}}"},kb={permissionMode:"Режим разрешений",modes:{default:"Режим по умолчанию",auto:"Auto Mode",acceptEdits:"Принимать правки",bypassPermissions:"Обход разрешений",plan:"Режим планирования"},descriptions:{default:"Только доверенные команды (ls, cat, grep, git status и т.д.) выполняются автоматически. Другие команды пропускаются. Может записывать в рабочее пространство.",auto:"A model classifier decides per tool call whether to approve or deny. Hands-off, but safer than Bypass — denials still happen.",acceptEdits:"Все команды выполняются автоматически в рабочем пространстве. Полный автоматический режим с изолированным выполнением.",bypassPermissions:"Полный системный доступ без ограничений. Все команды выполняются автоматически с полным доступом к диску и сети. Используйте с осторожностью.",plan:"Режим планирования - команды не выполняются"},technicalDetails:"Технические детали"},xb={placeholder:"Введите / для команд, @ для файлов, или спросите {{provider}} что угодно...",placeholderDefault:"Введите ваше сообщение...",disabled:"Ввод отключен",attachFiles:"Прикрепить файлы",attachImages:"Прикрепить изображения",send:"Отправить",stop:"Остановить",hintText:{ctrlEnter:"Ctrl+Enter для отправки • Shift+Enter для новой строки • Tab для смены режима • / для команд",enter:"Enter для отправки • Shift+Enter для новой строки • Tab для смены режима • / для команд"},clickToChangeMode:"Нажмите для смены режима разрешений (или нажмите Tab в поле ввода)",showAllCommands:"Показать все команды",clearInput:"Очистить ввод",scrollToBottom:"Прокрутить вниз"},yb={title:"Выберите вашего AI-ассистента",description:"Выберите провайдера для начала нового разговора",selectModel:"Выбрать модель",providerInfo:{anthropic:"от Anthropic",openai:"от OpenAI",cursorEditor:"AI редактор кода",google:"от Google"},readyPrompt:{claude:"Готов использовать Claude с {{model}}. Начните вводить сообщение ниже.",cursor:"Готов использовать Cursor с {{model}}. Начните вводить сообщение ниже.",codex:"Готов использовать Codex с {{model}}. Начните вводить сообщение ниже.",default:"Выберите провайдера выше для начала"},pressToSearch:"Нажмите <kbd>{{shortcut}}</kbd>, чтобы искать сессии, файлы и коммиты"},wb={continue:{title:"Продолжить разговор",description:"Задавайте вопросы о вашем коде, запрашивайте изменения или получайте помощь с задачами разработки"},loading:{olderMessages:"Загрузка старых сообщений...",sessionMessages:"Загрузка сообщений сеанса..."},messages:{showingOf:"Показано {{shown}} из {{total}} сообщений",scrollToLoad:"Прокрутите вверх для загрузки еще",showingLast:"Показаны последние {{count}} сообщений (всего {{total}})",loadEarlier:"Загрузить более ранние сообщения",loadAll:"Загрузить все сообщения",loadingAll:"Загрузка всех сообщений...",allLoaded:"Все сообщения загружены",perfWarning:'Все сообщения загружены — прокрутка может быть медленнее. Нажмите "Прокрутить вниз" для восстановления производительности.'}},Cb={selectProject:{title:"Выберите проект",description:"Выберите проект для открытия интерактивной оболочки в этом каталоге"},status:{newSession:"Новый сеанс",initializing:"Инициализация...",restarting:"Перезапуск..."},actions:{disconnect:"Отключиться",disconnectTitle:"Отключиться от оболочки",restart:"Перезапустить",restartTitle:"Перезапустить оболочку (сначала отключитесь)",connect:"Продолжить в оболочке",connectTitle:"Подключиться к оболочке"},loading:"Загрузка терминала...",connecting:"Подключение к оболочке...",startSession:"Начать новый сеанс Claude",resumeSession:"Возобновить сеанс: {{displayName}}...",runCommand:"Выполнить {{command}} в {{projectName}}",startCli:"Запуск Claude CLI в {{projectName}}",defaultCommand:"команда"},Sb={actions:{thinking:"Думает",processing:"Обрабатывает",analyzing:"Анализирует",working:"Работает",computing:"Вычисляет",reasoning:"Рассуждает"},state:{live:"В сети",paused:"Приостановлен"},elapsed:{seconds:"{{count}}с",minutesSeconds:"{{minutes}}м {{seconds}}с",label:"Прошло {{time}}",startingNow:"Начинается сейчас"},controls:{stopGeneration:"Остановить генерацию",pressEscToStop:"Нажмите Esc в любое время для остановки"},providers:{assistant:"Ассистент"}},Pb={startChatWithProvider:"Выберите проект для начала чата с {{provider}}"},Ab={nextTaskPrompt:"Начать следующую задачу"},jb={codeBlock:ob,copyMessage:rb,messageTypes:lb,tools:cb,search:db,fileOperations:ub,interactive:pb,thinking:mb,json:gb,permissions:hb,todo:fb,plan:bb,usageLimit:vb,codex:kb,input:xb,providerSelection:yb,session:wb,shell:Cb,claudeStatus:Sb,projectSelection:Pb,tasks:Ab},Tb={changes:"изменения",previousChange:"Предыдущее изменение",nextChange:"Следующее изменение",hideDiff:"Скрыть подсветку различий",showDiff:"Показать подсветку различий",settings:"Настройки редактора",collapse:"Свернуть редактор",expand:"Развернуть редактор на всю ширину"},Ib="Загрузка {{fileName}}...",Eb={showingChanges:"Показаны изменения"},Mb={copyPath:"Копировать путь к файлу",pathCopied:"Путь к файлу скопирован",download:"Скачать файл",save:"Сохранить",saving:"Сохранение...",saved:"Сохранено!",exitFullscreen:"Выйти из полноэкранного режима",fullscreen:"Полноэкранный режим",close:"Закрыть",previewMarkdown:"Предпросмотр markdown",editMarkdown:"Редактировать markdown"},zb={lines:"Строк:",characters:"Символов:",shortcuts:"Нажмите Ctrl+S для сохранения • Esc для закрытия"},Db={title:"Бинарный файл",message:'Файл "{{fileName}}" не может быть отображен в текстовом редакторе, так как это бинарный файл.'},Nb={toolbar:Tb,loading:Ib,header:Eb,actions:Mb,footer:zb,binaryFile:Db},$b={title:"TaskMaster AI не настроен",description:"TaskMaster помогает разбивать сложные проекты на управляемые задачи с помощью AI",whatIsTitle:"🎯 Что такое TaskMaster?",features:{aiPowered:"Управление задачами с AI: разбивайте сложные проекты на управляемые подзадачи",prdTemplates:"Шаблоны PRD: генерируйте задачи из документов требований к продукту",dependencyTracking:"Отслеживание зависимостей: понимайте связи задач и порядок выполнения",progressVisualization:"Визуализация прогресса: канбан-доски и детальная аналитика задач",cliIntegration:"Интеграция с CLI: используйте команды taskmaster для продвинутых рабочих процессов"},initializeButton:"Инициализировать TaskMaster AI"},Rb={title:"Начало работы с TaskMaster",subtitle:"TaskMaster инициализирован! Вот что делать дальше:",steps:{createPRD:{title:"Создайте документ требований к продукту (PRD)",description:"Обсудите идею вашего проекта и создайте PRD, описывающий то, что вы хотите построить.",addButton:"Добавить PRD",existingPRDs:"Существующие PRD:"},generateTasks:{title:"Генерация задач из PRD",description:"Когда у вас есть PRD, попросите вашего AI-ассистента разобрать его, и TaskMaster автоматически разобьет его на управляемые задачи с деталями реализации."},analyzeTasks:{title:"Анализ и расширение задач",description:"Попросите вашего AI-ассистента проанализировать сложность задач и расширить их в детальные подзадачи для упрощения реализации."},startBuilding:{title:"Начните разработку",description:"Попросите вашего AI-ассистента начать работу над задачами, обновлять их статус и добавлять новые задачи по мере развития вашего проекта."}},tip:"💡 Совет: начните с PRD, чтобы получить максимум от AI-генерации задач TaskMaster"},Lb={title:"Настройка TaskMaster",subtitle:"Интерактивный CLI для {{projectName}}",willStart:"Инициализация TaskMaster начнется автоматически",completed:"Настройка TaskMaster завершена! Теперь вы можете закрыть это окно.",closeButton:"Закрыть",closeContinueButton:"Закрыть и продолжить"},Fb={title:"Начало работы с TaskMaster",subtitle:"Ваш гид по продуктивному управлению задачами",examples:{parsePRD:`💬 Пример:
|
|
20
|
+
「Cloudinaryを使用してユーザープロフィール画像のアップロードを実装する新しいタスクを追加してください。最適なアプローチを調査してください。」`},moreExamples:"さらなる例と使用パターンを見る →",proTips:{title:"💡 プロのヒント",search:"検索バーを使用して特定のタスクをすばやく見つける",views:"ビュー切替を使用してカンバン、リスト、グリッドビューを切り替える",filters:"フィルターを使用して特定のタスクステータスや優先度に焦点を当てる",details:"任意のタスクをクリックして詳細情報を表示し、サブタスクを管理する"},learnMore:{title:"📚 詳細を見る",description:"TaskMaster AIは開発者向けに構築された高度なタスク管理システムです。ドキュメント、例を入手し、プロジェクトに貢献できます。",githubButton:"GitHubで見る"}},rf={placeholder:"タスクを検索..."},lf={button:"フィルター",status:"ステータス",priority:"優先度",sortBy:"並び替え",allStatuses:"すべてのステータス",allPriorities:"すべての優先度",showing:"{{filtered}}件のタスクを表示中(全{{total}}件)",clearFilters:"フィルターをクリア"},cf={id:"ID",status:"ステータス",priority:"優先度",idAsc:"ID(昇順)",idDesc:"ID(降順)",titleAsc:"タイトル(A-Z)",titleDesc:"タイトル(Z-A)",statusAsc:"ステータス(保留中が先)",statusDesc:"ステータス(完了が先)",priorityAsc:"優先度(高が先)",priorityDesc:"優先度(低が先)"},df={kanban:"カンバンビュー",list:"リストビュー",grid:"グリッドビュー"},uf={pending:"📋 やること",inProgress:"🚀 進行中",done:"✅ 完了",blocked:"🚫 ブロック中",deferred:"⏳ 延期",cancelled:"❌ キャンセル",noTasksYet:"まだタスクはありません",tasksWillAppear:"タスクはここに表示されます",moveTasksHere:"開始したらタスクをここに移動",completedTasksHere:"完了したタスクはここに表示されます",statusTasksHere:"このステータスのタスクはここに表示されます"},pf={help:"TaskMaster入門ガイド",prds:"PRD",addPRD:"PRDを追加",addTask:"タスクを追加",createNewPRD:"新しいPRDを作成",prdsAvailable:"{{count}}件のPRDがあります"},mf={modified:"更新日: {{date}}"},gf={pending:"保留中","in-progress":"進行中",done:"完了",blocked:"ブロック中",deferred:"延期",cancelled:"キャンセル"},hf={high:"高",medium:"中",low:"低"},ff={title:"フィルターに一致するタスクがありません",description:"検索条件またはフィルター基準を調整してみてください。"},bf={notConfigured:nf,gettingStarted:sf,setupModal:af,helpGuide:of,search:rf,filters:lf,sort:cf,views:df,kanban:uf,buttons:pf,prd:mf,statuses:gf,priorities:hf,noMatchingTasks:ff},vf={save:"Сохранить",cancel:"Отмена",delete:"Удалить",create:"Создать",edit:"Редактировать",close:"Закрыть",confirm:"Подтвердить",submit:"Отправить",retry:"Повторить",refresh:"Обновить",search:"Поиск",clear:"Очистить",copy:"Копировать",download:"Скачать",upload:"Загрузить",browse:"Обзор"},kf={chat:"Чат",shell:"Терминал",files:"Файлы",git:"Система контроля версий",tasks:"Задачи",browser:"Browser",computer:"Компьютер"},xf={loading:"Загрузка...",success:"Успешно",error:"Ошибка",failed:"Не удалось",pending:"Ожидание",completed:"Завершено",inProgress:"В процессе"},yf={savedSuccessfully:"Успешно сохранено",deletedSuccessfully:"Успешно удалено",updatedSuccessfully:"Успешно обновлено",operationFailed:"Операция не удалась",networkError:"Ошибка сети. Проверьте подключение.",unauthorized:"Не авторизован. Пожалуйста, войдите.",notFound:"Не найдено",invalidInput:"Неверный ввод",requiredField:"Это поле обязательно",unknownError:"Произошла неизвестная ошибка"},wf={settings:"Настройки",home:"Главная",back:"Назад",next:"Далее",previous:"Предыдущий",logout:"Выйти"},Cf={language:"Язык",theme:"Тема",darkMode:"Темная тема",lightMode:"Светлая тема",name:"Имя",description:"Описание",enabled:"Включено",disabled:"Отключено",optional:"Необязательно",version:"Версия",select:"Выбрать",selectAll:"Выбрать все",deselectAll:"Снять выделение"},Sf={justNow:"Только что",minutesAgo:"{{count}} мин. назад",hoursAgo:"{{count}} ч. назад",daysAgo:"{{count}} дн. назад",yesterday:"Вчера"},Pf={newFile:"Новый файл",newFolder:"Новая папка",rename:"Переименовать",move:"Переместить",copyPath:"Копировать путь",openInEditor:"Открыть в редакторе"},Af={loading:"Загрузка WindCli",settingUpWorkspace:"Настройка рабочего пространства...",chooseProject:"Выберите проект",selectProjectDescription:"Выберите проект на боковой панели, чтобы начать работу с Claude. Каждый проект содержит ваши сеансы чата и историю файлов.",tip:"Совет",createProjectMobile:"Нажмите кнопку меню выше для доступа к проектам",createProjectDesktop:"Создайте новый проект, нажав на значок папки на боковой панели",newSession:"Новый сеанс",untitledSession:"Безымянный сеанс",projectFiles:"Файлы проекта"},jf={loading:"Загрузка файлов...",files:"Файлы",simpleView:"Простой вид",compactView:"Компактный вид",detailedView:"Подробный вид",searchPlaceholder:"Поиск файлов и папок...",clearSearch:"Очистить поиск",name:"Имя",size:"Размер",modified:"Изменено",permissions:"Права доступа",noFilesFound:"Файлы не найдены",checkProjectPath:"Проверьте доступность пути к проекту",noMatchesFound:"Совпадений не найдено",tryDifferentSearch:"Попробуйте другой поисковый запрос или очистите поиск",justNow:"только что",minAgo:"{{count}} мин. назад",hoursAgo:"{{count}} ч. назад",daysAgo:"{{count}} дн. назад",newFile:"Новый файл (Cmd+N)",newFolder:"Новая папка (Cmd+Shift+N)",refresh:"Обновить",collapseAll:"Свернуть все",context:{rename:"Переименовать",delete:"Удалить",copyPath:"Копировать путь",download:"Скачать",newFile:"Новый файл",newFolder:"Новая папка",upload:"Загрузить файлы",refresh:"Обновить",menuLabel:"Контекстное меню файла",loading:"Загрузка..."}},Tf={title:"Создать новый проект",steps:{type:"Тип",configure:"Настройка",confirm:"Подтверждение"},step1:{question:"У вас уже есть рабочее пространство или вы хотите создать новое?",existing:{title:"Существующее рабочее пространство",description:"У меня уже есть рабочее пространство на сервере, нужно только добавить его в список проектов"},new:{title:"Новое рабочее пространство",description:"Создать новое рабочее пространство, опционально клонировать из репозитория GitHub"}},step2:{existingPath:"Путь к рабочему пространству",newPath:"Путь к рабочему пространству",existingPlaceholder:"/путь/к/существующему/пространству",newPlaceholder:"/путь/к/новому/пространству",existingHelp:"Полный путь к каталогу вашего рабочего пространства",newHelp:"Полный путь к каталогу вашего рабочего пространства",githubUrl:"URL GitHub (необязательно)",githubPlaceholder:"https://github.com/username/repository",githubHelp:"Необязательно: укажите URL GitHub для клонирования репозитория",githubAuth:"Аутентификация GitHub (необязательно)",githubAuthHelp:"Требуется только для приватных репозиториев. Публичные репозитории можно клонировать без аутентификации.",loadingTokens:"Загрузка сохраненных токенов...",storedToken:"Сохраненный токен",newToken:"Новый токен",nonePublic:"Нет (публичный)",selectToken:"Выбрать токен",selectTokenPlaceholder:"-- Выберите токен --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"Этот токен будет использован только для этой операции",publicRepoInfo:"Публичные репозитории не требуют аутентификации. Вы можете пропустить токен при клонировании публичного репозитория.",noTokensHelp:"Нет доступных сохраненных токенов. Вы можете добавить токены в Настройки → API ключи для удобного повторного использования.",optionalTokenPublic:"Токен GitHub (необязательно для публичных репозиториев)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (оставьте пустым для публичных репозиториев)"},step3:{reviewConfig:"Проверьте вашу конфигурацию",existingWorkspace:"Существующее рабочее пространство",newWorkspace:"Новое рабочее пространство",path:"Путь:",cloneFrom:"Клонировать из:",authentication:"Аутентификация:",usingStoredToken:"Использование сохраненного токена:",usingProvidedToken:"Использование предоставленного токена",noAuthentication:"Без аутентификации",sshKey:"SSH ключ",existingInfo:"Рабочее пространство будет добавлено в список проектов и будет доступно для сеансов Claude/Cursor.",newWithClone:"Репозиторий будет клонирован в эту папку.",newEmpty:"Рабочее пространство будет добавлено в список проектов и будет доступно для сеансов Claude/Cursor.",cloningRepository:"Клонирование репозитория..."},buttons:{cancel:"Отмена",back:"Назад",next:"Далее",createProject:"Создать проект",creating:"Создание...",cloning:"Клонирование..."},errors:{selectType:"Пожалуйста, выберите, есть ли у вас существующее рабочее пространство или вы хотите создать новое",providePath:"Пожалуйста, укажите путь к рабочему пространству",failedToCreate:"Не удалось создать рабочее пространство",failedToCreateFolder:"Не удалось создать папку"}},If={title:"Доступно обновление",newVersionReady:"Новая версия готова",currentVersion:"Текущая версия",latestVersion:"Последняя версия",whatsNew:"Что нового:",viewFullRelease:"Посмотреть полный релиз",updateProgress:"Прогресс обновления:",manualUpgrade:"Ручное обновление:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:'Или нажмите "Обновить сейчас" для автоматического обновления.',updateCompleted:"Обновление успешно завершено!",restartServer:"Пожалуйста, перезапустите сервер для применения изменений.",updateFailed:"Обновление не удалось",buttons:{close:"Закрыть",later:"Позже",copyCommand:"Копировать команду",updateNow:"Обновить сейчас",updating:"Обновление..."},ariaLabels:{closeModal:"Закрыть модальное окно обновления версии",showSidebar:"Показать боковую панель",settings:"Настройки",updateAvailable:"Доступно обновление",closeSidebar:"Закрыть боковую панель"}},Ef={buttons:vf,tabs:kf,status:xf,messages:yf,navigation:wf,common:Cf,time:Sf,fileOperations:Pf,mainContent:Af,fileTree:jf,projectWizard:Tf,versionUpdate:If},Mf="Настройки",zf={account:"Аккаунт",permissions:"Разрешения",mcpServers:"MCP серверы",appearance:"Внешний вид"},Df={title:"Аккаунт",language:"Язык",languageLabel:"Язык интерфейса",languageDescription:"Выберите предпочитаемый язык для интерфейса",username:"Имя пользователя",email:"Email",profile:"Профиль",changePassword:"Изменить пароль"},Nf={title:"MCP серверы",addServer:"Добавить сервер",editServer:"Редактировать сервер",deleteServer:"Удалить сервер",serverName:"Имя сервера",serverType:"Тип сервера",config:"Конфигурация",testConnection:"Проверить подключение",status:"Статус",connected:"Подключен",disconnected:"Отключен",scope:{label:"Область",user:"Пользователь",project:"Проект"}},$f={title:"Внешний вид",theme:"Тема",codeEditor:"Редактор кода",editorTheme:"Тема редактора",wordWrap:"Перенос слов",showMinimap:"Показать миникарту",lineNumbers:"Номера строк",fontSize:"Размер шрифта"},Rf={saveChanges:"Сохранить изменения",resetToDefaults:"Сбросить к значениям по умолчанию",cancelChanges:"Отменить изменения"},Lf={title:"Быстрые настройки",sections:{appearance:"Внешний вид",toolDisplay:"Отображение инструментов",inputSettings:"Настройки ввода"},darkMode:"Темная тема",showRawParameters:"Показывать сырые параметры",showThinking:"Показывать размышления",sendByCtrlEnter:"Отправка по Ctrl+Enter",sendByCtrlEnterDescription:"Когда включено, нажатие Ctrl+Enter будет отправлять сообщение вместо просто Enter. Это полезно для пользователей IME, чтобы избежать случайной отправки.",dragHandle:{dragging:"Перетаскивание ручки",closePanel:"Закрыть панель настроек",openPanel:"Открыть панель настроек",draggingStatus:"Перетаскивание...",toggleAndMove:"Нажмите для переключения, перетащите для перемещения"}},Ff={title:"Горячие клавиши терминала",sectionKeys:"Клавиши",sectionNavigation:"Навигация",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"Стрелка вверх",arrowDown:"Стрелка вниз",scrollDown:"Прокрутка вниз",handle:{closePanel:"Закрыть панель горячих клавиш",openPanel:"Открыть панель горячих клавиш"}},Bf={label:"Настройки",agents:"Агенты",appearance:"Внешний вид",git:"Git",apiTokens:"API и токены",tasks:"Задачи",notifications:"Уведомления",plugins:"Плагины",about:"О программе"},Gf={title:"Уведомления",description:"Управляйте тем, какие события уведомлений вы получаете.",webPush:{title:"Web Push уведомления",enable:"Включить Push уведомления",disable:"Отключить Push уведомления",enabled:"Push уведомления включены",loading:"Обновление...",unsupported:"Push уведомления не поддерживаются в этом браузере.",denied:"Push уведомления заблокированы. Разрешите их в настройках браузера."},sound:{title:"Звук",description:"Воспроизводить короткий сигнал при завершении запуска чата.",enabled:"Включено",test:"Проверить звук"},events:{title:"Типы событий",actionRequired:"Требуется действие",stop:"Запуск остановлен",error:"Запуск завершился с ошибкой"}},Hf={darkMode:{label:"Темная тема",description:"Переключение между светлой и темной темами"},projectSorting:{label:"Сортировка проектов",description:"Как проекты упорядочены на боковой панели",alphabetical:"По алфавиту",recentActivity:"По недавней активности"},codeEditor:{title:"Редактор кода",theme:{label:"Тема редактора",description:"Тема по умолчанию для редактора кода"},wordWrap:{label:"Перенос слов",description:"Включить перенос слов по умолчанию в редакторе"},showMinimap:{label:"Показать миникарту",description:"Отображать миникарту для упрощения навигации в представлении различий"},lineNumbers:{label:"Показать номера строк",description:"Отображать номера строк в редакторе"},fontSize:{label:"Размер шрифта",description:"Размер шрифта редактора в пикселях"}}},Of={title:{add:"Добавить MCP сервер",edit:"Редактировать MCP сервер"},importMode:{form:"Ввод формы",json:"Импорт JSON"},scope:{label:"Область",userGlobal:"Пользователь (глобально)",projectLocal:"Проект (локально)",userDescription:"Область пользователя: доступно во всех проектах на вашей машине",projectDescription:"Локальная область: доступно только в выбранном проекте",cannotChange:"Область не может быть изменена при редактировании существующего сервера"},fields:{serverName:"Имя сервера",transportType:"Тип транспорта",command:"Команда",arguments:"Аргументы (по одному на строку)",jsonConfig:"JSON конфигурация",url:"URL",envVars:"Переменные окружения (КЛЮЧ=значение, по одной на строку)",headers:"Заголовки (КЛЮЧ=значение, по одному на строку)",selectProject:"Выберите проект..."},placeholders:{serverName:"мой-сервер"},validation:{missingType:"Отсутствует обязательное поле: type",stdioRequiresCommand:"тип stdio требует поле command",httpRequiresUrl:"тип {{type}} требует поле url",invalidJson:"Неверный формат JSON",jsonHelp:"Вставьте конфигурацию вашего MCP сервера в формате JSON. Примеры форматов:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"Детали конфигурации (из {{configFile}})",projectPath:"Путь: {{path}}",actions:{cancel:"Отмена",saving:"Сохранение...",addServer:"Добавить сервер",updateServer:"Обновить сервер"}},Uf={success:"Настройки успешно сохранены!",error:"Не удалось сохранить настройки",saving:"Сохранение..."},qf={save:"Сохранить настройки",cancel:"Отмена"},Wf={title:"Конфигурация Git",description:"Настройте вашу git идентичность для коммитов. Эти настройки будут применены глобально через git config --global",name:{label:"Имя Git",help:"Ваше имя для git коммитов"},email:{label:"Email Git",help:"Ваш email для git коммитов"},actions:{save:"Сохранить конфигурацию",saving:"Сохранение..."},status:{success:"Успешно сохранено"}},Vf={title:"API ключи",description:"Генерируйте API ключи для доступа к внешнему API из других приложений.",newKey:{alertTitle:"⚠️ Сохраните ваш API ключ",alertMessage:"Это единственный раз, когда вы увидите этот ключ. Сохраните его в безопасном месте.",iveSavedIt:"Я сохранил его"},form:{placeholder:"Имя API ключа (например, Продакшн сервер)",createButton:"Создать",cancelButton:"Отмена"},newButton:"Новый API ключ",empty:"API ключи еще не созданы.",list:{created:"Создан:",lastUsed:"Последнее использование:"},confirmDelete:"Вы уверены, что хотите удалить этот API ключ?",status:{active:"Активен",inactive:"Неактивен"},github:{title:"GitHub токены",description:"Добавьте персональные токены доступа GitHub для клонирования приватных репозиториев через внешний API.",descriptionAlt:"Добавьте персональные токены доступа GitHub для клонирования приватных репозиториев. Вы также можете передавать токены напрямую в API запросах без их сохранения.",addButton:"Добавить токен",form:{namePlaceholder:"Имя токена (например, Личные репозитории)",tokenPlaceholder:"Персональный токен доступа GitHub (ghp_...)",descriptionPlaceholder:"Описание (необязательно)",addButton:"Добавить токен",cancelButton:"Отмена",howToCreate:"Как создать персональный токен доступа GitHub →"},empty:"GitHub токены еще не добавлены.",added:"Добавлен:",confirmDelete:"Вы уверены, что хотите удалить этот GitHub токен?"},apiDocsLink:"Документация API",documentation:{title:"Документация внешнего API",description:"Узнайте, как использовать внешний API для запуска сеансов Claude/Cursor из ваших приложений.",viewLink:"Просмотр документации API →"},loading:"Загрузка...",version:{updateAvailable:"Доступно обновление: v{{version}}"}},Kf={checking:"Проверка установки TaskMaster...",notInstalled:{title:"TaskMaster AI CLI не установлен",description:"TaskMaster CLI требуется для использования функций управления задачами. Установите его для начала работы:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"Посмотреть на GitHub",afterInstallation:"После установки:",steps:{restart:"Перезапустите это приложение",autoAvailable:"Функции TaskMaster станут автоматически доступны",initCommand:"Используйте task-master init в каталоге вашего проекта"}},settings:{enableLabel:"Включить интеграцию TaskMaster",enableDescription:"Показывать задачи TaskMaster, баннеры и индикаторы боковой панели в интерфейсе"}},_f={authStatus:{checking:"Проверка...",connected:"Подключен",notConnected:"Не подключен",disconnected:"Отключен",checkingAuth:"Проверка статуса аутентификации...",loggedInAs:"Вошли как {{email}}",authenticatedUser:"аутентифицированный пользователь"},account:{claude:{description:"AI-ассистент Anthropic Claude"},cursor:{description:"Редактор кода с AI Cursor"},codex:{description:"AI-ассистент OpenAI Codex"}},connectionStatus:"Статус подключения",login:{title:"Вход",reAuthenticate:"Повторная аутентификация",description:"Войдите в ваш аккаунт {{agent}} для включения AI функций",reAuthDescription:"Войдите с другим аккаунтом или обновите учетные данные",button:"Войти",reLoginButton:"Войти снова"},error:"Ошибка: {{error}}"},Yf={title:"Настройки разрешений",skipPermissions:{label:"Пропускать запросы разрешений (используйте с осторожностью)",claudeDescription:"Эквивалентно флагу --dangerously-skip-permissions",cursorDescription:"Эквивалентно флагу -f в Cursor CLI"},allowedTools:{title:"Разрешенные инструменты",description:"Инструменты, которые автоматически разрешены без запроса разрешения",placeholder:'например, "Bash(git log:*)" или "Write"',quickAdd:"Быстро добавить общие инструменты:",empty:"Разрешенные инструменты не настроены"},blockedTools:{title:"Заблокированные инструменты",description:"Инструменты, которые автоматически блокируются без запроса разрешения",placeholder:'например, "Bash(rm:*)"',empty:"Заблокированные инструменты не настроены"},allowedCommands:{title:"Разрешенные команды оболочки",description:"Команды оболочки, которые автоматически разрешены без запроса",placeholder:'например, "Shell(ls)" или "Shell(git status)"',quickAdd:"Быстро добавить общие команды:",empty:"Разрешенные команды не настроены"},blockedCommands:{title:"Заблокированные команды оболочки",description:"Команды оболочки, которые автоматически блокируются",placeholder:'например, "Shell(rm -rf)" или "Shell(sudo)"',empty:"Заблокированные команды не настроены"},toolExamples:{title:"Примеры шаблонов инструментов:",bashGitLog:"- Разрешить все команды git log",bashGitDiff:"- Разрешить все команды git diff",write:"- Разрешить все использование инструмента Write",bashRm:"- Заблокировать все команды rm (опасно)"},shellExamples:{title:"Примеры команд оболочки:",ls:"- Разрешить команду ls",gitStatus:"- Разрешить git status",npmInstall:"- Разрешить npm install",rmRf:"- Заблокировать рекурсивное удаление"},codex:{permissionMode:"Режим разрешений",description:"Управляет тем, как Codex обрабатывает изменения файлов и выполнение команд",modes:{default:{title:"По умолчанию",description:"Только доверенные команды (ls, cat, grep, git status и т.д.) выполняются автоматически. Другие команды пропускаются. Может записывать в рабочее пространство."},acceptEdits:{title:"Принимать правки",description:"Все команды выполняются автоматически в рабочем пространстве. Полный автоматический режим с изолированным выполнением."},bypassPermissions:{title:"Обход разрешений",description:"Полный системный доступ без ограничений. Все команды выполняются автоматически с полным доступом к диску и сети. Используйте с осторожностью."}},technicalDetails:"Технические детали",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted. Доверенные команды: cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find (без -exec) и т.д.",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never. Все команды автоматически выполняются в каталоге проекта.",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never. Полный системный доступ, используйте только в доверенных средах.",overrideNote:"Вы можете переопределить это для каждого сеанса, используя кнопку режима в интерфейсе чата."}},actions:{add:"Добавить"}},Jf={title:"MCP серверы",description:{claude:"Серверы Model Context Protocol предоставляют дополнительные инструменты и источники данных для Claude",cursor:"Серверы Model Context Protocol предоставляют дополнительные инструменты и источники данных для Cursor",codex:"Серверы Model Context Protocol предоставляют дополнительные инструменты и источники данных для Codex"},addButton:"Добавить MCP сервер",empty:"MCP серверы не настроены",serverType:"Тип",scope:{local:"локальный",user:"пользователь"},config:{command:"Команда",url:"URL",args:"Аргументы",environment:"Окружение"},tools:{title:"Инструменты",count:"({{count}}):",more:"+{{count}} еще"},actions:{edit:"Редактировать сервер",delete:"Удалить сервер"},help:{title:"О Codex MCP",description:"Codex поддерживает MCP серверы на основе stdio. Вы можете добавлять серверы, которые расширяют возможности Codex дополнительными инструментами и ресурсами."}},Qf={title:"Плагины",description:"Расширяйте интерфейс с помощью кастомных плагинов. Установите из git или добавьте папку в ~/.claude-code-ui/plugins/",installPlaceholder:"https://github.com/user/my-plugin",installButton:"Установить",installing:"Установка…",securityWarning:"Устанавливайте только те плагины, исходный код которых вы проверили или от авторов, которым вы доверяете.",scanningPlugins:"Сканирование плагинов…",noPluginsInstalled:"Плагины не установлены",pullLatest:"Получить обновления из git",noGitRemote:"Нет удаленного git-репозитория — обновление недоступно",uninstallPlugin:"Удалить плагин",confirmUninstall:"Нажмите еще раз для подтверждения",confirmUninstallMessage:"Удалить {{name}}? Это действие нельзя отменить.",cancel:"Отмена",remove:"Удалить",updateFailed:"Ошибка обновления",installFailed:"Ошибка установки",uninstallFailed:"Ошибка удаления",toggleFailed:"Ошибка переключения",buildYourOwn:"Создайте свой плагин",starter:"Шаблон",docs:"Документация",starterPlugin:{name:"Статистика проекта",badge:"шаблон",description:"Количество файлов, строк кода, разбивка по типам файлов и недавняя активность в вашем проекте.",install:"Установить"},morePlugins:"Ещё",enable:"Включить",disable:"Выключить",installAriaLabel:"URL git-репозитория плагина",tab:"вкладка",runningStatus:"запущен"},Zf={title:Mf,tabs:zf,account:Df,mcp:Nf,appearance:$f,actions:Rf,quickSettings:Lf,terminalShortcuts:Ff,mainTabs:Bf,notifications:Gf,appearanceSettings:Hf,mcpForm:Of,saveStatus:Uf,footerActions:qf,git:Wf,apiKeys:Vf,tasks:Kf,agents:_f,permissions:Yf,mcpServers:Jf,pluginSettings:Qf},Xf={title:"Добро пожаловать",description:"Войдите в свой аккаунт WindCli",username:"Имя пользователя",password:"Пароль",submit:"Войти",loading:"Вход...",errors:{invalidCredentials:"Неверное имя пользователя или пароль",requiredFields:"Пожалуйста, заполните все поля",networkError:"Ошибка сети. Попробуйте снова."},placeholders:{username:"Введите имя пользователя",password:"Введите пароль"}},eb={title:"Создать аккаунт",username:"Имя пользователя",password:"Пароль",confirmPassword:"Подтвердите пароль",submit:"Создать аккаунт",loading:"Создание аккаунта...",errors:{passwordMismatch:"Пароли не совпадают",usernameTaken:"Имя пользователя уже занято",weakPassword:"Пароль слишком слабый"}},tb={title:"Выйти",confirm:"Вы уверены, что хотите выйти?",button:"Выйти"},nb={login:Xf,register:eb,logout:tb},sb={title:"Проекты",newProject:"Новый проект",deleteProject:"Убрать проект",renameProject:"Переименовать проект",noProjects:"Проекты не найдены",loadingProjects:"Загрузка проектов...",searchPlaceholder:"Поиск проектов...",projectNamePlaceholder:"Имя проекта",starred:"Избранное",all:"Все",untitledSession:"Безымянный сеанс",newSession:"Новый сеанс",codexSession:"Сеанс Codex",fetchingProjects:"Получение ваших проектов и сеансов Claude",projects:"проекты",noMatchingProjects:"Нет подходящих проектов",tryDifferentSearch:"Попробуйте изменить поисковый запрос",runClaudeCli:"Запустите Claude CLI в каталоге проекта для начала работы"},ib={title:"WindCli",subtitle:"Интерфейс AI помощника для программирования"},ab={title:"Сеансы",newSession:"Новый сеанс",deleteSession:"Удалить сеанс",renameSession:"Переименовать сеанс",noSessions:"Сеансов пока нет",loadingSessions:"Загрузка сеансов...",unnamed:"Без имени",loading:"Загрузка...",showMore:"Показать больше сеансов"},ob={viewEnvironments:"Просмотр окружений",hideSidebar:"Скрыть боковую панель",createProject:"Создать новый проект",refresh:"Обновить проекты и сеансы (Ctrl+R)",renameProject:"Переименовать проект (F2)",deleteProject:"Убрать проект из боковой панели (Delete)",addToFavorites:"Добавить в избранное",removeFromFavorites:"Удалить из избранного",editSessionName:"Вручную редактировать имя сеанса",deleteSession:"Удалить этот сеанс навсегда",activeSessionIndicator:"Недавно активный сеанс (последние 10 минут)",save:"Сохранить",cancel:"Отмена",clearSearch:"Очистить поиск",openCommandPalette:"Открыть палитру команд",attentionRequiredIndicator:"Сессия требует внимания"},rb={chat:"Чат",files:"Файлы",git:"Git",terminal:"Терминал",tasks:"Задачи"},lb={refresh:"Обновить",settings:"Настройки",collapseAll:"Свернуть все",expandAll:"Развернуть все",cancel:"Отмена",save:"Сохранить",delete:"Удалить",rename:"Переименовать",joinCommunity:"Присоединиться к сообществу",reportIssue:"Сообщить о проблеме",starOnGithub:"Звезда на GitHub"},cb={openSource:"Открытый исходный код"},db={active:"Активен",inactive:"Неактивен",thinking:"Думает...",error:"Ошибка",aborted:"Прервано",unknown:"Неизвестно"},ub={justNow:"Только что",oneMinuteAgo:"1 мин. назад",minutesAgo:"{{count}} мин. назад",oneHourAgo:"1 час назад",hoursAgo:"{{count}} ч. назад",oneDayAgo:"1 день назад",daysAgo:"{{count}} дн. назад"},pb={deleteConfirm:"Вы уверены, что хотите это удалить?",renameSuccess:"Успешно переименовано",deleteSuccess:"Успешно удалено",errorOccurred:"Произошла ошибка",deleteSessionConfirm:"Вы уверены, что хотите удалить этот сеанс? Это действие нельзя отменить.",deleteProjectConfirm:"Убрать этот проект из боковой панели? Файлы проекта, воспоминания и данные сеансов не будут удалены.",enterProjectPath:"Пожалуйста, введите путь к проекту",deleteSessionFailed:"Не удалось удалить сеанс. Попробуйте снова.",deleteSessionError:"Ошибка при удалении сеанса. Попробуйте снова.",renameSessionFailed:"Не удалось переименовать сеанс. Попробуйте снова.",renameSessionError:"Ошибка при переименовании сеанса. Попробуйте снова.",deleteProjectFailed:"Не удалось убрать проект. Попробуйте снова.",deleteProjectError:"Ошибка при удалении проекта из списка. Попробуйте снова.",createProjectFailed:"Не удалось создать проект. Попробуйте снова.",createProjectError:"Ошибка при создании проекта. Попробуйте снова.",updateProjectError:"Ошибка при обновлении проекта. Попробуйте снова.",refreshError:"Не удалось обновить. Попробуйте снова.",restoreProjectFailed:"Не удалось восстановить проект. Попробуйте снова.",restoreProjectError:"Ошибка при восстановлении проекта. Попробуйте снова.",restoreSessionFailed:"Не удалось восстановить сеанс. Попробуйте снова.",restoreSessionError:"Ошибка при восстановлении сеанса. Попробуйте снова."},mb={updateAvailable:"Доступно обновление",restartRequired:"Обновление установлено — перезапустите сервер для применения"},gb={modeProjects:"Проекты",modeConversations:"Разговоры",conversationsPlaceholder:"Поиск в разговорах...",searching:"Поиск...",sessionTitles:"Названия сеансов",conversationContents:"Содержимое разговоров",noResults:"Результаты не найдены",tryDifferentQuery:"Попробуйте другой поисковый запрос",matches_one:"{{count}} совпадение",matches_few:"{{count}} совпадения",matches_many:"{{count}} совпадений",matches_other:"{{count}} совпадений",projectsScanned_one:"{{count}} проект просканирован",projectsScanned_few:"{{count}} проекта просканировано",projectsScanned_many:"{{count}} проектов просканировано",projectsScanned_other:"{{count}} проектов просканировано"},hb={deleteProject:"Убрать проект",deleteSession:"Удалить сеанс",confirmDelete:"Что вы хотите сделать с",sessionCount_one:"Этот проект содержит {{count}} разговор.",sessionCount_few:"Этот проект содержит {{count}} разговора.",sessionCount_many:"Этот проект содержит {{count}} разговоров.",sessionCount_other:"Этот проект содержит {{count}} разговоров.",removeFromSidebar:"Убрать только из боковой панели",deleteAllData:"Удалить все данные навсегда",allConversationsDeleted:"Проект будет убран из боковой панели. Ваши файлы, воспоминания и данные сеансов сохранятся.",cannotUndo:"Вы сможете добавить проект позже."},fb={projects:sb,app:ib,sessions:ab,tooltips:ob,navigation:rb,actions:lb,branding:cb,status:db,time:ub,messages:pb,version:mb,search:gb,deleteConfirmation:hb},bb={copy:"Копировать",copied:"Скопировано",copyCode:"Копировать код"},vb={copy:"Копировать сообщение",copied:"Сообщение скопировано",selectFormat:"Выбрать формат копирования",copyAsMarkdown:"Копировать как Markdown",copyAsText:"Копировать как текст"},kb={user:"П",error:"Ошибка",tool:"Инструмент",claude:"Claude",cursor:"Cursor",codex:"Codex"},xb={settings:"Настройки инструмента",error:"Ошибка инструмента",result:"Результат инструмента",viewParams:"Просмотр входных параметров",viewRawParams:"Просмотр сырых параметров",viewDiff:"Просмотр различий редактирования для",creatingFile:"Создание нового файла:",updatingTodo:"Обновление списка задач",read:"Чтение",readFile:"Чтение файла",updateTodo:"Обновить список задач",readTodo:"Прочитать список задач",searchResults:"результаты"},yb={found:"Найдено {{count}} {{type}}",file:"файл",files:"файлов",pattern:"шаблон:",in:"в:"},wb={updated:"Файл успешно обновлен",created:"Файл успешно создан",written:"Файл успешно записан",diff:"Различия",newFile:"Новый файл",viewContent:"Просмотр содержимого файла",viewFullOutput:"Просмотр полного вывода ({{count}} символов)",contentDisplayed:"Содержимое файла отображено в представлении различий выше"},Cb={title:"Интерактивный запрос",waiting:"Ожидание вашего ответа в CLI",instruction:"Пожалуйста, выберите опцию в терминале, где запущен Claude.",selectedOption:"✓ Claude выбрал опцию {{number}}",instructionDetail:"В CLI вы бы выбрали эту опцию интерактивно, используя клавиши со стрелками или введя номер."},Sb={title:"Думаю...",emoji:"💭 Думаю..."},Pb={response:"JSON ответ"},Ab={grant:"Предоставить разрешение для {{tool}}",added:"Разрешение добавлено",addTo:"Добавляет {{entry}} в разрешенные инструменты.",retry:"Разрешение сохранено. Повторите запрос для использования инструмента.",error:"Не удалось обновить разрешения. Попробуйте снова.",openSettings:"Открыть настройки"},jb={updated:"Список задач успешно обновлен",current:"Текущий список задач"},Tb={viewPlan:"📋 Просмотр плана реализации",title:"План реализации"},Ib={resetAt:"Достигнут лимит использования Claude. Ваш лимит будет сброшен в **{{time}} {{timezone}}** - {{date}}"},Eb={permissionMode:"Режим разрешений",modes:{default:"Режим по умолчанию",auto:"Auto Mode",acceptEdits:"Принимать правки",bypassPermissions:"Обход разрешений",plan:"Режим планирования"},descriptions:{default:"Только доверенные команды (ls, cat, grep, git status и т.д.) выполняются автоматически. Другие команды пропускаются. Может записывать в рабочее пространство.",auto:"A model classifier decides per tool call whether to approve or deny. Hands-off, but safer than Bypass — denials still happen.",acceptEdits:"Все команды выполняются автоматически в рабочем пространстве. Полный автоматический режим с изолированным выполнением.",bypassPermissions:"Полный системный доступ без ограничений. Все команды выполняются автоматически с полным доступом к диску и сети. Используйте с осторожностью.",plan:"Режим планирования - команды не выполняются"},technicalDetails:"Технические детали"},Mb={placeholder:"Введите / для команд, @ для файлов, или спросите {{provider}} что угодно...",placeholderDefault:"Введите ваше сообщение...",disabled:"Ввод отключен",attachFiles:"Прикрепить файлы",attachImages:"Прикрепить изображения",send:"Отправить",stop:"Остановить",hintText:{ctrlEnter:"Ctrl+Enter для отправки • Shift+Enter для новой строки • Tab для смены режима • / для команд",enter:"Enter для отправки • Shift+Enter для новой строки • Tab для смены режима • / для команд"},clickToChangeMode:"Нажмите для смены режима разрешений (или нажмите Tab в поле ввода)",showAllCommands:"Показать все команды",clearInput:"Очистить ввод",scrollToBottom:"Прокрутить вниз"},zb={title:"Выберите вашего AI-ассистента",description:"Выберите провайдера для начала нового разговора",selectModel:"Выбрать модель",providerInfo:{anthropic:"от Anthropic",openai:"от OpenAI",cursorEditor:"AI редактор кода",google:"от Google"},readyPrompt:{claude:"Готов использовать Claude с {{model}}. Начните вводить сообщение ниже.",cursor:"Готов использовать Cursor с {{model}}. Начните вводить сообщение ниже.",codex:"Готов использовать Codex с {{model}}. Начните вводить сообщение ниже.",default:"Выберите провайдера выше для начала"},pressToSearch:"Нажмите <kbd>{{shortcut}}</kbd>, чтобы искать сессии, файлы и коммиты"},Db={continue:{title:"Продолжить разговор",description:"Задавайте вопросы о вашем коде, запрашивайте изменения или получайте помощь с задачами разработки"},loading:{olderMessages:"Загрузка старых сообщений...",sessionMessages:"Загрузка сообщений сеанса..."},messages:{showingOf:"Показано {{shown}} из {{total}} сообщений",scrollToLoad:"Прокрутите вверх для загрузки еще",showingLast:"Показаны последние {{count}} сообщений (всего {{total}})",loadEarlier:"Загрузить более ранние сообщения",loadAll:"Загрузить все сообщения",loadingAll:"Загрузка всех сообщений...",allLoaded:"Все сообщения загружены",perfWarning:'Все сообщения загружены — прокрутка может быть медленнее. Нажмите "Прокрутить вниз" для восстановления производительности.'}},Nb={selectProject:{title:"Выберите проект",description:"Выберите проект для открытия интерактивной оболочки в этом каталоге"},status:{newSession:"Новый сеанс",initializing:"Инициализация...",restarting:"Перезапуск..."},actions:{disconnect:"Отключиться",disconnectTitle:"Отключиться от оболочки",restart:"Перезапустить",restartTitle:"Перезапустить оболочку (сначала отключитесь)",connect:"Продолжить в оболочке",connectTitle:"Подключиться к оболочке"},loading:"Загрузка терминала...",connecting:"Подключение к оболочке...",startSession:"Начать новый сеанс Claude",resumeSession:"Возобновить сеанс: {{displayName}}...",runCommand:"Выполнить {{command}} в {{projectName}}",startCli:"Запуск Claude CLI в {{projectName}}",defaultCommand:"команда"},$b={actions:{thinking:"Думает",processing:"Обрабатывает",analyzing:"Анализирует",working:"Работает",computing:"Вычисляет",reasoning:"Рассуждает"},state:{live:"В сети",paused:"Приостановлен"},elapsed:{seconds:"{{count}}с",minutesSeconds:"{{minutes}}м {{seconds}}с",label:"Прошло {{time}}",startingNow:"Начинается сейчас"},controls:{stopGeneration:"Остановить генерацию",pressEscToStop:"Нажмите Esc в любое время для остановки"},providers:{assistant:"Ассистент"}},Rb={startChatWithProvider:"Выберите проект для начала чата с {{provider}}"},Lb={nextTaskPrompt:"Начать следующую задачу"},Fb={codeBlock:bb,copyMessage:vb,messageTypes:kb,tools:xb,search:yb,fileOperations:wb,interactive:Cb,thinking:Sb,json:Pb,permissions:Ab,todo:jb,plan:Tb,usageLimit:Ib,codex:Eb,input:Mb,providerSelection:zb,session:Db,shell:Nb,claudeStatus:$b,projectSelection:Rb,tasks:Lb},Bb={changes:"изменения",previousChange:"Предыдущее изменение",nextChange:"Следующее изменение",hideDiff:"Скрыть подсветку различий",showDiff:"Показать подсветку различий",settings:"Настройки редактора",collapse:"Свернуть редактор",expand:"Развернуть редактор на всю ширину"},Gb="Загрузка {{fileName}}...",Hb={showingChanges:"Показаны изменения"},Ob={copyPath:"Копировать путь к файлу",pathCopied:"Путь к файлу скопирован",download:"Скачать файл",save:"Сохранить",saving:"Сохранение...",saved:"Сохранено!",exitFullscreen:"Выйти из полноэкранного режима",fullscreen:"Полноэкранный режим",close:"Закрыть",previewMarkdown:"Предпросмотр markdown",editMarkdown:"Редактировать markdown"},Ub={lines:"Строк:",characters:"Символов:",shortcuts:"Нажмите Ctrl+S для сохранения • Esc для закрытия"},qb={title:"Бинарный файл",message:'Файл "{{fileName}}" не может быть отображен в текстовом редакторе, так как это бинарный файл.'},Wb={toolbar:Bb,loading:Gb,header:Hb,actions:Ob,footer:Ub,binaryFile:qb},Vb={title:"TaskMaster AI не настроен",description:"TaskMaster помогает разбивать сложные проекты на управляемые задачи с помощью AI",whatIsTitle:"🎯 Что такое TaskMaster?",features:{aiPowered:"Управление задачами с AI: разбивайте сложные проекты на управляемые подзадачи",prdTemplates:"Шаблоны PRD: генерируйте задачи из документов требований к продукту",dependencyTracking:"Отслеживание зависимостей: понимайте связи задач и порядок выполнения",progressVisualization:"Визуализация прогресса: канбан-доски и детальная аналитика задач",cliIntegration:"Интеграция с CLI: используйте команды taskmaster для продвинутых рабочих процессов"},initializeButton:"Инициализировать TaskMaster AI"},Kb={title:"Начало работы с TaskMaster",subtitle:"TaskMaster инициализирован! Вот что делать дальше:",steps:{createPRD:{title:"Создайте документ требований к продукту (PRD)",description:"Обсудите идею вашего проекта и создайте PRD, описывающий то, что вы хотите построить.",addButton:"Добавить PRD",existingPRDs:"Существующие PRD:"},generateTasks:{title:"Генерация задач из PRD",description:"Когда у вас есть PRD, попросите вашего AI-ассистента разобрать его, и TaskMaster автоматически разобьет его на управляемые задачи с деталями реализации."},analyzeTasks:{title:"Анализ и расширение задач",description:"Попросите вашего AI-ассистента проанализировать сложность задач и расширить их в детальные подзадачи для упрощения реализации."},startBuilding:{title:"Начните разработку",description:"Попросите вашего AI-ассистента начать работу над задачами, обновлять их статус и добавлять новые задачи по мере развития вашего проекта."}},tip:"💡 Совет: начните с PRD, чтобы получить максимум от AI-генерации задач TaskMaster"},_b={title:"Настройка TaskMaster",subtitle:"Интерактивный CLI для {{projectName}}",willStart:"Инициализация TaskMaster начнется автоматически",completed:"Настройка TaskMaster завершена! Теперь вы можете закрыть это окно.",closeButton:"Закрыть",closeContinueButton:"Закрыть и продолжить"},Yb={title:"Начало работы с TaskMaster",subtitle:"Ваш гид по продуктивному управлению задачами",examples:{parsePRD:`💬 Пример:
|
|
21
21
|
"Я только что инициализировал новый проект с Claude Task Master. У меня есть PRD в .taskmaster/docs/prd.txt. Можете помочь мне разобрать его и настроить начальные задачи?"`,expandTask:`💬 Пример:
|
|
22
22
|
"Задача 5 кажется сложной. Можете разбить её на подзадачи?"`,addTask:`💬 Пример:
|
|
23
|
-
"Пожалуйста, добавьте новую задачу для реализации загрузки изображений профиля пользователя с использованием Cloudinary, изучите лучший подход."`},moreExamples:"Посмотреть больше примеров и шаблонов использования →",proTips:{title:"💡 Профессиональные советы",search:"Используйте строку поиска для быстрого поиска конкретных задач",views:"Переключайтесь между представлениями Канбан, Список и Сетка, используя переключатели представлений",filters:"Используйте фильтры для фокусировки на конкретных статусах или приоритетах задач",details:"Нажмите на любую задачу для просмотра детальной информации и управления подзадачами"},learnMore:{title:"📚 Узнать больше",description:"TaskMaster AI - это продвинутая система управления задачами, созданная для разработчиков. Получите документацию, примеры и внесите вклад в проект.",githubButton:"Посмотреть на GitHub"}},Bb={placeholder:"Поиск задач..."},Gb={button:"Фильтры",status:"Статус",priority:"Приоритет",sortBy:"Сортировать по",allStatuses:"Все статусы",allPriorities:"Все приоритеты",showing:"Показано {{filtered}} из {{total}} задач",clearFilters:"Очистить фильтры"},Hb={id:"ID",status:"Статус",priority:"Приоритет",idAsc:"ID (по возрастанию)",idDesc:"ID (по убыванию)",titleAsc:"Название (А-Я)",titleDesc:"Название (Я-А)",statusAsc:"Статус (сначала ожидающие)",statusDesc:"Статус (сначала выполненные)",priorityAsc:"Приоритет (сначала высокий)",priorityDesc:"Приоритет (сначала низкий)"},Ob={kanban:"Представление Канбан",list:"Представление списком",grid:"Представление сеткой"},Ub={pending:"📋 К выполнению",inProgress:"🚀 В процессе",done:"✅ Выполнено",blocked:"🚫 Заблокировано",deferred:"⏳ Отложено",cancelled:"❌ Отменено",noTasksYet:"Задач пока нет",tasksWillAppear:"Задачи появятся здесь",moveTasksHere:"Перемещайте задачи сюда при начале работы",completedTasksHere:"Завершенные задачи появляются здесь",statusTasksHere:"Задачи с этим статусом появятся здесь"},qb={help:"Руководство по началу работы с TaskMaster",prds:"PRD",addPRD:"Добавить PRD",addTask:"Добавить задачу",createNewPRD:"Создать новый PRD",prdsAvailable:"Доступно {{count}} PRD"},Wb={modified:"Изменено: {{date}}"},Vb={pending:"Ожидание","in-progress":"В процессе",done:"Выполнено",blocked:"Заблокировано",deferred:"Отложено",cancelled:"Отменено"},Kb={high:"Высокий",medium:"Средний",low:"Низкий"},_b={title:"Нет задач, соответствующих вашим фильтрам",description:"Попробуйте изменить критерии поиска или фильтрации."},Yb={notConfigured:$b,gettingStarted:Rb,setupModal:Lb,helpGuide:Fb,search:Bb,filters:Gb,sort:Hb,views:Ob,kanban:Ub,buttons:qb,prd:Wb,statuses:Vb,priorities:Kb,noMatchingTasks:_b},Jb={save:"Speichern",cancel:"Abbrechen",delete:"Löschen",create:"Erstellen",edit:"Bearbeiten",close:"Schließen",confirm:"Bestätigen",submit:"Absenden",retry:"Erneut versuchen",refresh:"Aktualisieren",search:"Suchen",clear:"Leeren",copy:"Kopieren",download:"Herunterladen",upload:"Hochladen",browse:"Durchsuchen"},Qb={chat:"Chat",shell:"Terminal",files:"Dateien",git:"Quellcodeverwaltung",tasks:"Aufgaben",browser:"Browser",computer:"Computer"},Zb={loading:"Lädt...",success:"Erfolgreich",error:"Fehler",failed:"Fehlgeschlagen",pending:"Ausstehend",completed:"Abgeschlossen",inProgress:"In Bearbeitung"},Xb={savedSuccessfully:"Erfolgreich gespeichert",deletedSuccessfully:"Erfolgreich gelöscht",updatedSuccessfully:"Erfolgreich aktualisiert",operationFailed:"Vorgang fehlgeschlagen",networkError:"Netzwerkfehler. Bitte überprüf deine Verbindung.",unauthorized:"Nicht autorisiert. Bitte meld dich an.",notFound:"Nicht gefunden",invalidInput:"Ungültige Eingabe",requiredField:"Dieses Feld ist erforderlich",unknownError:"Ein unbekannter Fehler ist aufgetreten"},ev={settings:"Einstellungen",home:"Startseite",back:"Zurück",next:"Weiter",previous:"Zurück",logout:"Abmelden"},tv={language:"Sprache",theme:"Design",darkMode:"Darkmode",lightMode:"Hellmodus",name:"Name",description:"Beschreibung",enabled:"Aktiviert",disabled:"Deaktiviert",optional:"Optional",version:"Version",select:"Auswählen",selectAll:"Alle auswählen",deselectAll:"Alle abwählen"},nv={justNow:"Gerade eben",minutesAgo:"vor {{count}} Min.",hoursAgo:"vor {{count}} Std.",daysAgo:"vor {{count}} Tagen",yesterday:"Gestern"},sv={newFile:"Neue Datei",newFolder:"Neuer Ordner",rename:"Umbenennen",move:"Verschieben",copyPath:"Pfad kopieren",openInEditor:"Im Editor öffnen"},iv={loading:"WindCli wird geladen",settingUpWorkspace:"Arbeitsbereich wird eingerichtet...",chooseProject:"Projekt auswählen",selectProjectDescription:"Wähl ein Projekt aus der Seitenleiste, um mit Claude zu programmieren. Jedes Projekt enthält deine Chat-Sitzungen und den Dateiverlauf.",tip:"Tipp",createProjectMobile:"Tipp oben auf die Menüschaltfläche, um auf Projekte zuzugreifen",createProjectDesktop:"Erstell ein neues Projekt, indem du auf das Ordnersymbol in der Seitenleiste klickst",newSession:"Neue Sitzung",untitledSession:"Unbenannte Sitzung",projectFiles:"Projektdateien"},av={loading:"Dateien werden geladen...",files:"Dateien",simpleView:"Einfache Ansicht",compactView:"Kompakte Ansicht",detailedView:"Detailansicht",searchPlaceholder:"Dateien und Ordner durchsuchen...",clearSearch:"Suche leeren",name:"Name",size:"Größe",modified:"Geändert",permissions:"Berechtigungen",noFilesFound:"Keine Dateien gefunden",checkProjectPath:"Überprüf, ob der Projektpfad zugänglich ist",noMatchesFound:"Keine Treffer gefunden",tryDifferentSearch:"Versuch einen anderen Suchbegriff oder leere die Suche",justNow:"gerade eben",minAgo:"vor {{count}} Min.",hoursAgo:"vor {{count}} Std.",daysAgo:"vor {{count}} Tagen",newFile:"Neue Datei (Cmd+N)",newFolder:"Neuer Ordner (Cmd+Shift+N)",refresh:"Aktualisieren",collapseAll:"Alle einklappen",context:{rename:"Umbenennen",delete:"Löschen",copyPath:"Pfad kopieren",download:"Herunterladen",newFile:"Neue Datei",newFolder:"Neuer Ordner",upload:"Dateien hochladen",refresh:"Aktualisieren",menuLabel:"Datei-Kontextmenü",loading:"Lädt..."}},ov={title:"Neues Projekt erstellen",steps:{type:"Typ",configure:"Konfigurieren",confirm:"Bestätigen"},step1:{question:"Hast du bereits einen Arbeitsbereich, oder möchtest du einen neuen erstellen?",existing:{title:"Vorhandener Arbeitsbereich",description:"Ich habe bereits einen Arbeitsbereich auf meinem Server und möchte ihn nur zur Projektliste hinzufügen"},new:{title:"Neuer Arbeitsbereich",description:"Einen neuen Arbeitsbereich erstellen, optional aus einem GitHub-Repository klonen"}},step2:{existingPath:"Arbeitsbereichspfad",newPath:"Arbeitsbereichspfad",existingPlaceholder:"/Pfad/zum/vorhandenen/Arbeitsbereich",newPlaceholder:"/Pfad/zum/neuen/Arbeitsbereich",existingHelp:"Vollständiger Pfad zu deinem vorhandenen Arbeitsbereichsverzeichnis",newHelp:"Vollständiger Pfad zu deinem Arbeitsbereichsverzeichnis",githubUrl:"GitHub-URL (Optional)",githubPlaceholder:"https://github.com/benutzername/repository",githubHelp:"Optional: GitHub-URL angeben, um ein Repository zu klonen",githubAuth:"GitHub-Authentifizierung (Optional)",githubAuthHelp:"Nur für private Repositories erforderlich. Öffentliche Repos können ohne Authentifizierung geklont werden.",loadingTokens:"Gespeicherte Token werden geladen...",storedToken:"Gespeicherter Token",newToken:"Neuer Token",nonePublic:"Keiner (Öffentlich)",selectToken:"Token auswählen",selectTokenPlaceholder:"-- Token auswählen --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"Dieser Token wird nur für diesen Vorgang verwendet",publicRepoInfo:"Öffentliche Repositories benötigen keine Authentifizierung. Du kannst das Token beim Klonen eines öffentlichen Repos weglassen.",noTokensHelp:"Keine gespeicherten Token verfügbar. Du kannst Token unter Einstellungen → API-Schlüssel für einfachere Wiederverwendung hinzufügen.",optionalTokenPublic:"GitHub-Token (Optional für öffentliche Repos)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (leer lassen für öffentliche Repos)"},step3:{reviewConfig:"Konfiguration überprüfen",existingWorkspace:"Vorhandener Arbeitsbereich",newWorkspace:"Neuer Arbeitsbereich",path:"Pfad:",cloneFrom:"Klonen von:",authentication:"Authentifizierung:",usingStoredToken:"Gespeicherter Token wird verwendet:",usingProvidedToken:"Angegebener Token wird verwendet",noAuthentication:"Keine Authentifizierung",sshKey:"SSH-Schlüssel",existingInfo:"Der Arbeitsbereich wird zur Projektliste hinzugefügt und steht für Claude/Cursor-Sitzungen zur Verfügung.",newWithClone:"Das Repository wird aus diesem Ordner geklont.",newEmpty:"Der Arbeitsbereich wird zur Projektliste hinzugefügt und steht für Claude/Cursor-Sitzungen zur Verfügung.",cloningRepository:"Repository wird geklont..."},buttons:{cancel:"Abbrechen",back:"Zurück",next:"Weiter",createProject:"Projekt erstellen",creating:"Wird erstellt...",cloning:"Wird geklont..."},errors:{selectType:"Bitte wähl aus, ob du einen vorhandenen Arbeitsbereich hast oder einen neuen erstellen möchtest",providePath:"Bitte gib einen Arbeitsbereichspfad an",failedToCreate:"Arbeitsbereich konnte nicht erstellt werden",failedToCreateFolder:"Ordner konnte nicht erstellt werden"}},rv={title:"Update verfügbar",newVersionReady:"Eine neue Version ist verfügbar",currentVersion:"Aktuelle Version",latestVersion:"Neueste Version",whatsNew:"Neuigkeiten:",viewFullRelease:"Vollständige Version anzeigen",updateProgress:"Update-Fortschritt:",manualUpgrade:"Manuelles Upgrade:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:'Oder klick auf "Jetzt aktualisieren", um das Update automatisch durchzuführen.',updateCompleted:"Update erfolgreich abgeschlossen!",restartServer:"Bitte starte den Server neu, um die Änderungen anzuwenden.",updateFailed:"Update fehlgeschlagen",buttons:{close:"Schließen",later:"Später",copyCommand:"Befehl kopieren",updateNow:"Jetzt aktualisieren",updating:"Wird aktualisiert..."},ariaLabels:{closeModal:"Versions-Update-Modal schließen",showSidebar:"Seitenleiste anzeigen",settings:"Einstellungen",updateAvailable:"Update verfügbar",closeSidebar:"Seitenleiste schließen"}},lv={buttons:Jb,tabs:Qb,status:Zb,messages:Xb,navigation:ev,common:tv,time:nv,fileOperations:sv,mainContent:iv,fileTree:av,projectWizard:ov,versionUpdate:rv},cv="Einstellungen",dv={account:"Konto",permissions:"Berechtigungen",mcpServers:"MCP-Server",appearance:"Darstellung"},uv={title:"Konto",language:"Sprache",languageLabel:"Anzeigesprache",languageDescription:"Wähl deine bevorzugte Sprache für die Oberfläche",username:"Benutzername",email:"E-Mail",profile:"Profil",changePassword:"Passwort ändern"},pv={title:"MCP-Server",addServer:"Server hinzufügen",editServer:"Server bearbeiten",deleteServer:"Server löschen",serverName:"Servername",serverType:"Servertyp",config:"Konfiguration",testConnection:"Verbindung testen",status:"Status",connected:"Verbunden",disconnected:"Getrennt",scope:{label:"Geltungsbereich",user:"Benutzer:in",project:"Projekt"}},mv={title:"Darstellung",theme:"Design",codeEditor:"Code-Editor",editorTheme:"Editor-Design",wordWrap:"Zeilenumbruch",showMinimap:"Minimap anzeigen",lineNumbers:"Zeilennummern",fontSize:"Schriftgröße"},gv={saveChanges:"Änderungen speichern",resetToDefaults:"Auf Standardwerte zurücksetzen",cancelChanges:"Änderungen abbrechen"},hv={title:"Schnelleinstellungen",sections:{appearance:"Darstellung",toolDisplay:"Werkzeuganzeige",inputSettings:"Eingabeeinstellungen"},darkMode:"Darkmode",showRawParameters:"Rohe Parameter anzeigen",showThinking:"Denken anzeigen",sendByCtrlEnter:"Mit Strg+Enter senden",sendByCtrlEnterDescription:"Wenn aktiviert, sendet Strg+Enter die Nachricht anstelle von Enter. Dies ist nützlich für IME-Benutzer:innen, um versehentliches Senden zu vermeiden.",dragHandle:{dragging:"Handle wird gezogen",closePanel:"Einstellungspanel schließen",openPanel:"Einstellungspanel öffnen",draggingStatus:"Wird gezogen...",toggleAndMove:"Klicken zum Umschalten, ziehen zum Verschieben"}},fv={title:"Terminal-Tastenkürzel",sectionKeys:"Tasten",sectionNavigation:"Navigation",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"Pfeil oben",arrowDown:"Pfeil unten",scrollDown:"Nach unten scrollen",handle:{closePanel:"Tastenkürzel-Panel schließen",openPanel:"Tastenkürzel-Panel öffnen"}},bv={label:"Einstellungen",agents:"Agenten",appearance:"Darstellung",git:"Git",apiTokens:"API & Token",tasks:"Aufgaben",notifications:"Benachrichtigungen",plugins:"Plugins",about:"Info"},vv={title:"Benachrichtigungen",description:"Lege fest, welche Benachrichtigungen du erhältst.",webPush:{title:"Web-Push-Benachrichtigungen",enable:"Push-Benachrichtigungen aktivieren",disable:"Push-Benachrichtigungen deaktivieren",enabled:"Push-Benachrichtigungen sind aktiviert",loading:"Wird aktualisiert...",unsupported:"Push-Benachrichtigungen werden in diesem Browser nicht unterstützt.",denied:"Push-Benachrichtigungen sind blockiert. Bitte erlaube sie in den Browsereinstellungen."},sound:{title:"Ton",description:"Spielt einen kurzen Ton ab, wenn ein Chat-Lauf abgeschlossen ist.",enabled:"Aktiviert",test:"Ton testen"},events:{title:"Ereignistypen",actionRequired:"Aktion erforderlich",stop:"Lauf gestoppt",error:"Lauf fehlgeschlagen"}},kv={darkMode:{label:"Darkmode",description:"Zwischen hellem und dunklem Design wechseln"},projectSorting:{label:"Projektsortierung",description:"Wie Projekte in der Seitenleiste angeordnet werden",alphabetical:"Alphabetisch",recentActivity:"Letzte Aktivität"},codeEditor:{title:"Code-Editor",theme:{label:"Editor-Design",description:"Standarddesign für den Code-Editor"},wordWrap:{label:"Zeilenumbruch",description:"Zeilenumbruch standardmäßig im Editor aktivieren"},showMinimap:{label:"Minimap anzeigen",description:"Minimap zur einfacheren Navigation in der Diff-Ansicht anzeigen"},lineNumbers:{label:"Zeilennummern anzeigen",description:"Zeilennummern im Editor anzeigen"},fontSize:{label:"Schriftgröße",description:"Editor-Schriftgröße in Pixeln"}}},xv={title:{add:"MCP-Server hinzufügen",edit:"MCP-Server bearbeiten"},importMode:{form:"Formulareingabe",json:"JSON-Import"},scope:{label:"Geltungsbereich",userGlobal:"Benutzer:in (Global)",projectLocal:"Projekt (Lokal)",userDescription:"Benutzerbereich: Auf allen Projekten deines Computers verfügbar",projectDescription:"Lokaler Bereich: Nur im ausgewählten Projekt verfügbar",cannotChange:"Der Geltungsbereich kann beim Bearbeiten eines vorhandenen Servers nicht geändert werden"},fields:{serverName:"Servername",transportType:"Transporttyp",command:"Befehl",arguments:"Argumente (eines pro Zeile)",jsonConfig:"JSON-Konfiguration",url:"URL",envVars:"Umgebungsvariablen (SCHLÜSSEL=Wert, eine pro Zeile)",headers:"Header (SCHLÜSSEL=Wert, eine pro Zeile)",selectProject:"Projekt auswählen..."},placeholders:{serverName:"mein-server"},validation:{missingType:"Pflichtfeld fehlt: type",stdioRequiresCommand:"stdio-Typ erfordert ein Befehlsfeld",httpRequiresUrl:"{{type}}-Typ erfordert ein URL-Feld",invalidJson:"Ungültiges JSON-Format",jsonHelp:"Füge deine MCP-Server-Konfiguration im JSON-Format ein. Beispielformate:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"Konfigurationsdetails (aus {{configFile}})",projectPath:"Pfad: {{path}}",actions:{cancel:"Abbrechen",saving:"Wird gespeichert...",addServer:"Server hinzufügen",updateServer:"Server aktualisieren"}},yv={success:"Einstellungen erfolgreich gespeichert!",error:"Einstellungen konnten nicht gespeichert werden",saving:"Wird gespeichert..."},wv={save:"Einstellungen speichern",cancel:"Abbrechen"},Cv={title:"Git-Konfiguration",description:"Konfiguriere deine Git-Identität für Commits. Diese Einstellungen werden global über git config --global angewendet",name:{label:"Git-Name",help:"Dein Name für Git-Commits"},email:{label:"Git-E-Mail",help:"Deine E-Mail-Adresse für Git-Commits"},actions:{save:"Konfiguration speichern",saving:"Wird gespeichert..."},status:{success:"Erfolgreich gespeichert"}},Sv={title:"API-Schlüssel",description:"Generiere API-Schlüssel, um von anderen Anwendungen auf die externe API zuzugreifen.",newKey:{alertTitle:"⚠️ API-Schlüssel speichern",alertMessage:"Dies ist das einzige Mal, dass du diesen Schlüssel siehst. Speichere ihn sicher.",iveSavedIt:"Ich habe ihn gespeichert"},form:{placeholder:"API-Schlüsselname (z. B. Produktionsserver)",createButton:"Erstellen",cancelButton:"Abbrechen"},newButton:"Neuer API-Schlüssel",empty:"Noch keine API-Schlüssel erstellt.",list:{created:"Erstellt:",lastUsed:"Zuletzt verwendet:"},confirmDelete:"Möchtest du diesen API-Schlüssel wirklich löschen?",status:{active:"Aktiv",inactive:"Inaktiv"},github:{title:"GitHub-Token",description:"Füge GitHub Personal Access Tokens hinzu, um private Repositories über die externe API zu klonen.",descriptionAlt:"Füge GitHub Personal Access Tokens hinzu, um private Repositories zu klonen. Du kannst Token auch direkt in API-Anfragen übergeben, ohne sie zu speichern.",addButton:"Token hinzufügen",form:{namePlaceholder:"Token-Name (z. B. Persönliche Repos)",tokenPlaceholder:"GitHub Personal Access Token (ghp_...)",descriptionPlaceholder:"Beschreibung (optional)",addButton:"Token hinzufügen",cancelButton:"Abbrechen",howToCreate:"Wie man einen GitHub Personal Access Token erstellt →"},empty:"Noch keine GitHub-Token hinzugefügt.",added:"Hinzugefügt:",confirmDelete:"Möchtest du diesen GitHub-Token wirklich löschen?"},apiDocsLink:"API-Dokumentation",documentation:{title:"Externe API-Dokumentation",description:"Erfahre, wie du die externe API nutzen kannst, um Claude/Cursor-Sitzungen aus deinen Anwendungen heraus zu starten.",viewLink:"API-Dokumentation anzeigen →"},loading:"Lädt...",version:{updateAvailable:"Update verfügbar: v{{version}}"}},Pv={checking:"TaskMaster-Installation wird überprüft...",notInstalled:{title:"TaskMaster AI CLI nicht installiert",description:"TaskMaster CLI ist erforderlich, um Aufgabenverwaltungsfunktionen zu nutzen. Installiere es, um loszulegen:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"Auf GitHub anzeigen",afterInstallation:"Nach der Installation:",steps:{restart:"Diese Anwendung neu starten",autoAvailable:"TaskMaster-Funktionen werden automatisch verfügbar",initCommand:"task-master init in deinem Projektverzeichnis verwenden"}},settings:{enableLabel:"TaskMaster-Integration aktivieren",enableDescription:"TaskMaster-Aufgaben, Banner und Seitenleisten-Indikatoren in der gesamten Oberfläche anzeigen"}},Av={authStatus:{checking:"Wird überprüft...",connected:"Verbunden",notConnected:"Nicht verbunden",disconnected:"Getrennt",checkingAuth:"Authentifizierungsstatus wird überprüft...",loggedInAs:"Angemeldet als {{email}}",authenticatedUser:"authentifizierte:r Benutzer:in"},account:{claude:{description:"Anthropic Claude KI-Assistent"},cursor:{description:"Cursor KI-gestützter Code-Editor"},codex:{description:"OpenAI Codex KI-Assistent"}},connectionStatus:"Verbindungsstatus",login:{title:"Anmelden",reAuthenticate:"Erneut authentifizieren",description:"Meld dich bei deinem {{agent}}-Konto an, um KI-Funktionen zu aktivieren",reAuthDescription:"Mit einem anderen Konto anmelden oder Anmeldedaten aktualisieren",button:"Anmelden",reLoginButton:"Erneut anmelden"},error:"Fehler: {{error}}"},jv={title:"Berechtigungseinstellungen",skipPermissions:{label:"Berechtigungsaufforderungen überspringen (mit Vorsicht verwenden)",claudeDescription:"Entspricht dem Flag --dangerously-skip-permissions",cursorDescription:"Entspricht dem Flag -f in der Cursor CLI"},allowedTools:{title:"Erlaubte Werkzeuge",description:"Werkzeuge, die automatisch ohne Berechtigungsaufforderung erlaubt werden",placeholder:'z. B. "Bash(git log:*)" oder "Write"',quickAdd:"Häufige Werkzeuge schnell hinzufügen:",empty:"Keine erlaubten Werkzeuge konfiguriert"},blockedTools:{title:"Gesperrte Werkzeuge",description:"Werkzeuge, die automatisch ohne Berechtigungsaufforderung gesperrt werden",placeholder:'z. B. "Bash(rm:*)"',empty:"Keine gesperrten Werkzeuge konfiguriert"},allowedCommands:{title:"Erlaubte Shell-Befehle",description:"Shell-Befehle, die automatisch ohne Aufforderung erlaubt werden",placeholder:'z. B. "Shell(ls)" oder "Shell(git status)"',quickAdd:"Häufige Befehle schnell hinzufügen:",empty:"Keine erlaubten Befehle konfiguriert"},blockedCommands:{title:"Gesperrte Shell-Befehle",description:"Shell-Befehle, die automatisch gesperrt werden",placeholder:'z. B. "Shell(rm -rf)" oder "Shell(sudo)"',empty:"Keine gesperrten Befehle konfiguriert"},toolExamples:{title:"Werkzeugmuster-Beispiele:",bashGitLog:"- Alle git log-Befehle erlauben",bashGitDiff:"- Alle git diff-Befehle erlauben",write:"- Alle Write-Werkzeugnutzungen erlauben",bashRm:"- Alle rm-Befehle sperren (gefährlich)"},shellExamples:{title:"Shell-Befehl-Beispiele:",ls:"- ls-Befehl erlauben",gitStatus:"- git status erlauben",npmInstall:"- npm install erlauben",rmRf:"- Rekursives Löschen sperren"},codex:{permissionMode:"Berechtigungsmodus",description:"Steuert, wie Codex Dateiänderungen und Befehlsausführung handhabt",modes:{default:{title:"Standard",description:"Nur vertrauenswürdige Befehle (ls, cat, grep, git status usw.) werden automatisch ausgeführt. Andere Befehle werden übersprungen. Kann in den Arbeitsbereich schreiben."},acceptEdits:{title:"Bearbeitungen akzeptieren",description:"Alle Befehle werden automatisch innerhalb des Arbeitsbereichs ausgeführt. Vollautomatischer Modus mit isolierter Ausführung."},bypassPermissions:{title:"Berechtigungen umgehen",description:"Vollständiger Systemzugriff ohne Einschränkungen. Alle Befehle werden automatisch mit vollem Festplatten- und Netzwerkzugriff ausgeführt. Mit Vorsicht verwenden."}},technicalDetails:"Technische Details",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted. Vertrauenswürdige Befehle: cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find (ohne -exec) usw.",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never. Alle Befehle werden automatisch innerhalb des Projektverzeichnisses ausgeführt.",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never. Vollständiger Systemzugriff, nur in vertrauenswürdigen Umgebungen verwenden.",overrideNote:"Du kannst dies pro Sitzung über die Modusschaltfläche in der Chat-Oberfläche überschreiben."}},actions:{add:"Hinzufügen"}},Tv={title:"MCP-Server",description:{claude:"Model Context Protocol-Server stellen Claude zusätzliche Werkzeuge und Datenquellen zur Verfügung",cursor:"Model Context Protocol-Server stellen Cursor zusätzliche Werkzeuge und Datenquellen zur Verfügung",codex:"Model Context Protocol-Server stellen Codex zusätzliche Werkzeuge und Datenquellen zur Verfügung"},addButton:"MCP-Server hinzufügen",empty:"Keine MCP-Server konfiguriert",serverType:"Typ",scope:{local:"lokal",user:"benutzer"},config:{command:"Befehl",url:"URL",args:"Argumente",environment:"Umgebung"},tools:{title:"Werkzeuge",count:"({{count}}):",more:"+{{count}} weitere"},actions:{edit:"Server bearbeiten",delete:"Server löschen"},help:{title:"Über Codex MCP",description:"Codex unterstützt stdio-basierte MCP-Server. Du kannst Server hinzufügen, die die Fähigkeiten von Codex mit zusätzlichen Werkzeugen und Ressourcen erweitern."}},Iv={title:"Plugins",description:"Erweitere die Oberfläche mit eigenen Plugins. Installiere sie von Git oder lege einen Ordner in ~/.claude-code-ui/plugins/ ab.",installPlaceholder:"https://github.com/benutzer/mein-plugin",installButton:"Installieren",installing:"Wird installiert…",securityWarning:"Installiere nur Plugins, deren Quellcode du geprüft hast oder die von Autoren stammen, denen du vertraust.",scanningPlugins:"Plugins werden durchsucht…",noPluginsInstalled:"Keine Plugins installiert",pullLatest:"Neueste Version von Git laden",noGitRemote:"Kein Git-Remote — Update nicht verfügbar",uninstallPlugin:"Plugin deinstallieren",confirmUninstall:"Zum Bestätigen erneut klicken",confirmUninstallMessage:"{{name}} entfernen? Das kann nicht rückgängig gemacht werden.",cancel:"Abbrechen",remove:"Entfernen",updateFailed:"Update fehlgeschlagen",installFailed:"Installation fehlgeschlagen",uninstallFailed:"Deinstallation fehlgeschlagen",toggleFailed:"Umschalten fehlgeschlagen",buildYourOwn:"Eigenes Plugin erstellen",starter:"Starter",docs:"Dokumentation",starterPlugin:{name:"Projektstatistiken",badge:"starter",description:"Dateianzahl, Codezeilen, Dateityp-Aufschlüsselung und aktuelle Aktivitäten für dein Projekt.",install:"Installieren"},morePlugins:"Mehr",enable:"Aktivieren",disable:"Deaktivieren",installAriaLabel:"Git-Repository-URL des Plugins",tab:"Tab",runningStatus:"läuft"},Ev={title:cv,tabs:dv,account:uv,mcp:pv,appearance:mv,actions:gv,quickSettings:hv,terminalShortcuts:fv,mainTabs:bv,notifications:vv,appearanceSettings:kv,mcpForm:xv,saveStatus:yv,footerActions:wv,git:Cv,apiKeys:Sv,tasks:Pv,agents:Av,permissions:jv,mcpServers:Tv,pluginSettings:Iv},Mv={title:"Willkommen zurück",description:"Meld dich bei deinem WindCli-Konto an",username:"Benutzername",password:"Passwort",submit:"Anmelden",loading:"Wird angemeldet...",errors:{invalidCredentials:"Ungültiger Benutzername oder Passwort",requiredFields:"Bitte alle Felder ausfüllen",networkError:"Netzwerkfehler. Bitte erneut versuchen."},placeholders:{username:"Benutzernamen eingeben",password:"Passwort eingeben"}},zv={title:"Konto erstellen",username:"Benutzername",password:"Passwort",confirmPassword:"Passwort bestätigen",submit:"Konto erstellen",loading:"Konto wird erstellt...",errors:{passwordMismatch:"Passwörter stimmen nicht überein",usernameTaken:"Benutzername ist bereits vergeben",weakPassword:"Passwort ist zu schwach"}},Dv={title:"Abmelden",confirm:"Möchtest du dich wirklich abmelden?",button:"Abmelden"},Nv={login:Mv,register:zv,logout:Dv},$v={title:"Projekte",newProject:"Neues Projekt",deleteProject:"Projekt entfernen",renameProject:"Projekt umbenennen",noProjects:"Keine Projekte gefunden",loadingProjects:"Projekte werden geladen...",searchPlaceholder:"Projekte durchsuchen...",projectNamePlaceholder:"Projektname",starred:"Favoriten",all:"Alle",untitledSession:"Unbenannte Sitzung",newSession:"Neue Sitzung",codexSession:"Codex-Sitzung",fetchingProjects:"Deine Claude-Projekte und -Sitzungen werden abgerufen",projects:"Projekte",noMatchingProjects:"Keine passenden Projekte",tryDifferentSearch:"Versuch, den Suchbegriff anzupassen",runClaudeCli:"Führ Claude CLI in einem Projektverzeichnis aus, um zu beginnen"},Rv={title:"WindCli",subtitle:"KI-Programmierassistent-Oberfläche"},Lv={title:"Sitzungen",newSession:"Neue Sitzung",deleteSession:"Sitzung löschen",renameSession:"Sitzung umbenennen",noSessions:"Noch keine Sitzungen",loadingSessions:"Sitzungen werden geladen...",unnamed:"Unbenannt",loading:"Lädt...",showMore:"Weitere Sitzungen anzeigen"},Fv={viewEnvironments:"Umgebungen anzeigen",hideSidebar:"Seitenleiste ausblenden",createProject:"Neues Projekt erstellen",refresh:"Projekte und Sitzungen aktualisieren (Strg+R)",renameProject:"Projekt umbenennen (F2)",deleteProject:"Projekt aus Seitenleiste entfernen (Entf)",addToFavorites:"Zu Favoriten hinzufügen",removeFromFavorites:"Aus Favoriten entfernen",editSessionName:"Sitzungsname manuell bearbeiten",deleteSession:"Diese Sitzung dauerhaft löschen",activeSessionIndicator:"Kürzlich aktive Sitzung (letzte 10 Minuten)",save:"Speichern",cancel:"Abbrechen",clearSearch:"Suche leeren",openCommandPalette:"Befehlspalette öffnen",attentionRequiredIndicator:"Sitzung erfordert Aufmerksamkeit"},Bv={chat:"Chat",files:"Dateien",git:"Git",terminal:"Terminal",tasks:"Aufgaben"},Gv={refresh:"Aktualisieren",settings:"Einstellungen",collapseAll:"Alle einklappen",expandAll:"Alle ausklappen",cancel:"Abbrechen",save:"Speichern",delete:"Löschen",rename:"Umbenennen",joinCommunity:"Community beitreten",reportIssue:"Problem melden",starOnGithub:"Stern auf GitHub"},Hv={openSource:"Open Source"},Ov={active:"Aktiv",inactive:"Inaktiv",thinking:"Denkt nach...",error:"Fehler",aborted:"Abgebrochen",unknown:"Unbekannt"},Uv={justNow:"Gerade eben",oneMinuteAgo:"vor 1 Min.",minutesAgo:"vor {{count}} Min.",oneHourAgo:"vor 1 Std.",hoursAgo:"vor {{count}} Std.",oneDayAgo:"vor 1 Tag",daysAgo:"vor {{count}} Tagen"},qv={deleteConfirm:"Möchtest du das wirklich löschen?",renameSuccess:"Erfolgreich umbenannt",deleteSuccess:"Erfolgreich gelöscht",errorOccurred:"Ein Fehler ist aufgetreten",deleteSessionConfirm:"Möchtest du diese Sitzung wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.",deleteProjectConfirm:"Projekt aus der Seitenleiste entfernen? Deine Projektdateien, Erinnerungen und Sitzungsdaten werden nicht gelöscht.",enterProjectPath:"Bitte gib einen Projektpfad ein",deleteSessionFailed:"Sitzung konnte nicht gelöscht werden. Bitte erneut versuchen.",deleteSessionError:"Fehler beim Löschen der Sitzung. Bitte erneut versuchen.",renameSessionFailed:"Sitzung konnte nicht umbenannt werden. Bitte erneut versuchen.",renameSessionError:"Fehler beim Umbenennen der Sitzung. Bitte erneut versuchen.",deleteProjectFailed:"Projekt konnte nicht entfernt werden. Bitte erneut versuchen.",deleteProjectError:"Fehler beim Entfernen des Projekts. Bitte erneut versuchen.",createProjectFailed:"Projekt konnte nicht erstellt werden. Bitte erneut versuchen.",createProjectError:"Fehler beim Erstellen des Projekts. Bitte erneut versuchen.",updateProjectError:"Fehler beim Aktualisieren des Projekts. Bitte erneut versuchen.",refreshError:"Aktualisierung fehlgeschlagen. Bitte erneut versuchen.",restoreProjectFailed:"Projekt konnte nicht wiederhergestellt werden. Bitte erneut versuchen.",restoreProjectError:"Fehler beim Wiederherstellen des Projekts. Bitte erneut versuchen.",restoreSessionFailed:"Sitzung konnte nicht wiederhergestellt werden. Bitte erneut versuchen.",restoreSessionError:"Fehler beim Wiederherstellen der Sitzung. Bitte erneut versuchen."},Wv={updateAvailable:"Update verfügbar",restartRequired:"Update installiert – zum Anwenden Server neu starten"},Vv={modeProjects:"Projekte",modeConversations:"Unterhaltungen",conversationsPlaceholder:"In Unterhaltungen suchen...",searching:"Sucht...",sessionTitles:"Sitzungstitel",conversationContents:"Unterhaltungsinhalte",noResults:"Keine Ergebnisse gefunden",tryDifferentQuery:"Versuch eine andere Suchanfrage",matches_one:"{{count}} Treffer",matches_other:"{{count}} Treffer",projectsScanned_one:"{{count}} Projekt durchsucht",projectsScanned_other:"{{count}} Projekte durchsucht"},Kv={deleteProject:"Projekt entfernen",deleteSession:"Sitzung löschen",confirmDelete:"Was möchtest du mit",sessionCount_one:"Dieses Projekt enthält {{count}} Unterhaltung.",sessionCount_other:"Dieses Projekt enthält {{count}} Unterhaltungen.",removeFromSidebar:"Nur aus der Seitenleiste entfernen",deleteAllData:"Alle Daten dauerhaft löschen",allConversationsDeleted:"Das Projekt wird aus der Seitenleiste entfernt. Deine Dateien, Erinnerungen und Sitzungsdaten bleiben erhalten.",cannotUndo:"Du kannst das Projekt später erneut hinzufügen."},_v={projects:$v,app:Rv,sessions:Lv,tooltips:Fv,navigation:Bv,actions:Gv,branding:Hv,status:Ov,time:Uv,messages:qv,version:Wv,search:Vv,deleteConfirmation:Kv},Yv={copy:"Kopieren",copied:"Kopiert",copyCode:"Code kopieren"},Jv={copy:"Nachricht kopieren",copied:"Nachricht kopiert",selectFormat:"Kopierformat auswählen",copyAsMarkdown:"Als Markdown kopieren",copyAsText:"Als Text kopieren"},Qv={user:"Benutzer:in",error:"Fehler",tool:"Werkzeug",claude:"Claude",cursor:"Cursor",codex:"Codex"},Zv={settings:"Werkzeugeinstellungen",error:"Werkzeugfehler",result:"Werkzeugergebnis",viewParams:"Eingabeparameter anzeigen",viewRawParams:"Rohe Parameter anzeigen",viewDiff:"Bearbeitungs-Diff anzeigen für",creatingFile:"Neue Datei wird erstellt:",updatingTodo:"Aufgabenliste wird aktualisiert",read:"Gelesen",readFile:"Datei lesen",updateTodo:"Aufgabenliste aktualisieren",readTodo:"Aufgabenliste lesen",searchResults:"Ergebnisse"},Xv={found:"{{count}} {{type}} gefunden",file:"Datei",files:"Dateien",pattern:"Muster:",in:"in:"},ek={updated:"Datei erfolgreich aktualisiert",created:"Datei erfolgreich erstellt",written:"Datei erfolgreich geschrieben",diff:"Diff",newFile:"Neue Datei",viewContent:"Dateiinhalt anzeigen",viewFullOutput:"Vollständige Ausgabe anzeigen ({{count}} Zeichen)",contentDisplayed:"Der Dateiinhalt wird in der Diff-Ansicht oben angezeigt"},tk={title:"Interaktive Eingabeaufforderung",waiting:"Warte auf deine Antwort in der CLI",instruction:"Bitte wähl eine Option in deinem Terminal, in dem Claude läuft.",selectedOption:"✓ Claude hat Option {{number}} ausgewählt",instructionDetail:"In der CLI würdest du diese Option interaktiv mit den Pfeiltasten oder durch Eingabe der Nummer auswählen."},nk={title:"Denkt nach...",emoji:"💭 Denkt nach..."},sk={response:"JSON-Antwort"},ik={grant:"Berechtigung für {{tool}} erteilen",added:"Berechtigung hinzugefügt",addTo:"Fügt {{entry}} zu erlaubten Werkzeugen hinzu.",retry:"Berechtigung gespeichert. Wiederhole die Anfrage, um das Werkzeug zu verwenden.",error:"Berechtigungen konnten nicht aktualisiert werden. Bitte erneut versuchen.",openSettings:"Einstellungen öffnen"},ak={updated:"Aufgabenliste wurde erfolgreich aktualisiert",current:"Aktuelle Aufgabenliste"},ok={viewPlan:"📋 Implementierungsplan anzeigen",title:"Implementierungsplan"},rk={resetAt:"Claude-Nutzungslimit erreicht. Dein Limit wird um **{{time}} {{timezone}}** zurückgesetzt - {{date}}"},lk={permissionMode:"Berechtigungsmodus",modes:{default:"Standardmodus",auto:"Auto Mode",acceptEdits:"Bearbeitungen akzeptieren",bypassPermissions:"Berechtigungen umgehen",plan:"Planungsmodus"},descriptions:{default:"Nur vertrauenswürdige Befehle (ls, cat, grep, git status usw.) werden automatisch ausgeführt. Andere Befehle werden übersprungen. Kann in den Arbeitsbereich schreiben.",auto:"A model classifier decides per tool call whether to approve or deny. Hands-off, but safer than Bypass — denials still happen.",acceptEdits:"Alle Befehle werden automatisch innerhalb des Arbeitsbereichs ausgeführt. Vollautomatischer Modus mit isolierter Ausführung.",bypassPermissions:"Vollständiger Systemzugriff ohne Einschränkungen. Alle Befehle werden automatisch mit vollem Festplatten- und Netzwerkzugriff ausgeführt. Mit Vorsicht verwenden.",plan:"Planungsmodus – keine Befehle werden ausgeführt"},technicalDetails:"Technische Details"},ck={placeholder:"/ für Befehle, @ für Dateien eingeben oder {{provider}} etwas fragen...",placeholderDefault:"Nachricht eingeben...",disabled:"Eingabe deaktiviert",attachFiles:"Dateien anhängen",attachImages:"Bilder anhängen",send:"Senden",stop:"Stoppen",hintText:{ctrlEnter:"Strg+Enter zum Senden • Shift+Enter für neue Zeile • Tab zum Moduswechsel • / für Slash-Befehle",enter:"Enter zum Senden • Shift+Enter für neue Zeile • Tab zum Moduswechsel • / für Slash-Befehle"},clickToChangeMode:"Klicken, um den Berechtigungsmodus zu ändern (oder Tab in der Eingabe drücken)",showAllCommands:"Alle Befehle anzeigen",clearInput:"Eingabe leeren",scrollToBottom:"Nach unten scrollen"},dk={title:"KI-Assistent wählen",description:"Anbieter auswählen, um eine neue Unterhaltung zu starten",selectModel:"Modell auswählen",providerInfo:{anthropic:"von Anthropic",openai:"von OpenAI",cursorEditor:"KI-Code-Editor",google:"von Google"},readyPrompt:{claude:"Bereit, Claude mit {{model}} zu verwenden. Gib unten deine Nachricht ein.",cursor:"Bereit, Cursor mit {{model}} zu verwenden. Gib unten deine Nachricht ein.",codex:"Bereit, Codex mit {{model}} zu verwenden. Gib unten deine Nachricht ein.",default:"Wähl oben einen Anbieter, um zu beginnen"},pressToSearch:"Drücke <kbd>{{shortcut}}</kbd>, um Sitzungen, Dateien und Commits zu durchsuchen"},uk={continue:{title:"Unterhaltung fortsetzen",description:"Stell Fragen zu deinem Code, fordere Änderungen an oder hol Hilfe bei Entwicklungsaufgaben"},loading:{olderMessages:"Ältere Nachrichten werden geladen...",sessionMessages:"Sitzungsnachrichten werden geladen..."},messages:{showingOf:"{{shown}} von {{total}} Nachrichten werden angezeigt",scrollToLoad:"Nach oben scrollen, um mehr zu laden",showingLast:"Letzte {{count}} Nachrichten werden angezeigt ({{total}} gesamt)",loadEarlier:"Frühere Nachrichten laden",loadAll:"Alle Nachrichten laden",loadingAll:"Alle Nachrichten werden geladen...",allLoaded:"Alle Nachrichten geladen",perfWarning:"Alle Nachrichten geladen – Scrollen kann langsamer sein. Klick auf 'Nach unten scrollen', um die Leistung wiederherzustellen."}},pk={selectProject:{title:"Projekt auswählen",description:"Wähl ein Projekt, um ein interaktives Terminal in diesem Verzeichnis zu öffnen"},status:{newSession:"Neue Sitzung",initializing:"Wird initialisiert...",restarting:"Wird neu gestartet..."},actions:{disconnect:"Trennen",disconnectTitle:"Vom Terminal trennen",restart:"Neu starten",restartTitle:"Terminal neu starten (zuerst trennen)",connect:"Im Terminal fortfahren",connectTitle:"Mit Terminal verbinden"},loading:"Terminal wird geladen...",connecting:"Verbindung zum Terminal wird hergestellt...",startSession:"Neue Claude-Sitzung starten",resumeSession:"Sitzung fortsetzen: {{displayName}}...",runCommand:"{{command}} in {{projectName}} ausführen",startCli:"Claude CLI wird in {{projectName}} gestartet",defaultCommand:"Befehl"},mk={actions:{thinking:"Denkt nach",processing:"Verarbeitet",analyzing:"Analysiert",working:"Arbeitet",computing:"Berechnet",reasoning:"Schlussfolgert"},state:{live:"Live",paused:"Pausiert"},elapsed:{seconds:"{{count}}s",minutesSeconds:"{{minutes}}m {{seconds}}s",label:"{{time}} vergangen",startingNow:"Startet jetzt"},controls:{stopGeneration:"Generierung stoppen",pressEscToStop:"Jederzeit Esc drücken, um zu stoppen"},providers:{assistant:"Assistent"}},gk={startChatWithProvider:"Wähl ein Projekt, um mit {{provider}} zu chatten"},hk={nextTaskPrompt:"Nächste Aufgabe starten"},fk={codeBlock:Yv,copyMessage:Jv,messageTypes:Qv,tools:Zv,search:Xv,fileOperations:ek,interactive:tk,thinking:nk,json:sk,permissions:ik,todo:ak,plan:ok,usageLimit:rk,codex:lk,input:ck,providerSelection:dk,session:uk,shell:pk,claudeStatus:mk,projectSelection:gk,tasks:hk},bk={changes:"Änderungen",previousChange:"Vorherige Änderung",nextChange:"Nächste Änderung",hideDiff:"Diff-Hervorhebung ausblenden",showDiff:"Diff-Hervorhebung anzeigen",settings:"Editor-Einstellungen",collapse:"Editor einklappen",expand:"Editor auf volle Breite erweitern"},vk="{{fileName}} wird geladen...",kk={showingChanges:"Änderungen werden angezeigt"},xk={copyPath:"Dateipfad kopieren",pathCopied:"Dateipfad kopiert",download:"Datei herunterladen",save:"Speichern",saving:"Wird gespeichert...",saved:"Gespeichert!",exitFullscreen:"Vollbild beenden",fullscreen:"Vollbild",close:"Schließen",previewMarkdown:"Markdown-Vorschau",editMarkdown:"Markdown bearbeiten"},yk={lines:"Zeilen:",characters:"Zeichen:",shortcuts:"Strg+S zum Speichern • Esc zum Schließen"},wk={title:"Binärdatei",message:'Die Datei "{{fileName}}" kann im Texteditor nicht angezeigt werden, da es sich um eine Binärdatei handelt.'},Ck={toolbar:bk,loading:vk,header:kk,actions:xk,footer:yk,binaryFile:wk},Sk={title:"TaskMaster AI ist nicht konfiguriert",description:"TaskMaster hilft dabei, komplexe Projekte mit KI-Unterstützung in überschaubare Aufgaben aufzuteilen",whatIsTitle:"🎯 Was ist TaskMaster?",features:{aiPowered:"KI-gestütztes Aufgabenmanagement: Komplexe Projekte in handhabbare Unteraufgaben aufteilen",prdTemplates:"PRD-Vorlagen: Aufgaben aus Produktanforderungsdokumenten generieren",dependencyTracking:"Abhängigkeitsverfolgung: Aufgabenbeziehungen und Ausführungsreihenfolge verstehen",progressVisualization:"Fortschrittsvisualisierung: Kanban-Boards und detaillierte Aufgabenanalysen",cliIntegration:"CLI-Integration: Taskmaster-Befehle für erweiterte Workflows verwenden"},initializeButton:"TaskMaster AI initialisieren"},Pk={title:"Erste Schritte mit TaskMaster",subtitle:"TaskMaster ist initialisiert! Hier ist, was du als Nächstes tun kannst:",steps:{createPRD:{title:"Produktanforderungsdokument (PRD) erstellen",description:"Besprich deine Projektidee und erstelle ein PRD, das beschreibt, was du bauen möchtest.",addButton:"PRD hinzufügen",existingPRDs:"Vorhandene PRDs:"},generateTasks:{title:"Aufgaben aus PRD generieren",description:"Sobald du ein PRD hast, bitte deinen KI-Assistenten, es zu analysieren. TaskMaster wird es automatisch in überschaubare Aufgaben mit Implementierungsdetails aufteilen."},analyzeTasks:{title:"Aufgaben analysieren und erweitern",description:"Bitte deinen KI-Assistenten, die Aufgabenkomplexität zu analysieren und sie in detaillierte Unteraufgaben für eine einfachere Implementierung zu erweitern."},startBuilding:{title:"Mit dem Bauen beginnen",description:"Bitte deinen KI-Assistenten, mit der Bearbeitung von Aufgaben zu beginnen, deren Status zu aktualisieren und neue Aufgaben hinzuzufügen, wenn dein Projekt sich weiterentwickelt."}},tip:"💡 Tipp: Beginne mit einem PRD, um das Beste aus TaskMasters KI-gestützter Aufgabengenerierung herauszuholen"},Ak={title:"TaskMaster-Einrichtung",subtitle:"Interaktives CLI für {{projectName}}",willStart:"Die TaskMaster-Initialisierung startet automatisch",completed:"TaskMaster-Einrichtung abgeschlossen! Du kannst dieses Fenster jetzt schließen.",closeButton:"Schließen",closeContinueButton:"Schließen & Fortfahren"},jk={title:"Erste Schritte mit TaskMaster",subtitle:"Dein Leitfaden für produktives Aufgabenmanagement",examples:{parsePRD:`💬 Beispiel:
|
|
23
|
+
"Пожалуйста, добавьте новую задачу для реализации загрузки изображений профиля пользователя с использованием Cloudinary, изучите лучший подход."`},moreExamples:"Посмотреть больше примеров и шаблонов использования →",proTips:{title:"💡 Профессиональные советы",search:"Используйте строку поиска для быстрого поиска конкретных задач",views:"Переключайтесь между представлениями Канбан, Список и Сетка, используя переключатели представлений",filters:"Используйте фильтры для фокусировки на конкретных статусах или приоритетах задач",details:"Нажмите на любую задачу для просмотра детальной информации и управления подзадачами"},learnMore:{title:"📚 Узнать больше",description:"TaskMaster AI - это продвинутая система управления задачами, созданная для разработчиков. Получите документацию, примеры и внесите вклад в проект.",githubButton:"Посмотреть на GitHub"}},Jb={placeholder:"Поиск задач..."},Qb={button:"Фильтры",status:"Статус",priority:"Приоритет",sortBy:"Сортировать по",allStatuses:"Все статусы",allPriorities:"Все приоритеты",showing:"Показано {{filtered}} из {{total}} задач",clearFilters:"Очистить фильтры"},Zb={id:"ID",status:"Статус",priority:"Приоритет",idAsc:"ID (по возрастанию)",idDesc:"ID (по убыванию)",titleAsc:"Название (А-Я)",titleDesc:"Название (Я-А)",statusAsc:"Статус (сначала ожидающие)",statusDesc:"Статус (сначала выполненные)",priorityAsc:"Приоритет (сначала высокий)",priorityDesc:"Приоритет (сначала низкий)"},Xb={kanban:"Представление Канбан",list:"Представление списком",grid:"Представление сеткой"},ev={pending:"📋 К выполнению",inProgress:"🚀 В процессе",done:"✅ Выполнено",blocked:"🚫 Заблокировано",deferred:"⏳ Отложено",cancelled:"❌ Отменено",noTasksYet:"Задач пока нет",tasksWillAppear:"Задачи появятся здесь",moveTasksHere:"Перемещайте задачи сюда при начале работы",completedTasksHere:"Завершенные задачи появляются здесь",statusTasksHere:"Задачи с этим статусом появятся здесь"},tv={help:"Руководство по началу работы с TaskMaster",prds:"PRD",addPRD:"Добавить PRD",addTask:"Добавить задачу",createNewPRD:"Создать новый PRD",prdsAvailable:"Доступно {{count}} PRD"},nv={modified:"Изменено: {{date}}"},sv={pending:"Ожидание","in-progress":"В процессе",done:"Выполнено",blocked:"Заблокировано",deferred:"Отложено",cancelled:"Отменено"},iv={high:"Высокий",medium:"Средний",low:"Низкий"},av={title:"Нет задач, соответствующих вашим фильтрам",description:"Попробуйте изменить критерии поиска или фильтрации."},ov={notConfigured:Vb,gettingStarted:Kb,setupModal:_b,helpGuide:Yb,search:Jb,filters:Qb,sort:Zb,views:Xb,kanban:ev,buttons:tv,prd:nv,statuses:sv,priorities:iv,noMatchingTasks:av},rv={save:"Speichern",cancel:"Abbrechen",delete:"Löschen",create:"Erstellen",edit:"Bearbeiten",close:"Schließen",confirm:"Bestätigen",submit:"Absenden",retry:"Erneut versuchen",refresh:"Aktualisieren",search:"Suchen",clear:"Leeren",copy:"Kopieren",download:"Herunterladen",upload:"Hochladen",browse:"Durchsuchen"},lv={chat:"Chat",shell:"Terminal",files:"Dateien",git:"Quellcodeverwaltung",tasks:"Aufgaben",browser:"Browser",computer:"Computer"},cv={loading:"Lädt...",success:"Erfolgreich",error:"Fehler",failed:"Fehlgeschlagen",pending:"Ausstehend",completed:"Abgeschlossen",inProgress:"In Bearbeitung"},dv={savedSuccessfully:"Erfolgreich gespeichert",deletedSuccessfully:"Erfolgreich gelöscht",updatedSuccessfully:"Erfolgreich aktualisiert",operationFailed:"Vorgang fehlgeschlagen",networkError:"Netzwerkfehler. Bitte überprüf deine Verbindung.",unauthorized:"Nicht autorisiert. Bitte meld dich an.",notFound:"Nicht gefunden",invalidInput:"Ungültige Eingabe",requiredField:"Dieses Feld ist erforderlich",unknownError:"Ein unbekannter Fehler ist aufgetreten"},uv={settings:"Einstellungen",home:"Startseite",back:"Zurück",next:"Weiter",previous:"Zurück",logout:"Abmelden"},pv={language:"Sprache",theme:"Design",darkMode:"Darkmode",lightMode:"Hellmodus",name:"Name",description:"Beschreibung",enabled:"Aktiviert",disabled:"Deaktiviert",optional:"Optional",version:"Version",select:"Auswählen",selectAll:"Alle auswählen",deselectAll:"Alle abwählen"},mv={justNow:"Gerade eben",minutesAgo:"vor {{count}} Min.",hoursAgo:"vor {{count}} Std.",daysAgo:"vor {{count}} Tagen",yesterday:"Gestern"},gv={newFile:"Neue Datei",newFolder:"Neuer Ordner",rename:"Umbenennen",move:"Verschieben",copyPath:"Pfad kopieren",openInEditor:"Im Editor öffnen"},hv={loading:"WindCli wird geladen",settingUpWorkspace:"Arbeitsbereich wird eingerichtet...",chooseProject:"Projekt auswählen",selectProjectDescription:"Wähl ein Projekt aus der Seitenleiste, um mit Claude zu programmieren. Jedes Projekt enthält deine Chat-Sitzungen und den Dateiverlauf.",tip:"Tipp",createProjectMobile:"Tipp oben auf die Menüschaltfläche, um auf Projekte zuzugreifen",createProjectDesktop:"Erstell ein neues Projekt, indem du auf das Ordnersymbol in der Seitenleiste klickst",newSession:"Neue Sitzung",untitledSession:"Unbenannte Sitzung",projectFiles:"Projektdateien"},fv={loading:"Dateien werden geladen...",files:"Dateien",simpleView:"Einfache Ansicht",compactView:"Kompakte Ansicht",detailedView:"Detailansicht",searchPlaceholder:"Dateien und Ordner durchsuchen...",clearSearch:"Suche leeren",name:"Name",size:"Größe",modified:"Geändert",permissions:"Berechtigungen",noFilesFound:"Keine Dateien gefunden",checkProjectPath:"Überprüf, ob der Projektpfad zugänglich ist",noMatchesFound:"Keine Treffer gefunden",tryDifferentSearch:"Versuch einen anderen Suchbegriff oder leere die Suche",justNow:"gerade eben",minAgo:"vor {{count}} Min.",hoursAgo:"vor {{count}} Std.",daysAgo:"vor {{count}} Tagen",newFile:"Neue Datei (Cmd+N)",newFolder:"Neuer Ordner (Cmd+Shift+N)",refresh:"Aktualisieren",collapseAll:"Alle einklappen",context:{rename:"Umbenennen",delete:"Löschen",copyPath:"Pfad kopieren",download:"Herunterladen",newFile:"Neue Datei",newFolder:"Neuer Ordner",upload:"Dateien hochladen",refresh:"Aktualisieren",menuLabel:"Datei-Kontextmenü",loading:"Lädt..."}},bv={title:"Neues Projekt erstellen",steps:{type:"Typ",configure:"Konfigurieren",confirm:"Bestätigen"},step1:{question:"Hast du bereits einen Arbeitsbereich, oder möchtest du einen neuen erstellen?",existing:{title:"Vorhandener Arbeitsbereich",description:"Ich habe bereits einen Arbeitsbereich auf meinem Server und möchte ihn nur zur Projektliste hinzufügen"},new:{title:"Neuer Arbeitsbereich",description:"Einen neuen Arbeitsbereich erstellen, optional aus einem GitHub-Repository klonen"}},step2:{existingPath:"Arbeitsbereichspfad",newPath:"Arbeitsbereichspfad",existingPlaceholder:"/Pfad/zum/vorhandenen/Arbeitsbereich",newPlaceholder:"/Pfad/zum/neuen/Arbeitsbereich",existingHelp:"Vollständiger Pfad zu deinem vorhandenen Arbeitsbereichsverzeichnis",newHelp:"Vollständiger Pfad zu deinem Arbeitsbereichsverzeichnis",githubUrl:"GitHub-URL (Optional)",githubPlaceholder:"https://github.com/benutzername/repository",githubHelp:"Optional: GitHub-URL angeben, um ein Repository zu klonen",githubAuth:"GitHub-Authentifizierung (Optional)",githubAuthHelp:"Nur für private Repositories erforderlich. Öffentliche Repos können ohne Authentifizierung geklont werden.",loadingTokens:"Gespeicherte Token werden geladen...",storedToken:"Gespeicherter Token",newToken:"Neuer Token",nonePublic:"Keiner (Öffentlich)",selectToken:"Token auswählen",selectTokenPlaceholder:"-- Token auswählen --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"Dieser Token wird nur für diesen Vorgang verwendet",publicRepoInfo:"Öffentliche Repositories benötigen keine Authentifizierung. Du kannst das Token beim Klonen eines öffentlichen Repos weglassen.",noTokensHelp:"Keine gespeicherten Token verfügbar. Du kannst Token unter Einstellungen → API-Schlüssel für einfachere Wiederverwendung hinzufügen.",optionalTokenPublic:"GitHub-Token (Optional für öffentliche Repos)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (leer lassen für öffentliche Repos)"},step3:{reviewConfig:"Konfiguration überprüfen",existingWorkspace:"Vorhandener Arbeitsbereich",newWorkspace:"Neuer Arbeitsbereich",path:"Pfad:",cloneFrom:"Klonen von:",authentication:"Authentifizierung:",usingStoredToken:"Gespeicherter Token wird verwendet:",usingProvidedToken:"Angegebener Token wird verwendet",noAuthentication:"Keine Authentifizierung",sshKey:"SSH-Schlüssel",existingInfo:"Der Arbeitsbereich wird zur Projektliste hinzugefügt und steht für Claude/Cursor-Sitzungen zur Verfügung.",newWithClone:"Das Repository wird aus diesem Ordner geklont.",newEmpty:"Der Arbeitsbereich wird zur Projektliste hinzugefügt und steht für Claude/Cursor-Sitzungen zur Verfügung.",cloningRepository:"Repository wird geklont..."},buttons:{cancel:"Abbrechen",back:"Zurück",next:"Weiter",createProject:"Projekt erstellen",creating:"Wird erstellt...",cloning:"Wird geklont..."},errors:{selectType:"Bitte wähl aus, ob du einen vorhandenen Arbeitsbereich hast oder einen neuen erstellen möchtest",providePath:"Bitte gib einen Arbeitsbereichspfad an",failedToCreate:"Arbeitsbereich konnte nicht erstellt werden",failedToCreateFolder:"Ordner konnte nicht erstellt werden"}},vv={title:"Update verfügbar",newVersionReady:"Eine neue Version ist verfügbar",currentVersion:"Aktuelle Version",latestVersion:"Neueste Version",whatsNew:"Neuigkeiten:",viewFullRelease:"Vollständige Version anzeigen",updateProgress:"Update-Fortschritt:",manualUpgrade:"Manuelles Upgrade:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:'Oder klick auf "Jetzt aktualisieren", um das Update automatisch durchzuführen.',updateCompleted:"Update erfolgreich abgeschlossen!",restartServer:"Bitte starte den Server neu, um die Änderungen anzuwenden.",updateFailed:"Update fehlgeschlagen",buttons:{close:"Schließen",later:"Später",copyCommand:"Befehl kopieren",updateNow:"Jetzt aktualisieren",updating:"Wird aktualisiert..."},ariaLabels:{closeModal:"Versions-Update-Modal schließen",showSidebar:"Seitenleiste anzeigen",settings:"Einstellungen",updateAvailable:"Update verfügbar",closeSidebar:"Seitenleiste schließen"}},kv={buttons:rv,tabs:lv,status:cv,messages:dv,navigation:uv,common:pv,time:mv,fileOperations:gv,mainContent:hv,fileTree:fv,projectWizard:bv,versionUpdate:vv},xv="Einstellungen",yv={account:"Konto",permissions:"Berechtigungen",mcpServers:"MCP-Server",appearance:"Darstellung"},wv={title:"Konto",language:"Sprache",languageLabel:"Anzeigesprache",languageDescription:"Wähl deine bevorzugte Sprache für die Oberfläche",username:"Benutzername",email:"E-Mail",profile:"Profil",changePassword:"Passwort ändern"},Cv={title:"MCP-Server",addServer:"Server hinzufügen",editServer:"Server bearbeiten",deleteServer:"Server löschen",serverName:"Servername",serverType:"Servertyp",config:"Konfiguration",testConnection:"Verbindung testen",status:"Status",connected:"Verbunden",disconnected:"Getrennt",scope:{label:"Geltungsbereich",user:"Benutzer:in",project:"Projekt"}},Sv={title:"Darstellung",theme:"Design",codeEditor:"Code-Editor",editorTheme:"Editor-Design",wordWrap:"Zeilenumbruch",showMinimap:"Minimap anzeigen",lineNumbers:"Zeilennummern",fontSize:"Schriftgröße"},Pv={saveChanges:"Änderungen speichern",resetToDefaults:"Auf Standardwerte zurücksetzen",cancelChanges:"Änderungen abbrechen"},Av={title:"Schnelleinstellungen",sections:{appearance:"Darstellung",toolDisplay:"Werkzeuganzeige",inputSettings:"Eingabeeinstellungen"},darkMode:"Darkmode",showRawParameters:"Rohe Parameter anzeigen",showThinking:"Denken anzeigen",sendByCtrlEnter:"Mit Strg+Enter senden",sendByCtrlEnterDescription:"Wenn aktiviert, sendet Strg+Enter die Nachricht anstelle von Enter. Dies ist nützlich für IME-Benutzer:innen, um versehentliches Senden zu vermeiden.",dragHandle:{dragging:"Handle wird gezogen",closePanel:"Einstellungspanel schließen",openPanel:"Einstellungspanel öffnen",draggingStatus:"Wird gezogen...",toggleAndMove:"Klicken zum Umschalten, ziehen zum Verschieben"}},jv={title:"Terminal-Tastenkürzel",sectionKeys:"Tasten",sectionNavigation:"Navigation",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"Pfeil oben",arrowDown:"Pfeil unten",scrollDown:"Nach unten scrollen",handle:{closePanel:"Tastenkürzel-Panel schließen",openPanel:"Tastenkürzel-Panel öffnen"}},Tv={label:"Einstellungen",agents:"Agenten",appearance:"Darstellung",git:"Git",apiTokens:"API & Token",tasks:"Aufgaben",notifications:"Benachrichtigungen",plugins:"Plugins",about:"Info"},Iv={title:"Benachrichtigungen",description:"Lege fest, welche Benachrichtigungen du erhältst.",webPush:{title:"Web-Push-Benachrichtigungen",enable:"Push-Benachrichtigungen aktivieren",disable:"Push-Benachrichtigungen deaktivieren",enabled:"Push-Benachrichtigungen sind aktiviert",loading:"Wird aktualisiert...",unsupported:"Push-Benachrichtigungen werden in diesem Browser nicht unterstützt.",denied:"Push-Benachrichtigungen sind blockiert. Bitte erlaube sie in den Browsereinstellungen."},sound:{title:"Ton",description:"Spielt einen kurzen Ton ab, wenn ein Chat-Lauf abgeschlossen ist.",enabled:"Aktiviert",test:"Ton testen"},events:{title:"Ereignistypen",actionRequired:"Aktion erforderlich",stop:"Lauf gestoppt",error:"Lauf fehlgeschlagen"}},Ev={darkMode:{label:"Darkmode",description:"Zwischen hellem und dunklem Design wechseln"},projectSorting:{label:"Projektsortierung",description:"Wie Projekte in der Seitenleiste angeordnet werden",alphabetical:"Alphabetisch",recentActivity:"Letzte Aktivität"},codeEditor:{title:"Code-Editor",theme:{label:"Editor-Design",description:"Standarddesign für den Code-Editor"},wordWrap:{label:"Zeilenumbruch",description:"Zeilenumbruch standardmäßig im Editor aktivieren"},showMinimap:{label:"Minimap anzeigen",description:"Minimap zur einfacheren Navigation in der Diff-Ansicht anzeigen"},lineNumbers:{label:"Zeilennummern anzeigen",description:"Zeilennummern im Editor anzeigen"},fontSize:{label:"Schriftgröße",description:"Editor-Schriftgröße in Pixeln"}}},Mv={title:{add:"MCP-Server hinzufügen",edit:"MCP-Server bearbeiten"},importMode:{form:"Formulareingabe",json:"JSON-Import"},scope:{label:"Geltungsbereich",userGlobal:"Benutzer:in (Global)",projectLocal:"Projekt (Lokal)",userDescription:"Benutzerbereich: Auf allen Projekten deines Computers verfügbar",projectDescription:"Lokaler Bereich: Nur im ausgewählten Projekt verfügbar",cannotChange:"Der Geltungsbereich kann beim Bearbeiten eines vorhandenen Servers nicht geändert werden"},fields:{serverName:"Servername",transportType:"Transporttyp",command:"Befehl",arguments:"Argumente (eines pro Zeile)",jsonConfig:"JSON-Konfiguration",url:"URL",envVars:"Umgebungsvariablen (SCHLÜSSEL=Wert, eine pro Zeile)",headers:"Header (SCHLÜSSEL=Wert, eine pro Zeile)",selectProject:"Projekt auswählen..."},placeholders:{serverName:"mein-server"},validation:{missingType:"Pflichtfeld fehlt: type",stdioRequiresCommand:"stdio-Typ erfordert ein Befehlsfeld",httpRequiresUrl:"{{type}}-Typ erfordert ein URL-Feld",invalidJson:"Ungültiges JSON-Format",jsonHelp:"Füge deine MCP-Server-Konfiguration im JSON-Format ein. Beispielformate:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"Konfigurationsdetails (aus {{configFile}})",projectPath:"Pfad: {{path}}",actions:{cancel:"Abbrechen",saving:"Wird gespeichert...",addServer:"Server hinzufügen",updateServer:"Server aktualisieren"}},zv={success:"Einstellungen erfolgreich gespeichert!",error:"Einstellungen konnten nicht gespeichert werden",saving:"Wird gespeichert..."},Dv={save:"Einstellungen speichern",cancel:"Abbrechen"},Nv={title:"Git-Konfiguration",description:"Konfiguriere deine Git-Identität für Commits. Diese Einstellungen werden global über git config --global angewendet",name:{label:"Git-Name",help:"Dein Name für Git-Commits"},email:{label:"Git-E-Mail",help:"Deine E-Mail-Adresse für Git-Commits"},actions:{save:"Konfiguration speichern",saving:"Wird gespeichert..."},status:{success:"Erfolgreich gespeichert"}},$v={title:"API-Schlüssel",description:"Generiere API-Schlüssel, um von anderen Anwendungen auf die externe API zuzugreifen.",newKey:{alertTitle:"⚠️ API-Schlüssel speichern",alertMessage:"Dies ist das einzige Mal, dass du diesen Schlüssel siehst. Speichere ihn sicher.",iveSavedIt:"Ich habe ihn gespeichert"},form:{placeholder:"API-Schlüsselname (z. B. Produktionsserver)",createButton:"Erstellen",cancelButton:"Abbrechen"},newButton:"Neuer API-Schlüssel",empty:"Noch keine API-Schlüssel erstellt.",list:{created:"Erstellt:",lastUsed:"Zuletzt verwendet:"},confirmDelete:"Möchtest du diesen API-Schlüssel wirklich löschen?",status:{active:"Aktiv",inactive:"Inaktiv"},github:{title:"GitHub-Token",description:"Füge GitHub Personal Access Tokens hinzu, um private Repositories über die externe API zu klonen.",descriptionAlt:"Füge GitHub Personal Access Tokens hinzu, um private Repositories zu klonen. Du kannst Token auch direkt in API-Anfragen übergeben, ohne sie zu speichern.",addButton:"Token hinzufügen",form:{namePlaceholder:"Token-Name (z. B. Persönliche Repos)",tokenPlaceholder:"GitHub Personal Access Token (ghp_...)",descriptionPlaceholder:"Beschreibung (optional)",addButton:"Token hinzufügen",cancelButton:"Abbrechen",howToCreate:"Wie man einen GitHub Personal Access Token erstellt →"},empty:"Noch keine GitHub-Token hinzugefügt.",added:"Hinzugefügt:",confirmDelete:"Möchtest du diesen GitHub-Token wirklich löschen?"},apiDocsLink:"API-Dokumentation",documentation:{title:"Externe API-Dokumentation",description:"Erfahre, wie du die externe API nutzen kannst, um Claude/Cursor-Sitzungen aus deinen Anwendungen heraus zu starten.",viewLink:"API-Dokumentation anzeigen →"},loading:"Lädt...",version:{updateAvailable:"Update verfügbar: v{{version}}"}},Rv={checking:"TaskMaster-Installation wird überprüft...",notInstalled:{title:"TaskMaster AI CLI nicht installiert",description:"TaskMaster CLI ist erforderlich, um Aufgabenverwaltungsfunktionen zu nutzen. Installiere es, um loszulegen:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"Auf GitHub anzeigen",afterInstallation:"Nach der Installation:",steps:{restart:"Diese Anwendung neu starten",autoAvailable:"TaskMaster-Funktionen werden automatisch verfügbar",initCommand:"task-master init in deinem Projektverzeichnis verwenden"}},settings:{enableLabel:"TaskMaster-Integration aktivieren",enableDescription:"TaskMaster-Aufgaben, Banner und Seitenleisten-Indikatoren in der gesamten Oberfläche anzeigen"}},Lv={authStatus:{checking:"Wird überprüft...",connected:"Verbunden",notConnected:"Nicht verbunden",disconnected:"Getrennt",checkingAuth:"Authentifizierungsstatus wird überprüft...",loggedInAs:"Angemeldet als {{email}}",authenticatedUser:"authentifizierte:r Benutzer:in"},account:{claude:{description:"Anthropic Claude KI-Assistent"},cursor:{description:"Cursor KI-gestützter Code-Editor"},codex:{description:"OpenAI Codex KI-Assistent"}},connectionStatus:"Verbindungsstatus",login:{title:"Anmelden",reAuthenticate:"Erneut authentifizieren",description:"Meld dich bei deinem {{agent}}-Konto an, um KI-Funktionen zu aktivieren",reAuthDescription:"Mit einem anderen Konto anmelden oder Anmeldedaten aktualisieren",button:"Anmelden",reLoginButton:"Erneut anmelden"},error:"Fehler: {{error}}"},Fv={title:"Berechtigungseinstellungen",skipPermissions:{label:"Berechtigungsaufforderungen überspringen (mit Vorsicht verwenden)",claudeDescription:"Entspricht dem Flag --dangerously-skip-permissions",cursorDescription:"Entspricht dem Flag -f in der Cursor CLI"},allowedTools:{title:"Erlaubte Werkzeuge",description:"Werkzeuge, die automatisch ohne Berechtigungsaufforderung erlaubt werden",placeholder:'z. B. "Bash(git log:*)" oder "Write"',quickAdd:"Häufige Werkzeuge schnell hinzufügen:",empty:"Keine erlaubten Werkzeuge konfiguriert"},blockedTools:{title:"Gesperrte Werkzeuge",description:"Werkzeuge, die automatisch ohne Berechtigungsaufforderung gesperrt werden",placeholder:'z. B. "Bash(rm:*)"',empty:"Keine gesperrten Werkzeuge konfiguriert"},allowedCommands:{title:"Erlaubte Shell-Befehle",description:"Shell-Befehle, die automatisch ohne Aufforderung erlaubt werden",placeholder:'z. B. "Shell(ls)" oder "Shell(git status)"',quickAdd:"Häufige Befehle schnell hinzufügen:",empty:"Keine erlaubten Befehle konfiguriert"},blockedCommands:{title:"Gesperrte Shell-Befehle",description:"Shell-Befehle, die automatisch gesperrt werden",placeholder:'z. B. "Shell(rm -rf)" oder "Shell(sudo)"',empty:"Keine gesperrten Befehle konfiguriert"},toolExamples:{title:"Werkzeugmuster-Beispiele:",bashGitLog:"- Alle git log-Befehle erlauben",bashGitDiff:"- Alle git diff-Befehle erlauben",write:"- Alle Write-Werkzeugnutzungen erlauben",bashRm:"- Alle rm-Befehle sperren (gefährlich)"},shellExamples:{title:"Shell-Befehl-Beispiele:",ls:"- ls-Befehl erlauben",gitStatus:"- git status erlauben",npmInstall:"- npm install erlauben",rmRf:"- Rekursives Löschen sperren"},codex:{permissionMode:"Berechtigungsmodus",description:"Steuert, wie Codex Dateiänderungen und Befehlsausführung handhabt",modes:{default:{title:"Standard",description:"Nur vertrauenswürdige Befehle (ls, cat, grep, git status usw.) werden automatisch ausgeführt. Andere Befehle werden übersprungen. Kann in den Arbeitsbereich schreiben."},acceptEdits:{title:"Bearbeitungen akzeptieren",description:"Alle Befehle werden automatisch innerhalb des Arbeitsbereichs ausgeführt. Vollautomatischer Modus mit isolierter Ausführung."},bypassPermissions:{title:"Berechtigungen umgehen",description:"Vollständiger Systemzugriff ohne Einschränkungen. Alle Befehle werden automatisch mit vollem Festplatten- und Netzwerkzugriff ausgeführt. Mit Vorsicht verwenden."}},technicalDetails:"Technische Details",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted. Vertrauenswürdige Befehle: cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find (ohne -exec) usw.",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never. Alle Befehle werden automatisch innerhalb des Projektverzeichnisses ausgeführt.",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never. Vollständiger Systemzugriff, nur in vertrauenswürdigen Umgebungen verwenden.",overrideNote:"Du kannst dies pro Sitzung über die Modusschaltfläche in der Chat-Oberfläche überschreiben."}},actions:{add:"Hinzufügen"}},Bv={title:"MCP-Server",description:{claude:"Model Context Protocol-Server stellen Claude zusätzliche Werkzeuge und Datenquellen zur Verfügung",cursor:"Model Context Protocol-Server stellen Cursor zusätzliche Werkzeuge und Datenquellen zur Verfügung",codex:"Model Context Protocol-Server stellen Codex zusätzliche Werkzeuge und Datenquellen zur Verfügung"},addButton:"MCP-Server hinzufügen",empty:"Keine MCP-Server konfiguriert",serverType:"Typ",scope:{local:"lokal",user:"benutzer"},config:{command:"Befehl",url:"URL",args:"Argumente",environment:"Umgebung"},tools:{title:"Werkzeuge",count:"({{count}}):",more:"+{{count}} weitere"},actions:{edit:"Server bearbeiten",delete:"Server löschen"},help:{title:"Über Codex MCP",description:"Codex unterstützt stdio-basierte MCP-Server. Du kannst Server hinzufügen, die die Fähigkeiten von Codex mit zusätzlichen Werkzeugen und Ressourcen erweitern."}},Gv={title:"Plugins",description:"Erweitere die Oberfläche mit eigenen Plugins. Installiere sie von Git oder lege einen Ordner in ~/.claude-code-ui/plugins/ ab.",installPlaceholder:"https://github.com/benutzer/mein-plugin",installButton:"Installieren",installing:"Wird installiert…",securityWarning:"Installiere nur Plugins, deren Quellcode du geprüft hast oder die von Autoren stammen, denen du vertraust.",scanningPlugins:"Plugins werden durchsucht…",noPluginsInstalled:"Keine Plugins installiert",pullLatest:"Neueste Version von Git laden",noGitRemote:"Kein Git-Remote — Update nicht verfügbar",uninstallPlugin:"Plugin deinstallieren",confirmUninstall:"Zum Bestätigen erneut klicken",confirmUninstallMessage:"{{name}} entfernen? Das kann nicht rückgängig gemacht werden.",cancel:"Abbrechen",remove:"Entfernen",updateFailed:"Update fehlgeschlagen",installFailed:"Installation fehlgeschlagen",uninstallFailed:"Deinstallation fehlgeschlagen",toggleFailed:"Umschalten fehlgeschlagen",buildYourOwn:"Eigenes Plugin erstellen",starter:"Starter",docs:"Dokumentation",starterPlugin:{name:"Projektstatistiken",badge:"starter",description:"Dateianzahl, Codezeilen, Dateityp-Aufschlüsselung und aktuelle Aktivitäten für dein Projekt.",install:"Installieren"},morePlugins:"Mehr",enable:"Aktivieren",disable:"Deaktivieren",installAriaLabel:"Git-Repository-URL des Plugins",tab:"Tab",runningStatus:"läuft"},Hv={title:xv,tabs:yv,account:wv,mcp:Cv,appearance:Sv,actions:Pv,quickSettings:Av,terminalShortcuts:jv,mainTabs:Tv,notifications:Iv,appearanceSettings:Ev,mcpForm:Mv,saveStatus:zv,footerActions:Dv,git:Nv,apiKeys:$v,tasks:Rv,agents:Lv,permissions:Fv,mcpServers:Bv,pluginSettings:Gv},Ov={title:"Willkommen zurück",description:"Meld dich bei deinem WindCli-Konto an",username:"Benutzername",password:"Passwort",submit:"Anmelden",loading:"Wird angemeldet...",errors:{invalidCredentials:"Ungültiger Benutzername oder Passwort",requiredFields:"Bitte alle Felder ausfüllen",networkError:"Netzwerkfehler. Bitte erneut versuchen."},placeholders:{username:"Benutzernamen eingeben",password:"Passwort eingeben"}},Uv={title:"Konto erstellen",username:"Benutzername",password:"Passwort",confirmPassword:"Passwort bestätigen",submit:"Konto erstellen",loading:"Konto wird erstellt...",errors:{passwordMismatch:"Passwörter stimmen nicht überein",usernameTaken:"Benutzername ist bereits vergeben",weakPassword:"Passwort ist zu schwach"}},qv={title:"Abmelden",confirm:"Möchtest du dich wirklich abmelden?",button:"Abmelden"},Wv={login:Ov,register:Uv,logout:qv},Vv={title:"Projekte",newProject:"Neues Projekt",deleteProject:"Projekt entfernen",renameProject:"Projekt umbenennen",noProjects:"Keine Projekte gefunden",loadingProjects:"Projekte werden geladen...",searchPlaceholder:"Projekte durchsuchen...",projectNamePlaceholder:"Projektname",starred:"Favoriten",all:"Alle",untitledSession:"Unbenannte Sitzung",newSession:"Neue Sitzung",codexSession:"Codex-Sitzung",fetchingProjects:"Deine Claude-Projekte und -Sitzungen werden abgerufen",projects:"Projekte",noMatchingProjects:"Keine passenden Projekte",tryDifferentSearch:"Versuch, den Suchbegriff anzupassen",runClaudeCli:"Führ Claude CLI in einem Projektverzeichnis aus, um zu beginnen"},Kv={title:"WindCli",subtitle:"KI-Programmierassistent-Oberfläche"},_v={title:"Sitzungen",newSession:"Neue Sitzung",deleteSession:"Sitzung löschen",renameSession:"Sitzung umbenennen",noSessions:"Noch keine Sitzungen",loadingSessions:"Sitzungen werden geladen...",unnamed:"Unbenannt",loading:"Lädt...",showMore:"Weitere Sitzungen anzeigen"},Yv={viewEnvironments:"Umgebungen anzeigen",hideSidebar:"Seitenleiste ausblenden",createProject:"Neues Projekt erstellen",refresh:"Projekte und Sitzungen aktualisieren (Strg+R)",renameProject:"Projekt umbenennen (F2)",deleteProject:"Projekt aus Seitenleiste entfernen (Entf)",addToFavorites:"Zu Favoriten hinzufügen",removeFromFavorites:"Aus Favoriten entfernen",editSessionName:"Sitzungsname manuell bearbeiten",deleteSession:"Diese Sitzung dauerhaft löschen",activeSessionIndicator:"Kürzlich aktive Sitzung (letzte 10 Minuten)",save:"Speichern",cancel:"Abbrechen",clearSearch:"Suche leeren",openCommandPalette:"Befehlspalette öffnen",attentionRequiredIndicator:"Sitzung erfordert Aufmerksamkeit"},Jv={chat:"Chat",files:"Dateien",git:"Git",terminal:"Terminal",tasks:"Aufgaben"},Qv={refresh:"Aktualisieren",settings:"Einstellungen",collapseAll:"Alle einklappen",expandAll:"Alle ausklappen",cancel:"Abbrechen",save:"Speichern",delete:"Löschen",rename:"Umbenennen",joinCommunity:"Community beitreten",reportIssue:"Problem melden",starOnGithub:"Stern auf GitHub"},Zv={openSource:"Open Source"},Xv={active:"Aktiv",inactive:"Inaktiv",thinking:"Denkt nach...",error:"Fehler",aborted:"Abgebrochen",unknown:"Unbekannt"},ek={justNow:"Gerade eben",oneMinuteAgo:"vor 1 Min.",minutesAgo:"vor {{count}} Min.",oneHourAgo:"vor 1 Std.",hoursAgo:"vor {{count}} Std.",oneDayAgo:"vor 1 Tag",daysAgo:"vor {{count}} Tagen"},tk={deleteConfirm:"Möchtest du das wirklich löschen?",renameSuccess:"Erfolgreich umbenannt",deleteSuccess:"Erfolgreich gelöscht",errorOccurred:"Ein Fehler ist aufgetreten",deleteSessionConfirm:"Möchtest du diese Sitzung wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.",deleteProjectConfirm:"Projekt aus der Seitenleiste entfernen? Deine Projektdateien, Erinnerungen und Sitzungsdaten werden nicht gelöscht.",enterProjectPath:"Bitte gib einen Projektpfad ein",deleteSessionFailed:"Sitzung konnte nicht gelöscht werden. Bitte erneut versuchen.",deleteSessionError:"Fehler beim Löschen der Sitzung. Bitte erneut versuchen.",renameSessionFailed:"Sitzung konnte nicht umbenannt werden. Bitte erneut versuchen.",renameSessionError:"Fehler beim Umbenennen der Sitzung. Bitte erneut versuchen.",deleteProjectFailed:"Projekt konnte nicht entfernt werden. Bitte erneut versuchen.",deleteProjectError:"Fehler beim Entfernen des Projekts. Bitte erneut versuchen.",createProjectFailed:"Projekt konnte nicht erstellt werden. Bitte erneut versuchen.",createProjectError:"Fehler beim Erstellen des Projekts. Bitte erneut versuchen.",updateProjectError:"Fehler beim Aktualisieren des Projekts. Bitte erneut versuchen.",refreshError:"Aktualisierung fehlgeschlagen. Bitte erneut versuchen.",restoreProjectFailed:"Projekt konnte nicht wiederhergestellt werden. Bitte erneut versuchen.",restoreProjectError:"Fehler beim Wiederherstellen des Projekts. Bitte erneut versuchen.",restoreSessionFailed:"Sitzung konnte nicht wiederhergestellt werden. Bitte erneut versuchen.",restoreSessionError:"Fehler beim Wiederherstellen der Sitzung. Bitte erneut versuchen."},nk={updateAvailable:"Update verfügbar",restartRequired:"Update installiert – zum Anwenden Server neu starten"},sk={modeProjects:"Projekte",modeConversations:"Unterhaltungen",conversationsPlaceholder:"In Unterhaltungen suchen...",searching:"Sucht...",sessionTitles:"Sitzungstitel",conversationContents:"Unterhaltungsinhalte",noResults:"Keine Ergebnisse gefunden",tryDifferentQuery:"Versuch eine andere Suchanfrage",matches_one:"{{count}} Treffer",matches_other:"{{count}} Treffer",projectsScanned_one:"{{count}} Projekt durchsucht",projectsScanned_other:"{{count}} Projekte durchsucht"},ik={deleteProject:"Projekt entfernen",deleteSession:"Sitzung löschen",confirmDelete:"Was möchtest du mit",sessionCount_one:"Dieses Projekt enthält {{count}} Unterhaltung.",sessionCount_other:"Dieses Projekt enthält {{count}} Unterhaltungen.",removeFromSidebar:"Nur aus der Seitenleiste entfernen",deleteAllData:"Alle Daten dauerhaft löschen",allConversationsDeleted:"Das Projekt wird aus der Seitenleiste entfernt. Deine Dateien, Erinnerungen und Sitzungsdaten bleiben erhalten.",cannotUndo:"Du kannst das Projekt später erneut hinzufügen."},ak={projects:Vv,app:Kv,sessions:_v,tooltips:Yv,navigation:Jv,actions:Qv,branding:Zv,status:Xv,time:ek,messages:tk,version:nk,search:sk,deleteConfirmation:ik},ok={copy:"Kopieren",copied:"Kopiert",copyCode:"Code kopieren"},rk={copy:"Nachricht kopieren",copied:"Nachricht kopiert",selectFormat:"Kopierformat auswählen",copyAsMarkdown:"Als Markdown kopieren",copyAsText:"Als Text kopieren"},lk={user:"Benutzer:in",error:"Fehler",tool:"Werkzeug",claude:"Claude",cursor:"Cursor",codex:"Codex"},ck={settings:"Werkzeugeinstellungen",error:"Werkzeugfehler",result:"Werkzeugergebnis",viewParams:"Eingabeparameter anzeigen",viewRawParams:"Rohe Parameter anzeigen",viewDiff:"Bearbeitungs-Diff anzeigen für",creatingFile:"Neue Datei wird erstellt:",updatingTodo:"Aufgabenliste wird aktualisiert",read:"Gelesen",readFile:"Datei lesen",updateTodo:"Aufgabenliste aktualisieren",readTodo:"Aufgabenliste lesen",searchResults:"Ergebnisse"},dk={found:"{{count}} {{type}} gefunden",file:"Datei",files:"Dateien",pattern:"Muster:",in:"in:"},uk={updated:"Datei erfolgreich aktualisiert",created:"Datei erfolgreich erstellt",written:"Datei erfolgreich geschrieben",diff:"Diff",newFile:"Neue Datei",viewContent:"Dateiinhalt anzeigen",viewFullOutput:"Vollständige Ausgabe anzeigen ({{count}} Zeichen)",contentDisplayed:"Der Dateiinhalt wird in der Diff-Ansicht oben angezeigt"},pk={title:"Interaktive Eingabeaufforderung",waiting:"Warte auf deine Antwort in der CLI",instruction:"Bitte wähl eine Option in deinem Terminal, in dem Claude läuft.",selectedOption:"✓ Claude hat Option {{number}} ausgewählt",instructionDetail:"In der CLI würdest du diese Option interaktiv mit den Pfeiltasten oder durch Eingabe der Nummer auswählen."},mk={title:"Denkt nach...",emoji:"💭 Denkt nach..."},gk={response:"JSON-Antwort"},hk={grant:"Berechtigung für {{tool}} erteilen",added:"Berechtigung hinzugefügt",addTo:"Fügt {{entry}} zu erlaubten Werkzeugen hinzu.",retry:"Berechtigung gespeichert. Wiederhole die Anfrage, um das Werkzeug zu verwenden.",error:"Berechtigungen konnten nicht aktualisiert werden. Bitte erneut versuchen.",openSettings:"Einstellungen öffnen"},fk={updated:"Aufgabenliste wurde erfolgreich aktualisiert",current:"Aktuelle Aufgabenliste"},bk={viewPlan:"📋 Implementierungsplan anzeigen",title:"Implementierungsplan"},vk={resetAt:"Claude-Nutzungslimit erreicht. Dein Limit wird um **{{time}} {{timezone}}** zurückgesetzt - {{date}}"},kk={permissionMode:"Berechtigungsmodus",modes:{default:"Standardmodus",auto:"Auto Mode",acceptEdits:"Bearbeitungen akzeptieren",bypassPermissions:"Berechtigungen umgehen",plan:"Planungsmodus"},descriptions:{default:"Nur vertrauenswürdige Befehle (ls, cat, grep, git status usw.) werden automatisch ausgeführt. Andere Befehle werden übersprungen. Kann in den Arbeitsbereich schreiben.",auto:"A model classifier decides per tool call whether to approve or deny. Hands-off, but safer than Bypass — denials still happen.",acceptEdits:"Alle Befehle werden automatisch innerhalb des Arbeitsbereichs ausgeführt. Vollautomatischer Modus mit isolierter Ausführung.",bypassPermissions:"Vollständiger Systemzugriff ohne Einschränkungen. Alle Befehle werden automatisch mit vollem Festplatten- und Netzwerkzugriff ausgeführt. Mit Vorsicht verwenden.",plan:"Planungsmodus – keine Befehle werden ausgeführt"},technicalDetails:"Technische Details"},xk={placeholder:"/ für Befehle, @ für Dateien eingeben oder {{provider}} etwas fragen...",placeholderDefault:"Nachricht eingeben...",disabled:"Eingabe deaktiviert",attachFiles:"Dateien anhängen",attachImages:"Bilder anhängen",send:"Senden",stop:"Stoppen",hintText:{ctrlEnter:"Strg+Enter zum Senden • Shift+Enter für neue Zeile • Tab zum Moduswechsel • / für Slash-Befehle",enter:"Enter zum Senden • Shift+Enter für neue Zeile • Tab zum Moduswechsel • / für Slash-Befehle"},clickToChangeMode:"Klicken, um den Berechtigungsmodus zu ändern (oder Tab in der Eingabe drücken)",showAllCommands:"Alle Befehle anzeigen",clearInput:"Eingabe leeren",scrollToBottom:"Nach unten scrollen"},yk={title:"KI-Assistent wählen",description:"Anbieter auswählen, um eine neue Unterhaltung zu starten",selectModel:"Modell auswählen",providerInfo:{anthropic:"von Anthropic",openai:"von OpenAI",cursorEditor:"KI-Code-Editor",google:"von Google"},readyPrompt:{claude:"Bereit, Claude mit {{model}} zu verwenden. Gib unten deine Nachricht ein.",cursor:"Bereit, Cursor mit {{model}} zu verwenden. Gib unten deine Nachricht ein.",codex:"Bereit, Codex mit {{model}} zu verwenden. Gib unten deine Nachricht ein.",default:"Wähl oben einen Anbieter, um zu beginnen"},pressToSearch:"Drücke <kbd>{{shortcut}}</kbd>, um Sitzungen, Dateien und Commits zu durchsuchen"},wk={continue:{title:"Unterhaltung fortsetzen",description:"Stell Fragen zu deinem Code, fordere Änderungen an oder hol Hilfe bei Entwicklungsaufgaben"},loading:{olderMessages:"Ältere Nachrichten werden geladen...",sessionMessages:"Sitzungsnachrichten werden geladen..."},messages:{showingOf:"{{shown}} von {{total}} Nachrichten werden angezeigt",scrollToLoad:"Nach oben scrollen, um mehr zu laden",showingLast:"Letzte {{count}} Nachrichten werden angezeigt ({{total}} gesamt)",loadEarlier:"Frühere Nachrichten laden",loadAll:"Alle Nachrichten laden",loadingAll:"Alle Nachrichten werden geladen...",allLoaded:"Alle Nachrichten geladen",perfWarning:"Alle Nachrichten geladen – Scrollen kann langsamer sein. Klick auf 'Nach unten scrollen', um die Leistung wiederherzustellen."}},Ck={selectProject:{title:"Projekt auswählen",description:"Wähl ein Projekt, um ein interaktives Terminal in diesem Verzeichnis zu öffnen"},status:{newSession:"Neue Sitzung",initializing:"Wird initialisiert...",restarting:"Wird neu gestartet..."},actions:{disconnect:"Trennen",disconnectTitle:"Vom Terminal trennen",restart:"Neu starten",restartTitle:"Terminal neu starten (zuerst trennen)",connect:"Im Terminal fortfahren",connectTitle:"Mit Terminal verbinden"},loading:"Terminal wird geladen...",connecting:"Verbindung zum Terminal wird hergestellt...",startSession:"Neue Claude-Sitzung starten",resumeSession:"Sitzung fortsetzen: {{displayName}}...",runCommand:"{{command}} in {{projectName}} ausführen",startCli:"Claude CLI wird in {{projectName}} gestartet",defaultCommand:"Befehl"},Sk={actions:{thinking:"Denkt nach",processing:"Verarbeitet",analyzing:"Analysiert",working:"Arbeitet",computing:"Berechnet",reasoning:"Schlussfolgert"},state:{live:"Live",paused:"Pausiert"},elapsed:{seconds:"{{count}}s",minutesSeconds:"{{minutes}}m {{seconds}}s",label:"{{time}} vergangen",startingNow:"Startet jetzt"},controls:{stopGeneration:"Generierung stoppen",pressEscToStop:"Jederzeit Esc drücken, um zu stoppen"},providers:{assistant:"Assistent"}},Pk={startChatWithProvider:"Wähl ein Projekt, um mit {{provider}} zu chatten"},Ak={nextTaskPrompt:"Nächste Aufgabe starten"},jk={codeBlock:ok,copyMessage:rk,messageTypes:lk,tools:ck,search:dk,fileOperations:uk,interactive:pk,thinking:mk,json:gk,permissions:hk,todo:fk,plan:bk,usageLimit:vk,codex:kk,input:xk,providerSelection:yk,session:wk,shell:Ck,claudeStatus:Sk,projectSelection:Pk,tasks:Ak},Tk={changes:"Änderungen",previousChange:"Vorherige Änderung",nextChange:"Nächste Änderung",hideDiff:"Diff-Hervorhebung ausblenden",showDiff:"Diff-Hervorhebung anzeigen",settings:"Editor-Einstellungen",collapse:"Editor einklappen",expand:"Editor auf volle Breite erweitern"},Ik="{{fileName}} wird geladen...",Ek={showingChanges:"Änderungen werden angezeigt"},Mk={copyPath:"Dateipfad kopieren",pathCopied:"Dateipfad kopiert",download:"Datei herunterladen",save:"Speichern",saving:"Wird gespeichert...",saved:"Gespeichert!",exitFullscreen:"Vollbild beenden",fullscreen:"Vollbild",close:"Schließen",previewMarkdown:"Markdown-Vorschau",editMarkdown:"Markdown bearbeiten"},zk={lines:"Zeilen:",characters:"Zeichen:",shortcuts:"Strg+S zum Speichern • Esc zum Schließen"},Dk={title:"Binärdatei",message:'Die Datei "{{fileName}}" kann im Texteditor nicht angezeigt werden, da es sich um eine Binärdatei handelt.'},Nk={toolbar:Tk,loading:Ik,header:Ek,actions:Mk,footer:zk,binaryFile:Dk},$k={title:"TaskMaster AI ist nicht konfiguriert",description:"TaskMaster hilft dabei, komplexe Projekte mit KI-Unterstützung in überschaubare Aufgaben aufzuteilen",whatIsTitle:"🎯 Was ist TaskMaster?",features:{aiPowered:"KI-gestütztes Aufgabenmanagement: Komplexe Projekte in handhabbare Unteraufgaben aufteilen",prdTemplates:"PRD-Vorlagen: Aufgaben aus Produktanforderungsdokumenten generieren",dependencyTracking:"Abhängigkeitsverfolgung: Aufgabenbeziehungen und Ausführungsreihenfolge verstehen",progressVisualization:"Fortschrittsvisualisierung: Kanban-Boards und detaillierte Aufgabenanalysen",cliIntegration:"CLI-Integration: Taskmaster-Befehle für erweiterte Workflows verwenden"},initializeButton:"TaskMaster AI initialisieren"},Rk={title:"Erste Schritte mit TaskMaster",subtitle:"TaskMaster ist initialisiert! Hier ist, was du als Nächstes tun kannst:",steps:{createPRD:{title:"Produktanforderungsdokument (PRD) erstellen",description:"Besprich deine Projektidee und erstelle ein PRD, das beschreibt, was du bauen möchtest.",addButton:"PRD hinzufügen",existingPRDs:"Vorhandene PRDs:"},generateTasks:{title:"Aufgaben aus PRD generieren",description:"Sobald du ein PRD hast, bitte deinen KI-Assistenten, es zu analysieren. TaskMaster wird es automatisch in überschaubare Aufgaben mit Implementierungsdetails aufteilen."},analyzeTasks:{title:"Aufgaben analysieren und erweitern",description:"Bitte deinen KI-Assistenten, die Aufgabenkomplexität zu analysieren und sie in detaillierte Unteraufgaben für eine einfachere Implementierung zu erweitern."},startBuilding:{title:"Mit dem Bauen beginnen",description:"Bitte deinen KI-Assistenten, mit der Bearbeitung von Aufgaben zu beginnen, deren Status zu aktualisieren und neue Aufgaben hinzuzufügen, wenn dein Projekt sich weiterentwickelt."}},tip:"💡 Tipp: Beginne mit einem PRD, um das Beste aus TaskMasters KI-gestützter Aufgabengenerierung herauszuholen"},Lk={title:"TaskMaster-Einrichtung",subtitle:"Interaktives CLI für {{projectName}}",willStart:"Die TaskMaster-Initialisierung startet automatisch",completed:"TaskMaster-Einrichtung abgeschlossen! Du kannst dieses Fenster jetzt schließen.",closeButton:"Schließen",closeContinueButton:"Schließen & Fortfahren"},Fk={title:"Erste Schritte mit TaskMaster",subtitle:"Dein Leitfaden für produktives Aufgabenmanagement",examples:{parsePRD:`💬 Beispiel:
|
|
24
24
|
"Ich habe gerade ein neues Projekt mit Claude Task Master initialisiert. Ich habe ein PRD unter .taskmaster/docs/prd.txt. Kannst du mir helfen, es zu analysieren und die ersten Aufgaben einzurichten?"`,expandTask:`💬 Beispiel:
|
|
25
25
|
"Aufgabe 5 scheint komplex. Kannst du sie in Unteraufgaben aufteilen?"`,addTask:`💬 Beispiel:
|
|
26
|
-
"Bitte füge eine neue Aufgabe hinzu, um Benutzerprofilbild-Uploads mit Cloudinary zu implementieren, und recherchiere den besten Ansatz."`},moreExamples:"Weitere Beispiele und Verwendungsmuster anzeigen →",proTips:{title:"💡 Profi-Tipps",search:"Verwende die Suchleiste, um bestimmte Aufgaben schnell zu finden",views:"Wechsle mit den Ansichts-Umschaltern zwischen Kanban-, Listen- und Rasteransicht",filters:"Verwende Filter, um dich auf bestimmte Aufgabenstatus oder Prioritäten zu konzentrieren",details:"Klicke auf eine Aufgabe, um detaillierte Informationen anzuzeigen und Unteraufgaben zu verwalten"},learnMore:{title:"📚 Mehr erfahren",description:"TaskMaster AI ist ein fortschrittliches Aufgabenmanagementsystem für Entwickler:innen. Dokumentation, Beispiele und Möglichkeiten zur Mitarbeit am Projekt.",githubButton:"Auf GitHub ansehen"}},Tk={placeholder:"Aufgaben suchen..."},Ik={button:"Filter",status:"Status",priority:"Priorität",sortBy:"Sortieren nach",allStatuses:"Alle Status",allPriorities:"Alle Prioritäten",showing:"{{filtered}} von {{total}} Aufgaben werden angezeigt",clearFilters:"Filter zurücksetzen"},Ek={id:"ID",status:"Status",priority:"Priorität",idAsc:"ID (aufsteigend)",idDesc:"ID (absteigend)",titleAsc:"Titel (A-Z)",titleDesc:"Titel (Z-A)",statusAsc:"Status (Ausstehend zuerst)",statusDesc:"Status (Erledigt zuerst)",priorityAsc:"Priorität (Hoch zuerst)",priorityDesc:"Priorität (Niedrig zuerst)"},Mk={kanban:"Kanban-Ansicht",list:"Listenansicht",grid:"Rasteransicht"},zk={pending:"📋 Ausstehend",inProgress:"🚀 In Bearbeitung",done:"✅ Erledigt",blocked:"🚫 Blockiert",deferred:"⏳ Zurückgestellt",cancelled:"❌ Abgebrochen",noTasksYet:"Noch keine Aufgaben",tasksWillAppear:"Aufgaben werden hier angezeigt",moveTasksHere:"Aufgaben hierher verschieben, wenn sie gestartet werden",completedTasksHere:"Abgeschlossene Aufgaben erscheinen hier",statusTasksHere:"Aufgaben mit diesem Status werden hier angezeigt"},Dk={help:"TaskMaster-Leitfaden für Erste Schritte",prds:"PRDs",addPRD:"PRD hinzufügen",addTask:"Aufgabe hinzufügen",createNewPRD:"Neues PRD erstellen",prdsAvailable:"{{count}} PRD(s) verfügbar"},Nk={modified:"Geändert: {{date}}"},$k={pending:"Ausstehend","in-progress":"In Bearbeitung",done:"Erledigt",blocked:"Blockiert",deferred:"Zurückgestellt",cancelled:"Abgebrochen"},Rk={high:"Hoch",medium:"Mittel",low:"Niedrig"},Lk={title:"Keine Aufgaben entsprechen deinen Filtern",description:"Versuche, deine Such- oder Filterkriterien anzupassen."},Fk={notConfigured:Sk,gettingStarted:Pk,setupModal:Ak,helpGuide:jk,search:Tk,filters:Ik,sort:Ek,views:Mk,kanban:zk,buttons:Dk,prd:Nk,statuses:$k,priorities:Rk,noMatchingTasks:Lk},Bk={save:"Kaydet",cancel:"İptal",delete:"Sil",create:"Oluştur",edit:"Düzenle",close:"Kapat",confirm:"Onayla",submit:"Gönder",retry:"Tekrar Dene",refresh:"Yenile",search:"Ara",clear:"Temizle",copy:"Kopyala",download:"İndir",upload:"Yükle",browse:"Gözat"},Gk={chat:"Sohbet",shell:"Shell",files:"Dosyalar",git:"Kaynak Kontrolü",tasks:"Görevler",browser:"Browser",computer:"Bilgisayar"},Hk={loading:"Yükleniyor...",success:"Başarılı",error:"Hata",failed:"Başarısız",pending:"Beklemede",completed:"Tamamlandı",inProgress:"Sürüyor"},Ok={savedSuccessfully:"Başarıyla kaydedildi",deletedSuccessfully:"Başarıyla silindi",updatedSuccessfully:"Başarıyla güncellendi",operationFailed:"İşlem başarısız",networkError:"Ağ hatası. Lütfen bağlantını kontrol et.",unauthorized:"Yetkisiz erişim. Lütfen giriş yap.",notFound:"Bulunamadı",invalidInput:"Geçersiz girdi",requiredField:"Bu alan zorunlu",unknownError:"Bilinmeyen bir hata oluştu"},Uk={settings:"Ayarlar",home:"Ana Sayfa",back:"Geri",next:"İleri",previous:"Önceki",logout:"Çıkış Yap"},qk={language:"Dil",theme:"Tema",darkMode:"Koyu Mod",lightMode:"Açık Mod",name:"İsim",description:"Açıklama",enabled:"Etkin",disabled:"Devre Dışı",optional:"İsteğe Bağlı",version:"Sürüm",select:"Seç",selectAll:"Tümünü Seç",deselectAll:"Tümünün Seçimini Kaldır"},Wk={justNow:"Az önce",minutesAgo:"{{count}} dakika önce",hoursAgo:"{{count}} saat önce",daysAgo:"{{count}} gün önce",yesterday:"Dün"},Vk={newFile:"Yeni Dosya",newFolder:"Yeni Klasör",rename:"Yeniden Adlandır",move:"Taşı",copyPath:"Yolu Kopyala",openInEditor:"Editörde Aç"},Kk={loading:"WindCli Yükleniyor",settingUpWorkspace:"Çalışma alanın hazırlanıyor...",chooseProject:"Projeni Seç",selectProjectDescription:"Claude ile kodlamaya başlamak için kenar çubuğundan bir proje seç. Her proje kendi sohbet oturumlarını ve dosya geçmişini içerir.",tip:"İpucu",createProjectMobile:"Projelere erişmek için yukarıdaki menü düğmesine dokun",createProjectDesktop:"Kenar çubuğundaki klasör simgesine tıklayarak yeni bir proje oluştur",newSession:"Yeni Oturum",untitledSession:"Adsız Oturum",projectFiles:"Proje Dosyaları"},_k={loading:"Dosyalar yükleniyor...",files:"Dosyalar",simpleView:"Basit görünüm",compactView:"Kompakt görünüm",detailedView:"Detaylı görünüm",searchPlaceholder:"Dosya ve klasörlerde ara...",clearSearch:"Aramayı temizle",name:"İsim",size:"Boyut",modified:"Değiştirilme",permissions:"İzinler",noFilesFound:"Dosya bulunamadı",checkProjectPath:"Proje yolunun erişilebilir olduğunu kontrol et",noMatchesFound:"Eşleşme bulunamadı",tryDifferentSearch:"Farklı bir arama terimi dene veya aramayı temizle",justNow:"az önce",minAgo:"{{count}} dakika önce",hoursAgo:"{{count}} saat önce",daysAgo:"{{count}} gün önce",newFile:"Yeni Dosya (Cmd+N)",newFolder:"Yeni Klasör (Cmd+Shift+N)",refresh:"Yenile",collapseAll:"Tümünü Daralt",context:{rename:"Yeniden Adlandır",delete:"Sil",copyPath:"Yolu Kopyala",download:"İndir",newFile:"Yeni Dosya",newFolder:"Yeni Klasör",upload:"Dosya Yükle",refresh:"Yenile",menuLabel:"Dosya bağlam menüsü",loading:"Yükleniyor..."}},Yk={title:"Yeni Proje Oluştur",steps:{type:"Tür",configure:"Yapılandır",confirm:"Onayla"},step1:{question:"Zaten bir çalışma alanın var mı, yoksa yeni bir tane mi oluşturmak istersin?",existing:{title:"Mevcut Çalışma Alanı",description:"Sunucumda zaten bir çalışma alanım var, sadece proje listesine eklemek istiyorum"},new:{title:"Yeni Çalışma Alanı",description:"Yeni bir çalışma alanı oluştur, istersen bir GitHub deposundan klonla"}},step2:{existingPath:"Çalışma Alanı Yolu",newPath:"Çalışma Alanı Yolu",existingPlaceholder:"/mevcut/calisma-alani/yolu",newPlaceholder:"/yeni/calisma-alani/yolu",existingHelp:"Mevcut çalışma alanı dizinine giden tam yol",newHelp:"Çalışma alanı dizinine giden tam yol",githubUrl:"GitHub URL'si (İsteğe Bağlı)",githubPlaceholder:"https://github.com/kullanici/depo",githubHelp:"İsteğe bağlı: bir depoyu klonlamak için GitHub URL'si gir",githubAuth:"GitHub Kimlik Doğrulama (İsteğe Bağlı)",githubAuthHelp:"Yalnızca özel depolar için gereklidir. Genel depolar kimlik doğrulama olmadan klonlanabilir.",loadingTokens:"Kayıtlı token'lar yükleniyor...",storedToken:"Kayıtlı Token",newToken:"Yeni Token",nonePublic:"Yok (Genel)",selectToken:"Token Seç",selectTokenPlaceholder:"-- Bir token seç --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"Bu token sadece bu işlem için kullanılacak",publicRepoInfo:"Genel depolar kimlik doğrulama gerektirmez. Genel bir depo klonluyorsan token girmeyi atlayabilirsin.",noTokensHelp:"Kayıtlı token yok. Kolay tekrar kullanım için Ayarlar → API Anahtarları bölümünden token ekleyebilirsin.",optionalTokenPublic:"GitHub Token (Genel Depolar için İsteğe Bağlı)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (genel depolar için boş bırak)"},step3:{reviewConfig:"Yapılandırmanı Gözden Geçir",existingWorkspace:"Mevcut Çalışma Alanı",newWorkspace:"Yeni Çalışma Alanı",path:"Yol:",cloneFrom:"Şuradan Klonla:",authentication:"Kimlik Doğrulama:",usingStoredToken:"Kayıtlı token kullanılıyor:",usingProvidedToken:"Girilen token kullanılıyor",noAuthentication:"Kimlik doğrulama yok",sshKey:"SSH Anahtarı",existingInfo:"Çalışma alanı proje listene eklenecek ve Claude/Cursor oturumları için kullanılabilir olacak.",newWithClone:"Depo bu klasöre klonlanacak.",newEmpty:"Çalışma alanı proje listene eklenecek ve Claude/Cursor oturumları için kullanılabilir olacak.",cloningRepository:"Depo klonlanıyor..."},buttons:{cancel:"İptal",back:"Geri",next:"İleri",createProject:"Projeyi Oluştur",creating:"Oluşturuluyor...",cloning:"Klonlanıyor..."},errors:{selectType:"Lütfen mevcut çalışma alanın olduğunu mu yoksa yeni oluşturmak mı istediğini seç",providePath:"Lütfen bir çalışma alanı yolu gir",failedToCreate:"Çalışma alanı oluşturulamadı",failedToCreateFolder:"Klasör oluşturulamadı"}},Jk={genericTool:"bir araç",codes:{generic:{info:{title:"Bildirim"}},permission:{required:{title:"Aksiyon Gerekli",body:"{{toolName}} kararını bekliyor."}},run:{stopped:{title:"Çalıştırma Durduruldu",body:"Sebep: {{reason}}"},failed:{title:"Çalıştırma Başarısız"}},agent:{notification:{title:"Ajan Bildirimi"}}}},Qk={title:"Güncelleme Mevcut",newVersionReady:"Yeni bir sürüm hazır",currentVersion:"Mevcut Sürüm",latestVersion:"Son Sürüm",whatsNew:"Yenilikler:",viewFullRelease:"Tam sürüm notlarını gör",updateProgress:"Güncelleme İlerlemesi:",manualUpgrade:"Manuel yükseltme:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:'Veya güncellemeyi otomatik çalıştırmak için "Şimdi Güncelle"ye tıkla.',updateCompleted:"Güncelleme başarıyla tamamlandı!",restartServer:"Değişikliklerin uygulanması için sunucuyu yeniden başlat.",updateFailed:"Güncelleme başarısız",buttons:{close:"Kapat",later:"Daha Sonra",copyCommand:"Komutu Kopyala",updateNow:"Şimdi Güncelle",updating:"Güncelleniyor..."},ariaLabels:{closeModal:"Sürüm yükseltme modalını kapat",showSidebar:"Kenar çubuğunu göster",settings:"Ayarlar",updateAvailable:"Güncelleme mevcut",closeSidebar:"Kenar çubuğunu kapat"}},Zk={buttons:Bk,tabs:Gk,status:Hk,messages:Ok,navigation:Uk,common:qk,time:Wk,fileOperations:Vk,mainContent:Kk,fileTree:_k,projectWizard:Yk,notifications:Jk,versionUpdate:Qk},Xk="Ayarlar",ex={account:"Hesap",permissions:"İzinler",mcpServers:"MCP Sunucuları",appearance:"Görünüm"},tx={title:"Hesap",language:"Dil",languageLabel:"Görüntüleme Dili",languageDescription:"Arayüz için tercih ettiğin dili seç",username:"Kullanıcı Adı",email:"E-posta",profile:"Profil",changePassword:"Şifreyi Değiştir"},nx={title:"MCP Sunucuları",addServer:"Sunucu Ekle",editServer:"Sunucuyu Düzenle",deleteServer:"Sunucuyu Sil",serverName:"Sunucu Adı",serverType:"Sunucu Türü",config:"Yapılandırma",testConnection:"Bağlantıyı Test Et",status:"Durum",connected:"Bağlı",disconnected:"Bağlantı kesildi",scope:{label:"Kapsam",user:"Kullanıcı",project:"Proje"}},sx={title:"Görünüm",theme:"Tema",codeEditor:"Kod Editörü",editorTheme:"Editör Teması",wordWrap:"Kelime Kaydırma",showMinimap:"Minimap'i Göster",lineNumbers:"Satır Numaraları",fontSize:"Yazı Tipi Boyutu"},ix={saveChanges:"Değişiklikleri Kaydet",resetToDefaults:"Varsayılanlara Döndür",cancelChanges:"Değişiklikleri İptal Et"},ax={title:"Hızlı Ayarlar",sections:{appearance:"Görünüm",toolDisplay:"Araç Gösterimi",inputSettings:"Girdi Ayarları"},darkMode:"Koyu Mod",showRawParameters:"Ham parametreleri göster",showThinking:"Düşünmeyi göster",sendByCtrlEnter:"Ctrl+Enter ile gönder",sendByCtrlEnterDescription:"Etkinleştirildiğinde, Ctrl+Enter'a basmak yalnız Enter yerine mesajı gönderir. IME (girdi metot düzenleyici) kullananlar için yanlışlıkla göndermeyi önler.",dragHandle:{dragging:"Tutamaç sürükleniyor",closePanel:"Ayarlar panelini kapat",openPanel:"Ayarlar panelini aç",draggingStatus:"Sürükleniyor...",toggleAndMove:"Açıp kapamak için tıkla, taşımak için sürükle"}},ox={title:"Terminal Kısayolları",sectionKeys:"Tuşlar",sectionNavigation:"Gezinme",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"Yukarı Ok",arrowDown:"Aşağı Ok",scrollDown:"Aşağı Kaydır",handle:{closePanel:"Kısayol panelini kapat",openPanel:"Kısayol panelini aç"}},rx={label:"Ayarlar",agents:"Ajanlar",appearance:"Görünüm",git:"Git",apiTokens:"API ve Token'lar",tasks:"Görevler",computer:"Bilgisayar Kullanımı",notifications:"Bildirimler",plugins:"Eklentiler",about:"Hakkında"},lx={title:"Bildirimler",description:"Hangi bildirim etkinliklerini alacağını kontrol et.",webPush:{title:"Web Push Bildirimleri",enable:"Push Bildirimlerini Etkinleştir",disable:"Push Bildirimlerini Devre Dışı Bırak",enabled:"Push bildirimleri etkin",loading:"Güncelleniyor...",unsupported:"Bu tarayıcıda push bildirimleri desteklenmiyor.",denied:"Push bildirimleri engellendi. Lütfen tarayıcı ayarlarından izin ver."},sound:{title:"Ses",description:"Sohbet çalışması tamamlandığında kısa bir ton çal.",enabled:"Etkin",test:"Sesi test et"},events:{title:"Etkinlik Türleri",actionRequired:"Aksiyon gerekli",stop:"Çalıştırma durduruldu",error:"Çalıştırma başarısız"}},cx={darkMode:{label:"Koyu Mod",description:"Açık ve koyu temalar arasında geçiş yap"},projectSorting:{label:"Proje Sıralama",description:"Projelerin kenar çubuğunda nasıl sıralanacağı",alphabetical:"Alfabetik",recentActivity:"Son Etkinlik"},codeEditor:{title:"Kod Editörü",theme:{label:"Editör Teması",description:"Kod editörü için varsayılan tema"},wordWrap:{label:"Kelime Kaydırma",description:"Editörde kelime kaydırmayı varsayılan olarak etkinleştir"},showMinimap:{label:"Minimap'i Göster",description:"Diff görünümünde kolay gezinme için minimap göster"},lineNumbers:{label:"Satır Numaralarını Göster",description:"Editörde satır numaralarını göster"},fontSize:{label:"Yazı Tipi Boyutu",description:"Editör yazı tipi boyutu (piksel)"}}},dx={title:{add:"MCP Sunucusu Ekle",edit:"MCP Sunucusunu Düzenle"},importMode:{form:"Form Girdisi",json:"JSON İçe Aktar"},scope:{label:"Kapsam",userGlobal:"Kullanıcı (Genel)",projectLocal:"Proje (Yerel)",userDescription:"Kullanıcı kapsamı: Makinendeki tüm projelerde kullanılabilir",projectDescription:"Yerel kapsam: Yalnızca seçili projede kullanılabilir",cannotChange:"Mevcut bir sunucu düzenlenirken kapsam değiştirilemez"},fields:{serverName:"Sunucu Adı",transportType:"Taşıma Türü",command:"Komut",arguments:"Argümanlar (satır başına bir tane)",jsonConfig:"JSON Yapılandırması",url:"URL",envVars:"Ortam Değişkenleri (KEY=değer, satır başına bir tane)",headers:"Başlıklar (KEY=değer, satır başına bir tane)",selectProject:"Bir proje seç..."},placeholders:{serverName:"benim-sunucum"},validation:{missingType:"Zorunlu alan eksik: type",stdioRequiresCommand:"stdio türü command alanı gerektirir",httpRequiresUrl:"{{type}} türü url alanı gerektirir",invalidJson:"Geçersiz JSON formatı",jsonHelp:"MCP sunucu yapılandırmanı JSON formatında yapıştır. Örnek formatlar:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"Yapılandırma Detayları ({{configFile}} dosyasından)",projectPath:"Yol: {{path}}",actions:{cancel:"İptal",saving:"Kaydediliyor...",addServer:"Sunucu Ekle",updateServer:"Sunucuyu Güncelle"}},ux={success:"Ayarlar başarıyla kaydedildi!",error:"Ayarlar kaydedilemedi",saving:"Kaydediliyor..."},px={save:"Ayarları Kaydet",cancel:"İptal"},mx={title:"Git Yapılandırması",description:"Commit'ler için git kimliğini yapılandır. Bu ayarlar git config --global ile genel olarak uygulanacak",name:{label:"Git Adı",help:"Git commit'leri için adın"},email:{label:"Git E-postası",help:"Git commit'leri için e-postan"},actions:{save:"Yapılandırmayı Kaydet",saving:"Kaydediliyor..."},status:{success:"Başarıyla kaydedildi"}},gx={title:"API Anahtarları",description:"Diğer uygulamalardan harici API'ye erişmek için API anahtarları üret.",newKey:{alertTitle:"⚠️ API Anahtarını Kaydet",alertMessage:"Bu anahtarı yalnızca bu sefer göreceksin. Güvenli bir yerde sakla.",iveSavedIt:"Kaydettim"},form:{placeholder:"API Anahtar Adı (ör. Production Sunucu)",createButton:"Oluştur",cancelButton:"İptal"},newButton:"Yeni API Anahtarı",empty:"Henüz API anahtarı oluşturulmamış.",list:{created:"Oluşturuldu:",lastUsed:"Son kullanım:"},confirmDelete:"Bu API anahtarını silmek istediğinden emin misin?",status:{active:"Aktif",inactive:"Pasif"},github:{title:"GitHub Token'ları",description:"Harici API üzerinden özel depoları klonlamak için GitHub Kişisel Erişim Token'ları ekle.",descriptionAlt:"Özel depoları klonlamak için GitHub Kişisel Erişim Token'ları ekle. Token'ları saklamadan API isteklerinde doğrudan da geçebilirsin.",addButton:"Token Ekle",form:{namePlaceholder:"Token Adı (ör. Kişisel Depolar)",tokenPlaceholder:"GitHub Kişisel Erişim Token'ı (ghp_...)",descriptionPlaceholder:"Açıklama (isteğe bağlı)",addButton:"Token Ekle",cancelButton:"İptal",howToCreate:"GitHub Kişisel Erişim Token'ı nasıl oluşturulur →"},empty:"Henüz GitHub token'ı eklenmemiş.",added:"Eklendi:",confirmDelete:"Bu GitHub token'ını silmek istediğinden emin misin?"},apiDocsLink:"API Dokümantasyonu",documentation:{title:"Harici API Dokümantasyonu",description:"Uygulamalarından Claude/Cursor oturumları tetiklemek için harici API'nin nasıl kullanılacağını öğren.",viewLink:"API Dokümantasyonunu Görüntüle →"},loading:"Yükleniyor...",version:{updateAvailable:"Güncelleme mevcut: v{{version}}"}},hx={checking:"TaskMaster kurulumu kontrol ediliyor...",notInstalled:{title:"TaskMaster AI CLI Kurulu Değil",description:"Görev yönetim özelliklerini kullanmak için TaskMaster CLI gereklidir. Başlamak için kur:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"GitHub'da Görüntüle",afterInstallation:"Kurulumdan sonra:",steps:{restart:"Bu uygulamayı yeniden başlat",autoAvailable:"TaskMaster özellikleri otomatik olarak kullanılabilir hale gelecek",initCommand:"Proje dizininde task-master init komutunu kullan"}},settings:{enableLabel:"TaskMaster Entegrasyonunu Etkinleştir",enableDescription:"TaskMaster görevlerini, banner'larını ve kenar çubuğu göstergelerini arayüz genelinde göster"}},fx={authStatus:{checking:"Kontrol ediliyor...",connected:"Bağlı",notConnected:"Bağlı değil",disconnected:"Bağlantı kesildi",checkingAuth:"Kimlik doğrulama durumu kontrol ediliyor...",loggedInAs:"{{email}} olarak giriş yapıldı",authenticatedUser:"kimliği doğrulanmış kullanıcı"},account:{claude:{description:"Anthropic Claude AI asistanı"},cursor:{description:"Cursor AI destekli kod editörü"},codex:{description:"OpenAI Codex AI asistanı"}},connectionStatus:"Bağlantı Durumu",login:{title:"Giriş Yap",reAuthenticate:"Yeniden Kimlik Doğrula",description:"AI özelliklerini etkinleştirmek için {{agent}} hesabına giriş yap",reAuthDescription:"Farklı bir hesapla giriş yap veya kimlik bilgilerini yenile",button:"Giriş Yap",reLoginButton:"Tekrar Giriş Yap"},error:"Hata: {{error}}"},bx={title:"İzin Ayarları",skipPermissions:{label:"İzin istemlerini atla (dikkatli kullan)",claudeDescription:"--dangerously-skip-permissions bayrağının eşdeğeri",cursorDescription:"Cursor CLI'daki -f bayrağının eşdeğeri"},allowedTools:{title:"İzin Verilen Araçlar",description:"İzin istemeden otomatik olarak izin verilen araçlar",placeholder:'ör. "Bash(git log:*)" veya "Write"',quickAdd:"Yaygın araçları hızlı ekle:",empty:"İzin verilen araç yapılandırılmamış"},blockedTools:{title:"Engellenen Araçlar",description:"İzin istemeden otomatik olarak engellenen araçlar",placeholder:'ör. "Bash(rm:*)"',empty:"Engellenen araç yapılandırılmamış"},allowedCommands:{title:"İzin Verilen Shell Komutları",description:"İzin istemeden otomatik olarak izin verilen shell komutları",placeholder:'ör. "Shell(ls)" veya "Shell(git status)"',quickAdd:"Yaygın komutları hızlı ekle:",empty:"İzin verilen komut yapılandırılmamış"},blockedCommands:{title:"Engellenen Shell Komutları",description:"Otomatik olarak engellenen shell komutları",placeholder:'ör. "Shell(rm -rf)" veya "Shell(sudo)"',empty:"Engellenen komut yapılandırılmamış"},toolExamples:{title:"Araç Desen Örnekleri:",bashGitLog:"- Tüm git log komutlarına izin ver",bashGitDiff:"- Tüm git diff komutlarına izin ver",write:"- Tüm Write aracı kullanımına izin ver",bashRm:"- Tüm rm komutlarını engelle (tehlikeli)"},shellExamples:{title:"Shell Komut Örnekleri:",ls:"- ls komutuna izin ver",gitStatus:"- git status'a izin ver",npmInstall:"- npm install'a izin ver",rmRf:"- Özyinelemeli silmeyi engelle"},codex:{permissionMode:"İzin Modu",description:"Codex'in dosya değişiklikleri ve komut çalıştırmayı nasıl ele aldığını kontrol eder",modes:{default:{title:"Varsayılan",description:"Sadece güvenilir komutlar (ls, cat, grep, git status, vb.) otomatik çalışır. Diğer komutlar atlanır. Çalışma alanına yazabilir."},acceptEdits:{title:"Düzenlemeleri Kabul Et",description:"Tüm komutlar çalışma alanı içinde otomatik çalışır. Sandbox'lu çalıştırma ile tam otomatik mod."},bypassPermissions:{title:"İzinleri Atla",description:"Kısıtlama olmadan tam sistem erişimi. Tüm komutlar tam disk ve ağ erişimiyle otomatik çalışır. Dikkatli kullan."}},technicalDetails:"Teknik ayrıntılar",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted. Güvenilir komutlar: cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find (-exec olmadan), vb.",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never. Tüm komutlar proje dizini içinde otomatik çalışır.",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never. Tam sistem erişimi, yalnızca güvenilir ortamlarda kullan.",overrideNote:"Sohbet arayüzündeki mod düğmesini kullanarak bunu oturum başına geçersiz kılabilirsin."}},actions:{add:"Ekle"}},vx={title:"MCP Sunucuları",description:{claude:"Model Context Protocol sunucuları Claude'a ek araçlar ve veri kaynakları sağlar",cursor:"Model Context Protocol sunucuları Cursor'a ek araçlar ve veri kaynakları sağlar",codex:"Model Context Protocol sunucuları Codex'e ek araçlar ve veri kaynakları sağlar"},addButton:"MCP Sunucusu Ekle",empty:"Yapılandırılmış MCP sunucusu yok",serverType:"Tür",scope:{local:"yerel",user:"kullanıcı"},config:{command:"Komut",url:"URL",args:"Argümanlar",environment:"Ortam"},tools:{title:"Araçlar",count:"({{count}}):",more:"+{{count}} tane daha"},actions:{edit:"Sunucuyu düzenle",delete:"Sunucuyu sil"},help:{title:"Codex MCP Hakkında",description:"Codex stdio tabanlı MCP sunucularını destekler. Codex'in yeteneklerini ek araçlar ve kaynaklarla genişleten sunucular ekleyebilirsin."}},kx={title:"Eklentiler",description:"Arayüzü özel eklentilerle genişlet. Git'ten yükle veya ~/.claude-code-ui/plugins/ klasörüne bir dizin bırak.",installPlaceholder:"https://github.com/kullanici/benim-eklentim",installButton:"Yükle",installing:"Yükleniyor…",securityWarning:"Yalnızca kaynak kodunu incelediğin veya güvendiğin geliştiricilerin eklentilerini yükle.",scanningPlugins:"Eklentiler taranıyor…",noPluginsInstalled:"Yüklü eklenti yok",pullLatest:"Git'ten en güncelini çek",noGitRemote:"Git uzak sunucusu yok — güncelleme kullanılamıyor",uninstallPlugin:"Eklentiyi kaldır",confirmUninstall:"Onaylamak için tekrar tıkla",confirmUninstallMessage:"{{name}} kaldırılsın mı? Bu işlem geri alınamaz.",cancel:"İptal",remove:"Kaldır",updateFailed:"Güncelleme başarısız",installFailed:"Yükleme başarısız",uninstallFailed:"Kaldırma başarısız",toggleFailed:"Açıp kapama başarısız",starterPluginLabel:"Başlangıç Eklentisi",starter:"Başlangıç",docs:"Dokümanlar",starterPlugin:{name:"Proje İstatistikleri",badge:"başlangıç",description:"Projen için dosya sayıları, kod satırları, dosya türü dağılımı ve son etkinlik.",install:"Yükle"},terminalPlugin:{name:"Terminal",badge:"resmi",description:"Arayüzün içinde tam shell erişimiyle entegre terminal.",install:"Yükle"},morePlugins:"Daha Fazla",enable:"Etkinleştir",disable:"Devre Dışı Bırak",installAriaLabel:"Eklenti git deposu URL'si",tab:"sekme",runningStatus:"çalışıyor"},xx={title:Xk,tabs:ex,account:tx,mcp:nx,appearance:sx,actions:ix,quickSettings:ax,terminalShortcuts:ox,mainTabs:rx,notifications:lx,appearanceSettings:cx,mcpForm:dx,saveStatus:ux,footerActions:px,git:mx,apiKeys:gx,tasks:hx,agents:fx,permissions:bx,mcpServers:vx,pluginSettings:kx},yx={title:"Tekrar Hoş Geldin",description:"Kendi WindCli hesabına giriş yap",username:"Kullanıcı Adı",password:"Şifre",submit:"Giriş Yap",loading:"Giriş yapılıyor...",errors:{invalidCredentials:"Kullanıcı adı veya şifre hatalı",requiredFields:"Lütfen tüm alanları doldur",networkError:"Ağ hatası. Lütfen tekrar dene."},placeholders:{username:"Kullanıcı adını gir",password:"Şifreni gir"}},wx={title:"Hesap Oluştur",username:"Kullanıcı Adı",password:"Şifre",confirmPassword:"Şifreyi Onayla",submit:"Hesabı Oluştur",loading:"Hesap oluşturuluyor...",errors:{passwordMismatch:"Şifreler eşleşmiyor",usernameTaken:"Bu kullanıcı adı zaten alınmış",weakPassword:"Şifre çok zayıf"}},Cx={title:"Çıkış Yap",confirm:"Çıkış yapmak istediğinden emin misin?",button:"Çıkış Yap"},Sx={login:yx,register:wx,logout:Cx},Px={title:"Projeler",newProject:"Yeni Proje",deleteProject:"Projeyi Kaldır",renameProject:"Projeyi Yeniden Adlandır",noProjects:"Proje bulunamadı",loadingProjects:"Projeler yükleniyor...",searchPlaceholder:"Projelerde ara...",projectNamePlaceholder:"Proje adı",starred:"Yıldızlı",all:"Tümü",untitledSession:"Adsız Oturum",newSession:"Yeni Oturum",codexSession:"Codex Oturumu",fetchingProjects:"Claude projelerin ve oturumların getiriliyor",projects:"proje",noMatchingProjects:"Eşleşen proje yok",tryDifferentSearch:"Arama terimini değiştirmeyi dene",runClaudeCli:"Başlamak için bir proje dizininde Claude CLI çalıştır"},Ax={title:"WindCli",subtitle:"AI kodlama asistanı arayüzü"},jx={title:"Oturumlar",newSession:"Yeni Oturum",deleteSession:"Oturumu Sil",renameSession:"Oturumu Yeniden Adlandır",noSessions:"Henüz oturum yok",loadingSessions:"Oturumlar yükleniyor...",unnamed:"Adsız",loading:"Yükleniyor...",showMore:"Daha fazla oturum göster"},Tx={viewEnvironments:"Ortamları Görüntüle",hideSidebar:"Kenar çubuğunu gizle",createProject:"Yeni proje oluştur",refresh:"Projeleri ve oturumları yenile (Ctrl+R)",renameProject:"Projeyi yeniden adlandır (F2)",deleteProject:"Projeyi kenar çubuğundan kaldır (Delete)",addToFavorites:"Favorilere ekle",removeFromFavorites:"Favorilerden çıkar",editSessionName:"Oturum adını elle düzenle",deleteSession:"Bu oturumu kalıcı olarak sil",activeSessionIndicator:"Yakın zamanda etkin oturum (son 10 dakika)",save:"Kaydet",cancel:"İptal",clearSearch:"Aramayı temizle",openCommandPalette:"Komut paletini aç",attentionRequiredIndicator:"Oturum ilgi bekliyor"},Ix={chat:"Sohbet",files:"Dosyalar",git:"Git",terminal:"Terminal",tasks:"Görevler"},Ex={refresh:"Yenile",settings:"Ayarlar",collapseAll:"Tümünü Daralt",expandAll:"Tümünü Genişlet",cancel:"İptal",save:"Kaydet",delete:"Sil",rename:"Yeniden Adlandır",joinCommunity:"Topluluğa Katıl",reportIssue:"Sorun Bildir",starOnGithub:"GitHub'da Yıldızla"},Mx={openSource:"Açık Kaynak"},zx={active:"Aktif",inactive:"Pasif",thinking:"Düşünüyor...",error:"Hata",aborted:"Durduruldu",unknown:"Bilinmiyor"},Dx={justNow:"Az önce",oneMinuteAgo:"1 dakika önce",minutesAgo:"{{count}} dakika önce",oneHourAgo:"1 saat önce",hoursAgo:"{{count}} saat önce",oneDayAgo:"1 gün önce",daysAgo:"{{count}} gün önce"},Nx={deleteConfirm:"Bunu silmek istediğinden emin misin?",renameSuccess:"Yeniden adlandırma başarılı",deleteSuccess:"Silme başarılı",errorOccurred:"Bir hata oluştu",deleteSessionConfirm:"Bu oturumu silmek istediğinden emin misin? Bu işlem geri alınamaz.",deleteProjectConfirm:"Bu proje kenar çubuğundan kaldırılsın mı? Proje dosyaların, bellek verilerin ve oturum verilerin silinmeyecek.",enterProjectPath:"Lütfen bir proje yolu gir",deleteSessionFailed:"Oturum silinemedi. Lütfen tekrar dene.",deleteSessionError:"Oturum silinirken hata oluştu. Lütfen tekrar dene.",renameSessionFailed:"Oturum yeniden adlandırılamadı. Lütfen tekrar dene.",renameSessionError:"Oturum yeniden adlandırılırken hata oluştu. Lütfen tekrar dene.",deleteProjectFailed:"Proje kaldırılamadı. Lütfen tekrar dene.",deleteProjectError:"Proje kaldırılırken hata oluştu. Lütfen tekrar dene.",createProjectFailed:"Proje oluşturulamadı. Lütfen tekrar dene.",createProjectError:"Proje oluşturulurken hata oluştu. Lütfen tekrar dene.",updateProjectError:"Proje güncellenirken hata oluştu. Lütfen tekrar dene.",refreshError:"Yenileme başarısız. Lütfen tekrar dene.",restoreProjectFailed:"Proje geri yüklenemedi. Lütfen tekrar dene.",restoreProjectError:"Proje geri yüklenirken hata oluştu. Lütfen tekrar dene.",restoreSessionFailed:"Oturum geri yüklenemedi. Lütfen tekrar dene.",restoreSessionError:"Oturum geri yüklenirken hata oluştu. Lütfen tekrar dene."},$x={updateAvailable:"Güncelleme mevcut",restartRequired:"Güncelleme yüklendi — uygulamak için sunucuyu yeniden başlatın"},Rx={modeProjects:"Projeler",modeConversations:"Konuşmalar",conversationsPlaceholder:"Konuşmalarda ara...",searching:"Aranıyor...",sessionTitles:"Oturum başlıkları",conversationContents:"Konuşma içerikleri",noResults:"Sonuç bulunamadı",tryDifferentQuery:"Farklı bir arama sorgusu dene",matches_one:"{{count}} eşleşme",matches_other:"{{count}} eşleşme",projectsScanned_one:"{{count}} proje tarandı",projectsScanned_other:"{{count}} proje tarandı"},Lx={deleteProject:"Projeyi Kaldır",deleteSession:"Oturumu Sil",confirmDelete:"Ne yapmak istersin:",sessionCount_one:"Bu proje {{count}} konuşma içeriyor.",sessionCount_other:"Bu proje {{count}} konuşma içeriyor.",removeFromSidebar:"Yalnızca kenar çubuğundan kaldır",deleteAllData:"Tüm veriyi kalıcı olarak sil",allConversationsDeleted:"Proje kenar çubuğundan kaldırılacak. Dosyaların, bellek verilerin ve oturum verilerin korunacak.",cannotUndo:"Projeyi sonra tekrar ekleyebilirsin."},Fx={projects:Px,app:Ax,sessions:jx,tooltips:Tx,navigation:Ix,actions:Ex,branding:Mx,status:zx,time:Dx,messages:Nx,version:$x,search:Rx,deleteConfirmation:Lx},Bx={copy:"Kopyala",copied:"Kopyalandı",copyCode:"Kodu kopyala"},Gx={copy:"Mesajı kopyala",copied:"Mesaj kopyalandı",selectFormat:"Kopyalama biçimini seç",copyAsMarkdown:"Markdown olarak kopyala",copyAsText:"Metin olarak kopyala"},Hx={user:"S",error:"Hata",tool:"Araç",claude:"Claude",cursor:"Cursor",codex:"Codex"},Ox={settings:"Araç Ayarları",error:"Araç Hatası",result:"Araç Sonucu",viewParams:"Girdi parametrelerini göster",viewRawParams:"Ham parametreleri göster",viewDiff:"Düzenleme diff'ini göster:",creatingFile:"Yeni dosya oluşturuluyor:",updatingTodo:"Yapılacaklar Listesi güncelleniyor",read:"Okundu",readFile:"Dosyayı oku",updateTodo:"Yapılacaklar listesini güncelle",readTodo:"Yapılacaklar listesini oku",searchResults:"sonuç"},Ux={found:"{{count}} {{type}} bulundu",file:"dosya",files:"dosya",pattern:"desen:",in:"şurada:"},qx={updated:"Dosya başarıyla güncellendi",created:"Dosya başarıyla oluşturuldu",written:"Dosya başarıyla yazıldı",diff:"Diff",newFile:"Yeni Dosya",viewContent:"Dosya içeriğini göster",viewFullOutput:"Tam çıktıyı göster ({{count}} karakter)",contentDisplayed:"Dosya içeriği yukarıdaki diff görünümünde gösteriliyor"},Wx={title:"Etkileşimli Prompt",waiting:"CLI'da yanıtın bekleniyor",instruction:"Lütfen Claude'un çalıştığı terminalde bir seçenek seç.",selectedOption:"✓ Claude {{number}} numaralı seçeneği seçti",instructionDetail:"CLI'da bu seçeneği ok tuşları veya numara girerek interaktif olarak seçebilirsin."},Vx={title:"Düşünüyor...",emoji:"💭 Düşünüyor..."},Kx={response:"JSON Yanıtı"},_x={grant:"{{tool}} için izin ver",added:"İzin eklendi",addTo:"{{entry}} İzin Verilen Araçlar listesine ekleniyor.",retry:"İzin kaydedildi. Aracı kullanmak için isteği tekrar dene.",error:"İzinler güncellenemedi. Lütfen tekrar dene.",openSettings:"Ayarları aç"},Yx={updated:"Yapılacaklar listesi başarıyla güncellendi",current:"Mevcut Yapılacaklar Listesi"},Jx={viewPlan:"📋 Uygulama planını göster",title:"Uygulama Planı"},Qx={resetAt:"Claude kullanım limitin doldu. Limitin **{{time}} {{timezone}}** — {{date}} tarihinde sıfırlanacak"},Zx={permissionMode:"İzin Modu",modes:{default:"Varsayılan Mod",auto:"Auto Mode",acceptEdits:"Düzenlemeleri Kabul Et",bypassPermissions:"İzinleri Atla",plan:"Plan Modu"},descriptions:{default:"Sadece güvenilir komutlar (ls, cat, grep, git status, vb.) otomatik çalışır. Diğer komutlar atlanır. Çalışma alanına yazabilir.",auto:"A model classifier decides per tool call whether to approve or deny. Hands-off, but safer than Bypass — denials still happen.",acceptEdits:"Tüm komutlar çalışma alanı içinde otomatik çalışır. Sandbox'lu çalıştırma ile tam otomatik mod.",bypassPermissions:"Kısıtlama olmadan tam sistem erişimi. Tüm komutlar tam disk ve ağ erişimiyle otomatik çalışır. Dikkatli kullan.",plan:"Planlama modu — hiçbir komut çalıştırılmaz"},technicalDetails:"Teknik ayrıntılar"},Xx={placeholder:"Komutlar için /, dosyalar için @ yaz ya da {{provider}}'a her şeyi sor...",placeholderDefault:"Mesajını yaz...",disabled:"Girdi devre dışı",attachFiles:"Dosya ekle",attachImages:"Resim ekle",send:"Gönder",stop:"Durdur",hintText:{ctrlEnter:"Göndermek için Ctrl+Enter • Yeni satır için Shift+Enter • Mod değiştirmek için Tab • Slash komutları için /",enter:"Göndermek için Enter • Yeni satır için Shift+Enter • Mod değiştirmek için Tab • Slash komutları için /"},clickToChangeMode:"İzin modunu değiştirmek için tıkla (veya girdide Tab tuşuna bas)",showAllCommands:"Tüm komutları göster",clearInput:"Girdiyi temizle",scrollToBottom:"En alta git"},ey={title:"AI Asistanını Seç",description:"Yeni bir konuşma başlatmak için bir sağlayıcı seç",selectModel:"Model Seç",providerInfo:{anthropic:"Anthropic tarafından",openai:"OpenAI tarafından",cursorEditor:"AI Kod Editörü",google:"Google tarafından"},readyPrompt:{claude:"Claude'u {{model}} ile kullanmaya hazır. Mesajını aşağıya yazmaya başla.",cursor:"Cursor'ı {{model}} ile kullanmaya hazır. Mesajını aşağıya yazmaya başla.",codex:"Codex'i {{model}} ile kullanmaya hazır. Mesajını aşağıya yazmaya başla.",default:"Başlamak için yukarıdan bir sağlayıcı seç"},pressToSearch:"Oturumlarda, dosyalarda ve commit'lerde arama yapmak için <kbd>{{shortcut}}</kbd> tuşlarına bas"},ty={continue:{title:"Konuşmana devam et",description:"Kodun hakkında soru sor, değişiklik iste veya geliştirme görevlerinde yardım al"},loading:{olderMessages:"Eski mesajlar yükleniyor...",sessionMessages:"Oturum mesajları yükleniyor..."},messages:{showingOf:"{{total}} mesajdan {{shown}} tanesi gösteriliyor",scrollToLoad:"Daha fazlasını yüklemek için yukarı kaydır",showingLast:"Son {{count}} mesaj gösteriliyor ({{total}} toplam)",loadEarlier:"Önceki mesajları yükle",loadAll:"Tüm mesajları yükle",loadingAll:"Tüm mesajlar yükleniyor...",allLoaded:"Tüm mesajlar yüklendi",perfWarning:'Tüm mesajlar yüklendi — kaydırma yavaşlayabilir. Performansı geri getirmek için "En alta git"e tıkla.'}},ny={selectProject:{title:"Proje Seç",description:"O dizinde etkileşimli shell açmak için bir proje seç"},status:{newSession:"Yeni Oturum",initializing:"Başlatılıyor...",restarting:"Yeniden başlatılıyor..."},actions:{disconnect:"Bağlantıyı Kes",disconnectTitle:"Shell bağlantısını kes",restart:"Yeniden Başlat",restartTitle:"Shell'i yeniden başlat (önce bağlantıyı kes)",connect:"Shell'de Devam Et",connectTitle:"Shell'e bağlan"},loading:"Terminal yükleniyor...",connecting:"Shell'e bağlanılıyor...",startSession:"Yeni bir Claude oturumu başlat",resumeSession:"Oturuma devam et: {{displayName}}...",runCommand:"{{projectName}} içinde {{command}} çalıştır",startCli:"{{projectName}} içinde Claude CLI başlatılıyor",defaultCommand:"komut"},sy={actions:{thinking:"Düşünüyor",processing:"İşliyor",analyzing:"Analiz ediyor",working:"Çalışıyor",computing:"Hesaplıyor",reasoning:"Mantık yürütüyor"},state:{live:"Canlı",paused:"Duraklatıldı"},elapsed:{seconds:"{{count}}s",minutesSeconds:"{{minutes}}d {{seconds}}s",label:"{{time}} geçti",startingNow:"Şimdi başlıyor"},controls:{stopGeneration:"Üretmeyi Durdur",pressEscToStop:"Durdurmak için istediğin zaman Esc'ye bas"},providers:{assistant:"Asistan"}},iy={startChatWithProvider:"{{provider}} ile sohbet etmeye başlamak için bir proje seç"},ay={nextTaskPrompt:"Sonraki görevi başlat"},oy={codeBlock:Bx,copyMessage:Gx,messageTypes:Hx,tools:Ox,search:Ux,fileOperations:qx,interactive:Wx,thinking:Vx,json:Kx,permissions:_x,todo:Yx,plan:Jx,usageLimit:Qx,codex:Zx,input:Xx,providerSelection:ey,session:ty,shell:ny,claudeStatus:sy,projectSelection:iy,tasks:ay},ry={changes:"değişiklik",previousChange:"Önceki değişiklik",nextChange:"Sonraki değişiklik",hideDiff:"Diff vurgusunu gizle",showDiff:"Diff vurgusunu göster",settings:"Editör Ayarları",collapse:"Editörü daralt",expand:"Editörü tüm genişliğe aç"},ly="{{fileName}} yükleniyor...",cy={showingChanges:"Değişiklikler gösteriliyor"},dy={copyPath:"Dosya yolunu kopyala",pathCopied:"Dosya yolu kopyalandı",download:"Dosyayı indir",save:"Kaydet",saving:"Kaydediliyor...",saved:"Kaydedildi!",exitFullscreen:"Tam ekrandan çık",fullscreen:"Tam ekran",close:"Kapat",previewMarkdown:"Markdown önizle",editMarkdown:"Markdown düzenle"},uy={lines:"Satır:",characters:"Karakter:",shortcuts:"Kaydetmek için Ctrl+S • Kapatmak için Esc"},py={title:"Binary Dosya",message:'"{{fileName}}" dosyası binary olduğu için metin editöründe gösterilemez.'},my={toolbar:ry,loading:ly,header:cy,actions:dy,footer:uy,binaryFile:py},gy={title:"TaskMaster AI yapılandırılmamış",description:"TaskMaster, karmaşık projeleri AI destekli yardımla yönetilebilir görevlere böler",whatIsTitle:"🎯 TaskMaster nedir?",features:{aiPowered:"AI Destekli Görev Yönetimi: Karmaşık projeleri yönetilebilir alt görevlere böl",prdTemplates:"PRD Şablonları: Ürün Gereksinim Belgelerinden görev üret",dependencyTracking:"Bağımlılık Takibi: Görev ilişkilerini ve çalıştırma sırasını anla",progressVisualization:"İlerleme Görselleştirme: Kanban panoları ve detaylı görev analizleri",cliIntegration:"CLI Entegrasyonu: İleri seviye iş akışları için taskmaster komutlarını kullan"},initializeButton:"TaskMaster AI'yi Başlat"},hy={title:"TaskMaster'a Başlarken",subtitle:"TaskMaster hazır! Sıradaki adımların:",steps:{createPRD:{title:"Ürün Gereksinim Belgesi (PRD) oluştur",description:"Proje fikrini konuş ve ne inşa etmek istediğini anlatan bir PRD yaz.",addButton:"PRD Ekle",existingPRDs:"Mevcut PRD'ler:"},generateTasks:{title:"PRD'den Görev Üret",description:"PRD'n hazır olduğunda AI asistanına ayrıştırmasını söyle; TaskMaster bunu otomatik olarak uygulama detaylarıyla yönetilebilir görevlere bölecek."},analyzeTasks:{title:"Görevleri Analiz Et ve Genişlet",description:"AI asistanına görev karmaşıklığını analiz etmesini ve uygulamayı kolaylaştırmak için detaylı alt görevlere ayırmasını söyle."},startBuilding:{title:"İnşaya Başla",description:"AI asistanına görevler üzerinde çalışmaya başlamasını, durumlarını güncellemesini ve proje geliştikçe yeni görevler eklemesini söyle."}},tip:"💡 İpucu: TaskMaster'ın AI destekli görev üretiminden en iyi şekilde faydalanmak için bir PRD ile başla"},fy={title:"TaskMaster Kurulumu",subtitle:"{{projectName}} için interaktif CLI",willStart:"TaskMaster başlatma otomatik olarak başlayacak",completed:"TaskMaster kurulumu tamamlandı! Bu pencereyi kapatabilirsin.",closeButton:"Kapat",closeContinueButton:"Kapat ve Devam Et"},by={title:"TaskMaster'a Başlarken",subtitle:"Verimli görev yönetimi için rehberin",examples:{parsePRD:`💬 Örnek:
|
|
26
|
+
"Bitte füge eine neue Aufgabe hinzu, um Benutzerprofilbild-Uploads mit Cloudinary zu implementieren, und recherchiere den besten Ansatz."`},moreExamples:"Weitere Beispiele und Verwendungsmuster anzeigen →",proTips:{title:"💡 Profi-Tipps",search:"Verwende die Suchleiste, um bestimmte Aufgaben schnell zu finden",views:"Wechsle mit den Ansichts-Umschaltern zwischen Kanban-, Listen- und Rasteransicht",filters:"Verwende Filter, um dich auf bestimmte Aufgabenstatus oder Prioritäten zu konzentrieren",details:"Klicke auf eine Aufgabe, um detaillierte Informationen anzuzeigen und Unteraufgaben zu verwalten"},learnMore:{title:"📚 Mehr erfahren",description:"TaskMaster AI ist ein fortschrittliches Aufgabenmanagementsystem für Entwickler:innen. Dokumentation, Beispiele und Möglichkeiten zur Mitarbeit am Projekt.",githubButton:"Auf GitHub ansehen"}},Bk={placeholder:"Aufgaben suchen..."},Gk={button:"Filter",status:"Status",priority:"Priorität",sortBy:"Sortieren nach",allStatuses:"Alle Status",allPriorities:"Alle Prioritäten",showing:"{{filtered}} von {{total}} Aufgaben werden angezeigt",clearFilters:"Filter zurücksetzen"},Hk={id:"ID",status:"Status",priority:"Priorität",idAsc:"ID (aufsteigend)",idDesc:"ID (absteigend)",titleAsc:"Titel (A-Z)",titleDesc:"Titel (Z-A)",statusAsc:"Status (Ausstehend zuerst)",statusDesc:"Status (Erledigt zuerst)",priorityAsc:"Priorität (Hoch zuerst)",priorityDesc:"Priorität (Niedrig zuerst)"},Ok={kanban:"Kanban-Ansicht",list:"Listenansicht",grid:"Rasteransicht"},Uk={pending:"📋 Ausstehend",inProgress:"🚀 In Bearbeitung",done:"✅ Erledigt",blocked:"🚫 Blockiert",deferred:"⏳ Zurückgestellt",cancelled:"❌ Abgebrochen",noTasksYet:"Noch keine Aufgaben",tasksWillAppear:"Aufgaben werden hier angezeigt",moveTasksHere:"Aufgaben hierher verschieben, wenn sie gestartet werden",completedTasksHere:"Abgeschlossene Aufgaben erscheinen hier",statusTasksHere:"Aufgaben mit diesem Status werden hier angezeigt"},qk={help:"TaskMaster-Leitfaden für Erste Schritte",prds:"PRDs",addPRD:"PRD hinzufügen",addTask:"Aufgabe hinzufügen",createNewPRD:"Neues PRD erstellen",prdsAvailable:"{{count}} PRD(s) verfügbar"},Wk={modified:"Geändert: {{date}}"},Vk={pending:"Ausstehend","in-progress":"In Bearbeitung",done:"Erledigt",blocked:"Blockiert",deferred:"Zurückgestellt",cancelled:"Abgebrochen"},Kk={high:"Hoch",medium:"Mittel",low:"Niedrig"},_k={title:"Keine Aufgaben entsprechen deinen Filtern",description:"Versuche, deine Such- oder Filterkriterien anzupassen."},Yk={notConfigured:$k,gettingStarted:Rk,setupModal:Lk,helpGuide:Fk,search:Bk,filters:Gk,sort:Hk,views:Ok,kanban:Uk,buttons:qk,prd:Wk,statuses:Vk,priorities:Kk,noMatchingTasks:_k},Jk={save:"Kaydet",cancel:"İptal",delete:"Sil",create:"Oluştur",edit:"Düzenle",close:"Kapat",confirm:"Onayla",submit:"Gönder",retry:"Tekrar Dene",refresh:"Yenile",search:"Ara",clear:"Temizle",copy:"Kopyala",download:"İndir",upload:"Yükle",browse:"Gözat"},Qk={chat:"Sohbet",shell:"Shell",files:"Dosyalar",git:"Kaynak Kontrolü",tasks:"Görevler",browser:"Browser",computer:"Bilgisayar"},Zk={loading:"Yükleniyor...",success:"Başarılı",error:"Hata",failed:"Başarısız",pending:"Beklemede",completed:"Tamamlandı",inProgress:"Sürüyor"},Xk={savedSuccessfully:"Başarıyla kaydedildi",deletedSuccessfully:"Başarıyla silindi",updatedSuccessfully:"Başarıyla güncellendi",operationFailed:"İşlem başarısız",networkError:"Ağ hatası. Lütfen bağlantını kontrol et.",unauthorized:"Yetkisiz erişim. Lütfen giriş yap.",notFound:"Bulunamadı",invalidInput:"Geçersiz girdi",requiredField:"Bu alan zorunlu",unknownError:"Bilinmeyen bir hata oluştu"},ex={settings:"Ayarlar",home:"Ana Sayfa",back:"Geri",next:"İleri",previous:"Önceki",logout:"Çıkış Yap"},tx={language:"Dil",theme:"Tema",darkMode:"Koyu Mod",lightMode:"Açık Mod",name:"İsim",description:"Açıklama",enabled:"Etkin",disabled:"Devre Dışı",optional:"İsteğe Bağlı",version:"Sürüm",select:"Seç",selectAll:"Tümünü Seç",deselectAll:"Tümünün Seçimini Kaldır"},nx={justNow:"Az önce",minutesAgo:"{{count}} dakika önce",hoursAgo:"{{count}} saat önce",daysAgo:"{{count}} gün önce",yesterday:"Dün"},sx={newFile:"Yeni Dosya",newFolder:"Yeni Klasör",rename:"Yeniden Adlandır",move:"Taşı",copyPath:"Yolu Kopyala",openInEditor:"Editörde Aç"},ix={loading:"WindCli Yükleniyor",settingUpWorkspace:"Çalışma alanın hazırlanıyor...",chooseProject:"Projeni Seç",selectProjectDescription:"Claude ile kodlamaya başlamak için kenar çubuğundan bir proje seç. Her proje kendi sohbet oturumlarını ve dosya geçmişini içerir.",tip:"İpucu",createProjectMobile:"Projelere erişmek için yukarıdaki menü düğmesine dokun",createProjectDesktop:"Kenar çubuğundaki klasör simgesine tıklayarak yeni bir proje oluştur",newSession:"Yeni Oturum",untitledSession:"Adsız Oturum",projectFiles:"Proje Dosyaları"},ax={loading:"Dosyalar yükleniyor...",files:"Dosyalar",simpleView:"Basit görünüm",compactView:"Kompakt görünüm",detailedView:"Detaylı görünüm",searchPlaceholder:"Dosya ve klasörlerde ara...",clearSearch:"Aramayı temizle",name:"İsim",size:"Boyut",modified:"Değiştirilme",permissions:"İzinler",noFilesFound:"Dosya bulunamadı",checkProjectPath:"Proje yolunun erişilebilir olduğunu kontrol et",noMatchesFound:"Eşleşme bulunamadı",tryDifferentSearch:"Farklı bir arama terimi dene veya aramayı temizle",justNow:"az önce",minAgo:"{{count}} dakika önce",hoursAgo:"{{count}} saat önce",daysAgo:"{{count}} gün önce",newFile:"Yeni Dosya (Cmd+N)",newFolder:"Yeni Klasör (Cmd+Shift+N)",refresh:"Yenile",collapseAll:"Tümünü Daralt",context:{rename:"Yeniden Adlandır",delete:"Sil",copyPath:"Yolu Kopyala",download:"İndir",newFile:"Yeni Dosya",newFolder:"Yeni Klasör",upload:"Dosya Yükle",refresh:"Yenile",menuLabel:"Dosya bağlam menüsü",loading:"Yükleniyor..."}},ox={title:"Yeni Proje Oluştur",steps:{type:"Tür",configure:"Yapılandır",confirm:"Onayla"},step1:{question:"Zaten bir çalışma alanın var mı, yoksa yeni bir tane mi oluşturmak istersin?",existing:{title:"Mevcut Çalışma Alanı",description:"Sunucumda zaten bir çalışma alanım var, sadece proje listesine eklemek istiyorum"},new:{title:"Yeni Çalışma Alanı",description:"Yeni bir çalışma alanı oluştur, istersen bir GitHub deposundan klonla"}},step2:{existingPath:"Çalışma Alanı Yolu",newPath:"Çalışma Alanı Yolu",existingPlaceholder:"/mevcut/calisma-alani/yolu",newPlaceholder:"/yeni/calisma-alani/yolu",existingHelp:"Mevcut çalışma alanı dizinine giden tam yol",newHelp:"Çalışma alanı dizinine giden tam yol",githubUrl:"GitHub URL'si (İsteğe Bağlı)",githubPlaceholder:"https://github.com/kullanici/depo",githubHelp:"İsteğe bağlı: bir depoyu klonlamak için GitHub URL'si gir",githubAuth:"GitHub Kimlik Doğrulama (İsteğe Bağlı)",githubAuthHelp:"Yalnızca özel depolar için gereklidir. Genel depolar kimlik doğrulama olmadan klonlanabilir.",loadingTokens:"Kayıtlı token'lar yükleniyor...",storedToken:"Kayıtlı Token",newToken:"Yeni Token",nonePublic:"Yok (Genel)",selectToken:"Token Seç",selectTokenPlaceholder:"-- Bir token seç --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"Bu token sadece bu işlem için kullanılacak",publicRepoInfo:"Genel depolar kimlik doğrulama gerektirmez. Genel bir depo klonluyorsan token girmeyi atlayabilirsin.",noTokensHelp:"Kayıtlı token yok. Kolay tekrar kullanım için Ayarlar → API Anahtarları bölümünden token ekleyebilirsin.",optionalTokenPublic:"GitHub Token (Genel Depolar için İsteğe Bağlı)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (genel depolar için boş bırak)"},step3:{reviewConfig:"Yapılandırmanı Gözden Geçir",existingWorkspace:"Mevcut Çalışma Alanı",newWorkspace:"Yeni Çalışma Alanı",path:"Yol:",cloneFrom:"Şuradan Klonla:",authentication:"Kimlik Doğrulama:",usingStoredToken:"Kayıtlı token kullanılıyor:",usingProvidedToken:"Girilen token kullanılıyor",noAuthentication:"Kimlik doğrulama yok",sshKey:"SSH Anahtarı",existingInfo:"Çalışma alanı proje listene eklenecek ve Claude/Cursor oturumları için kullanılabilir olacak.",newWithClone:"Depo bu klasöre klonlanacak.",newEmpty:"Çalışma alanı proje listene eklenecek ve Claude/Cursor oturumları için kullanılabilir olacak.",cloningRepository:"Depo klonlanıyor..."},buttons:{cancel:"İptal",back:"Geri",next:"İleri",createProject:"Projeyi Oluştur",creating:"Oluşturuluyor...",cloning:"Klonlanıyor..."},errors:{selectType:"Lütfen mevcut çalışma alanın olduğunu mu yoksa yeni oluşturmak mı istediğini seç",providePath:"Lütfen bir çalışma alanı yolu gir",failedToCreate:"Çalışma alanı oluşturulamadı",failedToCreateFolder:"Klasör oluşturulamadı"}},rx={genericTool:"bir araç",codes:{generic:{info:{title:"Bildirim"}},permission:{required:{title:"Aksiyon Gerekli",body:"{{toolName}} kararını bekliyor."}},run:{stopped:{title:"Çalıştırma Durduruldu",body:"Sebep: {{reason}}"},failed:{title:"Çalıştırma Başarısız"}},agent:{notification:{title:"Ajan Bildirimi"}}}},lx={title:"Güncelleme Mevcut",newVersionReady:"Yeni bir sürüm hazır",currentVersion:"Mevcut Sürüm",latestVersion:"Son Sürüm",whatsNew:"Yenilikler:",viewFullRelease:"Tam sürüm notlarını gör",updateProgress:"Güncelleme İlerlemesi:",manualUpgrade:"Manuel yükseltme:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:'Veya güncellemeyi otomatik çalıştırmak için "Şimdi Güncelle"ye tıkla.',updateCompleted:"Güncelleme başarıyla tamamlandı!",restartServer:"Değişikliklerin uygulanması için sunucuyu yeniden başlat.",updateFailed:"Güncelleme başarısız",buttons:{close:"Kapat",later:"Daha Sonra",copyCommand:"Komutu Kopyala",updateNow:"Şimdi Güncelle",updating:"Güncelleniyor..."},ariaLabels:{closeModal:"Sürüm yükseltme modalını kapat",showSidebar:"Kenar çubuğunu göster",settings:"Ayarlar",updateAvailable:"Güncelleme mevcut",closeSidebar:"Kenar çubuğunu kapat"}},cx={buttons:Jk,tabs:Qk,status:Zk,messages:Xk,navigation:ex,common:tx,time:nx,fileOperations:sx,mainContent:ix,fileTree:ax,projectWizard:ox,notifications:rx,versionUpdate:lx},dx="Ayarlar",ux={account:"Hesap",permissions:"İzinler",mcpServers:"MCP Sunucuları",appearance:"Görünüm"},px={title:"Hesap",language:"Dil",languageLabel:"Görüntüleme Dili",languageDescription:"Arayüz için tercih ettiğin dili seç",username:"Kullanıcı Adı",email:"E-posta",profile:"Profil",changePassword:"Şifreyi Değiştir"},mx={title:"MCP Sunucuları",addServer:"Sunucu Ekle",editServer:"Sunucuyu Düzenle",deleteServer:"Sunucuyu Sil",serverName:"Sunucu Adı",serverType:"Sunucu Türü",config:"Yapılandırma",testConnection:"Bağlantıyı Test Et",status:"Durum",connected:"Bağlı",disconnected:"Bağlantı kesildi",scope:{label:"Kapsam",user:"Kullanıcı",project:"Proje"}},gx={title:"Görünüm",theme:"Tema",codeEditor:"Kod Editörü",editorTheme:"Editör Teması",wordWrap:"Kelime Kaydırma",showMinimap:"Minimap'i Göster",lineNumbers:"Satır Numaraları",fontSize:"Yazı Tipi Boyutu"},hx={saveChanges:"Değişiklikleri Kaydet",resetToDefaults:"Varsayılanlara Döndür",cancelChanges:"Değişiklikleri İptal Et"},fx={title:"Hızlı Ayarlar",sections:{appearance:"Görünüm",toolDisplay:"Araç Gösterimi",inputSettings:"Girdi Ayarları"},darkMode:"Koyu Mod",showRawParameters:"Ham parametreleri göster",showThinking:"Düşünmeyi göster",sendByCtrlEnter:"Ctrl+Enter ile gönder",sendByCtrlEnterDescription:"Etkinleştirildiğinde, Ctrl+Enter'a basmak yalnız Enter yerine mesajı gönderir. IME (girdi metot düzenleyici) kullananlar için yanlışlıkla göndermeyi önler.",dragHandle:{dragging:"Tutamaç sürükleniyor",closePanel:"Ayarlar panelini kapat",openPanel:"Ayarlar panelini aç",draggingStatus:"Sürükleniyor...",toggleAndMove:"Açıp kapamak için tıkla, taşımak için sürükle"}},bx={title:"Terminal Kısayolları",sectionKeys:"Tuşlar",sectionNavigation:"Gezinme",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"Yukarı Ok",arrowDown:"Aşağı Ok",scrollDown:"Aşağı Kaydır",handle:{closePanel:"Kısayol panelini kapat",openPanel:"Kısayol panelini aç"}},vx={label:"Ayarlar",agents:"Ajanlar",appearance:"Görünüm",git:"Git",apiTokens:"API ve Token'lar",tasks:"Görevler",computer:"Bilgisayar Kullanımı",notifications:"Bildirimler",plugins:"Eklentiler",about:"Hakkında"},kx={title:"Bildirimler",description:"Hangi bildirim etkinliklerini alacağını kontrol et.",webPush:{title:"Web Push Bildirimleri",enable:"Push Bildirimlerini Etkinleştir",disable:"Push Bildirimlerini Devre Dışı Bırak",enabled:"Push bildirimleri etkin",loading:"Güncelleniyor...",unsupported:"Bu tarayıcıda push bildirimleri desteklenmiyor.",denied:"Push bildirimleri engellendi. Lütfen tarayıcı ayarlarından izin ver."},sound:{title:"Ses",description:"Sohbet çalışması tamamlandığında kısa bir ton çal.",enabled:"Etkin",test:"Sesi test et"},events:{title:"Etkinlik Türleri",actionRequired:"Aksiyon gerekli",stop:"Çalıştırma durduruldu",error:"Çalıştırma başarısız"}},xx={darkMode:{label:"Koyu Mod",description:"Açık ve koyu temalar arasında geçiş yap"},projectSorting:{label:"Proje Sıralama",description:"Projelerin kenar çubuğunda nasıl sıralanacağı",alphabetical:"Alfabetik",recentActivity:"Son Etkinlik"},codeEditor:{title:"Kod Editörü",theme:{label:"Editör Teması",description:"Kod editörü için varsayılan tema"},wordWrap:{label:"Kelime Kaydırma",description:"Editörde kelime kaydırmayı varsayılan olarak etkinleştir"},showMinimap:{label:"Minimap'i Göster",description:"Diff görünümünde kolay gezinme için minimap göster"},lineNumbers:{label:"Satır Numaralarını Göster",description:"Editörde satır numaralarını göster"},fontSize:{label:"Yazı Tipi Boyutu",description:"Editör yazı tipi boyutu (piksel)"}}},yx={title:{add:"MCP Sunucusu Ekle",edit:"MCP Sunucusunu Düzenle"},importMode:{form:"Form Girdisi",json:"JSON İçe Aktar"},scope:{label:"Kapsam",userGlobal:"Kullanıcı (Genel)",projectLocal:"Proje (Yerel)",userDescription:"Kullanıcı kapsamı: Makinendeki tüm projelerde kullanılabilir",projectDescription:"Yerel kapsam: Yalnızca seçili projede kullanılabilir",cannotChange:"Mevcut bir sunucu düzenlenirken kapsam değiştirilemez"},fields:{serverName:"Sunucu Adı",transportType:"Taşıma Türü",command:"Komut",arguments:"Argümanlar (satır başına bir tane)",jsonConfig:"JSON Yapılandırması",url:"URL",envVars:"Ortam Değişkenleri (KEY=değer, satır başına bir tane)",headers:"Başlıklar (KEY=değer, satır başına bir tane)",selectProject:"Bir proje seç..."},placeholders:{serverName:"benim-sunucum"},validation:{missingType:"Zorunlu alan eksik: type",stdioRequiresCommand:"stdio türü command alanı gerektirir",httpRequiresUrl:"{{type}} türü url alanı gerektirir",invalidJson:"Geçersiz JSON formatı",jsonHelp:"MCP sunucu yapılandırmanı JSON formatında yapıştır. Örnek formatlar:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"Yapılandırma Detayları ({{configFile}} dosyasından)",projectPath:"Yol: {{path}}",actions:{cancel:"İptal",saving:"Kaydediliyor...",addServer:"Sunucu Ekle",updateServer:"Sunucuyu Güncelle"}},wx={success:"Ayarlar başarıyla kaydedildi!",error:"Ayarlar kaydedilemedi",saving:"Kaydediliyor..."},Cx={save:"Ayarları Kaydet",cancel:"İptal"},Sx={title:"Git Yapılandırması",description:"Commit'ler için git kimliğini yapılandır. Bu ayarlar git config --global ile genel olarak uygulanacak",name:{label:"Git Adı",help:"Git commit'leri için adın"},email:{label:"Git E-postası",help:"Git commit'leri için e-postan"},actions:{save:"Yapılandırmayı Kaydet",saving:"Kaydediliyor..."},status:{success:"Başarıyla kaydedildi"}},Px={title:"API Anahtarları",description:"Diğer uygulamalardan harici API'ye erişmek için API anahtarları üret.",newKey:{alertTitle:"⚠️ API Anahtarını Kaydet",alertMessage:"Bu anahtarı yalnızca bu sefer göreceksin. Güvenli bir yerde sakla.",iveSavedIt:"Kaydettim"},form:{placeholder:"API Anahtar Adı (ör. Production Sunucu)",createButton:"Oluştur",cancelButton:"İptal"},newButton:"Yeni API Anahtarı",empty:"Henüz API anahtarı oluşturulmamış.",list:{created:"Oluşturuldu:",lastUsed:"Son kullanım:"},confirmDelete:"Bu API anahtarını silmek istediğinden emin misin?",status:{active:"Aktif",inactive:"Pasif"},github:{title:"GitHub Token'ları",description:"Harici API üzerinden özel depoları klonlamak için GitHub Kişisel Erişim Token'ları ekle.",descriptionAlt:"Özel depoları klonlamak için GitHub Kişisel Erişim Token'ları ekle. Token'ları saklamadan API isteklerinde doğrudan da geçebilirsin.",addButton:"Token Ekle",form:{namePlaceholder:"Token Adı (ör. Kişisel Depolar)",tokenPlaceholder:"GitHub Kişisel Erişim Token'ı (ghp_...)",descriptionPlaceholder:"Açıklama (isteğe bağlı)",addButton:"Token Ekle",cancelButton:"İptal",howToCreate:"GitHub Kişisel Erişim Token'ı nasıl oluşturulur →"},empty:"Henüz GitHub token'ı eklenmemiş.",added:"Eklendi:",confirmDelete:"Bu GitHub token'ını silmek istediğinden emin misin?"},apiDocsLink:"API Dokümantasyonu",documentation:{title:"Harici API Dokümantasyonu",description:"Uygulamalarından Claude/Cursor oturumları tetiklemek için harici API'nin nasıl kullanılacağını öğren.",viewLink:"API Dokümantasyonunu Görüntüle →"},loading:"Yükleniyor...",version:{updateAvailable:"Güncelleme mevcut: v{{version}}"}},Ax={checking:"TaskMaster kurulumu kontrol ediliyor...",notInstalled:{title:"TaskMaster AI CLI Kurulu Değil",description:"Görev yönetim özelliklerini kullanmak için TaskMaster CLI gereklidir. Başlamak için kur:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"GitHub'da Görüntüle",afterInstallation:"Kurulumdan sonra:",steps:{restart:"Bu uygulamayı yeniden başlat",autoAvailable:"TaskMaster özellikleri otomatik olarak kullanılabilir hale gelecek",initCommand:"Proje dizininde task-master init komutunu kullan"}},settings:{enableLabel:"TaskMaster Entegrasyonunu Etkinleştir",enableDescription:"TaskMaster görevlerini, banner'larını ve kenar çubuğu göstergelerini arayüz genelinde göster"}},jx={authStatus:{checking:"Kontrol ediliyor...",connected:"Bağlı",notConnected:"Bağlı değil",disconnected:"Bağlantı kesildi",checkingAuth:"Kimlik doğrulama durumu kontrol ediliyor...",loggedInAs:"{{email}} olarak giriş yapıldı",authenticatedUser:"kimliği doğrulanmış kullanıcı"},account:{claude:{description:"Anthropic Claude AI asistanı"},cursor:{description:"Cursor AI destekli kod editörü"},codex:{description:"OpenAI Codex AI asistanı"}},connectionStatus:"Bağlantı Durumu",login:{title:"Giriş Yap",reAuthenticate:"Yeniden Kimlik Doğrula",description:"AI özelliklerini etkinleştirmek için {{agent}} hesabına giriş yap",reAuthDescription:"Farklı bir hesapla giriş yap veya kimlik bilgilerini yenile",button:"Giriş Yap",reLoginButton:"Tekrar Giriş Yap"},error:"Hata: {{error}}"},Tx={title:"İzin Ayarları",skipPermissions:{label:"İzin istemlerini atla (dikkatli kullan)",claudeDescription:"--dangerously-skip-permissions bayrağının eşdeğeri",cursorDescription:"Cursor CLI'daki -f bayrağının eşdeğeri"},allowedTools:{title:"İzin Verilen Araçlar",description:"İzin istemeden otomatik olarak izin verilen araçlar",placeholder:'ör. "Bash(git log:*)" veya "Write"',quickAdd:"Yaygın araçları hızlı ekle:",empty:"İzin verilen araç yapılandırılmamış"},blockedTools:{title:"Engellenen Araçlar",description:"İzin istemeden otomatik olarak engellenen araçlar",placeholder:'ör. "Bash(rm:*)"',empty:"Engellenen araç yapılandırılmamış"},allowedCommands:{title:"İzin Verilen Shell Komutları",description:"İzin istemeden otomatik olarak izin verilen shell komutları",placeholder:'ör. "Shell(ls)" veya "Shell(git status)"',quickAdd:"Yaygın komutları hızlı ekle:",empty:"İzin verilen komut yapılandırılmamış"},blockedCommands:{title:"Engellenen Shell Komutları",description:"Otomatik olarak engellenen shell komutları",placeholder:'ör. "Shell(rm -rf)" veya "Shell(sudo)"',empty:"Engellenen komut yapılandırılmamış"},toolExamples:{title:"Araç Desen Örnekleri:",bashGitLog:"- Tüm git log komutlarına izin ver",bashGitDiff:"- Tüm git diff komutlarına izin ver",write:"- Tüm Write aracı kullanımına izin ver",bashRm:"- Tüm rm komutlarını engelle (tehlikeli)"},shellExamples:{title:"Shell Komut Örnekleri:",ls:"- ls komutuna izin ver",gitStatus:"- git status'a izin ver",npmInstall:"- npm install'a izin ver",rmRf:"- Özyinelemeli silmeyi engelle"},codex:{permissionMode:"İzin Modu",description:"Codex'in dosya değişiklikleri ve komut çalıştırmayı nasıl ele aldığını kontrol eder",modes:{default:{title:"Varsayılan",description:"Sadece güvenilir komutlar (ls, cat, grep, git status, vb.) otomatik çalışır. Diğer komutlar atlanır. Çalışma alanına yazabilir."},acceptEdits:{title:"Düzenlemeleri Kabul Et",description:"Tüm komutlar çalışma alanı içinde otomatik çalışır. Sandbox'lu çalıştırma ile tam otomatik mod."},bypassPermissions:{title:"İzinleri Atla",description:"Kısıtlama olmadan tam sistem erişimi. Tüm komutlar tam disk ve ağ erişimiyle otomatik çalışır. Dikkatli kullan."}},technicalDetails:"Teknik ayrıntılar",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted. Güvenilir komutlar: cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find (-exec olmadan), vb.",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never. Tüm komutlar proje dizini içinde otomatik çalışır.",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never. Tam sistem erişimi, yalnızca güvenilir ortamlarda kullan.",overrideNote:"Sohbet arayüzündeki mod düğmesini kullanarak bunu oturum başına geçersiz kılabilirsin."}},actions:{add:"Ekle"}},Ix={title:"MCP Sunucuları",description:{claude:"Model Context Protocol sunucuları Claude'a ek araçlar ve veri kaynakları sağlar",cursor:"Model Context Protocol sunucuları Cursor'a ek araçlar ve veri kaynakları sağlar",codex:"Model Context Protocol sunucuları Codex'e ek araçlar ve veri kaynakları sağlar"},addButton:"MCP Sunucusu Ekle",empty:"Yapılandırılmış MCP sunucusu yok",serverType:"Tür",scope:{local:"yerel",user:"kullanıcı"},config:{command:"Komut",url:"URL",args:"Argümanlar",environment:"Ortam"},tools:{title:"Araçlar",count:"({{count}}):",more:"+{{count}} tane daha"},actions:{edit:"Sunucuyu düzenle",delete:"Sunucuyu sil"},help:{title:"Codex MCP Hakkında",description:"Codex stdio tabanlı MCP sunucularını destekler. Codex'in yeteneklerini ek araçlar ve kaynaklarla genişleten sunucular ekleyebilirsin."}},Ex={title:"Eklentiler",description:"Arayüzü özel eklentilerle genişlet. Git'ten yükle veya ~/.claude-code-ui/plugins/ klasörüne bir dizin bırak.",installPlaceholder:"https://github.com/kullanici/benim-eklentim",installButton:"Yükle",installing:"Yükleniyor…",securityWarning:"Yalnızca kaynak kodunu incelediğin veya güvendiğin geliştiricilerin eklentilerini yükle.",scanningPlugins:"Eklentiler taranıyor…",noPluginsInstalled:"Yüklü eklenti yok",pullLatest:"Git'ten en güncelini çek",noGitRemote:"Git uzak sunucusu yok — güncelleme kullanılamıyor",uninstallPlugin:"Eklentiyi kaldır",confirmUninstall:"Onaylamak için tekrar tıkla",confirmUninstallMessage:"{{name}} kaldırılsın mı? Bu işlem geri alınamaz.",cancel:"İptal",remove:"Kaldır",updateFailed:"Güncelleme başarısız",installFailed:"Yükleme başarısız",uninstallFailed:"Kaldırma başarısız",toggleFailed:"Açıp kapama başarısız",starterPluginLabel:"Başlangıç Eklentisi",starter:"Başlangıç",docs:"Dokümanlar",starterPlugin:{name:"Proje İstatistikleri",badge:"başlangıç",description:"Projen için dosya sayıları, kod satırları, dosya türü dağılımı ve son etkinlik.",install:"Yükle"},terminalPlugin:{name:"Terminal",badge:"resmi",description:"Arayüzün içinde tam shell erişimiyle entegre terminal.",install:"Yükle"},morePlugins:"Daha Fazla",enable:"Etkinleştir",disable:"Devre Dışı Bırak",installAriaLabel:"Eklenti git deposu URL'si",tab:"sekme",runningStatus:"çalışıyor"},Mx={title:dx,tabs:ux,account:px,mcp:mx,appearance:gx,actions:hx,quickSettings:fx,terminalShortcuts:bx,mainTabs:vx,notifications:kx,appearanceSettings:xx,mcpForm:yx,saveStatus:wx,footerActions:Cx,git:Sx,apiKeys:Px,tasks:Ax,agents:jx,permissions:Tx,mcpServers:Ix,pluginSettings:Ex},zx={title:"Tekrar Hoş Geldin",description:"Kendi WindCli hesabına giriş yap",username:"Kullanıcı Adı",password:"Şifre",submit:"Giriş Yap",loading:"Giriş yapılıyor...",errors:{invalidCredentials:"Kullanıcı adı veya şifre hatalı",requiredFields:"Lütfen tüm alanları doldur",networkError:"Ağ hatası. Lütfen tekrar dene."},placeholders:{username:"Kullanıcı adını gir",password:"Şifreni gir"}},Dx={title:"Hesap Oluştur",username:"Kullanıcı Adı",password:"Şifre",confirmPassword:"Şifreyi Onayla",submit:"Hesabı Oluştur",loading:"Hesap oluşturuluyor...",errors:{passwordMismatch:"Şifreler eşleşmiyor",usernameTaken:"Bu kullanıcı adı zaten alınmış",weakPassword:"Şifre çok zayıf"}},Nx={title:"Çıkış Yap",confirm:"Çıkış yapmak istediğinden emin misin?",button:"Çıkış Yap"},$x={login:zx,register:Dx,logout:Nx},Rx={title:"Projeler",newProject:"Yeni Proje",deleteProject:"Projeyi Kaldır",renameProject:"Projeyi Yeniden Adlandır",noProjects:"Proje bulunamadı",loadingProjects:"Projeler yükleniyor...",searchPlaceholder:"Projelerde ara...",projectNamePlaceholder:"Proje adı",starred:"Yıldızlı",all:"Tümü",untitledSession:"Adsız Oturum",newSession:"Yeni Oturum",codexSession:"Codex Oturumu",fetchingProjects:"Claude projelerin ve oturumların getiriliyor",projects:"proje",noMatchingProjects:"Eşleşen proje yok",tryDifferentSearch:"Arama terimini değiştirmeyi dene",runClaudeCli:"Başlamak için bir proje dizininde Claude CLI çalıştır"},Lx={title:"WindCli",subtitle:"AI kodlama asistanı arayüzü"},Fx={title:"Oturumlar",newSession:"Yeni Oturum",deleteSession:"Oturumu Sil",renameSession:"Oturumu Yeniden Adlandır",noSessions:"Henüz oturum yok",loadingSessions:"Oturumlar yükleniyor...",unnamed:"Adsız",loading:"Yükleniyor...",showMore:"Daha fazla oturum göster"},Bx={viewEnvironments:"Ortamları Görüntüle",hideSidebar:"Kenar çubuğunu gizle",createProject:"Yeni proje oluştur",refresh:"Projeleri ve oturumları yenile (Ctrl+R)",renameProject:"Projeyi yeniden adlandır (F2)",deleteProject:"Projeyi kenar çubuğundan kaldır (Delete)",addToFavorites:"Favorilere ekle",removeFromFavorites:"Favorilerden çıkar",editSessionName:"Oturum adını elle düzenle",deleteSession:"Bu oturumu kalıcı olarak sil",activeSessionIndicator:"Yakın zamanda etkin oturum (son 10 dakika)",save:"Kaydet",cancel:"İptal",clearSearch:"Aramayı temizle",openCommandPalette:"Komut paletini aç",attentionRequiredIndicator:"Oturum ilgi bekliyor"},Gx={chat:"Sohbet",files:"Dosyalar",git:"Git",terminal:"Terminal",tasks:"Görevler"},Hx={refresh:"Yenile",settings:"Ayarlar",collapseAll:"Tümünü Daralt",expandAll:"Tümünü Genişlet",cancel:"İptal",save:"Kaydet",delete:"Sil",rename:"Yeniden Adlandır",joinCommunity:"Topluluğa Katıl",reportIssue:"Sorun Bildir",starOnGithub:"GitHub'da Yıldızla"},Ox={openSource:"Açık Kaynak"},Ux={active:"Aktif",inactive:"Pasif",thinking:"Düşünüyor...",error:"Hata",aborted:"Durduruldu",unknown:"Bilinmiyor"},qx={justNow:"Az önce",oneMinuteAgo:"1 dakika önce",minutesAgo:"{{count}} dakika önce",oneHourAgo:"1 saat önce",hoursAgo:"{{count}} saat önce",oneDayAgo:"1 gün önce",daysAgo:"{{count}} gün önce"},Wx={deleteConfirm:"Bunu silmek istediğinden emin misin?",renameSuccess:"Yeniden adlandırma başarılı",deleteSuccess:"Silme başarılı",errorOccurred:"Bir hata oluştu",deleteSessionConfirm:"Bu oturumu silmek istediğinden emin misin? Bu işlem geri alınamaz.",deleteProjectConfirm:"Bu proje kenar çubuğundan kaldırılsın mı? Proje dosyaların, bellek verilerin ve oturum verilerin silinmeyecek.",enterProjectPath:"Lütfen bir proje yolu gir",deleteSessionFailed:"Oturum silinemedi. Lütfen tekrar dene.",deleteSessionError:"Oturum silinirken hata oluştu. Lütfen tekrar dene.",renameSessionFailed:"Oturum yeniden adlandırılamadı. Lütfen tekrar dene.",renameSessionError:"Oturum yeniden adlandırılırken hata oluştu. Lütfen tekrar dene.",deleteProjectFailed:"Proje kaldırılamadı. Lütfen tekrar dene.",deleteProjectError:"Proje kaldırılırken hata oluştu. Lütfen tekrar dene.",createProjectFailed:"Proje oluşturulamadı. Lütfen tekrar dene.",createProjectError:"Proje oluşturulurken hata oluştu. Lütfen tekrar dene.",updateProjectError:"Proje güncellenirken hata oluştu. Lütfen tekrar dene.",refreshError:"Yenileme başarısız. Lütfen tekrar dene.",restoreProjectFailed:"Proje geri yüklenemedi. Lütfen tekrar dene.",restoreProjectError:"Proje geri yüklenirken hata oluştu. Lütfen tekrar dene.",restoreSessionFailed:"Oturum geri yüklenemedi. Lütfen tekrar dene.",restoreSessionError:"Oturum geri yüklenirken hata oluştu. Lütfen tekrar dene."},Vx={updateAvailable:"Güncelleme mevcut",restartRequired:"Güncelleme yüklendi — uygulamak için sunucuyu yeniden başlatın"},Kx={modeProjects:"Projeler",modeConversations:"Konuşmalar",conversationsPlaceholder:"Konuşmalarda ara...",searching:"Aranıyor...",sessionTitles:"Oturum başlıkları",conversationContents:"Konuşma içerikleri",noResults:"Sonuç bulunamadı",tryDifferentQuery:"Farklı bir arama sorgusu dene",matches_one:"{{count}} eşleşme",matches_other:"{{count}} eşleşme",projectsScanned_one:"{{count}} proje tarandı",projectsScanned_other:"{{count}} proje tarandı"},_x={deleteProject:"Projeyi Kaldır",deleteSession:"Oturumu Sil",confirmDelete:"Ne yapmak istersin:",sessionCount_one:"Bu proje {{count}} konuşma içeriyor.",sessionCount_other:"Bu proje {{count}} konuşma içeriyor.",removeFromSidebar:"Yalnızca kenar çubuğundan kaldır",deleteAllData:"Tüm veriyi kalıcı olarak sil",allConversationsDeleted:"Proje kenar çubuğundan kaldırılacak. Dosyaların, bellek verilerin ve oturum verilerin korunacak.",cannotUndo:"Projeyi sonra tekrar ekleyebilirsin."},Yx={projects:Rx,app:Lx,sessions:Fx,tooltips:Bx,navigation:Gx,actions:Hx,branding:Ox,status:Ux,time:qx,messages:Wx,version:Vx,search:Kx,deleteConfirmation:_x},Jx={copy:"Kopyala",copied:"Kopyalandı",copyCode:"Kodu kopyala"},Qx={copy:"Mesajı kopyala",copied:"Mesaj kopyalandı",selectFormat:"Kopyalama biçimini seç",copyAsMarkdown:"Markdown olarak kopyala",copyAsText:"Metin olarak kopyala"},Zx={user:"S",error:"Hata",tool:"Araç",claude:"Claude",cursor:"Cursor",codex:"Codex"},Xx={settings:"Araç Ayarları",error:"Araç Hatası",result:"Araç Sonucu",viewParams:"Girdi parametrelerini göster",viewRawParams:"Ham parametreleri göster",viewDiff:"Düzenleme diff'ini göster:",creatingFile:"Yeni dosya oluşturuluyor:",updatingTodo:"Yapılacaklar Listesi güncelleniyor",read:"Okundu",readFile:"Dosyayı oku",updateTodo:"Yapılacaklar listesini güncelle",readTodo:"Yapılacaklar listesini oku",searchResults:"sonuç"},ey={found:"{{count}} {{type}} bulundu",file:"dosya",files:"dosya",pattern:"desen:",in:"şurada:"},ty={updated:"Dosya başarıyla güncellendi",created:"Dosya başarıyla oluşturuldu",written:"Dosya başarıyla yazıldı",diff:"Diff",newFile:"Yeni Dosya",viewContent:"Dosya içeriğini göster",viewFullOutput:"Tam çıktıyı göster ({{count}} karakter)",contentDisplayed:"Dosya içeriği yukarıdaki diff görünümünde gösteriliyor"},ny={title:"Etkileşimli Prompt",waiting:"CLI'da yanıtın bekleniyor",instruction:"Lütfen Claude'un çalıştığı terminalde bir seçenek seç.",selectedOption:"✓ Claude {{number}} numaralı seçeneği seçti",instructionDetail:"CLI'da bu seçeneği ok tuşları veya numara girerek interaktif olarak seçebilirsin."},sy={title:"Düşünüyor...",emoji:"💭 Düşünüyor..."},iy={response:"JSON Yanıtı"},ay={grant:"{{tool}} için izin ver",added:"İzin eklendi",addTo:"{{entry}} İzin Verilen Araçlar listesine ekleniyor.",retry:"İzin kaydedildi. Aracı kullanmak için isteği tekrar dene.",error:"İzinler güncellenemedi. Lütfen tekrar dene.",openSettings:"Ayarları aç"},oy={updated:"Yapılacaklar listesi başarıyla güncellendi",current:"Mevcut Yapılacaklar Listesi"},ry={viewPlan:"📋 Uygulama planını göster",title:"Uygulama Planı"},ly={resetAt:"Claude kullanım limitin doldu. Limitin **{{time}} {{timezone}}** — {{date}} tarihinde sıfırlanacak"},cy={permissionMode:"İzin Modu",modes:{default:"Varsayılan Mod",auto:"Auto Mode",acceptEdits:"Düzenlemeleri Kabul Et",bypassPermissions:"İzinleri Atla",plan:"Plan Modu"},descriptions:{default:"Sadece güvenilir komutlar (ls, cat, grep, git status, vb.) otomatik çalışır. Diğer komutlar atlanır. Çalışma alanına yazabilir.",auto:"A model classifier decides per tool call whether to approve or deny. Hands-off, but safer than Bypass — denials still happen.",acceptEdits:"Tüm komutlar çalışma alanı içinde otomatik çalışır. Sandbox'lu çalıştırma ile tam otomatik mod.",bypassPermissions:"Kısıtlama olmadan tam sistem erişimi. Tüm komutlar tam disk ve ağ erişimiyle otomatik çalışır. Dikkatli kullan.",plan:"Planlama modu — hiçbir komut çalıştırılmaz"},technicalDetails:"Teknik ayrıntılar"},dy={placeholder:"Komutlar için /, dosyalar için @ yaz ya da {{provider}}'a her şeyi sor...",placeholderDefault:"Mesajını yaz...",disabled:"Girdi devre dışı",attachFiles:"Dosya ekle",attachImages:"Resim ekle",send:"Gönder",stop:"Durdur",hintText:{ctrlEnter:"Göndermek için Ctrl+Enter • Yeni satır için Shift+Enter • Mod değiştirmek için Tab • Slash komutları için /",enter:"Göndermek için Enter • Yeni satır için Shift+Enter • Mod değiştirmek için Tab • Slash komutları için /"},clickToChangeMode:"İzin modunu değiştirmek için tıkla (veya girdide Tab tuşuna bas)",showAllCommands:"Tüm komutları göster",clearInput:"Girdiyi temizle",scrollToBottom:"En alta git"},uy={title:"AI Asistanını Seç",description:"Yeni bir konuşma başlatmak için bir sağlayıcı seç",selectModel:"Model Seç",providerInfo:{anthropic:"Anthropic tarafından",openai:"OpenAI tarafından",cursorEditor:"AI Kod Editörü",google:"Google tarafından"},readyPrompt:{claude:"Claude'u {{model}} ile kullanmaya hazır. Mesajını aşağıya yazmaya başla.",cursor:"Cursor'ı {{model}} ile kullanmaya hazır. Mesajını aşağıya yazmaya başla.",codex:"Codex'i {{model}} ile kullanmaya hazır. Mesajını aşağıya yazmaya başla.",default:"Başlamak için yukarıdan bir sağlayıcı seç"},pressToSearch:"Oturumlarda, dosyalarda ve commit'lerde arama yapmak için <kbd>{{shortcut}}</kbd> tuşlarına bas"},py={continue:{title:"Konuşmana devam et",description:"Kodun hakkında soru sor, değişiklik iste veya geliştirme görevlerinde yardım al"},loading:{olderMessages:"Eski mesajlar yükleniyor...",sessionMessages:"Oturum mesajları yükleniyor..."},messages:{showingOf:"{{total}} mesajdan {{shown}} tanesi gösteriliyor",scrollToLoad:"Daha fazlasını yüklemek için yukarı kaydır",showingLast:"Son {{count}} mesaj gösteriliyor ({{total}} toplam)",loadEarlier:"Önceki mesajları yükle",loadAll:"Tüm mesajları yükle",loadingAll:"Tüm mesajlar yükleniyor...",allLoaded:"Tüm mesajlar yüklendi",perfWarning:'Tüm mesajlar yüklendi — kaydırma yavaşlayabilir. Performansı geri getirmek için "En alta git"e tıkla.'}},my={selectProject:{title:"Proje Seç",description:"O dizinde etkileşimli shell açmak için bir proje seç"},status:{newSession:"Yeni Oturum",initializing:"Başlatılıyor...",restarting:"Yeniden başlatılıyor..."},actions:{disconnect:"Bağlantıyı Kes",disconnectTitle:"Shell bağlantısını kes",restart:"Yeniden Başlat",restartTitle:"Shell'i yeniden başlat (önce bağlantıyı kes)",connect:"Shell'de Devam Et",connectTitle:"Shell'e bağlan"},loading:"Terminal yükleniyor...",connecting:"Shell'e bağlanılıyor...",startSession:"Yeni bir Claude oturumu başlat",resumeSession:"Oturuma devam et: {{displayName}}...",runCommand:"{{projectName}} içinde {{command}} çalıştır",startCli:"{{projectName}} içinde Claude CLI başlatılıyor",defaultCommand:"komut"},gy={actions:{thinking:"Düşünüyor",processing:"İşliyor",analyzing:"Analiz ediyor",working:"Çalışıyor",computing:"Hesaplıyor",reasoning:"Mantık yürütüyor"},state:{live:"Canlı",paused:"Duraklatıldı"},elapsed:{seconds:"{{count}}s",minutesSeconds:"{{minutes}}d {{seconds}}s",label:"{{time}} geçti",startingNow:"Şimdi başlıyor"},controls:{stopGeneration:"Üretmeyi Durdur",pressEscToStop:"Durdurmak için istediğin zaman Esc'ye bas"},providers:{assistant:"Asistan"}},hy={startChatWithProvider:"{{provider}} ile sohbet etmeye başlamak için bir proje seç"},fy={nextTaskPrompt:"Sonraki görevi başlat"},by={codeBlock:Jx,copyMessage:Qx,messageTypes:Zx,tools:Xx,search:ey,fileOperations:ty,interactive:ny,thinking:sy,json:iy,permissions:ay,todo:oy,plan:ry,usageLimit:ly,codex:cy,input:dy,providerSelection:uy,session:py,shell:my,claudeStatus:gy,projectSelection:hy,tasks:fy},vy={changes:"değişiklik",previousChange:"Önceki değişiklik",nextChange:"Sonraki değişiklik",hideDiff:"Diff vurgusunu gizle",showDiff:"Diff vurgusunu göster",settings:"Editör Ayarları",collapse:"Editörü daralt",expand:"Editörü tüm genişliğe aç"},ky="{{fileName}} yükleniyor...",xy={showingChanges:"Değişiklikler gösteriliyor"},yy={copyPath:"Dosya yolunu kopyala",pathCopied:"Dosya yolu kopyalandı",download:"Dosyayı indir",save:"Kaydet",saving:"Kaydediliyor...",saved:"Kaydedildi!",exitFullscreen:"Tam ekrandan çık",fullscreen:"Tam ekran",close:"Kapat",previewMarkdown:"Markdown önizle",editMarkdown:"Markdown düzenle"},wy={lines:"Satır:",characters:"Karakter:",shortcuts:"Kaydetmek için Ctrl+S • Kapatmak için Esc"},Cy={title:"Binary Dosya",message:'"{{fileName}}" dosyası binary olduğu için metin editöründe gösterilemez.'},Sy={toolbar:vy,loading:ky,header:xy,actions:yy,footer:wy,binaryFile:Cy},Py={title:"TaskMaster AI yapılandırılmamış",description:"TaskMaster, karmaşık projeleri AI destekli yardımla yönetilebilir görevlere böler",whatIsTitle:"🎯 TaskMaster nedir?",features:{aiPowered:"AI Destekli Görev Yönetimi: Karmaşık projeleri yönetilebilir alt görevlere böl",prdTemplates:"PRD Şablonları: Ürün Gereksinim Belgelerinden görev üret",dependencyTracking:"Bağımlılık Takibi: Görev ilişkilerini ve çalıştırma sırasını anla",progressVisualization:"İlerleme Görselleştirme: Kanban panoları ve detaylı görev analizleri",cliIntegration:"CLI Entegrasyonu: İleri seviye iş akışları için taskmaster komutlarını kullan"},initializeButton:"TaskMaster AI'yi Başlat"},Ay={title:"TaskMaster'a Başlarken",subtitle:"TaskMaster hazır! Sıradaki adımların:",steps:{createPRD:{title:"Ürün Gereksinim Belgesi (PRD) oluştur",description:"Proje fikrini konuş ve ne inşa etmek istediğini anlatan bir PRD yaz.",addButton:"PRD Ekle",existingPRDs:"Mevcut PRD'ler:"},generateTasks:{title:"PRD'den Görev Üret",description:"PRD'n hazır olduğunda AI asistanına ayrıştırmasını söyle; TaskMaster bunu otomatik olarak uygulama detaylarıyla yönetilebilir görevlere bölecek."},analyzeTasks:{title:"Görevleri Analiz Et ve Genişlet",description:"AI asistanına görev karmaşıklığını analiz etmesini ve uygulamayı kolaylaştırmak için detaylı alt görevlere ayırmasını söyle."},startBuilding:{title:"İnşaya Başla",description:"AI asistanına görevler üzerinde çalışmaya başlamasını, durumlarını güncellemesini ve proje geliştikçe yeni görevler eklemesini söyle."}},tip:"💡 İpucu: TaskMaster'ın AI destekli görev üretiminden en iyi şekilde faydalanmak için bir PRD ile başla"},jy={title:"TaskMaster Kurulumu",subtitle:"{{projectName}} için interaktif CLI",willStart:"TaskMaster başlatma otomatik olarak başlayacak",completed:"TaskMaster kurulumu tamamlandı! Bu pencereyi kapatabilirsin.",closeButton:"Kapat",closeContinueButton:"Kapat ve Devam Et"},Ty={title:"TaskMaster'a Başlarken",subtitle:"Verimli görev yönetimi için rehberin",examples:{parsePRD:`💬 Örnek:
|
|
27
27
|
"Claude Task Master ile yeni bir proje başlattım. .taskmaster/docs/prd.txt altında bir PRD'm var. Bunu ayrıştırıp ilk görevleri kurmama yardım eder misin?"`,expandTask:`💬 Örnek:
|
|
28
28
|
"Görev 5 karmaşık görünüyor. Bunu alt görevlere bölebilir misin?"`,addTask:`💬 Örnek:
|
|
29
|
-
"Lütfen Cloudinary kullanarak kullanıcı profil resmi yükleme özelliği için yeni bir görev ekle, en iyi yaklaşımı araştır."`},moreExamples:"Daha fazla örnek ve kullanım deseni →",proTips:{title:"💡 Pro İpuçları",search:"Belirli görevleri hızlıca bulmak için arama çubuğunu kullan",views:"Kanban, Liste ve Izgara görünümleri arasında geçiş yapmak için görünüm düğmelerini kullan",filters:"Belirli görev durumlarına veya önceliklere odaklanmak için filtreleri kullan",details:"Detaylı bilgi görmek ve alt görevleri yönetmek için herhangi bir göreve tıkla"},learnMore:{title:"📚 Daha Fazla Öğren",description:"TaskMaster AI, geliştiriciler için inşa edilmiş ileri seviye bir görev yönetim sistemidir. Dokümantasyona, örneklere bak ve projeye katkıda bulun.",githubButton:"GitHub'da Görüntüle"}},vy={placeholder:"Görevlerde ara..."},ky={button:"Filtreler",status:"Durum",priority:"Öncelik",sortBy:"Sıralama",allStatuses:"Tüm Durumlar",allPriorities:"Tüm Öncelikler",showing:"{{total}} görevin {{filtered}} tanesi gösteriliyor",clearFilters:"Filtreleri Temizle"},xy={id:"ID",status:"Durum",priority:"Öncelik",idAsc:"ID (Artan)",idDesc:"ID (Azalan)",titleAsc:"Başlık (A-Z)",titleDesc:"Başlık (Z-A)",statusAsc:"Durum (Önce Bekleyen)",statusDesc:"Durum (Önce Tamamlanan)",priorityAsc:"Öncelik (Önce Yüksek)",priorityDesc:"Öncelik (Önce Düşük)"},yy={kanban:"Kanban görünümü",list:"Liste görünümü",grid:"Izgara görünümü"},wy={pending:"📋 Yapılacak",inProgress:"🚀 Sürüyor",done:"✅ Tamamlandı",blocked:"🚫 Engellendi",deferred:"⏳ Ertelendi",cancelled:"❌ İptal Edildi",noTasksYet:"Henüz görev yok",tasksWillAppear:"Görevler burada görünecek",moveTasksHere:"Başlayan görevleri buraya taşı",completedTasksHere:"Tamamlanan görevler burada görünür",statusTasksHere:"Bu durumdaki görevler burada görünecek"},Cy={help:"TaskMaster Başlangıç Rehberi",prds:"PRD'ler",addPRD:"PRD Ekle",addTask:"Görev Ekle",createNewPRD:"Yeni PRD Oluştur",prdsAvailable:"{{count}} PRD mevcut"},Sy={modified:"Değişiklik: {{date}}"},Py={pending:"Beklemede","in-progress":"Sürüyor",done:"Tamamlandı",blocked:"Engellendi",deferred:"Ertelendi",cancelled:"İptal Edildi"},Ay={high:"Yüksek",medium:"Orta",low:"Düşük"},jy={title:"Filtrelerine uygun görev yok",description:"Arama veya filtre kriterlerini değiştirmeyi dene."},Ty={notConfigured:gy,gettingStarted:hy,setupModal:fy,helpGuide:by,search:vy,filters:ky,sort:xy,views:yy,kanban:wy,buttons:Cy,prd:Sy,statuses:Py,priorities:Ay,noMatchingTasks:jy},Iy={save:"Salva",cancel:"Annulla",delete:"Elimina",create:"Crea",edit:"Modifica",close:"Chiudi",confirm:"Conferma",submit:"Invia",retry:"Riprova",refresh:"Aggiorna",search:"Cerca",clear:"Cancella",copy:"Copia",download:"Scarica",upload:"Carica",browse:"Sfoglia"},Ey={chat:"Chat",shell:"Terminale",files:"File",git:"Controllo Versione",tasks:"Attività",browser:"Browser",computer:"Computer"},My={loading:"Caricamento...",success:"Completato",error:"Errore",failed:"Fallito",pending:"In attesa",completed:"Completato",inProgress:"In corso"},zy={savedSuccessfully:"Salvato con successo",deletedSuccessfully:"Eliminato con successo",updatedSuccessfully:"Aggiornato con successo",operationFailed:"Operazione fallita",networkError:"Errore di rete. Controlla la tua connessione.",unauthorized:"Non autorizzato. Effettua l'accesso.",notFound:"Non trovato",invalidInput:"Input non valido",requiredField:"Questo campo è obbligatorio",unknownError:"Si è verificato un errore sconosciuto"},Dy={settings:"Impostazioni",home:"Home",back:"Indietro",next:"Avanti",previous:"Precedente",logout:"Esci"},Ny={language:"Lingua",theme:"Tema",darkMode:"Modalità scura",lightMode:"Modalità chiara",name:"Nome",description:"Descrizione",enabled:"Abilitato",disabled:"Disabilitato",optional:"Opzionale",version:"Versione",select:"Seleziona",selectAll:"Seleziona tutto",deselectAll:"Deseleziona tutto"},$y={justNow:"Adesso",minutesAgo:"{{count}} min fa",hoursAgo:"{{count}} ore fa",daysAgo:"{{count}} giorni fa",yesterday:"Ieri"},Ry={newFile:"Nuovo file",newFolder:"Nuova cartella",rename:"Rinomina",move:"Sposta",copyPath:"Copia percorso",openInEditor:"Apri nell'editor"},Ly={loading:"Caricamento WindCli",settingUpWorkspace:"Preparazione dell'area di lavoro...",chooseProject:"Scegli il tuo progetto",selectProjectDescription:"Seleziona un progetto dalla barra laterale per iniziare a programmare con Claude. Ogni progetto contiene le tue sessioni di chat e la cronologia dei file.",tip:"Suggerimento",createProjectMobile:"Tocca il pulsante menu in alto per accedere ai progetti",createProjectDesktop:"Crea un nuovo progetto cliccando l'icona cartella nella barra laterale",newSession:"Nuova sessione",untitledSession:"Sessione senza titolo",projectFiles:"File del progetto"},Fy={loading:"Caricamento file...",files:"File",simpleView:"Vista semplice",compactView:"Vista compatta",detailedView:"Vista dettagliata",searchPlaceholder:"Cerca file e cartelle...",clearSearch:"Cancella ricerca",name:"Nome",size:"Dimensione",modified:"Modificato",permissions:"Permessi",noFilesFound:"Nessun file trovato",checkProjectPath:"Verifica che il percorso del progetto sia accessibile",noMatchesFound:"Nessuna corrispondenza trovata",tryDifferentSearch:"Prova con un termine di ricerca diverso o cancella la ricerca",justNow:"adesso",minAgo:"{{count}} min fa",hoursAgo:"{{count}} ore fa",daysAgo:"{{count}} giorni fa",newFile:"Nuovo file (Cmd+N)",newFolder:"Nuova cartella (Cmd+Shift+N)",refresh:"Aggiorna",collapseAll:"Comprimi tutto",context:{rename:"Rinomina",delete:"Elimina",copyPath:"Copia percorso",download:"Scarica",newFile:"Nuovo file",newFolder:"Nuova cartella",upload:"Carica file",refresh:"Aggiorna",menuLabel:"Menu contestuale file",loading:"Caricamento..."}},By={title:"Crea nuovo progetto",steps:{type:"Tipo",configure:"Configura",confirm:"Conferma"},step1:{question:"Hai già un'area di lavoro o vuoi crearne una nuova?",existing:{title:"Area di lavoro esistente",description:"Ho già un'area di lavoro sul mio server e devo solo aggiungerla alla lista dei progetti"},new:{title:"Nuova area di lavoro",description:"Crea una nuova area di lavoro, opzionalmente clonando da un repository GitHub"}},step2:{existingPath:"Percorso area di lavoro",newPath:"Percorso area di lavoro",existingPlaceholder:"/percorso/area-di-lavoro/esistente",newPlaceholder:"/percorso/nuova/area-di-lavoro",existingHelp:"Percorso completo della directory dell'area di lavoro esistente",newHelp:"Percorso completo della directory dell'area di lavoro",githubUrl:"URL GitHub (opzionale)",githubPlaceholder:"https://github.com/utente/repository",githubHelp:"Opzionale: fornisci un URL GitHub per clonare un repository",githubAuth:"Autenticazione GitHub (opzionale)",githubAuthHelp:"Richiesta solo per repository privati. I repository pubblici possono essere clonati senza autenticazione.",loadingTokens:"Caricamento token salvati...",storedToken:"Token salvato",newToken:"Nuovo token",nonePublic:"Nessuno (pubblico)",selectToken:"Seleziona token",selectTokenPlaceholder:"-- Seleziona un token --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"Questo token verrà utilizzato solo per questa operazione",publicRepoInfo:"I repository pubblici non richiedono autenticazione. Puoi saltare il token se stai clonando un repository pubblico.",noTokensHelp:"Nessun token salvato disponibile. Puoi aggiungere token in Impostazioni → Chiavi API per un riutilizzo più semplice.",optionalTokenPublic:"Token GitHub (opzionale per repository pubblici)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (lascia vuoto per repository pubblici)"},step3:{reviewConfig:"Rivedi la tua configurazione",existingWorkspace:"Area di lavoro esistente",newWorkspace:"Nuova area di lavoro",path:"Percorso:",cloneFrom:"Clona da:",authentication:"Autenticazione:",usingStoredToken:"Usando token salvato:",usingProvidedToken:"Usando token fornito",noAuthentication:"Nessuna autenticazione",sshKey:"Chiave SSH",existingInfo:"L'area di lavoro verrà aggiunta alla lista dei progetti e sarà disponibile per le sessioni Claude/Cursor.",newWithClone:"Il repository verrà clonato da questa cartella.",newEmpty:"L'area di lavoro verrà aggiunta alla lista dei progetti e sarà disponibile per le sessioni Claude/Cursor.",cloningRepository:"Clonazione repository..."},buttons:{cancel:"Annulla",back:"Indietro",next:"Avanti",createProject:"Crea progetto",creating:"Creazione...",cloning:"Clonazione..."},errors:{selectType:"Seleziona se hai un'area di lavoro esistente o vuoi crearne una nuova",providePath:"Fornisci un percorso per l'area di lavoro",failedToCreate:"Impossibile creare l'area di lavoro",failedToCreateFolder:"Impossibile creare la cartella"}},Gy={genericTool:"uno strumento",codes:{generic:{info:{title:"Notifica"}},permission:{required:{title:"Azione richiesta",body:"{{toolName}} è in attesa della tua decisione."}},run:{stopped:{title:"Esecuzione interrotta",body:"Motivo: {{reason}}"},failed:{title:"Esecuzione fallita"}},agent:{notification:{title:"Notifica agente"}}}},Hy={title:"Aggiornamento disponibile",newVersionReady:"Una nuova versione è pronta",currentVersion:"Versione attuale",latestVersion:"Ultima versione",whatsNew:"Novità:",viewFullRelease:"Vedi release completa",updateProgress:"Progresso aggiornamento:",manualUpgrade:"Aggiornamento manuale:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:`Oppure clicca "Aggiorna ora" per eseguire l'aggiornamento automaticamente.`,updateCompleted:"Aggiornamento completato con successo!",restartServer:"Riavvia il server per applicare le modifiche.",updateFailed:"Aggiornamento fallito",buttons:{close:"Chiudi",later:"Più tardi",copyCommand:"Copia comando",updateNow:"Aggiorna ora",updating:"Aggiornamento..."},ariaLabels:{closeModal:"Chiudi finestra aggiornamento versione",showSidebar:"Mostra barra laterale",settings:"Impostazioni",updateAvailable:"Aggiornamento disponibile",closeSidebar:"Chiudi barra laterale"}},Oy={buttons:Iy,tabs:Ey,status:My,messages:zy,navigation:Dy,common:Ny,time:$y,fileOperations:Ry,mainContent:Ly,fileTree:Fy,projectWizard:By,notifications:Gy,versionUpdate:Hy},Uy="Impostazioni",qy={account:"Account",permissions:"Permessi",mcpServers:"Server MCP",appearance:"Aspetto"},Wy={title:"Account",language:"Lingua",languageLabel:"Lingua dell'interfaccia",languageDescription:"Scegli la lingua preferita per l'interfaccia",username:"Nome utente",email:"Email",profile:"Profilo",changePassword:"Cambia password"},Vy={title:"Server MCP",addServer:"Aggiungi server",editServer:"Modifica server",deleteServer:"Elimina server",serverName:"Nome server",serverType:"Tipo server",config:"Configurazione",testConnection:"Testa connessione",status:"Stato",connected:"Connesso",disconnected:"Disconnesso",scope:{label:"Ambito",user:"Utente",project:"Progetto"}},Ky={title:"Aspetto",theme:"Tema",codeEditor:"Editor codice",editorTheme:"Tema editor",wordWrap:"A capo automatico",showMinimap:"Mostra minimappa",lineNumbers:"Numeri di riga",fontSize:"Dimensione carattere"},_y={saveChanges:"Salva modifiche",resetToDefaults:"Ripristina predefiniti",cancelChanges:"Annulla modifiche"},Yy={title:"Impostazioni rapide",sections:{appearance:"Aspetto",toolDisplay:"Visualizzazione strumenti",inputSettings:"Impostazioni input"},darkMode:"Modalità scura",showRawParameters:"Mostra parametri grezzi",showThinking:"Mostra ragionamento",sendByCtrlEnter:"Invia con Ctrl+Invio",sendByCtrlEnterDescription:"Se abilitato, premere Ctrl+Invio invierà il messaggio invece di Invio. Utile per gli utenti IME per evitare invii accidentali.",dragHandle:{dragging:"Trascinamento maniglia",closePanel:"Chiudi pannello impostazioni",openPanel:"Apri pannello impostazioni",draggingStatus:"Trascinamento...",toggleAndMove:"Clicca per attivare/disattivare, trascina per spostare"}},Jy={title:"Scorciatoie terminale",sectionKeys:"Tasti",sectionNavigation:"Navigazione",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"Freccia su",arrowDown:"Freccia giù",scrollDown:"Scorri giù",handle:{closePanel:"Chiudi pannello scorciatoie",openPanel:"Apri pannello scorciatoie"}},Qy={label:"Impostazioni",agents:"Agenti",appearance:"Aspetto",git:"Git",apiTokens:"API e Token",tasks:"Attività",notifications:"Notifiche",plugins:"Plugin",about:"Informazioni"},Zy={title:"Notifiche",description:"Controlla quali notifiche ricevere.",webPush:{title:"Notifiche push web",enable:"Abilita notifiche push",disable:"Disabilita notifiche push",enabled:"Le notifiche push sono abilitate",loading:"Aggiornamento...",unsupported:"Le notifiche push non sono supportate in questo browser.",denied:"Le notifiche push sono bloccate. Abilitale nelle impostazioni del browser."},sound:{title:"Suono",description:"Riproduci un breve tono quando termina un'esecuzione della chat.",enabled:"Attivato",test:"Prova suono"},events:{title:"Tipi di evento",actionRequired:"Azione richiesta",stop:"Esecuzione interrotta",error:"Esecuzione fallita"}},Xy={darkMode:{label:"Modalità scura",description:"Alterna tra tema chiaro e scuro"},projectSorting:{label:"Ordinamento progetti",description:"Come vengono ordinati i progetti nella barra laterale",alphabetical:"Alfabetico",recentActivity:"Attività recente"},codeEditor:{title:"Editor codice",theme:{label:"Tema editor",description:"Tema predefinito per l'editor di codice"},wordWrap:{label:"A capo automatico",description:"Abilita il ritorno a capo automatico nell'editor"},showMinimap:{label:"Mostra minimappa",description:"Visualizza una minimappa per facilitare la navigazione nella vista differenze"},lineNumbers:{label:"Mostra numeri di riga",description:"Visualizza i numeri di riga nell'editor"},fontSize:{label:"Dimensione carattere",description:"Dimensione del carattere dell'editor in pixel"}}},ew={title:{add:"Aggiungi server MCP",edit:"Modifica server MCP"},importMode:{form:"Input modulo",json:"Importa JSON"},scope:{label:"Ambito",userGlobal:"Utente (globale)",projectLocal:"Progetto (locale)",userDescription:"Ambito utente: disponibile in tutti i progetti sulla tua macchina",projectDescription:"Ambito locale: disponibile solo nel progetto selezionato",cannotChange:"L'ambito non può essere modificato quando si modifica un server esistente"},fields:{serverName:"Nome server",transportType:"Tipo di trasporto",command:"Comando",arguments:"Argomenti (uno per riga)",jsonConfig:"Configurazione JSON",url:"URL",envVars:"Variabili d'ambiente (CHIAVE=valore, una per riga)",headers:"Header (CHIAVE=valore, uno per riga)",selectProject:"Seleziona un progetto..."},placeholders:{serverName:"mio-server"},validation:{missingType:"Campo obbligatorio mancante: type",stdioRequiresCommand:"Il tipo stdio richiede un campo command",httpRequiresUrl:"Il tipo {{type}} richiede un campo url",invalidJson:"Formato JSON non valido",jsonHelp:"Incolla la configurazione del server MCP in formato JSON. Esempi di formato:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"Dettagli configurazione (da {{configFile}})",projectPath:"Percorso: {{path}}",actions:{cancel:"Annulla",saving:"Salvataggio...",addServer:"Aggiungi server",updateServer:"Aggiorna server"}},tw={success:"Impostazioni salvate con successo!",error:"Impossibile salvare le impostazioni",saving:"Salvataggio..."},nw={save:"Salva impostazioni",cancel:"Annulla"},sw={title:"Configurazione Git",description:"Configura la tua identità git per i commit. Queste impostazioni verranno applicate globalmente tramite git config --global",name:{label:"Nome Git",help:"Il tuo nome per i commit git"},email:{label:"Email Git",help:"La tua email per i commit git"},actions:{save:"Salva configurazione",saving:"Salvataggio..."},status:{success:"Salvato con successo"}},iw={title:"Chiavi API",description:"Genera chiavi API per accedere all'API esterna da altre applicazioni.",newKey:{alertTitle:"⚠️ Salva la tua chiave API",alertMessage:"Questa è l'unica volta che vedrai questa chiave. Conservala in modo sicuro.",iveSavedIt:"L'ho salvata"},form:{placeholder:"Nome chiave API (es. Server produzione)",createButton:"Crea",cancelButton:"Annulla"},newButton:"Nuova chiave API",empty:"Nessuna chiave API creata.",list:{created:"Creata:",lastUsed:"Ultimo utilizzo:"},confirmDelete:"Sei sicuro di voler eliminare questa chiave API?",status:{active:"Attiva",inactive:"Inattiva"},github:{title:"Token GitHub",description:"Aggiungi token di accesso personale GitHub per clonare repository privati tramite l'API esterna.",descriptionAlt:"Aggiungi token di accesso personale GitHub per clonare repository privati. Puoi anche passare i token direttamente nelle richieste API senza salvarli.",addButton:"Aggiungi token",form:{namePlaceholder:"Nome token (es. Repository personali)",tokenPlaceholder:"Token di accesso personale GitHub (ghp_...)",descriptionPlaceholder:"Descrizione (opzionale)",addButton:"Aggiungi token",cancelButton:"Annulla",howToCreate:"Come creare un token di accesso personale GitHub →"},empty:"Nessun token GitHub aggiunto.",added:"Aggiunto:",confirmDelete:"Sei sicuro di voler eliminare questo token GitHub?"},apiDocsLink:"Documentazione API",documentation:{title:"Documentazione API esterna",description:"Scopri come usare l'API esterna per avviare sessioni Claude/Cursor dalle tue applicazioni.",viewLink:"Vedi documentazione API →"},loading:"Caricamento...",version:{updateAvailable:"Aggiornamento disponibile: v{{version}}"}},aw={checking:"Verifica installazione TaskMaster...",notInstalled:{title:"TaskMaster AI CLI non installato",description:"TaskMaster CLI è necessario per usare le funzionalità di gestione attività. Installalo per iniziare:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"Vedi su GitHub",afterInstallation:"Dopo l'installazione:",steps:{restart:"Riavvia questa applicazione",autoAvailable:"Le funzionalità TaskMaster saranno automaticamente disponibili",initCommand:"Usa task-master init nella directory del tuo progetto"}},settings:{enableLabel:"Abilita integrazione TaskMaster",enableDescription:"Mostra attività TaskMaster, banner e indicatori nella barra laterale nell'interfaccia"}},ow={authStatus:{checking:"Verifica...",connected:"Connesso",notConnected:"Non connesso",disconnected:"Disconnesso",checkingAuth:"Verifica stato autenticazione...",loggedInAs:"Connesso come {{email}}",authenticatedUser:"utente autenticato"},account:{claude:{description:"Assistente AI Anthropic Claude"},cursor:{description:"Editor di codice potenziato da AI Cursor"},codex:{description:"Assistente AI OpenAI Codex"}},connectionStatus:"Stato connessione",login:{title:"Accedi",reAuthenticate:"Ri-autenticati",description:"Accedi al tuo account {{agent}} per abilitare le funzionalità AI",reAuthDescription:"Accedi con un account diverso o aggiorna le credenziali",button:"Accedi",reLoginButton:"Ri-accedi"},error:"Errore: {{error}}"},rw={title:"Impostazioni permessi",skipPermissions:{label:"Salta richieste di permesso (usa con cautela)",claudeDescription:"Equivalente al flag --dangerously-skip-permissions",cursorDescription:"Equivalente al flag -f in Cursor CLI"},allowedTools:{title:"Strumenti consentiti",description:"Strumenti automaticamente consentiti senza richiedere permesso",placeholder:'es. "Bash(git log:*)" o "Write"',quickAdd:"Aggiunta rapida strumenti comuni:",empty:"Nessuno strumento consentito configurato"},blockedTools:{title:"Strumenti bloccati",description:"Strumenti automaticamente bloccati senza richiedere permesso",placeholder:'es. "Bash(rm:*)"',empty:"Nessuno strumento bloccato configurato"},allowedCommands:{title:"Comandi shell consentiti",description:"Comandi shell automaticamente consentiti senza richiedere permesso",placeholder:'es. "Shell(ls)" o "Shell(git status)"',quickAdd:"Aggiunta rapida comandi comuni:",empty:"Nessun comando consentito configurato"},blockedCommands:{title:"Comandi shell bloccati",description:"Comandi shell automaticamente bloccati",placeholder:'es. "Shell(rm -rf)" o "Shell(sudo)"',empty:"Nessun comando bloccato configurato"},toolExamples:{title:"Esempi pattern strumenti:",bashGitLog:"- Consenti tutti i comandi git log",bashGitDiff:"- Consenti tutti i comandi git diff",write:"- Consenti tutti gli utilizzi dello strumento Write",bashRm:"- Blocca tutti i comandi rm (pericoloso)"},shellExamples:{title:"Esempi comandi shell:",ls:"- Consenti comando ls",gitStatus:"- Consenti git status",npmInstall:"- Consenti npm install",rmRf:"- Blocca eliminazione ricorsiva"},codex:{permissionMode:"Modalità permessi",description:"Controlla come Codex gestisce le modifiche ai file e l'esecuzione dei comandi",modes:{default:{title:"Predefinito",description:"Solo i comandi attendibili (ls, cat, grep, git status, ecc.) vengono eseguiti automaticamente. Gli altri comandi vengono saltati. Può scrivere nell'area di lavoro."},acceptEdits:{title:"Accetta modifiche",description:"Tutti i comandi vengono eseguiti automaticamente nell'area di lavoro. Modalità completamente automatica con esecuzione sandboxed."},bypassPermissions:{title:"Ignora permessi",description:"Accesso completo al sistema senza restrizioni. Tutti i comandi vengono eseguiti automaticamente con accesso completo a disco e rete. Usa con cautela."}},technicalDetails:"Dettagli tecnici",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted. Comandi attendibili: cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find (senza -exec), ecc.",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never. Tutti i comandi vengono auto-eseguiti nella directory del progetto.",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never. Accesso completo al sistema, usa solo in ambienti attendibili.",overrideNote:"Puoi sovrascrivere questa impostazione per sessione usando il pulsante modalità nell'interfaccia chat."}},actions:{add:"Aggiungi"}},lw={title:"Server MCP",description:{claude:"I server Model Context Protocol forniscono strumenti e fonti dati aggiuntive a Claude",cursor:"I server Model Context Protocol forniscono strumenti e fonti dati aggiuntive a Cursor",codex:"I server Model Context Protocol forniscono strumenti e fonti dati aggiuntive a Codex"},addButton:"Aggiungi server MCP",empty:"Nessun server MCP configurato",serverType:"Tipo",scope:{local:"locale",user:"utente"},config:{command:"Comando",url:"URL",args:"Argomenti",environment:"Ambiente"},tools:{title:"Strumenti",count:"({{count}}):",more:"+{{count}} altri"},actions:{edit:"Modifica server",delete:"Elimina server"},help:{title:"Informazioni su Codex MCP",description:"Codex supporta server MCP basati su stdio. Puoi aggiungere server che estendono le capacità di Codex con strumenti e risorse aggiuntive."}},cw={title:"Plugin",description:"Estendi l'interfaccia con plugin personalizzati. Installa da git o inserisci una cartella in ~/.claude-code-ui/plugins/",installPlaceholder:"https://github.com/utente/mio-plugin",installButton:"Installa",installing:"Installazione…",securityWarning:"Installa solo plugin di cui hai verificato il codice sorgente o di autori di cui ti fidi.",scanningPlugins:"Scansione plugin…",noPluginsInstalled:"Nessun plugin installato",pullLatest:"Aggiorna da git",noGitRemote:"Nessun remote git — aggiornamento non disponibile",uninstallPlugin:"Disinstalla plugin",confirmUninstall:"Clicca di nuovo per confermare",confirmUninstallMessage:"Rimuovere {{name}}? Questa azione non può essere annullata.",cancel:"Annulla",remove:"Rimuovi",updateFailed:"Aggiornamento fallito",installFailed:"Installazione fallita",uninstallFailed:"Disinstallazione fallita",toggleFailed:"Attivazione/disattivazione fallita",starterPluginLabel:"Plugin iniziale",starter:"Iniziale",docs:"Documentazione",starterPlugin:{name:"Statistiche progetto",badge:"iniziale",description:"Conteggio file, righe di codice, ripartizione per tipo di file e attività recente per il tuo progetto.",install:"Installa"},terminalPlugin:{name:"Terminale",badge:"ufficiale",description:"Terminale integrato con accesso completo alla shell direttamente nell'interfaccia.",install:"Installa"},morePlugins:"Altri",enable:"Abilita",disable:"Disabilita",installAriaLabel:"URL repository git del plugin",tab:"scheda",runningStatus:"in esecuzione"},dw={title:Uy,tabs:qy,account:Wy,mcp:Vy,appearance:Ky,actions:_y,quickSettings:Yy,terminalShortcuts:Jy,mainTabs:Qy,notifications:Zy,appearanceSettings:Xy,mcpForm:ew,saveStatus:tw,footerActions:nw,git:sw,apiKeys:iw,tasks:aw,agents:ow,permissions:rw,mcpServers:lw,pluginSettings:cw},uw={title:"Bentornato",description:"Accedi al tuo account WindCli self-hosted",username:"Nome utente",password:"Password",submit:"Accedi",loading:"Accesso in corso...",errors:{invalidCredentials:"Nome utente o password non validi",requiredFields:"Compila tutti i campi",networkError:"Errore di rete. Riprova."},placeholders:{username:"Inserisci il tuo nome utente",password:"Inserisci la tua password"}},pw={title:"Crea account",username:"Nome utente",password:"Password",confirmPassword:"Conferma password",submit:"Crea account",loading:"Creazione account...",errors:{passwordMismatch:"Le password non corrispondono",usernameTaken:"Nome utente già in uso",weakPassword:"La password è troppo debole"}},mw={title:"Disconnetti",confirm:"Sei sicuro di volerti disconnettere?",button:"Disconnetti"},gw={login:uw,register:pw,logout:mw},hw={title:"Progetti",newProject:"Nuovo progetto",deleteProject:"Rimuovi progetto",renameProject:"Rinomina progetto",noProjects:"Nessun progetto trovato",loadingProjects:"Caricamento progetti...",searchPlaceholder:"Cerca progetti...",projectNamePlaceholder:"Nome progetto",starred:"Preferiti",all:"Tutti",untitledSession:"Sessione senza titolo",newSession:"Nuova sessione",codexSession:"Sessione Codex",fetchingProjects:"Recupero dei tuoi progetti e sessioni Claude",projects:"progetti",noMatchingProjects:"Nessun progetto corrispondente",tryDifferentSearch:"Prova a modificare il termine di ricerca",runClaudeCli:"Esegui Claude CLI in una directory di progetto per iniziare"},fw={title:"WindCli",subtitle:"Interfaccia assistente di programmazione AI"},bw={title:"Sessioni",newSession:"Nuova sessione",deleteSession:"Elimina sessione",renameSession:"Rinomina sessione",noSessions:"Nessuna sessione",loadingSessions:"Caricamento sessioni...",unnamed:"Senza nome",loading:"Caricamento...",showMore:"Mostra più sessioni"},vw={viewEnvironments:"Visualizza ambienti",hideSidebar:"Nascondi barra laterale",createProject:"Crea nuovo progetto",refresh:"Aggiorna progetti e sessioni (Ctrl+R)",renameProject:"Rinomina progetto (F2)",deleteProject:"Rimuovi progetto dalla barra laterale (Canc)",addToFavorites:"Aggiungi ai preferiti",removeFromFavorites:"Rimuovi dai preferiti",editSessionName:"Modifica manualmente il nome della sessione",deleteSession:"Elimina questa sessione permanentemente",activeSessionIndicator:"Sessione attiva di recente (ultimi 10 minuti)",save:"Salva",cancel:"Annulla",clearSearch:"Cancella ricerca",openCommandPalette:"Apri tavolozza comandi",attentionRequiredIndicator:"La sessione richiede attenzione"},kw={chat:"Chat",files:"File",git:"Git",terminal:"Terminale",tasks:"Attività"},xw={refresh:"Aggiorna",settings:"Impostazioni",collapseAll:"Comprimi tutto",expandAll:"Espandi tutto",cancel:"Annulla",save:"Salva",delete:"Elimina",rename:"Rinomina",joinCommunity:"Unisciti alla community",reportIssue:"Segnala problema",starOnGithub:"Metti stella su GitHub"},yw={openSource:"Open Source"},ww={active:"Attivo",inactive:"Inattivo",thinking:"Sto pensando...",error:"Errore",aborted:"Interrotto",unknown:"Sconosciuto"},Cw={justNow:"Adesso",oneMinuteAgo:"1 min fa",minutesAgo:"{{count}} min fa",oneHourAgo:"1 ora fa",hoursAgo:"{{count}} ore fa",oneDayAgo:"1 giorno fa",daysAgo:"{{count}} giorni fa"},Sw={deleteConfirm:"Sei sicuro di voler eliminare questo elemento?",renameSuccess:"Rinominato con successo",deleteSuccess:"Eliminato con successo",errorOccurred:"Si è verificato un errore",deleteSessionConfirm:"Sei sicuro di voler eliminare questa sessione? Questa azione non può essere annullata.",deleteProjectConfirm:"Rimuovere questo progetto dalla barra laterale? I file del progetto, le memorie e i dati delle sessioni non verranno eliminati.",enterProjectPath:"Inserisci un percorso di progetto",deleteSessionFailed:"Impossibile eliminare la sessione. Riprova.",deleteSessionError:"Errore durante l'eliminazione della sessione. Riprova.",renameSessionFailed:"Impossibile rinominare la sessione. Riprova.",renameSessionError:"Errore durante la rinomina della sessione. Riprova.",deleteProjectFailed:"Impossibile rimuovere il progetto. Riprova.",deleteProjectError:"Errore durante la rimozione del progetto. Riprova.",createProjectFailed:"Impossibile creare il progetto. Riprova.",createProjectError:"Errore durante la creazione del progetto. Riprova.",updateProjectError:"Errore durante l'aggiornamento del progetto. Riprova.",refreshError:"Aggiornamento non riuscito. Riprova.",restoreProjectFailed:"Impossibile ripristinare il progetto. Riprova.",restoreProjectError:"Errore durante il ripristino del progetto. Riprova.",restoreSessionFailed:"Impossibile ripristinare la sessione. Riprova.",restoreSessionError:"Errore durante il ripristino della sessione. Riprova."},Pw={updateAvailable:"Aggiornamento disponibile",restartRequired:"Aggiornamento installato — riavvia il server per applicarlo"},Aw={modeProjects:"Progetti",modeConversations:"Conversazioni",conversationsPlaceholder:"Cerca nelle conversazioni...",searching:"Ricerca in corso...",sessionTitles:"Titoli delle sessioni",conversationContents:"Contenuto delle conversazioni",noResults:"Nessun risultato trovato",tryDifferentQuery:"Prova con una ricerca diversa",matches_one:"{{count}} corrispondenza",matches_other:"{{count}} corrispondenze",projectsScanned_one:"{{count}} progetto analizzato",projectsScanned_other:"{{count}} progetti analizzati"},jw={deleteProject:"Rimuovi progetto",deleteSession:"Elimina sessione",confirmDelete:"Cosa vuoi fare con",sessionCount_one:"Questo progetto contiene {{count}} conversazione.",sessionCount_other:"Questo progetto contiene {{count}} conversazioni.",removeFromSidebar:"Rimuovi solo dalla barra laterale",deleteAllData:"Elimina tutti i dati permanentemente",allConversationsDeleted:"Il progetto verrà rimosso dalla barra laterale. I tuoi file, memorie e dati delle sessioni verranno preservati.",cannotUndo:"Puoi riaggiungerlo in seguito."},Tw={projects:hw,app:fw,sessions:bw,tooltips:vw,navigation:kw,actions:xw,branding:yw,status:ww,time:Cw,messages:Sw,version:Pw,search:Aw,deleteConfirmation:jw},Iw={copy:"Copia",copied:"Copiato",copyCode:"Copia codice"},Ew={copy:"Copia messaggio",copied:"Messaggio copiato",selectFormat:"Seleziona formato copia",copyAsMarkdown:"Copia come markdown",copyAsText:"Copia come testo"},Mw={user:"U",error:"Errore",tool:"Strumento",claude:"Claude",cursor:"Cursor",codex:"Codex"},zw={settings:"Impostazioni strumento",error:"Errore strumento",result:"Risultato strumento",viewParams:"Vedi parametri input",viewRawParams:"Vedi parametri grezzi",viewDiff:"Vedi differenze per",creatingFile:"Creazione nuovo file:",updatingTodo:"Aggiornamento lista attività",read:"Leggi",readFile:"Leggi file",updateTodo:"Aggiorna lista attività",readTodo:"Leggi lista attività",searchResults:"risultati"},Dw={found:"Trovati {{count}} {{type}}",file:"file",files:"file",pattern:"pattern:",in:"in:"},Nw={updated:"File aggiornato con successo",created:"File creato con successo",written:"File scritto con successo",diff:"Differenze",newFile:"Nuovo file",viewContent:"Vedi contenuto file",viewFullOutput:"Vedi output completo ({{count}} caratteri)",contentDisplayed:"Il contenuto del file è visualizzato nella vista differenze sopra"},$w={title:"Prompt interattivo",waiting:"In attesa della tua risposta nella CLI",instruction:"Seleziona un'opzione nel terminale dove Claude è in esecuzione.",selectedOption:"✓ Claude ha selezionato l'opzione {{number}}",instructionDetail:"Nella CLI, selezioneresti questa opzione interattivamente usando i tasti freccia o digitando il numero."},Rw={title:"Sto pensando...",emoji:"💭 Sto pensando..."},Lw={response:"Risposta JSON"},Fw={grant:"Concedi permesso per {{tool}}",added:"Permesso aggiunto",addTo:"Aggiunge {{entry}} agli strumenti consentiti.",retry:"Permesso salvato. Riprova la richiesta per usare lo strumento.",error:"Impossibile aggiornare i permessi. Riprova.",openSettings:"Apri impostazioni"},Bw={updated:"Lista attività aggiornata con successo",current:"Lista attività corrente"},Gw={viewPlan:"📋 Vedi piano di implementazione",title:"Piano di implementazione"},Hw={resetAt:"Limite di utilizzo Claude raggiunto. Il tuo limite verrà ripristinato alle **{{time}} {{timezone}}** - {{date}}"},Ow={permissionMode:"Modalità permessi",modes:{default:"Modalità predefinita",auto:"Auto Mode",acceptEdits:"Accetta modifiche",bypassPermissions:"Ignora permessi",plan:"Modalità piano"},descriptions:{default:"Solo i comandi attendibili (ls, cat, grep, git status, ecc.) vengono eseguiti automaticamente. Gli altri comandi vengono saltati. Può scrivere nell'area di lavoro.",auto:"A model classifier decides per tool call whether to approve or deny. Hands-off, but safer than Bypass — denials still happen.",acceptEdits:"Tutti i comandi vengono eseguiti automaticamente nell'area di lavoro. Modalità completamente automatica con esecuzione sandboxed.",bypassPermissions:"Accesso completo al sistema senza restrizioni. Tutti i comandi vengono eseguiti automaticamente con accesso completo a disco e rete. Usa con cautela.",plan:"Modalità pianificazione - nessun comando viene eseguito"},technicalDetails:"Dettagli tecnici"},Uw={placeholder:"Digita / per i comandi, @ per i file, o chiedi qualcosa a {{provider}}...",placeholderDefault:"Scrivi il tuo messaggio...",disabled:"Input disabilitato",attachFiles:"Allega file",attachImages:"Allega immagini",send:"Invia",stop:"Ferma",hintText:{ctrlEnter:"Ctrl+Invio per inviare • Shift+Invio per nuova riga • Tab per cambiare modalità • / per comandi",enter:"Invio per inviare • Shift+Invio per nuova riga • Tab per cambiare modalità • / per comandi"},clickToChangeMode:"Clicca per cambiare modalità permessi (o premi Tab nell'input)",showAllCommands:"Mostra tutti i comandi",clearInput:"Cancella input",scrollToBottom:"Scorri in basso"},qw={title:"Scegli il tuo assistente AI",description:"Seleziona un provider per iniziare una nuova conversazione",selectModel:"Seleziona modello",providerInfo:{anthropic:"di Anthropic",openai:"di OpenAI",cursorEditor:"Editor codice AI",google:"di Google"},readyPrompt:{claude:"Pronto a usare Claude con {{model}}. Inizia a digitare il tuo messaggio qui sotto.",cursor:"Pronto a usare Cursor con {{model}}. Inizia a digitare il tuo messaggio qui sotto.",codex:"Pronto a usare Codex con {{model}}. Inizia a digitare il tuo messaggio qui sotto.",default:"Seleziona un provider sopra per iniziare"},pressToSearch:"Premi <kbd>{{shortcut}}</kbd> per cercare sessioni, file e commit"},Ww={continue:{title:"Continua la tua conversazione",description:"Fai domande sul tuo codice, richiedi modifiche o chiedi aiuto con le attività di sviluppo"},loading:{olderMessages:"Caricamento messaggi precedenti...",sessionMessages:"Caricamento messaggi della sessione..."},messages:{showingOf:"Visualizzati {{shown}} di {{total}} messaggi",scrollToLoad:"Scorri in alto per caricare altri",showingLast:"Visualizzati ultimi {{count}} messaggi ({{total}} totali)",loadEarlier:"Carica messaggi precedenti",loadAll:"Carica tutti i messaggi",loadingAll:"Caricamento di tutti i messaggi...",allLoaded:"Tutti i messaggi caricati",perfWarning:'Tutti i messaggi caricati — lo scorrimento potrebbe essere più lento. Clicca "Scorri in basso" per ripristinare le prestazioni.'}},Vw={selectProject:{title:"Seleziona un progetto",description:"Scegli un progetto per aprire una shell interattiva in quella directory"},status:{newSession:"Nuova sessione",initializing:"Inizializzazione...",restarting:"Riavvio..."},actions:{disconnect:"Disconnetti",disconnectTitle:"Disconnetti dalla shell",restart:"Riavvia",restartTitle:"Riavvia shell (disconnetti prima)",connect:"Continua nella shell",connectTitle:"Connetti alla shell"},loading:"Caricamento terminale...",connecting:"Connessione alla shell...",startSession:"Avvia una nuova sessione Claude",resumeSession:"Riprendi sessione: {{displayName}}...",runCommand:"Esegui {{command}} in {{projectName}}",startCli:"Avvio Claude CLI in {{projectName}}",defaultCommand:"comando"},Kw={actions:{thinking:"Ragionamento",processing:"Elaborazione",analyzing:"Analisi",working:"In lavorazione",computing:"Calcolo",reasoning:"Ragionamento"},state:{live:"Attivo",paused:"In pausa"},elapsed:{seconds:"{{count}}s",minutesSeconds:"{{minutes}}m {{seconds}}s",label:"{{time}} trascorsi",startingNow:"Avvio in corso"},controls:{stopGeneration:"Interrompi generazione",pressEscToStop:"Premi Esc in qualsiasi momento per interrompere"},providers:{assistant:"Assistente"}},_w={startChatWithProvider:"Seleziona un progetto per iniziare a chattare con {{provider}}"},Yw={nextTaskPrompt:"Inizia l'attività successiva"},Jw={codeBlock:Iw,copyMessage:Ew,messageTypes:Mw,tools:zw,search:Dw,fileOperations:Nw,interactive:$w,thinking:Rw,json:Lw,permissions:Fw,todo:Bw,plan:Gw,usageLimit:Hw,codex:Ow,input:Uw,providerSelection:qw,session:Ww,shell:Vw,claudeStatus:Kw,projectSelection:_w,tasks:Yw},Qw={changes:"modifiche",previousChange:"Modifica precedente",nextChange:"Modifica successiva",hideDiff:"Nascondi evidenziazione differenze",showDiff:"Mostra evidenziazione differenze",settings:"Impostazioni editor",collapse:"Comprimi editor",expand:"Espandi editor a larghezza piena"},Zw="Caricamento {{fileName}}...",Xw={showingChanges:"Visualizzazione modifiche"},eC={copyPath:"Copia percorso file",pathCopied:"Percorso file copiato",download:"Scarica file",save:"Salva",saving:"Salvataggio...",saved:"Salvato!",exitFullscreen:"Esci dalla modalità schermo intero",fullscreen:"Schermo intero",close:"Chiudi",previewMarkdown:"Anteprima markdown",editMarkdown:"Modifica markdown"},tC={lines:"Righe:",characters:"Caratteri:",shortcuts:"Premi Ctrl+S per salvare • Esc per chiudere"},nC={title:"File binario",message:`Il file "{{fileName}}" non può essere visualizzato nell'editor di testo perché è un file binario.`},sC={toolbar:Qw,loading:Zw,header:Xw,actions:eC,footer:tC,binaryFile:nC},iC={title:"TaskMaster AI non è configurato",description:"TaskMaster aiuta a suddividere progetti complessi in attività gestibili con assistenza AI",whatIsTitle:"🎯 Cos'è TaskMaster?",features:{aiPowered:"Gestione attività AI: suddividi progetti complessi in sotto-attività gestibili",prdTemplates:"Template PRD: genera attività da documenti di requisiti del prodotto",dependencyTracking:"Tracciamento dipendenze: comprendi le relazioni tra attività e l'ordine di esecuzione",progressVisualization:"Visualizzazione progresso: board Kanban e analisi dettagliata delle attività",cliIntegration:"Integrazione CLI: usa i comandi taskmaster per flussi di lavoro avanzati"},initializeButton:"Inizializza TaskMaster AI"},aC={title:"Inizia con TaskMaster",subtitle:"TaskMaster è inizializzato! Ecco cosa fare dopo:",steps:{createPRD:{title:"Crea un documento di requisiti del prodotto (PRD)",description:"Discuti la tua idea di progetto e crea un PRD che descriva cosa vuoi costruire.",addButton:"Aggiungi PRD",existingPRDs:"PRD esistenti:"},generateTasks:{title:"Genera attività dal PRD",description:"Una volta che hai un PRD, chiedi al tuo assistente AI di analizzarlo e TaskMaster lo suddividerà automaticamente in attività gestibili con dettagli di implementazione."},analyzeTasks:{title:"Analizza ed espandi le attività",description:"Chiedi al tuo assistente AI di analizzare la complessità delle attività ed espanderle in sotto-attività dettagliate per un'implementazione più semplice."},startBuilding:{title:"Inizia a costruire",description:"Chiedi al tuo assistente AI di iniziare a lavorare sulle attività, aggiornare il loro stato e aggiungere nuove attività man mano che il tuo progetto evolve."}},tip:"💡 Suggerimento: inizia con un PRD per ottenere il massimo dalla generazione di attività AI di TaskMaster"},oC={title:"Configurazione TaskMaster",subtitle:"CLI interattiva per {{projectName}}",willStart:"L'inizializzazione di TaskMaster partirà automaticamente",completed:"Configurazione TaskMaster completata! Ora puoi chiudere questa finestra.",closeButton:"Chiudi",closeContinueButton:"Chiudi e continua"},rC={title:"Inizia con TaskMaster",subtitle:"La tua guida per una gestione produttiva delle attività",examples:{parsePRD:`💬 Esempio:
|
|
29
|
+
"Lütfen Cloudinary kullanarak kullanıcı profil resmi yükleme özelliği için yeni bir görev ekle, en iyi yaklaşımı araştır."`},moreExamples:"Daha fazla örnek ve kullanım deseni →",proTips:{title:"💡 Pro İpuçları",search:"Belirli görevleri hızlıca bulmak için arama çubuğunu kullan",views:"Kanban, Liste ve Izgara görünümleri arasında geçiş yapmak için görünüm düğmelerini kullan",filters:"Belirli görev durumlarına veya önceliklere odaklanmak için filtreleri kullan",details:"Detaylı bilgi görmek ve alt görevleri yönetmek için herhangi bir göreve tıkla"},learnMore:{title:"📚 Daha Fazla Öğren",description:"TaskMaster AI, geliştiriciler için inşa edilmiş ileri seviye bir görev yönetim sistemidir. Dokümantasyona, örneklere bak ve projeye katkıda bulun.",githubButton:"GitHub'da Görüntüle"}},Iy={placeholder:"Görevlerde ara..."},Ey={button:"Filtreler",status:"Durum",priority:"Öncelik",sortBy:"Sıralama",allStatuses:"Tüm Durumlar",allPriorities:"Tüm Öncelikler",showing:"{{total}} görevin {{filtered}} tanesi gösteriliyor",clearFilters:"Filtreleri Temizle"},My={id:"ID",status:"Durum",priority:"Öncelik",idAsc:"ID (Artan)",idDesc:"ID (Azalan)",titleAsc:"Başlık (A-Z)",titleDesc:"Başlık (Z-A)",statusAsc:"Durum (Önce Bekleyen)",statusDesc:"Durum (Önce Tamamlanan)",priorityAsc:"Öncelik (Önce Yüksek)",priorityDesc:"Öncelik (Önce Düşük)"},zy={kanban:"Kanban görünümü",list:"Liste görünümü",grid:"Izgara görünümü"},Dy={pending:"📋 Yapılacak",inProgress:"🚀 Sürüyor",done:"✅ Tamamlandı",blocked:"🚫 Engellendi",deferred:"⏳ Ertelendi",cancelled:"❌ İptal Edildi",noTasksYet:"Henüz görev yok",tasksWillAppear:"Görevler burada görünecek",moveTasksHere:"Başlayan görevleri buraya taşı",completedTasksHere:"Tamamlanan görevler burada görünür",statusTasksHere:"Bu durumdaki görevler burada görünecek"},Ny={help:"TaskMaster Başlangıç Rehberi",prds:"PRD'ler",addPRD:"PRD Ekle",addTask:"Görev Ekle",createNewPRD:"Yeni PRD Oluştur",prdsAvailable:"{{count}} PRD mevcut"},$y={modified:"Değişiklik: {{date}}"},Ry={pending:"Beklemede","in-progress":"Sürüyor",done:"Tamamlandı",blocked:"Engellendi",deferred:"Ertelendi",cancelled:"İptal Edildi"},Ly={high:"Yüksek",medium:"Orta",low:"Düşük"},Fy={title:"Filtrelerine uygun görev yok",description:"Arama veya filtre kriterlerini değiştirmeyi dene."},By={notConfigured:Py,gettingStarted:Ay,setupModal:jy,helpGuide:Ty,search:Iy,filters:Ey,sort:My,views:zy,kanban:Dy,buttons:Ny,prd:$y,statuses:Ry,priorities:Ly,noMatchingTasks:Fy},Gy={save:"Salva",cancel:"Annulla",delete:"Elimina",create:"Crea",edit:"Modifica",close:"Chiudi",confirm:"Conferma",submit:"Invia",retry:"Riprova",refresh:"Aggiorna",search:"Cerca",clear:"Cancella",copy:"Copia",download:"Scarica",upload:"Carica",browse:"Sfoglia"},Hy={chat:"Chat",shell:"Terminale",files:"File",git:"Controllo Versione",tasks:"Attività",browser:"Browser",computer:"Computer"},Oy={loading:"Caricamento...",success:"Completato",error:"Errore",failed:"Fallito",pending:"In attesa",completed:"Completato",inProgress:"In corso"},Uy={savedSuccessfully:"Salvato con successo",deletedSuccessfully:"Eliminato con successo",updatedSuccessfully:"Aggiornato con successo",operationFailed:"Operazione fallita",networkError:"Errore di rete. Controlla la tua connessione.",unauthorized:"Non autorizzato. Effettua l'accesso.",notFound:"Non trovato",invalidInput:"Input non valido",requiredField:"Questo campo è obbligatorio",unknownError:"Si è verificato un errore sconosciuto"},qy={settings:"Impostazioni",home:"Home",back:"Indietro",next:"Avanti",previous:"Precedente",logout:"Esci"},Wy={language:"Lingua",theme:"Tema",darkMode:"Modalità scura",lightMode:"Modalità chiara",name:"Nome",description:"Descrizione",enabled:"Abilitato",disabled:"Disabilitato",optional:"Opzionale",version:"Versione",select:"Seleziona",selectAll:"Seleziona tutto",deselectAll:"Deseleziona tutto"},Vy={justNow:"Adesso",minutesAgo:"{{count}} min fa",hoursAgo:"{{count}} ore fa",daysAgo:"{{count}} giorni fa",yesterday:"Ieri"},Ky={newFile:"Nuovo file",newFolder:"Nuova cartella",rename:"Rinomina",move:"Sposta",copyPath:"Copia percorso",openInEditor:"Apri nell'editor"},_y={loading:"Caricamento WindCli",settingUpWorkspace:"Preparazione dell'area di lavoro...",chooseProject:"Scegli il tuo progetto",selectProjectDescription:"Seleziona un progetto dalla barra laterale per iniziare a programmare con Claude. Ogni progetto contiene le tue sessioni di chat e la cronologia dei file.",tip:"Suggerimento",createProjectMobile:"Tocca il pulsante menu in alto per accedere ai progetti",createProjectDesktop:"Crea un nuovo progetto cliccando l'icona cartella nella barra laterale",newSession:"Nuova sessione",untitledSession:"Sessione senza titolo",projectFiles:"File del progetto"},Yy={loading:"Caricamento file...",files:"File",simpleView:"Vista semplice",compactView:"Vista compatta",detailedView:"Vista dettagliata",searchPlaceholder:"Cerca file e cartelle...",clearSearch:"Cancella ricerca",name:"Nome",size:"Dimensione",modified:"Modificato",permissions:"Permessi",noFilesFound:"Nessun file trovato",checkProjectPath:"Verifica che il percorso del progetto sia accessibile",noMatchesFound:"Nessuna corrispondenza trovata",tryDifferentSearch:"Prova con un termine di ricerca diverso o cancella la ricerca",justNow:"adesso",minAgo:"{{count}} min fa",hoursAgo:"{{count}} ore fa",daysAgo:"{{count}} giorni fa",newFile:"Nuovo file (Cmd+N)",newFolder:"Nuova cartella (Cmd+Shift+N)",refresh:"Aggiorna",collapseAll:"Comprimi tutto",context:{rename:"Rinomina",delete:"Elimina",copyPath:"Copia percorso",download:"Scarica",newFile:"Nuovo file",newFolder:"Nuova cartella",upload:"Carica file",refresh:"Aggiorna",menuLabel:"Menu contestuale file",loading:"Caricamento..."}},Jy={title:"Crea nuovo progetto",steps:{type:"Tipo",configure:"Configura",confirm:"Conferma"},step1:{question:"Hai già un'area di lavoro o vuoi crearne una nuova?",existing:{title:"Area di lavoro esistente",description:"Ho già un'area di lavoro sul mio server e devo solo aggiungerla alla lista dei progetti"},new:{title:"Nuova area di lavoro",description:"Crea una nuova area di lavoro, opzionalmente clonando da un repository GitHub"}},step2:{existingPath:"Percorso area di lavoro",newPath:"Percorso area di lavoro",existingPlaceholder:"/percorso/area-di-lavoro/esistente",newPlaceholder:"/percorso/nuova/area-di-lavoro",existingHelp:"Percorso completo della directory dell'area di lavoro esistente",newHelp:"Percorso completo della directory dell'area di lavoro",githubUrl:"URL GitHub (opzionale)",githubPlaceholder:"https://github.com/utente/repository",githubHelp:"Opzionale: fornisci un URL GitHub per clonare un repository",githubAuth:"Autenticazione GitHub (opzionale)",githubAuthHelp:"Richiesta solo per repository privati. I repository pubblici possono essere clonati senza autenticazione.",loadingTokens:"Caricamento token salvati...",storedToken:"Token salvato",newToken:"Nuovo token",nonePublic:"Nessuno (pubblico)",selectToken:"Seleziona token",selectTokenPlaceholder:"-- Seleziona un token --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"Questo token verrà utilizzato solo per questa operazione",publicRepoInfo:"I repository pubblici non richiedono autenticazione. Puoi saltare il token se stai clonando un repository pubblico.",noTokensHelp:"Nessun token salvato disponibile. Puoi aggiungere token in Impostazioni → Chiavi API per un riutilizzo più semplice.",optionalTokenPublic:"Token GitHub (opzionale per repository pubblici)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (lascia vuoto per repository pubblici)"},step3:{reviewConfig:"Rivedi la tua configurazione",existingWorkspace:"Area di lavoro esistente",newWorkspace:"Nuova area di lavoro",path:"Percorso:",cloneFrom:"Clona da:",authentication:"Autenticazione:",usingStoredToken:"Usando token salvato:",usingProvidedToken:"Usando token fornito",noAuthentication:"Nessuna autenticazione",sshKey:"Chiave SSH",existingInfo:"L'area di lavoro verrà aggiunta alla lista dei progetti e sarà disponibile per le sessioni Claude/Cursor.",newWithClone:"Il repository verrà clonato da questa cartella.",newEmpty:"L'area di lavoro verrà aggiunta alla lista dei progetti e sarà disponibile per le sessioni Claude/Cursor.",cloningRepository:"Clonazione repository..."},buttons:{cancel:"Annulla",back:"Indietro",next:"Avanti",createProject:"Crea progetto",creating:"Creazione...",cloning:"Clonazione..."},errors:{selectType:"Seleziona se hai un'area di lavoro esistente o vuoi crearne una nuova",providePath:"Fornisci un percorso per l'area di lavoro",failedToCreate:"Impossibile creare l'area di lavoro",failedToCreateFolder:"Impossibile creare la cartella"}},Qy={genericTool:"uno strumento",codes:{generic:{info:{title:"Notifica"}},permission:{required:{title:"Azione richiesta",body:"{{toolName}} è in attesa della tua decisione."}},run:{stopped:{title:"Esecuzione interrotta",body:"Motivo: {{reason}}"},failed:{title:"Esecuzione fallita"}},agent:{notification:{title:"Notifica agente"}}}},Zy={title:"Aggiornamento disponibile",newVersionReady:"Una nuova versione è pronta",currentVersion:"Versione attuale",latestVersion:"Ultima versione",whatsNew:"Novità:",viewFullRelease:"Vedi release completa",updateProgress:"Progresso aggiornamento:",manualUpgrade:"Aggiornamento manuale:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:`Oppure clicca "Aggiorna ora" per eseguire l'aggiornamento automaticamente.`,updateCompleted:"Aggiornamento completato con successo!",restartServer:"Riavvia il server per applicare le modifiche.",updateFailed:"Aggiornamento fallito",buttons:{close:"Chiudi",later:"Più tardi",copyCommand:"Copia comando",updateNow:"Aggiorna ora",updating:"Aggiornamento..."},ariaLabels:{closeModal:"Chiudi finestra aggiornamento versione",showSidebar:"Mostra barra laterale",settings:"Impostazioni",updateAvailable:"Aggiornamento disponibile",closeSidebar:"Chiudi barra laterale"}},Xy={buttons:Gy,tabs:Hy,status:Oy,messages:Uy,navigation:qy,common:Wy,time:Vy,fileOperations:Ky,mainContent:_y,fileTree:Yy,projectWizard:Jy,notifications:Qy,versionUpdate:Zy},ew="Impostazioni",tw={account:"Account",permissions:"Permessi",mcpServers:"Server MCP",appearance:"Aspetto"},nw={title:"Account",language:"Lingua",languageLabel:"Lingua dell'interfaccia",languageDescription:"Scegli la lingua preferita per l'interfaccia",username:"Nome utente",email:"Email",profile:"Profilo",changePassword:"Cambia password"},sw={title:"Server MCP",addServer:"Aggiungi server",editServer:"Modifica server",deleteServer:"Elimina server",serverName:"Nome server",serverType:"Tipo server",config:"Configurazione",testConnection:"Testa connessione",status:"Stato",connected:"Connesso",disconnected:"Disconnesso",scope:{label:"Ambito",user:"Utente",project:"Progetto"}},iw={title:"Aspetto",theme:"Tema",codeEditor:"Editor codice",editorTheme:"Tema editor",wordWrap:"A capo automatico",showMinimap:"Mostra minimappa",lineNumbers:"Numeri di riga",fontSize:"Dimensione carattere"},aw={saveChanges:"Salva modifiche",resetToDefaults:"Ripristina predefiniti",cancelChanges:"Annulla modifiche"},ow={title:"Impostazioni rapide",sections:{appearance:"Aspetto",toolDisplay:"Visualizzazione strumenti",inputSettings:"Impostazioni input"},darkMode:"Modalità scura",showRawParameters:"Mostra parametri grezzi",showThinking:"Mostra ragionamento",sendByCtrlEnter:"Invia con Ctrl+Invio",sendByCtrlEnterDescription:"Se abilitato, premere Ctrl+Invio invierà il messaggio invece di Invio. Utile per gli utenti IME per evitare invii accidentali.",dragHandle:{dragging:"Trascinamento maniglia",closePanel:"Chiudi pannello impostazioni",openPanel:"Apri pannello impostazioni",draggingStatus:"Trascinamento...",toggleAndMove:"Clicca per attivare/disattivare, trascina per spostare"}},rw={title:"Scorciatoie terminale",sectionKeys:"Tasti",sectionNavigation:"Navigazione",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"Freccia su",arrowDown:"Freccia giù",scrollDown:"Scorri giù",handle:{closePanel:"Chiudi pannello scorciatoie",openPanel:"Apri pannello scorciatoie"}},lw={label:"Impostazioni",agents:"Agenti",appearance:"Aspetto",git:"Git",apiTokens:"API e Token",tasks:"Attività",notifications:"Notifiche",plugins:"Plugin",about:"Informazioni"},cw={title:"Notifiche",description:"Controlla quali notifiche ricevere.",webPush:{title:"Notifiche push web",enable:"Abilita notifiche push",disable:"Disabilita notifiche push",enabled:"Le notifiche push sono abilitate",loading:"Aggiornamento...",unsupported:"Le notifiche push non sono supportate in questo browser.",denied:"Le notifiche push sono bloccate. Abilitale nelle impostazioni del browser."},sound:{title:"Suono",description:"Riproduci un breve tono quando termina un'esecuzione della chat.",enabled:"Attivato",test:"Prova suono"},events:{title:"Tipi di evento",actionRequired:"Azione richiesta",stop:"Esecuzione interrotta",error:"Esecuzione fallita"}},dw={darkMode:{label:"Modalità scura",description:"Alterna tra tema chiaro e scuro"},projectSorting:{label:"Ordinamento progetti",description:"Come vengono ordinati i progetti nella barra laterale",alphabetical:"Alfabetico",recentActivity:"Attività recente"},codeEditor:{title:"Editor codice",theme:{label:"Tema editor",description:"Tema predefinito per l'editor di codice"},wordWrap:{label:"A capo automatico",description:"Abilita il ritorno a capo automatico nell'editor"},showMinimap:{label:"Mostra minimappa",description:"Visualizza una minimappa per facilitare la navigazione nella vista differenze"},lineNumbers:{label:"Mostra numeri di riga",description:"Visualizza i numeri di riga nell'editor"},fontSize:{label:"Dimensione carattere",description:"Dimensione del carattere dell'editor in pixel"}}},uw={title:{add:"Aggiungi server MCP",edit:"Modifica server MCP"},importMode:{form:"Input modulo",json:"Importa JSON"},scope:{label:"Ambito",userGlobal:"Utente (globale)",projectLocal:"Progetto (locale)",userDescription:"Ambito utente: disponibile in tutti i progetti sulla tua macchina",projectDescription:"Ambito locale: disponibile solo nel progetto selezionato",cannotChange:"L'ambito non può essere modificato quando si modifica un server esistente"},fields:{serverName:"Nome server",transportType:"Tipo di trasporto",command:"Comando",arguments:"Argomenti (uno per riga)",jsonConfig:"Configurazione JSON",url:"URL",envVars:"Variabili d'ambiente (CHIAVE=valore, una per riga)",headers:"Header (CHIAVE=valore, uno per riga)",selectProject:"Seleziona un progetto..."},placeholders:{serverName:"mio-server"},validation:{missingType:"Campo obbligatorio mancante: type",stdioRequiresCommand:"Il tipo stdio richiede un campo command",httpRequiresUrl:"Il tipo {{type}} richiede un campo url",invalidJson:"Formato JSON non valido",jsonHelp:"Incolla la configurazione del server MCP in formato JSON. Esempi di formato:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"Dettagli configurazione (da {{configFile}})",projectPath:"Percorso: {{path}}",actions:{cancel:"Annulla",saving:"Salvataggio...",addServer:"Aggiungi server",updateServer:"Aggiorna server"}},pw={success:"Impostazioni salvate con successo!",error:"Impossibile salvare le impostazioni",saving:"Salvataggio..."},mw={save:"Salva impostazioni",cancel:"Annulla"},gw={title:"Configurazione Git",description:"Configura la tua identità git per i commit. Queste impostazioni verranno applicate globalmente tramite git config --global",name:{label:"Nome Git",help:"Il tuo nome per i commit git"},email:{label:"Email Git",help:"La tua email per i commit git"},actions:{save:"Salva configurazione",saving:"Salvataggio..."},status:{success:"Salvato con successo"}},hw={title:"Chiavi API",description:"Genera chiavi API per accedere all'API esterna da altre applicazioni.",newKey:{alertTitle:"⚠️ Salva la tua chiave API",alertMessage:"Questa è l'unica volta che vedrai questa chiave. Conservala in modo sicuro.",iveSavedIt:"L'ho salvata"},form:{placeholder:"Nome chiave API (es. Server produzione)",createButton:"Crea",cancelButton:"Annulla"},newButton:"Nuova chiave API",empty:"Nessuna chiave API creata.",list:{created:"Creata:",lastUsed:"Ultimo utilizzo:"},confirmDelete:"Sei sicuro di voler eliminare questa chiave API?",status:{active:"Attiva",inactive:"Inattiva"},github:{title:"Token GitHub",description:"Aggiungi token di accesso personale GitHub per clonare repository privati tramite l'API esterna.",descriptionAlt:"Aggiungi token di accesso personale GitHub per clonare repository privati. Puoi anche passare i token direttamente nelle richieste API senza salvarli.",addButton:"Aggiungi token",form:{namePlaceholder:"Nome token (es. Repository personali)",tokenPlaceholder:"Token di accesso personale GitHub (ghp_...)",descriptionPlaceholder:"Descrizione (opzionale)",addButton:"Aggiungi token",cancelButton:"Annulla",howToCreate:"Come creare un token di accesso personale GitHub →"},empty:"Nessun token GitHub aggiunto.",added:"Aggiunto:",confirmDelete:"Sei sicuro di voler eliminare questo token GitHub?"},apiDocsLink:"Documentazione API",documentation:{title:"Documentazione API esterna",description:"Scopri come usare l'API esterna per avviare sessioni Claude/Cursor dalle tue applicazioni.",viewLink:"Vedi documentazione API →"},loading:"Caricamento...",version:{updateAvailable:"Aggiornamento disponibile: v{{version}}"}},fw={checking:"Verifica installazione TaskMaster...",notInstalled:{title:"TaskMaster AI CLI non installato",description:"TaskMaster CLI è necessario per usare le funzionalità di gestione attività. Installalo per iniziare:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"Vedi su GitHub",afterInstallation:"Dopo l'installazione:",steps:{restart:"Riavvia questa applicazione",autoAvailable:"Le funzionalità TaskMaster saranno automaticamente disponibili",initCommand:"Usa task-master init nella directory del tuo progetto"}},settings:{enableLabel:"Abilita integrazione TaskMaster",enableDescription:"Mostra attività TaskMaster, banner e indicatori nella barra laterale nell'interfaccia"}},bw={authStatus:{checking:"Verifica...",connected:"Connesso",notConnected:"Non connesso",disconnected:"Disconnesso",checkingAuth:"Verifica stato autenticazione...",loggedInAs:"Connesso come {{email}}",authenticatedUser:"utente autenticato"},account:{claude:{description:"Assistente AI Anthropic Claude"},cursor:{description:"Editor di codice potenziato da AI Cursor"},codex:{description:"Assistente AI OpenAI Codex"}},connectionStatus:"Stato connessione",login:{title:"Accedi",reAuthenticate:"Ri-autenticati",description:"Accedi al tuo account {{agent}} per abilitare le funzionalità AI",reAuthDescription:"Accedi con un account diverso o aggiorna le credenziali",button:"Accedi",reLoginButton:"Ri-accedi"},error:"Errore: {{error}}"},vw={title:"Impostazioni permessi",skipPermissions:{label:"Salta richieste di permesso (usa con cautela)",claudeDescription:"Equivalente al flag --dangerously-skip-permissions",cursorDescription:"Equivalente al flag -f in Cursor CLI"},allowedTools:{title:"Strumenti consentiti",description:"Strumenti automaticamente consentiti senza richiedere permesso",placeholder:'es. "Bash(git log:*)" o "Write"',quickAdd:"Aggiunta rapida strumenti comuni:",empty:"Nessuno strumento consentito configurato"},blockedTools:{title:"Strumenti bloccati",description:"Strumenti automaticamente bloccati senza richiedere permesso",placeholder:'es. "Bash(rm:*)"',empty:"Nessuno strumento bloccato configurato"},allowedCommands:{title:"Comandi shell consentiti",description:"Comandi shell automaticamente consentiti senza richiedere permesso",placeholder:'es. "Shell(ls)" o "Shell(git status)"',quickAdd:"Aggiunta rapida comandi comuni:",empty:"Nessun comando consentito configurato"},blockedCommands:{title:"Comandi shell bloccati",description:"Comandi shell automaticamente bloccati",placeholder:'es. "Shell(rm -rf)" o "Shell(sudo)"',empty:"Nessun comando bloccato configurato"},toolExamples:{title:"Esempi pattern strumenti:",bashGitLog:"- Consenti tutti i comandi git log",bashGitDiff:"- Consenti tutti i comandi git diff",write:"- Consenti tutti gli utilizzi dello strumento Write",bashRm:"- Blocca tutti i comandi rm (pericoloso)"},shellExamples:{title:"Esempi comandi shell:",ls:"- Consenti comando ls",gitStatus:"- Consenti git status",npmInstall:"- Consenti npm install",rmRf:"- Blocca eliminazione ricorsiva"},codex:{permissionMode:"Modalità permessi",description:"Controlla come Codex gestisce le modifiche ai file e l'esecuzione dei comandi",modes:{default:{title:"Predefinito",description:"Solo i comandi attendibili (ls, cat, grep, git status, ecc.) vengono eseguiti automaticamente. Gli altri comandi vengono saltati. Può scrivere nell'area di lavoro."},acceptEdits:{title:"Accetta modifiche",description:"Tutti i comandi vengono eseguiti automaticamente nell'area di lavoro. Modalità completamente automatica con esecuzione sandboxed."},bypassPermissions:{title:"Ignora permessi",description:"Accesso completo al sistema senza restrizioni. Tutti i comandi vengono eseguiti automaticamente con accesso completo a disco e rete. Usa con cautela."}},technicalDetails:"Dettagli tecnici",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted. Comandi attendibili: cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find (senza -exec), ecc.",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never. Tutti i comandi vengono auto-eseguiti nella directory del progetto.",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never. Accesso completo al sistema, usa solo in ambienti attendibili.",overrideNote:"Puoi sovrascrivere questa impostazione per sessione usando il pulsante modalità nell'interfaccia chat."}},actions:{add:"Aggiungi"}},kw={title:"Server MCP",description:{claude:"I server Model Context Protocol forniscono strumenti e fonti dati aggiuntive a Claude",cursor:"I server Model Context Protocol forniscono strumenti e fonti dati aggiuntive a Cursor",codex:"I server Model Context Protocol forniscono strumenti e fonti dati aggiuntive a Codex"},addButton:"Aggiungi server MCP",empty:"Nessun server MCP configurato",serverType:"Tipo",scope:{local:"locale",user:"utente"},config:{command:"Comando",url:"URL",args:"Argomenti",environment:"Ambiente"},tools:{title:"Strumenti",count:"({{count}}):",more:"+{{count}} altri"},actions:{edit:"Modifica server",delete:"Elimina server"},help:{title:"Informazioni su Codex MCP",description:"Codex supporta server MCP basati su stdio. Puoi aggiungere server che estendono le capacità di Codex con strumenti e risorse aggiuntive."}},xw={title:"Plugin",description:"Estendi l'interfaccia con plugin personalizzati. Installa da git o inserisci una cartella in ~/.claude-code-ui/plugins/",installPlaceholder:"https://github.com/utente/mio-plugin",installButton:"Installa",installing:"Installazione…",securityWarning:"Installa solo plugin di cui hai verificato il codice sorgente o di autori di cui ti fidi.",scanningPlugins:"Scansione plugin…",noPluginsInstalled:"Nessun plugin installato",pullLatest:"Aggiorna da git",noGitRemote:"Nessun remote git — aggiornamento non disponibile",uninstallPlugin:"Disinstalla plugin",confirmUninstall:"Clicca di nuovo per confermare",confirmUninstallMessage:"Rimuovere {{name}}? Questa azione non può essere annullata.",cancel:"Annulla",remove:"Rimuovi",updateFailed:"Aggiornamento fallito",installFailed:"Installazione fallita",uninstallFailed:"Disinstallazione fallita",toggleFailed:"Attivazione/disattivazione fallita",starterPluginLabel:"Plugin iniziale",starter:"Iniziale",docs:"Documentazione",starterPlugin:{name:"Statistiche progetto",badge:"iniziale",description:"Conteggio file, righe di codice, ripartizione per tipo di file e attività recente per il tuo progetto.",install:"Installa"},terminalPlugin:{name:"Terminale",badge:"ufficiale",description:"Terminale integrato con accesso completo alla shell direttamente nell'interfaccia.",install:"Installa"},morePlugins:"Altri",enable:"Abilita",disable:"Disabilita",installAriaLabel:"URL repository git del plugin",tab:"scheda",runningStatus:"in esecuzione"},yw={title:ew,tabs:tw,account:nw,mcp:sw,appearance:iw,actions:aw,quickSettings:ow,terminalShortcuts:rw,mainTabs:lw,notifications:cw,appearanceSettings:dw,mcpForm:uw,saveStatus:pw,footerActions:mw,git:gw,apiKeys:hw,tasks:fw,agents:bw,permissions:vw,mcpServers:kw,pluginSettings:xw},ww={title:"Bentornato",description:"Accedi al tuo account WindCli self-hosted",username:"Nome utente",password:"Password",submit:"Accedi",loading:"Accesso in corso...",errors:{invalidCredentials:"Nome utente o password non validi",requiredFields:"Compila tutti i campi",networkError:"Errore di rete. Riprova."},placeholders:{username:"Inserisci il tuo nome utente",password:"Inserisci la tua password"}},Cw={title:"Crea account",username:"Nome utente",password:"Password",confirmPassword:"Conferma password",submit:"Crea account",loading:"Creazione account...",errors:{passwordMismatch:"Le password non corrispondono",usernameTaken:"Nome utente già in uso",weakPassword:"La password è troppo debole"}},Sw={title:"Disconnetti",confirm:"Sei sicuro di volerti disconnettere?",button:"Disconnetti"},Pw={login:ww,register:Cw,logout:Sw},Aw={title:"Progetti",newProject:"Nuovo progetto",deleteProject:"Rimuovi progetto",renameProject:"Rinomina progetto",noProjects:"Nessun progetto trovato",loadingProjects:"Caricamento progetti...",searchPlaceholder:"Cerca progetti...",projectNamePlaceholder:"Nome progetto",starred:"Preferiti",all:"Tutti",untitledSession:"Sessione senza titolo",newSession:"Nuova sessione",codexSession:"Sessione Codex",fetchingProjects:"Recupero dei tuoi progetti e sessioni Claude",projects:"progetti",noMatchingProjects:"Nessun progetto corrispondente",tryDifferentSearch:"Prova a modificare il termine di ricerca",runClaudeCli:"Esegui Claude CLI in una directory di progetto per iniziare"},jw={title:"WindCli",subtitle:"Interfaccia assistente di programmazione AI"},Tw={title:"Sessioni",newSession:"Nuova sessione",deleteSession:"Elimina sessione",renameSession:"Rinomina sessione",noSessions:"Nessuna sessione",loadingSessions:"Caricamento sessioni...",unnamed:"Senza nome",loading:"Caricamento...",showMore:"Mostra più sessioni"},Iw={viewEnvironments:"Visualizza ambienti",hideSidebar:"Nascondi barra laterale",createProject:"Crea nuovo progetto",refresh:"Aggiorna progetti e sessioni (Ctrl+R)",renameProject:"Rinomina progetto (F2)",deleteProject:"Rimuovi progetto dalla barra laterale (Canc)",addToFavorites:"Aggiungi ai preferiti",removeFromFavorites:"Rimuovi dai preferiti",editSessionName:"Modifica manualmente il nome della sessione",deleteSession:"Elimina questa sessione permanentemente",activeSessionIndicator:"Sessione attiva di recente (ultimi 10 minuti)",save:"Salva",cancel:"Annulla",clearSearch:"Cancella ricerca",openCommandPalette:"Apri tavolozza comandi",attentionRequiredIndicator:"La sessione richiede attenzione"},Ew={chat:"Chat",files:"File",git:"Git",terminal:"Terminale",tasks:"Attività"},Mw={refresh:"Aggiorna",settings:"Impostazioni",collapseAll:"Comprimi tutto",expandAll:"Espandi tutto",cancel:"Annulla",save:"Salva",delete:"Elimina",rename:"Rinomina",joinCommunity:"Unisciti alla community",reportIssue:"Segnala problema",starOnGithub:"Metti stella su GitHub"},zw={openSource:"Open Source"},Dw={active:"Attivo",inactive:"Inattivo",thinking:"Sto pensando...",error:"Errore",aborted:"Interrotto",unknown:"Sconosciuto"},Nw={justNow:"Adesso",oneMinuteAgo:"1 min fa",minutesAgo:"{{count}} min fa",oneHourAgo:"1 ora fa",hoursAgo:"{{count}} ore fa",oneDayAgo:"1 giorno fa",daysAgo:"{{count}} giorni fa"},$w={deleteConfirm:"Sei sicuro di voler eliminare questo elemento?",renameSuccess:"Rinominato con successo",deleteSuccess:"Eliminato con successo",errorOccurred:"Si è verificato un errore",deleteSessionConfirm:"Sei sicuro di voler eliminare questa sessione? Questa azione non può essere annullata.",deleteProjectConfirm:"Rimuovere questo progetto dalla barra laterale? I file del progetto, le memorie e i dati delle sessioni non verranno eliminati.",enterProjectPath:"Inserisci un percorso di progetto",deleteSessionFailed:"Impossibile eliminare la sessione. Riprova.",deleteSessionError:"Errore durante l'eliminazione della sessione. Riprova.",renameSessionFailed:"Impossibile rinominare la sessione. Riprova.",renameSessionError:"Errore durante la rinomina della sessione. Riprova.",deleteProjectFailed:"Impossibile rimuovere il progetto. Riprova.",deleteProjectError:"Errore durante la rimozione del progetto. Riprova.",createProjectFailed:"Impossibile creare il progetto. Riprova.",createProjectError:"Errore durante la creazione del progetto. Riprova.",updateProjectError:"Errore durante l'aggiornamento del progetto. Riprova.",refreshError:"Aggiornamento non riuscito. Riprova.",restoreProjectFailed:"Impossibile ripristinare il progetto. Riprova.",restoreProjectError:"Errore durante il ripristino del progetto. Riprova.",restoreSessionFailed:"Impossibile ripristinare la sessione. Riprova.",restoreSessionError:"Errore durante il ripristino della sessione. Riprova."},Rw={updateAvailable:"Aggiornamento disponibile",restartRequired:"Aggiornamento installato — riavvia il server per applicarlo"},Lw={modeProjects:"Progetti",modeConversations:"Conversazioni",conversationsPlaceholder:"Cerca nelle conversazioni...",searching:"Ricerca in corso...",sessionTitles:"Titoli delle sessioni",conversationContents:"Contenuto delle conversazioni",noResults:"Nessun risultato trovato",tryDifferentQuery:"Prova con una ricerca diversa",matches_one:"{{count}} corrispondenza",matches_other:"{{count}} corrispondenze",projectsScanned_one:"{{count}} progetto analizzato",projectsScanned_other:"{{count}} progetti analizzati"},Fw={deleteProject:"Rimuovi progetto",deleteSession:"Elimina sessione",confirmDelete:"Cosa vuoi fare con",sessionCount_one:"Questo progetto contiene {{count}} conversazione.",sessionCount_other:"Questo progetto contiene {{count}} conversazioni.",removeFromSidebar:"Rimuovi solo dalla barra laterale",deleteAllData:"Elimina tutti i dati permanentemente",allConversationsDeleted:"Il progetto verrà rimosso dalla barra laterale. I tuoi file, memorie e dati delle sessioni verranno preservati.",cannotUndo:"Puoi riaggiungerlo in seguito."},Bw={projects:Aw,app:jw,sessions:Tw,tooltips:Iw,navigation:Ew,actions:Mw,branding:zw,status:Dw,time:Nw,messages:$w,version:Rw,search:Lw,deleteConfirmation:Fw},Gw={copy:"Copia",copied:"Copiato",copyCode:"Copia codice"},Hw={copy:"Copia messaggio",copied:"Messaggio copiato",selectFormat:"Seleziona formato copia",copyAsMarkdown:"Copia come markdown",copyAsText:"Copia come testo"},Ow={user:"U",error:"Errore",tool:"Strumento",claude:"Claude",cursor:"Cursor",codex:"Codex"},Uw={settings:"Impostazioni strumento",error:"Errore strumento",result:"Risultato strumento",viewParams:"Vedi parametri input",viewRawParams:"Vedi parametri grezzi",viewDiff:"Vedi differenze per",creatingFile:"Creazione nuovo file:",updatingTodo:"Aggiornamento lista attività",read:"Leggi",readFile:"Leggi file",updateTodo:"Aggiorna lista attività",readTodo:"Leggi lista attività",searchResults:"risultati"},qw={found:"Trovati {{count}} {{type}}",file:"file",files:"file",pattern:"pattern:",in:"in:"},Ww={updated:"File aggiornato con successo",created:"File creato con successo",written:"File scritto con successo",diff:"Differenze",newFile:"Nuovo file",viewContent:"Vedi contenuto file",viewFullOutput:"Vedi output completo ({{count}} caratteri)",contentDisplayed:"Il contenuto del file è visualizzato nella vista differenze sopra"},Vw={title:"Prompt interattivo",waiting:"In attesa della tua risposta nella CLI",instruction:"Seleziona un'opzione nel terminale dove Claude è in esecuzione.",selectedOption:"✓ Claude ha selezionato l'opzione {{number}}",instructionDetail:"Nella CLI, selezioneresti questa opzione interattivamente usando i tasti freccia o digitando il numero."},Kw={title:"Sto pensando...",emoji:"💭 Sto pensando..."},_w={response:"Risposta JSON"},Yw={grant:"Concedi permesso per {{tool}}",added:"Permesso aggiunto",addTo:"Aggiunge {{entry}} agli strumenti consentiti.",retry:"Permesso salvato. Riprova la richiesta per usare lo strumento.",error:"Impossibile aggiornare i permessi. Riprova.",openSettings:"Apri impostazioni"},Jw={updated:"Lista attività aggiornata con successo",current:"Lista attività corrente"},Qw={viewPlan:"📋 Vedi piano di implementazione",title:"Piano di implementazione"},Zw={resetAt:"Limite di utilizzo Claude raggiunto. Il tuo limite verrà ripristinato alle **{{time}} {{timezone}}** - {{date}}"},Xw={permissionMode:"Modalità permessi",modes:{default:"Modalità predefinita",auto:"Auto Mode",acceptEdits:"Accetta modifiche",bypassPermissions:"Ignora permessi",plan:"Modalità piano"},descriptions:{default:"Solo i comandi attendibili (ls, cat, grep, git status, ecc.) vengono eseguiti automaticamente. Gli altri comandi vengono saltati. Può scrivere nell'area di lavoro.",auto:"A model classifier decides per tool call whether to approve or deny. Hands-off, but safer than Bypass — denials still happen.",acceptEdits:"Tutti i comandi vengono eseguiti automaticamente nell'area di lavoro. Modalità completamente automatica con esecuzione sandboxed.",bypassPermissions:"Accesso completo al sistema senza restrizioni. Tutti i comandi vengono eseguiti automaticamente con accesso completo a disco e rete. Usa con cautela.",plan:"Modalità pianificazione - nessun comando viene eseguito"},technicalDetails:"Dettagli tecnici"},eC={placeholder:"Digita / per i comandi, @ per i file, o chiedi qualcosa a {{provider}}...",placeholderDefault:"Scrivi il tuo messaggio...",disabled:"Input disabilitato",attachFiles:"Allega file",attachImages:"Allega immagini",send:"Invia",stop:"Ferma",hintText:{ctrlEnter:"Ctrl+Invio per inviare • Shift+Invio per nuova riga • Tab per cambiare modalità • / per comandi",enter:"Invio per inviare • Shift+Invio per nuova riga • Tab per cambiare modalità • / per comandi"},clickToChangeMode:"Clicca per cambiare modalità permessi (o premi Tab nell'input)",showAllCommands:"Mostra tutti i comandi",clearInput:"Cancella input",scrollToBottom:"Scorri in basso"},tC={title:"Scegli il tuo assistente AI",description:"Seleziona un provider per iniziare una nuova conversazione",selectModel:"Seleziona modello",providerInfo:{anthropic:"di Anthropic",openai:"di OpenAI",cursorEditor:"Editor codice AI",google:"di Google"},readyPrompt:{claude:"Pronto a usare Claude con {{model}}. Inizia a digitare il tuo messaggio qui sotto.",cursor:"Pronto a usare Cursor con {{model}}. Inizia a digitare il tuo messaggio qui sotto.",codex:"Pronto a usare Codex con {{model}}. Inizia a digitare il tuo messaggio qui sotto.",default:"Seleziona un provider sopra per iniziare"},pressToSearch:"Premi <kbd>{{shortcut}}</kbd> per cercare sessioni, file e commit"},nC={continue:{title:"Continua la tua conversazione",description:"Fai domande sul tuo codice, richiedi modifiche o chiedi aiuto con le attività di sviluppo"},loading:{olderMessages:"Caricamento messaggi precedenti...",sessionMessages:"Caricamento messaggi della sessione..."},messages:{showingOf:"Visualizzati {{shown}} di {{total}} messaggi",scrollToLoad:"Scorri in alto per caricare altri",showingLast:"Visualizzati ultimi {{count}} messaggi ({{total}} totali)",loadEarlier:"Carica messaggi precedenti",loadAll:"Carica tutti i messaggi",loadingAll:"Caricamento di tutti i messaggi...",allLoaded:"Tutti i messaggi caricati",perfWarning:'Tutti i messaggi caricati — lo scorrimento potrebbe essere più lento. Clicca "Scorri in basso" per ripristinare le prestazioni.'}},sC={selectProject:{title:"Seleziona un progetto",description:"Scegli un progetto per aprire una shell interattiva in quella directory"},status:{newSession:"Nuova sessione",initializing:"Inizializzazione...",restarting:"Riavvio..."},actions:{disconnect:"Disconnetti",disconnectTitle:"Disconnetti dalla shell",restart:"Riavvia",restartTitle:"Riavvia shell (disconnetti prima)",connect:"Continua nella shell",connectTitle:"Connetti alla shell"},loading:"Caricamento terminale...",connecting:"Connessione alla shell...",startSession:"Avvia una nuova sessione Claude",resumeSession:"Riprendi sessione: {{displayName}}...",runCommand:"Esegui {{command}} in {{projectName}}",startCli:"Avvio Claude CLI in {{projectName}}",defaultCommand:"comando"},iC={actions:{thinking:"Ragionamento",processing:"Elaborazione",analyzing:"Analisi",working:"In lavorazione",computing:"Calcolo",reasoning:"Ragionamento"},state:{live:"Attivo",paused:"In pausa"},elapsed:{seconds:"{{count}}s",minutesSeconds:"{{minutes}}m {{seconds}}s",label:"{{time}} trascorsi",startingNow:"Avvio in corso"},controls:{stopGeneration:"Interrompi generazione",pressEscToStop:"Premi Esc in qualsiasi momento per interrompere"},providers:{assistant:"Assistente"}},aC={startChatWithProvider:"Seleziona un progetto per iniziare a chattare con {{provider}}"},oC={nextTaskPrompt:"Inizia l'attività successiva"},rC={codeBlock:Gw,copyMessage:Hw,messageTypes:Ow,tools:Uw,search:qw,fileOperations:Ww,interactive:Vw,thinking:Kw,json:_w,permissions:Yw,todo:Jw,plan:Qw,usageLimit:Zw,codex:Xw,input:eC,providerSelection:tC,session:nC,shell:sC,claudeStatus:iC,projectSelection:aC,tasks:oC},lC={changes:"modifiche",previousChange:"Modifica precedente",nextChange:"Modifica successiva",hideDiff:"Nascondi evidenziazione differenze",showDiff:"Mostra evidenziazione differenze",settings:"Impostazioni editor",collapse:"Comprimi editor",expand:"Espandi editor a larghezza piena"},cC="Caricamento {{fileName}}...",dC={showingChanges:"Visualizzazione modifiche"},uC={copyPath:"Copia percorso file",pathCopied:"Percorso file copiato",download:"Scarica file",save:"Salva",saving:"Salvataggio...",saved:"Salvato!",exitFullscreen:"Esci dalla modalità schermo intero",fullscreen:"Schermo intero",close:"Chiudi",previewMarkdown:"Anteprima markdown",editMarkdown:"Modifica markdown"},pC={lines:"Righe:",characters:"Caratteri:",shortcuts:"Premi Ctrl+S per salvare • Esc per chiudere"},mC={title:"File binario",message:`Il file "{{fileName}}" non può essere visualizzato nell'editor di testo perché è un file binario.`},gC={toolbar:lC,loading:cC,header:dC,actions:uC,footer:pC,binaryFile:mC},hC={title:"TaskMaster AI non è configurato",description:"TaskMaster aiuta a suddividere progetti complessi in attività gestibili con assistenza AI",whatIsTitle:"🎯 Cos'è TaskMaster?",features:{aiPowered:"Gestione attività AI: suddividi progetti complessi in sotto-attività gestibili",prdTemplates:"Template PRD: genera attività da documenti di requisiti del prodotto",dependencyTracking:"Tracciamento dipendenze: comprendi le relazioni tra attività e l'ordine di esecuzione",progressVisualization:"Visualizzazione progresso: board Kanban e analisi dettagliata delle attività",cliIntegration:"Integrazione CLI: usa i comandi taskmaster per flussi di lavoro avanzati"},initializeButton:"Inizializza TaskMaster AI"},fC={title:"Inizia con TaskMaster",subtitle:"TaskMaster è inizializzato! Ecco cosa fare dopo:",steps:{createPRD:{title:"Crea un documento di requisiti del prodotto (PRD)",description:"Discuti la tua idea di progetto e crea un PRD che descriva cosa vuoi costruire.",addButton:"Aggiungi PRD",existingPRDs:"PRD esistenti:"},generateTasks:{title:"Genera attività dal PRD",description:"Una volta che hai un PRD, chiedi al tuo assistente AI di analizzarlo e TaskMaster lo suddividerà automaticamente in attività gestibili con dettagli di implementazione."},analyzeTasks:{title:"Analizza ed espandi le attività",description:"Chiedi al tuo assistente AI di analizzare la complessità delle attività ed espanderle in sotto-attività dettagliate per un'implementazione più semplice."},startBuilding:{title:"Inizia a costruire",description:"Chiedi al tuo assistente AI di iniziare a lavorare sulle attività, aggiornare il loro stato e aggiungere nuove attività man mano che il tuo progetto evolve."}},tip:"💡 Suggerimento: inizia con un PRD per ottenere il massimo dalla generazione di attività AI di TaskMaster"},bC={title:"Configurazione TaskMaster",subtitle:"CLI interattiva per {{projectName}}",willStart:"L'inizializzazione di TaskMaster partirà automaticamente",completed:"Configurazione TaskMaster completata! Ora puoi chiudere questa finestra.",closeButton:"Chiudi",closeContinueButton:"Chiudi e continua"},vC={title:"Inizia con TaskMaster",subtitle:"La tua guida per una gestione produttiva delle attività",examples:{parsePRD:`💬 Esempio:
|
|
30
30
|
"Ho appena inizializzato un nuovo progetto con Claude Task Master. Ho un PRD in .taskmaster/docs/prd.txt. Puoi aiutarmi ad analizzarlo e configurare le attività iniziali?"`,expandTask:`💬 Esempio:
|
|
31
31
|
"L'attività 5 sembra complessa. Puoi suddividerla in sotto-attività?"`,addTask:`💬 Esempio:
|
|
32
|
-
"Per favore aggiungi una nuova attività per implementare il caricamento delle immagini profilo utente usando Cloudinary, ricerca l'approccio migliore."`},moreExamples:"Vedi altri esempi e pattern di utilizzo →",proTips:{title:"💡 Suggerimenti pro",search:"Usa la barra di ricerca per trovare rapidamente attività specifiche",views:"Passa tra le viste Kanban, Lista e Griglia usando i selettori di vista",filters:"Usa i filtri per concentrarti su stati o priorità specifiche delle attività",details:"Clicca su qualsiasi attività per vedere informazioni dettagliate e gestire le sotto-attività"},learnMore:{title:"📚 Per saperne di più",description:"TaskMaster AI è un sistema avanzato di gestione attività pensato per sviluppatori. Trova documentazione, esempi e contribuisci al progetto.",githubButton:"Vedi su GitHub"}},lC={placeholder:"Cerca attività..."},cC={button:"Filtri",status:"Stato",priority:"Priorità",sortBy:"Ordina per",allStatuses:"Tutti gli stati",allPriorities:"Tutte le priorità",showing:"Visualizzate {{filtered}} di {{total}} attività",clearFilters:"Cancella filtri"},dC={id:"ID",status:"Stato",priority:"Priorità",idAsc:"ID (crescente)",idDesc:"ID (decrescente)",titleAsc:"Titolo (A-Z)",titleDesc:"Titolo (Z-A)",statusAsc:"Stato (in attesa prima)",statusDesc:"Stato (completati prima)",priorityAsc:"Priorità (alta prima)",priorityDesc:"Priorità (bassa prima)"},uC={kanban:"Vista Kanban",list:"Vista lista",grid:"Vista griglia"},pC={pending:"📋 Da fare",inProgress:"🚀 In corso",done:"✅ Completate",blocked:"🚫 Bloccate",deferred:"⏳ Rimandate",cancelled:"❌ Annullate",noTasksYet:"Nessuna attività",tasksWillAppear:"Le attività appariranno qui",moveTasksHere:"Sposta le attività qui quando iniziate",completedTasksHere:"Le attività completate appariranno qui",statusTasksHere:"Le attività con questo stato appariranno qui"},mC={help:"Guida introduttiva TaskMaster",prds:"PRD",addPRD:"Aggiungi PRD",addTask:"Aggiungi attività",createNewPRD:"Crea nuovo PRD",prdsAvailable:"{{count}} PRD disponibili"},gC={modified:"Modificato: {{date}}"},hC={pending:"In attesa","in-progress":"In corso",done:"Completata",blocked:"Bloccata",deferred:"Rimandata",cancelled:"Annullata"},fC={high:"Alta",medium:"Media",low:"Bassa"},bC={title:"Nessuna attività corrisponde ai filtri",description:"Prova a modificare la ricerca o i criteri di filtro."},vC={notConfigured:iC,gettingStarted:aC,setupModal:oC,helpGuide:rC,search:lC,filters:cC,sort:dC,views:uC,kanban:pC,buttons:mC,prd:gC,statuses:hC,priorities:fC,noMatchingTasks:bC},kC={save:"儲存",cancel:"取消",delete:"刪除",create:"建立",edit:"編輯",close:"關閉",confirm:"確認",submit:"送出",retry:"重試",refresh:"重新整理",search:"搜尋",clear:"清除",copy:"複製",download:"下載",upload:"上傳",browse:"瀏覽"},xC={chat:"聊天",shell:"終端機",files:"檔案",git:"版本控制",tasks:"任務",browser:"瀏覽器",computer:"電腦"},yC={loading:"載入中...",success:"成功",error:"錯誤",failed:"失敗",pending:"待處理",completed:"已完成",inProgress:"進行中"},wC={savedSuccessfully:"儲存成功",deletedSuccessfully:"刪除成功",updatedSuccessfully:"更新成功",operationFailed:"操作失敗",networkError:"網路錯誤,請檢查您的連線。",unauthorized:"未授權,請登入。",notFound:"找不到",invalidInput:"輸入無效",requiredField:"此欄位為必填",unknownError:"發生未知錯誤"},CC={settings:"設定",home:"首頁",back:"返回",next:"下一步",previous:"上一步",logout:"登出"},SC={language:"語言",theme:"佈景主題",darkMode:"深色模式",lightMode:"淺色模式",name:"名稱",description:"描述",enabled:"已啟用",disabled:"已停用",optional:"選填",version:"版本",select:"選取",selectAll:"全選",deselectAll:"取消全選"},PC={justNow:"剛剛",minutesAgo:"{{count}} 分鐘前",hoursAgo:"{{count}} 小時前",daysAgo:"{{count}} 天前",yesterday:"昨天"},AC={newFile:"新增檔案",newFolder:"新增資料夾",rename:"重新命名",move:"移動",copyPath:"複製路徑",openInEditor:"在編輯器中開啟"},jC={loading:"正在載入 WindCli",settingUpWorkspace:"正在設定您的工作區...",chooseProject:"選擇您的專案",selectProjectDescription:"從側邊欄選擇一個專案以開始使用 Claude 進行程式開發。每個專案包含您的聊天紀錄和檔案歷史。",tip:"提示",createProjectMobile:"點擊上方的選單按鈕以存取專案",createProjectDesktop:"點擊側邊欄中的資料夾圖示以建立新專案",newSession:"新工作階段",untitledSession:"未命名工作階段",projectFiles:"專案檔案"},TC={loading:"正在載入檔案...",files:"檔案",simpleView:"簡易檢視",compactView:"精簡檢視",detailedView:"詳細檢視",searchPlaceholder:"搜尋檔案和資料夾...",clearSearch:"清除搜尋",name:"名稱",size:"大小",modified:"修改時間",permissions:"權限",noFilesFound:"找不到檔案",checkProjectPath:"請檢查專案路徑是否可存取",noMatchesFound:"找不到符合項目",tryDifferentSearch:"嘗試不同的搜尋詞或清除搜尋",justNow:"剛剛",minAgo:"{{count}} 分鐘前",hoursAgo:"{{count}} 小時前",daysAgo:"{{count}} 天前",newFile:"新增檔案 (Cmd+N)",newFolder:"新增資料夾 (Cmd+Shift+N)",refresh:"重新整理",collapseAll:"全部收合",context:{rename:"重新命名",delete:"刪除",copyPath:"複製路徑",download:"下載",newFile:"新增檔案",newFolder:"新增資料夾",upload:"上傳檔案",refresh:"重新整理",menuLabel:"檔案右鍵選單",loading:"載入中..."}},IC={title:"建立新專案",steps:{type:"類型",configure:"設定",confirm:"確認"},step1:{question:"您已經有工作區,還是想建立一個新的工作區?",existing:{title:"現有工作區",description:"我的伺服器上已經有工作區,只需要將其加入專案列表"},new:{title:"新建工作區",description:"建立新工作區,可選擇從 GitHub 儲存庫複製"}},step2:{existingPath:"工作區路徑",newPath:"工作區路徑",existingPlaceholder:"/path/to/existing/workspace",newPlaceholder:"/path/to/new/workspace",existingHelp:"您現有工作區目錄的完整路徑",newHelp:"工作區目錄的完整路徑",githubUrl:"GitHub URL(選填)",githubPlaceholder:"https://github.com/username/repository",githubHelp:"選填:提供 GitHub URL 以複製儲存庫",githubAuth:"GitHub 身分驗證(選填)",githubAuthHelp:"僅私有儲存庫需要。公開儲存庫無需身分驗證即可複製。",loadingTokens:"正在載入已儲存的權杖...",storedToken:"已儲存的權杖",newToken:"新權杖",nonePublic:"無(公開)",selectToken:"選取權杖",selectTokenPlaceholder:"-- 選取權杖 --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"此權杖僅用於此操作",publicRepoInfo:"公開儲存庫不需要身分驗證。如果複製公開儲存庫,可以略過提供權杖。",noTokensHelp:"沒有可用的已儲存權杖。您可以在 設定 → API 金鑰 中新增權杖以便重複使用。",optionalTokenPublic:"GitHub 權杖(公開儲存庫可選)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(公開儲存庫可留空)"},step3:{reviewConfig:"檢閱您的設定",existingWorkspace:"現有工作區",newWorkspace:"新建工作區",path:"路徑:",cloneFrom:"複製自:",authentication:"身分驗證:",usingStoredToken:"使用已儲存的權杖:",usingProvidedToken:"使用提供的權杖",noAuthentication:"無身分驗證",sshKey:"SSH 金鑰",existingInfo:"工作區將加入您的專案列表,並可用於 Claude/Cursor 工作階段。",newWithClone:"儲存庫將從此資料夾複製。",newEmpty:"工作區將加入您的專案列表,並可用於 Claude/Cursor 工作階段。",cloningRepository:"正在複製儲存庫..."},buttons:{cancel:"取消",back:"返回",next:"下一步",createProject:"建立專案",creating:"建立中...",cloning:"正在複製..."},errors:{selectType:"請選擇您已有現有工作區還是想建立新工作區",providePath:"請提供工作區路徑",failedToCreate:"建立工作區失敗",failedToCreateFolder:"建立資料夾失敗"}},EC={genericTool:"工具",codes:{generic:{info:{title:"通知"}},permission:{required:{title:"需要處理",body:"{{toolName}} 正在等待你的決定。"}},run:{stopped:{title:"執行已停止",body:"原因:{{reason}}"},failed:{title:"執行失敗"}},agent:{notification:{title:"Agent 通知"}}}},MC={title:"有可用更新",newVersionReady:"新版本已準備就緒",currentVersion:"目前版本",latestVersion:"最新版本",whatsNew:"新功能:",viewFullRelease:"查看完整發行說明",updateProgress:"更新進度:",manualUpgrade:"手動升級:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:"或點擊「立即更新」以自動執行更新。",updateCompleted:"更新成功完成!",restartServer:"請重新啟動伺服器以套用變更。",updateFailed:"更新失敗",buttons:{close:"關閉",later:"稍後",copyCommand:"複製指令",updateNow:"立即更新",updating:"更新中..."},ariaLabels:{closeModal:"關閉版本升級對話框",showSidebar:"顯示側邊欄",settings:"設定",updateAvailable:"有可用更新",closeSidebar:"關閉側邊欄"}},zC={buttons:kC,tabs:xC,status:yC,messages:wC,navigation:CC,common:SC,time:PC,fileOperations:AC,mainContent:jC,fileTree:TC,projectWizard:IC,notifications:EC,versionUpdate:MC},DC="設定",NC={account:"帳戶",permissions:"權限",mcpServers:"MCP 伺服器",appearance:"外觀"},$C={title:"帳戶",language:"語言",languageLabel:"顯示語言",languageDescription:"選擇您偏好的介面語言",username:"使用者名稱",email:"電子郵件",profile:"個人檔案",changePassword:"變更密碼"},RC={title:"MCP 伺服器",addServer:"新增伺服器",editServer:"編輯伺服器",deleteServer:"刪除伺服器",serverName:"伺服器名稱",serverType:"伺服器類型",config:"設定",testConnection:"測試連線",status:"狀態",connected:"已連線",disconnected:"未連線",scope:{label:"範圍",user:"使用者",project:"專案"}},LC={title:"外觀",theme:"佈景主題",codeEditor:"程式碼編輯器",editorTheme:"編輯器佈景主題",wordWrap:"自動換行",showMinimap:"顯示縮圖",lineNumbers:"行號",fontSize:"字型大小"},FC={saveChanges:"儲存變更",resetToDefaults:"重設為預設值",cancelChanges:"取消變更"},BC={title:"快速設定",sections:{appearance:"外觀",toolDisplay:"工具顯示",inputSettings:"輸入設定"},darkMode:"深色模式",showRawParameters:"顯示原始參數",showThinking:"顯示思考過程",sendByCtrlEnter:"使用 Ctrl+Enter 傳送",sendByCtrlEnterDescription:"啟用後,按 Ctrl+Enter 傳送訊息,而不是僅按 Enter。這對於使用輸入法的使用者可以避免意外傳送。",dragHandle:{dragging:"正在拖曳手柄",closePanel:"關閉設定面板",openPanel:"開啟設定面板",draggingStatus:"正在拖曳...",toggleAndMove:"點擊切換,拖曳移動"}},GC={title:"終端機快速鍵",sectionKeys:"按鍵",sectionNavigation:"導覽",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"向上箭頭",arrowDown:"向下箭頭",scrollDown:"捲動到底部",handle:{closePanel:"關閉快速鍵面板",openPanel:"開啟快速鍵面板"}},HC={label:"設定",agents:"智慧代理",appearance:"外觀",git:"Git",apiTokens:"API 和權杖",tasks:"任務",computer:"電腦使用",notifications:"通知",plugins:"外掛",about:"關於"},OC={title:"通知",description:"控制你希望接收的通知事件。",webPush:{title:"Web 推播通知",enable:"啟用推播通知",disable:"關閉推播通知",enabled:"推播通知已啟用",loading:"更新中...",unsupported:"此瀏覽器不支援推播通知。",denied:"推播通知已被封鎖,請在瀏覽器設定中允許。"},sound:{title:"聲音",description:"聊天執行完成時播放短提示音。",enabled:"已啟用",test:"測試聲音"},events:{title:"事件類型",actionRequired:"需要處理",stop:"執行已停止",error:"執行失敗"}},UC={darkMode:{label:"深色模式",description:"切換淺色和深色佈景主題"},projectSorting:{label:"專案排序",description:"專案在側邊欄中的排列方式",alphabetical:"依字母順序",recentActivity:"最近活動"},codeEditor:{title:"程式碼編輯器",theme:{label:"編輯器佈景主題",description:"程式碼編輯器的預設佈景主題"},wordWrap:{label:"自動換行",description:"在編輯器中預設啟用自動換行"},showMinimap:{label:"顯示縮圖",description:"在差異檢視中顯示縮圖以便於導覽"},lineNumbers:{label:"顯示行號",description:"在編輯器中顯示行號"},fontSize:{label:"字型大小",description:"編輯器字型大小(px)"}}},qC={title:{add:"新增 MCP 伺服器",edit:"編輯 MCP 伺服器"},importMode:{form:"表單輸入",json:"JSON 匯入"},scope:{label:"範圍",userGlobal:"使用者(全域)",projectLocal:"專案(本機)",userDescription:"使用者範圍:在您機器上的所有專案中可用",projectDescription:"本機範圍:僅在選定專案中可用",cannotChange:"編輯現有伺服器時無法變更範圍"},fields:{serverName:"伺服器名稱",transportType:"傳輸類型",command:"指令",arguments:"參數(每行一個)",jsonConfig:"JSON 設定",url:"URL",envVars:"環境變數(KEY=值,每行一個)",headers:"標頭(KEY=值,每行一個)",selectProject:"選取專案..."},placeholders:{serverName:"我的服務"},validation:{missingType:"缺少必填欄位:type",stdioRequiresCommand:"stdio 類型需要 command 欄位",httpRequiresUrl:"{{type}} 類型需要 url 欄位",invalidJson:"無效的 JSON 格式",jsonHelp:"貼上您的 MCP 伺服器設定(JSON 格式)。範例格式:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"設定詳細資訊(來自 {{configFile}})",projectPath:"路徑:{{path}}",actions:{cancel:"取消",saving:"儲存中...",addServer:"新增伺服器",updateServer:"更新伺服器"}},WC={success:"設定儲存成功!",error:"儲存設定失敗",saving:"儲存中..."},VC={save:"儲存設定",cancel:"取消"},KC={title:"Git 設定",description:"設定您的 git 提交身分。這些設定將透過 git config --global 全域套用",name:{label:"Git 名稱",help:"您的 git 提交名稱"},email:{label:"Git 電子郵件",help:"您的 git 提交電子郵件"},actions:{save:"儲存設定",saving:"儲存中..."},status:{success:"儲存成功"}},_C={title:"API 金鑰",description:"產生 API 金鑰以從其他應用程式存取外部 API。",newKey:{alertTitle:"⚠️ 儲存您的 API 金鑰",alertMessage:"這是您唯一一次看到此金鑰。請妥善保存。",iveSavedIt:"我已儲存"},form:{placeholder:"API 金鑰名稱(例如:正式伺服器)",createButton:"建立",cancelButton:"取消"},newButton:"新增 API 金鑰",empty:"尚未建立 API 金鑰。",list:{created:"建立時間:",lastUsed:"最後使用:"},confirmDelete:"確定要刪除此 API 金鑰嗎?",status:{active:"啟用",inactive:"未啟用"},github:{title:"GitHub 權杖",description:"新增 GitHub 個人存取權杖以透過外部 API 複製私有儲存庫。",descriptionAlt:"新增 GitHub 個人存取權杖以複製私有儲存庫。您也可以直接在 API 請求中傳遞權杖而無需儲存。",addButton:"新增權杖",form:{namePlaceholder:"權杖名稱(例如:個人儲存庫)",tokenPlaceholder:"GitHub 個人存取權杖(ghp_...)",descriptionPlaceholder:"描述(選填)",addButton:"新增權杖",cancelButton:"取消",howToCreate:"如何建立 GitHub 個人存取權杖 →"},empty:"尚未新增 GitHub 權杖。",added:"新增時間:",confirmDelete:"確定要刪除此 GitHub 權杖嗎?"},apiDocsLink:"API 文件",documentation:{title:"外部 API 文件",description:"了解如何使用外部 API 從您的應用程式觸發 Claude/Cursor 工作階段。",viewLink:"查看 API 文件 →"},loading:"載入中...",version:{updateAvailable:"有可用更新:v{{version}}"}},YC={checking:"正在檢查 TaskMaster 安裝...",notInstalled:{title:"未安裝 TaskMaster AI CLI",description:"需要 TaskMaster CLI 才能使用任務管理功能。安裝它以開始使用:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"在 GitHub 上查看",afterInstallation:"安裝後:",steps:{restart:"重新啟動此應用程式",autoAvailable:"TaskMaster 功能將自動啟用",initCommand:"在專案目錄中使用 task-master init"}},settings:{enableLabel:"啟用 TaskMaster 整合",enableDescription:"在整個介面中顯示 TaskMaster 任務、橫幅和側邊欄指示器"}},JC={authStatus:{checking:"檢查中...",connected:"已連線",notConnected:"未連線",disconnected:"已中斷連線",checkingAuth:"正在檢查驗證狀態...",loggedInAs:"登入為 {{email}}",authenticatedUser:"已驗證使用者"},account:{claude:{description:"Anthropic Claude AI 助手"},cursor:{description:"Cursor AI 驅動的程式碼編輯器"},codex:{description:"OpenAI Codex AI 助手"}},connectionStatus:"連線狀態",login:{title:"登入",reAuthenticate:"重新驗證",description:"登入您的 {{agent}} 帳戶以啟用 AI 功能",reAuthDescription:"使用其他帳戶登入或重新整理憑證",button:"登入",reLoginButton:"重新登入"},error:"錯誤:{{error}}"},QC={title:"權限設定",skipPermissions:{label:"略過權限提示(請謹慎使用)",claudeDescription:"等同於 --dangerously-skip-permissions 旗標",cursorDescription:"等同於 Cursor CLI 中的 -f 旗標"},allowedTools:{title:"允許的工具",description:"無需權限提示即可自動使用的工具",placeholder:'例如:"Bash(git log:*)" 或 "Write"',quickAdd:"快速新增常用工具:",empty:"未設定允許的工具"},blockedTools:{title:"停用的工具",description:"無需權限提示即可自動停用的工具",placeholder:'例如:"Bash(rm:*)"',empty:"未設定停用的工具"},allowedCommands:{title:"允許的 Shell 指令",description:"無需權限提示即可自動執行的 Shell 指令",placeholder:'例如:"Shell(ls)" 或 "Shell(git status)"',quickAdd:"快速新增常用指令:",empty:"未設定允許的指令"},blockedCommands:{title:"封鎖的 Shell 指令",description:"自動封鎖的 Shell 指令",placeholder:'例如:"Shell(rm -rf)" 或 "Shell(sudo)"',empty:"未設定封鎖的指令"},toolExamples:{title:"工具模式範例:",bashGitLog:"- 允許所有 git log 指令",bashGitDiff:"- 允許所有 git diff 指令",write:"- 允許所有 Write 工具使用",bashRm:"- 封鎖所有 rm 指令(危險)"},shellExamples:{title:"Shell 指令範例:",ls:"- 允許 ls 指令",gitStatus:"- 允許 git status",npmInstall:"- 允許 npm install",rmRf:"- 封鎖遞迴刪除"},codex:{permissionMode:"權限模式",description:"控制 Codex 如何處理檔案修改和指令執行",modes:{default:{title:"預設",description:"只有受信任的指令(ls、cat、grep、git status 等)會自動執行。其他指令將被略過。可以寫入工作區。"},acceptEdits:{title:"接受編輯",description:"所有指令在工作區內自動執行。具有沙箱執行的全自動模式。"},bypassPermissions:{title:"略過權限",description:"完全系統存取,無任何限制。所有指令自動執行,具有完整的磁碟和網路存取權限。請謹慎使用。"}},technicalDetails:"技術詳情",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted。受信任的指令:cat、cd、grep、head、ls、pwd、tail、git status/log/diff/show、find(不帶 -exec)等。",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never。所有指令在專案目錄內自動執行。",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never。完全系統存取權限,僅在可信環境中使用。",overrideNote:"您可以使用聊天介面中的模式按鈕按工作階段覆蓋此設定。"}},actions:{add:"新增"}},ZC={title:"MCP 伺服器",description:{claude:"Model Context Protocol 伺服器為 Claude 提供額外的工具和資料來源",cursor:"Model Context Protocol 伺服器為 Cursor 提供額外的工具和資料來源",codex:"Model Context Protocol 伺服器為 Codex 提供額外的工具和資料來源"},addButton:"新增 MCP 伺服器",empty:"未設定 MCP 伺服器",serverType:"類型",scope:{local:"本機",user:"使用者"},config:{command:"指令",url:"URL",args:"參數",environment:"環境變數"},tools:{title:"工具",count:"({{count}}):",more:"還有 {{count}} 個"},actions:{edit:"編輯伺服器",delete:"刪除伺服器"},help:{title:"關於 Codex MCP",description:"Codex 支援基於 stdio 的 MCP 伺服器。您可以新增伺服器,透過額外的工具和資源來擴充 Codex 的功能。"}},XC={title:"外掛",description:"透過自訂外掛擴充介面。從 git 安裝或直接將資料夾放入 ~/.claude-code-ui/plugins/",installPlaceholder:"https://github.com/user/my-plugin",installButton:"安裝",installing:"安裝中…",securityWarning:"僅安裝您已審查過原始碼或信任作者的外掛。",scanningPlugins:"正在掃描外掛…",noPluginsInstalled:"未安裝外掛",pullLatest:"從 git 拉取最新內容",noGitRemote:"無 git 遠端儲存庫 — 無法更新",uninstallPlugin:"解除安裝外掛",confirmUninstall:"再次點擊確認",confirmUninstallMessage:"移除 {{name}}?此操作無法復原。",cancel:"取消",remove:"移除",updateFailed:"更新失敗",installFailed:"安裝失敗",uninstallFailed:"解除安裝失敗",toggleFailed:"切換失敗",buildYourOwn:"建立您自己的外掛",starter:"入門範本",docs:"文件",starterPlugin:{name:"專案統計",badge:"入門",description:"查看專案的檔案數、程式碼行數、檔案類型分佈以及最近活動。",install:"安裝"},morePlugins:"更多",enable:"啟用",disable:"停用",installAriaLabel:"外掛 git 儲存庫 URL",tab:"分頁",runningStatus:"執行中"},eS={title:DC,tabs:NC,account:$C,mcp:RC,appearance:LC,actions:FC,quickSettings:BC,terminalShortcuts:GC,mainTabs:HC,notifications:OC,appearanceSettings:UC,mcpForm:qC,saveStatus:WC,footerActions:VC,git:KC,apiKeys:_C,tasks:YC,agents:JC,permissions:QC,mcpServers:ZC,pluginSettings:XC},tS={title:"歡迎回來",description:"登入您的 WindCli 帳戶",username:"使用者名稱",password:"密碼",submit:"登入",loading:"登入中...",errors:{invalidCredentials:"使用者名稱或密碼無效",requiredFields:"請填寫所有欄位",networkError:"網路錯誤,請重試。"},placeholders:{username:"輸入您的使用者名稱",password:"輸入您的密碼"}},nS={title:"建立帳戶",username:"使用者名稱",password:"密碼",confirmPassword:"確認密碼",submit:"建立帳戶",loading:"建立帳戶中...",errors:{passwordMismatch:"密碼不一致",usernameTaken:"使用者名稱已被使用",weakPassword:"密碼強度太弱"}},sS={title:"登出",confirm:"確定要登出嗎?",button:"登出"},iS={login:tS,register:nS,logout:sS},aS={title:"專案",newProject:"新增專案",deleteProject:"移除專案",renameProject:"重新命名專案",noProjects:"找不到專案",loadingProjects:"載入專案中...",searchPlaceholder:"搜尋專案...",projectNamePlaceholder:"專案名稱",starred:"星號標記",all:"全部",untitledSession:"未命名工作階段",newSession:"新工作階段",codexSession:"Codex 工作階段",fetchingProjects:"正在取得您的 Claude 專案和工作階段",projects:"專案",noMatchingProjects:"找不到符合的專案",tryDifferentSearch:"嘗試調整您的搜尋詞",runClaudeCli:"在專案目錄中執行 Claude CLI 以開始使用"},oS={title:"WindCli",subtitle:"AI 程式開發助手"},rS={title:"工作階段",newSession:"新增工作階段",deleteSession:"刪除工作階段",renameSession:"重新命名工作階段",noSessions:"暫無工作階段",loadingSessions:"載入工作階段中...",unnamed:"未命名",loading:"載入中...",showMore:"顯示更多工作階段"},lS={viewEnvironments:"查看環境",hideSidebar:"隱藏側邊欄",createProject:"建立新專案",refresh:"重新整理專案和工作階段 (Ctrl+R)",renameProject:"重新命名專案 (F2)",deleteProject:"從側邊欄移除專案 (Delete)",addToFavorites:"加入收藏",removeFromFavorites:"從收藏移除",editSessionName:"手動編輯工作階段名稱",deleteSession:"永久刪除此工作階段",save:"儲存",cancel:"取消",clearSearch:"清除搜尋",openCommandPalette:"開啟指令面板",attentionRequiredIndicator:"工作階段需要處理"},cS={chat:"聊天",files:"檔案",git:"Git",terminal:"終端機",tasks:"任務"},dS={refresh:"重新整理",settings:"設定",collapseAll:"全部收合",expandAll:"全部展開",cancel:"取消",save:"儲存",delete:"刪除",rename:"重新命名",joinCommunity:"加入社群",reportIssue:"回報問題",starOnGithub:"在 GitHub 上加星"},uS={openSource:"開源"},pS={active:"使用中",inactive:"非使用中",thinking:"思考中...",error:"錯誤",aborted:"已中止",unknown:"未知"},mS={justNow:"剛剛",oneMinuteAgo:"1 分鐘前",minutesAgo:"{{count}} 分鐘前",oneHourAgo:"1 小時前",hoursAgo:"{{count}} 小時前",oneDayAgo:"1 天前",daysAgo:"{{count}} 天前"},gS={deleteConfirm:"確定要刪除嗎?",renameSuccess:"重新命名成功",deleteSuccess:"刪除成功",errorOccurred:"發生錯誤",deleteSessionConfirm:"確定要刪除此工作階段嗎?此操作無法復原。",deleteProjectConfirm:"從側邊欄移除此專案?您的專案檔案、記憶和工作階段資料不會被刪除。",enterProjectPath:"請輸入專案路徑",deleteSessionFailed:"刪除工作階段失敗,請重試。",deleteSessionError:"刪除工作階段時出錯,請重試。",renameSessionFailed:"重新命名工作階段失敗,請重試。",renameSessionError:"重新命名工作階段時出錯,請重試。",deleteProjectFailed:"移除專案失敗,請重試。",deleteProjectError:"移除專案時出錯,請重試。",createProjectFailed:"建立專案失敗,請重試。",createProjectError:"建立專案時出錯,請重試。",updateProjectError:"更新專案時出錯,請重試。",refreshError:"重新整理失敗,請重試。",restoreProjectFailed:"還原專案失敗,請重試。",restoreProjectError:"還原專案時出錯,請重試。",restoreSessionFailed:"還原工作階段失敗,請重試。",restoreSessionError:"還原工作階段時出錯,請重試。"},hS={updateAvailable:"有可用更新",restartRequired:"已安裝更新 — 請重新啟動伺服器以套用"},fS={modeProjects:"專案",modeConversations:"對話",conversationsPlaceholder:"搜尋對話內容...",searching:"搜尋中...",sessionTitles:"工作階段標題",conversationContents:"對話內容",noResults:"找不到結果",tryDifferentQuery:"嘗試不同的搜尋詞",matches_one:"{{count}} 個符合",matches_other:"{{count}} 個符合",projectsScanned_one:"{{count}} 個專案已掃描",projectsScanned_other:"{{count}} 個專案已掃描"},bS={deleteProject:"移除專案",deleteSession:"刪除工作階段",confirmDelete:"您想如何處理",sessionCount_one:"此專案包含 {{count}} 個對話。",sessionCount_other:"此專案包含 {{count}} 個對話。",removeFromSidebar:"僅從側邊欄移除",deleteAllData:"永久刪除所有資料",allConversationsDeleted:"專案將從側邊欄中移除。您的檔案、記憶和工作階段資料將會保留。",cannotUndo:"您可以稍後重新新增此專案。"},vS={projects:aS,app:oS,sessions:rS,tooltips:lS,navigation:cS,actions:dS,branding:uS,status:pS,time:mS,messages:gS,version:hS,search:fS,deleteConfirmation:bS},kS={copy:"複製",copied:"已複製",copyCode:"複製程式碼"},xS={copy:"複製訊息",copied:"訊息已複製",selectFormat:"選擇複製格式",copyAsMarkdown:"複製為 Markdown",copyAsText:"複製為純文字"},yS={user:"U",error:"錯誤",tool:"工具",claude:"Claude",cursor:"Cursor",codex:"Codex"},wS={settings:"工具設定",error:"工具錯誤",result:"工具結果",viewParams:"查看輸入參數",viewRawParams:"查看原始參數",viewDiff:"查看編輯差異",creatingFile:"建立新檔案:",updatingTodo:"更新待辦事項",read:"讀取",readFile:"讀取檔案",updateTodo:"更新待辦清單",readTodo:"讀取待辦清單",searchResults:"結果"},CS={found:"找到 {{count}} 個{{type}}",file:"檔案",files:"檔案",pattern:"模式:",in:"在:"},SS={updated:"檔案更新成功",created:"檔案建立成功",written:"檔案寫入成功",diff:"差異",newFile:"新檔案",viewContent:"查看檔案內容",viewFullOutput:"查看完整輸出({{count}} 個字元)",contentDisplayed:"檔案內容顯示在上方的差異檢視中"},PS={title:"互動式提示",waiting:"等待您在 CLI 中回應",instruction:"請在 Claude 執行的終端機中選擇一個選項。",selectedOption:"✓ Claude 選擇了選項 {{number}}",instructionDetail:"在 CLI 中,您可以使用方向鍵或輸入數字來互動式地選擇此選項。"},AS={title:"思考中...",emoji:"💭 思考中..."},jS={response:"JSON 回應"},TS={grant:"授予 {{tool}} 權限",added:"權限已新增",addTo:"將 {{entry}} 加入允許的工具。",retry:"權限已儲存。重試請求以使用該工具。",error:"無法更新權限。請重試。",openSettings:"開啟設定"},IS={updated:"待辦清單已成功更新",current:"目前待辦清單"},ES={viewPlan:"📋 查看實作計畫",title:"實作計畫"},MS={resetAt:"Claude 使用限制已達到。您的限制將在 **{{time}} {{timezone}}** - {{date}} 重置"},zS={permissionMode:"權限模式",modes:{default:"預設模式",auto:"自動模式",acceptEdits:"編輯模式",bypassPermissions:"無限制模式",plan:"計畫模式"},descriptions:{default:"只有受信任的指令(ls、cat、grep、git status 等)自動執行。其他指令將被略過。可以寫入工作區。",auto:"由模型分類器針對每次工具呼叫決定核准或拒絕。免手動操作,但比 Bypass 安全——仍可能發生拒絕。",acceptEdits:"工作區內的所有指令自動執行。完全自動模式,具有沙箱執行功能。",bypassPermissions:"完全的系統存取,無限制。所有指令自動執行,具有完整的磁碟和網路存取權限。請謹慎使用。",plan:"計畫模式 - 不執行任何指令"},technicalDetails:"技術細節"},DS={placeholder:"輸入 / 叫用指令,@ 選取檔案,或向 {{provider}} 提問...",placeholderDefault:"輸入您的訊息...",disabled:"輸入已停用",attachFiles:"附加檔案",attachImages:"附加圖片",send:"傳送",stop:"停止",hintText:{ctrlEnter:"Ctrl+Enter 傳送 • Shift+Enter 換行 • Tab 切換模式 • / 斜線指令",enter:"Enter 傳送 • Shift+Enter 換行 • Tab 切換模式 • / 斜線指令"},clickToChangeMode:"點擊變更權限模式(或在輸入框中按 Tab)",showAllCommands:"顯示所有指令",clearInput:"清空輸入",scrollToBottom:"捲動到底部"},NS={selector:{title:"思考模式",description:"延伸思考讓 Claude 有更多時間來評估替代方案",active:"啟用",tip:"更高的思考模式需要更多時間,但提供更徹底的分析"},modes:{none:{name:"標準",description:"一般 Claude 回應",prefix:""},think:{name:"思考",description:"基本延伸思考",prefix:"思考"},thinkHard:{name:"深入思考",description:"更徹底的評估",prefix:"深入思考"},thinkHarder:{name:"更深入思考",description:"考慮替代方案的深度分析",prefix:"更深入思考"},ultrathink:{name:"超級思考",description:"最大思考預算",prefix:"超級思考"}},buttonTitle:"思考模式:{{mode}}"},$S={title:"選擇您的 AI 助手",description:"選擇一個提供者以開始新對話",selectModel:"選擇模型",providerInfo:{anthropic:"由 Anthropic 提供",openai:"由 OpenAI 提供",cursorEditor:"AI 程式碼編輯器",google:"由 Google 提供"},readyPrompt:{claude:"準備好使用 {{model}} 的 Claude。請在下方開始輸入您的訊息。",cursor:"準備好使用 {{model}} 的 Cursor。請在下方開始輸入您的訊息。",codex:"準備好使用 {{model}} 的 Codex。請在下方開始輸入您的訊息。",default:"請在上方選擇一個提供者以開始"},pressToSearch:"按 <kbd>{{shortcut}}</kbd> 搜尋工作階段、檔案和提交"},RS={continue:{title:"繼續您的對話",description:"詢問有關程式碼的問題、要求修改或取得開發任務的協助"},loading:{olderMessages:"正在載入較早的訊息...",sessionMessages:"正在載入工作階段訊息..."},messages:{showingOf:"顯示 {{shown}} / {{total}} 則訊息",scrollToLoad:"向上捲動以載入更多",showingLast:"顯示最近 {{count}} 則訊息(共 {{total}} 則)",loadEarlier:"載入較早的訊息",loadAll:"載入全部訊息",loadingAll:"正在載入全部訊息...",allLoaded:"全部訊息已載入",perfWarning:"已載入全部訊息 - 捲動可能變慢。點擊「捲動到底部」恢復效能。"}},LS={selectProject:{title:"選擇專案",description:"選擇一個專案以在該目錄中開啟互動式 Shell"},status:{newSession:"新工作階段",initializing:"初始化中...",restarting:"重新啟動中..."},actions:{disconnect:"中斷連線",disconnectTitle:"中斷 Shell 連線",restart:"重新啟動",restartTitle:"重新啟動 Shell(請先中斷連線)",connect:"在 Shell 中繼續",connectTitle:"連線到 Shell"},loading:"正在載入終端機...",connecting:"正在連線到 Shell...",startSession:"啟動新的 Claude 工作階段",resumeSession:"恢復工作階段:{{displayName}}...",runCommand:"在 {{projectName}} 中執行 {{command}}",startCli:"在 {{projectName}} 中啟動 Claude CLI",defaultCommand:"指令"},FS={actions:{thinking:"思考中",processing:"處理中",analyzing:"分析中",working:"執行中",computing:"運算中",reasoning:"推理中"},state:{live:"進行中",paused:"已暫停"},elapsed:{seconds:"{{count}} 秒",minutesSeconds:"{{minutes}} 分 {{seconds}} 秒",label:"已過 {{time}}",startingNow:"正要開始"},controls:{stopGeneration:"停止生成",pressEscToStop:"隨時按 Esc 即可停止"},providers:{assistant:"助理"}},BS={startChatWithProvider:"選擇一個專案以開始與 {{provider}} 聊天"},GS={nextTaskPrompt:"開始下一個任務"},HS={codeBlock:kS,copyMessage:xS,messageTypes:yS,tools:wS,search:CS,fileOperations:SS,interactive:PS,thinking:AS,json:jS,permissions:TS,todo:IS,plan:ES,usageLimit:MS,codex:zS,input:DS,thinkingMode:NS,providerSelection:$S,session:RS,shell:LS,claudeStatus:FS,projectSelection:BS,tasks:GS},OS={changes:"個變更",previousChange:"上一個變更",nextChange:"下一個變更",hideDiff:"隱藏差異醒目提示",showDiff:"顯示差異醒目提示",settings:"編輯器設定",collapse:"收合編輯器",expand:"展開編輯器到全寬"},US="正在載入 {{fileName}}...",qS={showingChanges:"顯示變更"},WS={copyPath:"複製檔案路徑",pathCopied:"已複製檔案路徑",download:"下載檔案",save:"儲存",saving:"儲存中...",saved:"已儲存!",exitFullscreen:"離開全螢幕",fullscreen:"全螢幕",close:"關閉"},VS={lines:"行數:",characters:"字元數:",shortcuts:"按 Ctrl+S 儲存 • Esc 關閉"},KS={title:"二進位檔案",message:"檔案「{{fileName}}」無法在文字編輯器中顯示,因為它是二進位檔案。"},_S={toolbar:OS,loading:US,header:qS,actions:WS,footer:VS,binaryFile:KS},YS={title:"TaskMaster AI 尚未設定",description:"TaskMaster 協助將複雜的專案分解為可管理的任務,搭配 AI 驅動的輔助功能",whatIsTitle:"🎯 什麼是 TaskMaster?",features:{aiPowered:"AI 驅動的任務管理:將複雜專案分解為可管理的子任務",prdTemplates:"PRD 範本:從產品需求文件產生任務",dependencyTracking:"相依性追蹤:了解任務關係和執行順序",progressVisualization:"進度視覺化:看板和詳細的任務分析",cliIntegration:"CLI 整合:使用 taskmaster 指令進行進階工作流程"},initializeButton:"初始化 TaskMaster AI"},JS={title:"開始使用 TaskMaster",subtitle:"TaskMaster 已初始化!以下是接下來要做的事:",steps:{createPRD:{title:"建立產品需求文件(PRD)",description:"討論您的專案構想並建立描述您想建立什麼的 PRD。",addButton:"新增 PRD",existingPRDs:"現有的 PRD:"},generateTasks:{title:"從 PRD 產生任務",description:"一旦您有了 PRD,請 AI 助手解析它,TaskMaster 將自動將其分解為可管理的任務,包含實作細節。"},analyzeTasks:{title:"分析並展開任務",description:"請 AI 助手分析任務複雜度,並將其展開為詳細的子任務以便於實作。"},startBuilding:{title:"開始建構",description:"請 AI 助手開始處理任務、更新狀態,並在專案演進時新增任務。"}},tip:"💡 提示:從 PRD 開始可以充分利用 TaskMaster 的 AI 驅動任務產生功能"},QS={title:"TaskMaster 設定",subtitle:"{{projectName}} 的互動式 CLI",willStart:"TaskMaster 初始化將自動開始",completed:"TaskMaster 設定完成!您現在可以關閉此視窗。",closeButton:"關閉",closeContinueButton:"關閉並繼續"},ZS={title:"開始使用 TaskMaster",subtitle:"您的高效任務管理指南",examples:{parsePRD:`💬 範例:
|
|
32
|
+
"Per favore aggiungi una nuova attività per implementare il caricamento delle immagini profilo utente usando Cloudinary, ricerca l'approccio migliore."`},moreExamples:"Vedi altri esempi e pattern di utilizzo →",proTips:{title:"💡 Suggerimenti pro",search:"Usa la barra di ricerca per trovare rapidamente attività specifiche",views:"Passa tra le viste Kanban, Lista e Griglia usando i selettori di vista",filters:"Usa i filtri per concentrarti su stati o priorità specifiche delle attività",details:"Clicca su qualsiasi attività per vedere informazioni dettagliate e gestire le sotto-attività"},learnMore:{title:"📚 Per saperne di più",description:"TaskMaster AI è un sistema avanzato di gestione attività pensato per sviluppatori. Trova documentazione, esempi e contribuisci al progetto.",githubButton:"Vedi su GitHub"}},kC={placeholder:"Cerca attività..."},xC={button:"Filtri",status:"Stato",priority:"Priorità",sortBy:"Ordina per",allStatuses:"Tutti gli stati",allPriorities:"Tutte le priorità",showing:"Visualizzate {{filtered}} di {{total}} attività",clearFilters:"Cancella filtri"},yC={id:"ID",status:"Stato",priority:"Priorità",idAsc:"ID (crescente)",idDesc:"ID (decrescente)",titleAsc:"Titolo (A-Z)",titleDesc:"Titolo (Z-A)",statusAsc:"Stato (in attesa prima)",statusDesc:"Stato (completati prima)",priorityAsc:"Priorità (alta prima)",priorityDesc:"Priorità (bassa prima)"},wC={kanban:"Vista Kanban",list:"Vista lista",grid:"Vista griglia"},CC={pending:"📋 Da fare",inProgress:"🚀 In corso",done:"✅ Completate",blocked:"🚫 Bloccate",deferred:"⏳ Rimandate",cancelled:"❌ Annullate",noTasksYet:"Nessuna attività",tasksWillAppear:"Le attività appariranno qui",moveTasksHere:"Sposta le attività qui quando iniziate",completedTasksHere:"Le attività completate appariranno qui",statusTasksHere:"Le attività con questo stato appariranno qui"},SC={help:"Guida introduttiva TaskMaster",prds:"PRD",addPRD:"Aggiungi PRD",addTask:"Aggiungi attività",createNewPRD:"Crea nuovo PRD",prdsAvailable:"{{count}} PRD disponibili"},PC={modified:"Modificato: {{date}}"},AC={pending:"In attesa","in-progress":"In corso",done:"Completata",blocked:"Bloccata",deferred:"Rimandata",cancelled:"Annullata"},jC={high:"Alta",medium:"Media",low:"Bassa"},TC={title:"Nessuna attività corrisponde ai filtri",description:"Prova a modificare la ricerca o i criteri di filtro."},IC={notConfigured:hC,gettingStarted:fC,setupModal:bC,helpGuide:vC,search:kC,filters:xC,sort:yC,views:wC,kanban:CC,buttons:SC,prd:PC,statuses:AC,priorities:jC,noMatchingTasks:TC},EC={save:"儲存",cancel:"取消",delete:"刪除",create:"建立",edit:"編輯",close:"關閉",confirm:"確認",submit:"送出",retry:"重試",refresh:"重新整理",search:"搜尋",clear:"清除",copy:"複製",download:"下載",upload:"上傳",browse:"瀏覽"},MC={chat:"聊天",shell:"終端機",files:"檔案",git:"版本控制",tasks:"任務",browser:"瀏覽器",computer:"電腦"},zC={loading:"載入中...",success:"成功",error:"錯誤",failed:"失敗",pending:"待處理",completed:"已完成",inProgress:"進行中"},DC={savedSuccessfully:"儲存成功",deletedSuccessfully:"刪除成功",updatedSuccessfully:"更新成功",operationFailed:"操作失敗",networkError:"網路錯誤,請檢查您的連線。",unauthorized:"未授權,請登入。",notFound:"找不到",invalidInput:"輸入無效",requiredField:"此欄位為必填",unknownError:"發生未知錯誤"},NC={settings:"設定",home:"首頁",back:"返回",next:"下一步",previous:"上一步",logout:"登出"},$C={language:"語言",theme:"佈景主題",darkMode:"深色模式",lightMode:"淺色模式",name:"名稱",description:"描述",enabled:"已啟用",disabled:"已停用",optional:"選填",version:"版本",select:"選取",selectAll:"全選",deselectAll:"取消全選"},RC={justNow:"剛剛",minutesAgo:"{{count}} 分鐘前",hoursAgo:"{{count}} 小時前",daysAgo:"{{count}} 天前",yesterday:"昨天"},LC={newFile:"新增檔案",newFolder:"新增資料夾",rename:"重新命名",move:"移動",copyPath:"複製路徑",openInEditor:"在編輯器中開啟"},FC={loading:"正在載入 WindCli",settingUpWorkspace:"正在設定您的工作區...",chooseProject:"選擇您的專案",selectProjectDescription:"從側邊欄選擇一個專案以開始使用 Claude 進行程式開發。每個專案包含您的聊天紀錄和檔案歷史。",tip:"提示",createProjectMobile:"點擊上方的選單按鈕以存取專案",createProjectDesktop:"點擊側邊欄中的資料夾圖示以建立新專案",newSession:"新工作階段",untitledSession:"未命名工作階段",projectFiles:"專案檔案"},BC={loading:"正在載入檔案...",files:"檔案",simpleView:"簡易檢視",compactView:"精簡檢視",detailedView:"詳細檢視",searchPlaceholder:"搜尋檔案和資料夾...",clearSearch:"清除搜尋",name:"名稱",size:"大小",modified:"修改時間",permissions:"權限",noFilesFound:"找不到檔案",checkProjectPath:"請檢查專案路徑是否可存取",noMatchesFound:"找不到符合項目",tryDifferentSearch:"嘗試不同的搜尋詞或清除搜尋",justNow:"剛剛",minAgo:"{{count}} 分鐘前",hoursAgo:"{{count}} 小時前",daysAgo:"{{count}} 天前",newFile:"新增檔案 (Cmd+N)",newFolder:"新增資料夾 (Cmd+Shift+N)",refresh:"重新整理",collapseAll:"全部收合",context:{rename:"重新命名",delete:"刪除",copyPath:"複製路徑",download:"下載",newFile:"新增檔案",newFolder:"新增資料夾",upload:"上傳檔案",refresh:"重新整理",menuLabel:"檔案右鍵選單",loading:"載入中..."}},GC={title:"建立新專案",steps:{type:"類型",configure:"設定",confirm:"確認"},step1:{question:"您已經有工作區,還是想建立一個新的工作區?",existing:{title:"現有工作區",description:"我的伺服器上已經有工作區,只需要將其加入專案列表"},new:{title:"新建工作區",description:"建立新工作區,可選擇從 GitHub 儲存庫複製"}},step2:{existingPath:"工作區路徑",newPath:"工作區路徑",existingPlaceholder:"/path/to/existing/workspace",newPlaceholder:"/path/to/new/workspace",existingHelp:"您現有工作區目錄的完整路徑",newHelp:"工作區目錄的完整路徑",githubUrl:"GitHub URL(選填)",githubPlaceholder:"https://github.com/username/repository",githubHelp:"選填:提供 GitHub URL 以複製儲存庫",githubAuth:"GitHub 身分驗證(選填)",githubAuthHelp:"僅私有儲存庫需要。公開儲存庫無需身分驗證即可複製。",loadingTokens:"正在載入已儲存的權杖...",storedToken:"已儲存的權杖",newToken:"新權杖",nonePublic:"無(公開)",selectToken:"選取權杖",selectTokenPlaceholder:"-- 選取權杖 --",tokenPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",tokenHelp:"此權杖僅用於此操作",publicRepoInfo:"公開儲存庫不需要身分驗證。如果複製公開儲存庫,可以略過提供權杖。",noTokensHelp:"沒有可用的已儲存權杖。您可以在 設定 → API 金鑰 中新增權杖以便重複使用。",optionalTokenPublic:"GitHub 權杖(公開儲存庫可選)",tokenPublicPlaceholder:"ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(公開儲存庫可留空)"},step3:{reviewConfig:"檢閱您的設定",existingWorkspace:"現有工作區",newWorkspace:"新建工作區",path:"路徑:",cloneFrom:"複製自:",authentication:"身分驗證:",usingStoredToken:"使用已儲存的權杖:",usingProvidedToken:"使用提供的權杖",noAuthentication:"無身分驗證",sshKey:"SSH 金鑰",existingInfo:"工作區將加入您的專案列表,並可用於 Claude/Cursor 工作階段。",newWithClone:"儲存庫將從此資料夾複製。",newEmpty:"工作區將加入您的專案列表,並可用於 Claude/Cursor 工作階段。",cloningRepository:"正在複製儲存庫..."},buttons:{cancel:"取消",back:"返回",next:"下一步",createProject:"建立專案",creating:"建立中...",cloning:"正在複製..."},errors:{selectType:"請選擇您已有現有工作區還是想建立新工作區",providePath:"請提供工作區路徑",failedToCreate:"建立工作區失敗",failedToCreateFolder:"建立資料夾失敗"}},HC={genericTool:"工具",codes:{generic:{info:{title:"通知"}},permission:{required:{title:"需要處理",body:"{{toolName}} 正在等待你的決定。"}},run:{stopped:{title:"執行已停止",body:"原因:{{reason}}"},failed:{title:"執行失敗"}},agent:{notification:{title:"Agent 通知"}}}},OC={title:"有可用更新",newVersionReady:"新版本已準備就緒",currentVersion:"目前版本",latestVersion:"最新版本",whatsNew:"新功能:",viewFullRelease:"查看完整發行說明",updateProgress:"更新進度:",manualUpgrade:"手動升級:",npmUpgradeCommand:"npm install -g wind-agent-cli@latest",manualUpgradeHint:"或點擊「立即更新」以自動執行更新。",updateCompleted:"更新成功完成!",restartServer:"請重新啟動伺服器以套用變更。",updateFailed:"更新失敗",buttons:{close:"關閉",later:"稍後",copyCommand:"複製指令",updateNow:"立即更新",updating:"更新中..."},ariaLabels:{closeModal:"關閉版本升級對話框",showSidebar:"顯示側邊欄",settings:"設定",updateAvailable:"有可用更新",closeSidebar:"關閉側邊欄"}},UC={buttons:EC,tabs:MC,status:zC,messages:DC,navigation:NC,common:$C,time:RC,fileOperations:LC,mainContent:FC,fileTree:BC,projectWizard:GC,notifications:HC,versionUpdate:OC},qC="設定",WC={account:"帳戶",permissions:"權限",mcpServers:"MCP 伺服器",appearance:"外觀"},VC={title:"帳戶",language:"語言",languageLabel:"顯示語言",languageDescription:"選擇您偏好的介面語言",username:"使用者名稱",email:"電子郵件",profile:"個人檔案",changePassword:"變更密碼"},KC={title:"MCP 伺服器",addServer:"新增伺服器",editServer:"編輯伺服器",deleteServer:"刪除伺服器",serverName:"伺服器名稱",serverType:"伺服器類型",config:"設定",testConnection:"測試連線",status:"狀態",connected:"已連線",disconnected:"未連線",scope:{label:"範圍",user:"使用者",project:"專案"}},_C={title:"外觀",theme:"佈景主題",codeEditor:"程式碼編輯器",editorTheme:"編輯器佈景主題",wordWrap:"自動換行",showMinimap:"顯示縮圖",lineNumbers:"行號",fontSize:"字型大小"},YC={saveChanges:"儲存變更",resetToDefaults:"重設為預設值",cancelChanges:"取消變更"},JC={title:"快速設定",sections:{appearance:"外觀",toolDisplay:"工具顯示",inputSettings:"輸入設定"},darkMode:"深色模式",showRawParameters:"顯示原始參數",showThinking:"顯示思考過程",sendByCtrlEnter:"使用 Ctrl+Enter 傳送",sendByCtrlEnterDescription:"啟用後,按 Ctrl+Enter 傳送訊息,而不是僅按 Enter。這對於使用輸入法的使用者可以避免意外傳送。",dragHandle:{dragging:"正在拖曳手柄",closePanel:"關閉設定面板",openPanel:"開啟設定面板",draggingStatus:"正在拖曳...",toggleAndMove:"點擊切換,拖曳移動"}},QC={title:"終端機快速鍵",sectionKeys:"按鍵",sectionNavigation:"導覽",escape:"Escape",tab:"Tab",shiftTab:"Shift+Tab",arrowUp:"向上箭頭",arrowDown:"向下箭頭",scrollDown:"捲動到底部",handle:{closePanel:"關閉快速鍵面板",openPanel:"開啟快速鍵面板"}},ZC={label:"設定",agents:"智慧代理",appearance:"外觀",git:"Git",apiTokens:"API 和權杖",tasks:"任務",computer:"電腦使用",notifications:"通知",plugins:"外掛",about:"關於"},XC={title:"通知",description:"控制你希望接收的通知事件。",webPush:{title:"Web 推播通知",enable:"啟用推播通知",disable:"關閉推播通知",enabled:"推播通知已啟用",loading:"更新中...",unsupported:"此瀏覽器不支援推播通知。",denied:"推播通知已被封鎖,請在瀏覽器設定中允許。"},sound:{title:"聲音",description:"聊天執行完成時播放短提示音。",enabled:"已啟用",test:"測試聲音"},events:{title:"事件類型",actionRequired:"需要處理",stop:"執行已停止",error:"執行失敗"}},eS={darkMode:{label:"深色模式",description:"切換淺色和深色佈景主題"},projectSorting:{label:"專案排序",description:"專案在側邊欄中的排列方式",alphabetical:"依字母順序",recentActivity:"最近活動"},codeEditor:{title:"程式碼編輯器",theme:{label:"編輯器佈景主題",description:"程式碼編輯器的預設佈景主題"},wordWrap:{label:"自動換行",description:"在編輯器中預設啟用自動換行"},showMinimap:{label:"顯示縮圖",description:"在差異檢視中顯示縮圖以便於導覽"},lineNumbers:{label:"顯示行號",description:"在編輯器中顯示行號"},fontSize:{label:"字型大小",description:"編輯器字型大小(px)"}}},tS={title:{add:"新增 MCP 伺服器",edit:"編輯 MCP 伺服器"},importMode:{form:"表單輸入",json:"JSON 匯入"},scope:{label:"範圍",userGlobal:"使用者(全域)",projectLocal:"專案(本機)",userDescription:"使用者範圍:在您機器上的所有專案中可用",projectDescription:"本機範圍:僅在選定專案中可用",cannotChange:"編輯現有伺服器時無法變更範圍"},fields:{serverName:"伺服器名稱",transportType:"傳輸類型",command:"指令",arguments:"參數(每行一個)",jsonConfig:"JSON 設定",url:"URL",envVars:"環境變數(KEY=值,每行一個)",headers:"標頭(KEY=值,每行一個)",selectProject:"選取專案..."},placeholders:{serverName:"我的服務"},validation:{missingType:"缺少必填欄位:type",stdioRequiresCommand:"stdio 類型需要 command 欄位",httpRequiresUrl:"{{type}} 類型需要 url 欄位",invalidJson:"無效的 JSON 格式",jsonHelp:"貼上您的 MCP 伺服器設定(JSON 格式)。範例格式:",jsonExampleStdio:'• stdio: {"type":"stdio","command":"npx","args":["@upstash/context7-mcp"]}',jsonExampleHttp:'• http/sse: {"type":"http","url":"https://api.example.com/mcp"}'},configDetails:"設定詳細資訊(來自 {{configFile}})",projectPath:"路徑:{{path}}",actions:{cancel:"取消",saving:"儲存中...",addServer:"新增伺服器",updateServer:"更新伺服器"}},nS={success:"設定儲存成功!",error:"儲存設定失敗",saving:"儲存中..."},sS={save:"儲存設定",cancel:"取消"},iS={title:"Git 設定",description:"設定您的 git 提交身分。這些設定將透過 git config --global 全域套用",name:{label:"Git 名稱",help:"您的 git 提交名稱"},email:{label:"Git 電子郵件",help:"您的 git 提交電子郵件"},actions:{save:"儲存設定",saving:"儲存中..."},status:{success:"儲存成功"}},aS={title:"API 金鑰",description:"產生 API 金鑰以從其他應用程式存取外部 API。",newKey:{alertTitle:"⚠️ 儲存您的 API 金鑰",alertMessage:"這是您唯一一次看到此金鑰。請妥善保存。",iveSavedIt:"我已儲存"},form:{placeholder:"API 金鑰名稱(例如:正式伺服器)",createButton:"建立",cancelButton:"取消"},newButton:"新增 API 金鑰",empty:"尚未建立 API 金鑰。",list:{created:"建立時間:",lastUsed:"最後使用:"},confirmDelete:"確定要刪除此 API 金鑰嗎?",status:{active:"啟用",inactive:"未啟用"},github:{title:"GitHub 權杖",description:"新增 GitHub 個人存取權杖以透過外部 API 複製私有儲存庫。",descriptionAlt:"新增 GitHub 個人存取權杖以複製私有儲存庫。您也可以直接在 API 請求中傳遞權杖而無需儲存。",addButton:"新增權杖",form:{namePlaceholder:"權杖名稱(例如:個人儲存庫)",tokenPlaceholder:"GitHub 個人存取權杖(ghp_...)",descriptionPlaceholder:"描述(選填)",addButton:"新增權杖",cancelButton:"取消",howToCreate:"如何建立 GitHub 個人存取權杖 →"},empty:"尚未新增 GitHub 權杖。",added:"新增時間:",confirmDelete:"確定要刪除此 GitHub 權杖嗎?"},apiDocsLink:"API 文件",documentation:{title:"外部 API 文件",description:"了解如何使用外部 API 從您的應用程式觸發 Claude/Cursor 工作階段。",viewLink:"查看 API 文件 →"},loading:"載入中...",version:{updateAvailable:"有可用更新:v{{version}}"}},oS={checking:"正在檢查 TaskMaster 安裝...",notInstalled:{title:"未安裝 TaskMaster AI CLI",description:"需要 TaskMaster CLI 才能使用任務管理功能。安裝它以開始使用:",installCommand:"npm install -g task-master-ai",viewOnGitHub:"在 GitHub 上查看",afterInstallation:"安裝後:",steps:{restart:"重新啟動此應用程式",autoAvailable:"TaskMaster 功能將自動啟用",initCommand:"在專案目錄中使用 task-master init"}},settings:{enableLabel:"啟用 TaskMaster 整合",enableDescription:"在整個介面中顯示 TaskMaster 任務、橫幅和側邊欄指示器"}},rS={authStatus:{checking:"檢查中...",connected:"已連線",notConnected:"未連線",disconnected:"已中斷連線",checkingAuth:"正在檢查驗證狀態...",loggedInAs:"登入為 {{email}}",authenticatedUser:"已驗證使用者"},account:{claude:{description:"Anthropic Claude AI 助手"},cursor:{description:"Cursor AI 驅動的程式碼編輯器"},codex:{description:"OpenAI Codex AI 助手"}},connectionStatus:"連線狀態",login:{title:"登入",reAuthenticate:"重新驗證",description:"登入您的 {{agent}} 帳戶以啟用 AI 功能",reAuthDescription:"使用其他帳戶登入或重新整理憑證",button:"登入",reLoginButton:"重新登入"},error:"錯誤:{{error}}"},lS={title:"權限設定",skipPermissions:{label:"略過權限提示(請謹慎使用)",claudeDescription:"等同於 --dangerously-skip-permissions 旗標",cursorDescription:"等同於 Cursor CLI 中的 -f 旗標"},allowedTools:{title:"允許的工具",description:"無需權限提示即可自動使用的工具",placeholder:'例如:"Bash(git log:*)" 或 "Write"',quickAdd:"快速新增常用工具:",empty:"未設定允許的工具"},blockedTools:{title:"停用的工具",description:"無需權限提示即可自動停用的工具",placeholder:'例如:"Bash(rm:*)"',empty:"未設定停用的工具"},allowedCommands:{title:"允許的 Shell 指令",description:"無需權限提示即可自動執行的 Shell 指令",placeholder:'例如:"Shell(ls)" 或 "Shell(git status)"',quickAdd:"快速新增常用指令:",empty:"未設定允許的指令"},blockedCommands:{title:"封鎖的 Shell 指令",description:"自動封鎖的 Shell 指令",placeholder:'例如:"Shell(rm -rf)" 或 "Shell(sudo)"',empty:"未設定封鎖的指令"},toolExamples:{title:"工具模式範例:",bashGitLog:"- 允許所有 git log 指令",bashGitDiff:"- 允許所有 git diff 指令",write:"- 允許所有 Write 工具使用",bashRm:"- 封鎖所有 rm 指令(危險)"},shellExamples:{title:"Shell 指令範例:",ls:"- 允許 ls 指令",gitStatus:"- 允許 git status",npmInstall:"- 允許 npm install",rmRf:"- 封鎖遞迴刪除"},codex:{permissionMode:"權限模式",description:"控制 Codex 如何處理檔案修改和指令執行",modes:{default:{title:"預設",description:"只有受信任的指令(ls、cat、grep、git status 等)會自動執行。其他指令將被略過。可以寫入工作區。"},acceptEdits:{title:"接受編輯",description:"所有指令在工作區內自動執行。具有沙箱執行的全自動模式。"},bypassPermissions:{title:"略過權限",description:"完全系統存取,無任何限制。所有指令自動執行,具有完整的磁碟和網路存取權限。請謹慎使用。"}},technicalDetails:"技術詳情",technicalInfo:{default:"sandboxMode=workspace-write, approvalPolicy=untrusted。受信任的指令:cat、cd、grep、head、ls、pwd、tail、git status/log/diff/show、find(不帶 -exec)等。",acceptEdits:"sandboxMode=workspace-write, approvalPolicy=never。所有指令在專案目錄內自動執行。",bypassPermissions:"sandboxMode=danger-full-access, approvalPolicy=never。完全系統存取權限,僅在可信環境中使用。",overrideNote:"您可以使用聊天介面中的模式按鈕按工作階段覆蓋此設定。"}},actions:{add:"新增"}},cS={title:"MCP 伺服器",description:{claude:"Model Context Protocol 伺服器為 Claude 提供額外的工具和資料來源",cursor:"Model Context Protocol 伺服器為 Cursor 提供額外的工具和資料來源",codex:"Model Context Protocol 伺服器為 Codex 提供額外的工具和資料來源"},addButton:"新增 MCP 伺服器",empty:"未設定 MCP 伺服器",serverType:"類型",scope:{local:"本機",user:"使用者"},config:{command:"指令",url:"URL",args:"參數",environment:"環境變數"},tools:{title:"工具",count:"({{count}}):",more:"還有 {{count}} 個"},actions:{edit:"編輯伺服器",delete:"刪除伺服器"},help:{title:"關於 Codex MCP",description:"Codex 支援基於 stdio 的 MCP 伺服器。您可以新增伺服器,透過額外的工具和資源來擴充 Codex 的功能。"}},dS={title:"外掛",description:"透過自訂外掛擴充介面。從 git 安裝或直接將資料夾放入 ~/.claude-code-ui/plugins/",installPlaceholder:"https://github.com/user/my-plugin",installButton:"安裝",installing:"安裝中…",securityWarning:"僅安裝您已審查過原始碼或信任作者的外掛。",scanningPlugins:"正在掃描外掛…",noPluginsInstalled:"未安裝外掛",pullLatest:"從 git 拉取最新內容",noGitRemote:"無 git 遠端儲存庫 — 無法更新",uninstallPlugin:"解除安裝外掛",confirmUninstall:"再次點擊確認",confirmUninstallMessage:"移除 {{name}}?此操作無法復原。",cancel:"取消",remove:"移除",updateFailed:"更新失敗",installFailed:"安裝失敗",uninstallFailed:"解除安裝失敗",toggleFailed:"切換失敗",buildYourOwn:"建立您自己的外掛",starter:"入門範本",docs:"文件",starterPlugin:{name:"專案統計",badge:"入門",description:"查看專案的檔案數、程式碼行數、檔案類型分佈以及最近活動。",install:"安裝"},morePlugins:"更多",enable:"啟用",disable:"停用",installAriaLabel:"外掛 git 儲存庫 URL",tab:"分頁",runningStatus:"執行中"},uS={title:qC,tabs:WC,account:VC,mcp:KC,appearance:_C,actions:YC,quickSettings:JC,terminalShortcuts:QC,mainTabs:ZC,notifications:XC,appearanceSettings:eS,mcpForm:tS,saveStatus:nS,footerActions:sS,git:iS,apiKeys:aS,tasks:oS,agents:rS,permissions:lS,mcpServers:cS,pluginSettings:dS},pS={title:"歡迎回來",description:"登入您的 WindCli 帳戶",username:"使用者名稱",password:"密碼",submit:"登入",loading:"登入中...",errors:{invalidCredentials:"使用者名稱或密碼無效",requiredFields:"請填寫所有欄位",networkError:"網路錯誤,請重試。"},placeholders:{username:"輸入您的使用者名稱",password:"輸入您的密碼"}},mS={title:"建立帳戶",username:"使用者名稱",password:"密碼",confirmPassword:"確認密碼",submit:"建立帳戶",loading:"建立帳戶中...",errors:{passwordMismatch:"密碼不一致",usernameTaken:"使用者名稱已被使用",weakPassword:"密碼強度太弱"}},gS={title:"登出",confirm:"確定要登出嗎?",button:"登出"},hS={login:pS,register:mS,logout:gS},fS={title:"專案",newProject:"新增專案",deleteProject:"移除專案",renameProject:"重新命名專案",noProjects:"找不到專案",loadingProjects:"載入專案中...",searchPlaceholder:"搜尋專案...",projectNamePlaceholder:"專案名稱",starred:"星號標記",all:"全部",untitledSession:"未命名工作階段",newSession:"新工作階段",codexSession:"Codex 工作階段",fetchingProjects:"正在取得您的 Claude 專案和工作階段",projects:"專案",noMatchingProjects:"找不到符合的專案",tryDifferentSearch:"嘗試調整您的搜尋詞",runClaudeCli:"在專案目錄中執行 Claude CLI 以開始使用"},bS={title:"WindCli",subtitle:"AI 程式開發助手"},vS={title:"工作階段",newSession:"新增工作階段",deleteSession:"刪除工作階段",renameSession:"重新命名工作階段",noSessions:"暫無工作階段",loadingSessions:"載入工作階段中...",unnamed:"未命名",loading:"載入中...",showMore:"顯示更多工作階段"},kS={viewEnvironments:"查看環境",hideSidebar:"隱藏側邊欄",createProject:"建立新專案",refresh:"重新整理專案和工作階段 (Ctrl+R)",renameProject:"重新命名專案 (F2)",deleteProject:"從側邊欄移除專案 (Delete)",addToFavorites:"加入收藏",removeFromFavorites:"從收藏移除",editSessionName:"手動編輯工作階段名稱",deleteSession:"永久刪除此工作階段",save:"儲存",cancel:"取消",clearSearch:"清除搜尋",openCommandPalette:"開啟指令面板",attentionRequiredIndicator:"工作階段需要處理"},xS={chat:"聊天",files:"檔案",git:"Git",terminal:"終端機",tasks:"任務"},yS={refresh:"重新整理",settings:"設定",collapseAll:"全部收合",expandAll:"全部展開",cancel:"取消",save:"儲存",delete:"刪除",rename:"重新命名",joinCommunity:"加入社群",reportIssue:"回報問題",starOnGithub:"在 GitHub 上加星"},wS={openSource:"開源"},CS={active:"使用中",inactive:"非使用中",thinking:"思考中...",error:"錯誤",aborted:"已中止",unknown:"未知"},SS={justNow:"剛剛",oneMinuteAgo:"1 分鐘前",minutesAgo:"{{count}} 分鐘前",oneHourAgo:"1 小時前",hoursAgo:"{{count}} 小時前",oneDayAgo:"1 天前",daysAgo:"{{count}} 天前"},PS={deleteConfirm:"確定要刪除嗎?",renameSuccess:"重新命名成功",deleteSuccess:"刪除成功",errorOccurred:"發生錯誤",deleteSessionConfirm:"確定要刪除此工作階段嗎?此操作無法復原。",deleteProjectConfirm:"從側邊欄移除此專案?您的專案檔案、記憶和工作階段資料不會被刪除。",enterProjectPath:"請輸入專案路徑",deleteSessionFailed:"刪除工作階段失敗,請重試。",deleteSessionError:"刪除工作階段時出錯,請重試。",renameSessionFailed:"重新命名工作階段失敗,請重試。",renameSessionError:"重新命名工作階段時出錯,請重試。",deleteProjectFailed:"移除專案失敗,請重試。",deleteProjectError:"移除專案時出錯,請重試。",createProjectFailed:"建立專案失敗,請重試。",createProjectError:"建立專案時出錯,請重試。",updateProjectError:"更新專案時出錯,請重試。",refreshError:"重新整理失敗,請重試。",restoreProjectFailed:"還原專案失敗,請重試。",restoreProjectError:"還原專案時出錯,請重試。",restoreSessionFailed:"還原工作階段失敗,請重試。",restoreSessionError:"還原工作階段時出錯,請重試。"},AS={updateAvailable:"有可用更新",restartRequired:"已安裝更新 — 請重新啟動伺服器以套用"},jS={modeProjects:"專案",modeConversations:"對話",conversationsPlaceholder:"搜尋對話內容...",searching:"搜尋中...",sessionTitles:"工作階段標題",conversationContents:"對話內容",noResults:"找不到結果",tryDifferentQuery:"嘗試不同的搜尋詞",matches_one:"{{count}} 個符合",matches_other:"{{count}} 個符合",projectsScanned_one:"{{count}} 個專案已掃描",projectsScanned_other:"{{count}} 個專案已掃描"},TS={deleteProject:"移除專案",deleteSession:"刪除工作階段",confirmDelete:"您想如何處理",sessionCount_one:"此專案包含 {{count}} 個對話。",sessionCount_other:"此專案包含 {{count}} 個對話。",removeFromSidebar:"僅從側邊欄移除",deleteAllData:"永久刪除所有資料",allConversationsDeleted:"專案將從側邊欄中移除。您的檔案、記憶和工作階段資料將會保留。",cannotUndo:"您可以稍後重新新增此專案。"},IS={projects:fS,app:bS,sessions:vS,tooltips:kS,navigation:xS,actions:yS,branding:wS,status:CS,time:SS,messages:PS,version:AS,search:jS,deleteConfirmation:TS},ES={copy:"複製",copied:"已複製",copyCode:"複製程式碼"},MS={copy:"複製訊息",copied:"訊息已複製",selectFormat:"選擇複製格式",copyAsMarkdown:"複製為 Markdown",copyAsText:"複製為純文字"},zS={user:"U",error:"錯誤",tool:"工具",claude:"Claude",cursor:"Cursor",codex:"Codex"},DS={settings:"工具設定",error:"工具錯誤",result:"工具結果",viewParams:"查看輸入參數",viewRawParams:"查看原始參數",viewDiff:"查看編輯差異",creatingFile:"建立新檔案:",updatingTodo:"更新待辦事項",read:"讀取",readFile:"讀取檔案",updateTodo:"更新待辦清單",readTodo:"讀取待辦清單",searchResults:"結果"},NS={found:"找到 {{count}} 個{{type}}",file:"檔案",files:"檔案",pattern:"模式:",in:"在:"},$S={updated:"檔案更新成功",created:"檔案建立成功",written:"檔案寫入成功",diff:"差異",newFile:"新檔案",viewContent:"查看檔案內容",viewFullOutput:"查看完整輸出({{count}} 個字元)",contentDisplayed:"檔案內容顯示在上方的差異檢視中"},RS={title:"互動式提示",waiting:"等待您在 CLI 中回應",instruction:"請在 Claude 執行的終端機中選擇一個選項。",selectedOption:"✓ Claude 選擇了選項 {{number}}",instructionDetail:"在 CLI 中,您可以使用方向鍵或輸入數字來互動式地選擇此選項。"},LS={title:"思考中...",emoji:"💭 思考中..."},FS={response:"JSON 回應"},BS={grant:"授予 {{tool}} 權限",added:"權限已新增",addTo:"將 {{entry}} 加入允許的工具。",retry:"權限已儲存。重試請求以使用該工具。",error:"無法更新權限。請重試。",openSettings:"開啟設定"},GS={updated:"待辦清單已成功更新",current:"目前待辦清單"},HS={viewPlan:"📋 查看實作計畫",title:"實作計畫"},OS={resetAt:"Claude 使用限制已達到。您的限制將在 **{{time}} {{timezone}}** - {{date}} 重置"},US={permissionMode:"權限模式",modes:{default:"預設模式",auto:"自動模式",acceptEdits:"編輯模式",bypassPermissions:"無限制模式",plan:"計畫模式"},descriptions:{default:"只有受信任的指令(ls、cat、grep、git status 等)自動執行。其他指令將被略過。可以寫入工作區。",auto:"由模型分類器針對每次工具呼叫決定核准或拒絕。免手動操作,但比 Bypass 安全——仍可能發生拒絕。",acceptEdits:"工作區內的所有指令自動執行。完全自動模式,具有沙箱執行功能。",bypassPermissions:"完全的系統存取,無限制。所有指令自動執行,具有完整的磁碟和網路存取權限。請謹慎使用。",plan:"計畫模式 - 不執行任何指令"},technicalDetails:"技術細節"},qS={placeholder:"輸入 / 叫用指令,@ 選取檔案,或向 {{provider}} 提問...",placeholderDefault:"輸入您的訊息...",disabled:"輸入已停用",attachFiles:"附加檔案",attachImages:"附加圖片",send:"傳送",stop:"停止",hintText:{ctrlEnter:"Ctrl+Enter 傳送 • Shift+Enter 換行 • Tab 切換模式 • / 斜線指令",enter:"Enter 傳送 • Shift+Enter 換行 • Tab 切換模式 • / 斜線指令"},clickToChangeMode:"點擊變更權限模式(或在輸入框中按 Tab)",showAllCommands:"顯示所有指令",clearInput:"清空輸入",scrollToBottom:"捲動到底部"},WS={selector:{title:"思考模式",description:"延伸思考讓 Claude 有更多時間來評估替代方案",active:"啟用",tip:"更高的思考模式需要更多時間,但提供更徹底的分析"},modes:{none:{name:"標準",description:"一般 Claude 回應",prefix:""},think:{name:"思考",description:"基本延伸思考",prefix:"思考"},thinkHard:{name:"深入思考",description:"更徹底的評估",prefix:"深入思考"},thinkHarder:{name:"更深入思考",description:"考慮替代方案的深度分析",prefix:"更深入思考"},ultrathink:{name:"超級思考",description:"最大思考預算",prefix:"超級思考"}},buttonTitle:"思考模式:{{mode}}"},VS={title:"選擇您的 AI 助手",description:"選擇一個提供者以開始新對話",selectModel:"選擇模型",providerInfo:{anthropic:"由 Anthropic 提供",openai:"由 OpenAI 提供",cursorEditor:"AI 程式碼編輯器",google:"由 Google 提供"},readyPrompt:{claude:"準備好使用 {{model}} 的 Claude。請在下方開始輸入您的訊息。",cursor:"準備好使用 {{model}} 的 Cursor。請在下方開始輸入您的訊息。",codex:"準備好使用 {{model}} 的 Codex。請在下方開始輸入您的訊息。",default:"請在上方選擇一個提供者以開始"},pressToSearch:"按 <kbd>{{shortcut}}</kbd> 搜尋工作階段、檔案和提交"},KS={continue:{title:"繼續您的對話",description:"詢問有關程式碼的問題、要求修改或取得開發任務的協助"},loading:{olderMessages:"正在載入較早的訊息...",sessionMessages:"正在載入工作階段訊息..."},messages:{showingOf:"顯示 {{shown}} / {{total}} 則訊息",scrollToLoad:"向上捲動以載入更多",showingLast:"顯示最近 {{count}} 則訊息(共 {{total}} 則)",loadEarlier:"載入較早的訊息",loadAll:"載入全部訊息",loadingAll:"正在載入全部訊息...",allLoaded:"全部訊息已載入",perfWarning:"已載入全部訊息 - 捲動可能變慢。點擊「捲動到底部」恢復效能。"}},_S={selectProject:{title:"選擇專案",description:"選擇一個專案以在該目錄中開啟互動式 Shell"},status:{newSession:"新工作階段",initializing:"初始化中...",restarting:"重新啟動中..."},actions:{disconnect:"中斷連線",disconnectTitle:"中斷 Shell 連線",restart:"重新啟動",restartTitle:"重新啟動 Shell(請先中斷連線)",connect:"在 Shell 中繼續",connectTitle:"連線到 Shell"},loading:"正在載入終端機...",connecting:"正在連線到 Shell...",startSession:"啟動新的 Claude 工作階段",resumeSession:"恢復工作階段:{{displayName}}...",runCommand:"在 {{projectName}} 中執行 {{command}}",startCli:"在 {{projectName}} 中啟動 Claude CLI",defaultCommand:"指令"},YS={actions:{thinking:"思考中",processing:"處理中",analyzing:"分析中",working:"執行中",computing:"運算中",reasoning:"推理中"},state:{live:"進行中",paused:"已暫停"},elapsed:{seconds:"{{count}} 秒",minutesSeconds:"{{minutes}} 分 {{seconds}} 秒",label:"已過 {{time}}",startingNow:"正要開始"},controls:{stopGeneration:"停止生成",pressEscToStop:"隨時按 Esc 即可停止"},providers:{assistant:"助理"}},JS={startChatWithProvider:"選擇一個專案以開始與 {{provider}} 聊天"},QS={nextTaskPrompt:"開始下一個任務"},ZS={codeBlock:ES,copyMessage:MS,messageTypes:zS,tools:DS,search:NS,fileOperations:$S,interactive:RS,thinking:LS,json:FS,permissions:BS,todo:GS,plan:HS,usageLimit:OS,codex:US,input:qS,thinkingMode:WS,providerSelection:VS,session:KS,shell:_S,claudeStatus:YS,projectSelection:JS,tasks:QS},XS={changes:"個變更",previousChange:"上一個變更",nextChange:"下一個變更",hideDiff:"隱藏差異醒目提示",showDiff:"顯示差異醒目提示",settings:"編輯器設定",collapse:"收合編輯器",expand:"展開編輯器到全寬"},eP="正在載入 {{fileName}}...",tP={showingChanges:"顯示變更"},nP={copyPath:"複製檔案路徑",pathCopied:"已複製檔案路徑",download:"下載檔案",save:"儲存",saving:"儲存中...",saved:"已儲存!",exitFullscreen:"離開全螢幕",fullscreen:"全螢幕",close:"關閉"},sP={lines:"行數:",characters:"字元數:",shortcuts:"按 Ctrl+S 儲存 • Esc 關閉"},iP={title:"二進位檔案",message:"檔案「{{fileName}}」無法在文字編輯器中顯示,因為它是二進位檔案。"},aP={toolbar:XS,loading:eP,header:tP,actions:nP,footer:sP,binaryFile:iP},oP={title:"TaskMaster AI 尚未設定",description:"TaskMaster 協助將複雜的專案分解為可管理的任務,搭配 AI 驅動的輔助功能",whatIsTitle:"🎯 什麼是 TaskMaster?",features:{aiPowered:"AI 驅動的任務管理:將複雜專案分解為可管理的子任務",prdTemplates:"PRD 範本:從產品需求文件產生任務",dependencyTracking:"相依性追蹤:了解任務關係和執行順序",progressVisualization:"進度視覺化:看板和詳細的任務分析",cliIntegration:"CLI 整合:使用 taskmaster 指令進行進階工作流程"},initializeButton:"初始化 TaskMaster AI"},rP={title:"開始使用 TaskMaster",subtitle:"TaskMaster 已初始化!以下是接下來要做的事:",steps:{createPRD:{title:"建立產品需求文件(PRD)",description:"討論您的專案構想並建立描述您想建立什麼的 PRD。",addButton:"新增 PRD",existingPRDs:"現有的 PRD:"},generateTasks:{title:"從 PRD 產生任務",description:"一旦您有了 PRD,請 AI 助手解析它,TaskMaster 將自動將其分解為可管理的任務,包含實作細節。"},analyzeTasks:{title:"分析並展開任務",description:"請 AI 助手分析任務複雜度,並將其展開為詳細的子任務以便於實作。"},startBuilding:{title:"開始建構",description:"請 AI 助手開始處理任務、更新狀態,並在專案演進時新增任務。"}},tip:"💡 提示:從 PRD 開始可以充分利用 TaskMaster 的 AI 驅動任務產生功能"},lP={title:"TaskMaster 設定",subtitle:"{{projectName}} 的互動式 CLI",willStart:"TaskMaster 初始化將自動開始",completed:"TaskMaster 設定完成!您現在可以關閉此視窗。",closeButton:"關閉",closeContinueButton:"關閉並繼續"},cP={title:"開始使用 TaskMaster",subtitle:"您的高效任務管理指南",examples:{parsePRD:`💬 範例:
|
|
33
33
|
「我剛用 Claude Task Master 初始化了一個新專案。我有一個 PRD 在 .taskmaster/docs/prd.txt。你能幫我解析它並設定初始任務嗎?」`,expandTask:`💬 範例:
|
|
34
34
|
「任務 5 看起來很複雜。你能把它分解成子任務嗎?」`,addTask:`💬 範例:
|
|
35
|
-
「請新增一個任務來實作使用 Cloudinary 的使用者個人頭像上傳功能,研究最佳方法。」`},moreExamples:"查看更多範例和使用模式 →",proTips:{title:"💡 專業提示",search:"使用搜尋列快速找到特定任務",views:"使用檢視切換在看板、清單和網格檢視之間切換",filters:"使用篩選器聚焦特定任務狀態或優先順序",details:"點擊任何任務以查看詳細資訊和管理子任務"},learnMore:{title:"📚 了解更多",description:"TaskMaster AI 是為開發者打造的進階任務管理系統。取得文件、範例並為專案做出貢獻。",githubButton:"在 GitHub 上查看"}},
|
|
35
|
+
「請新增一個任務來實作使用 Cloudinary 的使用者個人頭像上傳功能,研究最佳方法。」`},moreExamples:"查看更多範例和使用模式 →",proTips:{title:"💡 專業提示",search:"使用搜尋列快速找到特定任務",views:"使用檢視切換在看板、清單和網格檢視之間切換",filters:"使用篩選器聚焦特定任務狀態或優先順序",details:"點擊任何任務以查看詳細資訊和管理子任務"},learnMore:{title:"📚 了解更多",description:"TaskMaster AI 是為開發者打造的進階任務管理系統。取得文件、範例並為專案做出貢獻。",githubButton:"在 GitHub 上查看"}},dP={placeholder:"搜尋任務..."},uP={button:"篩選",status:"狀態",priority:"優先順序",sortBy:"排序依據",allStatuses:"所有狀態",allPriorities:"所有優先順序",showing:"顯示 {{filtered}} / {{total}} 個任務",clearFilters:"清除篩選"},pP={id:"ID",status:"狀態",priority:"優先順序",idAsc:"ID(遞增)",idDesc:"ID(遞減)",titleAsc:"標題(A-Z)",titleDesc:"標題(Z-A)",statusAsc:"狀態(待處理優先)",statusDesc:"狀態(已完成優先)",priorityAsc:"優先順序(高優先)",priorityDesc:"優先順序(低優先)"},mP={kanban:"看板檢視",list:"清單檢視",grid:"網格檢視"},gP={pending:"📋 待辦",inProgress:"🚀 進行中",done:"✅ 已完成",blocked:"🚫 已封鎖",deferred:"⏳ 已延後",cancelled:"❌ 已取消",noTasksYet:"尚無任務",tasksWillAppear:"任務將顯示在這裡",moveTasksHere:"開始後將任務移到這裡",completedTasksHere:"已完成的任務顯示在這裡",statusTasksHere:"此狀態的任務將顯示在這裡"},hP={help:"TaskMaster 入門指南",prds:"PRD",addPRD:"新增 PRD",addTask:"新增任務",createNewPRD:"建立新 PRD",prdsAvailable:"{{count}} 個 PRD 可用"},fP={modified:"修改時間:{{date}}"},bP={pending:"待處理","in-progress":"進行中",done:"已完成",blocked:"已封鎖",deferred:"已延後",cancelled:"已取消"},vP={high:"高",medium:"中",low:"低"},kP={title:"沒有符合篩選條件的任務",description:"嘗試調整您的搜尋或篩選條件。"},xP={notConfigured:oP,gettingStarted:rP,setupModal:lP,helpGuide:cP,search:dP,filters:uP,sort:pP,views:mP,kanban:gP,buttons:hP,prd:fP,statuses:bP,priorities:vP,noMatchingTasks:kP},yP=()=>{try{const t=localStorage.getItem("userLanguage");return t&&Pn.some(s=>s.value===t)?t:"en"}catch{return"en"}};qe.use(Vt).use(ns).init({resources:{en:{common:xa,settings:qa,auth:_a,sidebar:co,chat:No,codeEditor:Oo,tasks:sr},fr:{common:br,settings:Br,auth:Ur,sidebar:sl,chat:Pl,codeEditor:zl,tasks:Kl},es:{common:rc,settings:Ec,auth:Nc,sidebar:_c,chat:vd,codeEditor:Ad,tasks:Hd},ko:{common:tu,settings:Su,auth:Tu,sidebar:Ou,chat:up,codeEditor:kp,tasks:Np},"zh-CN":{common:Yp,settings:km,auth:Cm,sidebar:Lm,chat:og,codeEditor:gg,tasks:Ig},ja:{common:Ug,settings:uh,auth:hh,sidebar:Th,chat:_h,codeEditor:tf,tasks:bf},ru:{common:Ef,settings:Zf,auth:nb,sidebar:fb,chat:Fb,codeEditor:Wb,tasks:ov},de:{common:kv,settings:Hv,auth:Wv,sidebar:ak,chat:jk,codeEditor:Nk,tasks:Yk},tr:{common:cx,settings:Mx,auth:$x,sidebar:Yx,chat:by,codeEditor:Sy,tasks:By},it:{common:Xy,settings:yw,auth:Pw,sidebar:Bw,chat:rC,codeEditor:gC,tasks:IC},"zh-TW":{common:UC,settings:uS,auth:hS,sidebar:IS,chat:ZS,codeEditor:aP,tasks:xP}},lng:yP(),fallbackLng:"en",debug:!1,ns:["common","settings","auth","sidebar","chat","codeEditor","tasks"],defaultNS:"common",keySeparator:".",nsSeparator:":",saveMissing:!1,interpolation:{escapeValue:!1},react:{useSuspense:!0,bindI18n:"languageChanged",bindI18nStore:!1},detection:{order:["localStorage"],lookupLocalStorage:"userLanguage",caches:["localStorage"]}});qe.on("languageChanged",t=>{try{localStorage.setItem("userLanguage",t)}catch(s){console.error("Failed to save language preference:",s)}});const wP=new Set(["assets","static","icons","images"]);function CP(){const t=typeof window<"u"&&window.__ROUTER_BASENAME__||"";if(t)return t.replace(/\/+$/,"");if(typeof window>"u"||typeof document>"u")return"";const s=[{kind:"manifest",value:document.querySelector('link[rel="manifest"]')?.getAttribute("href")},{kind:"script",value:document.querySelector('script[type="module"][src]')?.getAttribute("src")},...Array.from(document.querySelectorAll('link[rel~="icon"][href], link[rel="apple-touch-icon"][href], link[rel="apple-touch-icon-precomposed"][href], link[rel="mask-icon"][href]')).map(i=>({kind:"icon",value:i.getAttribute("href")}))].filter(i=>!!i.value);let n="";for(const i of s)try{const a=new URL(i.value,document.baseURI||window.location.href);if(a.origin!==window.location.origin)continue;const l=a.pathname.replace(/\/+$/,"");let c="";if(i.kind==="script"){const u=l.match(/^(.*)\/assets\//);c=u?.[1]?u[1].replace(/\/+$/,""):""}else{const u=l.match(/^(.*)\/(?:manifest\.json|manifest\.webmanifest|site\.webmanifest)$/),d=l.match(/^(.*)\/(?:favicon(?:\.[^/]+)?|apple-touch-icon(?:-[^/]+)?(?:\.[^/]+)?|mask-icon(?:\.[^/]+)?|[^/]*icon[^/]*)$/),g=i.kind==="manifest"?u:d;if(g?.[1]){const p=g[1].split("/").filter(Boolean);for(;p.length>0&&wP.has(p[p.length-1]);)p.pop();c=p.length>0?`/${p.join("/")}`:""}}c.length>n.length&&(n=c)}catch{}return n}function SP(){const t=CP();return e.jsx(ss,{i18n:qe,children:e.jsx(An,{children:e.jsxs(ws,{children:[e.jsx(qi,{}),e.jsx(jn,{children:e.jsx(ks,{children:e.jsx(Tn,{children:e.jsx(In,{children:e.jsx(En,{children:e.jsx(Jt,{basename:t,children:e.jsxs(Qt,{children:[e.jsx(We,{path:"/",element:e.jsx(mt,{})}),e.jsx(We,{path:"/session/:sessionId",element:e.jsx(mt,{})})]})})})})})})})]})})})}Zt.createRoot(document.getElementById("root")).render(e.jsx(vt.StrictMode,{children:e.jsx(SP,{})}));
|