@sma1lboy/rove 0.9.281-next.31 → 0.9.281
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/dist/cli/chunk-01tghgf3.js +8 -0
- package/dist/cli/{chunk-jk4f0xsh.js → chunk-03fv92ya.js} +1 -1
- package/dist/cli/{chunk-7aaw17vr.js → chunk-08mb3qss.js} +1 -1
- package/dist/cli/{chunk-y7mjhjby.js → chunk-0gbg7bg8.js} +1 -1
- package/dist/cli/{chunk-zv0rrhck.js → chunk-0nkk13z9.js} +1 -1
- package/dist/cli/{chunk-zp0q931y.js → chunk-14tevt5v.js} +1 -1
- package/dist/cli/{chunk-1g6vhgfe.js → chunk-16e6jqq6.js} +1 -1
- package/dist/cli/{chunk-3hxm56h6.js → chunk-1a57ejnh.js} +1 -1
- package/dist/cli/{chunk-4z1a65bz.js → chunk-32y7f5dr.js} +1 -1
- package/dist/cli/{chunk-j54c5a0a.js → chunk-3m0ydze9.js} +1 -1
- package/dist/cli/{chunk-12wn9jtf.js → chunk-3pgp6z3k.js} +1 -1
- package/dist/cli/{chunk-amq030gb.js → chunk-3qj9yw5c.js} +2 -2
- package/dist/cli/chunk-453qpfae.js +2 -0
- package/dist/cli/{chunk-gk8efsx0.js → chunk-46qs744w.js} +1 -1
- package/dist/cli/{chunk-am5cpb9n.js → chunk-4vkrv4eb.js} +1 -1
- package/dist/cli/{chunk-hfvzvj91.js → chunk-4yr1534j.js} +1 -1
- package/dist/cli/{chunk-byh32qnx.js → chunk-5swmvt20.js} +1 -1
- package/dist/cli/{chunk-j8d9sk5j.js → chunk-6wt08a28.js} +1 -1
- package/dist/cli/{chunk-f262ywvg.js → chunk-7911jkq6.js} +1 -1
- package/dist/cli/chunk-8ng1756g.js +3 -0
- package/dist/cli/{chunk-ebdp0z1d.js → chunk-95kk75wh.js} +1 -1
- package/dist/cli/{chunk-6mk6ceb6.js → chunk-9qpea48c.js} +2 -2
- package/dist/cli/chunk-9vwb9f7q.js +7 -0
- package/dist/cli/{chunk-nqwza8b0.js → chunk-a5xbsvx2.js} +1 -1
- package/dist/cli/{chunk-t7dyf50m.js → chunk-ap3fgbbt.js} +1 -1
- package/dist/cli/{chunk-5kgq379z.js → chunk-b5fdqynx.js} +1 -1
- package/dist/cli/{chunk-x85rcep5.js → chunk-bbq6wc47.js} +1 -1
- package/dist/cli/{chunk-np398f2a.js → chunk-bbt217yd.js} +1 -1
- package/dist/cli/{chunk-w2tcb3rn.js → chunk-bm6qhcck.js} +1 -1
- package/dist/cli/{chunk-txvjg1g9.js → chunk-btxfcc77.js} +3 -3
- package/dist/cli/chunk-c9ptxthj.js +2 -0
- package/dist/cli/{chunk-zkby63ej.js → chunk-cs410j8b.js} +1 -1
- package/dist/cli/{chunk-rvjnafyt.js → chunk-cx78tyg1.js} +1 -1
- package/dist/cli/{chunk-4drm07mp.js → chunk-cx8wnz54.js} +1 -1
- package/dist/cli/{chunk-t2p22ww7.js → chunk-ejfs22aq.js} +1 -1
- package/dist/cli/chunk-f23manyf.js +8 -0
- package/dist/cli/{chunk-7nnpp89t.js → chunk-ga82ras9.js} +1 -1
- package/dist/cli/{chunk-f7egph8g.js → chunk-gzkes5bw.js} +1 -1
- package/dist/cli/{chunk-f0sahrfw.js → chunk-hmy01yg2.js} +16 -14
- package/dist/cli/{chunk-3a7x7jg7.js → chunk-hnxs5shy.js} +16 -17
- package/dist/cli/{chunk-bw2y7670.js → chunk-j2e7jgh8.js} +1 -1
- package/dist/cli/{chunk-qc9sj5wh.js → chunk-j5y7hhc2.js} +1 -1
- package/dist/cli/{chunk-qzhfs668.js → chunk-jar50zcp.js} +1 -1
- package/dist/cli/{chunk-r98h6b42.js → chunk-k2rmj0v3.js} +2 -2
- package/dist/cli/{chunk-bv050ssb.js → chunk-k3h4cpdy.js} +1 -1
- package/dist/cli/{chunk-wz307hf6.js → chunk-k9xabf0t.js} +1 -1
- package/dist/cli/{chunk-02x0ahxk.js → chunk-kp43j420.js} +1 -1
- package/dist/cli/{chunk-6cfs0nqe.js → chunk-kt5ngemc.js} +1 -1
- package/dist/cli/chunk-nkgn0bqq.js +2 -0
- package/dist/cli/{chunk-fkgemeww.js → chunk-q2nhmaq9.js} +2 -2
- package/dist/cli/{chunk-hd1szhba.js → chunk-q6cwy6v5.js} +1 -1
- package/dist/cli/{chunk-jkgp816v.js → chunk-q72w3dsx.js} +1 -1
- package/dist/cli/{chunk-hmsvt5nj.js → chunk-rqm2kn0c.js} +1 -1
- package/dist/cli/{chunk-q6tsx6zc.js → chunk-sm96b61g.js} +1 -1
- package/dist/cli/chunk-sqdmngys.js +2 -0
- package/dist/cli/{chunk-k2j0tg1h.js → chunk-tgv90744.js} +7 -3
- package/dist/cli/{chunk-vbvbwjad.js → chunk-twy9bfps.js} +1 -1
- package/dist/cli/{chunk-5g6v6tq5.js → chunk-v3ecphrz.js} +1 -1
- package/dist/cli/{chunk-mjzjah9d.js → chunk-vtay379p.js} +1 -1
- package/dist/cli/chunk-vx44yxra.js +3 -0
- package/dist/cli/{chunk-w003rpr2.js → chunk-w3kvkax7.js} +1 -1
- package/dist/cli/{chunk-s1xn6wav.js → chunk-w6ft4djp.js} +1 -1
- package/dist/cli/{chunk-8hernv9y.js → chunk-w8dmmnys.js} +1 -1
- package/dist/cli/{chunk-9f34p80j.js → chunk-ww0zctb7.js} +1 -1
- package/dist/cli/{chunk-qwwt4ch2.js → chunk-x119xqa6.js} +1 -1
- package/dist/cli/{chunk-nrx8pf9p.js → chunk-x35dfb1x.js} +1 -1
- package/dist/cli/{chunk-ggjmcqpt.js → chunk-x94e0rw4.js} +3 -3
- package/dist/cli/chunk-xaam0d8r.js +4 -0
- package/dist/cli/{chunk-azt0c2b5.js → chunk-xekk4k54.js} +1 -1
- package/dist/cli/{chunk-mqvkd2g1.js → chunk-xqvyzv62.js} +1 -1
- package/dist/cli/chunk-xxz3np4w.js +2 -0
- package/dist/cli/{chunk-p11emdb2.js → chunk-y07cp9mb.js} +1 -1
- package/dist/cli/{chunk-5dq0n3h7.js → chunk-y2v1x23z.js} +1 -1
- package/dist/cli/chunk-yn01fet6.js +3 -0
- package/dist/cli/{chunk-cakyme4s.js → chunk-z8rvxvx5.js} +1 -1
- package/dist/cli/chunk-zr058kbe.js +3 -0
- package/dist/cli/index.js +3 -3
- package/dist/cli/rove.js +3 -3
- package/dist/skills/rove/SKILL.md +4 -2
- package/dist/skills/rove/references/api-flags.md +7 -4
- package/dist/voice/asr_server.py +318 -0
- package/dist/voice/engine.py +174 -0
- package/dist/voice/fetch_model.py +30 -0
- package/dist/voice/learn.py +184 -0
- package/dist/voice/live.py +93 -0
- package/dist/voice/phonetic.py +87 -0
- package/dist/voice/polish.py +84 -0
- package/dist/voice/polish_prompt.md +50 -0
- package/dist/voice/pyproject.toml +28 -0
- package/dist/voice/uv.lock +815 -0
- package/dist/voice/vocab.py +193 -0
- package/dist/web/assets/index-Bo92_NP5.css +1 -0
- package/dist/web/assets/index-Ct8dDnCc.js +154 -0
- package/dist/web/index.html +3 -3
- package/dist/web/relay/index.html +5 -5
- package/package.json +4 -3
- package/dist/cli/chunk-0g1h35mr.js +0 -2
- package/dist/cli/chunk-1wwqf6kx.js +0 -3
- package/dist/cli/chunk-26ydgwym.js +0 -2
- package/dist/cli/chunk-2pfh3zm0.js +0 -33
- package/dist/cli/chunk-2wrt80ft.js +0 -3
- package/dist/cli/chunk-7fya3y0n.js +0 -2
- package/dist/cli/chunk-d2wndk4q.js +0 -2
- package/dist/cli/chunk-mey3vksj.js +0 -2
- package/dist/cli/chunk-nv8eyjep.js +0 -3
- package/dist/cli/chunk-ve76p2mx.js +0 -3
- package/dist/cli/chunk-wfgrn8p2.js +0 -4
- package/dist/cli/chunk-xmjknfy2.js +0 -7
- package/dist/web/assets/index-Dc0Khk0q.js +0 -149
- package/dist/web/assets/index-T8cCSdnk.css +0 -1
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
var en={title:"ROUTINES",holdingDaemon:"keeping the daemon awake",notHolding:"none active",needAttention:"{count} of {total} need you \xB7",paused:"paused",newTitle:"New routine",composerLegend:"enter create \xB7 tab fields \xB7 \u2190\u2192 \u2191\u2193 edit the focused field \xB7 esc cancel",fieldName:"NAME",fieldRepo:"REPO",fieldTarget:"DELIVER TO",fieldTargetTab:"EXISTING ENGINE TAB",targetFresh:"New task on each run",targetStanding:"Routine-owned standing task",targetExisting:"Existing conversation: {task} / {tab}. Never creates or revives a session.",fieldPrompt:"PROMPT",fieldSchedule:"SCHEDULE (FIVE-FIELD CRON)",namePlaceholder:"weekday dependency audit",promptPlaceholder:"Audit dependencies and summarize risky changes.",noProject:"Ungrouped",cronInvalid:"not a five-field cron",cronField:{minute:"min",hour:"hour",dayOfMonth:"day",month:"month",dayOfWeek:"weekday"},schedule:{everyDay:"every day {at}",weekdays:"weekdays {at}",weekends:"weekends {at}",onWeekday:"{weekday} {at}",everyMinute:"every minute",everyMinutes:"every {n}m",everyHours:"every {n}h",hourlyAt:"hourly at :{minute}",atClock:"at {time}",dow:{MON:"Mondays",TUE:"Tuesdays",WED:"Wednesdays",THU:"Thursdays",FRI:"Fridays",SAT:"Saturdays",SUN:"Sundays"}},when:{inMinutes:"in {n}m",inHours:"in {n}h",inDays:"in {n}d",minutesAgo:"{n}m ago",hoursAgo:"{n}h ago",now:"now",justNow:"just now",dateTime:"{date}, {time}"},runStatus:{dispatched:"dispatched",revived:"revived",skipped_cancelled:"cancelled before delivery",skipped_precheck:"skipped (precheck)",skipped_blocked:"skipped (task can't use it)",skipped_missed:"skipped (missed)",skipped_unavailable:"skipped (unavailable)",dispatch_failed:"dispatch failed",ran:"ran",script_failed:"script failed"},cronNever:"valid, but never fires",missing:{target:"Choose an existing task.",targetTab:"Enter an existing tab id, e.g. tab-2.",name:"Give it a name.",repo:"Pick a project.",prompt:"Say what it should do.",schedule:"That schedule will not run."},empty:"No routines scheduled.",emptyHint:"Press n to create one.",precheck:"precheck: {command}",lastFailed:"last failed {when}: {reason}",recentRuns:"RECENT RUNS",precheckDetail:"WHY IT SKIPPED \u2014 precheck {exit} in {duration}ms",precheckExited:"exited {code}",precheckTimedOut:"timed out",precheckStdout:"stdout",precheckStderr:"stderr",precheckNoOutput:"(no output)",noRuns:"Not run yet.",responses:"RESPONSES",noResponses:"No run has reported back yet. Agents answer with `routine-respond`.",responseAwaiting:"awaiting response",responseMissing:"no response",noSelection:"A routine runs its prompt in a project on a schedule.",running:"Running {name}\u2026",ranWith:"{name}: {status}",latestRunNoTask:"The latest run created no task.",runNow:"[ run now ]",deleteTitle:"Delete routine?",deleteBody:"{name} and its run history will be removed. Tasks it already created are untouched.",deleteButton:"Delete",createFailed:"Couldn't create the routine: {error}",deleteFailed:`Couldn't delete "{name}": {error}`,enableFailed:'"{name}" stays paused: {error}',disableFailed:'"{name}" stays enabled: {error}',runFailed:`Couldn't run "{name}" now \u2014 schedule unchanged: {error}`},zh={title:"\u4F8B\u884C\u4EFB\u52A1",holdingDaemon:"\u6B63\u5728\u4FDD\u6301\u5B88\u62A4\u8FDB\u7A0B\u5E38\u9A7B",notHolding:"\u65E0\u542F\u7528\u9879",needAttention:"{total} \u4E2A\u4E2D\u6709 {count} \u4E2A\u9700\u8981\u5904\u7406 \xB7",paused:"\u5DF2\u6682\u505C",newTitle:"\u65B0\u5EFA\u4F8B\u884C\u4EFB\u52A1",composerLegend:"enter \u521B\u5EFA \xB7 tab \u5207\u5B57\u6BB5 \xB7 \u2190\u2192 \u2191\u2193 \u7F16\u8F91\u5F53\u524D\u5B57\u6BB5 \xB7 esc \u53D6\u6D88",fieldName:"\u540D\u79F0",fieldTarget:"\u6295\u9012\u76EE\u6807",fieldTargetTab:"\u65E2\u6709\u5F15\u64CE\u6807\u7B7E\u9875",targetFresh:"\u6BCF\u6B21\u65B0\u5EFA\u4EFB\u52A1",targetStanding:"\u4F8B\u884C\u4EFB\u52A1\u81EA\u6709\u7684\u5E38\u9A7B\u4EFB\u52A1",targetExisting:"\u65E2\u6709\u4F1A\u8BDD\uFF1A{task} / {tab}\u3002\u4E0D\u4F1A\u521B\u5EFA\u6216\u91CD\u542F\u4F1A\u8BDD\u3002",fieldRepo:"\u4ED3\u5E93",fieldPrompt:"\u63D0\u793A\u8BCD",fieldSchedule:"\u8C03\u5EA6\uFF08\u4E94\u6BB5 cron\uFF09",namePlaceholder:"\u5DE5\u4F5C\u65E5\u4F9D\u8D56\u5BA1\u8BA1",promptPlaceholder:"\u5BA1\u8BA1\u4F9D\u8D56\u5E76\u603B\u7ED3\u6709\u98CE\u9669\u7684\u53D8\u66F4\u3002",noProject:"\u672A\u5206\u7EC4",cronInvalid:"\u4E0D\u662F\u5408\u6CD5\u7684\u4E94\u6BB5 cron",cronField:{minute:"\u5206",hour:"\u65F6",dayOfMonth:"\u65E5",month:"\u6708",dayOfWeek:"\u661F\u671F"},schedule:{everyDay:"\u6BCF\u5929{at}",weekdays:"\u5DE5\u4F5C\u65E5{at}",weekends:"\u5468\u672B{at}",onWeekday:"{weekday}{at}",everyMinute:"\u6BCF\u5206\u949F",everyMinutes:"\u6BCF {n} \u5206\u949F",everyHours:"\u6BCF {n} \u5C0F\u65F6",hourlyAt:"\u6BCF\u5C0F\u65F6\u7684 :{minute}",atClock:"{time}",dow:{MON:"\u6BCF\u5468\u4E00",TUE:"\u6BCF\u5468\u4E8C",WED:"\u6BCF\u5468\u4E09",THU:"\u6BCF\u5468\u56DB",FRI:"\u6BCF\u5468\u4E94",SAT:"\u6BCF\u5468\u516D",SUN:"\u6BCF\u5468\u65E5"}},when:{inMinutes:"{n} \u5206\u949F\u540E",inHours:"{n} \u5C0F\u65F6\u540E",inDays:"{n} \u5929\u540E",minutesAgo:"{n} \u5206\u949F\u524D",hoursAgo:"{n} \u5C0F\u65F6\u524D",now:"\u5373\u5C06",justNow:"\u521A\u521A",dateTime:"{date} {time}"},runStatus:{dispatched:"\u5DF2\u6D3E\u53D1",revived:"\u5DF2\u91CD\u542F\u4F1A\u8BDD",skipped_cancelled:"\u4EA4\u4ED8\u524D\u5DF2\u53D6\u6D88",skipped_precheck:"\u5DF2\u8DF3\u8FC7\uFF08\u9884\u68C0\uFF09",skipped_blocked:"\u5DF2\u8DF3\u8FC7\uFF08\u4EFB\u52A1\u6682\u4E0D\u80FD\u63A5\u6536\uFF09",skipped_missed:"\u5DF2\u8DF3\u8FC7\uFF08\u9519\u8FC7\u65F6\u95F4\uFF09",skipped_unavailable:"\u5DF2\u8DF3\u8FC7\uFF08\u4E0D\u53EF\u7528\uFF09",dispatch_failed:"\u6D3E\u53D1\u5931\u8D25",ran:"\u5DF2\u8FD0\u884C",script_failed:"\u811A\u672C\u5931\u8D25"},cronNever:"\u8BED\u6CD5\u5408\u6CD5\uFF0C\u4F46\u6C38\u8FDC\u4E0D\u4F1A\u89E6\u53D1",missing:{target:"\u8BF7\u9009\u62E9\u65E2\u6709\u4EFB\u52A1\u3002",targetTab:"\u8BF7\u8F93\u5165\u65E2\u6709\u6807\u7B7E\u9875 ID\uFF0C\u4F8B\u5982 tab-2\u3002",name:"\u8D77\u4E2A\u540D\u5B57\u3002",repo:"\u9009\u4E00\u4E2A\u9879\u76EE\u3002",prompt:"\u8BF4\u660E\u5B83\u8981\u505A\u4EC0\u4E48\u3002",schedule:"\u8FD9\u4E2A\u8C03\u5EA6\u4E0D\u4F1A\u89E6\u53D1\u3002"},empty:"\u8FD8\u6CA1\u6709\u4F8B\u884C\u4EFB\u52A1\u3002",emptyHint:"\u6309 n \u65B0\u5EFA\u4E00\u6761\u3002",precheck:"\u9884\u68C0\uFF1A{command}",lastFailed:"\u4E0A\u6B21\u5931\u8D25\uFF08{when}\uFF09\uFF1A{reason}",recentRuns:"\u6700\u8FD1\u6267\u884C",precheckDetail:"\u4E3A\u4EC0\u4E48\u8DF3\u8FC7 \u2014\u2014 \u9884\u68C0{exit}\uFF0C\u8017\u65F6 {duration}ms",precheckExited:"\u9000\u51FA\u7801 {code}",precheckTimedOut:"\u8D85\u65F6",precheckStdout:"\u6807\u51C6\u8F93\u51FA",precheckStderr:"\u6807\u51C6\u9519\u8BEF",precheckNoOutput:"\uFF08\u65E0\u8F93\u51FA\uFF09",noRuns:"\u5C1A\u672A\u6267\u884C\u3002",responses:"\u56DE\u62A5",noResponses:"\u8FD8\u6CA1\u6709\u6267\u884C\u56DE\u62A5\u3002agent \u7528 `routine-respond` \u56DE\u62A5\u3002",responseAwaiting:"\u7B49\u5F85\u56DE\u62A5",responseMissing:"\u672A\u56DE\u62A5",noSelection:"\u4F8B\u884C\u4EFB\u52A1\u4F1A\u6309\u8C03\u5EA6\u5728\u67D0\u4E2A\u9879\u76EE\u91CC\u8DD1\u5B83\u7684\u63D0\u793A\u8BCD\u3002",running:"\u6B63\u5728\u8FD0\u884C {name}\u2026",ranWith:"{name}\uFF1A{status}",latestRunNoTask:"\u6700\u8FD1\u4E00\u6B21\u6267\u884C\u6CA1\u6709\u521B\u5EFA\u4EFB\u52A1\u3002",runNow:"[ \u7ACB\u5373\u8FD0\u884C ]",deleteTitle:"\u5220\u9664\u8FD9\u6761\u4F8B\u884C\u4EFB\u52A1\uFF1F",deleteBody:"\u5C06\u5220\u9664 {name} \u53CA\u5176\u6267\u884C\u8BB0\u5F55\u3002\u5B83\u5DF2\u7ECF\u521B\u5EFA\u7684\u4EFB\u52A1\u4E0D\u53D7\u5F71\u54CD\u3002",deleteButton:"\u5220\u9664",createFailed:"\u521B\u5EFA\u4F8B\u884C\u4EFB\u52A1\u5931\u8D25\uFF1A{error}",deleteFailed:"\u5220\u9664\u201C{name}\u201D\u5931\u8D25\uFF1A{error}",enableFailed:"\u201C{name}\u201D\u4ECD\u5904\u4E8E\u6682\u505C\u72B6\u6001\uFF1A{error}",disableFailed:"\u201C{name}\u201D\u4ECD\u5904\u4E8E\u542F\u7528\u72B6\u6001\uFF1A{error}",runFailed:"\u65E0\u6CD5\u7ACB\u5373\u8FD0\u884C\u201C{name}\u201D\u2014\u2014\u6392\u7A0B\u672A\u53D7\u5F71\u54CD\uFF1A{error}"};var en2={cancel:"Cancel",failureHint:"Run `{command}` for diagnosis and next steps.",toastFailureHint:"Next: run rove doctor",loading:"Loading\u2026",create:"create",confirm:"Confirm",paneCrash:{title:"This pane crashed",hint:"The error was logged to client.log. Retry, or restart Rove if it keeps happening.",regionTitle:"The {region} hit an error",regionHint:"The rest of Rove keeps working. Retry below; if it persists, inspect client.log and run `rove doctor`.",retry:"[ retry ]",region:{sidebar:"task list",workspace:"workspace",files:"file tree",page:"page"}},rename:{defaultTitle:"Rename task",defaultFieldLabel:"TITLE",footerHint:"enter {submitLabel} \xB7 esc cancel",defaultSubmitLabel:"rename"},prompt:{fieldLabel:"input",submitLabel:"submit"}},zh2={cancel:"\u53D6\u6D88",failureHint:"\u8FD0\u884C `{command}` \u67E5\u770B\u8BCA\u65AD\u548C\u540E\u7EED\u6B65\u9AA4\u3002",toastFailureHint:"\u4E0B\u4E00\u6B65\uFF1A\u8FD0\u884C rove doctor",loading:"\u52A0\u8F7D\u4E2D\u2026",create:"\u521B\u5EFA",confirm:"\u786E\u8BA4",paneCrash:{title:"\u6B64\u9762\u677F\u5DF2\u5D29\u6E83",hint:"\u9519\u8BEF\u5DF2\u8BB0\u5F55\u5230 client.log\u3002\u53EF\u91CD\u8BD5\uFF1B\u82E5\u53CD\u590D\u51FA\u73B0\u8BF7\u91CD\u542F Rove\u3002",regionTitle:"{region}\u51FA\u9519\u4E86",regionHint:"Rove \u7684\u5176\u4F59\u90E8\u5206\u4ECD\u53EF\u6B63\u5E38\u4F7F\u7528\u3002\u8BF7\u5728\u4E0B\u65B9\u91CD\u8BD5\uFF1B\u82E5\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u67E5\u770B client.log \u5E76\u8FD0\u884C `rove doctor`\u3002",retry:"[ \u91CD\u8BD5 ]",region:{sidebar:"\u4EFB\u52A1\u5217\u8868",workspace:"\u5DE5\u4F5C\u533A",files:"\u6587\u4EF6\u6811",page:"\u9875\u9762"}},rename:{defaultTitle:"\u91CD\u547D\u540D\u4EFB\u52A1",defaultFieldLabel:"\u540D\u79F0",footerHint:"enter {submitLabel} \xB7 esc \u53D6\u6D88",defaultSubmitLabel:"\u91CD\u547D\u540D"},prompt:{fieldLabel:"\u8F93\u5165",submitLabel:"\u63D0\u4EA4"}};var en3={fix:{hint:"{count} finding(s) above have a known fix \u2014 run `{command}` to review them one by one",none:"fix: nothing to fix \u2014 no known remediation applies to this report",header:"fixes \u2014 each one asks before running:",willRun:"will run: {command}",confirmPrompt:"apply this fix? [y/N] ",done:"\u2713 done",failed:"\u2717 exited with code {code}; inspect the command output above, then rerun rove doctor",skipped:"\xB7 skipped",nonInteractive:"no interactive terminal \u2014 nothing was executed; run the commands above yourself",manualHeader:"manual steps \u2014 doctor prints these but never runs them:",daemonRestartWhy:"safe to run: engine sessions live in the separate PTY host and survive a daemon restart",daemonStale:"restart the daemon \u2014 it is running an older build than this CLI",daemonDown:"start the daemon \u2014 it is not running",hooksDown:"restart the daemon to re-establish the engine hook channel",inspectStale:"restart the daemon \u2014 it predates the hook-channel check",skillInstallWhy:"safe to run: installs skill files only; re-running is idempotent",skillMissing:"install the Rove agent skill",skillStale:"update the Rove agent skill to the version this build expects",spawnHelper:"restore the exec bit on node-pty's spawn-helper \u2014 every node-pty PTY spawn fails without it",spawnHelperWhy:"safe to run: chmod on two prebuilt binaries; idempotent, and `bun install` does the same",resetWhy:"stops the daemon, the PTY host, and every live session \u2014 not undoable, so doctor only prints it",resetDaemonWedged:"the daemon process is alive but unreachable (wedged)",resetPty:"the PTY host process is alive but its socket is unreachable (wedged)",resetPtyStale:"the PTY host is still running an older build than the one you launched",resetLegacy:"pre-v0.8 tmux sessions are still holding processes and memory",orphans:"{count} process(es) outlived the PTY session that spawned them and are still running",orphansWhy:"kills processes, which is not undoable \u2014 and a task you backgrounded on purpose looks the same; read the list, then run it yourself",engineTabs:"engine tabs may hold a stale daemon socket path",engineTabsAction:"close and reopen the affected engine tabs in the TUI",engineTabsWhy:"kills that tab's live engine session \u2014 your call, not doctor's",staleInstall:"the install this Rove runs from no longer exists on disk",staleInstallAction:"npm install -g @sma1lboy/rove, then relaunch Rove",staleInstallWhy:"doctor cannot reinstall Rove over the running process \u2014 a human has to, then relaunch",humanOnlyWhy:"doctor does not install software or log in to accounts for you",git:"git is not on PATH",gitAction:"install git with your OS package manager",noEngine:"no usable engine \u2014 no engine CLI is both installed and logged in",noEngineAction:"install an engine CLI (claude, codex, copilot, or kimi) and log in",noEngineLogin:"no usable engine \u2014 an engine CLI is installed but not signed in",noEngineLoginAction:"run one of the installed engine CLIs ({list}) in a shell and complete its login",windowsNode:"Node.js is missing \u2014 the Windows PTY host cannot start",windowsNodeAction:"install Node.js from https://nodejs.org",staleBun:"the Bun running Rove is older than this build supports \u2014 terminals will not paint",staleBunAction:"upgrade Bun (`bun upgrade`, `brew upgrade bun`, or `npm install -g bun@latest`), then relaunch Rove"}},zh3={fix:{hint:"\u4E0A\u9762\u6709 {count} \u9879\u53D1\u73B0\u5B58\u5728\u5DF2\u77E5\u4FEE\u6CD5 \u2014 \u8FD0\u884C `{command}` \u9010\u6761\u67E5\u770B",none:"fix: \u65E0\u53EF\u4FEE\u9879 \u2014 \u672C\u6B21\u62A5\u544A\u6CA1\u6709\u5339\u914D\u5230\u5DF2\u77E5\u4FEE\u6CD5",header:"\u4FEE\u590D\u9879 \u2014 \u6BCF\u4E00\u6761\u90FD\u4F1A\u5148\u8BE2\u95EE\u518D\u6267\u884C:",willRun:"\u5C06\u6267\u884C: {command}",confirmPrompt:"\u6267\u884C\u8FD9\u6761\u4FEE\u590D\u5417? [y/N] ",done:"\u2713 \u5B8C\u6210",failed:"\u2717 \u9000\u51FA\u7801 {code}\uFF1B\u8BF7\u68C0\u67E5\u4E0A\u65B9\u547D\u4EE4\u8F93\u51FA\uFF0C\u518D\u8FD0\u884C rove doctor",skipped:"\xB7 \u5DF2\u8DF3\u8FC7",nonInteractive:"\u6CA1\u6709\u4EA4\u4E92\u7EC8\u7AEF \u2014 \u672A\u6267\u884C\u4EFB\u4F55\u547D\u4EE4; \u8BF7\u81EA\u884C\u8FD0\u884C\u4E0A\u9762\u7684\u547D\u4EE4",manualHeader:"\u4EBA\u5DE5\u6B65\u9AA4 \u2014 doctor \u53EA\u6253\u5370, \u6C38\u8FDC\u4E0D\u4F1A\u66FF\u4F60\u6267\u884C:",daemonRestartWhy:"\u53EF\u5B89\u5168\u6267\u884C: \u5F15\u64CE\u4F1A\u8BDD\u5728\u72EC\u7ACB\u7684 PTY host \u91CC, daemon \u91CD\u542F\u540E\u4ECD\u7136\u5B58\u6D3B",daemonStale:"\u91CD\u542F daemon \u2014 \u5B83\u8FD0\u884C\u7684\u6784\u5EFA\u6BD4\u5F53\u524D CLI \u65E7",daemonDown:"\u542F\u52A8 daemon \u2014 \u5B83\u5F53\u524D\u6CA1\u6709\u5728\u8FD0\u884C",hooksDown:"\u91CD\u542F daemon \u4EE5\u91CD\u5EFA\u5F15\u64CE hook \u901A\u9053",inspectStale:"\u91CD\u542F daemon \u2014 \u5B83\u7684\u7248\u672C\u65E9\u4E8E hook \u901A\u9053\u68C0\u67E5",skillInstallWhy:"\u53EF\u5B89\u5168\u6267\u884C: \u53EA\u5199\u5165 skill \u6587\u4EF6; \u91CD\u590D\u8FD0\u884C\u662F\u5E42\u7B49\u7684",skillMissing:"\u5B89\u88C5 Rove agent skill",skillStale:"\u628A Rove agent skill \u66F4\u65B0\u5230\u5F53\u524D\u6784\u5EFA\u671F\u671B\u7684\u7248\u672C",spawnHelper:"\u6062\u590D node-pty spawn-helper \u7684\u53EF\u6267\u884C\u4F4D \u2014 \u7F3A\u4E86\u5B83 node-pty \u7684\u6BCF\u6B21 PTY \u542F\u52A8\u90FD\u4F1A\u5931\u8D25",spawnHelperWhy:"\u53EF\u5B89\u5168\u6267\u884C: \u53EA\u5BF9\u4E24\u4E2A\u9884\u7F16\u8BD1\u4E8C\u8FDB\u5236\u505A chmod; \u5E42\u7B49, `bun install` \u4E5F\u4F1A\u505A\u540C\u6837\u7684\u4E8B",resetWhy:"\u4F1A\u505C\u6389 daemon\u3001PTY host \u548C\u6240\u6709\u6D3B\u52A8\u4F1A\u8BDD \u2014 \u4E0D\u53EF\u64A4\u9500, \u6240\u4EE5 doctor \u53EA\u6253\u5370",resetDaemonWedged:"daemon \u8FDB\u7A0B\u5B58\u6D3B\u4F46\u65E0\u6CD5\u8FDE\u63A5 (\u5361\u6B7B)",resetPty:"PTY host \u8FDB\u7A0B\u5B58\u6D3B\u4F46 socket \u65E0\u6CD5\u8FDE\u63A5 (\u5361\u6B7B)",resetPtyStale:"PTY host \u4ECD\u5728\u8DD1\u6BD4\u4F60\u542F\u52A8\u7684\u7248\u672C\u66F4\u65E7\u7684\u6784\u5EFA",resetLegacy:"v0.8 \u4E4B\u524D\u7684 tmux \u4F1A\u8BDD\u4ECD\u5360\u7528\u8FDB\u7A0B\u548C\u5185\u5B58",orphans:"\u6709 {count} \u4E2A\u8FDB\u7A0B\u6BD4\u542F\u52A8\u5B83\u4EEC\u7684 PTY \u4F1A\u8BDD\u6D3B\u5F97\u66F4\u4E45, \u73B0\u5728\u8FD8\u5728\u8FD0\u884C",orphansWhy:"\u4F1A\u6740\u8FDB\u7A0B, \u4E0D\u53EF\u64A4\u9500 \u2014 \u800C\u4E14\u4F60\u6545\u610F\u653E\u540E\u53F0\u7684\u4EFB\u52A1\u770B\u8D77\u6765\u4E00\u6A21\u4E00\u6837; \u5148\u770B\u6E05\u5355, \u518D\u81EA\u5DF1\u6267\u884C",engineTabs:"\u5F15\u64CE tab \u53EF\u80FD\u6301\u6709\u8FC7\u671F\u7684 daemon socket \u8DEF\u5F84",engineTabsAction:"\u5728 TUI \u91CC\u5173\u95ED\u5E76\u91CD\u5F00\u53D7\u5F71\u54CD\u7684\u5F15\u64CE tab",engineTabsWhy:"\u4F1A\u6740\u6389\u8BE5 tab \u7684\u6D3B\u52A8\u5F15\u64CE\u4F1A\u8BDD \u2014 \u7531\u4F60\u51B3\u5B9A, doctor \u4E0D\u4EE3\u52B3",staleInstall:"\u5F53\u524D Rove \u6240\u5728\u7684\u5B89\u88C5\u5DF2\u4ECE\u78C1\u76D8\u5220\u9664",staleInstallAction:"npm install -g @sma1lboy/rove, \u7136\u540E\u91CD\u65B0\u542F\u52A8 Rove",staleInstallWhy:"doctor \u65E0\u6CD5\u5728\u8FD0\u884C\u4E2D\u7684\u8FDB\u7A0B\u4E0A\u91CD\u88C5 Rove \u2014 \u9700\u8981\u4EBA\u5DE5\u91CD\u88C5\u540E\u91CD\u65B0\u542F\u52A8",humanOnlyWhy:"doctor \u4E0D\u4F1A\u66FF\u4F60\u5B89\u88C5\u8F6F\u4EF6\u6216\u767B\u5F55\u8D26\u53F7",git:"PATH \u4E0A\u627E\u4E0D\u5230 git",gitAction:"\u7528\u4F60\u7684\u7CFB\u7EDF\u5305\u7BA1\u7406\u5668\u5B89\u88C5 git",noEngine:"\u6CA1\u6709\u53EF\u7528\u5F15\u64CE \u2014 \u6CA1\u6709\u4EFB\u4F55\u5F15\u64CE CLI \u540C\u65F6\u6EE1\u8DB3\u5DF2\u5B89\u88C5\u4E14\u5DF2\u767B\u5F55",noEngineAction:"\u5B89\u88C5\u4EFB\u4E00\u5F15\u64CE CLI\uFF08claude\u3001codex\u3001copilot \u6216 kimi\uFF09\u5E76\u767B\u5F55",noEngineLogin:"\u6CA1\u6709\u53EF\u7528\u5F15\u64CE \u2014 \u5F15\u64CE CLI \u5DF2\u5B89\u88C5, \u4F46\u6CA1\u6709\u767B\u5F55",noEngineLoginAction:"\u5728 shell \u91CC\u8FD0\u884C\u5DF2\u5B89\u88C5\u7684\u5F15\u64CE CLI\uFF08{list}\uFF09\u4E4B\u4E00\u5E76\u5B8C\u6210\u767B\u5F55",windowsNode:"\u7F3A\u5C11 Node.js \u2014 Windows PTY host \u65E0\u6CD5\u542F\u52A8",windowsNodeAction:"\u4ECE https://nodejs.org \u5B89\u88C5 Node.js",staleBun:"\u8FD0\u884C Rove \u7684 Bun \u7248\u672C\u4F4E\u4E8E\u672C\u6784\u5EFA\u7684\u8981\u6C42 \u2014 \u7EC8\u7AEF\u4E0D\u4F1A\u6709\u4EFB\u4F55\u8F93\u51FA",staleBunAction:"\u5347\u7EA7 Bun (`bun upgrade` / `brew upgrade bun` / `npm install -g bun@latest`), \u7136\u540E\u91CD\u65B0\u542F\u52A8 Rove"}};var en4={mentionNoEngine:"No engine session in this task \u2014 nothing to mention into. Open one with ctrl+t.",tabs:{all:"All",changes:"Changes"},actions:{zen:"Zen",createPR:"Ask agent to create PR",diffAll:"[D] diff everything"},legend:{changes:"M modified \xB7 A added \xB7 D deleted \xB7 ? untracked"},scope:{working:"scope: working tree",branch:"scope: vs {base}",toggleHint:"b to toggle",noBase:"no base ref for branch scope (no origin/HEAD, main or master)"},empty:{noTask:"(no task \u2014 press n to create)",noFiles:"(empty worktree)",noChanges:"(no changes \u2014 clean worktree)"},error:{retryHint:"press r to retry",notGitRepo:"not a git repository \u2014 run `git init` here, or open a task in a repo",pathMissing:"the worktree directory is gone \u2014 reopen the task to re-create it",permissionDenied:"permission denied reading the worktree \u2014 check the directory's owner and mode",gitNotInstalled:"git is not on PATH \u2014 install it with your OS package manager",gitFailed:"git command failed; run `git status` in this worktree to diagnose"},toast:{prOnTargetBranch:"Already on the target branch ({branch}) \u2014 ask the agent to create the PR from a task branch",noPausedOperation:"Nothing to resolve \u2014 no merge, rebase or cherry-pick is paused here",conflictReadFailed:"Git could not read the conflicted files. Run git status in this worktree, then retry.",conflictSendFailed:"Could not send the conflict prompt. Open an engine tab in this task, then retry.",ciNoFailingChecks:"No failing check logs to read \u2014 the run may have expired, or the checks are no longer red",ciChecksUnavailable:"gh could not read this PR's checks: {detail}. Run `gh auth status`, then retry."}},zh4={mentionNoEngine:"\u8FD9\u4E2A\u4EFB\u52A1\u6CA1\u6709\u5F15\u64CE\u4F1A\u8BDD\u2014\u2014\u6CA1\u6709\u5730\u65B9\u53EF\u4EE5\u63D0\u53CA\u3002\u7528 ctrl+t \u5F00\u4E00\u4E2A\u3002",tabs:{all:"\u5168\u90E8",changes:"\u6539\u52A8"},actions:{zen:"\u4E13\u6CE8\u6A21\u5F0F",createPR:"\u8BA9 agent \u521B\u5EFA PR",diffAll:"[D] \u67E5\u770B\u5168\u90E8\u6539\u52A8"},legend:{changes:"M \u5DF2\u4FEE\u6539 \xB7 A \u5DF2\u6DFB\u52A0 \xB7 D \u5DF2\u5220\u9664 \xB7 ? \u672A\u8DDF\u8E2A"},scope:{working:"\u8303\u56F4\uFF1A\u5DE5\u4F5C\u533A\u6539\u52A8",branch:"\u8303\u56F4\uFF1A\u5BF9\u6BD4 {base}",toggleHint:"\u6309 b \u5207\u6362",noBase:"\u5206\u652F\u8303\u56F4\u6CA1\u6709\u57FA\u51C6 ref\uFF08\u6CA1\u6709 origin/HEAD\u3001main \u6216 master\uFF09"},empty:{noTask:"\uFF08\u6682\u65E0\u4EFB\u52A1 \u2014 \u6309 n \u521B\u5EFA\uFF09",noFiles:"\uFF08worktree \u4E3A\u7A7A\uFF09",noChanges:"\uFF08\u65E0\u6539\u52A8 \u2014 worktree \u5E72\u51C0\uFF09"},error:{retryHint:"\u6309 r \u91CD\u8BD5",notGitRepo:"\u4E0D\u662F git \u4ED3\u5E93\u2014\u2014\u5728\u8FD9\u91CC\u6267\u884C `git init`\uFF0C\u6216\u6539\u4E3A\u6253\u5F00\u4ED3\u5E93\u91CC\u7684\u4EFB\u52A1",pathMissing:"worktree \u76EE\u5F55\u5DF2\u4E0D\u5B58\u5728\u2014\u2014\u91CD\u65B0\u6253\u5F00\u8BE5\u4EFB\u52A1\u4F1A\u91CD\u5EFA\u5B83",permissionDenied:"\u8BFB\u53D6 worktree \u65F6\u6743\u9650\u4E0D\u8DB3\u2014\u2014\u8BF7\u68C0\u67E5\u8BE5\u76EE\u5F55\u7684\u5C5E\u4E3B\u548C\u6743\u9650",gitNotInstalled:"PATH \u4E0A\u627E\u4E0D\u5230 git\u2014\u2014\u8BF7\u7528\u7CFB\u7EDF\u5305\u7BA1\u7406\u5668\u5B89\u88C5",gitFailed:"git \u547D\u4EE4\u5931\u8D25\uFF1B\u8BF7\u5728\u6B64 worktree \u8FD0\u884C `git status` \u8BCA\u65AD"},toast:{prOnTargetBranch:"\u5F53\u524D\u5C31\u5728\u76EE\u6807\u5206\u652F\uFF08{branch}\uFF09\u2014 \u8BF7\u5728\u4EFB\u52A1\u5206\u652F\u4E0A\u8BA9 agent \u521B\u5EFA PR",noPausedOperation:"\u6CA1\u6709\u8981\u89E3\u51B3\u7684\u51B2\u7A81\u2014\u2014\u8FD9\u91CC\u6CA1\u6709\u6682\u505C\u4E2D\u7684\u5408\u5E76\u3001\u53D8\u57FA\u6216\u62E3\u9009",conflictReadFailed:"Git \u65E0\u6CD5\u8BFB\u53D6\u51B2\u7A81\u6587\u4EF6\u3002\u8BF7\u5728\u6B64 worktree \u8FD0\u884C git status\uFF0C\u7136\u540E\u91CD\u8BD5\u3002",conflictSendFailed:"\u65E0\u6CD5\u53D1\u9001\u51B2\u7A81\u63D0\u793A\u3002\u8BF7\u5728\u6B64\u4EFB\u52A1\u4E2D\u6253\u5F00\u4E00\u4E2A\u5F15\u64CE\u6807\u7B7E\u9875\uFF0C\u7136\u540E\u91CD\u8BD5\u3002",ciNoFailingChecks:"\u6CA1\u6709\u53EF\u8BFB\u7684\u5931\u8D25\u68C0\u67E5\u65E5\u5FD7\u2014\u2014\u8FD0\u884C\u8BB0\u5F55\u53EF\u80FD\u5DF2\u8FC7\u671F\uFF0C\u6216\u68C0\u67E5\u5DF2\u4E0D\u518D\u662F\u7EA2\u7684",ciChecksUnavailable:"gh \u8BFB\u4E0D\u5230\u8FD9\u4E2A PR \u7684\u68C0\u67E5\u72B6\u6001\uFF1A{detail}\u3002\u8BF7\u8FD0\u884C `gh auth status`\uFF0C\u7136\u540E\u91CD\u8BD5\u3002"}};var en5={decision:{title:"Decision needed",optionsLabel:"choose",recommended:"recommended",noteLabel:"note",noteOptionalHint:"optional, sent with your choice",noteRequiredHint:"required, this question has no options",notePlaceholder:"type your answer",needsText:"Type an answer first.",footerOptions:"\u2191/\u2193 choose \xB7 tab note \xB7 enter send \xB7 esc cancel",footerNote:"enter send \xB7 esc cancel",footerNoteWithOptions:"tab options \xB7 enter send \xB7 esc cancel"},toast:{answerFailed:"Could not send the answer: {error}",withdrawFailed:"Could not close the decision: {error}"}},zh5={decision:{title:"\u7B49\u4F60\u51B3\u5B9A",optionsLabel:"\u9009\u62E9",recommended:"\u63A8\u8350",noteLabel:"\u5907\u6CE8",noteOptionalHint:"\u53EF\u9009\uFF0C\u968F\u9009\u62E9\u4E00\u8D77\u53D1\u9001",noteRequiredHint:"\u5FC5\u586B\uFF0C\u8FD9\u4E2A\u95EE\u9898\u6CA1\u6709\u9009\u9879",notePlaceholder:"\u8F93\u5165\u4F60\u7684\u56DE\u7B54",needsText:"\u8BF7\u5148\u8F93\u5165\u56DE\u7B54\u3002",footerOptions:"\u2191/\u2193 \u9009\u62E9 \xB7 tab \u5907\u6CE8 \xB7 enter \u53D1\u9001 \xB7 esc \u53D6\u6D88",footerNote:"enter \u53D1\u9001 \xB7 esc \u53D6\u6D88",footerNoteWithOptions:"tab \u9009\u9879 \xB7 enter \u53D1\u9001 \xB7 esc \u53D6\u6D88"},toast:{answerFailed:"\u56DE\u7B54\u53D1\u9001\u5931\u8D25\uFF1A{error}",withdrawFailed:"\u5173\u95ED\u51B3\u5B9A\u5931\u8D25\uFF1A{error}"}};var en6={title:"Rove \u2014 keybindings",palette:"Search commands",search:"Type an action name or chord\u2026",filter:"/ filter actions",noResults:"No matching actions. Try another name or clear the filter.",run:"\u2191\u2193 select \xB7 enter run \xB7 esc cancel",unavailable:"This action is no longer available. Close and reopen the palette.",esc:"esc",scrollKeys:"\u2191\u2193 \u21DE\u21DF scroll",commandLayer:"{prefix} \u2014 more Rove commands",escCancel:"esc cancel",directLayer:"Hold ctrl \u2014 Rove shortcuts",releaseCtrl:"release ctrl to close",overflow:"\u2026 F1 for all shortcuts",moreCommandsPrefix:"More commands (prefix)",focused:"Focused: {surface}",allBindings:"All keybinding contexts",grammar:"Use keys here \xB7 one-press Rove shortcuts \xB7 {prefix} for more commands \xB7 right-click a row for its menu",disabled:"prefix disabled",here:"HERE \u2014 only in {surface}",direct:"ONE PRESS \u2014 Rove shortcuts",afterPrefix:"AFTER PREFIX \u2014 more Rove commands",otherPane:"OTHER PANE \u2014 {surface}",marks:{rows:"MARKS \u2014 task and tab rows",inbox:"MARKS \u2014 tab strip and Inbox",pr:"MARKS \u2014 pull request chip"},mark:{spinner:"working: an engine turn or a task job is running",needsInput:"waiting on your answer: a permission prompt or a question",attention:"needs you: an error, a rate limit, an exited engine or a failed deletion",unseen:"a turn finished and you have not looked yet",idle:"quiet",subagent:"running subagents, in front of the branch",remote:"the task lives on another machine",done:"the turn finished",rateLimited:"rate limited; it resumes on its own",dead:"the engine process exited",routineFailed:"a routine run failed",conflict:"merge conflicts",checksFailing:"checks failing",checksPassing:"checks passing"}},zh6={title:"Rove \u2014 \u5FEB\u6377\u952E",palette:"\u641C\u7D22\u547D\u4EE4",search:"\u8F93\u5165\u64CD\u4F5C\u540D\u79F0\u6216\u5FEB\u6377\u952E\u2026",filter:"/ \u7B5B\u9009\u64CD\u4F5C",noResults:"\u6CA1\u6709\u5339\u914D\u7684\u64CD\u4F5C\u3002\u8BF7\u6362\u4E2A\u540D\u79F0\u6216\u6E05\u7A7A\u7B5B\u9009\u3002",run:"\u2191\u2193 \u9009\u62E9 \xB7 enter \u6267\u884C \xB7 esc \u53D6\u6D88",unavailable:"\u6B64\u64CD\u4F5C\u5DF2\u4E0D\u53EF\u7528\u3002\u8BF7\u5173\u95ED\u5E76\u91CD\u65B0\u6253\u5F00\u547D\u4EE4\u9762\u677F\u3002",esc:"esc",scrollKeys:"\u2191\u2193 \u21DE\u21DF \u6EDA\u52A8",commandLayer:"{prefix} \u2014 \u66F4\u591A Rove \u547D\u4EE4",escCancel:"esc \u53D6\u6D88",directLayer:"\u6309\u4F4F ctrl \u2014 Rove \u5FEB\u6377\u952E",releaseCtrl:"\u677E\u5F00 ctrl \u5173\u95ED",overflow:"\u2026 \u6309 F1 \u67E5\u770B\u5168\u90E8\u5FEB\u6377\u952E",moreCommandsPrefix:"\u66F4\u591A\u547D\u4EE4\uFF08prefix\uFF09",focused:"\u5F53\u524D\u7126\u70B9\uFF1A{surface}",allBindings:"\u6240\u6709\u5FEB\u6377\u952E\u4E0A\u4E0B\u6587",grammar:"\u5F53\u524D\u533A\u57DF\u76F4\u63A5\u6309 \xB7 Rove \u5355\u6B21\u5FEB\u6377\u952E \xB7 {prefix} \u6253\u5F00\u66F4\u591A\u547D\u4EE4 \xB7 \u53F3\u952E\u4EFB\u52A1\u884C\u6253\u5F00\u83DC\u5355",disabled:"Prefix \u5DF2\u7981\u7528",here:"\u5F53\u524D\u533A\u57DF \u2014 \u4EC5\u5728{surface}",direct:"\u4E00\u6B21\u6309\u4E0B \u2014 Rove \u5FEB\u6377\u952E",afterPrefix:"\u6309\u4E0B Prefix \u540E \u2014 \u66F4\u591A Rove \u547D\u4EE4",otherPane:"\u5176\u4ED6\u533A\u57DF \u2014 {surface}",marks:{rows:"\u6807\u8BB0 \u2014 \u4EFB\u52A1\u884C\u548C\u6807\u7B7E\u884C",inbox:"\u6807\u8BB0 \u2014 \u6807\u7B7E\u680F\u548C\u6536\u4EF6\u7BB1",pr:"\u6807\u8BB0 \u2014 PR \u6807\u8BB0"},mark:{spinner:"\u8FD0\u884C\u4E2D\uFF1A\u5F15\u64CE\u6B63\u5728\u6267\u884C\u4E00\u8F6E\uFF0C\u6216\u4EFB\u52A1\u4F5C\u4E1A\u6B63\u5728\u8FD0\u884C",needsInput:"\u7B49\u4F60\u56DE\u7B54\uFF1A\u6743\u9650\u786E\u8BA4\u6216\u63D0\u95EE",attention:"\u9700\u8981\u4F60\u5904\u7406\uFF1A\u51FA\u9519\u3001\u9650\u6D41\u3001\u5F15\u64CE\u5DF2\u9000\u51FA\u6216\u5220\u9664\u5931\u8D25",unseen:"\u4E00\u8F6E\u5DF2\u7ED3\u675F\uFF0C\u4F60\u8FD8\u6CA1\u770B\u8FC7",idle:"\u7A7A\u95F2",subagent:"\u6B63\u5728\u8FD0\u884C\u7684\u5B50\u4EE3\u7406\uFF0C\u663E\u793A\u5728\u5206\u652F\u540D\u524D",remote:"\u4EFB\u52A1\u5728\u53E6\u4E00\u53F0\u673A\u5668\u4E0A",done:"\u8FD9\u4E00\u8F6E\u5DF2\u7ED3\u675F",rateLimited:"\u88AB\u9650\u6D41\uFF0C\u4F1A\u81EA\u52A8\u6062\u590D",dead:"\u5F15\u64CE\u8FDB\u7A0B\u5DF2\u9000\u51FA",routineFailed:"\u4F8B\u884C\u4EFB\u52A1\u8FD0\u884C\u5931\u8D25",conflict:"\u5B58\u5728\u5408\u5E76\u51B2\u7A81",checksFailing:"\u68C0\u67E5\u672A\u901A\u8FC7",checksPassing:"\u68C0\u67E5\u5DF2\u901A\u8FC7"}};var en7={status:{commands:"{key} commands",help:"{key} help",sidebar:"{key} sidebar",settings:"settings"},pane:{move:"move",open:"open",collapse:"collapse",diff:"diff"}},zh7={status:{commands:"{key} \u547D\u4EE4",help:"{key} \u5E2E\u52A9",sidebar:"{key} \u4FA7\u680F",settings:"\u8BBE\u7F6E"},pane:{move:"\u79FB\u52A8",open:"\u6253\u5F00",collapse:"\u6298\u53E0",diff:"\u5DEE\u5F02"}};var en8={title:"Kanban",hint:"tab project \xB7 \u2190\u2193\u2191\u2192 card \xB7 enter detail \xB7 n new \xB7 d delete \xB7 r refresh \xB7 esc close",loading:"Loading issues\u2026",noRepos:"No projects yet \u2014 add one with `rove add <path>`, or file a story with `rove api issue-create`.",empty:"No issues \u2014 agents file them via `rove api issue-create`.",readFailed:"Couldn't read this project's stories: {error}. Run `rove doctor`, then reopen Kanban.",readFailedToast:"Couldn't read stories for {repo}: {error}",columnEmpty:"No cards",column:{backlog:"Backlog",inProgress:"In progress",parked:"Parked",done:"Done"},more:"+{count} more",attention:"{count} need you",turnComplete:"turn done",menu:{setStatus:"status \u2192 {status}"},detail:{status:{open:"open",doing:"doing",hold:"hold",done:"done"},statusLabel:"STATUS",created:"created {date}",linked:"linked to a session",titleLabel:"TITLE",description:"DESCRIPTION",noDescription:"No description.",attachHint:"paste a path / ctrl+v screenshot \u2192 inserts an image placeholder",engine:"ENGINE",workspace:"WORKSPACE",placement:{worktree:"New worktree task \u2014 its own workspace",projectWorktree:"New worktree \u2014 as a chattab in the project workspace",project:"Project checkout \u2014 a new chattab, no worktree"},jumpLabel:"AFTER START",jump:{stay:"Stay on the board",follow:"Jump to the session"},startLegend:"enter/ctrl+enter start \xB7 tab fields \xB7 \u2190\u2192 status/engine \xB7 \u2191\u2193 workspace \xB7 esc save & close",sessionLabel:"SESSION",openAction:"Open the linked session \u21B5",unlinkAction:"Unlink",openLegend:"enter open the focused action \xB7 tab fields \xB7 \u2190\u2192 status \xB7 unlink returns the card to Backlog \xB7 esc save & close",eventsLabel:"EVENTS",eventsLoading:"Loading events\u2026",eventsNone:"No engine events recorded yet.",doneNote:"Done stories have nothing left to start \u2014 set the status back to reopen one \xB7 esc save & close",startedBackground:"Started in background: {title}",newStory:"NEW STORY",createLegend:"ctrl+s save \xB7 enter/ctrl+enter save & start \xB7 tab fields \xB7 esc cancel"},confirmDelete:{title:"Delete story #{id}?",body:"\u201C{title}\u201D will be removed from the tracker. A linked task, branch, or worktree is left untouched."},deleteFailed:"Couldn't delete story #{id}: {error}",createFailed:"Couldn't create the story: {error}",updateFailed:"Couldn't save story #{id}: {error}",statusFailed:"Story #{id} stays in its old column: {error}",linkFailed:"Story #{id} isn't linked to its task: {error}",unlinkFailed:"Story #{id} is still linked: {error}"},zh8={title:"\u770B\u677F",hint:"tab \u5207\u9879\u76EE \xB7 \u2190\u2193\u2191\u2192 \u9009\u5361\u7247 \xB7 enter \u8BE6\u60C5 \xB7 n \u65B0\u5EFA \xB7 d \u5220\u9664 \xB7 r \u5237\u65B0 \xB7 esc \u5173\u95ED",loading:"\u6B63\u5728\u52A0\u8F7D issues\u2026",noRepos:"\u8FD8\u6CA1\u6709\u9879\u76EE\u2014\u2014\u7528 `rove add <\u8DEF\u5F84>` \u6DFB\u52A0\u4E00\u4E2A\uFF0C\u6216\u7528 `rove api issue-create` \u521B\u5EFA\u4E00\u4E2A story\u3002",empty:"\u6682\u65E0 issue\u2014\u2014agent \u53EF\u901A\u8FC7 `rove api issue-create` \u521B\u5EFA\u3002",readFailed:"\u8BFB\u53D6\u8BE5\u9879\u76EE\u7684 story \u5931\u8D25\uFF1A{error}\u3002\u8BF7\u8FD0\u884C `rove doctor`\uFF0C\u518D\u91CD\u65B0\u6253\u5F00\u770B\u677F\u3002",readFailedToast:"\u8BFB\u53D6 {repo} \u7684 story \u5931\u8D25\uFF1A{error}",columnEmpty:"\u6682\u65E0\u5361\u7247",column:{backlog:"\u5F85\u529E",inProgress:"\u8FDB\u884C\u4E2D",parked:"\u6401\u7F6E",done:"\u5DF2\u5B8C\u6210"},more:"\u8FD8\u6709 {count} \u6761",attention:"{count} \u5F20\u7B49\u4F60\u5904\u7406",turnComplete:"\u56DE\u5408\u5B8C\u6210",menu:{setStatus:"\u72B6\u6001 \u2192 {status}"},detail:{status:{open:"\u5F85\u529E",doing:"\u8FDB\u884C\u4E2D",hold:"\u6401\u7F6E",done:"\u5DF2\u5B8C\u6210"},statusLabel:"\u72B6\u6001",created:"\u521B\u5EFA\u4E8E {date}",linked:"\u5DF2\u5173\u8054\u4F1A\u8BDD",titleLabel:"\u6807\u9898",description:"\u63CF\u8FF0",noDescription:"\u6682\u65E0\u63CF\u8FF0\u3002",attachHint:"\u7C98\u8D34\u8DEF\u5F84 / ctrl+v \u8D34\u622A\u56FE \u2192 \u63D2\u5165\u56FE\u7247\u5360\u4F4D\u884C",engine:"\u5F15\u64CE",workspace:"\u5DE5\u4F5C\u533A",placement:{worktree:"\u65B0\u5EFA worktree \u4EFB\u52A1\u2014\u2014\u72EC\u7ACB\u5DE5\u4F5C\u533A",projectWorktree:"\u65B0\u5EFA worktree\u2014\u2014\u4F5C\u4E3A\u9879\u76EE\u5DE5\u4F5C\u533A\u91CC\u7684 chattab",project:"\u9879\u76EE\u4E3B\u76EE\u5F55\u2014\u2014\u65B0\u5F00 chattab,\u4E0D\u5EFA worktree"},jumpLabel:"\u542F\u52A8\u540E",jump:{stay:"\u7559\u5728\u770B\u677F",follow:"\u8DF3\u8F6C\u5230\u4F1A\u8BDD"},startLegend:"enter/ctrl+enter \u542F\u52A8 \xB7 tab \u5207\u5B57\u6BB5 \xB7 \u2190\u2192 \u72B6\u6001/\u5F15\u64CE \xB7 \u2191\u2193 \u5DE5\u4F5C\u533A \xB7 esc \u4FDD\u5B58\u5173\u95ED",sessionLabel:"\u4F1A\u8BDD",openAction:"\u6253\u5F00\u5173\u8054\u4F1A\u8BDD \u21B5",unlinkAction:"\u89E3\u9664\u5173\u8054",openLegend:"enter \u6267\u884C\u9009\u4E2D\u64CD\u4F5C \xB7 tab \u5207\u5B57\u6BB5 \xB7 \u2190\u2192 \u72B6\u6001 \xB7 \u89E3\u9664\u5173\u8054\u628A\u5361\u7247\u9000\u56DE Backlog \xB7 esc \u4FDD\u5B58\u5173\u95ED",eventsLabel:"\u4E8B\u4EF6",eventsLoading:"\u6B63\u5728\u52A0\u8F7D\u4E8B\u4EF6\u2026",eventsNone:"\u6682\u65E0\u5F15\u64CE\u4E8B\u4EF6\u8BB0\u5F55\u3002",doneNote:"\u5DF2\u5B8C\u6210\u7684 story \u65E0\u9700\u542F\u52A8\u2014\u2014\u6539\u56DE\u72B6\u6001\u5373\u53EF\u91CD\u65B0\u6253\u5F00 \xB7 esc \u4FDD\u5B58\u5173\u95ED",startedBackground:"\u5DF2\u5728\u540E\u53F0\u542F\u52A8:{title}",newStory:"\u65B0\u5EFA STORY",createLegend:"ctrl+s \u4EC5\u4FDD\u5B58 \xB7 enter/ctrl+enter \u4FDD\u5B58\u5E76\u542F\u52A8 \xB7 tab \u5207\u5B57\u6BB5 \xB7 esc \u53D6\u6D88"},confirmDelete:{title:"\u5220\u9664 story #{id}?",body:"\u300C{title}\u300D\u5C06\u4ECE tracker \u4E2D\u79FB\u9664\u3002\u5DF2\u5173\u8054\u7684\u4EFB\u52A1\u3001\u5206\u652F\u3001worktree \u4E0D\u53D7\u5F71\u54CD\u3002"},deleteFailed:"\u5220\u9664 story #{id} \u5931\u8D25\uFF1A{error}",createFailed:"\u521B\u5EFA story \u5931\u8D25\uFF1A{error}",updateFailed:"\u4FDD\u5B58 story #{id} \u5931\u8D25\uFF1A{error}",statusFailed:"Story #{id} \u4ECD\u7559\u5728\u539F\u6765\u7684\u5217\uFF1A{error}",linkFailed:"Story #{id} \u672A\u80FD\u5173\u8054\u5230\u5B83\u7684\u4EFB\u52A1\uFF1A{error}",unlinkFailed:"Story #{id} \u4ECD\u5904\u4E8E\u5173\u8054\u72B6\u6001\uFF1A{error}"};var en9={category:{Global:"Global",Sidebar:"Sidebar",Workspace:"Workspace",Navigation:"Navigation","Tasks pane":"Tasks pane",Files:"Files",Terminal:"Terminal",Views:"Views",Tasks:"Tasks",Sessions:"Sessions",Attention:"Attention",Tools:"Tools","Diff review":"Diff review",Inbox:"Inbox"},desc:{"palette.open":"Search commands","help.open":"Show keybindings help","task.new":"New task","task.new.global":"New task","task.openEditor":"Open active Task directory in editor","task.moveMode":"Reorder sidebar rows (then j/k \u2014 tab, task, or project)","settings.open":"Open settings","app.refresh":"Refresh Rove onto the installed build (after an update)","settings.open.sidebar":"Open settings","inbox.show":"Open Inbox","worktrees.open.sidebar":"Open worktrees","kanban.open":"Open kanban (issues board)","automations.open":"Open routines (scheduled tasks)","workItems.open":"Open GitHub issues (external tracker)","app.quit":"Quit (with confirm)","focus.sidebar":"Back to sidebar (tasks)","focus.previous":"Focus previous pane (files \u2192 workspace \u2192 sidebar)","focus.next":"Focus next pane (sidebar \u2192 workspace \u2192 files)","workspace.zenToggle":"Toggle zen mode","view.redraw":"Redraw the screen","attention.next":"Jump to the next Inbox item","sidebar.nav":"Move cursor up/down","sidebar.select":"Open the selected task","sidebar.tree.open":"Open the row under the cursor","sidebar.goto":"Top / bottom of list (gg or shift-G)","sidebar.rename":"Rename task","sidebar.localMerge":"Reorder row (Shift+M, then j/k \u2014 tab, task, or project)","sidebar.pin":"Pin / unpin task at top (Shift+P)","sidebar.sort":"Cycle task sort (default \u2192 recent \u2192 attention \u2192 name)","sidebar.delete":"Remove session (with confirm)","sidebar.search.enter":"Search tasks (fuzzy filter)","sidebar.search.nav":"Move highlight in search results","sidebar.search.submit":"Select search match and exit search","sidebar.search.cancel":"Cancel search (restore prior selection)","tasks.openWorktree":"Open selected Task directory in your editor","tasks.renameBranch":"Rename the selected task's git branch","tasks.cycleEngine":"Cycle engine vendor \u2014 applies on reopen","tasks.update":"Open the update page (when a new version is available)","tasks.focusEngine":"Focus the engine pane of the current window","chat.tab.new":"New conversation here (a child task sharing this directory)","chat.tab.chooseEngine":"New conversation \u2014 engine/shell picker with destination + context toggles","chat.tab.fork":"Continue this chat in a new child task (same directory, keeps the conversation)","chat.fork.new":"Quick-fork: create child task seeded with current repo/branch/model","chat.tab.close":"Close chat tab","chat.tab.rename":"Rename active chat tab","chat.tab.cycle-next":"Next chat tab","chat.tab.cycle-prev":"Previous chat tab","chat.tab.goto":"Go to chat tab N","workspace.split.right":"Split right","workspace.split.down":"Split down","workspace.split.focus-next":"Focus next split","workspace.split.close":"Close active split (tab when unsplit)","workspace.split.rename":"Rename active split (tab when unsplit)","workspace.reopenSession":"Reopen a session in a task whose tabs are all closed","files.nav":"Move cursor up/down","files.hierarchy":"Collapse / expand tree level","files.open":"Open file in configured editor (diff when supported)","files.tab":"Switch tab (cycle All / Changes)","files.refresh":"Refresh","files.scope":"Toggle Changes scope (working \u2194 branch vs base)","files.diff":"Open a read-only diff in a workspace tab","files.diffAll":"Open the whole worktree's diff in one workspace tab","files.openExternal":"Open file in system default app (audio / video / pdf preview)","files.mention":"Inject @<path> mention into the engine pane","files.createPR":"Ask the agent to create a PR from the current task","files.fixChecks":"Ask the agent to fix the failing PR checks","files.syncBase":"Merge the base branch into this task's worktree","diff.review.cursor":"Move the line cursor over the diff","diff.review.range":"Toggle range anchor at the cursor","diff.review.note":"Add a review note at the cursor","diff.review.send":"Send all unsent review notes to the engine","diff.review.drop":"Drop the review note the cursor sits inside","diff.review.reload":"Reload the previewed file from disk","inbox.nav":"Move through Inbox items","inbox.open":"Open the selected Inbox item","inbox.delete":"Clear the selected Inbox item","terminal.scroll-up":"Scroll scrollback up","terminal.scroll-down":"Scroll scrollback down","terminal.reset":"Reset terminal \u2014 kill the current shell and respawn"}},zh9={category:{Global:"\u5168\u5C40",Sidebar:"\u4FA7\u8FB9\u680F",Workspace:"\u5DE5\u4F5C\u533A",Navigation:"\u5BFC\u822A","Tasks pane":"\u4EFB\u52A1\u9762\u677F",Files:"\u6587\u4EF6",Terminal:"\u7EC8\u7AEF",Views:"\u89C6\u56FE",Tasks:"\u4EFB\u52A1",Sessions:"\u4F1A\u8BDD",Attention:"\u63D0\u9192",Tools:"\u5DE5\u5177","Diff review":"\u5DEE\u5F02\u5BA1\u9605",Inbox:"\u6536\u4EF6\u7BB1"},desc:{"palette.open":"\u641C\u7D22\u547D\u4EE4","help.open":"\u663E\u793A\u5FEB\u6377\u952E\u5E2E\u52A9","task.new":"\u65B0\u5EFA\u4EFB\u52A1","task.new.global":"\u65B0\u5EFA\u4EFB\u52A1","task.openEditor":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u5F53\u524D Task \u7684\u76EE\u5F55","task.moveMode":"\u8C03\u6574\u4FA7\u8FB9\u680F\u884C\u987A\u5E8F\uFF08\u7136\u540E j/k\u2014\u2014tab / \u4EFB\u52A1 / \u9879\u76EE\uFF09","settings.open":"\u6253\u5F00\u8BBE\u7F6E","app.refresh":"\u8BA9 Rove \u5237\u65B0\u5230\u5DF2\u5B89\u88C5\u7684\u7248\u672C\uFF08\u66F4\u65B0\u4E4B\u540E\uFF09","settings.open.sidebar":"\u6253\u5F00\u8BBE\u7F6E","inbox.show":"\u6253\u5F00\u6536\u4EF6\u7BB1","worktrees.open.sidebar":"\u6253\u5F00 worktrees","kanban.open":"\u6253\u5F00\u770B\u677F\uFF08issues\uFF09","automations.open":"\u6253\u5F00\u4F8B\u884C\u4EFB\u52A1\uFF08\u5B9A\u65F6\u4EFB\u52A1\uFF09","workItems.open":"\u6253\u5F00 GitHub issues\uFF08\u5916\u90E8\u8DDF\u8E2A\u5668\uFF09","app.quit":"\u9000\u51FA\uFF08\u9700\u786E\u8BA4\uFF09","focus.sidebar":"\u8FD4\u56DE\u4FA7\u8FB9\u680F\uFF08\u4EFB\u52A1\u5217\u8868\uFF09","focus.previous":"\u805A\u7126\u4E0A\u4E00\u4E2A\u9762\u677F\uFF08\u6587\u4EF6 \u2192 \u5DE5\u4F5C\u533A \u2192 \u4FA7\u8FB9\u680F\uFF09","focus.next":"\u805A\u7126\u4E0B\u4E00\u4E2A\u9762\u677F\uFF08\u4FA7\u8FB9\u680F \u2192 \u5DE5\u4F5C\u533A \u2192 \u6587\u4EF6\uFF09","workspace.zenToggle":"\u5207\u6362\u7985\u6A21\u5F0F","view.redraw":"\u91CD\u7ED8\u5C4F\u5E55","attention.next":"\u8DF3\u5230\u4E0B\u4E00\u4E2A\u6536\u4EF6\u7BB1\u6761\u76EE","sidebar.nav":"\u4E0A\u4E0B\u79FB\u52A8\u5149\u6807","sidebar.select":"\u6253\u5F00\u9009\u4E2D\u7684\u4EFB\u52A1","sidebar.tree.open":"\u6253\u5F00\u5149\u6807\u6240\u5728\u884C","sidebar.goto":"\u8DF3\u5230\u5217\u8868\u9876\u90E8 / \u5E95\u90E8\uFF08gg \u6216 shift-G\uFF09","sidebar.rename":"\u91CD\u547D\u540D\u4EFB\u52A1","sidebar.localMerge":"\u8C03\u6574\u5F53\u524D\u884C\u987A\u5E8F\uFF08Shift+M\uFF0C\u7136\u540E j/k\u2014\u2014tab / \u4EFB\u52A1 / \u9879\u76EE\uFF09","sidebar.pin":"\u7F6E\u9876 / \u53D6\u6D88\u7F6E\u9876\u4EFB\u52A1\uFF08Shift+P\uFF09","sidebar.sort":"\u5207\u6362\u4EFB\u52A1\u6392\u5E8F\u65B9\u5F0F\uFF08\u9ED8\u8BA4 \u2192 \u6700\u8FD1 \u2192 \u5173\u6CE8 \u2192 \u540D\u79F0\uFF09","sidebar.delete":"\u79FB\u9664\u4F1A\u8BDD\uFF08\u9700\u786E\u8BA4\uFF09","sidebar.search.enter":"\u641C\u7D22\u4EFB\u52A1\uFF08\u6A21\u7CCA\u8FC7\u6EE4\uFF09","sidebar.search.nav":"\u5728\u641C\u7D22\u7ED3\u679C\u4E2D\u79FB\u52A8\u9AD8\u4EAE","sidebar.search.submit":"\u9009\u4E2D\u641C\u7D22\u5339\u914D\u9879\u5E76\u9000\u51FA\u641C\u7D22","sidebar.search.cancel":"\u53D6\u6D88\u641C\u7D22\uFF08\u6062\u590D\u4E4B\u524D\u7684\u9009\u4E2D\u9879\uFF09","tasks.openWorktree":"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u9009\u4E2D Task \u7684\u76EE\u5F55","tasks.renameBranch":"\u91CD\u547D\u540D\u9009\u4E2D\u4EFB\u52A1\u7684 git \u5206\u652F","tasks.cycleEngine":"\u5FAA\u73AF\u5207\u6362\u5F15\u64CE\u5382\u5546\u2014\u2014\u91CD\u65B0\u6253\u5F00\u540E\u751F\u6548","tasks.update":"\u6253\u5F00\u66F4\u65B0\u9875\u9762\uFF08\u6709\u65B0\u7248\u672C\u65F6\uFF09","tasks.focusEngine":"\u805A\u7126\u5F53\u524D\u7A97\u53E3\u7684\u5F15\u64CE\u9762\u677F","chat.tab.new":"\u5728\u6B64\u65B0\u5EFA\u5BF9\u8BDD\uFF08\u5171\u4EAB\u5F53\u524D\u76EE\u5F55\u7684\u5B50\u4EFB\u52A1\uFF09","chat.tab.chooseEngine":"\u65B0\u5EFA\u5BF9\u8BDD \u2014\u2014 \u9009\u62E9\u5F15\u64CE\u6216 shell\uFF0C\u53EF\u5207\u6362\u843D\u70B9\u4E0E\u4E0A\u4E0B\u6587","chat.tab.fork":"\u628A\u5F53\u524D\u5BF9\u8BDD\u63A5\u5230\u65B0\u5B50\u4EFB\u52A1\uFF08\u540C\u4E00\u76EE\u5F55\uFF0C\u5E26\u4E0A\u5DF2\u6709\u5BF9\u8BDD\uFF09","chat.fork.new":"\u5FEB\u901F\u6D3E\u751F\uFF1A\u4EE5\u5F53\u524D\u4ED3\u5E93/\u5206\u652F/\u6A21\u578B\u521B\u5EFA\u5B50\u4EFB\u52A1","chat.tab.close":"\u5173\u95ED\u804A\u5929\u6807\u7B7E\u9875","chat.tab.rename":"\u91CD\u547D\u540D\u5F53\u524D\u804A\u5929\u6807\u7B7E\u9875","chat.tab.cycle-next":"\u4E0B\u4E00\u4E2A\u804A\u5929\u6807\u7B7E\u9875","chat.tab.cycle-prev":"\u4E0A\u4E00\u4E2A\u804A\u5929\u6807\u7B7E\u9875","chat.tab.goto":"\u8DF3\u5230\u7B2C N \u4E2A\u804A\u5929\u6807\u7B7E\u9875","workspace.split.right":"\u5411\u53F3\u5206\u5C4F","workspace.split.down":"\u5411\u4E0B\u5206\u5C4F","workspace.split.focus-next":"\u805A\u7126\u4E0B\u4E00\u4E2A\u5206\u5C4F","workspace.split.close":"\u5173\u95ED\u5F53\u524D\u5206\u5C4F\uFF08\u672A\u5206\u5C4F\u65F6\u5173\u95ED\u6807\u7B7E\u9875\uFF09","workspace.split.rename":"\u91CD\u547D\u540D\u5F53\u524D\u5206\u5C4F\uFF08\u672A\u5206\u5C4F\u65F6\u91CD\u547D\u540D\u6807\u7B7E\u9875\uFF09","workspace.reopenSession":"\u5728\u6807\u7B7E\u9875\u5168\u90E8\u5173\u95ED\u7684\u4EFB\u52A1\u4E2D\u91CD\u65B0\u6253\u5F00\u4F1A\u8BDD","files.nav":"\u4E0A\u4E0B\u79FB\u52A8\u5149\u6807","files.hierarchy":"\u6298\u53E0 / \u5C55\u5F00\u6811\u5C42\u7EA7","files.open":"\u5728\u5DF2\u914D\u7F6E\u7684\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u6587\u4EF6\uFF08\u652F\u6301\u65F6\u663E\u793A diff\uFF09","files.tab":"\u5207\u6362\u6807\u7B7E\u9875\uFF08\u5FAA\u73AF \u5168\u90E8 / \u53D8\u66F4\uFF09","files.refresh":"\u5237\u65B0","files.scope":"\u5207\u6362\u53D8\u66F4\u8303\u56F4\uFF08\u5DE5\u4F5C\u533A \u2194 \u5206\u652F\u5BF9\u6BD4 base\uFF09","files.diff":"\u5728\u5DE5\u4F5C\u533A\u6807\u7B7E\u9875\u4E2D\u6253\u5F00\u53EA\u8BFB diff","files.diffAll":"\u628A\u6574\u4E2A worktree \u7684 diff \u6253\u5F00\u5728\u4E00\u4E2A\u5DE5\u4F5C\u533A\u6807\u7B7E\u9875\u91CC","files.openExternal":"\u5728\u7CFB\u7EDF\u9ED8\u8BA4\u5E94\u7528\u4E2D\u6253\u5F00\u6587\u4EF6\uFF08\u97F3\u9891 / \u89C6\u9891 / pdf \u9884\u89C8\uFF09","files.mention":"\u5C06 @<path> \u63D0\u53CA\u6CE8\u5165\u5F15\u64CE\u9762\u677F","files.createPR":"\u8BA9 agent \u4ECE\u5F53\u524D\u4EFB\u52A1\u521B\u5EFA PR","files.fixChecks":"\u8BA9 agent \u4FEE\u590D\u5931\u8D25\u7684 PR \u68C0\u67E5","files.syncBase":"\u628A\u57FA\u7840\u5206\u652F\u5408\u5E76\u8FDB\u8BE5\u4EFB\u52A1\u7684\u5DE5\u4F5C\u6811","diff.review.cursor":"\u5728 diff \u4E2D\u79FB\u52A8\u884C\u5149\u6807","diff.review.range":"\u5728\u5149\u6807\u5904\u5207\u6362\u8303\u56F4\u951A\u70B9","diff.review.note":"\u5728\u5149\u6807\u5904\u6DFB\u52A0\u5BA1\u9605\u5907\u6CE8","diff.review.send":"\u5C06\u6240\u6709\u672A\u53D1\u9001\u7684\u5BA1\u9605\u5907\u6CE8\u53D1\u7ED9\u5F15\u64CE","diff.review.drop":"\u5220\u9664\u5149\u6807\u6240\u5728\u7684\u8BC4\u5BA1\u5907\u6CE8","diff.review.reload":"\u4ECE\u78C1\u76D8\u91CD\u65B0\u52A0\u8F7D\u5F53\u524D\u9884\u89C8\u7684\u6587\u4EF6","inbox.nav":"\u5728\u6536\u4EF6\u7BB1\u6761\u76EE\u4E4B\u95F4\u79FB\u52A8","inbox.open":"\u6253\u5F00\u9009\u4E2D\u7684\u6536\u4EF6\u7BB1\u6761\u76EE","inbox.delete":"\u6E05\u9664\u9009\u4E2D\u7684\u6536\u4EF6\u7BB1\u6761\u76EE","terminal.scroll-up":"\u5411\u4E0A\u6EDA\u52A8\u56DE\u6EDA","terminal.scroll-down":"\u5411\u4E0B\u6EDA\u52A8\u56DE\u6EDA","terminal.reset":"\u91CD\u7F6E\u7EC8\u7AEF\u2014\u2014\u5173\u95ED\u5F53\u524D shell \u5E76\u91CD\u65B0\u542F\u52A8"}};var en10={title:"Mods",empty:"No mod is drawing anything.",emptyHint:"A plugin with a [mod] entry draws its panes here, in the TUI and the web alike.",keys:"\u2191\u2193/tab move \xB7 enter press \xB7 esc back",pressFailed:"{plugin}: the press did not reach the mod ({reason})"},zh10={title:"Mods",empty:"\u5F53\u524D\u6CA1\u6709 mod \u5728\u7ED8\u5236\u5185\u5BB9\u3002",emptyHint:"\u58F0\u660E\u4E86 [mod] \u7684\u63D2\u4EF6\u4F1A\u5728\u8FD9\u91CC\u7ED8\u5236\u9762\u677F\uFF0CTUI \u548C web \u663E\u793A\u7684\u662F\u540C\u4E00\u4EFD\u3002",keys:"\u2191\u2193/tab \u79FB\u52A8 \xB7 enter \u6309\u4E0B \xB7 esc \u8FD4\u56DE",pressFailed:"{plugin}\uFF1A\u6309\u952E\u6CA1\u6709\u9001\u8FBE mod\uFF08{reason}\uFF09"};var en11={retryHint:"Correct the field above, then choose Create again.",title:"New task",legend:"{enter} \xB7 tab complete/fields \xB7 ctrl+[ ] mode \xB7 ctrl+e engine \xB7 esc cancel",enterCreate:"enter create",enterNext:"enter next field",tabs:{existing:"For Existing",clone:"For New Repo",adopt:"Adopt Worktree"},field:{mode:"MODE",tier:"DEPTH",engine:"ENGINE",effort:"EFFORT",repo:"REPO",fromBranch:"FROM BRANCH",prompt:"FIRST MESSAGE",extras:"ALSO INCLUDE",gitUrl:"GIT URL",parentDir:"PARENT DIR",folderName:"FOLDER NAME",baseBranch:"BASE BRANCH",adoptFilter:"FILTER (PATH GLOB)",opens:"OPENS"},intent:{task:"a new task worktree",project:"the project itself"},placeholder:{folderName:"auto from url",adoptFilter:"* \u2014 type e.g. feature-* to narrow",prompt:"Describe a task or ask a question (optional)"},hint:{modeCycle:"ctrl+[ ]",engineCycle:"ctrl+e",remembered:"(remembered \u2014 next clone defaults to this dir)",currentDir:"(current dir)",noBranchesFound:"(no local branches found \u2014 typed text will be used as ref)",noMatchBranch:"(no match \u2014 typed text will be used as ref)",scanningWorktrees:"scanning worktrees\u2026",extrasNone:"(none \u2014 enter picks a repo; the first is the primary)",extrasPicked:"{count} more repo(s) in this task"},picker:{moreAbove:"\u2191 {count} more",moreBelow:"\u2193 {count} more"},scroll:{moreAbove:"\u2191 {count} more rows",moreBelow:"\u2193 {count} more rows"},open:{failed:"Couldn't open the project: {error}"},adopt:{repoLine:"repo: {path}",repoNone:"(none)",noUnlinked:"no unlinked worktrees \u2014 every git worktree here is already a task",noMatch:"no worktrees match the filter",hintSelected:"{count} selected \xB7 enter toggles \xB7 ctrl+a all \xB7 Create imports",hintDefault:"enter toggles \xB7 ctrl+a all \xB7 Create imports the highlighted row",summaryAll:"Adopted {count} worktree(s)",summaryPartial:"Adopted {done}/{total} worktrees \u2014 the rest failed (see log)",summaryNone:"Couldn't adopt any worktree: {error}"},clone:{progressFallback:"Cloning\u2026",progressInto:"Cloning into {target}\u2026"},button:{create:"Create",cloning:"Cloning\u2026"},error:{gitUrlRequired:"git URL is required",gitUrlInvalid:"does not look like a git URL: {url}",folderRequired:"folder name is required",folderHasSeparator:"folder name cannot contain path separators",parentRequired:"parent directory is required",parentNotFound:"parent directory does not exist: {path}",parentNotDir:"not a directory: {path}",targetExists:"target already exists: {path}",cloneFailed:"git clone failed: {error}",noAdoptable:"no adoptable worktrees to import",repoAmbiguous:"more than one saved repo is named {name} \u2014 pick the one you mean from the list",tierUnavailable:"{tier} points at engine {engine}, which is not available here \u2014 retarget it in Settings \u2192 Auto routing"}},zh11={retryHint:"\u8BF7\u4FEE\u6B63\u4E0A\u65B9\u5B57\u6BB5\uFF0C\u7136\u540E\u518D\u6B21\u9009\u62E9\u521B\u5EFA\u3002",title:"\u65B0\u5EFA\u4EFB\u52A1",legend:"{enter} \xB7 tab \u8865\u5168/\u5207\u5B57\u6BB5 \xB7 ctrl+[ ] \u5207\u6A21\u5F0F \xB7 ctrl+e \u5F15\u64CE \xB7 esc \u53D6\u6D88",enterCreate:"enter \u521B\u5EFA",enterNext:"enter \u4E0B\u4E00\u4E2A\u5B57\u6BB5",tabs:{existing:"\u5DF2\u6709\u4ED3\u5E93",clone:"\u514B\u9686\u65B0\u4ED3\u5E93",adopt:"\u63A5\u7BA1 Worktree"},field:{mode:"\u6A21\u5F0F",tier:"\u6DF1\u5EA6",engine:"\u5F15\u64CE",effort:"\u63A8\u7406\u5F3A\u5EA6",repo:"\u4ED3\u5E93",fromBranch:"\u57FA\u51C6\u5206\u652F",prompt:"\u7B2C\u4E00\u6761\u6D88\u606F",extras:"\u540C\u65F6\u5305\u542B",gitUrl:"git \u5730\u5740",parentDir:"\u7236\u76EE\u5F55",folderName:"\u6587\u4EF6\u5939\u540D",baseBranch:"\u57FA\u51C6\u5206\u652F",adoptFilter:"\u8FC7\u6EE4\uFF08\u8DEF\u5F84 glob\uFF09",opens:"\u6253\u5F00"},intent:{task:"\u65B0\u5EFA\u4EFB\u52A1 worktree",project:"\u9879\u76EE\u672C\u8EAB"},placeholder:{folderName:"\u81EA\u52A8\u4ECE\u5730\u5740\u63A8\u5BFC",adoptFilter:"* \u2014 \u8F93\u5165\u5982 feature-* \u6765\u7F29\u5C0F\u8303\u56F4",prompt:"\u63CF\u8FF0\u4E00\u4E2A\u4EFB\u52A1\uFF0C\u6216\u63D0\u4E2A\u95EE\u9898\uFF08\u53EF\u9009\uFF09"},hint:{modeCycle:"ctrl+[ ]",engineCycle:"ctrl+e",remembered:"\uFF08\u5DF2\u8BB0\u4F4F \u2014 \u4E0B\u6B21\u514B\u9686\u9ED8\u8BA4\u4F7F\u7528\u6B64\u76EE\u5F55\uFF09",currentDir:"\uFF08\u5F53\u524D\u76EE\u5F55\uFF09",noBranchesFound:"\uFF08\u672A\u627E\u5230\u672C\u5730\u5206\u652F \u2014 \u5C06\u76F4\u63A5\u4F7F\u7528\u8F93\u5165\u6587\u672C\u4F5C\u4E3A ref\uFF09",noMatchBranch:"\uFF08\u65E0\u5339\u914D \u2014 \u5C06\u76F4\u63A5\u4F7F\u7528\u8F93\u5165\u6587\u672C\u4F5C\u4E3A ref\uFF09",scanningWorktrees:"\u6B63\u5728\u626B\u63CF worktree\u2026",extrasNone:"\uFF08\u672A\u9009 \u2014 \u56DE\u8F66\u9009\u4E00\u4E2A\u4ED3\u5E93\uFF0C\u7B2C\u4E00\u4E2A\u662F\u4E3B\u4ED3\u5E93\uFF09",extrasPicked:"\u4EFB\u52A1\u91CC\u53E6\u542B {count} \u4E2A\u4ED3\u5E93"},picker:{moreAbove:"\u2191 \u8FD8\u6709 {count} \u9879",moreBelow:"\u2193 \u8FD8\u6709 {count} \u9879"},scroll:{moreAbove:"\u2191 \u4E0A\u65B9\u8FD8\u6709 {count} \u884C",moreBelow:"\u2193 \u4E0B\u65B9\u8FD8\u6709 {count} \u884C"},open:{failed:"\u65E0\u6CD5\u6253\u5F00\u9879\u76EE\uFF1A{error}"},adopt:{repoLine:"\u4ED3\u5E93\uFF1A{path}",repoNone:"\uFF08\u65E0\uFF09",noUnlinked:"\u6CA1\u6709\u672A\u5173\u8054\u7684 worktree \u2014 \u6B64\u4ED3\u5E93\u6240\u6709 git worktree \u5747\u5DF2\u662F\u4EFB\u52A1",noMatch:"\u6CA1\u6709 worktree \u5339\u914D\u6B64\u8FC7\u6EE4\u6761\u4EF6",hintSelected:"\u5DF2\u9009 {count} \u9879 \xB7 enter \u5207\u6362\u9009\u4E2D \xB7 ctrl+a \u5168\u9009 \xB7 \u521B\u5EFA \u5BFC\u5165",hintDefault:"enter \u5207\u6362\u9009\u4E2D \xB7 ctrl+a \u5168\u9009 \xB7 \u521B\u5EFA \u5C06\u5BFC\u5165\u9AD8\u4EAE\u884C",summaryAll:"\u5DF2\u63A5\u7BA1 {count} \u4E2A worktree",summaryPartial:"\u5DF2\u63A5\u7BA1 {done}/{total} \u4E2A worktree \u2014 \u5176\u4F59\u5931\u8D25\uFF08\u8BE6\u89C1\u65E5\u5FD7\uFF09",summaryNone:"\u6CA1\u6709 worktree \u63A5\u7BA1\u6210\u529F\uFF1A{error}"},clone:{progressFallback:"\u514B\u9686\u4E2D\u2026",progressInto:"\u6B63\u5728\u514B\u9686\u5230 {target}\u2026"},button:{create:"\u521B\u5EFA",cloning:"\u514B\u9686\u4E2D\u2026"},error:{gitUrlRequired:"git \u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A",gitUrlInvalid:"\u4E0D\u50CF\u662F\u6709\u6548\u7684 git \u5730\u5740\uFF1A{url}",folderRequired:"\u6587\u4EF6\u5939\u540D\u4E0D\u80FD\u4E3A\u7A7A",folderHasSeparator:"\u6587\u4EF6\u5939\u540D\u4E0D\u80FD\u5305\u542B\u8DEF\u5F84\u5206\u9694\u7B26",parentRequired:"\u7236\u76EE\u5F55\u4E0D\u80FD\u4E3A\u7A7A",parentNotFound:"\u7236\u76EE\u5F55\u4E0D\u5B58\u5728\uFF1A{path}",parentNotDir:"\u4E0D\u662F\u76EE\u5F55\uFF1A{path}",targetExists:"\u76EE\u6807\u8DEF\u5F84\u5DF2\u5B58\u5728\uFF1A{path}",cloneFailed:"git clone \u5931\u8D25\uFF1A{error}",noAdoptable:"\u6CA1\u6709\u53EF\u63A5\u7BA1\u7684 worktree",repoAmbiguous:"\u6709\u591A\u4E2A\u5DF2\u4FDD\u5B58\u4ED3\u5E93\u90FD\u53EB {name} \u2014 \u8BF7\u4ECE\u5217\u8868\u4E2D\u9009\u62E9\u4F60\u8981\u7684\u90A3\u4E2A",tierUnavailable:"{tier} \u6307\u5411\u7684\u5F15\u64CE {engine} \u5728\u8FD9\u53F0\u673A\u5668\u4E0A\u4E0D\u53EF\u7528\u2014\u2014\u53BB \u8BBE\u7F6E \u2192 \u81EA\u52A8\u8DEF\u7531 \u91CD\u65B0\u6307\u5B9A"}};var en12={engineTitle:"Engine and account",engineChecking:"Checking installed engines and accounts\u2026",engineReady:"\u2713 Ready to start a task",engineMissing:"No usable engine yet",engineUsable:"\u2713 {engine}: ready",engineSignedOut:"! {engine}: installed, not signed in",engineSetup:"Install an engine using docs.rove.run/rove/engines, then run its CLI and sign in. Run `rove doctor --fix` to check setup; Settings \u2192 Engines lists integrations.",engineContinue:"\u276F Continue to optional setup",engineLegend:"enter continue \xB7 esc skip optional setup",quickStart:"Start a task with a prompt",quickIntent:"Creates an isolated worktree and branch. Use {key} for the full task dialog.",tabShared:"New conversations share this task\u2019s files",tabIsolated:"{key}: new task, isolated worktree",title:"Welcome to Rove",subtitle:"Managed tasks get isolated worktrees and branches. Directory and project tasks reuse existing files.",completionsLabel:"Shell completions for {shell}",completionsExplain:"Tab-completes rove subcommands. One line is added to your shell config.",skillLabel:"Rove agent skill",skillExplain:"Lets the coding agents on this machine drive Rove themselves: start tasks, read other sessions, message them.",optionYes:"Install",recommended:"recommended",stepCounter:"{n} / {total}",optionNo:"Not now",queued:"Queued \u2014 installs when you quit Rove",skillInstalled:"Installed for {engines}",skillFailed:"Install failed: {reason}",skillNoEngines:"No coding agent here takes the skill",skipped:"Skipped",installFailed:"! {item} failed: {reason}. Retry: {command} (or quit Rove again).",legend:"\u2191\u2193 select \xB7 enter confirm \xB7 esc close",keysTitle:"Keyboard basics",keysBare:"Bare keys act in the focused pane \u2014 {nav} moves, {open} opens.",keysOnePress:"A few one-press chords are Rove's own \u2014 {newTab} new tab, {focusNext} next pane.",keysPrefix:"{prefix} opens the command map \u2014 hold it a beat and a guide appears.",keysHelp:"{help} shows the full live reference anytime.",keysNext:"Next: Settings \u2192 Engines lists every engine and installs its activity hooks.",keysLegend:"enter finish",appliedCompletions:"\u2713 completions hooked into {path} (takes effect in new shells)",keptCompletions:"\xB7 {path} already has a completions block \u2014 left untouched"},zh12={engineTitle:"\u5F15\u64CE\u4E0E\u8D26\u6237",engineChecking:"\u6B63\u5728\u68C0\u67E5\u5F15\u64CE\u4E0E\u8D26\u6237\u2026",engineReady:"\u2713 \u53EF\u4EE5\u5F00\u59CB\u4EFB\u52A1",engineMissing:"\u8FD8\u6CA1\u6709\u53EF\u7528\u7684\u5F15\u64CE",engineUsable:"\u2713 {engine}\uFF1A\u53EF\u7528",engineSignedOut:"! {engine}\uFF1A\u5DF2\u5B89\u88C5\uFF0C\u672A\u767B\u5F55",engineSetup:"\u4ECE docs.rove.run/rove/engines \u5B89\u88C5\u5F15\u64CE\uFF0C\u7136\u540E\u8FD0\u884C\u5176 CLI \u5E76\u767B\u5F55\u3002\u8FD0\u884C `rove doctor --fix` \u68C0\u67E5\u914D\u7F6E\uFF1B\u8BBE\u7F6E \u2192 \u5F15\u64CE \u53EF\u67E5\u770B\u96C6\u6210\u3002",engineContinue:"\u276F \u7EE7\u7EED\u53EF\u9009\u8BBE\u7F6E",engineLegend:"enter \u7EE7\u7EED \xB7 esc \u8DF3\u8FC7\u53EF\u9009\u8BBE\u7F6E",quickStart:"\u8F93\u5165\u63D0\u793A\u8BCD\u5F00\u59CB\u4EFB\u52A1",quickIntent:"\u521B\u5EFA\u72EC\u7ACB worktree \u548C\u5206\u652F\u3002\u6309 {key} \u6253\u5F00\u5B8C\u6574\u4EFB\u52A1\u5BF9\u8BDD\u6846\u3002",tabShared:"\u65B0\u5BF9\u8BDD\u5171\u4EAB\u5F53\u524D\u4EFB\u52A1\u7684\u6587\u4EF6",tabIsolated:"{key}\uFF1A\u65B0\u5EFA\u4EFB\u52A1\uFF0C\u4F7F\u7528\u72EC\u7ACB worktree",title:"\u6B22\u8FCE\u4F7F\u7528 Rove",subtitle:"\u6258\u7BA1\u4EFB\u52A1\u4F7F\u7528\u72EC\u7ACB\u7684 worktree \u548C\u5206\u652F\uFF1B\u76EE\u5F55\u4E0E\u9879\u76EE\u4EFB\u52A1\u590D\u7528\u73B0\u6709\u6587\u4EF6\u3002",completionsLabel:"{shell} \u7684 shell \u8865\u5168",completionsExplain:"\u8BA9 rove \u5B50\u547D\u4EE4\u652F\u6301 Tab \u8865\u5168\uFF0C\u4F1A\u5728\u4F60\u7684 shell \u914D\u7F6E\u91CC\u52A0\u4E00\u884C\u3002",skillLabel:"Rove agent skill",skillExplain:"\u8BA9\u672C\u673A\u7684\u7F16\u7801 agent \u81EA\u5DF1\u64CD\u4F5C Rove\uFF1A\u5F00\u4EFB\u52A1\u3001\u8BFB\u5176\u4ED6\u4F1A\u8BDD\u3001\u7ED9\u5B83\u4EEC\u53D1\u6D88\u606F\u3002",optionYes:"\u5B89\u88C5",recommended:"\u63A8\u8350",stepCounter:"{n} / {total}",optionNo:"\u8DF3\u8FC7",queued:"\u5DF2\u6392\u961F \u2014 \u9000\u51FA Rove \u540E\u5B89\u88C5",skillInstalled:"\u5DF2\u4E3A {engines} \u5B89\u88C5",skillFailed:"\u5B89\u88C5\u5931\u8D25\uFF1A{reason}",skillNoEngines:"\u8FD9\u53F0\u673A\u5668\u4E0A\u6CA1\u6709\u80FD\u88C5 skill \u7684\u7F16\u7801 agent",skipped:"\u5DF2\u8DF3\u8FC7",installFailed:"! {item} \u5B89\u88C5\u5931\u8D25\uFF1A{reason}\u3002\u91CD\u8BD5\uFF1A{command}\uFF08\u6216\u518D\u6B21\u9000\u51FA Rove\uFF09\u3002",legend:"\u2191\u2193 \u9009\u62E9 \xB7 enter \u786E\u8BA4 \xB7 esc \u5173\u95ED",keysTitle:"\u952E\u76D8\u57FA\u7840",keysBare:"\u88F8\u952E\u4F5C\u7528\u4E8E\u5F53\u524D\u805A\u7126\u9762\u677F \u2014 {nav} \u79FB\u52A8\uFF0C{open} \u6253\u5F00\u3002",keysOnePress:"\u5C11\u91CF\u5355\u6B21\u5FEB\u6377\u952E\u5C5E\u4E8E Rove \u81EA\u5DF1 \u2014 {newTab} \u65B0\u6807\u7B7E\u9875\uFF0C{focusNext} \u5207\u6362\u9762\u677F\u3002",keysPrefix:"{prefix} \u6253\u5F00\u547D\u4EE4\u5C42 \u2014 \u6309\u4F4F\u7A0D\u7B49\u4F1A\u51FA\u73B0\u547D\u4EE4\u6307\u5357\u3002",keysHelp:"\u968F\u65F6\u6309 {help} \u67E5\u770B\u5B8C\u6574\u7684\u5B9E\u65F6\u952E\u4F4D\u8868\u3002",keysNext:"\u63A5\u4E0B\u6765\uFF1A\u8BBE\u7F6E \u2192 \u5F15\u64CE \u91CC\u5217\u51FA\u6BCF\u4E2A\u5F15\u64CE\uFF0C\u5E76\u53EF\u5728\u90A3\u91CC\u5B89\u88C5\u5B83\u4EEC\u7684\u6D3B\u52A8\u94A9\u5B50\u3002",keysLegend:"enter \u5B8C\u6210",appliedCompletions:"\u2713 \u8865\u5168\u5DF2\u5199\u5165 {path}\uFF08\u65B0\u5F00\u7684 shell \u751F\u6548\uFF09",keptCompletions:"\xB7 {path} \u91CC\u5DF2\u6709\u8865\u5168\u914D\u7F6E \u2014 \u672A\u6539\u52A8"};var en13={preview:{diffVsHead:"diff vs HEAD",diffVsBase:"diff vs {base}",file:"file",image:"image",binary:"binary file",closeHint:"\xB7 q to close",loading:"loading\u2026",noTextPreview:"no text preview",openHint:"o open in system viewer",allFiles:"all files",noChanges:"no changes in {pathspec}",renamedFrom:"renamed from {origPath}",binaryChanged:"binary file changed",imageChanged:"image changed",modeChanged:"mode changed \xB7 {from} \u2192 {to}",previewFailed:"could not load preview",readFailed:"Cannot read {path}. Check that the file exists and you have permission to read it, then press r.",emptyFile:"empty file",emptyAdded:"empty file added",emptyDeleted:"empty file deleted",retryHint:"r to retry",notesPerFile:"notes are per-file \u2014 open a single file's diff to add them",review:{noteDialogTitle:"Review note \u2014 {location}",noteFieldLabel:"note",noteSubmitLabel:"add note",notePlaceholder:"what should the agent change here?",count:"notes: {total} \xB7 {unsent} unsent",countElsewhere:"notes: {here} here \xB7 {total} in task \xB7 {unsent} unsent",keysHint:"j/k line \xB7 v range \xB7 c note \xB7 x drop \xB7 s send \xB7 r reload",focusHint:"ctrl+q to focus, then j/k \xB7 c note \xB7 s send",sendNoEngine:"No engine session in this task \u2014 the notes are still unsent. Open one with ctrl+t."}}},zh13={preview:{diffVsHead:"\u4E0E HEAD \u5BF9\u6BD4",diffVsBase:"\u4E0E {base} \u5BF9\u6BD4",file:"\u6587\u4EF6",image:"\u56FE\u7247",binary:"\u4E8C\u8FDB\u5236\u6587\u4EF6",closeHint:"\xB7 q \u5173\u95ED",loading:"\u52A0\u8F7D\u4E2D\u2026",noTextPreview:"\u65E0\u6587\u672C\u9884\u89C8",openHint:"o \u7528\u7CFB\u7EDF\u67E5\u770B\u5668\u6253\u5F00",allFiles:"\u5168\u90E8\u6587\u4EF6",noChanges:"{pathspec} \u6CA1\u6709\u6539\u52A8",renamedFrom:"\u91CD\u547D\u540D\u81EA {origPath}",binaryChanged:"\u4E8C\u8FDB\u5236\u6587\u4EF6\u5DF2\u6539\u52A8",imageChanged:"\u56FE\u7247\u5DF2\u6539\u52A8",modeChanged:"\u6743\u9650\u4F4D\u5DF2\u6539\u52A8 \xB7 {from} \u2192 {to}",previewFailed:"\u9884\u89C8\u52A0\u8F7D\u5931\u8D25",readFailed:"\u65E0\u6CD5\u8BFB\u53D6 {path}\u3002\u8BF7\u68C0\u67E5\u6587\u4EF6\u662F\u5426\u5B58\u5728\u53CA\u8BFB\u53D6\u6743\u9650\uFF0C\u7136\u540E\u6309 r \u91CD\u8BD5\u3002",emptyFile:"\u7A7A\u6587\u4EF6",emptyAdded:"\u65B0\u589E\u7A7A\u6587\u4EF6",emptyDeleted:"\u5220\u9664\u7A7A\u6587\u4EF6",retryHint:"\u6309 r \u91CD\u8BD5",notesPerFile:"\u5907\u6CE8\u6309\u5355\u6587\u4EF6\u951A\u5B9A\u2014\u2014\u8981\u52A0\u5907\u6CE8\u8BF7\u6253\u5F00\u5355\u4E2A\u6587\u4EF6\u7684 diff",review:{noteDialogTitle:"\u8BC4\u5BA1\u5907\u6CE8 \u2014 {location}",noteFieldLabel:"\u5907\u6CE8",noteSubmitLabel:"\u6DFB\u52A0\u5907\u6CE8",notePlaceholder:"\u5E0C\u671B agent \u5728\u8FD9\u91CC\u6539\u4EC0\u4E48\uFF1F",count:"\u5907\u6CE8\uFF1A{total} \xB7 \u672A\u53D1\u9001 {unsent}",countElsewhere:"\u5907\u6CE8\uFF1A\u672C\u6587\u4EF6 {here} \xB7 \u672C\u4EFB\u52A1 {total} \xB7 \u672A\u53D1\u9001 {unsent}",keysHint:"j/k \u884C \xB7 v \u8303\u56F4 \xB7 c \u5907\u6CE8 \xB7 x \u5220\u9664 \xB7 s \u53D1\u9001 \xB7 r \u91CD\u8F7D",focusHint:"ctrl+q \u805A\u7126\u540E\u53EF\u7528\uFF1Aj/k \xB7 c \u5907\u6CE8 \xB7 s \u53D1\u9001",sendNoEngine:"\u8FD9\u4E2A\u4EFB\u52A1\u6CA1\u6709\u5F15\u64CE\u4F1A\u8BDD\u2014\u2014\u5907\u6CE8\u4ECD\u672A\u53D1\u9001\u3002\u7528 ctrl+t \u5F00\u4E00\u4E2A\u3002"}}};var en14={title:"Quick task \xB7 {repoLabel}",promptLabel:"PROMPT",promptPlaceholder:"what should this task do?",attemptsLabel:"ATTEMPTS",engineLabel:"ENGINE",branchLabel:"BRANCH",legend:"enter create \xB7 tab fields \xB7 ctrl+e engine \xB7 ctrl+v attach \xB7 esc cancel",startedRound:"Started {count} attempts",roundPartial:"Started {ok}/{count} attempts \u2014 {failed} failed"},zh14={title:"\u5FEB\u901F\u4EFB\u52A1 \xB7 {repoLabel}",promptLabel:"\u63D0\u793A\u8BCD",promptPlaceholder:"\u8FD9\u4E2A\u4EFB\u52A1\u8981\u505A\u4EC0\u4E48\uFF1F",attemptsLabel:"\u5C1D\u8BD5\u6B21\u6570",engineLabel:"\u5F15\u64CE",branchLabel:"\u5206\u652F",legend:"enter \u521B\u5EFA \xB7 tab \u5207\u6362\u5B57\u6BB5 \xB7 ctrl+e \u5F15\u64CE \xB7 ctrl+v \u9644\u4EF6 \xB7 esc \u53D6\u6D88",startedRound:"\u5DF2\u542F\u52A8 {count} \u4E2A\u5C1D\u8BD5",roundPartial:"\u5DF2\u542F\u52A8 {ok}/{count} \u4E2A\u5C1D\u8BD5 \u2014\u2014 {failed} \u4E2A\u5931\u8D25"};var en15={commands:"Commands",tasks:"Tasks",inConversations:"In conversations",searching:"searching\u2026",none:"Nothing said matches \u201C{query}\u201D.",you:"you",agent:"agent",truncated:"Stopped early to stay fast; add a word to narrow it.",skipped:"{count} task(s) not searched: another machine's, or an engine Rove cannot read.",failed:"Search failed: {reason}"},zh15={commands:"\u547D\u4EE4",tasks:"\u4EFB\u52A1",inConversations:"\u5BF9\u8BDD\u91CC",searching:"\u641C\u7D22\u4E2D\u2026",none:"\u6CA1\u6709\u8BF4\u8FC7\u300C{query}\u300D\u3002",you:"\u4F60",agent:"agent",truncated:"\u4E3A\u4E86\u5FEB\u63D0\u524D\u505C\u4E86\uFF1B\u591A\u52A0\u4E00\u4E2A\u8BCD\u7F29\u5C0F\u8303\u56F4\u3002",skipped:"\u6709 {count} \u4E2A\u4EFB\u52A1\u6CA1\u641C\uFF1A\u5728\u522B\u7684\u673A\u5668\u4E0A\uFF0C\u6216 Rove \u8BFB\u4E0D\u4E86\u5B83\u7684\u5F15\u64CE\u8BB0\u5F55\u3002",failed:"\u641C\u7D22\u5931\u8D25\uFF1A{reason}"};var en16={autoRouting:{title:"Auto routing",hint:"Routing by depth: a task says how deep the work is \u2014 swift, standard, deep \u2014 and this table says which engine, model and reasoning effort that depth runs on. Pick a depth in the new-task dialog (or `rove api add --tier`) and Rove fills those three fields from the row; you still see them and can change them before the task starts. enter (or click) a row to point it somewhere else, with the same picker a task uses. A row whose target cannot start says why here, not at launch.",unconfigured:"Auto routing is off: a depth has nowhere to route \u2014 its engine is blank. Point it somewhere below, or remove the empty autoRouting.<tier>.engine from state.json.",engineDefault:"engine default",ready:"\u25CF ready",unavailable:"! unavailable \u2014 {reason}",classifierTitle:"Classifier",classifierHint:"The rows above say what each depth RUNS. This says who CHOOSES one: switch it on and `rove api add --tier auto` reads the task's first message and picks the depth for you. It is off by default, it is never required, and it can never fail a create \u2014 no key, no network, a timeout, or an answer it is not confident enough about all leave you on the depth you would have had.",classifierDataFlow:"! Turning the classifier on sends the task's first message to a third party that is NOT the engine vendor you picked \u2014 TypeSafe System One for `jev`, or whatever address you point `custom` at. It reads the text before your engine does. Nothing leaves this machine while it is off.",classifierLabel:"Choose with",classifierOff:"off",classifierCustomLabel:"custom",classifierOffHint:"\u2014 nothing is sent anywhere",classifierJevHint:"\u2014 TypeSafe System One, billed to your own key",classifierCustomHint:"\u2014 your endpoint: POST the text, answer with a depth and a confidence",endpointLabel:"Endpoint",endpointUnset:"(none \u2014 enter one, then set Choose with to custom)",endpointTitle:"Custom classifier endpoint",endpointField:"URL",endpointInvalidTitle:"Not a URL",endpointInvalidBody:"The endpoint has to start with https://, or http:// for a loopback address (127.0.0.1, localhost, ::1) \u2014 over a network, plain http would carry the task's first 1,200 characters in cleartext. Leave it empty to clear it.",thresholdLabel:"Confidence floor",thresholdHint:"\u2014 below this, the depth is left alone",thresholdTitle:"Confidence floor",thresholdField:"0 to 1",thresholdInvalidTitle:"Not a confidence",thresholdInvalidBody:"The floor is a number between 0 and 1. 0.5 is the shipped default.",keyLabel:"API key",keyStored:"stored {hint} \u2014 enter to replace, empty to clear",keyFromEnv:"from ${env} \u2014 the environment wins over a stored key",keyNone:"not set \u2014 enter to paste one",keyTitle:"{env}",keyPlaceholder:"paste the key; leave empty to clear the stored one",keySaved:"\u25CF key stored in ~/.rove/secrets.json (owner-only, never in state.json)",keyCustomUnused:"\u25CF no Authorization header is sent to a custom endpoint \u2014 set autoRouting.classifierCustomKeyEnv to the variable holding its key if it needs one",keyNoVariableTitle:"No key variable for this endpoint",keyNoVariableBody:"A custom classifier endpoint is sent no Authorization header until autoRouting.classifierCustomKeyEnv names the variable its key lives in. Set that first \u2014 a key stored under a name nothing reads is a key at rest for no purpose.",keyWriteFailedTitle:"Key not saved",keyWriteFailedBody:"~/.rove/secrets.json could not be written: {reason}. Check directory permissions and disk space, then save again.",keyMissing:"! no key \u2014 nothing is chosen and tasks keep their usual depth",keyPresentEnv:"\u25CF key read from ${env} in this process's environment"}},zh16={autoRouting:{title:"\u81EA\u52A8\u8DEF\u7531",hint:"\u6309\u6DF1\u5EA6\u8DEF\u7531\uFF1A\u4EFB\u52A1\u8BF4\u660E\u8FD9\u6D3B\u6709\u591A\u6DF1\u2014\u2014\u8F7B\u5FEB\u3001\u6807\u51C6\u3001\u6DF1\u5165\u2014\u2014\u8FD9\u5F20\u8868\u8BF4\u660E\u90A3\u4E00\u6863\u8DD1\u5728\u54EA\u4E2A\u5F15\u64CE\u3001\u54EA\u4E2A\u6A21\u578B\u3001\u54EA\u4E2A\u63A8\u7406\u5F3A\u5EA6\u4E0A\u3002\u5728\u65B0\u5EFA\u4EFB\u52A1\u5BF9\u8BDD\u6846\u91CC\u9009\u4E00\u6863\uFF08\u6216 `rove api add --tier`\uFF09\uFF0CRove \u5C31\u7167\u90A3\u4E00\u884C\u586B\u8FDB\u8FD9\u4E09\u4E2A\u5B57\u6BB5\uFF1B\u4EFB\u52A1\u542F\u52A8\u524D\u4F60\u4ECD\u7136\u770B\u5F97\u89C1\u3001\u6539\u5F97\u4E86\u3002enter\uFF08\u6216\u70B9\u51FB\uFF09\u67D0\u4E00\u884C\uFF0C\u7528\u548C\u4EFB\u52A1\u4E00\u6837\u7684\u9009\u62E9\u5668\u628A\u5B83\u6307\u5230\u522B\u5904\u3002\u76EE\u6807\u8D77\u4E0D\u6765\u7684\u884C\u4F1A\u5728\u8FD9\u91CC\u8BF4\u660E\u539F\u56E0\uFF0C\u800C\u4E0D\u662F\u7B49\u5230\u542F\u52A8\u65F6\u624D\u70B8\u3002",unconfigured:"\u81EA\u52A8\u8DEF\u7531\u5DF2\u5173\u95ED\uFF1A\u6709\u4E00\u6863\u65E0\u5904\u53EF\u53BB\u2014\u2014\u5B83\u7684\u5F15\u64CE\u662F\u7A7A\u7684\u3002\u5728\u4E0B\u9762\u628A\u5B83\u6307\u5230\u67D0\u4E2A\u5F15\u64CE\uFF0C\u6216\u4ECE state.json \u91CC\u5220\u6389\u7A7A\u7684 autoRouting.<tier>.engine\u3002",engineDefault:"\u5F15\u64CE\u9ED8\u8BA4",ready:"\u25CF \u53EF\u7528",unavailable:"! \u4E0D\u53EF\u7528\u2014\u2014{reason}",classifierTitle:"\u5206\u7C7B\u5668",classifierHint:"\u4E0A\u9762\u51E0\u884C\u8BF4\u7684\u662F\u6BCF\u4E00\u6863**\u8DD1\u4EC0\u4E48**\uFF0C\u8FD9\u91CC\u51B3\u5B9A**\u7531\u8C01\u6765\u9009**\uFF1A\u6253\u5F00\u4E4B\u540E\uFF0C`rove api add --tier auto` \u4F1A\u8BFB\u4EFB\u52A1\u7684\u7B2C\u4E00\u53E5\u8BDD\u66FF\u4F60\u9009\u6863\u3002\u9ED8\u8BA4\u5173\u7740\uFF0C\u4ECE\u6765\u4E0D\u662F\u5FC5\u9700\u7684\uFF0C\u4E5F\u6C38\u8FDC\u4E0D\u4F1A\u8BA9\u5EFA task \u5931\u8D25\u2014\u2014\u6CA1 key\u3001\u65AD\u7F51\u3001\u8D85\u65F6\u3001\u6216\u8005\u5B83\u81EA\u5DF1\u6CA1\u628A\u63E1\uFF0C\u90FD\u53EA\u662F\u8BA9\u4F60\u505C\u5728\u672C\u6765\u5C31\u4F1A\u7528\u7684\u90A3\u4E00\u6863\u4E0A\u3002",classifierDataFlow:"! \u6253\u5F00\u5206\u7C7B\u5668\uFF0C\u4EFB\u52A1\u7684\u7B2C\u4E00\u53E5\u8BDD\u4F1A\u53D1\u7ED9\u4E00\u4E2A**\u4E0D\u662F\u4F60\u9009\u7684\u90A3\u4E2A\u5F15\u64CE\u5382\u5546**\u7684\u7B2C\u4E09\u65B9\u2014\u2014`jev` \u662F TypeSafe System One\uFF0C`custom` \u662F\u4F60\u81EA\u5DF1\u586B\u7684\u5730\u5740\u3002\u5B83\u6BD4\u4F60\u7684\u5F15\u64CE\u66F4\u65E9\u8BFB\u5230\u8FD9\u6BB5\u6587\u5B57\u3002\u5173\u7740\u7684\u65F6\u5019\u4EC0\u4E48\u90FD\u4E0D\u53D1\u3002",classifierLabel:"\u9009\u6863\u65B9\u5F0F",classifierOff:"\u5173",classifierCustomLabel:"\u81EA\u5B9A\u4E49",classifierOffHint:"\u2014\u2014\u4E0D\u5411\u4EFB\u4F55\u5730\u65B9\u53D1\u9001",classifierJevHint:"\u2014\u2014TypeSafe System One\uFF0C\u8D70\u4F60\u81EA\u5DF1\u7684 key \u8BA1\u8D39",classifierCustomHint:"\u2014\u2014\u4F60\u81EA\u5DF1\u7684\u63A5\u53E3\uFF1APOST \u90A3\u6BB5\u6587\u672C\uFF0C\u8FD4\u56DE\u4E00\u4E2A\u6863\u4F4D\u52A0\u4E00\u4E2A\u7F6E\u4FE1\u5EA6",endpointLabel:"\u63A5\u53E3\u5730\u5740",endpointUnset:"\uFF08\u672A\u586B\u2014\u2014\u5148\u586B\u4E00\u4E2A\uFF0C\u518D\u628A\u300C\u9009\u6863\u65B9\u5F0F\u300D\u5207\u5230\u81EA\u5B9A\u4E49\uFF09",endpointTitle:"\u81EA\u5B9A\u4E49\u5206\u7C7B\u5668\u63A5\u53E3",endpointField:"URL",endpointInvalidTitle:"\u4E0D\u662F\u4E00\u4E2A URL",endpointInvalidBody:"\u63A5\u53E3\u5730\u5740\u8981\u4EE5 https:// \u5F00\u5934\uFF1Bhttp:// \u53EA\u5728\u56DE\u73AF\u5730\u5740\uFF08127.0.0.1\u3001localhost\u3001::1\uFF09\u4E0A\u63A5\u53D7\u2014\u2014\u53D1\u5230\u7F51\u7EDC\u4E0A\u7684\u8BDD\uFF0C\u660E\u6587 http \u4F1A\u628A\u4EFB\u52A1\u7684\u524D 1200 \u4E2A\u5B57\u7B26\u539F\u6837\u5E26\u8D70\u3002\u7559\u7A7A\u5219\u6E05\u9664\u3002",thresholdLabel:"\u7F6E\u4FE1\u5EA6\u4E0B\u9650",thresholdHint:"\u2014\u2014\u4F4E\u4E8E\u8FD9\u4E2A\u503C\u5C31\u4E0D\u52A8\u6863\u4F4D",thresholdTitle:"\u7F6E\u4FE1\u5EA6\u4E0B\u9650",thresholdField:"0 \u5230 1",thresholdInvalidTitle:"\u4E0D\u662F\u4E00\u4E2A\u7F6E\u4FE1\u5EA6",thresholdInvalidBody:"\u4E0B\u9650\u662F 0 \u5230 1 \u4E4B\u95F4\u7684\u6570\u3002\u51FA\u5382\u9ED8\u8BA4 0.5\u3002",keyLabel:"API key",keyStored:"\u5DF2\u5B58 {hint}\u2014\u2014enter \u53EF\u66FF\u6362\uFF0C\u7559\u7A7A\u6E05\u9664",keyFromEnv:"\u6765\u81EA\u73AF\u5883\u53D8\u91CF ${env}\u2014\u2014\u73AF\u5883\u53D8\u91CF\u4F18\u5148\u4E8E\u5B58\u8D77\u6765\u7684\u90A3\u4E2A",keyNone:"\u672A\u8BBE\u7F6E\u2014\u2014enter \u7C98\u8D34\u4E00\u4E2A",keyTitle:"{env}",keyPlaceholder:"\u7C98\u8D34 key\uFF1B\u7559\u7A7A\u5219\u6E05\u9664\u5DF2\u5B58\u7684\u90A3\u4E2A",keySaved:"\u25CF key \u5B58\u5728 ~/.rove/secrets.json\uFF08\u4EC5\u672C\u4EBA\u53EF\u8BFB\uFF0C\u4E0D\u4F1A\u8FDB state.json\uFF09",keyCustomUnused:"\u25CF \u81EA\u5B9A\u4E49\u63A5\u53E3\u4E0D\u4F1A\u6536\u5230 Authorization \u5934\u2014\u2014\u5B83\u82E5\u9700\u8981\u51ED\u636E\uFF0C\u628A autoRouting.classifierCustomKeyEnv \u6307\u5411\u5B58\u5B83\u7684\u53D8\u91CF",keyNoVariableTitle:"\u8FD9\u4E2A\u63A5\u53E3\u8FD8\u6CA1\u6709 key \u53D8\u91CF",keyNoVariableBody:"\u5728 autoRouting.classifierCustomKeyEnv \u6307\u5B9A\u5B58 key \u7684\u53D8\u91CF\u4E4B\u524D\uFF0C\u81EA\u5B9A\u4E49\u5206\u7C7B\u5668\u63A5\u53E3\u4E0D\u4F1A\u6536\u5230\u4EFB\u4F55 Authorization \u5934\u3002\u5148\u8BBE\u90A3\u4E2A\u2014\u2014\u5B58\u5728\u4E00\u4E2A\u6CA1\u4EBA\u8BFB\u7684\u540D\u5B57\u4E0B\u9762\u7684 key\uFF0C\u53EA\u662F\u767D\u767D\u843D\u5728\u76D8\u4E0A\u3002",keyWriteFailedTitle:"key \u6CA1\u5B58\u4E0B",keyWriteFailedBody:"\u5199\u4E0D\u4E86 ~/.rove/secrets.json\uFF1A{reason}\u3002\u8BF7\u68C0\u67E5\u76EE\u5F55\u6743\u9650\u548C\u78C1\u76D8\u7A7A\u95F4\uFF0C\u518D\u6B21\u4FDD\u5B58\u3002",keyMissing:"! \u6CA1\u6709 key\u2014\u2014\u4E0D\u4F1A\u66FF\u4F60\u9009\u6863\uFF0C\u4EFB\u52A1\u4FDD\u6301\u539F\u6765\u7684\u6863\u4F4D",keyPresentEnv:"\u25CF key \u6765\u81EA\u672C\u8FDB\u7A0B\u73AF\u5883\u53D8\u91CF ${env}"}};var en17={dev:{reset:"Reset UI state",resetHint:"Clears ~/.config/rove/state.json and ~/.rove/tasks.json, then quits Rove \u2014 relaunch to start fresh. Working session list, pane sizes, theme, model picks all reset. Worktrees on disk and engine session history are not touched.",resetButton:"[enter] Reset",restart:"Restart backend",restartHint:"Stops the Rove daemon and relaunches this window on the installed build \u2014 picks up daemon / orchestrator / engine edits without quitting by hand. Running engine sessions live in the PTY host and survive it; other attached Rove windows reconnect on their own.",restartButton:"[enter] Restart",reload:"Reload settings",reloadHint:"Applies hand edits to ~/.config/rove/state.json (from `rove config`) to this window without a restart.",reloadButton:"[enter] Reload",reloadDone:"Reloaded: {count} changed.",reloadUnchanged:"Already matches state.json; nothing changed.",reloadFailed:"state.json could not be read, nothing changed: {error}",doctorHint:"Daemon wedged or unresponsive? Restart backend above does it from here; from a shell it is `rove daemon restart`. Hosted engine sessions stay alive across a daemon restart.",experimental:"Experimental",remoteHint:"Remote projects (SSH): register a project whose git worktrees live on another host, driven from this local Rove. Unfinished \u2014 Hosted PTY engine launch over SSH is not implemented, and file/diff panes still degrade. Enables `rove add --remote`.",remote:"Remote projects",autoStatusHint:"Auto status flow: a backlog task moves to in_progress when its engine starts a turn, and new sessions get a system-prompt note telling the agent to set in_review itself when the work is done. Never touches done/canceled.",autoStatus:"Auto status flow",dispatcherHint:"Field-notes dispatcher: task sessions file one-line gotchas (`rove api note`), the daemon forwards each to the repo's main session, and that session relays them to the in-flight tasks that benefit (`rove api dispatch`). Web-hosted sessions receive the relays today.",dispatcher:"Field-notes dispatcher"}},zh17={dev:{reset:"\u91CD\u7F6E UI \u72B6\u6001",resetHint:"\u6E05\u7A7A ~/.config/rove/state.json \u548C ~/.rove/tasks.json\uFF0C\u7136\u540E\u9000\u51FA Rove\u2014\u2014\u91CD\u65B0\u542F\u52A8\u5373\u53EF\u4ECE\u5934\u5F00\u59CB\u3002\u5DE5\u4F5C\u4F1A\u8BDD\u5217\u8868\u3001\u9762\u677F\u5C3A\u5BF8\u3001\u4E3B\u9898\u3001\u6A21\u578B\u9009\u62E9\u90FD\u4F1A\u91CD\u7F6E\u3002\u78C1\u76D8\u4E0A\u7684 worktree \u548C\u5F15\u64CE\u4F1A\u8BDD\u5386\u53F2\u4E0D\u53D7\u5F71\u54CD\u3002",resetButton:"[enter] \u91CD\u7F6E",restart:"\u91CD\u542F\u540E\u7AEF",restartHint:"\u505C\u6B62 Rove daemon\uFF0C\u5E76\u4EE5\u5DF2\u5B89\u88C5\u7684\u7248\u672C\u91CD\u65B0\u542F\u52A8\u5F53\u524D\u7A97\u53E3\u2014\u2014\u65E0\u9700\u624B\u52A8\u9000\u51FA\u5373\u53EF\u5E94\u7528 daemon / orchestrator / engine \u7684\u6539\u52A8\u3002\u6B63\u5728\u8FD0\u884C\u7684\u5F15\u64CE\u4F1A\u8BDD\u7531 PTY host \u6258\u7BA1\uFF0C\u4E0D\u53D7\u5F71\u54CD\uFF1B\u5176\u4ED6\u5DF2\u8FDE\u63A5\u7684 Rove \u7A97\u53E3\u4F1A\u81EA\u884C\u91CD\u8FDE\u3002",restartButton:"[enter] \u91CD\u542F",reload:"\u91CD\u65B0\u52A0\u8F7D\u8BBE\u7F6E",reloadHint:"\u628A\u5BF9 ~/.config/rove/state.json \u7684\u624B\u52A8\u4FEE\u6539\uFF08\u6765\u81EA `rove config`\uFF09\u5E94\u7528\u5230\u5F53\u524D\u7A97\u53E3\uFF0C\u65E0\u9700\u91CD\u542F\u3002",reloadButton:"[enter] \u91CD\u65B0\u52A0\u8F7D",reloadDone:"\u5DF2\u91CD\u65B0\u52A0\u8F7D\uFF1A{count} \u9879\u6709\u53D8\u5316\u3002",reloadUnchanged:"\u5DF2\u4E0E state.json \u4E00\u81F4\uFF0C\u6CA1\u6709\u53D8\u5316\u3002",reloadFailed:"\u65E0\u6CD5\u8BFB\u53D6 state.json\uFF0C\u672A\u505A\u4EFB\u4F55\u6539\u52A8\uFF1A{error}",doctorHint:"daemon \u5361\u4F4F\u6216\u65E0\u54CD\u5E94\uFF1F\u4E0A\u9762\u7684\u300C\u91CD\u542F\u540E\u7AEF\u300D\u5C31\u80FD\u5728\u8FD9\u91CC\u5B8C\u6210\uFF1B\u5728 shell \u91CC\u5219\u662F `rove daemon restart`\u3002Hosted PTY \u5F15\u64CE\u4F1A\u8BDD\u4E0D\u4F1A\u56E0 daemon \u91CD\u542F\u800C\u9000\u51FA\u3002",experimental:"\u5B9E\u9A8C\u6027",remoteHint:"\u8FDC\u7A0B\u9879\u76EE\uFF08SSH\uFF09\uFF1A\u6CE8\u518C\u4E00\u4E2A git worktree + \u5F15\u64CE\u90FD\u901A\u8FC7 SSH \u8DD1\u5728\u53E6\u4E00\u53F0\u4E3B\u673A\u4E0A\u3001\u7531\u672C\u5730 Rove \u9A71\u52A8\u7684\u9879\u76EE\u3002\u5C1A\u672A\u5B8C\u6210\u2014\u2014\u6587\u4EF6/diff \u9762\u677F\u5BF9\u8FDC\u7A0B\u4ECD\u4F1A\u964D\u7EA7\u3002\u542F\u7528 `rove add --remote`\u3002",remote:"\u8FDC\u7A0B\u9879\u76EE",autoStatusHint:"\u81EA\u52A8\u72B6\u6001\u6D41\u8F6C\uFF1Abacklog \u4EFB\u52A1\u5728\u5176\u5F15\u64CE\u5F00\u59CB\u4E00\u8F6E\u65F6\u79FB\u5230 in_progress\uFF0C\u65B0\u4F1A\u8BDD\u4F1A\u62FF\u5230\u4E00\u6761\u7CFB\u7EDF\u63D0\u793A\uFF0C\u544A\u8BC9 agent \u5B8C\u6210\u540E\u81EA\u884C\u8BBE\u4E3A in_review\u3002\u7EDD\u4E0D\u89E6\u78B0 done/canceled\u3002",autoStatus:"\u81EA\u52A8\u72B6\u6001\u6D41\u8F6C",dispatcherHint:"\u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668\uFF1A\u4EFB\u52A1\u4F1A\u8BDD\u63D0\u4EA4\u4E00\u884C\u7ECF\u9A8C\uFF08`rove api note`\uFF09\uFF0Cdaemon \u5C06\u6BCF\u6761\u8F6C\u53D1\u7ED9\u4ED3\u5E93\u7684\u4E3B\u4F1A\u8BDD\uFF0C\u4E3B\u4F1A\u8BDD\u518D\u628A\u5B83\u4EEC\u8F6C\u8FBE\u7ED9\u80FD\u53D7\u76CA\u7684\u8FDB\u884C\u4E2D\u4EFB\u52A1\uFF08`rove api dispatch`\uFF09\u3002\u76EE\u524D\u7531 Web \u6258\u7BA1\u7684\u4F1A\u8BDD\u4F1A\u6536\u5230\u8F6C\u8FBE\u3002",dispatcher:"\u73B0\u573A\u7B14\u8BB0\u8C03\u5EA6\u5668"}};var en18={engines:{title:"Engines",hint:"Engines Rove can start on this machine. New tasks start with the default engine; switch an engine off to stop offering it.",keys:"space available \xB7 d default \xB7 enter launch command \xB7 r rename \xB7 x reset/remove",customTag:"custom",available:"available",off:"off",defaultMark:"default",makeDefault:"Make default",status:{checking:"Checking\u2026",unknown:"Status unknown",ready:"Ready",notInstalled:"Not installed",notOnPath:"Not on PATH",signIn:"Sign in needed",integrationMissing:"Integration not installed",integrationOutdated:"Integration outdated",integrationBlocked:"Integration blocked"},detail:{program:"Program",command:"Command",signIn:"Sign-in",reporting:"Live status",adapter:"Adapter",programFound:"{binary} found at {path}.",programMissing:"{binary} is not on PATH. Install the engine's CLI, or point its launch command at it.",programUnknown:"Rove could not check for {binary}.",commandDefault:"{command} (the default)",commandCustom:"{command} (yours)",signedIn:"Signed in.",signedInAs:"Signed in as {who}.",apiKey:"An API key is configured.",token:"A token is configured ({source}).",signedOut:"Not signed in. Sign in with the engine's own CLI.",signInUnknown:"Rove can't see whether this engine is signed in.",signInFailed:"Sign-in check failed: {error}",hooksInstalled:"Rove's hooks are installed, so tabs report their state as it changes.",hooksOutdated:"Rove's hooks are from an older version; reinstall them under Engine integrations.",hooksMissing:"Rove's hooks are not installed; install them under Engine integrations.",hooksAwaitEngine:"Rove's hooks can be installed once the engine is.",hooksUnsupported:"This engine has no hooks for Rove to install.",hooksBlocked:"Rove can't write its hooks into {file}: {reason}",hooksBlockedHere:"Rove can't write its hooks into the engine's config: {reason}",markersYes:"It leaves turn-complete markers that Rove reads back.",markersNo:"It leaves no turn-complete markers.",screenYes:"Screen rules cover what the hooks don't.",screenNo:"No screen rules.",screenNotNeeded:"No screen rules; the hooks report everything.",adapterDeclared:"Borrows the {protocol} adapter.",adapterGeneric:"Generic adapter: no transcript reader, sign-in check or resume.",skill:"Rove skill",skillInstalled:"Installed in {dir}.",skillInstalledHere:"Installed and current.",skillOutdated:"From an older Rove; reinstall it under Rove agent skill.",skillMissing:"Not installed; install it under Rove agent skill."},skill:{title:"Rove agent skill",hint:"Teaches the agent in each engine to drive Rove itself (rove api): start tasks, read other sessions, message them.",install:"Install ({count})",noEngines:"No engine here takes the skill",failed:"Install failed: {reason}",bannerTitle:"ROVE SKILL NOT INSTALLED",bannerHint:"{engines} can't drive Rove yet (start tasks, read other sessions). Click here to install.",bannerHintWeb:"{engines} can't drive Rove yet (start tasks, read other sessions)."},integrations:{title:"Engine integrations",hint:"Hooks Rove writes into each engine's own config, so a tab shows working, waiting or done the moment it happens.",summary:"{installed} of {total} installed",install:"Install missing ({count})",upToDate:"All up to date",remove:"Remove all ({count})",noneInstalled:"Nothing to remove"},addEngine:"+ Add engine",launchCommandTitle:"{name} launch command",displayNameTitle:"{name} display name (blank = default)",addTitle:"Add engine",addStepTitle:"Add engine \xB7 {id}",protocolTitle:"Add engine \xB7 {id} \u2014 protocol",protocolNone:"None \u2014 generic adapter",protocolFooter:"\u2191\u2193 choose \xB7 enter pick \xB7 esc cancel",protocolRow:"protocol {protocol}",protocolGeneric:"generic",idPlaceholder:"lowercase slug, e.g. aider",commandPlaceholder:"e.g. aider --model sonnet",hookTrustHint:"Open {command} in the engine and approve hooks yourself. Written hooks are not proof of trust.",readiness:"CLI: {cli} \xB7 login: {login} \xB7 hooks: {hooks}",cliReady:"available",cliMissing:"missing; install the engine CLI",loginReady:"detected",loginMissing:"sign in with the engine CLI",readinessUnknown:"not observable",hooksWritten:"written",hooksMissing:"not written; Settings \u2192 Engines",hooksOutdated:"outdated; Settings \u2192 Engines",hookWaiting:"No hook event received yet. After approval, send a short prompt to verify activity.",hookReceived:"Hook event recorded for this tab. Send a short prompt to check current reporting; current trust is not inferred.",readinessFailed:"Readiness check unavailable; run rove doctor. No authorization is inferred."},accounts:{checking:"Checking\u2026",notLoggedIn:"\u25CB Not logged in",loggedIn:"\u25CF Logged in: {email}",apiKeyConfigured:"\u25CF API key configured",chatgptLogin:"\u25CF ChatGPT login: {email}",tokenConfigured:"\u25CF Token configured ({source})",detected:"\u25CF Login detected"}},zh18={engines:{title:"\u5F15\u64CE",hint:"Rove \u80FD\u5728\u8FD9\u53F0\u673A\u5668\u4E0A\u542F\u52A8\u7684\u5F15\u64CE\u3002\u65B0\u4EFB\u52A1\u9ED8\u8BA4\u7528\u300C\u9ED8\u8BA4\u300D\u5F15\u64CE\uFF1B\u5173\u6389\u67D0\u4E2A\u5F15\u64CE\uFF0C\u9009\u5F15\u64CE\u65F6\u5C31\u4E0D\u518D\u5217\u51FA\u5B83\u3002",keys:"space \u53EF\u7528 \xB7 d \u8BBE\u4E3A\u9ED8\u8BA4 \xB7 enter \u542F\u52A8\u547D\u4EE4 \xB7 r \u91CD\u547D\u540D \xB7 x \u91CD\u7F6E/\u79FB\u9664",customTag:"\u81EA\u5B9A\u4E49",available:"\u53EF\u7528",off:"\u5DF2\u5173",defaultMark:"\u9ED8\u8BA4",makeDefault:"\u8BBE\u4E3A\u9ED8\u8BA4",status:{checking:"\u68C0\u67E5\u4E2D\u2026",unknown:"\u72B6\u6001\u672A\u77E5",ready:"\u5C31\u7EEA",notInstalled:"\u672A\u5B89\u88C5",notOnPath:"\u4E0D\u5728 PATH \u4E0A",signIn:"\u9700\u8981\u767B\u5F55",integrationMissing:"\u672A\u5B89\u88C5\u63A5\u5165",integrationOutdated:"\u63A5\u5165\u5DF2\u8FC7\u671F",integrationBlocked:"\u63A5\u5165\u88AB\u62D2\u7EDD"},detail:{program:"\u7A0B\u5E8F",command:"\u547D\u4EE4",signIn:"\u767B\u5F55",reporting:"\u5B9E\u65F6\u72B6\u6001",adapter:"\u9002\u914D\u5668",programFound:"{binary} \u4F4D\u4E8E {path}\u3002",programMissing:"{binary} \u4E0D\u5728 PATH \u4E0A\u3002\u8BF7\u5B89\u88C5\u5F15\u64CE CLI\uFF0C\u6216\u628A\u542F\u52A8\u547D\u4EE4\u6307\u5411\u5B83\u3002",programUnknown:"Rove \u65E0\u6CD5\u68C0\u67E5 {binary}\u3002",commandDefault:"{command}\uFF08\u9ED8\u8BA4\uFF09",commandCustom:"{command}\uFF08\u81EA\u5B9A\u4E49\uFF09",signedIn:"\u5DF2\u767B\u5F55\u3002",signedInAs:"\u5DF2\u767B\u5F55\uFF1A{who}\u3002",apiKey:"\u5DF2\u914D\u7F6E API key\u3002",token:"\u5DF2\u914D\u7F6E Token\uFF08{source}\uFF09\u3002",signedOut:"\u672A\u767B\u5F55\u3002\u8BF7\u7528\u5F15\u64CE\u81EA\u5DF1\u7684\u547D\u4EE4\u884C\u767B\u5F55\u3002",signInUnknown:"Rove \u65E0\u6CD5\u5F97\u77E5\u8BE5\u5F15\u64CE\u662F\u5426\u5DF2\u767B\u5F55\u3002",signInFailed:"\u767B\u5F55\u68C0\u67E5\u5931\u8D25\uFF1A{error}",hooksInstalled:"Rove \u7684\u94A9\u5B50\u5DF2\u5B89\u88C5\uFF0C\u6807\u7B7E\u9875\u7684\u72B6\u6001\u4F1A\u5B9E\u65F6\u4E0A\u62A5\u3002",hooksOutdated:"Rove \u7684\u94A9\u5B50\u6765\u81EA\u65E7\u7248\u672C\uFF1B\u8BF7\u5728\u300C\u5F15\u64CE\u63A5\u5165\u300D\u91CC\u91CD\u65B0\u5B89\u88C5\u3002",hooksMissing:"Rove \u7684\u94A9\u5B50\u672A\u5B89\u88C5\uFF1B\u8BF7\u5728\u300C\u5F15\u64CE\u63A5\u5165\u300D\u91CC\u5B89\u88C5\u3002",hooksAwaitEngine:"\u5F15\u64CE\u5B89\u88C5\u540E\u624D\u80FD\u88C5 Rove \u7684\u94A9\u5B50\u3002",hooksUnsupported:"\u8BE5\u5F15\u64CE\u6CA1\u6709\u53EF\u4F9B Rove \u5B89\u88C5\u7684\u94A9\u5B50\u3002",hooksBlocked:"Rove \u65E0\u6CD5\u628A\u94A9\u5B50\u5199\u5165 {file}\uFF1A{reason}",hooksBlockedHere:"Rove \u65E0\u6CD5\u628A\u94A9\u5B50\u5199\u5165\u5F15\u64CE\u914D\u7F6E\uFF1A{reason}",markersYes:"\u5B83\u4F1A\u7559\u4E0B\u56DE\u5408\u5B8C\u6210\u6807\u8BB0\uFF0CRove \u53EF\u4EE5\u8BFB\u56DE\u3002",markersNo:"\u5B83\u4E0D\u7559\u4E0B\u56DE\u5408\u5B8C\u6210\u6807\u8BB0\u3002",screenYes:"\u8BFB\u5C4F\u89C4\u5219\u515C\u5E95\u94A9\u5B50\u8986\u76D6\u4E0D\u5230\u7684\u72B6\u6001\u3002",screenNo:"\u6CA1\u6709\u8BFB\u5C4F\u89C4\u5219\u3002",screenNotNeeded:"\u6CA1\u6709\u8BFB\u5C4F\u89C4\u5219\uFF1B\u94A9\u5B50\u5DF2\u62A5\u5168\u6240\u6709\u72B6\u6001\u3002",adapterDeclared:"\u501F\u7528 {protocol} \u9002\u914D\u5668\u3002",adapterGeneric:"\u901A\u7528\u9002\u914D\u5668\uFF1A\u6CA1\u6709\u4F1A\u8BDD\u8BB0\u5F55\u8BFB\u53D6\u3001\u767B\u5F55\u68C0\u67E5\u548C\u6062\u590D\u3002",skill:"Rove \u6280\u80FD",skillInstalled:"\u5DF2\u5B89\u88C5\u5728 {dir}\u3002",skillInstalledHere:"\u5DF2\u5B89\u88C5\uFF0C\u662F\u6700\u65B0\u7248\u3002",skillOutdated:"\u6765\u81EA\u65E7\u7248 Rove\uFF1B\u8BF7\u5728\u300CRove \u667A\u80FD\u4F53\u6280\u80FD\u300D\u91CC\u91CD\u65B0\u5B89\u88C5\u3002",skillMissing:"\u672A\u5B89\u88C5\uFF1B\u8BF7\u5728\u300CRove \u667A\u80FD\u4F53\u6280\u80FD\u300D\u91CC\u5B89\u88C5\u3002"},skill:{title:"Rove \u667A\u80FD\u4F53\u6280\u80FD",hint:"\u6559\u4F1A\u5404\u5F15\u64CE\u91CC\u7684\u667A\u80FD\u4F53\u81EA\u5DF1\u64CD\u4F5C Rove\uFF08rove api\uFF09\uFF1A\u5F00\u4EFB\u52A1\u3001\u8BFB\u5176\u4ED6\u4F1A\u8BDD\u3001\u7ED9\u5B83\u4EEC\u53D1\u6D88\u606F\u3002",install:"\u5B89\u88C5\uFF08{count}\uFF09",noEngines:"\u8FD9\u53F0\u673A\u5668\u4E0A\u6CA1\u6709\u80FD\u88C5\u6280\u80FD\u7684\u5F15\u64CE",failed:"\u5B89\u88C5\u5931\u8D25\uFF1A{reason}",bannerTitle:"ROVE \u6280\u80FD\u672A\u5B89\u88C5",bannerHint:"{engines} \u8FD8\u4E0D\u80FD\u64CD\u4F5C Rove\uFF08\u5F00\u4EFB\u52A1\u3001\u8BFB\u5176\u4ED6\u4F1A\u8BDD\uFF09\u3002\u70B9\u8FD9\u91CC\u5B89\u88C5\u3002",bannerHintWeb:"{engines} \u8FD8\u4E0D\u80FD\u64CD\u4F5C Rove\uFF08\u5F00\u4EFB\u52A1\u3001\u8BFB\u5176\u4ED6\u4F1A\u8BDD\uFF09\u3002"},integrations:{title:"\u5F15\u64CE\u63A5\u5165",hint:"Rove \u5199\u8FDB\u5404\u5F15\u64CE\u81EA\u8EAB\u914D\u7F6E\u7684\u94A9\u5B50\uFF0C\u8BA9\u6807\u7B7E\u9875\u5728\u5DE5\u4F5C\u3001\u7B49\u5F85\u3001\u5B8C\u6210\u7684\u90A3\u4E00\u523B\u5C31\u663E\u793A\u51FA\u6765\u3002",summary:"\u5DF2\u5B89\u88C5 {installed}/{total}",install:"\u5B89\u88C5\u7F3A\u5931\u7684\uFF08{count}\uFF09",upToDate:"\u5168\u90E8\u5DF2\u662F\u6700\u65B0",remove:"\u5168\u90E8\u79FB\u9664\uFF08{count}\uFF09",noneInstalled:"\u6CA1\u6709\u53EF\u79FB\u9664\u7684"},addEngine:"+ \u6DFB\u52A0\u5F15\u64CE",launchCommandTitle:"{name} \u7684\u542F\u52A8\u547D\u4EE4",displayNameTitle:"{name} \u7684\u663E\u793A\u540D\u79F0\uFF08\u7559\u7A7A = \u9ED8\u8BA4\uFF09",addTitle:"\u6DFB\u52A0\u5F15\u64CE",addStepTitle:"\u6DFB\u52A0\u5F15\u64CE \xB7 {id}",protocolTitle:"\u6DFB\u52A0\u5F15\u64CE \xB7 {id} \u2014\u2014 \u534F\u8BAE",protocolNone:"\u65E0 \u2014\u2014 \u901A\u7528\u9002\u914D\u5668",protocolFooter:"\u2191\u2193 \u9009\u62E9 \xB7 enter \u786E\u8BA4 \xB7 esc \u53D6\u6D88",protocolRow:"\u534F\u8BAE {protocol}",protocolGeneric:"\u901A\u7528",idPlaceholder:"\u5C0F\u5199\u77ED\u540D\uFF0C\u5982 aider",commandPlaceholder:"\u5982 aider --model sonnet",hookTrustHint:"\u5728\u5F15\u64CE\u4E2D\u6253\u5F00 {command}\uFF0C\u7531\u4F60\u81EA\u884C\u6279\u51C6 hooks\u3002\u5199\u5165\u4E0D\u4EE3\u8868\u5DF2\u6388\u6743\u3002",readiness:"CLI\uFF1A{cli} \xB7 \u767B\u5F55\uFF1A{login} \xB7 hooks\uFF1A{hooks}",cliReady:"\u53EF\u7528",cliMissing:"\u7F3A\u5931\uFF1B\u8BF7\u5B89\u88C5\u5F15\u64CE CLI",loginReady:"\u5DF2\u68C0\u6D4B\u5230",loginMissing:"\u8BF7\u901A\u8FC7\u5F15\u64CE CLI \u767B\u5F55",readinessUnknown:"\u65E0\u6CD5\u89C2\u6D4B",hooksWritten:"\u5DF2\u5199\u5165",hooksMissing:"\u672A\u5199\u5165\uFF1B\u8BBE\u7F6E \u2192 \u5F15\u64CE",hooksOutdated:"\u5DF2\u8FC7\u65F6\uFF1B\u8BBE\u7F6E \u2192 \u5F15\u64CE",hookWaiting:"\u5C1A\u672A\u6536\u5230 hook \u4E8B\u4EF6\u3002\u6388\u6743\u540E\u53D1\u9001\u4E00\u6761\u7B80\u77ED\u63D0\u793A\uFF0C\u9A8C\u8BC1\u6D3B\u52A8\u72B6\u6001\u3002",hookReceived:"\u5DF2\u8BB0\u5F55\u6B64\u6807\u7B7E\u9875\u7684 hook \u4E8B\u4EF6\u3002\u53D1\u9001\u7B80\u77ED\u63D0\u793A\u4EE5\u68C0\u67E5\u5F53\u524D\u4E0A\u62A5\uFF1B\u4E0D\u636E\u6B64\u63A8\u65AD\u5F53\u524D\u6388\u6743\u3002",readinessFailed:"\u65E0\u6CD5\u68C0\u67E5\u5C31\u7EEA\u72B6\u6001\uFF1B\u8BF7\u8FD0\u884C rove doctor\u3002\u4E0D\u4F1A\u636E\u6B64\u63A8\u65AD\u5DF2\u6388\u6743\u3002"},accounts:{checking:"\u68C0\u67E5\u4E2D\u2026",notLoggedIn:"\u25CB \u672A\u767B\u5F55",loggedIn:"\u25CF \u5DF2\u767B\u5F55: {email}",apiKeyConfigured:"\u25CF \u5DF2\u914D\u7F6E API key",chatgptLogin:"\u25CF ChatGPT \u767B\u5F55: {email}",tokenConfigured:"\u25CF \u5DF2\u914D\u7F6E Token ({source})",detected:"\u25CF \u68C0\u6D4B\u5230\u767B\u5F55"}};var en19={plugins:{title:"Plugins",hint:"Rove's first-party mods first: enter (or click) installs or uninstalls one, and uninstalling keeps its data on disk. Then the plugins registered in ~/.rove/plugins.json: enter toggles one on or off \u2014 the daemon watches the file, so the change applies live. Rows indented under a plugin are the settings it declares; enter edits one, and the value reaches the plugin on its next run. Install and remove them from the shell: `rove plugin install <owner/repo>`, `rove plugin link <dir>`.",empty:"Kanban and Issues are first-party mods: enter (or click) installs one. No other plugins registered; add one with `rove plugin install <owner/repo>` \u2014 browse the `rove-plugin` topic on GitHub.",sourceLink:"linked {path}",sourceGithub:"{spec}",sourceBuiltIn:"first-party mod \xB7 not installed",sourceBuiltInInstalled:"first-party mod \xB7 installed",updateAvailable:"update available \u2014 rove plugin update",declares:"{actions} actions \xB7 {events} events \xB7 {panes} panes",declaresWithEngines:"{actions} actions \xB7 {events} events \xB7 {panes} panes \xB7 {engines} engines",declaresPages:"\xB7 {pages} pages",pageFailed:"page {detail}",manifestUnreadable:"manifest unreadable; check the rove-plugin.toml path and TOML syntax",unsupportedPlatform:"\xB7 not supported on this platform",noHooks:"\xB7 no hooks declared",lastRun:"\xB7 last run {label} {status} {ago} ago",neverRun:"\xB7 never run",runOk:"ok",runRunning:"still running",runFailed:"failed to start; inspect `rove plugin log <id>`",runExit:"exit {code}",settingUnset:"(unset \u2014 enter to edit)",settingInvalidTitle:"Not a number",settingInvalidBody:"{label} only accepts a number. Keeping the previous value."},marketplace:{title:"Marketplace",hint:"Plugins published under the `rove-plugin` topic on GitHub, most-starred first. enter (or click) shows what the install would run and asks before running any of it. The listing is re-queried each time you open this section.",loading:"Searching GitHub\u2026",empty:"No plugins listed.",offline:"GitHub is unreachable \u2014 showing first-party plugins only. Re-open this section to retry.",installedTag:"installed",firstParty:"first-party",preparing:"cloning {ref}\u2026",installing:"building and registering {name}\u2026",installed:"installed {id} v{version} \u2014 it is enabled, and appears under Plugins.",cancelled:"install cancelled; nothing was run.",failed:"install failed: {error}. Check the build output and retry from Marketplace.",alreadyInstalled:"already installed as {id} \u2014 manage it under Plugins.",confirmTitle:"Install {name}?",confirmInstall:"install",previewSource:"source: {source}",previewCommands:"Commands this plugin declares:",previewNoCommands:"This plugin declares no commands.",previewWarning:"warning: {warning}",previewTrust:"Installing runs the build commands above, and the rest run later on the events they declare. They run as you, with your environment, and nothing is sandboxed."}},zh19={plugins:{title:"\u63D2\u4EF6",hint:"\u5148\u5217 Rove \u5B98\u65B9 mod\uFF1Aenter\uFF08\u6216\u70B9\u51FB\uFF09\u5B89\u88C5\u6216\u5378\u8F7D\uFF0C\u5378\u8F7D\u540E\u6570\u636E\u4ECD\u7559\u5728\u78C1\u76D8\u4E0A\u3002\u518D\u5217\u5728 ~/.rove/plugins.json \u91CC\u6CE8\u518C\u7684\u63D2\u4EF6\uFF1Aenter \u5207\u6362\u542F\u7528/\u7981\u7528\u2014\u2014daemon \u76D1\u542C\u8BE5\u6587\u4EF6\uFF0C\u6539\u52A8\u5B9E\u65F6\u751F\u6548\u3002\u63D2\u4EF6\u4E0B\u65B9\u7F29\u8FDB\u7684\u884C\u662F\u5B83\u58F0\u660E\u7684\u8BBE\u7F6E\u9879\uFF0Center \u7F16\u8F91\uFF0C\u65B0\u503C\u5728\u63D2\u4EF6\u4E0B\u6B21\u8FD0\u884C\u65F6\u751F\u6548\u3002\u5B89\u88C5\u4E0E\u79FB\u9664\u5728 shell \u91CC\u505A\uFF1A`rove plugin install <owner/repo>`\u3001`rove plugin link <dir>`\u3002",empty:"Kanban \u548C Issues \u662F\u5B98\u65B9 mod\uFF1Aenter\uFF08\u6216\u70B9\u51FB\uFF09\u5B89\u88C5\u3002\u5C1A\u672A\u6CE8\u518C\u5176\u4ED6\u63D2\u4EF6\uFF1B\u7528 `rove plugin install <owner/repo>` \u5B89\u88C5\u4E00\u4E2A\u2014\u2014\u53EF\u5728 GitHub \u7684 `rove-plugin` \u8BDD\u9898\u4E0B\u6D4F\u89C8\u3002",sourceLink:"\u672C\u5730\u94FE\u63A5 {path}",sourceGithub:"{spec}",sourceBuiltIn:"\u5B98\u65B9 mod \xB7 \u672A\u5B89\u88C5",sourceBuiltInInstalled:"\u5B98\u65B9 mod \xB7 \u5DF2\u5B89\u88C5",updateAvailable:"\u6709\u65B0\u7248\u672C \u2014 rove plugin update",declares:"{actions} \u4E2A\u52A8\u4F5C \xB7 {events} \u4E2A\u4E8B\u4EF6 \xB7 {panes} \u4E2A\u9762\u677F",declaresWithEngines:"{actions} \u4E2A\u52A8\u4F5C \xB7 {events} \u4E2A\u4E8B\u4EF6 \xB7 {panes} \u4E2A\u9762\u677F \xB7 {engines} \u4E2A\u5F15\u64CE",declaresPages:"\xB7 {pages} \u4E2A\u9875\u9762",pageFailed:"\u9875\u9762 {detail}",manifestUnreadable:"manifest \u65E0\u6CD5\u89E3\u6790\uFF1B\u8BF7\u68C0\u67E5rove-plugin.toml \u7684\u8DEF\u5F84\u548C TOML \u8BED\u6CD5",unsupportedPlatform:"\xB7 \u4E0D\u652F\u6301\u5F53\u524D\u5E73\u53F0",noHooks:"\xB7 \u672A\u58F0\u660E\u94A9\u5B50",lastRun:"\xB7 \u4E0A\u6B21\u8FD0\u884C {label} {status} {ago}\u524D",neverRun:"\xB7 \u5C1A\u672A\u8FD0\u884C\u8FC7",runOk:"\u6210\u529F",runRunning:"\u4ECD\u5728\u8FD0\u884C",runFailed:"\u542F\u52A8\u5931\u8D25\uFF1B\u8BF7\u67E5\u770B `rove plugin log <id>`",runExit:"\u9000\u51FA\u7801 {code}",settingUnset:"(\u672A\u8BBE\u7F6E \u2014 enter \u7F16\u8F91)",settingInvalidTitle:"\u4E0D\u662F\u6570\u5B57",settingInvalidBody:"{label} \u53EA\u63A5\u53D7\u6570\u5B57\uFF0C\u4FDD\u7559\u539F\u503C\u3002"},marketplace:{title:"\u63D2\u4EF6\u5E02\u573A",hint:"GitHub \u4E0A `rove-plugin` \u8BDD\u9898\u4E0B\u53D1\u5E03\u7684\u63D2\u4EF6\uFF0C\u6309 star \u6570\u6392\u5E8F\u3002enter\uFF08\u6216\u70B9\u51FB\uFF09\u4F1A\u5148\u5217\u51FA\u5B89\u88C5\u4F1A\u6267\u884C\u7684\u547D\u4EE4\uFF0C\u786E\u8BA4\u540E\u624D\u771F\u6B63\u6267\u884C\u3002\u6BCF\u6B21\u8FDB\u5165\u672C\u533A\u5757\u90FD\u4F1A\u91CD\u65B0\u67E5\u8BE2\u5217\u8868\u3002",loading:"\u6B63\u5728\u641C\u7D22 GitHub\u2026",empty:"\u5217\u8868\u4E3A\u7A7A\u3002",offline:"GitHub \u4E0D\u53EF\u8FBE\u2014\u2014\u53EA\u663E\u793A\u9996\u65B9\u63D2\u4EF6\u3002\u91CD\u65B0\u8FDB\u5165\u672C\u533A\u5757\u53EF\u518D\u8BD5\u4E00\u6B21\u3002",installedTag:"\u5DF2\u5B89\u88C5",firstParty:"\u9996\u65B9",preparing:"\u6B63\u5728\u514B\u9686 {ref}\u2026",installing:"\u6B63\u5728\u6784\u5EFA\u5E76\u6CE8\u518C {name}\u2026",installed:"\u5DF2\u5B89\u88C5 {id} v{version}\u2014\u2014\u5DF2\u542F\u7528\uFF0C\u53EF\u5728\u300C\u63D2\u4EF6\u300D\u533A\u5757\u7BA1\u7406\u3002",cancelled:"\u5DF2\u53D6\u6D88\u5B89\u88C5\uFF0C\u6CA1\u6709\u6267\u884C\u4EFB\u4F55\u547D\u4EE4\u3002",failed:"\u5B89\u88C5\u5931\u8D25\uFF1A{error}\u3002\u8BF7\u68C0\u67E5\u6784\u5EFA\u8F93\u51FA\uFF0C\u518D\u4ECE\u63D2\u4EF6\u5E02\u573A\u91CD\u8BD5\u3002",alreadyInstalled:"\u5DF2\u5B89\u88C5\u4E3A {id}\u2014\u2014\u5728\u300C\u63D2\u4EF6\u300D\u533A\u5757\u7BA1\u7406\u3002",confirmTitle:"\u5B89\u88C5 {name}\uFF1F",confirmInstall:"\u5B89\u88C5",previewSource:"\u6765\u6E90\uFF1A{source}",previewCommands:"\u8BE5\u63D2\u4EF6\u58F0\u660E\u7684\u547D\u4EE4\uFF1A",previewNoCommands:"\u8BE5\u63D2\u4EF6\u672A\u58F0\u660E\u4EFB\u4F55\u547D\u4EE4\u3002",previewWarning:"\u8B66\u544A\uFF1A{warning}",previewTrust:"\u5B89\u88C5\u4F1A\u6267\u884C\u4E0A\u9762\u7684 build \u547D\u4EE4\uFF0C\u5176\u4F59\u547D\u4EE4\u4F1A\u5728\u5B83\u4EEC\u58F0\u660E\u7684\u4E8B\u4EF6\u53D1\u751F\u65F6\u6267\u884C\u3002\u5B83\u4EEC\u4EE5\u4F60\u7684\u8EAB\u4EFD\u3001\u5E26\u4F60\u7684\u73AF\u5883\u53D8\u91CF\u8FD0\u884C\uFF0C\u6CA1\u6709\u4EFB\u4F55\u6C99\u7BB1\u3002"}};var en20={appearance:{enabled:"On",disabled:"Off",borderFlow:"Flowing gradient",borderStill:"Still",glyphsBraille:"Braille",glyphsStarburst:"Starburst (needs a font with the Dingbats block)",glyphsAscii:"ASCII",titleShimmer:"Shimmer",titleStill:"Still",preview:"Workspace preview",tasks:"Tasks",terminal:"Terminal",files:"Files",testsPassed:"Tests passed",transparent:"Transparent background",opaque:"Opaque background",modeDark:"Dark",modeLight:"Light",modeAuto:"Auto (follow the terminal)",openHint:"Enter to choose an option and preview it.",chooseHint:"\u2191/\u2193 or j/k preview \xB7 enter apply \xB7 esc cancel"},title:"Settings",esc:"esc",nav:{default:"j/k pick \xB7 h/l switch level \xB7 enter activate \xB7 esc close",feedback:"tab next field \xB7 enter sends on Send \xB7 esc close"},sections:{general:"General",engines:"Engines",autoRouting:"Auto routing",plugins:"Plugins",marketplace:"Marketplace",keys:"Keybindings",feedback:"Feedback",dev:"Dev"},general:{usage:"USAGE",theme:"Theme",themeMode:"Mode",themeHint:"l to enter list \xB7 j/k to highlight \xB7 enter to apply",language:"Language",languageHint:"Display language for Rove's UI. l to enter list \xB7 j/k to highlight \xB7 enter to apply.",transparent:"Transparent background",transparentHint:"Drops the renderer's bg fill so the host terminal shows through. enter toggles.",on:"[x] on",off:"[ ] off",focusAccent:"Focus accent",focusAccentHint:"Color of focused pane title, \u258C marker, and split borders.",accentPrimary:"Primary (brand accent)",accentSuccess:"Success (legacy green)",accentInfo:"Info (cool blue)",appearance:"Appearance",appearanceHint:"How split panes draw.",splitStyle:"Split panes",workingBorder:"Working border",taskColors:"Task colors",glyphSet:"State glyphs",colorblind:"Colorblind diff colours",runningTitle:"Running title",splitBox:"Box frames",splitLine:"Divider line",splitRail:"Accent rail",splitRule:"Top rule",notifications:"Notifications",notificationsHint:"When a background tab finishes or pauses on an approval.",toast:"Toast",toastHint:"bottom-right popup",sound:"Sound",soundHint:"bell + chime + an OSC 9 desktop notification (rides SSH)",soundVolume:"Chime volume \u2014 {percent}%",soundVolumeHint:"enter cycles; applies to the next chime",crossTask:"Cross-task",crossTaskHint:"also for a task you switched away from",finishedAlerts:"Finished turns",finishedAlertsHint:"off: only approvals and errors alert; the unread dot stays",keyHints:"Keyboard hints",keyHintsHint:"The status-bar reminder and the first-use hints in the sidebar and files panes.",keyHintsShow:"Show keyboard hints",keyHintsShowHint:"re-enabling relights hints dismissed by use",zen:"Zen mode",zenHint:"The `zen` chip and `prefix`+z hide Files, keeping the Tasks rail and workspace.",zenDefaultOn:"Start in zen mode",updates:"Updates",updatesHint:"Stable is the default channel; next previews the coming release; nightly is built from main every day.",updateChannelTitle:"Release channel",updateChannel:"Channel: {channel}",updateChannelHint:"enter cycles stable / next / nightly; `rove update` follows it",updateChannelName:{latest:"stable",next:"next preview",nightly:"nightly preview"},updateNotify:"Notify on updates",updateNotifyHint:"new versions on this channel; off hides the update chip, and checking by hand still reports",updateCheck:"[ Check for updates ]",updateCheckHint:"asks npm for the newest release on this channel right now",updateCheckButton:"Check for updates",updateChecking:"Checking\u2026",updateOpenPage:"Open Update page",updateOpenPageRow:"[ Open Update page ]",railFold:"Folded task rail",railFoldHint:"What the rail shows once folded away from its corner control.",railFoldRow:"Folded rail shows: {style}",railFoldRowHint:"enter cycles",railFoldGlyphs:"status glyphs",railFoldInitials:"glyph + initials",railFoldHairline:"colour band only",editor:"Editor",editorHint:"What enter opens a file with in the file tree \u2014 diff mode when the editor supports it, the read-only preview when it isn't installed.",editorRow:"editor: < {kind} >",editorRowHint:"auto follows $VISUAL / $EDITOR, else nvim / vim / emacs / nano",editorCustom:"custom: {cmd}",editorCustomUnset:"(unset \u2014 enter to edit)",worktree:"Worktree location",worktreeHint:"Where new task worktrees are created. New tasks only.",worktreeBase:"location: < {kind} >",worktreeBaseHint:"custom takes `~`, a relative path, or a leading `$project_dir`",worktreeKindDefault:"default ~/.rove/worktrees",worktreeKindNext:"next to project",worktreeKindCustom:"custom",worktreeCustom:"custom: {path}",worktreeCustomUnset:"(unset \u2014 enter to edit)",worktreeBaseTitle:"Custom worktree location (blank = default; $project_dir = project root)",worktreeBaseField:"PATH",editorCustomTitle:"Custom editor command (use {file} for the path)",worktreeBaseInvalidTitle:"Can't use that worktree location",worktreeBaseTokenBody:"{token} only expands as the leading path segment (e.g. {token}/../rove-worktrees). Keeping the previous setting.",worktreeBaseUnusableBody:"{path} isn't usable ({error}). Keeping the previous setting \u2014 pick a writable directory.",terminal:"Terminal",terminalHint:"Applies to terminals opened after the change.",scrollbackRow:"scrollback: {rows} rows",scrollbackRowHint:"100\u2013100000 \xB7 larger costs proportionally more CPU per redraw",scrollbackTitle:"Terminal scrollback rows (100\u2013100000)",scrollbackField:"ROWS",scrollbackInvalidTitle:"Not a number",scrollbackInvalidBody:"Scrollback must be a number of rows (e.g. 1000). Keeping the previous setting.",tabStripRow:"tab strip: {mode}",tabStripMode:{never:"off \u2014 the sidebar tree lists tabs",multipleOnly:"only with 2+ tabs",always:"always"}},field:{command:"COMMAND",name:"NAME",id:"ID"},action:{save:"save",next:"next",add:"add"},reset:{title:"Reset UI state?",body:"Wipes ~/.config/rove/state.json and ~/.rove/tasks.json, then quits Rove \u2014 relaunch for a fresh start with an empty working session list. Worktrees on disk and engine session history are NOT touched.",done:"Rove: UI state reset. Relaunch Rove to start fresh.",failedTitle:"UI state was not reset",failedBody:"Could not write the settings file. Your settings and tasks have been kept. Try resetting again."},restart:{title:"Restart backend?",body:"Stops the daemon and relaunches this Rove on the installed build, so daemon / orchestrator / engine edits take effect. Running engine sessions live in the PTY host and keep going; open tabs come back. Any other attached windows reconnect on their own.",done:"Rove: restarting the backend..."},stateWrite:{failedTitle:"Settings were not saved",failedBody:"{file} could not be written ({keys}). Check its directory permissions and free disk space, then save again."},...en16,...en18,...en19,keybindings:{title:"Keybindings",hint:"Rebind direct and prefix chords in your own YAML file; changes reload live. Press F1 anywhere for the live keymap with every binding id.",configFile:"Config file",notCreated:" (not created yet)",prefixTitle:"Command layer ({prefix})",prefixHint:"Bare keys act in the focused pane; a small one-press set covers frequent Rove actions; {prefix} opens the command layer ({timeout}ms second-stroke window). Prefix bindings keep their pane scope and modal rules.",tapPresentation:"Prefix tap",tapPresentationHint:"Choose whether the complete guide also marks controls already on screen.",tapPresentationLocal:"On-screen entries + complete guide (default)",tapPresentationGuide:"Complete guide only",prefixDisabled:"disabled",fixed:"Fixed (not rebindable): {ids}.",createHint:"No overrides file yet. Rove can write one for you, fully commented \u2014 nothing is rebound until you uncomment a line.",createFile:"[enter] Create keybindings.yaml",overridesApplied:"Overrides applied",none:"none",unbound:"(unbound)",defaultKeys:"default: {keys}",warnings:"Warnings"},feedback:{title:"Feedback",hint:"Sends a GitHub Discussion to the Rove repo through `gh`. Requires `gh auth login`; category defaults to Feedback.",titleLabel:"title",titlePlaceholder:"Short summary",descriptionLabel:"description",descriptionPlaceholder:"What happened? (enter for a new line \xB7 tab to Send)",send:"[enter] Send to GitHub Discussions"},...en17},zh20={appearance:{enabled:"\u5F00\u542F",disabled:"\u5173\u95ED",borderFlow:"\u6D41\u52A8\u6E10\u53D8",borderStill:"\u9759\u6B62",glyphsBraille:"\u76F2\u6587\u70B9",glyphsStarburst:"\u661F\u8292\uFF08\u9700\u8981\u542B Dingbats \u7B26\u53F7\u533A\u7684\u5B57\u4F53\uFF09",glyphsAscii:"ASCII",titleShimmer:"\u6D41\u5149",titleStill:"\u9759\u6B62",preview:"\u5DE5\u4F5C\u533A\u9884\u89C8",tasks:"\u4EFB\u52A1",terminal:"\u7EC8\u7AEF",files:"\u6587\u4EF6",testsPassed:"\u6D4B\u8BD5\u901A\u8FC7",transparent:"\u900F\u660E\u80CC\u666F",opaque:"\u4E0D\u900F\u660E\u80CC\u666F",modeDark:"\u6DF1\u8272",modeLight:"\u6D45\u8272",modeAuto:"\u81EA\u52A8\uFF08\u8DDF\u968F\u7EC8\u7AEF\uFF09",openHint:"\u6309 Enter \u6253\u5F00\u9009\u9879\u548C\u9884\u89C8\u3002",chooseHint:"\u2191/\u2193 \u6216 j/k \u9884\u89C8 \xB7 enter \u5E94\u7528 \xB7 esc \u53D6\u6D88"},title:"\u8BBE\u7F6E",esc:"esc",nav:{default:"j/k \u9009\u62E9 \xB7 h/l \u5207\u6362\u5C42\u7EA7 \xB7 enter \u786E\u8BA4 \xB7 esc \u5173\u95ED",feedback:"tab \u4E0B\u4E00\u9879 \xB7 enter \u5728\u53D1\u9001\u9879\u53D1\u9001 \xB7 esc \u5173\u95ED"},sections:{general:"\u901A\u7528",autoRouting:"\u81EA\u52A8\u8DEF\u7531",engines:"\u5F15\u64CE",plugins:"\u63D2\u4EF6",marketplace:"\u63D2\u4EF6\u5E02\u573A",keys:"\u5FEB\u6377\u952E",feedback:"\u53CD\u9988",dev:"\u5F00\u53D1"},general:{usage:"\u7528\u91CF",theme:"\u4E3B\u9898",themeMode:"\u660E\u6697",themeHint:"l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528",language:"\u8BED\u8A00",languageHint:"Rove \u754C\u9762\u7684\u663E\u793A\u8BED\u8A00\u3002l \u8FDB\u5165\u5217\u8868 \xB7 j/k \u9AD8\u4EAE \xB7 enter \u5E94\u7528\u3002",transparent:"\u900F\u660E\u80CC\u666F",transparentHint:"\u53BB\u6389\u6E32\u67D3\u5668\u7684\u80CC\u666F\u586B\u5145\uFF0C\u8BA9\u5BBF\u4E3B\u7EC8\u7AEF\u900F\u51FA\u6765\u3002\u6309 enter \u5207\u6362\u3002",on:"[x] \u5F00",off:"[ ] \u5173",focusAccent:"\u805A\u7126\u5F3A\u8C03\u8272",focusAccentHint:"\u805A\u7126\u9762\u677F\u6807\u9898\u3001\u258C \u6807\u8BB0\u548C\u5206\u9694\u8FB9\u6846\u7684\u989C\u8272\u3002",accentPrimary:"\u4E3B\u8272\uFF08\u54C1\u724C\u5F3A\u8C03\u8272\uFF09",accentSuccess:"\u6210\u529F\u8272\uFF08\u4F20\u7EDF\u7EFF\uFF09",accentInfo:"\u4FE1\u606F\u8272\uFF08\u51B7\u84DD\uFF09",appearance:"\u5916\u89C2",appearanceHint:"\u5206\u5C4F\u9762\u677F\u600E\u4E48\u753B\u8FB9\u3002",splitStyle:"\u5206\u5C4F\u9762\u677F",workingBorder:"\u8FD0\u884C\u4E2D\u8FB9\u6846",taskColors:"\u4EFB\u52A1\u914D\u8272",glyphSet:"\u72B6\u6001\u7B26\u53F7",colorblind:"\u8272\u76F2\u53CB\u597D\u7684\u589E\u5220\u914D\u8272",runningTitle:"\u8FD0\u884C\u4E2D\u6807\u9898",splitBox:"\u65B9\u6846\u8FB9\u6846",splitLine:"\u5355\u7EBF\u5206\u9694",splitRail:"\u5DE6\u4FA7\u5F3A\u8C03\u6761",splitRule:"\u9876\u90E8\u6A2A\u7EBF",notifications:"\u901A\u77E5",notificationsHint:"\u540E\u53F0\u6807\u7B7E\u5B8C\u6210\u6216\u5728\u5BA1\u6279\u5904\u6682\u505C\u65F6\u89E6\u53D1\u3002",toast:"Toast \u5F39\u7A97",toastHint:"\u53F3\u4E0B\u89D2\u5F39\u7A97",sound:"\u58F0\u97F3",soundHint:"\u54CD\u94C3 + \u63D0\u793A\u97F3 + OSC 9 \u684C\u9762\u901A\u77E5\uFF08\u7ECF SSH \u76F4\u8FBE\u672C\u5730\uFF09",soundVolume:"\u63D0\u793A\u97F3\u97F3\u91CF \u2014 {percent}%",soundVolumeHint:"\u56DE\u8F66\u5FAA\u73AF\u5207\u6362\uFF1B\u4E0B\u4E00\u58F0\u63D0\u793A\u97F3\u751F\u6548",crossTask:"\u8DE8\u4EFB\u52A1",crossTaskHint:"\u4F60\u5DF2\u5207\u8D70\u7684\u4EFB\u52A1\u4E5F\u901A\u77E5",finishedAlerts:"\u56DE\u5408\u5B8C\u6210",finishedAlertsHint:"\u5173\u95ED\u540E\u53EA\u6709\u5BA1\u6279\u548C\u9519\u8BEF\u4F1A\u63D0\u9192\uFF1B\u672A\u8BFB\u6807\u8BB0\u7167\u5E38",keyHints:"\u952E\u76D8\u63D0\u793A",keyHintsHint:"\u72B6\u6001\u680F\u63D0\u9192\uFF0C\u4EE5\u53CA\u4FA7\u680F\u548C\u6587\u4EF6\u9762\u677F\u7684\u9996\u7528\u63D0\u793A\u3002",keyHintsShow:"\u663E\u793A\u952E\u76D8\u63D0\u793A",keyHintsShowHint:"\u91CD\u65B0\u5F00\u542F\u4F1A\u70B9\u4EAE\u5DF2\u56E0\u4F7F\u7528\u800C\u7184\u706D\u7684\u63D0\u793A",zen:"\u7985\u6A21\u5F0F",zenHint:"`zen` \u6807\u8BB0\u548C `prefix`+z \u9690\u85CF Files\uFF0C\u4FDD\u7559 Tasks \u4FA7\u680F\u4E0E workspace\u3002",zenDefaultOn:"\u542F\u52A8\u5373\u8FDB\u5165\u7985\u6A21\u5F0F",updates:"\u66F4\u65B0",updatesHint:"\u7A33\u5B9A\u7248\u662F\u9ED8\u8BA4\u6E20\u9053\uFF1Bnext \u9884\u89C8\u5373\u5C06\u53D1\u5E03\u7684\u7248\u672C\uFF1Bnightly \u6BCF\u5929\u4ECE main \u81EA\u52A8\u6784\u5EFA\u3002",updateChannelTitle:"\u53D1\u5E03\u6E20\u9053",updateChannel:"\u6E20\u9053\uFF1A{channel}",updateChannelHint:"enter \u5728\u7A33\u5B9A\u7248 / next / nightly \u95F4\u5207\u6362\uFF1B`rove update` \u8DDF\u968F\u5B83",updateChannelName:{latest:"\u7A33\u5B9A\u7248",next:"next \u9884\u89C8\u7248",nightly:"nightly \u9884\u89C8\u7248"},updateNotify:"\u6709\u65B0\u7248\u672C\u65F6\u901A\u77E5\u6211",updateNotifyHint:"\u53EA\u9488\u5BF9\u6240\u9009\u6E20\u9053\uFF1B\u5173\u95ED\u540E\u4E0D\u518D\u663E\u793A\u66F4\u65B0\u6807\u8BB0\uFF0C\u624B\u52A8\u68C0\u67E5\u4ECD\u4F1A\u7ED9\u51FA\u7ED3\u679C",updateCheck:"[ \u68C0\u67E5\u66F4\u65B0 ]",updateCheckHint:"\u7ACB\u5373\u5411 npm \u67E5\u8BE2\u6240\u9009\u6E20\u9053\u7684\u6700\u65B0\u7248\u672C",updateCheckButton:"\u68C0\u67E5\u66F4\u65B0",updateChecking:"\u68C0\u67E5\u4E2D\u2026",updateOpenPage:"\u6253\u5F00\u66F4\u65B0\u9875",updateOpenPageRow:"[ \u6253\u5F00\u66F4\u65B0\u9875 ]",railFold:"\u6298\u53E0\u540E\u7684\u4EFB\u52A1\u680F",railFoldHint:"\u4EFB\u52A1\u680F\u4ECE\u89D2\u6807\u6298\u53E0\u4E4B\u540E\u663E\u793A\u4EC0\u4E48\u3002",railFoldRow:"\u6298\u53E0\u540E\u663E\u793A\uFF1A{style}",railFoldRowHint:"enter \u5207\u6362",railFoldGlyphs:"\u72B6\u6001\u5B57\u5F62",railFoldInitials:"\u5B57\u5F62 + \u9996\u5B57\u6BCD",railFoldHairline:"\u4EC5\u8272\u5E26",editor:"\u7F16\u8F91\u5668",editorHint:"\u6587\u4EF6\u6811\u91CC\u6309 enter \u7528\u4EC0\u4E48\u6253\u5F00\u6587\u4EF6\u2014\u2014\u652F\u6301\u65F6\u8D70\u7F16\u8F91\u5668 diff \u6A21\u5F0F\uFF0C\u672A\u5B89\u88C5\u65F6\u56DE\u9000\u5230\u53EA\u8BFB\u9884\u89C8\u3002",editorRow:"\u7F16\u8F91\u5668: < {kind} >",editorRowHint:"auto \u8DDF\u968F $VISUAL / $EDITOR\uFF0C\u5426\u5219 nvim / vim / emacs / nano",editorCustom:"\u81EA\u5B9A\u4E49: {cmd}",editorCustomUnset:"(\u672A\u8BBE\u7F6E \u2014 enter \u7F16\u8F91)",worktree:"\u5DE5\u4F5C\u6811\u4F4D\u7F6E",worktreeHint:"\u65B0\u4EFB\u52A1\u5DE5\u4F5C\u6811\u7684\u521B\u5EFA\u4F4D\u7F6E\u3002\u4EC5\u5BF9\u65B0\u4EFB\u52A1\u751F\u6548\u3002",worktreeBase:"\u4F4D\u7F6E: < {kind} >",worktreeBaseHint:"\u81EA\u5B9A\u4E49\u53EF\u586B `~`\u3001\u76F8\u5BF9\u8DEF\u5F84\u6216\u4EE5 `$project_dir` \u5F00\u5934",worktreeKindDefault:"\u9ED8\u8BA4 ~/.rove/worktrees",worktreeKindNext:"\u9879\u76EE\u65C1\u8FB9",worktreeKindCustom:"\u81EA\u5B9A\u4E49",worktreeCustom:"\u81EA\u5B9A\u4E49: {path}",worktreeCustomUnset:"(\u672A\u8BBE\u7F6E \u2014 enter \u7F16\u8F91)",worktreeBaseTitle:"\u81EA\u5B9A\u4E49\u5DE5\u4F5C\u6811\u4F4D\u7F6E\uFF08\u7559\u7A7A = \u9ED8\u8BA4\uFF1B$project_dir = \u9879\u76EE\u6839\u76EE\u5F55\uFF09",worktreeBaseField:"\u8DEF\u5F84",editorCustomTitle:"\u81EA\u5B9A\u4E49\u7F16\u8F91\u5668\u547D\u4EE4\uFF08\u7528 {file} \u4EE3\u8868\u6587\u4EF6\u8DEF\u5F84\uFF09",worktreeBaseInvalidTitle:"\u65E0\u6CD5\u4F7F\u7528\u8BE5\u5DE5\u4F5C\u6811\u4F4D\u7F6E",worktreeBaseTokenBody:"{token} \u53EA\u80FD\u4F5C\u4E3A\u8DEF\u5F84\u7684\u7B2C\u4E00\u6BB5\u5C55\u5F00\uFF08\u5982 {token}/../rove-worktrees\uFF09\u3002\u4FDD\u7559\u539F\u8BBE\u7F6E\u3002",worktreeBaseUnusableBody:"{path} \u4E0D\u53EF\u7528\uFF08{error}\uFF09\u3002\u4FDD\u7559\u539F\u8BBE\u7F6E \u2014\u2014 \u8BF7\u9009\u62E9\u4E00\u4E2A\u53EF\u5199\u76EE\u5F55\u3002",terminal:"\u7EC8\u7AEF",terminalHint:"\u5BF9\u4FEE\u6539\u540E\u65B0\u6253\u5F00\u7684\u7EC8\u7AEF\u751F\u6548\u3002",scrollbackRow:"\u56DE\u6EDA\u884C\u6570: {rows} \u884C",scrollbackRowHint:"100\u2013100000 \xB7 \u8C03\u5927\u4F1A\u6309\u6BD4\u4F8B\u589E\u52A0\u6BCF\u6B21\u91CD\u7ED8\u7684 CPU",scrollbackTitle:"\u7EC8\u7AEF\u56DE\u6EDA\u884C\u6570\uFF08100\u2013100000\uFF09",scrollbackField:"\u884C\u6570",scrollbackInvalidTitle:"\u4E0D\u662F\u6570\u5B57",scrollbackInvalidBody:"\u56DE\u6EDA\u884C\u6570\u5FC5\u987B\u662F\u6570\u5B57\uFF08\u5982 1000\uFF09\u3002\u4FDD\u7559\u539F\u8BBE\u7F6E\u3002",tabStripRow:"\u6807\u7B7E\u680F: {mode}",tabStripMode:{never:"\u5173\u95ED \u2014 \u6807\u7B7E\u5728\u5DE6\u4FA7\u6811\u91CC",multipleOnly:"\u4EC5 2 \u4E2A\u4EE5\u4E0A\u6807\u7B7E\u65F6\u663E\u793A",always:"\u59CB\u7EC8\u663E\u793A"}},field:{command:"\u547D\u4EE4",name:"\u540D\u79F0",id:"\u6807\u8BC6"},action:{save:"\u4FDD\u5B58",next:"\u4E0B\u4E00\u6B65",add:"\u6DFB\u52A0"},reset:{title:"\u91CD\u7F6E\u754C\u9762\u72B6\u6001\uFF1F",body:"\u5C06\u6E05\u9664 ~/.config/rove/state.json \u548C ~/.rove/tasks.json \u5E76\u9000\u51FA Rove \u2014\u2014 \u91CD\u65B0\u542F\u52A8\u540E\u4F1A\u662F\u4E00\u4E2A\u5E72\u51C0\u7684\u5F00\u59CB\uFF0C\u5DE5\u4F5C\u4F1A\u8BDD\u5217\u8868\u4E3A\u7A7A\u3002\u78C1\u76D8\u4E0A\u7684\u5DE5\u4F5C\u6811\u548C\u5F15\u64CE\u4F1A\u8BDD\u5386\u53F2\u4E0D\u53D7\u5F71\u54CD\u3002",done:"Rove\uFF1A\u754C\u9762\u72B6\u6001\u5DF2\u91CD\u7F6E\u3002\u91CD\u65B0\u542F\u52A8 Rove \u5373\u53EF\u4ECE\u5934\u5F00\u59CB\u3002",failedTitle:"UI \u72B6\u6001\u672A\u80FD\u91CD\u7F6E",failedBody:"\u65E0\u6CD5\u5199\u5165\u8BBE\u7F6E\u6587\u4EF6\u3002\u8BBE\u7F6E\u548C\u4EFB\u52A1\u5747\u5DF2\u4FDD\u7559\uFF0C\u8BF7\u7A0D\u540E\u91CD\u65B0\u5C1D\u8BD5\u91CD\u7F6E\u3002"},restart:{title:"\u91CD\u542F\u540E\u7AEF\uFF1F",body:"\u4F1A\u505C\u6389 daemon\uFF0C\u5E76\u4EE5\u5DF2\u5B89\u88C5\u7684\u7248\u672C\u91CD\u65B0\u542F\u52A8\u5F53\u524D Rove \u7A97\u53E3\uFF0C\u4ECE\u800C\u8BA9 daemon / orchestrator / \u5F15\u64CE\u7684\u6539\u52A8\u751F\u6548\u3002\u6B63\u5728\u8FD0\u884C\u7684\u5F15\u64CE\u4F1A\u8BDD\u7531 PTY host \u6258\u7BA1\uFF0C\u4E0D\u4F1A\u4E2D\u65AD\uFF1B\u5DF2\u6253\u5F00\u7684\u6807\u7B7E\u9875\u4F1A\u6062\u590D\u3002\u5176\u4ED6\u5DF2\u8FDE\u63A5\u7684\u7A97\u53E3\u4F1A\u81EA\u884C\u91CD\u8FDE\u3002",done:"Rove\uFF1A\u6B63\u5728\u91CD\u542F\u540E\u7AEF\u2026\u2026"},stateWrite:{failedTitle:"\u8BBE\u7F6E\u672A\u80FD\u4FDD\u5B58",failedBody:"{file} \u5199\u5165\u5931\u8D25\uFF08{keys}\uFF09\u3002\u8BF7\u68C0\u67E5\u76EE\u5F55\u6743\u9650\u548C\u78C1\u76D8\u7A7A\u95F4\uFF0C\u518D\u6B21\u4FDD\u5B58\u3002"},...zh16,...zh18,...zh19,keybindings:{title:"\u5FEB\u6377\u952E",hint:"\u5728\u4F60\u81EA\u5DF1\u7684 YAML \u6587\u4EF6\u91CC\u91CD\u7ED1\u5B9A\u76F4\u63A5\u6309\u952E\u548C prefix \u7EC4\u5408\uFF1B\u4FEE\u6539\u4F1A\u5B9E\u65F6\u52A0\u8F7D\u3002\u4EFB\u610F\u4F4D\u7F6E\u6309 F1 \u67E5\u770B\u5E26\u6BCF\u4E2A\u7ED1\u5B9A id \u7684\u5B9E\u65F6\u952E\u4F4D\u8868\u3002",configFile:"\u914D\u7F6E\u6587\u4EF6",notCreated:" (\u5C1A\u672A\u521B\u5EFA)",prefixTitle:"\u547D\u4EE4\u5C42\uFF08{prefix}\uFF09",prefixHint:"\u88F8\u952E\u4F5C\u7528\u4E8E\u5F53\u524D\u805A\u7126\u9762\u677F\uFF1B\u5C11\u91CF\u5355\u6B21\u5FEB\u6377\u952E\u8986\u76D6\u9AD8\u9891 Rove \u64CD\u4F5C\uFF1B{prefix} \u6253\u5F00\u547D\u4EE4\u5C42\uFF08\u7B2C\u4E8C\u51FB\u7A97\u53E3 {timeout}ms\uFF09\u3002Prefix \u7ED1\u5B9A\u4FDD\u6301\u539F\u6709\u7684\u9762\u677F\u4F5C\u7528\u57DF\u548C modal \u89C4\u5219\u3002",tapPresentation:"\u70B9\u6309 Prefix",tapPresentationHint:"\u9009\u62E9\u5B8C\u6574\u6307\u5357\u662F\u5426\u540C\u65F6\u6807\u8BB0\u5F53\u524D\u5C4F\u5E55\u4E0A\u7684\u5165\u53E3\u3002",tapPresentationLocal:"\u5C4F\u5E55\u5165\u53E3 + \u5B8C\u6574\u6307\u5357\uFF08\u9ED8\u8BA4\uFF09",tapPresentationGuide:"\u4EC5\u5B8C\u6574\u6307\u5357",prefixDisabled:"\u5DF2\u7981\u7528",fixed:"\u56FA\u5B9A\uFF08\u4E0D\u53EF\u91CD\u7ED1\u5B9A\uFF09\uFF1A{ids}\u3002",createHint:"\u8FD8\u6CA1\u6709\u8986\u76D6\u6587\u4EF6\u3002Rove \u53EF\u4EE5\u5E2E\u4F60\u5199\u4E00\u4EFD\u5E26\u5B8C\u6574\u6CE8\u91CA\u7684\u2014\u2014\u5728\u4F60\u53D6\u6D88\u6CE8\u91CA\u4E4B\u524D\u4E0D\u4F1A\u6539\u52A8\u4EFB\u4F55\u6309\u952E\u3002",createFile:"[enter] \u521B\u5EFA keybindings.yaml",overridesApplied:"\u5DF2\u5E94\u7528\u7684\u8986\u76D6",none:"\u65E0",unbound:"(\u5DF2\u89E3\u7ED1)",defaultKeys:"\u9ED8\u8BA4: {keys}",warnings:"\u8B66\u544A"},feedback:{title:"\u53CD\u9988",hint:"\u901A\u8FC7 `gh` \u5411 Rove \u4ED3\u5E93\u53D1\u4E00\u6761 GitHub Discussion\u3002\u9700\u8981 `gh auth login`\uFF1B\u5206\u7C7B\u9ED8\u8BA4\u4E3A Feedback\u3002",titleLabel:"\u6807\u9898",titlePlaceholder:"\u7B80\u77ED\u6982\u62EC",descriptionLabel:"\u63CF\u8FF0",descriptionPlaceholder:"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF1F(enter \u6362\u884C \xB7 tab \u8DF3\u5230\u53D1\u9001)",send:"[enter] \u53D1\u9001\u5230 GitHub Discussions"},...zh17};var en21={cancel:"cancel",forgetProjectTitle:'Remove project "{title}"?',forgetProjectBody:"Forgets it from the projects list. The repo, its branches, worktrees, and any tasks under it stay on disk \u2014 re-add it with `rove add`.",forgetProjectConfirm:"remove",deleteTitle:'Remove session "{title}"?',deleteTitleDir:'Remove session "{title}"?',deleteBodyDir:"Ends this session and closes all its tabs. Nothing on disk changes: the folder and its files stay.",deleteBodyMain:"Ends this session and closes all its tabs. The project stays in your list and nothing on disk changes: the repo, its branches and worktrees stay.",deleteBodyTask:"Ends this session, closes all its tabs and removes its worktree folder. The git branch stays.",deleteBodyTaskBranch:"Ends this session, closes all its tabs and removes its worktree folder, and its git branch if it is merged. An unmerged branch stays.",deleteConfirm:"remove",childrenTitle:'"{title}" has {count} child tasks',childrenBody:"Promote moves them up one level and keeps their worktrees and sessions. Remove with children removes them too.",childrenPromote:"promote children",childrenCascade:"remove with children",childrenBodyMain:"Ends this session and closes its tabs; nothing on disk changes. Its child tasks keep running unless you delete them too.",childrenKeepMain:"remove session",childrenCascadeMain:"remove with children",forceDeleteTitle:'"{title}" has uncommitted changes',forceDeleteConfirm:"force remove"},zh21={cancel:"\u53D6\u6D88",forgetProjectTitle:"\u4ECE\u5217\u8868\u4E2D\u79FB\u9664\u9879\u76EE\u300C{title}\u300D\uFF1F",forgetProjectBody:"\u53EA\u662F\u628A\u5B83\u4ECE\u9879\u76EE\u5217\u8868\u91CC\u5FD8\u6389\u3002\u4ED3\u5E93\u3001\u5206\u652F\u3001worktree \u4EE5\u53CA\u5B83\u4E0B\u9762\u7684\u4EFB\u52A1\u90FD\u4F1A\u7559\u5728\u78C1\u76D8\u4E0A\u2014\u2014\u4E4B\u540E\u53EF\u4EE5\u7528 `rove add` \u91CD\u65B0\u52A0\u56DE\u6765\u3002",forgetProjectConfirm:"\u79FB\u9664",deleteTitle:"\u79FB\u9664\u4F1A\u8BDD\u300C{title}\u300D\uFF1F",deleteTitleDir:"\u79FB\u9664\u4F1A\u8BDD\u300C{title}\u300D\uFF1F",deleteBodyDir:"\u7ED3\u675F\u8FD9\u4E2A\u4F1A\u8BDD\uFF0C\u5173\u95ED\u5B83\u7684\u6240\u6709\u6807\u7B7E\u9875\u3002\u78C1\u76D8\u4E0A\u4EC0\u4E48\u90FD\u4E0D\u52A8\uFF1A\u6587\u4EF6\u5939\u548C\u91CC\u9762\u7684\u6587\u4EF6\u90FD\u4F1A\u4FDD\u7559\u3002",deleteBodyMain:"\u7ED3\u675F\u8FD9\u4E2A\u4F1A\u8BDD\uFF0C\u5173\u95ED\u5B83\u7684\u6240\u6709\u6807\u7B7E\u9875\u3002\u9879\u76EE\u4ECD\u7559\u5728\u5217\u8868\u91CC\uFF0C\u78C1\u76D8\u4E0A\u4EC0\u4E48\u90FD\u4E0D\u52A8\uFF1A\u4ED3\u5E93\u3001\u5206\u652F\u548C worktree \u90FD\u4F1A\u4FDD\u7559\u3002",deleteBodyTask:"\u7ED3\u675F\u8FD9\u4E2A\u4F1A\u8BDD\uFF0C\u5173\u95ED\u5B83\u7684\u6240\u6709\u6807\u7B7E\u9875\uFF0C\u5E76\u5220\u9664\u5B83\u7684 worktree \u6587\u4EF6\u5939\u3002git \u5206\u652F\u4F1A\u4FDD\u7559\u3002",deleteBodyTaskBranch:"\u7ED3\u675F\u8FD9\u4E2A\u4F1A\u8BDD\uFF0C\u5173\u95ED\u5B83\u7684\u6240\u6709\u6807\u7B7E\u9875\uFF0C\u5220\u9664\u5B83\u7684 worktree \u6587\u4EF6\u5939\uFF0C\u4EE5\u53CA\u5DF2\u5408\u5E76\u7684 git \u5206\u652F\u3002\u672A\u5408\u5E76\u7684\u5206\u652F\u4F1A\u4FDD\u7559\u3002",deleteConfirm:"\u79FB\u9664",childrenTitle:"\u300C{title}\u300D\u6709 {count} \u4E2A\u5B50\u4EFB\u52A1",childrenBody:"\u63D0\u5347\u4F1A\u628A\u5B83\u4EEC\u4E0A\u79FB\u4E00\u7EA7\uFF0C\u5E76\u4FDD\u7559\u5B83\u4EEC\u7684 worktree \u548C\u4F1A\u8BDD\u3002\u8FDE\u540C\u5B50\u4EFB\u52A1\u79FB\u9664\u4F1A\u628A\u5B83\u4EEC\u4E00\u5E76\u79FB\u9664\u3002",childrenPromote:"\u63D0\u5347\u5B50\u4EFB\u52A1",childrenCascade:"\u8FDE\u540C\u5B50\u4EFB\u52A1\u79FB\u9664",childrenBodyMain:"\u7ED3\u675F\u8FD9\u4E2A\u4F1A\u8BDD\u5E76\u5173\u95ED\u5B83\u7684\u6807\u7B7E\u9875\uFF0C\u78C1\u76D8\u4E0A\u4EC0\u4E48\u90FD\u4E0D\u52A8\u3002\u5B83\u7684\u5B50\u4EFB\u52A1\u4F1A\u7EE7\u7EED\u8FD0\u884C\uFF0C\u9664\u975E\u4F60\u4E5F\u9009\u62E9\u628A\u5B83\u4EEC\u4E00\u5E76\u5220\u9664\u3002",childrenKeepMain:"\u79FB\u9664\u4F1A\u8BDD",childrenCascadeMain:"\u8FDE\u540C\u5B50\u4EFB\u52A1\u79FB\u9664",forceDeleteTitle:"\u300C{title}\u300D\u6709\u672A\u63D0\u4EA4\u7684\u6539\u52A8",forceDeleteConfirm:"\u5F3A\u5236\u79FB\u9664"};var en22={noDaemonWorktree:"No daemon running \u2014 can't create the worktree. Start it with `rove daemon restart`.",noEditor:"No editor found \u2014 set ROVE_OPEN_EDITOR (e.g. 'code', 'cursor', 'nvim')",openWorktreeFailed:"Couldn't open worktree with {label}",worktreeErrorDeleting:"This task is being deleted \u2014 it can't be opened",worktreeErrorNotGit:"This project isn't a git repo yet \u2014 a task needs a git branch. Run `git init` (+ a first commit) in the project, then open the task. Non-git support is coming.",worktreeErrorGeneric:"Couldn't create the worktree: {message}",scratchAdopted:"Adopted into {repo} \u2014 save it as a project from New Task if you want it in the picker",scratchOpenFailed:"Couldn't open a scratch shell: {message}",scratchCloseFailed:"Couldn't close the scratch task: {message}",worktreeGoneTitle:'Worktree for "{title}" is gone',worktreeGoneBody:"Closed {count} tab(s). The branch {branch} is still there \u2014 reopen the task to re-create its worktree.",checksPassingTitle:'Checks passed for "{title}"',checksFailingTitle:'Checks failed for "{title}"',checksResolvedBody:"PR {pr} on {branch}",copiedId:"Copied task ID {text}",copiedTab:"Copied tab address {text}",copiedBranch:"Copied branch {text}",copiedPath:"Copied path {text}",copyFailed:"Couldn't reach a clipboard \u2014 no clipboard command on PATH, and this terminal refused OSC 52.",forgetProjectFailed:"Couldn't remove the project \u2014 it stays in the projects list: {error}",deleteFailed:`Couldn't delete "{title}" \u2014 the task and its worktree are untouched: {error}`,createFailed:"Couldn't create the task \u2014 nothing was created: {error}",forkFailed:"Couldn't fork the task \u2014 the original is untouched: {error}",forkLeftBehind:"Started from the last commit \u2014 uncommitted work stays in the original task ({reason})",childFailed:"Couldn't start the new conversation \u2014 the current one is untouched: {error}",renameFailed:"Couldn't rename the task \u2014 it keeps its old title: {error}",renameBranchFailed:`Couldn't rename the branch \u2014 it stays "{branch}": {error}`,switchEngineFailed:"Couldn't switch the engine \u2014 the task keeps the one it had: {error}",setStatusFailed:"Couldn't set the status \u2014 it stays {status}: {error}",pinFailed:"Couldn't change the pin \u2014 the task keeps its current place: {error}",moveFailed:"Couldn't move the task \u2014 it keeps its current place: {error}",moveToProjectFailed:"Couldn't move the task to that project \u2014 it stays where it was: {error}",movedToProject:"Moved to {project} \u2014 the session and its checkout stay where they are",issueChatFailed:"Couldn't start the issue chat \u2014 the issue is unchanged: {error}",inboxMarkReadFailed:"Couldn't mark it read \u2014 it stays in the inbox: {error}",inboxDismissFailed:"Couldn't dismiss it \u2014 it stays in the inbox: {error}",engineSwitched:"Engine \u2192 {engine} (applies on reopen)",statusSet:"Status \u2192 {status}"},zh22={noDaemonWorktree:"\u5B88\u62A4\u8FDB\u7A0B\u672A\u8FD0\u884C\u2014\u2014\u65E0\u6CD5\u521B\u5EFA worktree\u3002\u8BF7\u8FD0\u884C `rove daemon restart` \u542F\u52A8\u5B83\u3002",noEditor:"\u672A\u627E\u5230\u7F16\u8F91\u5668\u2014\u2014\u8BF7\u8BBE\u7F6E ROVE_OPEN_EDITOR\uFF08\u5982 'code'\u3001'cursor'\u3001'nvim'\uFF09",openWorktreeFailed:"\u65E0\u6CD5\u7528 {label} \u6253\u5F00 worktree",worktreeErrorDeleting:"\u8BE5\u4EFB\u52A1\u6B63\u5728\u5220\u9664\u4E2D\u2014\u2014\u65E0\u6CD5\u6253\u5F00",worktreeErrorNotGit:"\u8BE5\u9879\u76EE\u5C1A\u975E git \u4ED3\u5E93\u2014\u2014\u4EFB\u52A1\u9700\u8981 git \u5206\u652F\u3002\u8BF7\u5728\u9879\u76EE\u4E2D\u6267\u884C `git init`\uFF08+ \u9996\u6B21\u63D0\u4EA4\uFF09\u540E\u518D\u6253\u5F00\u4EFB\u52A1\u3002\u975E git \u9879\u76EE\u7684\u652F\u6301\u5373\u5C06\u63A8\u51FA\u3002",worktreeErrorGeneric:"\u65E0\u6CD5\u521B\u5EFA worktree\uFF1A{message}",scratchAdopted:"\u5DF2\u5F52\u5165 {repo}\u2014\u2014\u82E5\u8981\u51FA\u73B0\u5728\u9879\u76EE\u9009\u62E9\u5668\u91CC,\u53EF\u5728\u65B0\u5EFA\u4EFB\u52A1\u4E2D\u4FDD\u5B58\u4E3A\u9879\u76EE",scratchOpenFailed:"\u65E0\u6CD5\u6253\u5F00\u4E34\u65F6 Shell:{message}",scratchCloseFailed:"\u65E0\u6CD5\u5173\u95ED\u4E34\u65F6\u4EFB\u52A1:{message}",worktreeGoneTitle:'"{title}" \u7684 worktree \u5DF2\u6D88\u5931',worktreeGoneBody:"\u5DF2\u5173\u95ED {count} \u4E2A\u6807\u7B7E\u9875\u3002\u5206\u652F {branch} \u4ECD\u5728\u2014\u2014\u91CD\u65B0\u6253\u5F00\u8BE5\u4EFB\u52A1\u4F1A\u91CD\u5EFA worktree\u3002",checksPassingTitle:"\u300C{title}\u300D\u7684 PR \u68C0\u67E5\u5DF2\u901A\u8FC7",checksFailingTitle:"\u300C{title}\u300D\u7684 PR \u68C0\u67E5\u5931\u8D25\u4E86",checksResolvedBody:"PR {pr}\uFF0C\u5206\u652F {branch}",copiedId:"\u5DF2\u590D\u5236\u4EFB\u52A1 ID {text}",copiedTab:"\u5DF2\u590D\u5236\u6807\u7B7E\u9875\u5730\u5740 {text}",copiedBranch:"\u5DF2\u590D\u5236\u5206\u652F {text}",copiedPath:"\u5DF2\u590D\u5236\u8DEF\u5F84 {text}",copyFailed:"\u65E0\u6CD5\u8BBF\u95EE\u526A\u8D34\u677F\u2014\u2014PATH \u4E0A\u6CA1\u6709\u526A\u8D34\u677F\u547D\u4EE4\uFF0C\u8FD9\u4E2A\u7EC8\u7AEF\u4E5F\u62D2\u7EDD\u4E86 OSC 52\u3002",forgetProjectFailed:"\u79FB\u9664\u9879\u76EE\u5931\u8D25\u2014\u2014\u5B83\u4ECD\u5728\u9879\u76EE\u5217\u8868\u91CC\uFF1A{error}",deleteFailed:"\u5220\u9664\u300C{title}\u300D\u5931\u8D25\u2014\u2014\u4EFB\u52A1\u548C\u5B83\u7684 worktree \u90FD\u6CA1\u6709\u88AB\u6539\u52A8\uFF1A{error}",createFailed:"\u521B\u5EFA\u4EFB\u52A1\u5931\u8D25\u2014\u2014\u4EC0\u4E48\u90FD\u6CA1\u6709\u88AB\u521B\u5EFA\uFF1A{error}",forkFailed:"fork \u4EFB\u52A1\u5931\u8D25\u2014\u2014\u539F\u4EFB\u52A1\u6CA1\u6709\u88AB\u6539\u52A8\uFF1A{error}",forkLeftBehind:"\u5DF2\u4ECE\u6700\u8FD1\u4E00\u6B21\u63D0\u4EA4\u5F00\u59CB\u2014\u2014\u672A\u63D0\u4EA4\u7684\u6539\u52A8\u7559\u5728\u539F\u4EFB\u52A1\u91CC\uFF08{reason}\uFF09",childFailed:"\u65E0\u6CD5\u5F00\u59CB\u65B0\u5BF9\u8BDD\u2014\u2014\u5F53\u524D\u5BF9\u8BDD\u6CA1\u6709\u88AB\u6539\u52A8\uFF1A{error}",renameFailed:"\u91CD\u547D\u540D\u4EFB\u52A1\u5931\u8D25\u2014\u2014\u5B83\u4ECD\u7528\u539F\u6765\u7684\u6807\u9898\uFF1A{error}",renameBranchFailed:"\u91CD\u547D\u540D\u5206\u652F\u5931\u8D25\u2014\u2014\u5B83\u4ECD\u662F\u300C{branch}\u300D\uFF1A{error}",switchEngineFailed:"\u5207\u6362\u5F15\u64CE\u5931\u8D25\u2014\u2014\u4EFB\u52A1\u4ECD\u4F7F\u7528\u539F\u6765\u7684\u5F15\u64CE\uFF1A{error}",setStatusFailed:"\u8BBE\u7F6E\u72B6\u6001\u5931\u8D25\u2014\u2014\u5B83\u4ECD\u662F {status}\uFF1A{error}",pinFailed:"\u4FEE\u6539\u7F6E\u9876\u72B6\u6001\u5931\u8D25\u2014\u2014\u4EFB\u52A1\u4ECD\u5728\u539F\u6765\u7684\u4F4D\u7F6E\uFF1A{error}",moveFailed:"\u79FB\u52A8\u4EFB\u52A1\u5931\u8D25\u2014\u2014\u5B83\u4ECD\u5728\u539F\u6765\u7684\u4F4D\u7F6E\uFF1A{error}",moveToProjectFailed:"\u79FB\u5230\u8BE5\u9879\u76EE\u5931\u8D25\u2014\u2014\u4EFB\u52A1\u4ECD\u5728\u539F\u6765\u7684\u9879\u76EE\uFF1A{error}",movedToProject:"\u5DF2\u79FB\u5230 {project}\u2014\u2014\u4F1A\u8BDD\u548C\u5B83\u7684\u5DE5\u4F5C\u76EE\u5F55\u90FD\u6CA1\u6709\u52A8",issueChatFailed:"\u542F\u52A8\u8BAE\u9898\u4F1A\u8BDD\u5931\u8D25\u2014\u2014\u8BAE\u9898\u6CA1\u6709\u88AB\u6539\u52A8\uFF1A{error}",inboxMarkReadFailed:"\u6807\u8BB0\u4E3A\u5DF2\u8BFB\u5931\u8D25\u2014\u2014\u5B83\u4ECD\u7559\u5728\u6536\u4EF6\u7BB1\u91CC\uFF1A{error}",inboxDismissFailed:"\u5FFD\u7565\u5931\u8D25\u2014\u2014\u5B83\u4ECD\u7559\u5728\u6536\u4EF6\u7BB1\u91CC\uFF1A{error}",engineSwitched:"\u5F15\u64CE \u2192 {engine}\uFF08\u91CD\u65B0\u6253\u5F00\u540E\u751F\u6548\uFF09",statusSet:"\u72B6\u6001 \u2192 {status}"};var en23={nav:{kanban:"Kanban",automations:"Routines",issues:"Issues",mods:"Mods"},header:{scratch:"Ungrouped"},search:{placeholder:"fuzzy filter"},sort:{label:"sort: {mode}",hint:"Change the order (manual \u2192 newest \u2192 attention \u2192 name)",reorderSwitched:"Reorder needs manual order \u2014 switched",modes:{default:"manual",recent:"newest",attention:"attention",name:"name"}},menu:{open:"Open",collapseChildren:"Collapse children",expandChildren:"Expand children",newChat:"New conversation",newShell:"New shell",continueEngine:"Continue in another engine\u2026",newScratchChat:"New conversation (no folder)",newTask:"New task",forgetProject:"Remove project",fieldNotes:"Field notes",rename:"Rename",pin:"Pin",unpin:"Unpin",reorder:"Reorder row",moveToTop:"Move to top",reorderProject:"Reorder project",runAgain:"Run again",setStatus:"Set status",moveToProject:"Move to project\u2026",copyId:"Copy task ID",copyBranch:"Copy branch name",copyPath:"Copy path",openEditor:"Open in editor",renameBranch:"Rename branch",changeEngine:"Change engine",fixChecks:"Fix failing checks",rerunChecks:"Re-run failed checks",syncBase:"Sync with base",resolveConflicts:"Resolve conflicts",land:"Land into base branch",archive:"Archive",unarchive:"Unarchive",delete:"Remove session"},status:{backlog:"Backlog",inProgress:"In progress",inReview:"In review",done:"Done",canceled:"Canceled",error:"Error"},setStatus:{title:"Set status",current:"current",footer:"\u2191\u2193 choose \xB7 enter set \xB7 esc cancel"},moveToProject:{title:"Move to project",empty:"No other project yet \u2014 add one first, or run `rove api update --project PATH`",footer:"\u2191\u2193 choose \xB7 enter move \xB7 esc cancel"},sync:{done:"Merged {base} into this worktree",alreadyCurrent:"Already up to date with {base}",conflict:"Merge conflict \u2014 resolve then commit: {files}",dirty:"Commit the worktree's changes first, then sync: {files}",failed:"Sync failed: {error}"},archive:{done:"Archived {title}. Its worktree, branch and sessions are untouched",restored:"Restored {title}",busyTitle:"Archive while it's working?",busyBody:"An engine in {title} is still working or waiting on you. Archiving hides the row without stopping it.",busyConfirm:"Archive anyway",failed:"Couldn't archive: {error}",restoreFailed:"Couldn't restore: {error}"},rerun:{started:"Re-running failed checks",none:"No failed checks to re-run",external:"These checks didn't run on GitHub Actions; re-run them where they ran",refused:"Re-run refused: {detail}"},changeEngine:{title:"Change engine",current:"current",effortLabel:"EFFORT",noEffort:"engine default",footer:{engine:"\u2191\u2193 engine",effort:"\u2190\u2192 effort",model:"tab model",set:"enter set",cancel:"esc cancel"}},engineModel:{label:"MODEL",placeholder:"engine default",loading:"listing models\u2026"},tier:{swift:"swift",standard:"standard",deep:"deep",manual:"manual"},tierDesc:{swift:"small, well-specified edits \u2014 the fastest, cheapest setting",standard:"everyday feature work and bug fixes",deep:"hard problems: unclear root causes, large refactors, design decisions"},runAgain:{title:"Run again",source:"Brief from \u201C{title}\u201D",hint:"Runs this brief again in a new task, on its own branch and worktree.",confirm:"Run again",footer:"\u2191\u2193 scroll \xB7 \u2190\u2192 choose \xB7 enter run \xB7 esc cancel"},fieldNotes:{title:"Field notes",empty:"No field notes for this repo yet \u2014 agents file one with `rove api note`.",loading:"Loading\u2026",footer:"\u2191\u2193 scroll \xB7 esc close",footerDeletable:"\u2191\u2193 select \xB7 d delete \xB7 esc close",confirmDelete:{title:"Delete this field note?",body:"\u201C{text}\u201D stops being injected into new sessions on this repo. Nothing else changes."}},confirm:en21,renameBranch:{title:"Rename branch",fieldLabel:"branch"},moveChip:" move",recentJump:"Recent: {title}",routinesRow:"{count} routine sessions",routinesRowOne:"1 routine session",archivedRow:"Archived \xB7 {count}",machine:{connecting:"connecting\u2026",offline:"offline",unsupported:"unsupported",mismatch:"protocol mismatch",filesElsewhere:"on {host}",filesHint:"{host} is unreachable right now; its files show here again when it reconnects.",terminalElsewhere:"This task runs on {host}, which is unreachable right now.",runsOn:"on {host}",noTabs:"No tabs on {host} yet \u2014 prefix t opens one there."},empty:{noMatchSearch:"No matching tasks \u2014 esc to clear.",noActiveProject:"No active tasks for this project.",noActive:"No active tasks \u2014 create one above."},activity:{working:"working",rateLimited:"rate limited",permissionNeeded:"needs permission",error:"error",dead:"engine exited"},group:{waitingOnYou:"needs you",landing:"ready to land",readyForReview:"needs review",working:"working"},subtitle:{noTracking:"no activity tracking",materializing:"materializing",deleting:"deleting",deleteFailed:"delete failed"},reBranch:{title:"Set branch",fieldLabel:"branch",hintNoBranches:"(no local branches \u2014 type a new name)",hintNoMatch:"(no match \u2014 enter renames to this branch)",footer:"\u2191\u2193 pick \xB7 enter set \xB7 esc cancel"},toast:en22},zh23={nav:{kanban:"\u770B\u677F",automations:"\u4F8B\u884C\u4EFB\u52A1",issues:"\u8BAE\u9898",mods:"Mods"},header:{scratch:"\u672A\u5206\u7EC4"},search:{placeholder:"\u6A21\u7CCA\u641C\u7D22"},sort:{label:"\u6392\u5E8F\uFF1A{mode}",hint:"\u5207\u6362\u6392\u5E8F\uFF08\u624B\u52A8 \u2192 \u6700\u65B0 \u2192 \u5173\u6CE8 \u2192 \u540D\u79F0\uFF09",reorderSwitched:"\u8C03\u6574\u987A\u5E8F\u9700\u624B\u52A8\u6392\u5E8F\uFF0C\u5DF2\u5207\u6362",modes:{default:"\u624B\u52A8",recent:"\u6700\u65B0",attention:"\u5173\u6CE8",name:"\u540D\u79F0"}},menu:{open:"\u6253\u5F00",collapseChildren:"\u6298\u53E0\u5B50\u4EFB\u52A1",expandChildren:"\u5C55\u5F00\u5B50\u4EFB\u52A1",newChat:"\u65B0\u5EFA\u4F1A\u8BDD",newShell:"\u65B0\u5EFA\u7EC8\u7AEF",continueEngine:"\u6362\u4E2A\u5F15\u64CE\u7EE7\u7EED\u2026",newScratchChat:"\u65B0\u5EFA\u4F1A\u8BDD\uFF08\u65E0\u6587\u4EF6\u5939\uFF09",newTask:"\u65B0\u5EFA\u4EFB\u52A1",forgetProject:"\u79FB\u9664\u9879\u76EE",fieldNotes:"\u73B0\u573A\u7B14\u8BB0",rename:"\u91CD\u547D\u540D",pin:"\u7F6E\u9876",unpin:"\u53D6\u6D88\u7F6E\u9876",reorder:"\u91CD\u65B0\u6392\u5E8F",moveToTop:"\u79FB\u5230\u9876\u90E8",reorderProject:"\u8C03\u6574\u9879\u76EE\u987A\u5E8F",runAgain:"\u91CD\u65B0\u8FD0\u884C",setStatus:"\u8BBE\u7F6E\u72B6\u6001",moveToProject:"\u79FB\u5230\u5176\u4ED6\u9879\u76EE\u2026",copyId:"\u590D\u5236\u4EFB\u52A1 ID",copyBranch:"\u590D\u5236\u5206\u652F\u540D",copyPath:"\u590D\u5236\u8DEF\u5F84",openEditor:"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00",renameBranch:"\u91CD\u547D\u540D\u5206\u652F",changeEngine:"\u5207\u6362\u5F15\u64CE",fixChecks:"\u4FEE\u590D\u5931\u8D25\u7684\u68C0\u67E5",rerunChecks:"\u91CD\u65B0\u8FD0\u884C\u5931\u8D25\u7684\u68C0\u67E5",syncBase:"\u540C\u6B65\u57FA\u7840\u5206\u652F",resolveConflicts:"\u8BA9 agent \u89E3\u51B3\u51B2\u7A81",land:"\u5408\u5165\u57FA\u7840\u5206\u652F",archive:"\u5F52\u6863",unarchive:"\u53D6\u6D88\u5F52\u6863",delete:"\u79FB\u9664\u4F1A\u8BDD"},status:{backlog:"\u5F85\u529E",inProgress:"\u8FDB\u884C\u4E2D",inReview:"\u5F85\u8BC4\u5BA1",done:"\u5DF2\u5B8C\u6210",canceled:"\u5DF2\u53D6\u6D88",error:"\u51FA\u9519"},setStatus:{title:"\u8BBE\u7F6E\u72B6\u6001",current:"\u5F53\u524D",footer:"\u2191\u2193 \u9009\u62E9 \xB7 enter \u8BBE\u7F6E \xB7 esc \u53D6\u6D88"},moveToProject:{title:"\u79FB\u5230\u5176\u4ED6\u9879\u76EE",empty:"\u8FD8\u6CA1\u6709\u5176\u4ED6\u9879\u76EE\u2014\u2014\u5148\u6DFB\u52A0\u4E00\u4E2A\uFF0C\u6216\u8FD0\u884C `rove api update --project PATH`",footer:"\u2191\u2193 \u9009\u62E9 \xB7 enter \u79FB\u52A8 \xB7 esc \u53D6\u6D88"},sync:{done:"\u5DF2\u628A {base} \u5408\u5E76\u8FDB\u8BE5\u5DE5\u4F5C\u6811",alreadyCurrent:"\u5DF2\u7ECF\u548C {base} \u540C\u6B65",conflict:"\u5408\u5E76\u51B2\u7A81\u2014\u2014\u89E3\u51B3\u540E\u63D0\u4EA4\uFF1A{files}",dirty:"\u8BF7\u5148\u63D0\u4EA4\u5DE5\u4F5C\u6811\u91CC\u7684\u6539\u52A8\uFF0C\u518D\u540C\u6B65\uFF1A{files}",failed:"\u540C\u6B65\u5931\u8D25\uFF1A{error}"},archive:{done:"\u5DF2\u5F52\u6863 {title}\u3002\u5DE5\u4F5C\u6811\u3001\u5206\u652F\u548C\u4F1A\u8BDD\u90FD\u4FDD\u6301\u539F\u6837",restored:"\u5DF2\u6062\u590D {title}",busyTitle:"\u5B83\u8FD8\u5728\u5DE5\u4F5C\uFF0C\u4ECD\u8981\u5F52\u6863\uFF1F",busyBody:"{title} \u91CC\u6709\u5F15\u64CE\u4ECD\u5728\u5DE5\u4F5C\u6216\u5728\u7B49\u4F60\u3002\u5F52\u6863\u53EA\u9690\u85CF\u8FD9\u4E00\u884C\uFF0C\u4E0D\u4F1A\u505C\u6B62\u5B83\u3002",busyConfirm:"\u4ECD\u8981\u5F52\u6863",failed:"\u5F52\u6863\u5931\u8D25\uFF1A{error}",restoreFailed:"\u6062\u590D\u5931\u8D25\uFF1A{error}"},rerun:{started:"\u6B63\u5728\u91CD\u65B0\u8FD0\u884C\u5931\u8D25\u7684\u68C0\u67E5",none:"\u6CA1\u6709\u53EF\u91CD\u65B0\u8FD0\u884C\u7684\u5931\u8D25\u68C0\u67E5",external:"\u8FD9\u4E9B\u68C0\u67E5\u4E0D\u662F\u5728 GitHub Actions \u4E0A\u8FD0\u884C\u7684\uFF0C\u8BF7\u5230\u5B83\u4EEC\u8FD0\u884C\u7684\u5730\u65B9\u91CD\u65B0\u8FD0\u884C",refused:"\u65E0\u6CD5\u91CD\u65B0\u8FD0\u884C\uFF1A{detail}"},changeEngine:{title:"\u5207\u6362\u5F15\u64CE",current:"\u5F53\u524D",effortLabel:"\u63A8\u7406\u5F3A\u5EA6",noEffort:"\u5F15\u64CE\u9ED8\u8BA4",footer:{engine:"\u2191\u2193 \u5F15\u64CE",effort:"\u2190\u2192 \u5F3A\u5EA6",model:"tab \u6A21\u578B",set:"enter \u8BBE\u7F6E",cancel:"esc \u53D6\u6D88"}},engineModel:{label:"\u6A21\u578B",placeholder:"\u5F15\u64CE\u9ED8\u8BA4",loading:"\u6B63\u5728\u5217\u51FA\u6A21\u578B\u2026"},tier:{swift:"\u8F7B\u5FEB",standard:"\u6807\u51C6",deep:"\u6DF1\u5165",manual:"\u624B\u52A8"},tierDesc:{swift:"\u5C0F\u800C\u660E\u786E\u7684\u6539\u52A8\u2014\u2014\u6700\u5FEB\u3001\u6700\u7701\u7684\u4E00\u6863",standard:"\u65E5\u5E38\u7684\u529F\u80FD\u5F00\u53D1\u548C\u4FEE bug",deep:"\u96BE\u9898\uFF1A\u6839\u56E0\u4E0D\u660E\u3001\u5927\u91CD\u6784\u3001\u8BBE\u8BA1\u51B3\u7B56"},runAgain:{title:"\u91CD\u65B0\u8FD0\u884C",source:"\u6765\u81EA\u4EFB\u52A1\u300C{title}\u300D\u7684\u6307\u4EE4",hint:"\u5728\u65B0\u4EFB\u52A1\u91CC\u91CD\u65B0\u6267\u884C\u8FD9\u6BB5\u6307\u4EE4\uFF0C\u65B0\u4EFB\u52A1\u6709\u81EA\u5DF1\u7684\u5206\u652F\u548C\u5DE5\u4F5C\u6811\u3002",confirm:"\u91CD\u65B0\u8FD0\u884C",footer:"\u2191\u2193 \u6EDA\u52A8 \xB7 \u2190\u2192 \u9009\u62E9 \xB7 enter \u8FD0\u884C \xB7 esc \u53D6\u6D88"},confirm:zh21,renameBranch:{title:"\u91CD\u547D\u540D\u5206\u652F",fieldLabel:"\u5206\u652F"},fieldNotes:{title:"\u73B0\u573A\u7B14\u8BB0",empty:"\u8BE5\u4ED3\u5E93\u6682\u65E0\u73B0\u573A\u7B14\u8BB0\u2014\u2014agent \u53EF\u7528 `rove api note` \u8BB0\u5F55\u3002",loading:"\u52A0\u8F7D\u4E2D\u2026",footer:"\u2191\u2193 \u6EDA\u52A8 \xB7 esc \u5173\u95ED",footerDeletable:"\u2191\u2193 \u9009\u62E9 \xB7 d \u5220\u9664 \xB7 esc \u5173\u95ED",confirmDelete:{title:"\u5220\u9664\u8FD9\u6761\u73B0\u573A\u7B14\u8BB0?",body:"\u300C{text}\u300D\u5C06\u4E0D\u518D\u6CE8\u5165\u8BE5\u4ED3\u5E93\u7684\u65B0\u4F1A\u8BDD\u3002\u5176\u4ED6\u5185\u5BB9\u4E0D\u53D7\u5F71\u54CD\u3002"}},moveChip:" \u79FB\u52A8",recentJump:"\u6700\u8FD1:{title}",routinesRow:"{count} \u4E2A routine \u4F1A\u8BDD",routinesRowOne:"1 \u4E2A routine \u4F1A\u8BDD",archivedRow:"\u5DF2\u5F52\u6863 \xB7 {count}",machine:{connecting:"\u8FDE\u63A5\u4E2D\u2026",offline:"\u79BB\u7EBF",unsupported:"\u4E0D\u652F\u6301",mismatch:"\u534F\u8BAE\u4E0D\u517C\u5BB9",filesElsewhere:"\u5728 {host} \u4E0A",filesHint:"{host} \u6682\u65F6\u8FDE\u4E0D\u4E0A\uFF1B\u91CD\u65B0\u8FDE\u4E0A\u540E\u8FD9\u91CC\u4F1A\u518D\u663E\u793A\u5B83\u7684\u6587\u4EF6\u3002",terminalElsewhere:"\u8FD9\u4E2A\u4EFB\u52A1\u8DD1\u5728 {host} \u4E0A\uFF0C\u6682\u65F6\u8FDE\u4E0D\u4E0A\u3002",runsOn:"\u5728 {host} \u4E0A",noTabs:"{host} \u4E0A\u8FD8\u6CA1\u6709 tab\u2014\u2014\u6309 prefix t \u5728\u90A3\u91CC\u65B0\u5F00\u4E00\u4E2A\u3002"},empty:{noMatchSearch:"\u65E0\u5339\u914D\u4EFB\u52A1\u2014\u2014\u6309 esc \u6E05\u9664\u3002",noActiveProject:"\u8BE5\u9879\u76EE\u6682\u65E0\u6D3B\u8DC3\u4EFB\u52A1\u3002",noActive:"\u6682\u65E0\u6D3B\u8DC3\u4EFB\u52A1\u2014\u2014\u5728\u4E0A\u65B9\u65B0\u5EFA\u3002"},activity:{working:"\u8FD0\u884C\u4E2D",rateLimited:"\u8BF7\u6C42\u53D7\u9650",permissionNeeded:"\u7B49\u5F85\u6388\u6743",error:"\u9519\u8BEF",dead:"\u5F15\u64CE\u5DF2\u9000\u51FA"},group:{waitingOnYou:"\u7B49\u4F60\u5904\u7406",landing:"\u53EF\u4EE5\u5408\u4E86",readyForReview:"\u5F85\u4F60\u9A8C\u6536",working:"\u8FD0\u884C\u4E2D"},subtitle:{noTracking:"\u4E0D\u8DDF\u8E2A\u6D3B\u52A8",materializing:"\u6B63\u5728\u521B\u5EFA worktree",deleting:"\u6B63\u5728\u5220\u9664",deleteFailed:"\u5220\u9664\u5931\u8D25"},reBranch:{title:"\u8BBE\u7F6E\u5206\u652F",fieldLabel:"\u5206\u652F",hintNoBranches:"\uFF08\u6CA1\u6709\u672C\u5730\u5206\u652F\u2014\u2014\u8F93\u5165\u65B0\u540D\u79F0\uFF09",hintNoMatch:"\uFF08\u65E0\u5339\u914D\u2014\u2014\u56DE\u8F66\u5C06\u5206\u652F\u91CD\u547D\u540D\u4E3A\u6B64\u540D\uFF09",footer:"\u2191\u2193 \u9009\u62E9 \xB7 enter \u8BBE\u7F6E \xB7 esc \u53D6\u6D88"},toast:zh22};var en24={noTask:"(no task \u2014 press n to create)",exited:"process exited \u2014 F5 restarts it",engineExit:{title:"Engine exited",titleCode:"Engine exited (code {code})",retry:"Retry",settings:"Settings \u2192 Engines",another:"Another engine",continueIn:"Continue in another engine"},usageLimit:{title:"Usage limit reached",dismiss:"Dismiss"},restoring:"restoring session\u2026",recovery:{live:"Live process reattached",relaunched:"Command relaunched in a new process. Any restored output is historical; check the engine to resume or continue your conversation.",restored:"Historical screen restored; previous process ended. Restart and check the engine before continuing."},tab:{groupTitle:"group {n}",renameTitle:"Rename tab",renameField:"TAB TITLE",renameSubmit:"rename",chooseEngineHint:"\u2190/\u2192 or h/l choose, enter confirm, esc cancel",newChat:{title:"New conversation",engine:"ENGINE",destLabel:"DESTINATION",destTab:"child task, same directory",destFork:"fork a child task (new worktree)",destScratch:"new scratch task ($HOME)",ctxLabel:"CONTEXT",ctxFresh:"fresh conversation",ctxContinue:"continue this conversation"},cannotCloseLast:"Cannot close the only tab",tabGone:"That tab is no longer there",closeOthersTitle:"Close the other tabs?",closeOthersBody:"Closing {count} \xB7 their sessions end, this tab stays open.",closeOthersConfirm:"close tabs",closeOthersCancel:"cancel",menu:{rename:"Rename tab",copyAddress:"Copy tab address",continueEngine:"Continue in another engine\u2026",closeOthers:"Close other tabs",close:"Close tab"},nothingToFork:"No conversation in this tab to fork yet",noTranscriptToHandOff:"{engine} keeps no readable transcript to hand over"},split:{renameTitle:"Rename split",renameField:"SPLIT NAME"},scrolledBack:"\u2191 scrolled {lines}L",scrollFirst:"[first]",scrollLatest:"[latest]",unavailable:{shellMissing:"terminal unavailable \u2014 the shell named by $SHELL isn't on this machine. Point $SHELL at one that exists, or unset it to fall back to the system default.",spawnFailed:"terminal unavailable \u2014 the shell exited immediately. Its error is in ~/.rove/pty.log.",retry:"F5 tries again"},reset:{title:"Reset terminal?",body:"The running shell will be killed and a fresh one will spawn at the worktree. Any in-flight processes (vim, htop, paused jobs) end immediately."}},zh24={recovery:{live:"\u5DF2\u91CD\u65B0\u8FDE\u63A5\u4ECD\u5728\u8FD0\u884C\u7684\u8FDB\u7A0B",relaunched:"\u547D\u4EE4\u5DF2\u5728\u65B0\u8FDB\u7A0B\u4E2D\u91CD\u542F\u3002\u5982\u6709\u6062\u590D\u7684\u8F93\u51FA\uFF0C\u5B83\u5C5E\u4E8E\u5386\u53F2\u8BB0\u5F55\uFF1B\u8BF7\u5728\u5F15\u64CE\u5185\u786E\u8BA4\u4F1A\u8BDD\u6062\u590D\u6216\u7EE7\u7EED\u64CD\u4F5C\u3002",restored:"\u5DF2\u6062\u590D\u5386\u53F2\u753B\u9762\uFF1B\u539F\u8FDB\u7A0B\u5DF2\u7ED3\u675F\u3002\u8BF7\u91CD\u542F\u5E76\u786E\u8BA4\u5F15\u64CE\u72B6\u6001\u540E\u7EE7\u7EED\u3002"},noTask:"\uFF08\u65E0\u4EFB\u52A1 \u2014\u2014 \u6309 n \u521B\u5EFA\uFF09",exited:"\u8FDB\u7A0B\u5DF2\u9000\u51FA \u2014\u2014 \u6309 F5 \u91CD\u542F",engineExit:{title:"\u5F15\u64CE\u5DF2\u9000\u51FA",titleCode:"\u5F15\u64CE\u5DF2\u9000\u51FA\uFF08\u9000\u51FA\u7801 {code}\uFF09",retry:"\u91CD\u8BD5",settings:"\u8BBE\u7F6E \u2192 \u5F15\u64CE",another:"\u6362\u4E2A\u5F15\u64CE",continueIn:"\u6362\u4E2A\u5F15\u64CE\u7EE7\u7EED"},usageLimit:{title:"\u5DF2\u8FBE\u5230\u7528\u91CF\u4E0A\u9650",dismiss:"\u5FFD\u7565"},restoring:"\u6B63\u5728\u6062\u590D\u4F1A\u8BDD\u2026",tab:{groupTitle:"group {n}",renameTitle:"\u91CD\u547D\u540D\u6807\u7B7E\u9875",renameField:"\u6807\u7B7E\u9875\u540D\u79F0",renameSubmit:"\u91CD\u547D\u540D",chooseEngineHint:"\u2190/\u2192 \u6216 h/l \u9009\u62E9\uFF0Center \u786E\u8BA4\uFF0Cesc \u53D6\u6D88",newChat:{title:"\u65B0\u5EFA\u5BF9\u8BDD",engine:"\u5F15\u64CE",destLabel:"\u843D\u70B9",destTab:"\u5B50\u4EFB\u52A1\uFF0C\u540C\u4E00\u76EE\u5F55",destFork:"fork \u5B50\u4EFB\u52A1\uFF08\u65B0 worktree\uFF09",destScratch:"\u65B0\u4E34\u65F6\u4EFB\u52A1\uFF08$HOME\uFF09",ctxLabel:"\u4E0A\u4E0B\u6587",ctxFresh:"\u5168\u65B0\u5BF9\u8BDD",ctxContinue:"\u63A5\u7740\u5F53\u524D\u5BF9\u8BDD"},cannotCloseLast:"\u65E0\u6CD5\u5173\u95ED\u552F\u4E00\u7684\u6807\u7B7E\u9875",tabGone:"\u8FD9\u4E2A\u6807\u7B7E\u9875\u5DF2\u7ECF\u4E0D\u5728\u4E86",closeOthersTitle:"\u5173\u95ED\u5176\u4ED6\u6807\u7B7E\u9875\uFF1F",closeOthersBody:"\u5C06\u5173\u95ED {count} \u4E2A\uFF0C\u5B83\u4EEC\u7684\u4F1A\u8BDD\u4F1A\u7ED3\u675F\uFF0C\u53EA\u4FDD\u7559\u8FD9\u4E2A\u6807\u7B7E\u9875\u3002",closeOthersConfirm:"\u5173\u95ED\u6807\u7B7E\u9875",closeOthersCancel:"\u53D6\u6D88",menu:{rename:"\u91CD\u547D\u540D\u6807\u7B7E\u9875",copyAddress:"\u590D\u5236\u6807\u7B7E\u9875\u5730\u5740",continueEngine:"\u6362\u4E2A\u5F15\u64CE\u7EE7\u7EED\u2026",closeOthers:"\u5173\u95ED\u5176\u4ED6\u6807\u7B7E\u9875",close:"\u5173\u95ED\u6807\u7B7E\u9875"},nothingToFork:"\u8FD9\u4E2A\u6807\u7B7E\u9875\u8FD8\u6CA1\u6709\u53EF\u6D3E\u751F\u7684\u5BF9\u8BDD",noTranscriptToHandOff:"{engine} \u6CA1\u6709\u53EF\u8BFB\u7684\u5BF9\u8BDD\u8BB0\u5F55\uFF0C\u65E0\u6CD5\u4EA4\u63A5"},split:{renameTitle:"\u91CD\u547D\u540D\u5206\u5C4F",renameField:"\u5206\u5C4F\u540D\u79F0"},scrolledBack:"\u2191 \u5DF2\u56DE\u6EDA {lines} \u884C",scrollFirst:"[\u6700\u65E9]",scrollLatest:"[\u6700\u65B0]",unavailable:{shellMissing:"\u7EC8\u7AEF\u4E0D\u53EF\u7528 \u2014\u2014 $SHELL \u6307\u5411\u7684 shell \u5728\u8FD9\u53F0\u673A\u5668\u4E0A\u4E0D\u5B58\u5728\u3002\u8BF7\u628A $SHELL \u6307\u5411\u4E00\u4E2A\u771F\u5B9E\u5B58\u5728\u7684 shell\uFF0C\u6216\u53D6\u6D88\u8BBE\u7F6E\u4EE5\u56DE\u9000\u5230\u7CFB\u7EDF\u9ED8\u8BA4\u3002",spawnFailed:"\u7EC8\u7AEF\u4E0D\u53EF\u7528 \u2014\u2014 shell \u542F\u52A8\u540E\u7ACB\u5373\u9000\u51FA\u3002\u5177\u4F53\u9519\u8BEF\u89C1 ~/.rove/pty.log\u3002",retry:"\u6309 F5 \u91CD\u8BD5"},reset:{title:"\u91CD\u7F6E\u7EC8\u7AEF\uFF1F",body:"\u6B63\u5728\u8FD0\u884C\u7684 shell \u4F1A\u88AB\u6740\u6389\u5E76\u5728 worktree \u91CD\u65B0\u542F\u52A8\uFF0C\u8FDB\u884C\u4E2D\u7684\u8FDB\u7A0B\uFF08vim\u3001htop\u3001\u6682\u505C\u7684\u4EFB\u52A1\uFF09\u4F1A\u7ACB\u5373\u7ED3\u675F\u3002"}};var en25={pageTitle:"ROVE UPDATE",closeHint:"q / esc close",chip:"\u2191 {version}",current:"current",available:"v{version} available",latest:"latest",latestUnknown:"unknown \u2014 could not reach the registry",registryRetry:"Check your connection, then close and reopen Update to retry.",upToDate:"No newer release \u2014 nothing to install.",releaseUrlUnavailable:"release URL unavailable; visit github.com/Sma1lboy/rove/releases",statusReleaseOpened:"Opened release page in your browser.",statusReleaseError:"Could not open release URL. Visit github.com/Sma1lboy/rove/releases in your browser.",statusRunningUpdater:"Closing the TUI and running the updater in this terminal...",loadingNotes:"Loading release notes...",notesUnavailable:"Release notes are unavailable. Use Open release to view the GitHub release page.",changesSectionHeader:"\u2500\u2500 changes from v{from} to v{to} \u2500\u2500",updateComplete:"Rove update complete. Relaunch Rove to use the new version.",updateFailed:"Rove update failed with exit code {code}. Check the output above, then run `rove update` to retry.",pressAnyKey:"Press any key to close this update window.",actions:{updateNow:"Update now",openRelease:"Open release",close:"Close",closeDetail:"return to the workspace"},whatsNew:{title:"WHAT'S NEW",closeHint:"q / esc continue",upgraded:"You're now on Rove v{to}, up from v{from}. Here's what changed.",notesUnavailable:"Could not load the release notes \u2014 check your connection, or read them on GitHub.",sourceHint:"release notes: {url}"},skew:{title:"\u26A0 DAEMON OUT OF DATE",olderBuild:"an older build",hint:"daemon is {daemon} \u2014 you launched v{clientVersion}. Press {keys} to refresh Rove onto the installed build",hintNoKey:"daemon is {daemon} \u2014 you launched v{clientVersion}. Run `rove daemon restart`, then relaunch Rove"},refresh:{confirmTitle:"Refresh Rove?",confirmBody:"Rove restarts the daemon and relaunches itself on the installed build. Running engine sessions live in the PTY host and keep going; open tabs come back.",confirmLabel:"Refresh",relaunching:"rove: restarting on the installed build...",alreadyCurrent:"Rove and the daemon already run the same build \u2014 nothing to refresh.",installGone:"This Rove was installed from a directory that no longer exists, so it cannot relaunch itself. Reinstall with `npm install -g @sma1lboy/rove`."},staleInstall:{title:"\u2715 ROVE INSTALL IS GONE",hint:"this Rove is running from an install that no longer exists on disk, so it cannot start a daemon. Reinstall (`npm install -g @sma1lboy/rove`) and relaunch Rove"},versions:{pageTitle:"ROVE VERSIONS",loading:"Loading releases...",unavailable:"Could not fetch releases. Check your connection or wait for the rate limit, then reopen this page.",tagCurrent:"current",tagLatest:"latest",tagBreaking:"breaking",breakingWarning:"\u26A0 installing this crosses breaking version(s) {versions}. Rove will refuse to start until you run `rove reset`, which stops the daemon, the PTY host, and every live session. Tasks and worktrees are kept.",footerHint:"j/k select \xB7 enter install \xB7 q close",closeHint:"q / esc close"}},zh25={pageTitle:"ROVE \u66F4\u65B0",closeHint:"q / esc \u5173\u95ED",chip:"\u2191 {version}",current:"\u5F53\u524D",available:"\u6709\u65B0\u7248\u672C v{version}",latest:"\u6700\u65B0",latestUnknown:"\u672A\u77E5 \u2014\u2014 \u65E0\u6CD5\u8FDE\u63A5\u5230 registry",registryRetry:"\u8BF7\u68C0\u67E5\u7F51\u7EDC\uFF0C\u7136\u540E\u5173\u95ED\u5E76\u91CD\u65B0\u6253\u5F00\u66F4\u65B0\u9875\u91CD\u8BD5\u3002",upToDate:"\u6CA1\u6709\u66F4\u65B0\u7684\u7248\u672C \u2014\u2014 \u65E0\u9700\u5B89\u88C5\u3002",releaseUrlUnavailable:"\u53D1\u5E03\u94FE\u63A5\u4E0D\u53EF\u7528\uFF1B\u8BF7\u8BBF\u95EE github.com/Sma1lboy/rove/releases",statusReleaseOpened:"\u5DF2\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u53D1\u5E03\u8BF4\u660E\u9875\u9762\u3002",statusReleaseError:"\u65E0\u6CD5\u6253\u5F00\u53D1\u5E03\u94FE\u63A5\u3002\u8BF7\u5728\u6D4F\u89C8\u5668\u8BBF\u95EE github.com/Sma1lboy/rove/releases\u3002",statusRunningUpdater:"\u6B63\u5728\u5173\u95ED TUI\uFF0C\u5E76\u5728\u5F53\u524D\u7EC8\u7AEF\u4E2D\u8FD0\u884C\u66F4\u65B0\u7A0B\u5E8F\u2026\u2026",loadingNotes:"\u6B63\u5728\u52A0\u8F7D\u53D1\u5E03\u8BF4\u660E\u2026\u2026",notesUnavailable:"\u53D1\u5E03\u8BF4\u660E\u4E0D\u53EF\u7528\u3002\u8BF7\u4F7F\u7528\u300C\u6253\u5F00\u53D1\u5E03\u9875\u300D\u67E5\u770B GitHub \u53D1\u5E03\u9875\u9762\u3002",changesSectionHeader:"\u2500\u2500 v{from} \u81F3 v{to} \u7684\u53D8\u66F4 \u2500\u2500",updateComplete:"Rove \u66F4\u65B0\u5B8C\u6210\u3002\u8BF7\u91CD\u65B0\u542F\u52A8 Rove \u4EE5\u4F7F\u7528\u65B0\u7248\u672C\u3002",updateFailed:"Rove \u66F4\u65B0\u5931\u8D25\uFF0C\u9000\u51FA\u7801\u4E3A {code}\u3002\u8BF7\u68C0\u67E5\u4E0A\u65B9\u8F93\u51FA\uFF0C\u518D\u8FD0\u884C `rove update` \u91CD\u8BD5\u3002",pressAnyKey:"\u6309\u4EFB\u610F\u952E\u5173\u95ED\u6B64\u66F4\u65B0\u7A97\u53E3\u3002",actions:{updateNow:"\u7ACB\u5373\u66F4\u65B0",openRelease:"\u6253\u5F00\u53D1\u5E03\u9875",close:"\u5173\u95ED",closeDetail:"\u8FD4\u56DE\u5DE5\u4F5C\u533A"},whatsNew:{title:"\u66F4\u65B0\u5185\u5BB9",closeHint:"q / esc \u7EE7\u7EED",upgraded:"Rove \u5DF2\u4ECE v{from} \u66F4\u65B0\u5230 v{to}\uFF0C\u672C\u6B21\u53D8\u66F4\u5982\u4E0B\u3002",notesUnavailable:"\u65E0\u6CD5\u52A0\u8F7D\u53D1\u5E03\u8BF4\u660E \u2014\u2014 \u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\uFF0C\u6216\u5230 GitHub \u4E0A\u67E5\u770B\u3002",sourceHint:"\u53D1\u5E03\u8BF4\u660E\uFF1A{url}"},skew:{title:"\u26A0 DAEMON \u7248\u672C\u4E0D\u4E00\u81F4",olderBuild:"\u65E7\u7248\u672C\u6784\u5EFA",hint:"daemon \u8FD0\u884C\u7684\u662F {daemon}\uFF0C\u800C\u4F60\u542F\u52A8\u7684\u662F v{clientVersion}\u3002\u6309 {keys} \u53EF\u8BA9 Rove \u5237\u65B0\u5230\u5DF2\u5B89\u88C5\u7684\u7248\u672C",hintNoKey:"daemon \u8FD0\u884C\u7684\u662F {daemon}\uFF0C\u800C\u4F60\u542F\u52A8\u7684\u662F v{clientVersion}\u3002\u8BF7\u8FD0\u884C `rove daemon restart`\uFF0C\u7136\u540E\u91CD\u65B0\u542F\u52A8 Rove"},refresh:{confirmTitle:"\u5237\u65B0 Rove\uFF1F",confirmBody:"Rove \u4F1A\u91CD\u542F daemon\uFF0C\u5E76\u4EE5\u5DF2\u5B89\u88C5\u7684\u7248\u672C\u91CD\u65B0\u542F\u52A8\u81EA\u8EAB\u3002\u6B63\u5728\u8FD0\u884C\u7684\u5F15\u64CE\u4F1A\u8BDD\u7531 PTY host \u6258\u7BA1\uFF0C\u4E0D\u4F1A\u4E2D\u65AD\uFF1B\u5DF2\u6253\u5F00\u7684\u6807\u7B7E\u9875\u4F1A\u6062\u590D\u3002",confirmLabel:"\u5237\u65B0",relaunching:"rove\uFF1A\u6B63\u5728\u4EE5\u5DF2\u5B89\u88C5\u7684\u7248\u672C\u91CD\u65B0\u542F\u52A8\u2026\u2026",alreadyCurrent:"Rove \u4E0E daemon \u5DF2\u7ECF\u662F\u540C\u4E00\u4E2A\u7248\u672C \u2014\u2014 \u65E0\u9700\u5237\u65B0\u3002",installGone:"\u5F53\u524D Rove \u7684\u5B89\u88C5\u76EE\u5F55\u5DF2\u4E0D\u5B58\u5728\uFF0C\u65E0\u6CD5\u91CD\u65B0\u542F\u52A8\u81EA\u8EAB\u3002\u8BF7\u8FD0\u884C `npm install -g @sma1lboy/rove` \u91CD\u65B0\u5B89\u88C5\u3002"},staleInstall:{title:"\u2715 ROVE \u5B89\u88C5\u5DF2\u4E0D\u5B58\u5728",hint:"\u5F53\u524D Rove \u8FD0\u884C\u81EA\u4E00\u4EFD\u5DF2\u4ECE\u78C1\u76D8\u5220\u9664\u7684\u5B89\u88C5\uFF0C\u56E0\u6B64\u65E0\u6CD5\u542F\u52A8 daemon\u3002\u8BF7\u91CD\u65B0\u5B89\u88C5\uFF08`npm install -g @sma1lboy/rove`\uFF09\u5E76\u91CD\u65B0\u542F\u52A8 Rove"},versions:{pageTitle:"ROVE \u7248\u672C\u5217\u8868",loading:"\u6B63\u5728\u52A0\u8F7D\u53D1\u5E03\u5217\u8868\u2026\u2026",unavailable:"\u65E0\u6CD5\u83B7\u53D6\u53D1\u5E03\u5217\u8868\u3002\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u7B49\u5F85\u9650\u6D41\u89E3\u9664\uFF0C\u7136\u540E\u91CD\u65B0\u6253\u5F00\u672C\u9875\u3002",tagCurrent:"\u5F53\u524D",tagLatest:"\u6700\u65B0",tagBreaking:"breaking",breakingWarning:"\u26A0 \u5B89\u88C5\u8BE5\u7248\u672C\u4F1A\u8DE8\u8FC7 breaking \u7248\u672C {versions}\u3002\u66F4\u65B0\u540E Rove \u4F1A\u62D2\u7EDD\u542F\u52A8\uFF0C\u76F4\u5230\u4F60\u8FD0\u884C `rove reset`\u2014\u2014\u5B83\u4F1A\u505C\u6389 daemon\u3001PTY host \u548C\u6240\u6709\u6D3B\u52A8\u4F1A\u8BDD\u3002\u4EFB\u52A1\u548C worktree \u4F1A\u4FDD\u7559\u3002",footerHint:"j/k \u9009\u62E9 \xB7 enter \u5B89\u88C5 \xB7 q \u5173\u95ED",closeHint:"q / esc \u5173\u95ED"}};var en26={title:"ISSUES",noRepo:"no project",empty:"No open issues.",assignedFilter:"assigned to me",starting:"Starting work on #{number}\u2026",startedNoEngine:"Created {title}, but its engine did not start.",linkedChip:"\u2192 {title}",openingLinked:"Opening {title}\u2026",startFailed:"Couldn't start work on #{number}: {error}",errorHint:{noRemote:"Add a GitHub remote (`git remote add origin <url>`) and try again, or press q / esc to close.",ghMissing:"Install the `gh` CLI and authenticate, or press q / esc to close.",auth:"Run `gh auth login`, or press q / esc to close.",fallback:"{message} \xB7 press q / esc to close"}},zh26={title:"\u8BAE\u9898",noRepo:"\u65E0\u9879\u76EE",empty:"\u6CA1\u6709\u5F00\u653E\u7684\u8BAE\u9898\u3002",assignedFilter:"\u5206\u914D\u7ED9\u6211\u7684",starting:"\u6B63\u5728\u5F00\u59CB\u5904\u7406 #{number}\u2026",startedNoEngine:"\u5DF2\u521B\u5EFA {title}\uFF0C\u4F46\u5F15\u64CE\u6CA1\u6709\u542F\u52A8\u3002",linkedChip:"\u2192 {title}",openingLinked:"\u6B63\u5728\u6253\u5F00 {title}\u2026",startFailed:"\u5F00\u59CB\u5904\u7406 #{number} \u5931\u8D25\uFF1A{error}",errorHint:{noRemote:"\u6DFB\u52A0 GitHub remote\uFF08`git remote add origin <url>`\uFF09\u540E\u91CD\u8BD5\uFF0C\u6216\u6309 q / esc \u5173\u95ED\u3002",ghMissing:"\u5B89\u88C5 `gh` CLI \u5E76\u767B\u5F55\uFF0C\u6216\u6309 q / esc \u5173\u95ED\u3002",auth:"\u6267\u884C `gh auth login`\uFF0C\u6216\u6309 q / esc \u5173\u95ED\u3002",fallback:"{message} \xB7 \u6309 q / esc \u5173\u95ED"}};var en27={quit:{confirmTitle:"Quit Rove?",confirmBody:"The daemon and task sessions keep running. This closes only the native workspace.",confirmLabel:"Quit"},narrowBack:"Tasks",empty:{selectTask:"Select a task with a worktree",noSessions:"No sessions here \u2014 press \u23CE to start {engine}, or ctrl+e to pick another",noSessionsShell:"No sessions here \u2014 press \u23CE to start a shell, or ctrl+e to pick another",remoteUnsupported:"Hosted engine launch over SSH is not implemented \u2014 this task's worktree is on {host}"},welcome:{title:"Welcome to Rove",tagline:"Run several AI coding sessions side by side \u2014 use managed tasks for isolated worktrees.",worktreeExplain:"Managed tasks create isolated worktrees and branches. Directory and project tasks reuse existing files; tabs within a task share its directory.",stepNew:"creates your first task \u2014 pick a repo, a base branch, an engine",stepHelp:"shows every shortcut reachable from the current focus",stepPrefix:"opens the command menu",enginesFound:"\u2713 engines: {list}",enginesSignedOut:"\u2717 installed but not signed in: {list} \u2014 run one of them in a shell and log in",enginesMissing:"\u2717 no engine CLI found \u2014 install claude, codex, copilot, or kimi, then restart Rove",gitMissing:"\u2717 git not found on PATH \u2014 Rove needs git to create worktrees",doctorHint:"run `rove doctor` in a shell for the full diagnosis",docsHint:"docs: https://docs.rove.run"},attention:{none:"No available Inbox items"},inbox:{title:"INBOX",empty:"No pending attention",openHint:"enter open",clearHint:"d clear",more:"+{count} more",section:{attention:"ATTENTION",recent:"RECENT"},state:{done:"done",needsInput:"needs input",error:"error",rateLimited:"rate limited",running:"running",dead:"engine exited",routineFailed:"routine needs you",reportMissing:"report missing",decisionNeeded:"decision needed",gateAnswered:"answered \xB7 engine not running"},resumesAt:"resumes {time}"}},zh27={quit:{confirmTitle:"\u9000\u51FA Rove\uFF1F",confirmBody:"\u5B88\u62A4\u8FDB\u7A0B\u548C\u4EFB\u52A1\u4F1A\u8BDD\u4F1A\u7EE7\u7EED\u8FD0\u884C\uFF0C\u8FD9\u91CC\u53EA\u5173\u95ED\u539F\u751F\u5DE5\u4F5C\u533A\u3002",confirmLabel:"\u9000\u51FA"},narrowBack:"\u4EFB\u52A1",empty:{selectTask:"\u8BF7\u9009\u62E9\u4E00\u4E2A\u5E26 worktree \u7684\u4EFB\u52A1",noSessions:"\u8FD9\u91CC\u6CA1\u6709\u4F1A\u8BDD\u2014\u2014\u6309 \u23CE \u542F\u52A8 {engine}\uFF0C\u6216\u6309 ctrl+e \u53E6\u9009\u4E00\u4E2A",noSessionsShell:"\u8FD9\u91CC\u6CA1\u6709\u4F1A\u8BDD\u2014\u2014\u6309 \u23CE \u542F\u52A8 shell\uFF0C\u6216\u6309 ctrl+e \u53E6\u9009\u4E00\u4E2A",remoteUnsupported:"\u5C1A\u672A\u5B9E\u73B0\u901A\u8FC7 SSH \u542F\u52A8\u6258\u7BA1\u5F15\u64CE\u2014\u2014\u8BE5\u4EFB\u52A1\u7684 worktree \u5728 {host} \u4E0A"},welcome:{title:"\u6B22\u8FCE\u4F7F\u7528 Rove",tagline:"\u5E76\u884C\u8FD0\u884C\u591A\u4E2A AI \u7F16\u7801\u4F1A\u8BDD\u2014\u2014\u4F7F\u7528\u6258\u7BA1\u4EFB\u52A1\u83B7\u5F97\u72EC\u7ACB\u7684 worktree\u3002",worktreeExplain:"\u6258\u7BA1\u4EFB\u52A1\u521B\u5EFA\u72EC\u7ACB\u7684 worktree \u548C\u5206\u652F\u3002\u76EE\u5F55\u4E0E\u9879\u76EE\u4EFB\u52A1\u590D\u7528\u73B0\u6709\u6587\u4EF6\uFF1B\u540C\u4E00\u4EFB\u52A1\u5185\u7684\u6807\u7B7E\u9875\u5171\u4EAB\u76EE\u5F55\u3002",stepNew:"\u521B\u5EFA\u4F60\u7684\u7B2C\u4E00\u4E2A\u4EFB\u52A1\u2014\u2014\u9009\u4ED3\u5E93\u3001\u57FA\u7840\u5206\u652F\u548C\u5F15\u64CE",stepHelp:"\u67E5\u770B\u5F53\u524D\u7126\u70B9\u4E0B\u7684\u5168\u90E8\u5FEB\u6377\u952E",stepPrefix:"\u6253\u5F00\u547D\u4EE4\u83DC\u5355",enginesFound:"\u2713 \u5DF2\u68C0\u6D4B\u5230\u5F15\u64CE:{list}",enginesSignedOut:"\u2717 \u5DF2\u5B89\u88C5\u4F46\u672A\u767B\u5F55:{list}\u2014\u2014\u8BF7\u5728 shell \u91CC\u8FD0\u884C\u5176\u4E2D\u4E4B\u4E00\u5E76\u5B8C\u6210\u767B\u5F55",enginesMissing:"\u2717 \u672A\u627E\u5230\u5F15\u64CE CLI\u2014\u2014\u8BF7\u5B89\u88C5 claude\u3001codex\u3001copilot \u6216 kimi \u540E\u91CD\u542F Rove",gitMissing:"\u2717 PATH \u4E0A\u6CA1\u6709 git\u2014\u2014Rove \u9700\u8981 git \u6765\u521B\u5EFA worktree",doctorHint:"\u5728 shell \u91CC\u8FD0\u884C `rove doctor` \u67E5\u770B\u5B8C\u6574\u8BCA\u65AD",docsHint:"\u6587\u6863:https://docs.rove.run"},attention:{none:"\u6536\u4EF6\u7BB1\u4E2D\u6CA1\u6709\u53EF\u6253\u5F00\u7684\u9879\u76EE"},inbox:{title:"\u6536\u4EF6\u7BB1",empty:"\u6682\u65E0\u5F85\u5904\u7406",openHint:"enter \u6253\u5F00",clearHint:"d \u6E05\u9664",more:"\u8FD8\u6709 {count} \u6761",section:{attention:"\u5F85\u5904\u7406",recent:"\u6700\u8FD1\u4F7F\u7528"},state:{done:"\u5B8C\u6210",needsInput:"\u9700\u8981\u8F93\u5165",error:"\u51FA\u9519",rateLimited:"\u9650\u6D41",running:"\u8FDB\u884C\u4E2D",dead:"\u5F15\u64CE\u5DF2\u9000\u51FA",routineFailed:"\u4F8B\u884C\u4EFB\u52A1\u9700\u8981\u5904\u7406",reportMissing:"\u672A\u56DE\u62A5",decisionNeeded:"\u7B49\u4F60\u51B3\u5B9A",gateAnswered:"\u5DF2\u56DE\u7B54 \xB7 \u5F15\u64CE\u672A\u8FD0\u884C"},resumesAt:"{time} \u6062\u590D"}};var en28={title:"Worktrees",loading:"Loading worktrees\u2026",noProjects:"No local projects known to Rove yet.",noWorktrees:"No worktrees.",badge:{roveManaged:"rove",dirty:"dirty",dirtyUnknown:"dirty?",remoteOn:"on remote",remoteOff:"not pushed",remoteUnknown:"remote unknown"},verdict:{prOpen:"PR open",prMerged:"merged (PR)",inMain:"in main",prClosed:"PR closed",idle:"stale"},row:{detached:"(detached)",created:"created {age} ago"},delete:{button:"Delete",confirmTitle:"Delete worktree?",confirmBody:'Delete the worktree for "{branch}"? This removes the working directory; the branch itself is kept.',forceTitle:"Force delete worktree?",forceBody:'"{branch}" has uncommitted, untracked, or gitignored work. Force delete removes the worktree, but the work is snapshotted first to a salvage ref \u2014 list them with `git for-each-ref refs/rove/salvage`. Force delete anyway?',forceReason:"Refused because: {reason}",failed:"Failed to delete worktree: {error}",residue:"Git deregistered the worktree, but couldn't delete {path} ({reason}). Rove is done with it \u2014 retrying won't help; delete the directory by hand if you want the space."},land:{button:"Land",confirmTitle:"Land branch?",confirmBody:'Merge "{branch}" into {landedOn} ({commits} commits), then remove this worktree? The branch is kept. Conflicts abort with a file list.',confirmBodyOne:'Merge "{branch}" into {landedOn} (1 commit), then remove this worktree? The branch is kept. Conflicts abort with a file list.',noTask:"This worktree isn't tracked as a Rove task \u2014 nothing to land.",conflict:"Land hit conflicts (merge aborted). Resolve by hand: {files}",dirtyBase:"The base checkout has uncommitted changes \u2014 commit them, then land. Never `git stash` here: the stash stack lives in the repo's common dir and is shared by every linked worktree, so a stash can entangle other tasks' work.",failed:"Land failed: {error}",done:'Landed "{branch}" onto {landedOn} ({commit}).',worktreeKept:"Landed, but the worktree was kept: {reason}",worktreePathStale:"Landed and removed the worktree, but the task still points at it: {reason}",worktreeResidue:"Landed. Git deregistered the worktree, but couldn't delete {path} ({reason}) \u2014 delete the directory by hand if you want the space."},hint:{}},zh28={title:"\u5DE5\u4F5C\u6811",loading:"\u6B63\u5728\u52A0\u8F7D worktree\u2026",noProjects:"Rove \u8FD8\u6CA1\u6709\u5DF2\u77E5\u7684\u672C\u5730\u9879\u76EE\u3002",noWorktrees:"\u6CA1\u6709 worktree\u3002",badge:{roveManaged:"rove",dirty:"\u6709\u6539\u52A8",dirtyUnknown:"\u6539\u52A8\u672A\u77E5",remoteOn:"\u5DF2\u63A8\u9001",remoteOff:"\u672A\u63A8\u9001",remoteUnknown:"\u8FDC\u7AEF\u672A\u77E5"},verdict:{prOpen:"PR \u8BC4\u5BA1\u4E2D",prMerged:"\u5DF2\u5408\u5165 (PR)",inMain:"\u5DF2\u5728\u4E3B\u5206\u652F",prClosed:"PR \u5DF2\u5173\u95ED",idle:"\u9648\u65E7"},row:{detached:"(\u6E38\u79BB\u72B6\u6001)",created:"{age}\u524D\u521B\u5EFA"},delete:{button:"\u5220\u9664",confirmTitle:"\u5220\u9664 worktree\uFF1F",confirmBody:'\u786E\u5B9A\u5220\u9664 "{branch}" \u5BF9\u5E94\u7684 worktree\uFF1F\u5DE5\u4F5C\u76EE\u5F55\u4F1A\u88AB\u79FB\u9664\uFF0C\u5206\u652F\u672C\u8EAB\u4F1A\u4FDD\u7559\u3002',forceTitle:"\u5F3A\u5236\u5220\u9664 worktree\uFF1F",forceBody:'"{branch}" \u5B58\u5728\u672A\u63D0\u4EA4\u3001\u672A\u8DDF\u8E2A\u6216\u88AB gitignore \u7684\u6539\u52A8\u3002\u5F3A\u5236\u5220\u9664\u4F1A\u79FB\u9664 worktree\uFF0C\u4F46\u8FD9\u4E9B\u6539\u52A8\u4F1A\u5148\u88AB\u5FEB\u7167\u5230\u4E00\u4E2A salvage ref\u2014\u2014\u7528 `git for-each-ref refs/rove/salvage` \u53EF\u4EE5\u5217\u51FA\u5B83\u4EEC\u3002\u4ECD\u8981\u5F3A\u5236\u5220\u9664\u5417\uFF1F',forceReason:"\u62D2\u7EDD\u539F\u56E0\uFF1A{reason}",failed:"\u5220\u9664 worktree \u5931\u8D25\uFF1A{error}",residue:"Git \u5DF2\u6CE8\u9500\u8BE5 worktree\uFF0C\u4F46\u6CA1\u80FD\u5220\u6389 {path}\uFF08{reason}\uFF09\u3002Rove \u8FD9\u8FB9\u5DF2\u7ECF\u5904\u7406\u5B8C\u4E86\u2014\u2014\u91CD\u8BD5\u6CA1\u6709\u7528\uFF1B\u60F3\u8981\u56DE\u78C1\u76D8\u7A7A\u95F4\u8BF7\u624B\u52A8\u5220\u9664\u8BE5\u76EE\u5F55\u3002"},land:{button:"\u5408\u5165",confirmTitle:"\u5408\u5165\u5206\u652F\uFF1F",confirmBody:'\u628A "{branch}" \u5408\u5165 {landedOn}\uFF08{commits} \u4E2A\u63D0\u4EA4\uFF09\uFF0C\u7136\u540E\u79FB\u9664\u8FD9\u4E2A worktree\uFF1F\u5206\u652F\u4F1A\u4FDD\u7559\u3002\u51B2\u7A81\u4F1A\u4E2D\u6B62\u5E76\u7ED9\u51FA\u6587\u4EF6\u6E05\u5355\u3002',confirmBodyOne:'\u628A "{branch}" \u5408\u5165 {landedOn}\uFF081 \u4E2A\u63D0\u4EA4\uFF09\uFF0C\u7136\u540E\u79FB\u9664\u8FD9\u4E2A worktree\uFF1F\u5206\u652F\u4F1A\u4FDD\u7559\u3002\u51B2\u7A81\u4F1A\u4E2D\u6B62\u5E76\u7ED9\u51FA\u6587\u4EF6\u6E05\u5355\u3002',noTask:"\u8BE5 worktree \u672A\u4F5C\u4E3A Rove \u4EFB\u52A1\u88AB\u8DDF\u8E2A\u2014\u2014\u6CA1\u6709\u53EF\u5408\u5165\u7684\u5BF9\u8C61\u3002",conflict:"\u5408\u5165\u9047\u5230\u51B2\u7A81\uFF08\u5DF2\u4E2D\u6B62\uFF09\u3002\u8BF7\u624B\u52A8\u89E3\u51B3\uFF1A{files}",dirtyBase:"\u57FA\u7840\u68C0\u51FA\u6709\u672A\u63D0\u4EA4\u6539\u52A8\u2014\u2014\u8BF7\u5148\u63D0\u4EA4\u518D\u5408\u5165\u3002\u7EDD\u4E0D\u8981\u5728\u8FD9\u91CC `git stash`\uFF1Astash \u6808\u5B58\u653E\u5728\u4ED3\u5E93\u7684 common dir \u4E2D\uFF0C\u8BE5\u4ED3\u5E93\u6240\u6709 linked worktree \u5171\u4EAB\uFF0C\u4E00\u6B21 stash \u53EF\u80FD\u7EA0\u7F20\u5176\u4ED6\u4EFB\u52A1\u7684\u5DE5\u4F5C\u3002",failed:"\u5408\u5165\u5931\u8D25\uFF1A{error}",done:'\u5DF2\u628A "{branch}" \u5408\u5165 {landedOn}\uFF08{commit}\uFF09\u3002',worktreeKept:"\u5DF2\u5408\u5165\uFF0C\u4F46 worktree \u4FDD\u7559\u4E86\uFF1A{reason}",worktreePathStale:"\u5DF2\u5408\u5165\u5E76\u79FB\u9664 worktree\uFF0C\u4F46\u4EFB\u52A1\u4ECD\u6307\u5411\u5B83\uFF1A{reason}",worktreeResidue:"\u5DF2\u5408\u5165\u3002Git \u5DF2\u6CE8\u9500\u8BE5 worktree\uFF0C\u4F46\u6CA1\u80FD\u5220\u6389 {path}\uFF08{reason}\uFF09\u2014\u2014\u60F3\u8981\u56DE\u78C1\u76D8\u7A7A\u95F4\u8BF7\u624B\u52A8\u5220\u9664\u8BE5\u76EE\u5F55\u3002"},hint:{}};var en29={settings:en20,tasks:en23,terminal:en24,files:en4,newTask:en11,onboarding:en12,ops:en13,update:en25,quickTask:en14,help:en6,hints:en7,common:en2,keys:en9,workspace:en27,worktrees:en28,kanban:en8,automations:en,workItems:en26,gates:en5,doctor:en3,mods:en10,search:en15},zh29={settings:zh20,tasks:zh23,terminal:zh24,files:zh4,newTask:zh11,onboarding:zh12,ops:zh13,update:zh25,quickTask:zh14,help:zh6,hints:zh7,common:zh2,keys:zh9,workspace:zh27,worktrees:zh28,kanban:zh8,automations:zh,workItems:zh26,gates:zh5,doctor:zh3,mods:zh10,search:zh15},LOCALES=[{id:"en",label:"English",intl:"en-US"},{id:"zh",label:"\u4E2D\u6587",intl:"zh-CN"}],CATALOGS={en:en29,zh:zh29},DEFAULT_LOCALE="en";function isLocaleId(value){return typeof value==="string"&&LOCALES.some((l)=>l.id===value)}
|
|
3
|
-
export{LOCALES,CATALOGS,DEFAULT_LOCALE,isLocaleId};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{userThemesDir,validateTheme}from"./chunk-kxp04jnp.js";import{existsSync,mkdirSync,writeFileSync}from"fs";import{join}from"path";var HOSTED_THEMES=["catppuccin","dracula","everforest","gruvbox","kanagawa","nord","opencode","osaka-jade","rose-pine","solarized"],hostedThemeUrl=(name)=>`https://rove.run/themes/${name}.json`;class ThemeInstallError extends Error{}function parseTheme(text){let parsed;try{parsed=JSON.parse(text)}catch(err){throw new ThemeInstallError(`source is not valid JSON: ${err instanceof Error?err.message:String(err)}`)}let result=validateTheme(parsed);if(!result.ok)throw new ThemeInstallError(`source is not a valid Rove theme: ${result.reason}`);return result.theme}function isThemeName(name){return!!name&&/^[a-zA-Z0-9._-]+$/.test(name)&&name!=="."&&name!==".."}function writeUserTheme(name,theme,force){if(!isThemeName(name))throw new ThemeInstallError(`invalid theme name "${name}" (use letters, digits, '.', '_', '-')`);let dir=userThemesDir();mkdirSync(dir,{recursive:!0});let dest=join(dir,`${name}.json`);if(existsSync(dest)&&!force)throw new ThemeInstallError(`${dest} already exists (pass --force to overwrite)`);return writeFileSync(dest,`${JSON.stringify(theme,null,2)}
|
|
3
|
-
`,"utf8"),dest}
|
|
4
|
-
export{HOSTED_THEMES,hostedThemeUrl,ThemeInstallError,parseTheme,isThemeName,writeUserTheme};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{submitFeedback}from"./chunk-2pfh3zm0.js";import"./chunk-2wrt80ft.js";import"./chunk-z1nj22va.js";import{ROVE_PRODUCT_NAME}from"./chunk-zt7wfnva.js";import"./chunk-f8gg8cqh.js";import"./chunk-nc46gddg.js";import"./chunk-91sykzqq.js";import{readFileSync}from"fs";var CLI_NAME=ROVE_PRODUCT_NAME,FEEDBACK_USAGE=[`Usage: ${CLI_NAME} feedback --title <text> (--body <text> | --body-file <path>) [--category <slug>]`,"","Create a GitHub Discussion in the Rove repository using the GitHub CLI.","","Requires:"," gh auth login","","Options:"," --title <text> Discussion title"," --body <text> Discussion body"," --body-file <path> Read the Discussion body from a file; use - for stdin"," --category <slug> Discussion category slug (default: feedback)"," -h, --help Print this help",""].join(`
|
|
3
|
-
`);function usageError(message){process.stderr.write(`${CLI_NAME} feedback: ${message}
|
|
4
|
-
|
|
5
|
-
${FEEDBACK_USAGE}
|
|
6
|
-
`),process.exit(2)}function readBodyFile(path){if(path==="-")return readFileSync(0,"utf8");return readFileSync(path,"utf8")}function parseFeedbackArgs(args){let parsed={help:!1};for(let i=0;i<args.length;i++){let arg=args[i];if(arg==="--help"||arg==="-h"||arg==="help")return{...parsed,help:!0};if(arg==="--title"){if(parsed.title=args[++i],parsed.title===void 0)usageError("--title requires a value");continue}if(arg==="--body"){if(parsed.body=args[++i],parsed.body===void 0)usageError("--body requires a value");continue}if(arg==="--body-file"){if(parsed.bodyFile=args[++i],parsed.bodyFile===void 0)usageError("--body-file requires a value");continue}if(arg==="--category"){if(parsed.category=args[++i],parsed.category===void 0)usageError("--category requires a value");continue}usageError(`unexpected argument "${arg}"`)}return parsed}async function runFeedbackSubcommand(args){let parsed=parseFeedbackArgs(args);if(parsed.help){process.stdout.write(`${FEEDBACK_USAGE}
|
|
7
|
-
`);return}if(!parsed.title)usageError("--title is required");if(parsed.body&&parsed.bodyFile)usageError("pass either --body or --body-file, not both");let body=parsed.bodyFile?readBodyFile(parsed.bodyFile):parsed.body;if(!body)usageError("--body or --body-file is required");let result=submitFeedback({title:parsed.title,body,categorySlug:parsed.category});console.log(`created Discussion #${result.number}: ${result.url}`)}export{runFeedbackSubcommand,parseFeedbackArgs};
|