@sma1lboy/rove 0.9.250 → 0.9.251
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-032g0ahy.js +3 -0
- package/dist/cli/{chunk-h86p4zzr.js → chunk-094cgrcc.js} +1 -1
- package/dist/cli/{chunk-5bfern2b.js → chunk-11wyec8z.js} +1 -1
- package/dist/cli/{chunk-kxaqge09.js → chunk-14f459aa.js} +1 -1
- package/dist/cli/{chunk-8gmxg77t.js → chunk-1exaxwyv.js} +1 -1
- package/dist/cli/{chunk-mptaj95j.js → chunk-1tebqkdv.js} +1 -1
- package/dist/cli/{chunk-h9cg0j3a.js → chunk-21ek142k.js} +1 -1
- package/dist/cli/{chunk-9q1m5qz0.js → chunk-28wjmb9f.js} +1 -1
- package/dist/cli/chunk-29kvfqeh.js +23 -0
- package/dist/cli/chunk-2dpr8gps.js +2 -0
- package/dist/cli/{chunk-mn6qth54.js → chunk-2g2w5vvn.js} +1 -1
- package/dist/cli/{chunk-7xttx9m1.js → chunk-2pen6b1t.js} +1 -1
- package/dist/cli/{chunk-a82ec09z.js → chunk-2wd4744g.js} +1 -1
- package/dist/cli/chunk-3msnqacf.js +2 -0
- package/dist/cli/{chunk-wtdj8n93.js → chunk-4rx3nhvq.js} +1 -1
- package/dist/cli/{chunk-2vgc5cyj.js → chunk-4z01vg3t.js} +1 -1
- package/dist/cli/{chunk-y2bga5cw.js → chunk-5456ttpr.js} +3 -3
- package/dist/cli/{chunk-f7zjggfv.js → chunk-568q390y.js} +2 -2
- package/dist/cli/chunk-5q08srg6.js +2 -0
- package/dist/cli/chunk-5r71q63g.js +2 -0
- package/dist/cli/chunk-6ahc8w4p.js +87 -0
- package/dist/cli/{chunk-3c58659p.js → chunk-6f01fsje.js} +1 -1
- package/dist/cli/{chunk-rvqse0aa.js → chunk-6h0n4b5t.js} +2 -2
- package/dist/cli/chunk-6rrzq5et.js +3 -0
- package/dist/cli/chunk-719avf77.js +2 -0
- package/dist/cli/chunk-76n3d9x3.js +2 -0
- package/dist/cli/{chunk-jh11snb1.js → chunk-7j00hbq5.js} +1 -1
- package/dist/cli/{chunk-8n19nb0s.js → chunk-7vv6160d.js} +1 -1
- package/dist/cli/{chunk-gc77ewk2.js → chunk-7z9yfnjd.js} +1 -1
- package/dist/cli/{chunk-4xns5j33.js → chunk-84bmcqyz.js} +1 -1
- package/dist/cli/{chunk-hm6qe86k.js → chunk-86chrjqr.js} +1 -1
- package/dist/cli/{chunk-kqc0kym1.js → chunk-88czbfqx.js} +1 -1
- package/dist/cli/{chunk-r07zjer5.js → chunk-8ezc1ban.js} +2 -2
- package/dist/cli/{chunk-ntrwd6ks.js → chunk-8ja7jrhc.js} +2 -2
- package/dist/cli/chunk-8s0mz115.js +52 -0
- package/dist/cli/{chunk-rjxj5tf4.js → chunk-8sbbzs5g.js} +1 -1
- package/dist/cli/{chunk-rtdr5bm8.js → chunk-8spmjwwz.js} +1 -1
- package/dist/cli/{chunk-wqfp8d9w.js → chunk-91sykzqq.js} +2 -2
- package/dist/cli/{chunk-jk8knad0.js → chunk-963er0h4.js} +3 -3
- package/dist/cli/{chunk-y7mg74jx.js → chunk-964z8ccb.js} +1 -1
- package/dist/cli/chunk-9h940gnr.js +2 -0
- package/dist/cli/{chunk-z0ewb9k9.js → chunk-9v568ape.js} +1 -1
- package/dist/cli/{chunk-tbrkck2f.js → chunk-9xtg2k54.js} +1 -1
- package/dist/cli/{chunk-xv8fhxxm.js → chunk-a7m7w6d1.js} +1 -1
- package/dist/cli/{chunk-3pdg2afa.js → chunk-apfzdw7g.js} +2 -2
- package/dist/cli/{chunk-fxqp6zt5.js → chunk-ayr5dpgc.js} +1 -1
- package/dist/cli/{chunk-j3c4kygc.js → chunk-bvqwgrar.js} +1 -1
- package/dist/cli/{chunk-ktzbg4jg.js → chunk-cb1dg7nz.js} +1 -1
- package/dist/cli/{chunk-nhakrm1f.js → chunk-cmp64q4j.js} +1 -1
- package/dist/cli/chunk-cp5jp5mq.js +3 -0
- package/dist/cli/{chunk-78xjh4gg.js → chunk-crdyt04z.js} +1 -1
- package/dist/cli/chunk-d99385f2.js +22 -0
- package/dist/cli/chunk-daw4mxq3.js +2 -0
- package/dist/cli/{chunk-wtb8cycx.js → chunk-dcjxtwdb.js} +1 -1
- package/dist/cli/{chunk-78kh1fet.js → chunk-dgbcpkr2.js} +1 -1
- package/dist/cli/{chunk-easxds8p.js → chunk-e003wm6d.js} +2 -2
- package/dist/cli/{chunk-2mrwdd50.js → chunk-e1xvz3sv.js} +1 -1
- package/dist/cli/chunk-f7rmd4zk.js +6 -0
- package/dist/cli/{chunk-7mq1ascs.js → chunk-fktvtdkb.js} +1 -1
- package/dist/cli/{chunk-2r696a8v.js → chunk-fsdh66fa.js} +1 -1
- package/dist/cli/{chunk-06d596z0.js → chunk-g5rr5fpn.js} +1 -1
- package/dist/cli/chunk-g872swb8.js +82 -0
- package/dist/cli/{chunk-t8v9rpdx.js → chunk-g8wrdp7n.js} +1 -1
- package/dist/cli/{chunk-fxm1cmp9.js → chunk-ga5f2pyc.js} +1 -1
- package/dist/cli/{chunk-ce16ecse.js → chunk-gaf6n1ea.js} +1 -1
- package/dist/cli/{chunk-53cyns0f.js → chunk-gp991c3v.js} +1 -1
- package/dist/cli/chunk-h9kzwj14.js +2 -0
- package/dist/cli/{chunk-yjs6d5w1.js → chunk-jfnr89qj.js} +1 -1
- package/dist/cli/{chunk-d5xc67hp.js → chunk-jrdwedn2.js} +1 -1
- package/dist/cli/{chunk-wnwzj8am.js → chunk-k9spgfmx.js} +1 -1
- package/dist/cli/{chunk-41r8zj46.js → chunk-kb3zvtkj.js} +1 -1
- package/dist/cli/{chunk-vb2tzcde.js → chunk-m4wy9ja5.js} +1 -1
- package/dist/cli/chunk-md094j05.js +3 -0
- package/dist/cli/{chunk-09y4jh6p.js → chunk-mdnrrj16.js} +1 -1
- package/dist/cli/{chunk-whbm14qr.js → chunk-meyfwc50.js} +1 -1
- package/dist/cli/{chunk-wkt6h5cf.js → chunk-mf7fb92r.js} +1 -1
- package/dist/cli/chunk-mnm9n2vr.js +2 -0
- package/dist/cli/chunk-mnpewdhd.js +17 -0
- package/dist/cli/chunk-mq06xpqr.js +3 -0
- package/dist/cli/{chunk-93r6tgf1.js → chunk-mre9g9vq.js} +1 -1
- package/dist/cli/{chunk-c01899mr.js → chunk-mv0hp5cv.js} +1 -1
- package/dist/cli/{chunk-21xgqgmv.js → chunk-n52x0ehz.js} +1 -1
- package/dist/cli/{chunk-g8fjjbnj.js → chunk-ncrr0fa3.js} +1 -1
- package/dist/cli/{chunk-k39sf30b.js → chunk-nep425b6.js} +1 -1
- package/dist/cli/{chunk-pe6wnsww.js → chunk-nj53wrzz.js} +1 -1
- package/dist/cli/{chunk-ap3r73bm.js → chunk-nsqsvgry.js} +3 -3
- package/dist/cli/{chunk-p83wf4zw.js → chunk-nxe45n7k.js} +2 -2
- package/dist/cli/{chunk-38s9e8dh.js → chunk-ny12rama.js} +1 -1
- package/dist/cli/{chunk-q8q22wq3.js → chunk-p2jeq98m.js} +1 -1
- package/dist/cli/chunk-q3xt0mqt.js +3 -0
- package/dist/cli/{chunk-7s67c0kw.js → chunk-q5bhq11t.js} +1 -1
- package/dist/cli/chunk-q6qhk171.js +2 -0
- package/dist/cli/{chunk-9aydqazr.js → chunk-q854fweb.js} +1 -1
- package/dist/cli/chunk-qft75bkm.js +2 -0
- package/dist/cli/{chunk-p18ehv9y.js → chunk-qstjfseh.js} +1 -1
- package/dist/cli/chunk-qxzrdfh7.js +11 -0
- package/dist/cli/{chunk-bvqazrbz.js → chunk-qyfmfpjg.js} +1 -1
- package/dist/cli/{chunk-gcxcq22q.js → chunk-r0etyq15.js} +1 -1
- package/dist/cli/{chunk-hbn1t161.js → chunk-r2c5nbcq.js} +1 -1
- package/dist/cli/chunk-r7tbzgt7.js +2 -0
- package/dist/cli/{chunk-s57vy3k3.js → chunk-ra40m849.js} +1 -1
- package/dist/cli/chunk-regtterm.js +9 -0
- package/dist/cli/{chunk-pvm3fc44.js → chunk-rf0jrh3q.js} +1 -1
- package/dist/cli/chunk-rhq87p4r.js +2 -0
- package/dist/cli/chunk-rkgnrfga.js +2 -0
- package/dist/cli/chunk-rqpwy31f.js +2 -0
- package/dist/cli/{chunk-8mfpv3fh.js → chunk-rt4tg426.js} +1 -1
- package/dist/cli/{chunk-n5dea05t.js → chunk-s2t9acrv.js} +1 -1
- package/dist/cli/{chunk-fz17c524.js → chunk-s5a5dyab.js} +1 -1
- package/dist/cli/{chunk-8gqkrbyr.js → chunk-s5k3g5ra.js} +1 -1
- package/dist/cli/{chunk-des00203.js → chunk-sgegp9x9.js} +1 -1
- package/dist/cli/chunk-sqp33pwr.js +2 -0
- package/dist/cli/chunk-t33z2kdv.js +3 -0
- package/dist/cli/{chunk-fvmee0tr.js → chunk-t71nxngb.js} +1 -1
- package/dist/cli/{chunk-ng12dprz.js → chunk-tntdcyra.js} +1 -1
- package/dist/cli/{chunk-4nt1gnwq.js → chunk-v312167r.js} +1 -1
- package/dist/cli/{chunk-j4cqwqnc.js → chunk-v6d6kvmk.js} +1 -1
- package/dist/cli/chunk-vd8qqev9.js +4 -0
- package/dist/cli/{chunk-vej49hnt.js → chunk-vgknea9y.js} +2 -2
- package/dist/cli/chunk-vwg79maj.js +20 -0
- package/dist/cli/{chunk-99n8qsw9.js → chunk-w4cpkhzj.js} +1 -1
- package/dist/cli/{chunk-3dey6b3r.js → chunk-w7yg0bbz.js} +1 -1
- package/dist/cli/{chunk-85q2tgmg.js → chunk-ws6yep7z.js} +1 -1
- package/dist/cli/{chunk-9jsm6h5y.js → chunk-x0rvg54z.js} +1 -1
- package/dist/cli/{chunk-enq6vwz5.js → chunk-x7cv6deh.js} +1 -1
- package/dist/cli/{chunk-qb1agm2c.js → chunk-y1cb8pj5.js} +1 -1
- package/dist/cli/{chunk-cbjh43yc.js → chunk-y5dk90tw.js} +1 -1
- package/dist/cli/{chunk-zfvg4w3t.js → chunk-yjyjg7sk.js} +1 -1
- package/dist/cli/{chunk-0gz3an4p.js → chunk-yknavm97.js} +1 -1
- package/dist/cli/{chunk-hhvvcwjq.js → chunk-zcadc92x.js} +1 -1
- package/dist/cli/{chunk-3hcsvyeq.js → chunk-zcwgmz5p.js} +1 -1
- package/dist/cli/chunk-zk5qkkb1.js +3 -0
- package/dist/cli/index.js +9 -9
- package/dist/cli/pty-host-node.mjs +10 -2
- package/dist/cli/rove-run.js +1 -1
- package/dist/cli/rove.js +1 -1
- package/dist/web/assets/{index-BYv91-Cs.css → index-BZjPWX0N.css} +1 -1
- package/dist/web/assets/index-DHlgMx7L.js +109 -0
- package/dist/web/index.html +2 -2
- package/package.json +4 -4
- package/dist/cli/chunk-191gy3f0.js +0 -2
- package/dist/cli/chunk-2kshjtcs.js +0 -2
- package/dist/cli/chunk-5fft208x.js +0 -2
- package/dist/cli/chunk-66r43sfd.js +0 -3
- package/dist/cli/chunk-6axpatfy.js +0 -2
- package/dist/cli/chunk-79hrybcd.js +0 -2
- package/dist/cli/chunk-7q43tysm.js +0 -3
- package/dist/cli/chunk-86tw1190.js +0 -4
- package/dist/cli/chunk-8kx2k2s8.js +0 -52
- package/dist/cli/chunk-8m5crcy5.js +0 -82
- package/dist/cli/chunk-8pna13mr.js +0 -2
- package/dist/cli/chunk-9853bbb9.js +0 -18
- package/dist/cli/chunk-asy33vdy.js +0 -2
- package/dist/cli/chunk-cmss5e88.js +0 -3
- package/dist/cli/chunk-e8d5951a.js +0 -2
- package/dist/cli/chunk-fe7kwz48.js +0 -3
- package/dist/cli/chunk-g4k86vkr.js +0 -2
- package/dist/cli/chunk-gcdm2jke.js +0 -2
- package/dist/cli/chunk-gpb49qs3.js +0 -3
- package/dist/cli/chunk-hzfq0sst.js +0 -2
- package/dist/cli/chunk-kecy2zcc.js +0 -9
- package/dist/cli/chunk-knfnbv60.js +0 -17
- package/dist/cli/chunk-m3sq1vgk.js +0 -40
- package/dist/cli/chunk-pkk9j80z.js +0 -7
- package/dist/cli/chunk-vt6ghz8y.js +0 -2
- package/dist/cli/chunk-vt7bc8d6.js +0 -87
- package/dist/cli/chunk-w594v1n8.js +0 -2
- package/dist/cli/chunk-x8fd9y51.js +0 -3
- package/dist/cli/chunk-zh30b87y.js +0 -9
- package/dist/cli/chunk-zwq8cb8p.js +0 -2
- package/dist/web/assets/index-DaovU92T.js +0 -109
package/dist/cli/index.js
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
import{matchPathGlob}from"./chunk-kg11c1py.js";import{failureHint}from"./chunk-
|
|
3
|
+
import{matchPathGlob}from"./chunk-kg11c1py.js";import{failureHint}from"./chunk-qyfmfpjg.js";import{switchFlag}from"./chunk-zsfyj36g.js";import{connectIfRunning}from"./chunk-7z9yfnjd.js";import"./chunk-7j00hbq5.js";import"./chunk-gaf6n1ea.js";import{expandTilde}from"./chunk-ag3txfg2.js";import{errorMessage}from"./chunk-2brn8e1y.js";import{BUILTIN_VENDORS,coerceVendorId,isBuiltinVendor}from"./chunk-h2m7em1e.js";import{CURRENT_VERSION}from"./chunk-cp5jp5mq.js";import{rejectionReason}from"./chunk-3342qzve.js";import"./chunk-a7kq09ke.js";import"./chunk-prqeddy7.js";import{ROVE_PRODUCT_NAME}from"./chunk-zt7wfnva.js";import"./chunk-yt15y085.js";import"./chunk-032g0ahy.js";import"./chunk-q3xt0mqt.js";import"./chunk-cmp64q4j.js";import"./chunk-s5a5dyab.js";import"./chunk-md094j05.js";import"./chunk-hq9tbzqa.js";import{pathSyntax}from"./chunk-pn5ygqn6.js";import"./chunk-npwzmmv9.js";import"./chunk-b39sdtt0.js";import"./chunk-nc46gddg.js";import{__require}from"./chunk-91sykzqq.js";import{resolve as resolve2}from"path";function debugEnabled(env){return env.ROVE_DEBUG==="1"||env.ROVE_DEBUG==="1"}function failureSubject(cliName,argv){let verb=argv[2];return verb&&!verb.startsWith("-")&&!verb.includes("/")?`${cliName} ${verb}`:cliName}function summarizeCliGitError(message,cwd){if(!/not a git repository/i.test(message))return null;return`${cwd} is not a git repository \u2014 run this inside one, or pass a repo path.`}function formatCliFailure(err,opts){let subject=failureSubject(opts.cliName,opts.argv);if(debugEnabled(opts.env))return`${subject}: ${String(err instanceof Error?err.stack??err:err)}
|
|
4
4
|
${failureHint(err,opts.cliName)}`;let raw=errorMessage(err),git=summarizeCliGitError(raw,opts.cwd);return`${subject}: ${git??`${raw}
|
|
5
|
-
${failureHint(err,opts.cliName)}`}`}var DYNAMIC_COMMANDS=new Map([["completions",async(args)=>{let{runCompletionsSubcommand}=await import("./chunk-
|
|
6
|
-
`),process.exit(1);let projectRoot=await projectRootFor(dir);await withDaemonOrLocal({daemon:async(client)=>{let taskId;if(projectRoot)taskId=(await client.request("task.ensureMain",{repo:projectRoot})).task.id;else taskId=(await client.request("task.openDir",{dir})).taskId;await client.request("task.setActive",{taskId})},local:async(orch)=>{let task=projectRoot?await orch.ensureMainTask(projectRoot):await orch.openDirectoryTask({dir}),{writeLastActiveTaskId}=await import("./chunk-
|
|
5
|
+
${failureHint(err,opts.cliName)}`}`}var DYNAMIC_COMMANDS=new Map([["completions",async(args)=>{let{runCompletionsSubcommand}=await import("./chunk-963er0h4.js");await runCompletionsSubcommand(args)}],["export",async(args)=>{let{runExportSubcommand}=await import("./chunk-vgknea9y.js");await runExportSubcommand(args)}],["repo",async(args)=>{let{runRepoSubcommand}=await import("./chunk-e003wm6d.js");await runRepoSubcommand(args)}],["api",async(args)=>{let{runApiSubcommand}=await import("./chunk-3msnqacf.js");await runApiSubcommand(args)}],["update",async(args)=>{let{runUpdateSubcommand}=await import("./chunk-mnpewdhd.js");await runUpdateSubcommand(args)}],["theme",async(args)=>{let{runThemeSubcommand}=await import("./chunk-v312167r.js");await runThemeSubcommand(args)}],["feedback",async(args)=>{let{runFeedbackSubcommand}=await import("./chunk-q5bhq11t.js");await runFeedbackSubcommand(args)}],["daemon",async(args)=>{let{runDaemonSubcommand}=await import("./chunk-qxzrdfh7.js");await runDaemonSubcommand(args)}],["machine",async(args)=>{let{runMachineSubcommand}=await import("./chunk-nxe45n7k.js");await runMachineSubcommand(args)}],["weixin",async(args)=>{let{runChannelCli}=await import("./chunk-rhq87p4r.js");await runChannelCli("weixin",args)}],["doctor",async(args)=>{let{runDoctorSubcommand}=await import("./chunk-8ezc1ban.js");await runDoctorSubcommand(args)}],["config",async(args)=>{let{runConfigSubcommand}=await import("./chunk-qstjfseh.js");await runConfigSubcommand(args)}],["reset",async(args)=>{let{runResetSubcommand}=await import("./chunk-mv0hp5cv.js");await runResetSubcommand(args)}],["pty-host",async(args)=>{let{runPtyHostSubcommand}=await import("./chunk-86chrjqr.js");await runPtyHostSubcommand(args)}],["skill",async(args)=>{let{runSkillSubcommand}=await import("./chunk-nsqsvgry.js");await runSkillSubcommand(args)}],["plugin",async(args)=>{let{runPluginSubcommand}=await import("./chunk-5456ttpr.js");await runPluginSubcommand(args)}],["hook",async(args)=>{let{runHookSubcommand}=await import("./chunk-5r71q63g.js");await runHookSubcommand(args)}]]);import{statSync}from"fs";import{resolve}from"path";async function openLocalOrchestrator(){let{TaskIndexStore}=await import("./chunk-nj53wrzz.js"),{GitWorktreeManager}=await import("./chunk-28wjmb9f.js"),{Orchestrator}=await import("./chunk-h9kzwj14.js"),store=new TaskIndexStore;return await store.load(),new Orchestrator({store,worktrees:new GitWorktreeManager})}async function withDaemonOrLocal(bridge){let client=await connectIfRunning();if(client)try{return await bridge.daemon(client)}finally{client.close()}let orch=await openLocalOrchestrator();return bridge.local(orch)}function isPathLikeArg(arg){return arg==="."||arg===".."||arg.startsWith("./")||arg.startsWith("../")||arg.startsWith(".\\")||arg.startsWith("..\\")||pathSyntax(arg).isAbsolute(arg)||arg.startsWith("/")||arg==="~"||arg.startsWith("~/")||arg.startsWith("~\\")}async function projectRootFor(dir){let{isGitRepo,resolveRepoRoot}=await import("./chunk-tntdcyra.js"),{projectRejection}=await import("./chunk-4z01vg3t.js"),top=resolveRepoRoot(dir);if(top!==dir)return null;return projectRejection(top,isGitRepo,"explicit")?null:top}async function runOpenDirectory(arg){let dir=resolve(process.cwd(),expandTilde(arg)),isDir=!1;try{isDir=statSync(dir).isDirectory()}catch{isDir=!1}if(!isDir)process.stderr.write(`${ROVE_PRODUCT_NAME}: "${arg}" is not a directory (resolved to ${dir}).
|
|
6
|
+
`),process.exit(1);let projectRoot=await projectRootFor(dir);await withDaemonOrLocal({daemon:async(client)=>{let taskId;if(projectRoot)taskId=(await client.request("task.ensureMain",{repo:projectRoot})).task.id;else taskId=(await client.request("task.openDir",{dir})).taskId;await client.request("task.setActive",{taskId})},local:async(orch)=>{let task=projectRoot?await orch.ensureMainTask(projectRoot):await orch.openDirectoryTask({dir}),{writeLastActiveTaskId}=await import("./chunk-cb1dg7nz.js");writeLastActiveTaskId(String(task.id))}});let{publishRoveTerminalTitle}=await import("./chunk-g8wrdp7n.js");publishRoveTerminalTitle();let{launchTui}=await import("./chunk-daw4mxq3.js");await launchTui()}function topLevelUsage(cliName=ROVE_PRODUCT_NAME){return[`${cliName} ${CURRENT_VERSION}`,"",`Usage: ${cliName} [command] [options]`,"","Run with no command to launch PureTUI.",`Run \`${cliName} .\` (or \`${cliName} <path>\`) to open a directory as a standalone task.`,"","Commands:"," completions <shell> Generate shell completion script (bash/zsh/fish)"," add [path] Save a repo path for the new-task picker"," remove [path] Forget a saved project (inverse of add; non-destructive)"," adopt [glob] Import existing git worktrees as tasks"," export [--csv|--json] Print the task list (json/csv/table; daemon-free)"," repo <verb> Per-repo init script + first prompt (show|set|unset)",` api <verb> Scriptable RPC surface for agents (see \`${cliName} api --help\`)`," daemon <verb> Manage the daemon (start|stop|status|restart)"," machine <verb> Other computers running Rove (add|remove|list)"," weixin <verb> Talk to Rove from WeChat (login|logout|status|allow|deny)"," doctor [--report|--fix] Diagnose daemon/PTY/engines/git; --fix walks the remedies",` config [--path] Open ${cliName}'s config file (state.json) in your editor`," reset [--hard] Stop runtimes; optionally wipe task/UI state"," theme <verb> Manage user themes (list|add|remove)",` skill <verb> Install the ${cliName} agent skill (install|status|command|print)`," plugin <verb> Install and run plugins (install|link|list|action|\u2026)"," feedback Send feedback to GitHub Discussions",` update [version|channel|list] Self-update ${cliName}, switch channel, or list versions`,"","Options:"," -v, --version Print version"," -h, --help Print this help"," --skill Print the agent skill file and exit"," --web [bridge flags] Serve the browser client on 127.0.0.1 and print its link"].join(`
|
|
7
7
|
`)}var CLI_NAME=ROVE_PRODUCT_NAME,ADD_USAGE=[`Usage: ${CLI_NAME} add [path]`,` ${CLI_NAME} add --remote --host <host> --user <user> --path <basePath> [--port N] [--key [path] | --password]`,"","Save a repo for the new-task picker. With --remote, register an SSH-backed","project whose worktrees live on <host>; engine launch over SSH is pending.",""].join(`
|
|
8
|
-
`);async function runAddSubcommand(rest){let arg=rest[0];if(arg==="--help"||arg==="-h"||arg==="help"){process.stdout.write(ADD_USAGE);return}if(arg==="--remote"){let{runAddRemote}=await import("./chunk-
|
|
8
|
+
`);async function runAddSubcommand(rest){let arg=rest[0];if(arg==="--help"||arg==="-h"||arg==="help"){process.stdout.write(ADD_USAGE);return}if(arg==="--remote"){let{runAddRemote}=await import("./chunk-gp991c3v.js");await runAddRemote(rest.slice(1));return}if(arg?.startsWith("-"))process.stderr.write(`${CLI_NAME} add: unknown flag "${arg}"
|
|
9
9
|
|
|
10
|
-
${ADD_USAGE}`),process.exit(2);let target=resolve2(process.cwd(),expandTilde(arg&&arg.length>0?arg:".")),{addSavedRepo}=await import("./chunk-
|
|
10
|
+
${ADD_USAGE}`),process.exit(2);let target=resolve2(process.cwd(),expandTilde(arg&&arg.length>0?arg:".")),{addSavedRepo}=await import("./chunk-tntdcyra.js"),result=addSavedRepo(target);if(result.rejected)process.stderr.write(`${CLI_NAME} add: "${arg&&arg.length>0?arg:"."}" cannot be a project \u2014 ${rejectionReason(result.rejected)} (resolved to ${result.path}).
|
|
11
11
|
`),process.exit(1);if(result.added)console.log(`added ${result.path} (${result.total} saved repo${result.total===1?"":"s"} total)`);else console.log(`already saved: ${result.path}`);await ensureProjectMainTask(result.path),await adoptAllWorktrees(result.path)}async function ensureProjectMainTask(repo){try{await withDaemonOrLocal({daemon:(client)=>client.request("task.ensureMain",{repo}),local:(orch)=>orch.ensureMainTask(repo)})}catch(err){console.error(`(skipped project main-task setup: ${errorMessage(err)}). Run ${CLI_NAME} doctor, then retry ${CLI_NAME} add.`)}}var PURGE_FLAG="--purge-credentials",REMOVE_USAGE=[`Usage: ${CLI_NAME} remove [path] [--purge-credentials]`,"","Forget a saved project (drop it from the new-task picker). Non-destructive:","the repo's files, worktrees, branches and tasks all stay on disk. A remote","(ssh://) project also has its stored connection config dropped.",""," path defaults to the current directory. Pass an exact saved entry (e.g. a"," remote `ssh://user@host` key) to remove it verbatim. Run with no match to"," print the current saved projects.",""," --purge-credentials also delete the remote project's SSH password from"," the OS keychain. Off by default: forgetting a project"," should not silently destroy a stored secret.",""].join(`
|
|
12
12
|
`);async function runRemoveSubcommand(rest){let purgeCredentials=switchFlag(rest,PURGE_FLAG),arg=rest.filter((a)=>a!==PURGE_FLAG&&!a.startsWith(`${PURGE_FLAG}=`))[0];if(arg==="--help"||arg==="-h"||arg==="help"){process.stdout.write(REMOVE_USAGE);return}if(purgeCredentials===void 0)process.stderr.write(`${CLI_NAME} remove: ${PURGE_FLAG} takes true or false
|
|
13
13
|
|
|
14
14
|
${REMOVE_USAGE}`),process.exit(2);if(arg?.startsWith("-"))process.stderr.write(`${CLI_NAME} remove: unknown flag "${arg}"
|
|
15
15
|
|
|
16
|
-
${REMOVE_USAGE}`),process.exit(2);let{getRemoteRepoConfig,getSavedRepos,resolveRepoRoot}=await import("./chunk-
|
|
16
|
+
${REMOVE_USAGE}`),process.exit(2);let{getRemoteRepoConfig,getSavedRepos,resolveRepoRoot}=await import("./chunk-tntdcyra.js"),saved=getSavedRepos();if(saved.length===0){console.log("no saved projects to remove.");return}let raw=arg&&arg.length>0?arg:".",target=saved.includes(raw)?raw:(()=>{let abs=resolve2(process.cwd(),expandTilde(raw)),top=resolveRepoRoot(abs);if(saved.includes(top))return top;if(saved.includes(abs))return abs;return null})();if(target===null){process.stderr.write(`${CLI_NAME} remove: "${raw}" is not a saved project.
|
|
17
17
|
|
|
18
18
|
Saved projects:
|
|
19
19
|
`);for(let p of saved)process.stderr.write(` ${p}
|
|
20
|
-
`);process.exit(1)}let auth=getRemoteRepoConfig(target)?.auth,keychainRef=auth?.kind==="password"?auth.keychainRef:null;await withDaemonOrLocal({daemon:(client)=>client.request("project.forget",{repo:target}),local:(orch)=>orch.forgetProject(target)});let remaining=getSavedRepos().length;if(console.log(`removed ${target} (${remaining} saved repo${remaining===1?"":"s"} left)`),keychainRef)await reportCredentialExit(keychainRef,purgeCredentials)}async function reportCredentialExit(ref,purge){let{deleteKeychainPassword,isKeychainSupported}=await import("./chunk-
|
|
20
|
+
`);process.exit(1)}let auth=getRemoteRepoConfig(target)?.auth,keychainRef=auth?.kind==="password"?auth.keychainRef:null;await withDaemonOrLocal({daemon:(client)=>client.request("project.forget",{repo:target}),local:(orch)=>orch.forgetProject(target)});let remaining=getSavedRepos().length;if(console.log(`removed ${target} (${remaining} saved repo${remaining===1?"":"s"} left)`),keychainRef)await reportCredentialExit(keychainRef,purgeCredentials)}async function reportCredentialExit(ref,purge){let{deleteKeychainPassword,isKeychainSupported}=await import("./chunk-t71nxngb.js");if(!purge){console.log(`note: its SSH password is still in the OS keychain (${ref.service}/${ref.account}).`),console.log(` re-run with ${PURGE_FLAG} to delete it.`);return}if(!isKeychainSupported()){console.error("--purge-credentials: the OS keychain is only wired for macOS; nothing deleted.");return}if(deleteKeychainPassword(ref))console.log(`purged the keychain password (${ref.service}/${ref.account})`);else console.error(`--purge-credentials: no keychain item found for ${ref.service}/${ref.account}`)}async function adoptAllWorktrees(repo){let orch=await openLocalOrchestrator(),candidates;try{candidates=await orch.discoverAdoptableWorktrees(repo)}catch(err){console.error(`(skipped worktree scan: ${errorMessage(err)}). Run git worktree list in the repository, then retry ${CLI_NAME} add.`);return}if(candidates.length===0)return;console.log(`scanning ${repo}: ${candidates.length} unlinked worktree(s) \u2192 importing`),await adoptWorktreesInto(orch,repo,candidates,coerceVendorId(void 0))}async function adoptWorktreesInto(orch,repo,list,vendor){for(let w of list){let adopted=await withDaemonOrLocal({daemon:async(client)=>(await client.request("worktree.adopt",{repo,worktreePath:w.path,branch:w.branch,vendor})).task,local:async()=>orch.adoptWorktree({repo,worktreePath:w.path,branch:w.branch,vendor})});console.log(` adopted ${w.branch} \u2192 task ${adopted.id} (${adopted.title})`)}}var ADOPT_USAGE=[`Usage: ${CLI_NAME} adopt [glob] [--repo <path>] [--vendor <v>] [--yes]`,"",`Import existing git worktrees in a repo as ${CLI_NAME} tasks.`,"No glob \u2192 dry-run listing. With a glob \u2192 list matches; --yes adopts them.","","Options:"," --repo <path> Repo to scan (default: current directory)"," --vendor <v> Engine vendor for adopted tasks"," -y, --yes Actually adopt the matched worktrees"," -h, --help Print this help",""].join(`
|
|
21
21
|
`);function adoptUsageError(message){process.stderr.write(`${CLI_NAME} adopt: ${message}
|
|
22
22
|
|
|
23
23
|
${ADOPT_USAGE}
|
|
24
24
|
`),process.exit(2)}async function runAdoptSubcommand(args){let glob,repoArg,vendorArg,yes=!1;for(let i=0;i<args.length;i++){let a=args[i];if(a==="--help"||a==="-h"||a==="help"){process.stdout.write(`${ADOPT_USAGE}
|
|
25
|
-
`);return}if(a==="--repo"){if(repoArg=args[++i],repoArg===void 0)adoptUsageError("--repo requires a value")}else if(a==="--vendor"){if(vendorArg=args[++i],vendorArg===void 0)adoptUsageError("--vendor requires a value")}else if(a==="--yes"||a==="-y")yes=!0;else if(a&&!a.startsWith("-")&&glob===void 0)glob=a;else adoptUsageError(`unexpected argument "${a}"`)}let{getCustomEngineIds,resolveRepoRoot}=await import("./chunk-
|
|
25
|
+
`);return}if(a==="--repo"){if(repoArg=args[++i],repoArg===void 0)adoptUsageError("--repo requires a value")}else if(a==="--vendor"){if(vendorArg=args[++i],vendorArg===void 0)adoptUsageError("--vendor requires a value")}else if(a==="--yes"||a==="-y")yes=!0;else if(a&&!a.startsWith("-")&&glob===void 0)glob=a;else adoptUsageError(`unexpected argument "${a}"`)}let{getCustomEngineIds,resolveRepoRoot}=await import("./chunk-tntdcyra.js"),repo=resolveRepoRoot(resolve2(process.cwd(),expandTilde(repoArg&&repoArg.length>0?repoArg:"."))),typed=vendorArg?.trim();if(typed&&!isBuiltinVendor(typed)&&!getCustomEngineIds().includes(typed)){let known=[...BUILTIN_VENDORS,...getCustomEngineIds()].join(", ");adoptUsageError(`unknown engine "${typed}" \u2014 no task was created. Known engines: ${known}`)}let vendor=coerceVendorId(vendorArg),orch=await openLocalOrchestrator(),worktrees=await orch.discoverAdoptableWorktrees(repo);if(worktrees.length===0){console.log(`no adoptable worktrees for ${repo} \u2014 every git worktree here is already a task`);return}let isMatch=(w)=>!glob||matchPathGlob(glob,w.path);console.log(`adoptable worktrees in ${repo}:`);for(let w of worktrees){let hit=glob?isMatch(w)?"*":" ":"-",tags=[w.dirty===!0?"dirty":w.dirty===null?"dirty?":"",w.roveManaged?"":"external"].filter(Boolean).join(",");console.log(` ${hit} ${w.branch} ${w.path}${tags?` (${tags})`:""}`)}if(!glob){console.log(`
|
|
26
26
|
pass a path glob to adopt, e.g. ${CLI_NAME} adopt '${repo}/*' --yes`);return}let matched=worktrees.filter(isMatch);if(matched.length===0){console.log(`
|
|
27
27
|
no worktrees match glob ${JSON.stringify(glob)}`);return}if(!yes){console.log(`
|
|
28
28
|
${matched.length} worktree(s) match \u2014 re-run with --yes to adopt them`);return}await adoptWorktreesInto(orch,repo,matched,vendor),console.log(`done \u2014 adopted ${matched.length} worktree(s)`)}function printTopLevelUsage(out){out.write(`${topLevelUsage()}
|
|
29
|
-
`)}var COMMANDS=new Map([["add",runAddSubcommand],["remove",runRemoveSubcommand],["adopt",runAdoptSubcommand],...DYNAMIC_COMMANDS]);async function main(){let[,,...rawArgs]=process.argv,[subcommand,...rest]=rawArgs;if(subcommand==="--version"||subcommand==="-v"||subcommand==="version"){let{CURRENT_VERSION:CURRENT_VERSION2}=await import("./chunk-
|
|
29
|
+
`)}var COMMANDS=new Map([["add",runAddSubcommand],["remove",runRemoveSubcommand],["adopt",runAdoptSubcommand],...DYNAMIC_COMMANDS]);async function main(){let[,,...rawArgs]=process.argv,[subcommand,...rest]=rawArgs;if(subcommand==="--version"||subcommand==="-v"||subcommand==="version"){let{CURRENT_VERSION:CURRENT_VERSION2}=await import("./chunk-719avf77.js");console.log(`${CLI_NAME} ${CURRENT_VERSION2}`);return}if(subcommand==="--help"||subcommand==="-h"||subcommand==="help"){printTopLevelUsage(process.stdout);return}if(subcommand==="--skill"){let{runSkillSubcommand}=await import("./chunk-nsqsvgry.js");await runSkillSubcommand(["print"]);return}if(subcommand==="--web"){let{runWebSubcommand}=await import("./chunk-zcwgmz5p.js");await runWebSubcommand(rest);return}let handler=subcommand!==void 0?COMMANDS.get(subcommand):void 0;if(handler){await handler(rest);return}if(subcommand!==void 0&&isPathLikeArg(subcommand)){await runOpenDirectory(subcommand);return}if(subcommand!==void 0)console.error(`${CLI_NAME}: unknown command '${subcommand}'`),printTopLevelUsage(process.stderr),process.exit(2);let{publishRoveTerminalTitle}=await import("./chunk-g8wrdp7n.js");publishRoveTerminalTitle();let{launchTui}=await import("./chunk-daw4mxq3.js");await launchTui()}main().catch((err)=>{console.error(formatCliFailure(err,{cliName:CLI_NAME,argv:process.argv,cwd:process.cwd(),env:process.env})),process.exit(1)});
|
|
@@ -683,6 +683,13 @@ function ensureOwnerOnlyStateDir(homeDir) {
|
|
|
683
683
|
|
|
684
684
|
// ../rove-daemon/src/daemon/automation-contracts.ts
|
|
685
685
|
var ROUTINE_RESPONSE_WINDOW_MS = 2 * 60 * 60000;
|
|
686
|
+
// ../rove-plugin-sdk/dist/mod-tree.js
|
|
687
|
+
var ALLOWED = {
|
|
688
|
+
box: new Set(["type", "direction", "gap", "padding", "border", "children"]),
|
|
689
|
+
text: new Set(["type", "text", "tone", "bold"]),
|
|
690
|
+
button: new Set(["type", "key", "label", "tone"]),
|
|
691
|
+
input: new Set(["type", "key", "placeholder", "value"])
|
|
692
|
+
};
|
|
686
693
|
// ../rove-plugin-sdk/dist/contract.js
|
|
687
694
|
var DAEMON_CHANNELS = [
|
|
688
695
|
"task.snapshot",
|
|
@@ -707,9 +714,9 @@ var DAEMON_CHANNELS = [
|
|
|
707
714
|
"usage.snapshot",
|
|
708
715
|
"usage.context",
|
|
709
716
|
"ui.prompt",
|
|
710
|
-
"graphics.write"
|
|
717
|
+
"graphics.write",
|
|
718
|
+
"mod.ui"
|
|
711
719
|
];
|
|
712
|
-
|
|
713
720
|
// ../rove-daemon/src/daemon/channels.ts
|
|
714
721
|
var CHANNEL_NAMES = DAEMON_CHANNELS;
|
|
715
722
|
var CHANNEL_NAME_SET = new Set(CHANNEL_NAMES);
|
|
@@ -718,6 +725,7 @@ var DAEMON_PROTOCOL_VERSION = 5;
|
|
|
718
725
|
|
|
719
726
|
// ../rove-daemon/src/daemon/protocol.ts
|
|
720
727
|
var BLOCKING_RPCS = new Set([
|
|
728
|
+
"api.invoke",
|
|
721
729
|
"ui.prompt",
|
|
722
730
|
"task.land",
|
|
723
731
|
"workitem.start",
|
package/dist/cli/rove-run.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
import{migrateRoveClientStateLayout}from"./chunk-tdhk4dz8.js";import{updateStateFile}from"./chunk-
|
|
3
|
+
import{migrateRoveClientStateLayout}from"./chunk-tdhk4dz8.js";import{updateStateFile}from"./chunk-zk5qkkb1.js";import"./chunk-mw0ysrpd.js";import"./chunk-a7kq09ke.js";import{kvStatePath}from"./chunk-prqeddy7.js";import"./chunk-zt7wfnva.js";import"./chunk-yt15y085.js";import"./chunk-npwzmmv9.js";import"./chunk-b39sdtt0.js";import"./chunk-nc46gddg.js";import{__require}from"./chunk-91sykzqq.js";import{readFileSync}from"fs";var RENAMED_KEY_PREFIXES=[{from:"autoEffort.",to:"autoRouting."}],NOTHING={moved:0,superseded:0};function legacyRename(key){for(let{from,to}of RENAMED_KEY_PREFIXES)if(key.startsWith(from))return`${to}${key.slice(from.length)}`;return}function isStateObject(text){try{let parsed=JSON.parse(text);return typeof parsed==="object"&&parsed!==null&&!Array.isArray(parsed)}catch{return!1}}function migrateRenamedStateKeys(){let text;try{text=readFileSync(kvStatePath(),"utf8")}catch{return NOTHING}if(!RENAMED_KEY_PREFIXES.some(({from})=>text.includes(`"${from}`)))return NOTHING;if(!isStateObject(text))return NOTHING;let moved=0,superseded=0;try{updateStateFile((state)=>{for(let[key,value]of Object.entries(state)){let renamed=legacyRename(key);if(renamed===void 0)continue;if(renamed in state)superseded+=1;else state[renamed]=value,moved+=1;delete state[key]}return moved+superseded>0})}catch{return NOTHING}return{moved,superseded}}function prepareCliStateLayout(env=process.env){let result=migrateRoveClientStateLayout(env);for(let warning of result.warnings)console.error(`[rove] state migration will retry: ${warning}. Check the source/destination permissions, then relaunch Rove.`);migrateRenamedStateKeys()}prepareCliStateLayout();await import("./index.js");
|
package/dist/cli/rove.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{join as n}from"node:path";import{createInterface as a}from"node:readline/promises";import{pathToFileURL as ss}from"node:url";import{spawnSync as Q}from"node:child_process";import{constants as V,accessSync as R}from"node:fs";import{homedir as e}from"node:os";import{basename as I,delimiter as U,dirname as o,join as y}from"node:path";import{fileURLToPath as T}from"node:url";var H={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/rove",version:"0.9.
|
|
2
|
+
import{join as n}from"node:path";import{createInterface as a}from"node:readline/promises";import{pathToFileURL as ss}from"node:url";import{spawnSync as Q}from"node:child_process";import{constants as V,accessSync as R}from"node:fs";import{homedir as e}from"node:os";import{basename as I,delimiter as U,dirname as o,join as y}from"node:path";import{fileURLToPath as T}from"node:url";var H={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/rove",version:"0.9.251",description:"Rove — the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions.",keywords:["terminal","tui","cli","multiplexer","ai-agents","coding-agent","ai-coding-assistant","agentic-ai","parallel-agents","git-worktree","claude-code","codex","llm","developer-tools"],type:"module",packageManager:"bun@1.3.13",bin:{rove:"dist/cli/rove.js"},files:["dist/cli","dist/completions","dist/web","dist/web-ui","dist/skills","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/rove.git"},homepage:"https://rove.run",bugs:{url:"https://github.com/Sma1lboy/rove/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"ROVE_DEV=1 bun --conditions=browser ./src/cli/rove.ts","dev:mock":"ROVE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:sandbox":"bun run scripts/dev-sandbox.ts run","dev:sandbox:reset":"bun run scripts/dev-sandbox.ts reset",build:"bun run scripts/build.ts","build:rubric":"bun run scripts/build-tier-rubric.ts",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","perf:golden":"bun scripts/perf-golden.ts","pty:soak":"bun scripts/pty-soak.ts","test:fast":"vitest run --passWithNoTests --minWorkers=1 --maxWorkers=8","test:socket":"ROVE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:socket:coverage":"ROVE_INCLUDE_SOCKET=1 ROVE_COVERAGE_DAEMON=1 vitest run test/daemon --coverage --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:behavior":"ROVE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --pool forks --minWorkers=1 --maxWorkers=1 --retry=2 --passWithNoTests","test:render":"bun scripts/render-track.mjs",coverage:"vitest run --coverage --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build","plugin-sandbox":"bun run scripts/plugin-sandbox.ts"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.4.3","@opentui/react":"0.4.3","@xterm/addon-serialize":"^0.14.0","@xterm/addon-unicode11":"^0.9.0","@xterm/headless":"^6.0.0","node-pty":"^1.1.0",react:"^19.2.8","smol-toml":"^1.7.1",ws:"^8.21.3"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/rove-daemon":"0.7.22","@tsconfig/bun":"1.0.11","@types/bun":"1.3.14","@types/node":"25.6.2","@types/react":"^19.2.0","@vitest/coverage-v8":"2.1.9",knip:"^6.14.2","react-devtools-core":"^7.0.1","rove-bridge":"0.0.12","rove-weixin":"0.0.12",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]};var q="rove";var k=q;var z="ROVE_BUN",_="ROVE_NO_BUN_BOOTSTRAP",F="ROVE_SKIP_BUN_CHECK",$=H.engines.bun.match(/\d+\.\d+\.\d+/)?.[0]??"0.0.0",L=(s)=>{try{return R(s,V.X_OK),!0}catch{return!1}},B=(s)=>s==="win32"?"bun.exe":"bun",f=(s)=>{let t=Q(s,["--version"],{encoding:"utf8",timeout:5000});if(t.error||t.status!==0)return null;return t.stdout?.split(`
|
|
3
3
|
`)[0]?.trim()??""};function J(s){return s.trim().match(/^v?(\d+\.\d+\.\d+)/)?.[1]??null}function X(s,t=$){let c=J(s),W=J(t);if(!c||!W)return!0;let b=c.split(".").map(Number),g=W.split(".").map(Number);for(let x=0;x<3;x++){let i=b[x]??0,r=g[x]??0;if(i!==r)return i>r}return!0}function Y(s=process.env){return s[F]==="1"}function A(s={}){let t=s.env??process.env,c=s.platform??process.platform,W=s.home??t.HOME??t.USERPROFILE??e(),b=B(c),g=[],x=t[z]?.trim();if(x)g.push(x);for(let G of(t.PATH??t.Path??"").split(U))if(G)g.push(y(G,b));let i=t.BUN_INSTALL?.trim();if(i)g.push(y(i,"bin",b));if(W)g.push(y(W,".bun","bin",b));let r=s.launcherDir;if(r)g.push(y(r,"..","..","node_modules","bun","bin",b)),g.push(y(r,"..","..","..","bun","bin",b));return g}function N(s={}){let t=s.isExecutable??L;return A(s).find((c)=>t(c))??null}function Z(s={}){let t=s.isExecutable??L,c=s.bunVersionOf??f;if(Y(s.env??process.env))return{bun:N(s),stale:null,unusable:null};let W=null,b=null;for(let g of A(s)){if(!t(g))continue;let x=c(g);if(x===null){b??=g;continue}if(X(x))return{bun:g,stale:W,unusable:b};W??={path:g,version:J(x)??x}}return{bun:null,stale:W,unusable:b}}function h(s){return o(T(s))}function C(s){return I(T(s)).replace(/\.[cm]?[jt]s$/,"")}function u(s=process.platform){return s==="win32"?["powershell","-NoProfile","-Command","irm bun.sh/install.ps1 | iex"]:["bash","-c","curl -fsSL https://bun.sh/install | bash"]}function D(s=k,t=process.platform){let c=t==="win32"?'powershell -c "irm bun.sh/install.ps1 | iex"':"curl -fsSL https://bun.sh/install | bash";return[`${s}: Rove runs on the Bun runtime, and no Bun was found on this machine.`,"","Install Bun, then run this command again:",` ${c}`," npm install -g bun # any platform, if you already have npm","","Or install Bun and Rove together in one step:"," curl -fsSL https://rove.run/install.sh | sh","",`Already have Bun somewhere unusual? Point Rove at it: ${z}=/path/to/bun`,""].join(`
|
|
4
4
|
`)}function j(s,t,c=k){return[`${c}: this machine's Bun is too old for Rove — found ${t} at ${s}, need ${$} or newer.`,"","Rove's terminals are built on Bun's PTY API. An older Bun ignores it silently,","so every terminal and engine tab would open empty and stay empty.","","Upgrade Bun, then run this command again:"," bun upgrade # Bun installed itself (~/.bun)"," brew upgrade bun # Homebrew"," npm install -g bun@latest # npm-managed Bun","",`Have a newer Bun elsewhere? Point Rove at it: ${z}=/path/to/bun`,`Run on this one anyway (unsupported, terminals will be blank): ${F}=1`,""].join(`
|
|
5
5
|
`)}function v(s,t=k){return[`${t}: the Bun at ${s} could not be run — \`${s} --version\` failed or never returned.`,"","Rove skipped it rather than starting through it, which would hang or fail","with a message from that binary instead of this one.","","Reinstall Bun, then run this command again:"," curl -fsSL https://bun.sh/install | bash","",`Have a working Bun elsewhere? Point Rove at it: ${z}=/path/to/bun`,""].join(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAASIABAAAAAACQQAAAQuAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVF4AdBEICoRkhAALIAABNgIkAzoEIAWFAAeBFAwHG2oHKJ6DceNW4lJEFHn9tEOE37LNsvkjHr7f739rn3u+OSrSxLQytE91Dw2PYtNVq3Qaw/vJ7fUBMdOj/u2ImB98cT5WUx9F13ZKt06mU7tG1sAYcM26yCRX4f/0904bmwq8hwkUUMTRX61pa9C3xlpAGYw1vOu8C2SBZZFlld7DAW82RJWmwYMI1AJCKBNCIASqdZGFmtPSNQRhMpR0EKjWTwm6z6sJ+4jqhxjovTinVdRpZaQjaQzAYjI8NgAKDJCokgunCn9oUQE8VZd/F//+v6P4F1U9gLr58yNI/dJX9BAshEoJbTDogz7ocKoUsPvES8UK/aQIUQgpGgECBVLkOEV6iASTYgNAPKdNXayhDPL7IJuAZnEYSZ0eOLc9i5Rv5/+lEi3sW/kfnCf/+fTe0sxS7CKLx5erRJkKOixEqQaoqrvx5HN4iz4VhX0gS6DjFIWUzn/fIXJRVFY1NFRVNVeFt+SYmrK6vCU6eJsnKnJj5HTESMTQZOTI3Y/tzr3rUcOsiRy/ciP50s3Mycgxmhz9GMXhjzVH30ut796NHP0UUa31/Zoa6vCH6iPvdIM0IRANaT60FablmZlZd+UKNFy9NrvnFGxb5NC2CRxR0/rIyF/WNn+35sv9r+tHVhkseuWGKkCPPh96+GXt8Lc/Sh24ujfjf+tNw1lZWreiPuHb/PSpyjdv2rf/++ZE5TSKjFdZxYsBvr1sEHl5STuHZqYR7jGYGvGBBdjcaB5bODY1GAxMjsd0wDMIzXAXODRd74DxNMtO4YuYHclgLQRzp9KlUmxptCwv9bYgvWGD2xBW7r9413fdJu+mxzvzAUYeeONQvZP4kgfqZle4jhH/MWh+UbxgtJdrLdXLymNL53PRU0D3Q6FcXTfGqGcul6vrqhgLGAVSv+IVIfZOHpu+mlLqSlnj903j8mazXDsba/wbxhS/4Oubh1c5/uXDgt4j5KtnGEy5BIJHo0ur+jD+r2qCkuP1aRVM8EpUoRYSJyqNRA38uwDvHBNo0AejO2Z+ZYLLal1QiFyFh1EDQOgSCSCpjwwKU8yDbIjroEwne0G5Qca49cYp4AlqtQNZfWTQoFb1tRpFYAmRD+HXTkV4uQhG2bg4OKmyoypAsUGtWgQXyFxYrkpODeUxvGqIZA61erXo0sFG1UBGuPgpuon8RNUG2DhovAjZCBuZwtXrU3mQGki9+pm0eVZAXoWxLWTQoYHBPrJR4WunNxIFbCHfkTyPK+sqxjxDmGArZvf79JGJ3GwEqjwc7a7NIrl/7bJ7Nzu4+n1Ow6shEPnUrtVo7cnd5Wi5qCUbBIQbNKCP95FMCSZylEV5VCiiMqqiOmrKZ/I/C0gI1fyuulVcM2E1r4MhtcV/fbCD+HwEvVzH1dGNAzFE0FTbKzyQz3gootrNbN2a4PuG0j0JOgE=)format("woff2"),url(data:font/woff;base64,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)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2)format("woff2"),url(/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2)format("woff2"),url(/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,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)format("woff2"),url(/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(data:font/woff2;base64,d09GMgABAAAAAASAABAAAAAACNgAAAQlAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVEwAdBEICoRkg3gLIAABNgIkAzoEIAWEaAeBFAwHGzgHSJ4DbjN9OmtkIy0becnT/RjJ4uGfw99974/GXrhoTCqLok66NY3jTloEUdrmwCevn/Ls30xSpFlZ6UJMrW+fTNwAEdSuvSzCRANvEgnjUmw8swT+87+w7I/7qb8XlIB7NpGBjXiUjRX0b7ZpJ8+orRLzvGhWYCMdAU3BbRdPuqOeKAXuRKAWEEJJCIEQqNbLD9osq2kBviL8A4Fq4yLgAa+6DNaiAwcYOrqYHfgQcMgL3AFgG4fHHqREEUBSxUtmBfzNWxXADfviy8Kff7dA4QfFBQG6fnoX5Dh+gEEcIVRKtMIYhc/kCgsCDiarQY4QWpEKQoYTAAIJUcaHAHIXIN9BooBWhEAr0j7QzAkh1RnEWOY4wuRW8uX/f5o5W8gXcjriOUb9z/wjACRuWaWrpKIyLMQ/DUDN/TT+ErgHRpPBIRQrKCcZCvxBBCBEkSD4lKMjRblQlCvpQHPsSZE9R6K2o/vpXkGboKWbbltxx2feLT+a6KJb5293n7vTt53uwOzUO4gYc5eedhvS+a1bbdNuIiSA89cuGo25IZh6DXrJJIIUUibFUG0zt+ijO+cvnj8fjVm4cKlvN90DwzrdMmy8H9GjDyv90Xz2W10PVj3oTY7LLfwfmxMHoef+8n33R0duOxF3LPCYFXtymWNdcLBD3VF4S91+GWf8c9k7sZC6fPpnbENnCmayerBNki0ZbFUXiHV/wkxWklGmydCkaR5o0oZnlj3oSVdnZKjTITaXStOyWGYakzUgTSt1gvSs/otJL1FkzE/3e+aXvj7n+TOv9HkZ6evS4e3OXafCx8iqJfNGpQLM7rkt0ppRJ8N3gd1IjHLaROM0cLkhdf2NQjZ4bmjo2mBWKJ4CPA4IZXX9hFlPBnhxWhXzgBGQ88QeRD3j1/AD5a/JxMnL5gK5deaC2H7HvK98gngBbzfWLKD0g2ufeA7nMsQepBwDgpdhy90BzC+8DSCers8O6KKloYn0RCtKo9EM9LsAd7AgNBhFGEAsvl4K1LpCiCIF3IZHFUKvX5AqfUPBgkO+ovHpUNJtOJSN6hDWWxAigkCt9hbEXdaOHLvI6lM5gQA79LRYOpUsWBpKYu2klOQULGlGCwOzHIkSmYmZKBlQrlmCQ0mDv5SeiVyiemVqVJGyEDJhKemY1dLT0YsnpKch0UbKxExJTydIigQpkiUvYA3SVFDqFH2uNggh343VmPs2ycX0DIYwPYTigMak5AjS0ohI8zmoo4EJwypS4iVcDOuDuvRMgytHPa5LTjnoc1YiCcT0tBI3qjXxqqFomJf2PylAOHMDRp1HGBaDQCTiIC7iQSH4iEICRHMZkUlqk/KsOmVSGlOK7NIseRNZFp3NkbNaLateTmKScHGTAyu2WqQf6lD8rMNg1+lKTcpwkfvQ/7eRMwAA)format("woff2"),url(data:font/woff;base64,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)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/jetbrains-mono-cyrillic-700-normal-BWTpRfYl.woff2)format("woff2"),url(/assets/jetbrains-mono-cyrillic-700-normal-CEoEElIJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/jetbrains-mono-greek-700-normal-C6CZE3T8.woff2)format("woff2"),url(/assets/jetbrains-mono-greek-700-normal-DEigVDxa.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(data:font/woff2;base64,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)format("woff2"),url(/assets/jetbrains-mono-vietnamese-700-normal-BDLVIk2r.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/jetbrains-mono-latin-ext-700-normal-CZipNAKV.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-ext-700-normal-CxPITLHs.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/jetbrains-mono-latin-700-normal-BYuf6tUa.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-700-normal-D3wTyLJW.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper:#141413;--surface:#1a1917;--inset:#2b2a27;--line:#3a3835;--line-active:#5c5853;--ink:#eae7df;--muted:#a9a39a;--subtle:#6b665f;--accent:#cc785c;--accent-soft:color-mix(in srgb, var(--accent) 14%, transparent);--focus:var(--accent);--info:#61aaf2;--diff-added:var(--success);--diff-removed:var(--error);--diff-added-bg:#9aca861a;--diff-removed-bg:#d475631a;--error:#d47563;--success:#9aca86;--warning:#e8c96b;--mono:"JetBrains Mono", "IBM Plex Mono", "SF Mono", Menlo, Consolas, ui-monospace, monospace;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--radius:8px;--radius-sm:6px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font:13px / 1.4 var(--sans);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}button:focus-visible,.input:focus-visible{outline:1px solid var(--focus);outline-offset:1px}.muted{color:var(--muted)}.error{color:var(--error)}.wordmark{font:700 14px var(--mono);letter-spacing:.02em;white-space:nowrap}.bracket{color:var(--accent)}.kicker{font:500 11px var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--muted);margin:0}.kicker.is-accent{color:var(--accent)}.app{grid-template-rows:1fr auto;grid-template-columns:minmax(220px,280px) 1fr;height:100%;display:grid}.rail{border-right:1px solid var(--line);flex-direction:column;grid-row:1;min-height:0;display:flex}.rail-head{justify-content:space-between;align-items:baseline;gap:8px;padding:14px 14px 10px;display:flex}.rail-body{flex:1;padding:4px 6px 12px;overflow-y:auto}.project-head:not(:first-child){margin-top:18px}.rail:focus{outline:none}.rail:focus-within .is-cursor{box-shadow:inset 0 0 0 1px var(--focus)}.rail-search{gap:4px;padding:0 14px 8px;font-size:12px;display:flex}.rail-search .caret{color:var(--accent);animation:1s step-end infinite blink}.rail-search .muted{margin-left:6px}@keyframes blink{50%{opacity:0}}.project-head{font:700 12px var(--mono);color:var(--muted);align-items:center;gap:8px;margin:6px 8px 4px;display:flex}.project-head .rule{background:var(--line);flex:1;height:1px}.row{border-radius:var(--radius-sm);text-align:left;align-items:center;gap:8px;width:100%;min-height:26px;padding:3px 8px;display:flex;position:relative}.row:hover{background:var(--accent-soft)}.row.is-selected{background:var(--inset)}.row.is-selected:before{content:"";background:var(--focus);border-radius:1px;width:2px;position:absolute;top:4px;bottom:4px;left:-6px}.tab-row{color:var(--muted);padding-left:26px}.tab-row.is-selected{color:var(--ink)}.glyph{width:1ch;font-family:var(--mono);text-align:center;flex:none}.row-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.chips{font:11px var(--mono);flex:none;gap:6px;display:flex}.tone-accent{color:var(--accent)}.tone-muted,.chip.muted{color:var(--subtle)}.tone-attention{color:var(--error)}.tone-warning{color:var(--warning)}.tone-success{color:var(--success)}.tone-ink{color:var(--ink)}.empty{font-family:var(--mono);padding:16px 10px;font-size:12px}.empty p{margin:0 0 4px}.workspace{flex-direction:column;grid-row:1;gap:6px;min-width:0;min-height:0;padding:8px 10px 8px 8px;display:flex}.tab-strip{font-family:var(--mono);align-items:center;gap:2px;min-width:0;font-size:12px;display:flex}.tab{border-radius:var(--radius-sm);color:var(--muted);white-space:nowrap;align-items:center;gap:6px;padding:4px 10px;display:flex}.tab:hover{background:var(--accent-soft)}.tab.is-active{color:var(--ink);background:var(--inset)}.tab-index{color:var(--subtle)}.tab.is-active .tab-index{color:var(--accent)}.tab-strip-title{color:var(--subtle);text-overflow:ellipsis;white-space:nowrap;font-family:var(--sans);margin-left:auto;padding-left:12px;overflow:hidden}.pane{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);flex:1;min-height:0;display:flex;overflow:hidden}.placeholder{font:12px var(--mono);color:var(--subtle);margin:auto}.term-pane{flex:1;min-width:0;display:flex;position:relative}.term-host{flex:1;min-width:0;padding:6px 4px 4px 8px}.term-host .xterm{height:100%}.term-notice{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--inset);font:11px var(--mono);color:var(--muted);padding:5px 10px;position:absolute;bottom:10px;right:10px}.term-notice.is-error{color:var(--error)}.status{border-top:1px solid var(--line);background:var(--surface);font:11px var(--mono);color:var(--muted);grid-column:1/-1;align-items:center;gap:8px;padding:4px 12px;display:flex}.status .spacer{flex:1}.usage{white-space:nowrap;gap:16px;display:flex;overflow:hidden}.tone-ok{color:var(--success)}.tone-warn{color:var(--warning)}.tone-crit{color:var(--error)}.dot{background:var(--subtle);border-radius:50%;width:6px;height:6px}.dot.state-open{background:var(--success)}.dot.state-retrying{background:var(--warning)}.link{color:var(--accent)}.link:hover{text-decoration:underline}.connect{place-items:center;height:100%;padding:24px;display:grid}.connect-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);flex-direction:column;gap:12px;width:min(460px,100%);padding:24px;display:flex}.connect-card p{margin:0}.input{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);width:100%;color:var(--ink);font:12px var(--mono);padding:8px 10px}.actions{justify-content:flex-end;align-items:center;gap:14px;display:flex}.button{border-radius:var(--radius-sm);background:var(--accent);color:var(--paper);font:600 12px var(--mono);padding:6px 14px}.button:active,.row:active,.tab:active{transform:scale(.97)}@media (prefers-reduced-motion:reduce){.button:active,.row:active,.tab:active{transform:none}}.machine-head{font:700 12px var(--mono);color:var(--ink);align-items:center;gap:8px;margin:18px 8px 4px;display:flex}.machine-head .rule{background:var(--line);flex:1;height:1px}.machine-head.is-stale{color:var(--subtle)}.row.in-machine{width:calc(100% - 12px);margin-left:12px}.project-head.in-machine{margin-left:20px}.row.is-stale .row-title,.row.is-stale .glyph,.project-head.is-stale{color:var(--subtle)}.remote-notice{font:12px / 1.5 var(--mono);text-align:left;flex-direction:column;gap:8px;padding:14px;display:flex}.overlay{z-index:20;background:#0a0a098c;place-items:start center;padding-top:12vh;display:grid;position:fixed;inset:0}.dialog{color:inherit;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);flex-direction:column;gap:12px;width:min(440px,100vw - 32px);max-height:76vh;margin:0;padding:18px 20px;display:flex;position:static;box-shadow:0 12px 40px #00000059}.dialog.is-wide{width:min(620px,100vw - 32px)}.dialog-body{flex-direction:column;gap:12px;min-height:0;display:flex;overflow-y:auto}.dialog-body p{margin:0}.field{flex-direction:column;gap:6px;display:flex}.textarea{resize:vertical;min-height:72px;line-height:1.45}select.input{appearance:none;cursor:pointer}.chips-row{flex-wrap:wrap;gap:6px;display:flex}.chip-button{border:1px solid var(--line);border-radius:var(--radius-sm);font:12px var(--mono);color:var(--muted);padding:4px 10px}.chip-button:hover{background:var(--accent-soft)}.chip-button.is-active{border-color:var(--accent);color:var(--ink);background:var(--accent-soft)}.choices{margin:0;padding:0;list-style:none}.button.is-danger{background:var(--error)}.button:disabled{opacity:.5;cursor:default}.menu{z-index:30;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);flex-direction:column;min-width:200px;padding:4px;display:flex;position:fixed;box-shadow:0 8px 28px #00000059}.menu-item{border-radius:var(--radius-sm);text-align:left;justify-content:space-between;gap:24px;padding:5px 10px;font-size:13px;display:flex}.menu-key{font:11px var(--mono);color:var(--subtle)}.menu-item.is-selected{background:var(--accent-soft)}.menu-item.is-danger{color:var(--error)}.toasts{z-index:40;flex-direction:column;gap:6px;display:flex;position:fixed;bottom:34px;right:14px}.toast{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--inset);max-width:420px;color:var(--ink);font:12px var(--mono);text-align:left;cursor:pointer;overflow-wrap:anywhere;padding:7px 12px}.toast.is-error{color:var(--error)}.inbox h2.kicker{margin-top:4px}.inbox-hints{color:var(--subtle)}.cards{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.inbox-card{flex-direction:column;align-items:stretch;gap:2px;padding:6px 10px}.inbox-line{align-items:baseline;gap:10px;min-width:0;display:flex}.inbox-badge,.inbox-age{font:11px var(--mono);flex:none}.inbox-age{color:var(--subtle)}.inbox-sub{font:11px var(--mono);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mono{font:12px var(--mono)}.inbox-chip:hover{color:var(--accent)}.new-task{width:auto;color:var(--muted);margin:4px 6px 10px}.tab-new{color:var(--subtle)}div.placeholder{flex-direction:column;align-items:center;gap:12px;display:flex}div.placeholder p{margin:0}.settings{grid-template-columns:140px 1fr;gap:18px;min-height:360px;display:grid}.settings-nav{border-right:1px solid var(--line);flex-direction:column;gap:2px;padding-right:10px;display:flex}.settings-tab{text-align:left;border-radius:var(--radius-sm);color:var(--muted);padding:5px 10px}.settings-tab:hover{background:var(--accent-soft)}.settings-tab.is-active{color:var(--ink);background:var(--inset)}.settings-body{flex-direction:column;gap:18px;max-height:60vh;display:flex;overflow-y:auto}.settings-group{flex-direction:column;gap:8px;display:flex}.settings-group p{margin:0;font-size:12px}.settings-rows{flex-direction:column;display:flex}.engine-row{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:6px 4px;display:flex}.engine-check input{accent-color:var(--accent)}.engine-main{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.engine-detail{text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.engine-actions{font:11px var(--mono);gap:10px;display:flex}.prefix-hud{z-index:40;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);min-width:220px;color:var(--ink);padding:8px 12px;font-size:12px;position:fixed;bottom:34px;left:12px;box-shadow:0 8px 24px #00000059}.prefix-hud-head{margin-bottom:2px}.prefix-hud-row{color:var(--muted);gap:12px;display:flex}.prefix-hud-key{min-width:3ch;color:var(--accent)}.dialog:focus{outline:none}.page{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);flex:1;min-height:0;padding:14px 18px;overflow-y:auto}.page:focus{outline:none}.page-title{font:700 14px var(--sans);margin:0 0 6px}.page-group{margin-top:12px}.page-group .project-head{margin-left:0}.wt-row{border-radius:var(--radius-sm);padding:5px 8px}.wt-row.is-cursor{background:var(--inset);box-shadow:inset 2px 0 0 var(--accent)}.wt-line{align-items:baseline;gap:8px;font-size:13px;display:flex}.wt-line.mono{justify-content:space-between;font-size:11px}.wt-branch{font-family:var(--mono)}.wt-path{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.page-hints{margin-top:16px;font-size:11px}.page-head{justify-content:space-between;align-items:baseline;display:flex}.update-versions b{margin-right:10px}.update-actions{flex-direction:column;margin:10px 0;display:flex}.update-action{border-radius:var(--radius-sm);text-align:left;gap:12px;padding:4px 8px;font-size:13px;display:flex}.update-action.is-cursor{background:var(--inset);box-shadow:inset 2px 0 0 var(--accent)}.update-label{min-width:14ch}.update-chip{color:var(--warning)}.release-notes h2{margin:14px 0 4px;font-size:13px}.release-notes pre,.whats-new-body pre{white-space:pre-wrap;font:12px / 1.5 var(--mono);color:var(--muted);margin:0}.whats-new-body{max-height:55vh;overflow-y:auto}.files{outline:none;flex-direction:column;grid-row:1;min-width:0;min-height:0;padding:10px 6px 8px 0;display:flex}.files:focus-within .files-tab.is-active{color:var(--accent)}.files-actions{font:11px var(--mono);justify-content:flex-end;gap:14px;padding:0 8px 8px;display:flex}.files-tabs{gap:4px;padding:0 4px 6px;display:flex}.files-tab{border-radius:var(--radius-sm);font:600 12px var(--mono);color:var(--muted);padding:3px 10px}.files-tab.is-active{color:var(--ink);background:var(--inset)}.files-scope{font:11px var(--mono);color:var(--muted);flex-wrap:wrap;gap:4px 10px;padding:0 8px 8px;display:flex}.files-body{flex:1;min-height:0;overflow-y:auto}.file-row{min-height:24px;font:12px var(--mono)}.files:not(:focus) .file-row.is-selected:before{background:var(--line-active)}.status-M{color:var(--warning)}.status-A,.status-untracked{color:var(--success)}.status-D{color:var(--error)}.status-R{color:var(--accent)}.placeholder-line{font:12px var(--mono);color:var(--subtle);margin:12px 10px}.tab-preview{cursor:default}.tab-close{color:var(--subtle);padding:0 2px}.tab-close:hover{color:var(--accent)}.term-slot{flex:1;min-width:0;display:flex}.term-slot.is-hidden{display:none}.preview{outline:none;flex-direction:column;flex:1;min-width:0;display:flex}.preview-body{min-height:0;font:12px / 1.5 var(--mono);flex:1;padding:6px 0;overflow:auto}.diff-row{white-space:pre;cursor:default;grid-template-columns:4ch 4ch 2ch 1fr;gap:0 8px;padding:0 12px;display:grid}.diff-row .gutter{color:var(--subtle);text-align:right}.diff-row .code{min-width:0}.diff-row.kind-add{background:var(--diff-added-bg)}.diff-row.kind-add .sign,.diff-row.kind-add .code{color:var(--diff-added)}.diff-row.kind-del{background:var(--diff-removed-bg)}.diff-row.kind-del .sign,.diff-row.kind-del .code{color:var(--diff-removed)}.diff-row.kind-hunk,.diff-row.kind-meta{color:var(--subtle)}.diff-row.kind-file{color:var(--ink);border-top:1px solid var(--line);margin-top:8px;padding-top:4px;font-weight:700}.diff-row.is-noted .sign{color:var(--accent)}.diff-row.is-noted{box-shadow:inset 2px 0 0 var(--accent)}.preview:focus .diff-row.is-cursor{background:var(--accent-soft)}.diff-row.is-cursor{background:var(--inset)}.preview-footer{border-top:1px solid var(--line);font:11px var(--mono);color:var(--muted);gap:10px;padding:5px 12px;display:flex}.preview-footer .spacer{flex:1}.pref-row,.pref-cycle,.pref-readonly{text-align:left;align-items:baseline;gap:10px;width:100%;padding:5px 4px;font-size:13px;display:flex}.pref-row{cursor:pointer}.pref-cycle:hover:not(:disabled){background:var(--accent-soft)}.pref-cycle .pref-label:after{content:" ›";color:var(--accent)}.pref-row input[type=checkbox]{accent-color:var(--accent);align-self:center}.pref-label{font-family:var(--mono);font-size:12px}.pref-hint{margin:0;font-size:11px}.pref-field{border:0;flex-direction:column;gap:6px;min-width:0;margin:0;padding:4px;display:flex}.pref-field legend{float:left;width:100%;margin-bottom:6px;padding:0}.pref-field .chips-row{clear:both}.pref-number{width:9ch;padding:3px 6px}.pref-readonly .pref-label{color:var(--muted)}.tier-row{border-bottom:1px solid var(--line);flex-direction:column;gap:3px;padding:8px 4px;display:flex}.tier-head{align-items:baseline;gap:12px;display:flex}.tier-head .link{margin-left:auto}.tier-editor{flex-direction:column;gap:8px;padding:8px 0 2px;display:flex}.hook-rows{font:12px var(--mono);gap:18px;padding:10px 4px;display:flex}.confirm-inline{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--inset);flex-direction:column;gap:6px;padding:8px 10px;display:flex}.confirm-inline p{margin:0}.tone-diff-added{color:var(--diff-added)}.tone-diff-removed{color:var(--diff-removed)}.task-mark{border-radius:2px;flex:none;align-self:stretch;width:3px;margin:2px 0}.tab-row.is-two-row{align-items:flex-start}.row-caption{font-size:11px;display:block}html[data-running-title=shimmer] .task-row.is-running .row-title{background:linear-gradient(90deg, var(--ink) 0%, var(--ink) 35%, var(--accent) 50%, var(--ink) 65%, var(--ink) 100%) 0 0 / 300% 100%;color:#0000;-webkit-background-clip:text;background-clip:text;animation:2.4s linear infinite shimmer}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.pane:focus-within{border-color:var(--focus)}html[data-working-border=flow] .pane.is-working{background:linear-gradient(var(--paper), var(--paper)) padding-box, linear-gradient(90deg, var(--line), var(--task-ink,var(--focus)), var(--line), var(--task-ink,var(--focus)), var(--line)) border-box;background-size:100% 100%,300% 100%;border-color:#0000;animation:3s linear infinite flow-border}@keyframes flow-border{0%{background-position:0 0,0 0}to{background-position:0 0,-200% 0}}.tab-strip.is-tabs-hidden .tab:not(.tab-new):not(.tab-preview){display:none}@media (prefers-reduced-motion:reduce){html[data-running-title=shimmer] .task-row.is-running .row-title{color:inherit;background:0 0;animation:none}html[data-working-border=flow] .pane.is-working{animation:none}}.app{grid-template-columns:var(--rail-w,minmax(220px, 280px)) 1fr minmax(240px, 300px)}.app.is-zen{grid-template-columns:var(--rail-w,minmax(220px, 280px)) 1fr}.app.is-narrow{grid-template-columns:minmax(0,1fr)}.app.narrow-content .rail,.app.narrow-sidebar .workspace{display:none}.narrow-back{align-self:flex-start;padding:2px 6px;font-size:12px;font-weight:700}.recent-row .glyph{font-weight:700}.rail{position:relative}.rail-grip{cursor:col-resize;z-index:5;touch-action:none;width:6px;position:absolute;top:0;bottom:0;right:-3px}.rail-grip:hover,.rail-grip:active{background:var(--accent-soft)}.rail-fold-btn{color:var(--muted);z-index:6;padding:0 4px;font-weight:700;position:absolute;bottom:2px;right:8px}.rail-fold-btn:hover{color:var(--accent)}.rail.is-folded{align-items:center;overflow:hidden}.rail-fold-btn:only-child,.rail.is-folded .rail-fold-btn{right:50%;transform:translate(50%)}.rail-folded-list{flex:1;width:100%;min-height:0;padding:10px 0 24px;overflow-y:auto}.rail-folded-group{flex-direction:column;align-items:center;display:flex}.rail-folded-rule{border-top:1px solid var(--line);width:60%;margin:6px 0}.rail-folded-cell{width:100%;font:13px var(--mono);text-align:center;padding:3px 0}.rail-folded-list.is-initials .rail-folded-cell{justify-content:center;gap:8px;display:flex}.rail-folded-initials{color:var(--muted)}.rail-folded-list.is-hairline .rail-folded-cell{padding:3px 0;line-height:1}.rail-folded-cell.is-selected{background:var(--inset);box-shadow:inset 2px 0 0 var(--accent)}.hint-bar{white-space:nowrap;color:var(--muted);flex-shrink:0;align-items:baseline;font-size:11px;display:inline-flex}.hint-sep{margin:0 6px}.hint-bar .link:disabled{opacity:.5;cursor:default}.shortcut-badge{border:1px solid var(--accent);border-radius:var(--radius-sm);background:var(--surface);color:var(--accent);cursor:pointer;z-index:8;padding:1px 5px;font-size:10px;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.row.new-task,.inbox-chip,.badge-host,.hint-bar>span{position:relative}.rail-head .shortcut-badge{top:100%;right:0;transform:none}.split{flex:1;min-width:0;position:relative}.split-leaf{box-sizing:border-box;min-width:0;min-height:0;display:flex;position:absolute}.split.is-box .split-leaf{border:1px solid var(--line);border-radius:var(--radius-sm)}.split.is-line .split-leaf.has-left{border-left:1px solid var(--line)}.split.is-line .split-leaf.has-top{border-top:1px solid var(--line)}.split.is-rail .split-leaf{border-left:2px solid var(--line)}.split.is-rail .split-leaf.has-top{--mt:6px}.split.is-rule .split-leaf{border-top:1px solid var(--line)}.split.is-rule .split-leaf.has-left{--ml:8px}.split.is-rule .split-name{top:-8px}.split.is-box .split-leaf.is-active,.split.is-line .split-leaf.is-active.has-left,.split.is-line .split-leaf.is-active.has-top,.split.is-rail .split-leaf.is-active,.split.is-rule .split-leaf.is-active{border-color:var(--accent)}.split-name{background:var(--paper);color:var(--subtle);font:10px var(--mono);pointer-events:none;z-index:3;padding:0 4px;position:absolute;top:2px;right:8px}.split-leaf.is-active .split-name{color:var(--accent)}.term-scrolled{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--inset);z-index:4;gap:12px;padding:4px 10px;font-size:11px;display:flex;position:absolute;bottom:10px;right:10px}.tone-info{color:var(--accent)}.term-search{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);font:12px var(--mono);z-index:5;align-items:center;gap:10px;padding:4px 10px;display:flex;position:absolute;bottom:8px;left:8px;right:8px}.term-search-input{min-width:0;color:var(--ink);font:inherit;background:0 0;border:0;outline:none;flex:1}.prefix-guide{z-index:40;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);width:min(560px,100vw - 24px);max-height:60vh;padding:8px 12px;font-size:12px;position:fixed;bottom:76px;left:12px;overflow-y:auto;box-shadow:0 8px 24px #00000059}.prefix-guide-head{justify-content:space-between;gap:16px;margin-bottom:6px;display:flex}.prefix-guide-body{columns:2 220px;column-gap:20px}.prefix-guide-group{break-inside:avoid;margin-bottom:8px}.prefix-guide-row{width:100%;color:var(--ink);text-align:left;gap:10px;padding:1px 0;display:flex}.prefix-guide-row:hover:not(:disabled){background:var(--accent-soft)}.prefix-guide-row:disabled{cursor:default}.palette-list{margin:8px 0;overflow-y:auto}.palette-row{border-radius:var(--radius-sm);width:100%;color:var(--ink);font:12px var(--mono);text-align:left;white-space:pre;justify-content:space-between;gap:16px;padding:3px 6px;display:flex}.palette-row.is-selected{background:var(--accent-soft)}.palette-chord{color:var(--accent)}.help-head{justify-content:space-between;gap:16px;display:flex}.help-corner{flex-direction:column;align-items:flex-end;font-size:11px;display:flex}.help-scroll{max-height:52vh;margin-top:8px;overflow-y:auto}.help-section{margin-bottom:10px}.help-title{font:700 12px var(--sans);color:var(--accent);margin:0 0 4px}.help-row{gap:12px;padding:1px 0;font-size:12px;display:flex}.help-cap{min-width:14ch;color:var(--ink)}.help-desc{flex:1}.pane-hint{white-space:nowrap;text-overflow:ellipsis;margin:0;padding:4px 14px;font-size:11px;overflow:hidden}.app-shell{flex-direction:column;height:100%;display:flex}.app-shell>.app{flex:1;height:auto;min-height:0}.daemon-banner{border-bottom:1px solid var(--warning);background:var(--inset);color:var(--warning);flex-wrap:wrap;align-items:baseline;gap:12px;padding:4px 14px;font-size:12px;display:flex}.daemon-banner span{color:var(--muted)}.taskops-hint{font:11px var(--mono);color:var(--subtle)}.taskops-path{font:12px var(--mono);word-break:break-all}.brief{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);max-height:38vh;font:12px / 1.5 var(--mono);white-space:pre-wrap;word-break:break-word;margin:0;padding:10px 12px;overflow:auto}.notes{flex-direction:column;gap:8px;max-height:44vh;display:flex;overflow-y:auto}.note{border-radius:var(--radius-sm);text-align:left;flex-direction:column;gap:2px;width:100%;padding:6px 10px;display:flex}.note.is-selected,.note:focus-visible{background:var(--accent-soft);outline:none}.note-head{font:11px var(--mono);color:var(--accent);white-space:pre}.note-text{color:var(--ink);white-space:pre-wrap;word-break:break-word}.note-confirm{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);flex-direction:column;gap:8px;padding:10px 12px;display:flex}.note-confirm p{margin:0}.row.is-moving,.project-head.is-moving{background:var(--accent-soft);box-shadow:inset 2px 0 0 var(--accent)}.project-head.is-moving:after{content:"move";font:500 10px var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--accent)}.taskops-body{white-space:pre-line}.suggest{position:relative}.suggest-list{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--inset);max-height:188px;font:12px var(--mono);margin:4px 0 0;padding:2px;list-style:none;overflow-y:auto}.suggest-row{text-align:left;width:100%;font:inherit;border-radius:var(--radius-sm);color:var(--muted);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;padding:3px 8px;display:block;overflow:hidden}.suggest-row.is-cursor{background:var(--accent-soft);color:var(--ink)}.suggest-row.is-accent{color:var(--accent)}.newtask-legend{font:11px var(--mono);color:var(--subtle);margin:8px 0 0}.dialog-body+div>.dialog-body{margin-top:14px}.rail-nav{flex-direction:column;padding:0 6px 8px;display:flex}.rail-nav-row{border-radius:var(--radius-sm);color:var(--muted);text-align:left;align-items:center;padding:3px 8px;display:flex}.rail-nav-row:hover{background:var(--inset)}.rail-nav-row.is-active{color:var(--ink);font-weight:700}.mono{font-family:var(--mono)}.pg-top{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.pg-top .page-title{margin:0}.pg-hint{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:11px;overflow:hidden}.pg-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.kb-page{flex-direction:column;gap:8px;display:flex;overflow:hidden}.kb-project{align-items:baseline;gap:12px;min-width:0;display:flex}.kb-project-name{color:var(--accent);white-space:nowrap;font-weight:700}.kb-project-path{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:11px;overflow:hidden}.kb-empty{margin-left:auto;font-size:12px}.kb-board{flex:1;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;min-height:0;display:grid}.kb-single{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex}.kb-strip{gap:16px;font-size:12px;display:flex}.kb-strip .is-active{color:var(--accent);font-weight:700}.kb-lane{border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;min-height:0;padding:8px;display:flex}.kb-single .kb-lane{flex:1}.kb-lane-head{font:700 12px var(--mono);color:var(--muted);justify-content:space-between;gap:8px;margin:0 0 8px;display:flex}.kb-lane-in_progress .kb-lane-head{color:var(--accent)}.kb-lane-parked .kb-lane-head{color:var(--warning)}.kb-lane-done .kb-lane-head{color:var(--success)}.kb-cards{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex;overflow-y:auto}.kb-cards p{margin:0;font-size:11px}.kb-card{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;flex-direction:column;flex:none;gap:4px;padding:8px 10px;display:flex}.kb-card:hover{border-color:var(--line-active)}.kb-card.is-selected{border-color:var(--accent)}.kb-card.is-attention:not(.is-selected){border-color:var(--warning)}.kb-card.is-done .kb-card-title{color:var(--muted)}.kb-card-head{justify-content:space-between;gap:8px;display:flex}.kb-card-title{overflow-wrap:anywhere;min-width:0;font-weight:700}.kb-card-body{white-space:pre-wrap;overflow-wrap:anywhere;height:2.8em;font-size:12px;overflow:hidden}.kb-card-foot{justify-content:space-between;gap:8px;font-size:11px;display:flex}.dialog.kb-drawer{width:min(680px,100vw - 32px)}.kb-drawer-head{align-items:baseline;gap:14px;display:flex}.kb-label{align-items:baseline;gap:10px;display:flex}.kb-hint{text-transform:none;letter-spacing:0}.kb-body{font-family:var(--mono);min-height:160px}.kb-group{border-radius:var(--radius-sm);border:1px solid #0000;padding:4px}.kb-group:focus{border-color:var(--accent);outline:none}.kb-places{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.kb-place{font:12px var(--mono);color:var(--muted);white-space:pre}.kb-place.is-active{color:var(--accent);font-weight:700}.kb-legend{font-size:11px}.kb-section{flex-direction:column;gap:4px;display:flex}.kb-section p{margin:0}.kb-event{gap:8px;font-size:12px;display:flex}.kb-age{text-align:right;min-width:4ch}.pg-list{flex-direction:column;gap:6px;margin-top:10px;display:flex}.pg-row{border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;align-items:baseline;gap:10px;min-width:0;padding:7px 10px;display:flex}.pg-row.is-cursor{border-color:var(--accent);background:var(--inset)}.pg-row .pg-name{white-space:nowrap;font-weight:700}.pg-row.is-off .pg-name{color:var(--muted)}.pg-row .pg-grow{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.pg-detail{border:1px solid var(--line);border-radius:var(--radius);gap:24px;margin-top:10px;padding:12px;display:flex}.pg-detail>div{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.pg-detail p,.pg-detail h2{margin:0}.pg-prompt{white-space:pre-wrap;overflow-wrap:anywhere}.pg-run{font-size:12px}.pg-response{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px}.pg-notice{margin:8px 0 0;font-size:12px}.pg-cron{gap:18px;padding:6px 4px;display:flex}.pg-cron button{border-radius:var(--radius-sm);text-align:left;min-width:5ch;font:13px var(--mono);border:1px solid #0000;flex-direction:column;gap:2px;padding:4px 6px;display:flex}.pg-cron button span{color:var(--subtle);font-size:10px}.pg-cron button.is-active{border-color:var(--accent);color:var(--accent);font-weight:700}.pg-cron:focus{outline:none}.pg-issue-line{align-items:baseline;gap:10px;min-width:0;display:flex}.pg-issue-line .pg-num{color:var(--muted);white-space:nowrap}.pg-issue-sub{color:var(--muted);gap:10px;padding-left:4ch;font-size:12px;display:flex}.pg-issue-sub .pg-grow{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.pg-issue{border-radius:var(--radius-sm);cursor:pointer;border-left:2px solid #0000;flex-direction:column;gap:2px;padding:6px 10px;display:flex}.pg-issue.is-cursor{background:var(--inset);border-left-color:var(--accent)}.xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;inset:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;inset:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre;font-family:monospace}.xterm .xterm-accessibility-tree>div{transform-origin:0;width:fit-content}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;z-index:11;background:0 0;transition:opacity .1s linear}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{display:none;position:absolute}.xterm .xterm-scrollable-element>.shadow.top{width:100%;height:3px;box-shadow:var(--vscode-scrollbar-shadow,#000) 0 6px 6px -6px inset;display:block;top:0;left:3px}.xterm .xterm-scrollable-element>.shadow.left{width:3px;height:100%;box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset;display:block;top:3px;left:0}.xterm .xterm-scrollable-element>.shadow.top-left-corner{width:3px;height:3px;display:block;top:0;left:0}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset}.welcome{max-width:72ch;font:12px / 1.5 var(--mono);flex-direction:column;gap:10px;margin:0 auto;padding:28px 20px;display:flex;overflow-y:auto}.welcome p,.welcome dl,.welcome dd{margin:0}.welcome-title{font:600 14px var(--mono);color:var(--accent);margin:0}.welcome-steps{flex-direction:column;gap:2px;padding-top:6px;display:flex}.welcome-step{gap:14px;display:flex}.welcome-cap{color:var(--accent);flex:0 0 8ch}.welcome-env,.welcome-start{flex-direction:column;gap:6px;padding-top:6px;display:flex}.welcome-start .button{align-self:flex-start}.welcome-fix{flex-direction:column;gap:2px;display:flex}.welcome-docs{opacity:.7;padding-top:6px}
|
|
1
|
+
@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAASIABAAAAAACQQAAAQuAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVF4AdBEICoRkhAALIAABNgIkAzoEIAWFAAeBFAwHG2oHKJ6DceNW4lJEFHn9tEOE37LNsvkjHr7f739rn3u+OSrSxLQytE91Dw2PYtNVq3Qaw/vJ7fUBMdOj/u2ImB98cT5WUx9F13ZKt06mU7tG1sAYcM26yCRX4f/0904bmwq8hwkUUMTRX61pa9C3xlpAGYw1vOu8C2SBZZFlld7DAW82RJWmwYMI1AJCKBNCIASqdZGFmtPSNQRhMpR0EKjWTwm6z6sJ+4jqhxjovTinVdRpZaQjaQzAYjI8NgAKDJCokgunCn9oUQE8VZd/F//+v6P4F1U9gLr58yNI/dJX9BAshEoJbTDogz7ocKoUsPvES8UK/aQIUQgpGgECBVLkOEV6iASTYgNAPKdNXayhDPL7IJuAZnEYSZ0eOLc9i5Rv5/+lEi3sW/kfnCf/+fTe0sxS7CKLx5erRJkKOixEqQaoqrvx5HN4iz4VhX0gS6DjFIWUzn/fIXJRVFY1NFRVNVeFt+SYmrK6vCU6eJsnKnJj5HTESMTQZOTI3Y/tzr3rUcOsiRy/ciP50s3Mycgxmhz9GMXhjzVH30ut796NHP0UUa31/Zoa6vCH6iPvdIM0IRANaT60FablmZlZd+UKNFy9NrvnFGxb5NC2CRxR0/rIyF/WNn+35sv9r+tHVhkseuWGKkCPPh96+GXt8Lc/Sh24ujfjf+tNw1lZWreiPuHb/PSpyjdv2rf/++ZE5TSKjFdZxYsBvr1sEHl5STuHZqYR7jGYGvGBBdjcaB5bODY1GAxMjsd0wDMIzXAXODRd74DxNMtO4YuYHclgLQRzp9KlUmxptCwv9bYgvWGD2xBW7r9413fdJu+mxzvzAUYeeONQvZP4kgfqZle4jhH/MWh+UbxgtJdrLdXLymNL53PRU0D3Q6FcXTfGqGcul6vrqhgLGAVSv+IVIfZOHpu+mlLqSlnj903j8mazXDsba/wbxhS/4Oubh1c5/uXDgt4j5KtnGEy5BIJHo0ur+jD+r2qCkuP1aRVM8EpUoRYSJyqNRA38uwDvHBNo0AejO2Z+ZYLLal1QiFyFh1EDQOgSCSCpjwwKU8yDbIjroEwne0G5Qca49cYp4AlqtQNZfWTQoFb1tRpFYAmRD+HXTkV4uQhG2bg4OKmyoypAsUGtWgQXyFxYrkpODeUxvGqIZA61erXo0sFG1UBGuPgpuon8RNUG2DhovAjZCBuZwtXrU3mQGki9+pm0eVZAXoWxLWTQoYHBPrJR4WunNxIFbCHfkTyPK+sqxjxDmGArZvf79JGJ3GwEqjwc7a7NIrl/7bJ7Nzu4+n1Ow6shEPnUrtVo7cnd5Wi5qCUbBIQbNKCP95FMCSZylEV5VCiiMqqiOmrKZ/I/C0gI1fyuulVcM2E1r4MhtcV/fbCD+HwEvVzH1dGNAzFE0FTbKzyQz3gootrNbN2a4PuG0j0JOgE=)format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAAbUAA8AAAAACOgAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABWAAAABgAAAAcABQABEdQT1MAAAFwAAAAHgAAAB5EdEx1R1NVQgAAAZAAAAAnAAAAKLj8uOpPUy8yAAABuAAAAFEAAABgFwRca1NUQVQAAAIMAAAARgAAAF7mY9MfY21hcAAAAlQAAABRAAAAdAyHCodnYXNwAAACqAAAAAgAAAAIAAAAEGdseWYAAAKwAAAB6QAAAl7g5OpvaGVhZAAABJwAAAA2AAAANhSQ8UNoaGVhAAAE1AAAAB8AAAAkAcoBImhtdHgAAAT0AAAAHgAAADofBAM2bG9jYQAABRQAAAAgAAAAIATcBZ9tYXhwAAAFNAAAABwAAAAgAIcCb25hbWUAAAVQAAABEgAAAoA4pV3kcG9zdAAABmQAAABwAAAAlNdzMTB42mNgZGBg4GGAAEYgZAWTjCAeAAG0ABkAAQAAAAoAHAAcAAFERkxUAAgABAAAAAD//wAAAAAAAHjaY2BkYGDgYlADQiYXN58QBqGcxJI8Bj4GEGABEf//g0gAWkkFVQB42mNgYYpinMDAysDA1MUUwcDA4A2hGeMYjBgdgKIMDJwMUMDEzoAEvJyAxAEGXpaXzH/+XWFgYP7DqKPAwDj//nWgSjWmW0BZBQZWABNDDdYAAAB42kXIIQIBARQFwHl/QQIkWXInUAANXMOBJCcTd+KIGCjMNViq9/H0CM6P/S0j0bOwUqh08iEb8kPTXn3RiMoYhD90Nwc3AAB42lXIRwHCQBAF0JceehWAlTjhjikUgAVQA4mJLbdk5neUqHBVKWSv3XF2VCnt3AyevkVZv+sxBBbbq/6HfFP4hEcYQgEK82v1aHQ5RTs3FRQAAAAAAQAB//8AD3jabZA1tNRAFEDfTGDdfXHI2QQnZJJvK5ngDs13Welwt/78CtcS7xvcrcHKbXCtceh+wgtu437nXRCgC4BY9AGOXOAFYNHR0dzoKCGju8gJ6xiZaF3DWqcPBiSV5i2geaCgAlAJ77ghgjfiLC7KojvOZEmSXS63emXr5W7lsTLtXFMkRmks4ly+cYOEnvO2YLDNANv+9oJwhkpAAJAcHPG/1RC2BERc1ZGGMxYVWDyVSjc0NMaZELUf9e4JhCgNB3b2PiJRctuqZ0WPR8zilxutN/ji97vUBYMAnGjtzxjtK3wrDaMABo+R9KjWwNRUMppwuWS1QdfFZCIlMF2TxDGuJJlYW7OmVlvD+sx86b1hvC/l8yXf2hqZ66xbZ80yWzyD9/fzGaRzA58+nSOzYC+gw9AP+vyNqUAUhoD4lSnputbgUFPJ5O9Y+ReWlxkrc96naX08b3zk/KORb+E+VjYPmH1M6+UHeVlDtCzzGZ9FY8YMA8gPMsQA0jqaGkHT6cYSdVwl7Zs9Wzx+DyWUugPujd03T52ikrUvM26kF9PIcRmycuDBKcd3XRhPDgtnQACINzJ3fVl1tTB++3bc2S7kyD3cCQIQNMcSKaY2YOciE+d0zFbGjps6u0PILTFlRZHNJfAFnfeHtgAAAAABAAAAAjYEro52gl8PPPUAAwPoAAAAANvSppoAAAAA29rQ8vk5/tQEkgP8AAAABgACAAAAAAAAeNpjYGRgYP7z7woDA8uGn5Z/+1kmAUVQAR8Ar8AG6gB42mOKYIgCYiMkrAzCUHEbJJoBikHgCkMPAPDwCFUAAAAAABoAOwBGAFEAbwB3AKkAsQDmAQkBCQEJAQkBFgEveNpjYGRgYOBn3MGQx7CFgQ3MQwBmBiYALRoB+HjajJADbgVQEEXPZ20bQW3bthvXbr8Vp4to1KV0AV1Wb9JvZzJvzhvcB6CQL0wYzHnAj6E/yAYaDeVBNlJsMAfZxCy/QTbTy3eQLdTzGWQr3VwGuZhx2v/ZAIVUB9kc0TSUKJ8f5FIRHGPjnWs+2MKt+MYzt1xwr/jIk3JymR0X0wzIXKo7VbXjFvfLn3lTtCn7qPoB6+yyzb3qy8pdq/6hrj11fMj7OFbtEY+mrlU/516rVFCdVobplw/JEjVaCaqIYlUiUzOaW9aa/Q1idmlPXZHbCagW/B10XwaRi06VuVdMf+9DnIov6rlF8yzhUXxC/4c66Uz48UepqEN9N/Tzt2RwjOljsUUfj581AbaEXsIAAHjaY2BiAIP/qQxGQIqRAR3wA7EKw0lGJgYbRmZGFkZWRjZGdgZmRg5GTkYuRm42x6Si1LJU9tK8TAMTR1cI7WoB5btB+Zas6Ym5uYlgnoGjAZNzEF9icmlJanJ+bpJecmJxKg9IxtjADMwBAKDtHJg=)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2)format("woff2"),url(/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2)format("woff2"),url(/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA9UABAAAAAALMAAAA7zAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGnAbhWocghYGYD9TVEFUXgCDBBEICrBAp3ILgjgAATYCJAOEKAQgBYUAB4xODAcbIiYzo8LGAQCKfn4o/usELQ4rdj22ABHwitFYjZPqB3XSqAbV3C5dFkHYtTehxpeGbU+3+QexdERCkxARw9oNxAyetvXzdhdjl/7aiBiHgcqBjZywaGPSh4mNFccpF3DHlfyO8Jc/OiSe/kb7/iQYRAE23iScpHngiRRBFETNiZzQwc2HOllJ0fqXIjTY8RTYbDsklKc81hGPQcOJojhD/w80ll1aG/qiQErbzqOXjmvOVKd14tuv+Hxrlbarq/5xH7CiMPjaZXlrfNSp7uqaroZXvYAzc8A0kH2zs3MvHQBUORcJ2GG2cdFRgArh+Sgb7yOsjImpmgM0kq1FwhQCQzQ1Mt+j7at5GSAAIQAAKFLk6uMul4pIl4HIpEEUK0dUMiCMmhFWNoSDC+Exghgzi5i3hNhtN9qaINo+EbQj1tEIgJVLj5oebQ6I1/fyLMQYALYgALKS0yEOQCJG89uIiEPKyeRDVCmC0HgZ203jIg7kk6cHxfEKeBSDXtxd6n5yJzqpfSgXs9xMri1fPezlKMAVcCGEIhmwHiDRtJOyKfXkGsAVqI7ohIZs0rsDM/IU4fuQgkppCk2n+VRHy6mFttJ26t16mBjQPyIeYhvZnyXaiDSeaAYYXLiKPIm4uKh1zIq6gSRVU7WNPIV5v1PwBOy07RrrT6skwoEAtYyZeYgpBUABaDEmtPWRGP/UGABFgUUjchFXAghAgAYQpyPkCIBBoRwQgU/g3kQcyqTY9KSDItmjjmmkP+qJHG3C66hjXhtlhzwglI+1+4Be+T77hYQxxeNkCIDaKU+ANXhkMqePOVAQr7uwCjoBlCdtHQE8TNRd17//A/evkhSpkOMDA9VTmwAVAbLNlwMkoAG5qG2bWCYA/h3uEYgEhFqSmJJPpCIFbJHg1Aw5GaAujjqMzIHc8NrIHBEJJjGZP3cuFQZD9PvzLvZIaCIjBcTvEnIzTWiGjqdzlD+VAO2TUERK8smEi8lNNOguiAM9P6Gfo6bX8bD0v7V/cPwA/fDBi0BaGgUllWy5AATy6X9gAZqRVIsMLuVmqQ3QmrBbiFgTiWbxLDj1hBqINGLVYewQwySWWRyeQK1kXVJ0S2UjZ5WgXaIOSTodp42CUzqHXH226ZfJI4tXth45eqnslGdQgSGFhmmMyOdTbEyJcdv56U0pNa3MDJ1JVRZUmldtkcESglQkAOA8AMgAoBeYLQi+wDxAtwAAGlXJUdVLPLmo/TLRystE3SsqO29LUY0hsrtvBoXUw1Fy+XjIhqbj4rEZISsUysW1L68PlGRwyWImjWXjS9LFyUzjC7v7Z5hYsYKRhIH49EyxTJxutwOy2PRxp1R63SVViB+eNFYRywlEzJBIMDIl5Aa4PtbFOno416WTTkfVQwSPgIve66BCbLAuLmpCh59ln5uFECODSuUIJ2CJCCzDwbf+DV2/3yTtan5J1gEVuilcVASHULO9Bt+nWkIEHMMit5gOxaO4JpWjvdzOcySeFek9q4dy3jxi2BxHwsuuo2CzbQ+KJWxyqPUJljVCU3WT8JwlhZyLkKODRhZkQByHu8ERJIcGBexSmdwGPfMPbjnC0SwRUTyCAIwY4Mdr9zxJTKE5yp0mcEe9s3Umm/TZp2s4X/27cQUmhrd4Ow4ibPOTOxxT6w+S8ENc9AGE7meFOlNbuzjngJtzjFKcrMsxtf4G4UIPcNGXbvwNaeDea6+1L7kaYG+M13a455pruOh5Ww0HlhllPy/PsqS9Zr7ZV9cSLODAoItzBt2cI5i1brCxQRIcH6yr9wV5+XjhtlxuziH7LiqGTXVnkfCZntd1doJ5liyIno6X3GqH56fcnGNwE2IXvYhw5a/MJGsMns/TOawd+2HX5kOXxQZFsYkwmMetzGtqKDKSe+h9h7jX77z2Snb98vyL7rjmil1N3B/cCBfsC5rymA/ExpPlni/DL9i7eflmn66oxrSlMRRB/8Dbq/e/3aN95L3BG+dFd1d+uCVzKhQy5/+I77CmWJ/o2Hygaay8yleXU1c1NH2IpqHOYUtriyWHf3iZwxjZvNxm/Ti/O5+22uC3nVFxhu1wvQc08ZZ+nb5/9oBF38ehJXaKPt7K6/v34Ltqai21rbXDXI3BRDa+9XDSGp8gzZZarV2ag9v3RBzSNfFjU/M+uVduNDTsMNY0GCOHDU3O4dazeb3zFXjg0rlPuiV75+m+kzV3v5qc/PHdJ2j6pI+wDP+U7mFPW/uw23ltZemTVTo+3+KNa1yyuwdmfI41j1/yvbG3oaLR3G3Sd1xdrNOUfAou3jYw0z860D9jr+9sqU1IIHve9W56/fIEU2fztvaqHQ213trhKauqjXVmr/kFxP1m7bdCE88Plpb1m840l/VNQz72QvvMPlc5z9fvKPt1xBtXv9yVZ9nGmxscXiDfwGcI4LQ9duBaG7Nxjw2aWMuArp7In2qxObTwKfr40/iy/j34zhqeN59qHuZqDBaysQWiL/PZsk4cyV13mvbwWw7phfEDC/O+fm9/ram+sspcXxs5hm9pHjufSujGRbKXaTPmBAPPfMm45bau15+jR/bbBx80mR7sCth94rfB6Q6sngJcuO1v4a7Lu157ad9GKIlypuEea9GDnXs0IytDmZ2Rka2cVv4jrIHmaFZ3O9OWlWX7gLuRH1mMjsxE8VrEH/XNRrErsh61R6PD3e2d7dDsb3Z38k15W/kFkrwmHk+PhWNKx3nLMhHkSl5ZLMvHWPGPfwRB9AKr2QoSUb4qSlB18X715zkqwRI0G3lvUOptugtcID+tsKQForrC+pqxS4X1dcof21bf4OQcbZ2Le6y53kKao3rxNWE9f1a+S3t2tiIu5yej2d/W12RozBwrLh7LbDT0NkUDi+HBQPj0xIlAoKHFFxAMPB8Vce+KKo28Rq0SHV3LUk6MNLv35DMrCzVNmbxBeCGCKzMtu20y8f+SVD4h31Sosky03Upl9YJxzh+L0ZFANLR4LOpYj452tne145E/wok2e6JX/xBX/vH8WaFQojdWlrhzuOXjs1Zn3cCkT4qWSmZeqX/B4tciE4HBmUBZwGxtMDaqnCpdllPVaIzdNw9ZqfDU30ppYDgw2B+A5JP5L8bj4tgWoy/t6WRRcO2P8uFDakiP2fMWaviyaOYFr94gE0nEsXysWligOuHRC2TiH0XSJ/4WqQcjE4GxmUAocKlG+jECgZHFwGX8vabVzf8f4KQSi8Gp6laIdgV0q8OzbmjyaWdnW1MQXZoJDb7ZaEdzVzMoNQiAGESUwszDAIzTDIqSxGFoxoRZ/vTKM8CfyZ9V/ZAPfzZ/Ds4tMHm0dSxCkOPaNpKlK8/KwGQVCdzqbPDn1HKuiT8WHUnStEQYZB2TC6WJ6spymNIjBV7JK5lSs1C5qDoRSYBUSlgH31LlM7X5O4o8eBxrX3MDwtOG1iZdZ/NjXsu0gBJohRVmlQNfwVfQmsReAdZEAahljqkMaxLHg/gT+BONkwxcgT0CH/5k/pQrcCpMUYiGtPqbDGvVgALfitYyTHyI7iP25WqsSqAlstCbcmZ3k0PcRZlgbs0KCrwb7lImBTqQCCawVEpMWHur0DRm3+9sVAOK6UQiqESr8NaEtY8Vu86AIjK3KRZhXNwqD34Oc38umLZM7/33+38/uOj7///Z9yMAAHqAUtN3Bsa/l9rSiKVxlONqqbKozYWfYMRMRkicEE2FhIs4TuWQJL0RDNwCPy0hP1CbGAVY9Mb6W+DZ2p14CIQoIBjqGKpe6lOONhDJTUFBXMgZYOPct8C7Ffmf2jR2ksQ72U7f6SBu5gywoW8x2Qhy1APl1CZGAQ4ksGGD8loGsjY0UQKXmhdvpBboCNglmiU2XUCieL2dF1bDaTacoykaTjgFAhquyoFkiSk0LZyooeM7gQDVIlmNOwCPlICNKQpatkhBhUQJpdLCVwFqWj3FQ8sWeajTWbJiLeRJQlRmsyh1YLRZtAzVNr0dAoCqYN6wXLhzQGL8LY6mvwSAd1698ly88s2Xfwa7FbVA/wsgBhQAgABfG3dQHs2o/066DhB0wWo68NIlpR8Rtqkj9flbwtMc3oZyWoIn3n+L86o5vA1V8ng6L4C9+Ax3YgMBHN8Er4rV97ZRXgdo2vF244hH35wAzlOM0Y1BABGNnNCZ4UFNPID7U9KeSCgiP5EiDnMizejpExlFzj9RIM2BE2MU8pwgViH7TAQQSqpgnDuJJAk2kHIaYDNnhs+sFsvBuaf5DXMbXT9uwvLIbk49b4mBNm3JsEV+85YtKUHWb5rT5ywap9WpUZtWo6q5Fot8W89a0m4OaXOK2Ywat2KaD3NdRi1S/+eloldCT0fn1K5q61Mpa6eaNrKMB6WMQqn83IfXmTNv1eIRiaKj7aOsikMmoxej+EfqsmjOpFHDLnneylGLQxT66vnHnh/n12VXDN1Hw6/bcNpctWo3vrwApZvfrdEDiP8IzgPkeiYUoQlzDvYWB0cnZ6uLq5t7+aRk5I6TIFGS5IqkSJWWXjqFDEqZVLJky5FrG7W8quQrUEijSLESWtsz0tErVVa9chUqValmUMNoh1omZjxSM4s69Ro0atKspTe1smrLpl2HTl262dg5OLm4eezMw6tHrz79BgzyGarXsBGjxqJtJvhNmjJtxqw58xYsWrJsxS4Bu61aE7THXvvsFxJ2wEERhxx2xFHHrIs6fuE/r+1vm6/8jhhtDCwnASDGR1h4SGhYwEGU1Y/Xffk5G4u9XgIAYtxyGpZ5y9sDdNbyP142W5DgAhoE7i3q0c5x2vm9v24aZuNohdcxqSEAz8up00My03HSwmqPa8bMecG3Tjzb+f9EelEtg2vpzPeiIEEBwSA8IEDBwAE9F5Z6vQIQjAnLGTgWLO+uZTL/qwGEAYOAQpg3TefgwBCQgBDzqukKDBAOoU3KVtqIbBXK9XpEAAujuudkZN724kIGmrtVaS38ZZLrS9/4fsKMQhN3yXK5gvSBvJ2Y9/Nydbcvb0bm58+e3FhmGfGLJ9u7axl1F1LQTbaCeyrbu7wFCsorFgV4qnh+GUrWtaczqkSBB96AEeKRB94k2SyLuyw3qwrxeg3P5FNR1Av1Gsq2/ds6dPPkBAAA)format("woff2"),url(/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(data:font/woff2;base64,d09GMgABAAAAAASAABAAAAAACNgAAAQlAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVEwAdBEICoRkg3gLIAABNgIkAzoEIAWEaAeBFAwHGzgHSJ4DbjN9OmtkIy0becnT/RjJ4uGfw99974/GXrhoTCqLok66NY3jTloEUdrmwCevn/Ls30xSpFlZ6UJMrW+fTNwAEdSuvSzCRANvEgnjUmw8swT+87+w7I/7qb8XlIB7NpGBjXiUjRX0b7ZpJ8+orRLzvGhWYCMdAU3BbRdPuqOeKAXuRKAWEEJJCIEQqNbLD9osq2kBviL8A4Fq4yLgAa+6DNaiAwcYOrqYHfgQcMgL3AFgG4fHHqREEUBSxUtmBfzNWxXADfviy8Kff7dA4QfFBQG6fnoX5Dh+gEEcIVRKtMIYhc/kCgsCDiarQY4QWpEKQoYTAAIJUcaHAHIXIN9BooBWhEAr0j7QzAkh1RnEWOY4wuRW8uX/f5o5W8gXcjriOUb9z/wjACRuWaWrpKIyLMQ/DUDN/TT+ErgHRpPBIRQrKCcZCvxBBCBEkSD4lKMjRblQlCvpQHPsSZE9R6K2o/vpXkGboKWbbltxx2feLT+a6KJb5293n7vTt53uwOzUO4gYc5eedhvS+a1bbdNuIiSA89cuGo25IZh6DXrJJIIUUibFUG0zt+ijO+cvnj8fjVm4cKlvN90DwzrdMmy8H9GjDyv90Xz2W10PVj3oTY7LLfwfmxMHoef+8n33R0duOxF3LPCYFXtymWNdcLBD3VF4S91+GWf8c9k7sZC6fPpnbENnCmayerBNki0ZbFUXiHV/wkxWklGmydCkaR5o0oZnlj3oSVdnZKjTITaXStOyWGYakzUgTSt1gvSs/otJL1FkzE/3e+aXvj7n+TOv9HkZ6evS4e3OXafCx8iqJfNGpQLM7rkt0ppRJ8N3gd1IjHLaROM0cLkhdf2NQjZ4bmjo2mBWKJ4CPA4IZXX9hFlPBnhxWhXzgBGQ88QeRD3j1/AD5a/JxMnL5gK5deaC2H7HvK98gngBbzfWLKD0g2ufeA7nMsQepBwDgpdhy90BzC+8DSCers8O6KKloYn0RCtKo9EM9LsAd7AgNBhFGEAsvl4K1LpCiCIF3IZHFUKvX5AqfUPBgkO+ovHpUNJtOJSN6hDWWxAigkCt9hbEXdaOHLvI6lM5gQA79LRYOpUsWBpKYu2klOQULGlGCwOzHIkSmYmZKBlQrlmCQ0mDv5SeiVyiemVqVJGyEDJhKemY1dLT0YsnpKch0UbKxExJTydIigQpkiUvYA3SVFDqFH2uNggh343VmPs2ycX0DIYwPYTigMak5AjS0ohI8zmoo4EJwypS4iVcDOuDuvRMgytHPa5LTjnoc1YiCcT0tBI3qjXxqqFomJf2PylAOHMDRp1HGBaDQCTiIC7iQSH4iEICRHMZkUlqk/KsOmVSGlOK7NIseRNZFp3NkbNaLateTmKScHGTAyu2WqQf6lD8rMNg1+lKTcpwkfvQ/7eRMwAA)format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAAbAAA8AAAAACLwAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABWAAAABgAAAAcABQABEdQT1MAAAFwAAAAHgAAAB5EdEx1R1NVQgAAAZAAAAAnAAAAKLj8uOpPUy8yAAABuAAAAFEAAABgGDBcS1NUQVQAAAIMAAAAPgAAAEzrJ8wpY21hcAAAAkwAAABRAAAAdAyHCodnYXNwAAACoAAAAAgAAAAIAAAAEGdseWYAAAKoAAAB6wAAAmCgFyn6aGVhZAAABJQAAAA2AAAANhSU8UNoaGVhAAAEzAAAAB8AAAAkAc0A/2htdHgAAATsAAAAHwAAADoe9gKVbG9jYQAABQwAAAAgAAAAIATdBZ9tYXhwAAAFLAAAABwAAAAgAIcCb25hbWUAAAVIAAABBwAAAmg1nlsfcG9zdAAABlAAAABwAAAAlNdzMTB42mNgZGBg4GGAAEYgZAWTjCAeAAG0ABkAAQAAAAoAHAAcAAFERkxUAAgABAAAAAD//wAAAAAAAHjaY2BkYGDgYlADQiYXN58QBqGcxJI8Bj4GEGABEf//g0gAWkkFVQB42mNgYYpi2sPAysDA1MUUwcDA4A2hGeMYjBgdgKIMDJwMUMDEzoAEvJyAxAIGXpaXzH/+XWFgYP7DqKPAwDj//nWgSjWmW0BZBQZWAB8jDeMAAAB42gXBsQ1AABQFwHufiI5CYQBDaVVIlBLLmckM7kT0CpPCop79uIPz3q4MojUrSFcvtVIfGlEZQfgB9IwGBAAAeNpVyEcBwkAQBdCXHnoVgJU44Y4pFIAFUAOJiS23ZOZ3lKhwVSlkr91xdlQp7dwMnr5FWb/rMQQW26v+h3xT+IRHGEIBCvNr9Wh0OUU7NxUUAAAAAAEAAf//AA942m0QNZQUMfQn2Zt1Gcdhd2Dt/DLJrOLu0OHu7u4uJf3D+odLhUOLu0MLJVQ7S3C4u+S7/w8EJgIgFz8XkgR+ACrH5V5xGaH4RHTSPY7q3KsCH+LnlWQLLrqAi4DBAsBM5HghBkBVqlopy6vSVDKZkiSvdenY5e3p6+k+R+qCMUKioe/Jp08j82bzGEUZ0wTV6s8K5AJOAgIQncPd2rNGBEVgCms/0U1oVCbUNAyTc8ehRP70eNfKsEI8cnjZzsfIj+5VuhVisUK3itvofhX1fmViCTwAQGBo9QuO4Y8QEZ4eADWJJJNtTlsMXdYkKdXCGbN0zSCU2UkrIemobtGGDYsWbcjNGcKd57ncc0c0DqybjfKz166d7d7pP9NZUrYXL7bLaMhkViox0TNTHYkbcVL09P/Tswlk6ATWj55Jxmz+vauh6/+2Tf1tO2huPj930E/KC2+LxbcFzooBNrPfoX4zGJ/+nfEFBdalCyu878DyeQbod2dQAUxGqNoNm6bDHQEqJfrnWzvmeQM+LJ7HXyPN3Xbz3DmcdM/pmR4B8WI9NR2Nqjw/B4DgOsmiM+QCEADVod7rC/euJNnDh4VnK0mgF8ITBkDielQzaAsXTEJ1o6fPyFpW7YzpJDG+fzydjvcfD98ArHSFeAAAAQAAAAI2BCpkDTZfDzz1AAMD6AAAAADb0qaaAAAAANva0PL5PP7UBJID/AABAAYAAgAAAAAAAHjaY2BkYGD+8+8KAwPLhp82f3NYJgFFUAEfAK0mBsoAeNpjimCIAmJlJCwOxR5ArIlEM0AxCBxiqAMA3bsHpgAAAAAaADsARgBRAG4AdgCoALAA5QEKAQoBCgEKARcBMHjaY2BkYGDgZ9zBkMewhYENzEMAZgYmAC0aAfh42oyQA25FUQBET20EtW27DWrbcfVtcx1dzV9V40adpLdmXiZzMnfmCSjlnhyycouATFa14SwaeTScTSEPhnOYJmM4l+7XbR71pA3n08ml4XL12585C0qpNpz/ds+sCuXFhitFcIwPD9d42SIsd+Pglgsscht2ZZIuPyHmGWFEfksQh5KweFhy4Jb7lNp0fsA6u2xjIcyysmsceNXaU8MrDSn14eaOc3WCaI9OaGWcYWlM19d16+u+9XX/1l9gW+nCv55q/NdnrEh+EgRf/4LejlEk0akSi/z3tzwkKHeqc4v2LBGR25UFUZPeL3/WhgM11LthmKclg2NGH4st+nj8qQkARipb8wB42mNgYgCD/6kMRkCKkQEd8AOxCsNJRiYGG0ZmRhZGVkY2RnYGZkYORk5GLkZuNsekotSyVPbSvEwDE0dXCO1qAeW7QfmWrOmJubmJYJ6BowGTcxBfYnJpSWpyfm6SXnJicSoPSMbYwAzMAQCg7RyY)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/jetbrains-mono-cyrillic-700-normal-BWTpRfYl.woff2)format("woff2"),url(/assets/jetbrains-mono-cyrillic-700-normal-CEoEElIJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/jetbrains-mono-greek-700-normal-C6CZE3T8.woff2)format("woff2"),url(/assets/jetbrains-mono-greek-700-normal-DEigVDxa.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(data:font/woff2;base64,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)format("woff2"),url(/assets/jetbrains-mono-vietnamese-700-normal-BDLVIk2r.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/jetbrains-mono-latin-ext-700-normal-CZipNAKV.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-ext-700-normal-CxPITLHs.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/jetbrains-mono-latin-700-normal-BYuf6tUa.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-700-normal-D3wTyLJW.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper:#141413;--surface:#1a1917;--inset:#2b2a27;--line:#3a3835;--line-active:#5c5853;--ink:#eae7df;--muted:#a9a39a;--subtle:#6b665f;--accent:#cc785c;--accent-soft:color-mix(in srgb, var(--accent) 14%, transparent);--focus:var(--accent);--info:#61aaf2;--diff-added:var(--success);--diff-removed:var(--error);--diff-added-bg:#9aca861a;--diff-removed-bg:#d475631a;--error:#d47563;--success:#9aca86;--warning:#e8c96b;--mono:"JetBrains Mono", "IBM Plex Mono", "SF Mono", Menlo, Consolas, ui-monospace, monospace;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--radius:8px;--radius-sm:6px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font:13px / 1.4 var(--sans);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}button:focus-visible,.input:focus-visible{outline:1px solid var(--focus);outline-offset:1px}.muted{color:var(--muted)}.error{color:var(--error)}.wordmark{font:700 14px var(--mono);letter-spacing:.02em;white-space:nowrap}.bracket{color:var(--accent)}.kicker{font:500 11px var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--muted);margin:0}.kicker.is-accent{color:var(--accent)}.app{grid-template-rows:1fr auto;grid-template-columns:minmax(220px,280px) 1fr;height:100%;display:grid}.rail{border-right:1px solid var(--line);flex-direction:column;grid-row:1;min-height:0;display:flex}.rail-head{justify-content:space-between;align-items:baseline;gap:8px;padding:14px 14px 10px;display:flex}.rail-body{flex:1;padding:4px 6px 12px;overflow-y:auto}.project-head:not(:first-child){margin-top:18px}.rail:focus{outline:none}.rail:focus-within .is-cursor{box-shadow:inset 0 0 0 1px var(--focus)}.rail-search{gap:4px;padding:0 14px 8px;font-size:12px;display:flex}.rail-search .caret{color:var(--accent);animation:1s step-end infinite blink}.rail-search .muted{margin-left:6px}@keyframes blink{50%{opacity:0}}.project-head{font:700 12px var(--mono);color:var(--muted);align-items:center;gap:8px;margin:6px 8px 4px;display:flex}.project-head .rule{background:var(--line);flex:1;height:1px}.row{border-radius:var(--radius-sm);text-align:left;align-items:center;gap:8px;width:100%;min-height:26px;padding:3px 8px;display:flex;position:relative}.row:hover{background:var(--accent-soft)}.row.is-selected{background:var(--inset)}.row.is-selected:before{content:"";background:var(--focus);border-radius:1px;width:2px;position:absolute;top:4px;bottom:4px;left:-6px}.tab-row{color:var(--muted);padding-left:26px}.tab-row.is-selected{color:var(--ink)}.glyph{width:1ch;font-family:var(--mono);text-align:center;flex:none}.row-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.chips{font:11px var(--mono);flex:none;gap:6px;display:flex}.tone-accent{color:var(--accent)}.tone-muted,.chip.muted{color:var(--subtle)}.tone-attention{color:var(--error)}.tone-warning{color:var(--warning)}.tone-success{color:var(--success)}.tone-ink{color:var(--ink)}.empty{font-family:var(--mono);padding:16px 10px;font-size:12px}.empty p{margin:0 0 4px}.workspace{flex-direction:column;grid-row:1;gap:6px;min-width:0;min-height:0;padding:8px 10px 8px 8px;display:flex}.tab-strip{font-family:var(--mono);align-items:center;gap:2px;min-width:0;font-size:12px;display:flex}.tab{border-radius:var(--radius-sm);color:var(--muted);white-space:nowrap;align-items:center;gap:6px;padding:4px 10px;display:flex}.tab:hover{background:var(--accent-soft)}.tab.is-active{color:var(--ink);background:var(--inset)}.tab-index{color:var(--subtle)}.tab.is-active .tab-index{color:var(--accent)}.tab-strip-title{color:var(--subtle);text-overflow:ellipsis;white-space:nowrap;font-family:var(--sans);margin-left:auto;padding-left:12px;overflow:hidden}.pane{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);flex:1;min-height:0;display:flex;overflow:hidden}.placeholder{font:12px var(--mono);color:var(--subtle);margin:auto}.term-pane{flex:1;min-width:0;display:flex;position:relative}.term-host{flex:1;min-width:0;padding:6px 4px 4px 8px}.term-host .xterm{height:100%}.term-notice{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--inset);font:11px var(--mono);color:var(--muted);padding:5px 10px;position:absolute;bottom:10px;right:10px}.term-notice.is-error{color:var(--error)}.status{border-top:1px solid var(--line);background:var(--surface);font:11px var(--mono);color:var(--muted);grid-column:1/-1;align-items:center;gap:8px;padding:4px 12px;display:flex}.status .spacer{flex:1}.usage{white-space:nowrap;gap:16px;display:flex;overflow:hidden}.tone-ok{color:var(--success)}.tone-warn{color:var(--warning)}.tone-crit{color:var(--error)}.dot{background:var(--subtle);border-radius:50%;width:6px;height:6px}.dot.state-open{background:var(--success)}.dot.state-retrying{background:var(--warning)}.link{color:var(--accent)}.link:hover{text-decoration:underline}.connect{place-items:center;height:100%;padding:24px;display:grid}.connect-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);flex-direction:column;gap:12px;width:min(460px,100%);padding:24px;display:flex}.connect-card p{margin:0}.input{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);width:100%;color:var(--ink);font:12px var(--mono);padding:8px 10px}.actions{justify-content:flex-end;align-items:center;gap:14px;display:flex}.button{border-radius:var(--radius-sm);background:var(--accent);color:var(--paper);font:600 12px var(--mono);padding:6px 14px}.button:active,.row:active,.tab:active{transform:scale(.97)}@media (prefers-reduced-motion:reduce){.button:active,.row:active,.tab:active{transform:none}}.machine-head{font:700 12px var(--mono);color:var(--ink);align-items:center;gap:8px;margin:18px 8px 4px;display:flex}.machine-head .rule{background:var(--line);flex:1;height:1px}.machine-head.is-stale{color:var(--subtle)}.row.in-machine{width:calc(100% - 12px);margin-left:12px}.project-head.in-machine{margin-left:20px}.row.is-stale .row-title,.row.is-stale .glyph,.project-head.is-stale{color:var(--subtle)}.remote-notice{font:12px / 1.5 var(--mono);text-align:left;flex-direction:column;gap:8px;padding:14px;display:flex}.overlay{z-index:20;background:#0a0a098c;place-items:start center;padding-top:12vh;display:grid;position:fixed;inset:0}.dialog{color:inherit;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);flex-direction:column;gap:12px;width:min(440px,100vw - 32px);max-height:76vh;margin:0;padding:18px 20px;display:flex;position:static;box-shadow:0 12px 40px #00000059}.dialog.is-wide{width:min(620px,100vw - 32px)}.dialog-body{flex-direction:column;gap:12px;min-height:0;display:flex;overflow-y:auto}.dialog-body p{margin:0}.field{flex-direction:column;gap:6px;display:flex}.textarea{resize:vertical;min-height:72px;line-height:1.45}select.input{appearance:none;cursor:pointer}.chips-row{flex-wrap:wrap;gap:6px;display:flex}.chip-button{border:1px solid var(--line);border-radius:var(--radius-sm);font:12px var(--mono);color:var(--muted);padding:4px 10px}.chip-button:hover{background:var(--accent-soft)}.chip-button.is-active{border-color:var(--accent);color:var(--ink);background:var(--accent-soft)}.choices{margin:0;padding:0;list-style:none}.button.is-danger{background:var(--error)}.button:disabled{opacity:.5;cursor:default}.menu{z-index:30;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);flex-direction:column;min-width:200px;padding:4px;display:flex;position:fixed;box-shadow:0 8px 28px #00000059}.menu-item{border-radius:var(--radius-sm);text-align:left;justify-content:space-between;gap:24px;padding:5px 10px;font-size:13px;display:flex}.menu-key{font:11px var(--mono);color:var(--subtle)}.menu-item.is-selected{background:var(--accent-soft)}.menu-item.is-danger{color:var(--error)}.toasts{z-index:40;flex-direction:column;gap:6px;display:flex;position:fixed;bottom:34px;right:14px}.toast{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--inset);max-width:420px;color:var(--ink);font:12px var(--mono);text-align:left;cursor:pointer;overflow-wrap:anywhere;padding:7px 12px}.toast.is-error{color:var(--error)}.inbox h2.kicker{margin-top:4px}.inbox-hints{color:var(--subtle)}.cards{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.inbox-card{flex-direction:column;align-items:stretch;gap:2px;padding:6px 10px}.inbox-line{align-items:baseline;gap:10px;min-width:0;display:flex}.inbox-badge,.inbox-age{font:11px var(--mono);flex:none}.inbox-age{color:var(--subtle)}.inbox-sub{font:11px var(--mono);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mono{font:12px var(--mono)}.inbox-chip:hover{color:var(--accent)}.new-task{width:auto;color:var(--muted);margin:4px 6px 10px}.tab-new{color:var(--subtle)}div.placeholder{flex-direction:column;align-items:center;gap:12px;display:flex}div.placeholder p{margin:0}.settings{grid-template-columns:140px 1fr;gap:18px;min-height:360px;display:grid}.settings-nav{border-right:1px solid var(--line);flex-direction:column;gap:2px;padding-right:10px;display:flex}.settings-tab{text-align:left;border-radius:var(--radius-sm);color:var(--muted);padding:5px 10px}.settings-tab:hover{background:var(--accent-soft)}.settings-tab.is-active{color:var(--ink);background:var(--inset)}.settings-body{flex-direction:column;gap:18px;max-height:60vh;display:flex;overflow-y:auto}.settings-group{flex-direction:column;gap:8px;display:flex}.settings-group p{margin:0;font-size:12px}.settings-rows{flex-direction:column;display:flex}.engine-row{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:6px 4px;display:flex}.engine-check input{accent-color:var(--accent)}.engine-main{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.engine-detail{text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.engine-actions{font:11px var(--mono);gap:10px;display:flex}.prefix-hud{z-index:40;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);min-width:220px;color:var(--ink);padding:8px 12px;font-size:12px;position:fixed;bottom:34px;left:12px;box-shadow:0 8px 24px #00000059}.prefix-hud-head{margin-bottom:2px}.prefix-hud-row{color:var(--muted);gap:12px;display:flex}.prefix-hud-key{min-width:3ch;color:var(--accent)}.dialog:focus{outline:none}.page{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);flex:1;min-height:0;padding:14px 18px;overflow-y:auto}.page:focus{outline:none}.page-title{font:700 14px var(--sans);margin:0 0 6px}.page-group{margin-top:12px}.page-group .project-head{margin-left:0}.wt-row{border-radius:var(--radius-sm);padding:5px 8px}.wt-row.is-cursor{background:var(--inset);box-shadow:inset 2px 0 0 var(--accent)}.wt-line{align-items:baseline;gap:8px;font-size:13px;display:flex}.wt-line.mono{justify-content:space-between;font-size:11px}.wt-branch{font-family:var(--mono)}.wt-path{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.page-hints{margin-top:16px;font-size:11px}.page-head{justify-content:space-between;align-items:baseline;display:flex}.update-versions b{margin-right:10px}.update-actions{flex-direction:column;margin:10px 0;display:flex}.update-action{border-radius:var(--radius-sm);text-align:left;gap:12px;padding:4px 8px;font-size:13px;display:flex}.update-action.is-cursor{background:var(--inset);box-shadow:inset 2px 0 0 var(--accent)}.update-label{min-width:14ch}.update-chip{color:var(--warning)}.release-notes h2{margin:14px 0 4px;font-size:13px}.release-notes pre,.whats-new-body pre{white-space:pre-wrap;font:12px / 1.5 var(--mono);color:var(--muted);margin:0}.whats-new-body{max-height:55vh;overflow-y:auto}.files{outline:none;flex-direction:column;grid-row:1;min-width:0;min-height:0;padding:10px 6px 8px 0;display:flex}.files:focus-within .files-tab.is-active{color:var(--accent)}.files-actions{font:11px var(--mono);justify-content:flex-end;gap:14px;padding:0 8px 8px;display:flex}.files-tabs{gap:4px;padding:0 4px 6px;display:flex}.files-tab{border-radius:var(--radius-sm);font:600 12px var(--mono);color:var(--muted);padding:3px 10px}.files-tab.is-active{color:var(--ink);background:var(--inset)}.files-scope{font:11px var(--mono);color:var(--muted);flex-wrap:wrap;gap:4px 10px;padding:0 8px 8px;display:flex}.files-body{flex:1;min-height:0;overflow-y:auto}.file-row{min-height:24px;font:12px var(--mono)}.files:not(:focus) .file-row.is-selected:before{background:var(--line-active)}.status-M{color:var(--warning)}.status-A,.status-untracked{color:var(--success)}.status-D{color:var(--error)}.status-R{color:var(--accent)}.placeholder-line{font:12px var(--mono);color:var(--subtle);margin:12px 10px}.tab-preview{cursor:default}.tab-close{color:var(--subtle);padding:0 2px}.tab-close:hover{color:var(--accent)}.term-slot{flex:1;min-width:0;display:flex}.term-slot.is-hidden{display:none}.preview{outline:none;flex-direction:column;flex:1;min-width:0;display:flex}.preview-body{min-height:0;font:12px / 1.5 var(--mono);flex:1;padding:6px 0;overflow:auto}.diff-row{white-space:pre;cursor:default;grid-template-columns:4ch 4ch 2ch 1fr;gap:0 8px;padding:0 12px;display:grid}.diff-row .gutter{color:var(--subtle);text-align:right}.diff-row .code{min-width:0}.diff-row.kind-add{background:var(--diff-added-bg)}.diff-row.kind-add .sign,.diff-row.kind-add .code{color:var(--diff-added)}.diff-row.kind-del{background:var(--diff-removed-bg)}.diff-row.kind-del .sign,.diff-row.kind-del .code{color:var(--diff-removed)}.diff-row.kind-hunk,.diff-row.kind-meta{color:var(--subtle)}.diff-row.kind-file{color:var(--ink);border-top:1px solid var(--line);margin-top:8px;padding-top:4px;font-weight:700}.diff-row.is-noted .sign{color:var(--accent)}.diff-row.is-noted{box-shadow:inset 2px 0 0 var(--accent)}.preview:focus .diff-row.is-cursor{background:var(--accent-soft)}.diff-row.is-cursor{background:var(--inset)}.preview-footer{border-top:1px solid var(--line);font:11px var(--mono);color:var(--muted);gap:10px;padding:5px 12px;display:flex}.preview-footer .spacer{flex:1}.pref-row,.pref-cycle,.pref-readonly{text-align:left;align-items:baseline;gap:10px;width:100%;padding:5px 4px;font-size:13px;display:flex}.pref-row{cursor:pointer}.pref-cycle:hover:not(:disabled){background:var(--accent-soft)}.pref-cycle .pref-label:after{content:" ›";color:var(--accent)}.pref-row input[type=checkbox]{accent-color:var(--accent);align-self:center}.pref-label{font-family:var(--mono);font-size:12px}.pref-hint{margin:0;font-size:11px}.pref-field{border:0;flex-direction:column;gap:6px;min-width:0;margin:0;padding:4px;display:flex}.pref-field legend{float:left;width:100%;margin-bottom:6px;padding:0}.pref-field .chips-row{clear:both}.pref-number{width:9ch;padding:3px 6px}.pref-readonly .pref-label{color:var(--muted)}.tier-row{border-bottom:1px solid var(--line);flex-direction:column;gap:3px;padding:8px 4px;display:flex}.tier-head{align-items:baseline;gap:12px;display:flex}.tier-head .link{margin-left:auto}.tier-editor{flex-direction:column;gap:8px;padding:8px 0 2px;display:flex}.hook-rows{font:12px var(--mono);gap:18px;padding:10px 4px;display:flex}.confirm-inline{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--inset);flex-direction:column;gap:6px;padding:8px 10px;display:flex}.confirm-inline p{margin:0}.tone-diff-added{color:var(--diff-added)}.tone-diff-removed{color:var(--diff-removed)}.task-mark{border-radius:2px;flex:none;align-self:stretch;width:3px;margin:2px 0}.tab-row.is-two-row{align-items:flex-start}.row-caption{font-size:11px;display:block}html[data-running-title=shimmer] .task-row.is-running .row-title{background:linear-gradient(90deg, var(--ink) 0%, var(--ink) 35%, var(--accent) 50%, var(--ink) 65%, var(--ink) 100%) 0 0 / 300% 100%;color:#0000;-webkit-background-clip:text;background-clip:text;animation:2.4s linear infinite shimmer}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.pane:focus-within{border-color:var(--focus)}html[data-working-border=flow] .pane.is-working{background:linear-gradient(var(--paper), var(--paper)) padding-box, linear-gradient(90deg, var(--line), var(--task-ink,var(--focus)), var(--line), var(--task-ink,var(--focus)), var(--line)) border-box;background-size:100% 100%,300% 100%;border-color:#0000;animation:3s linear infinite flow-border}@keyframes flow-border{0%{background-position:0 0,0 0}to{background-position:0 0,-200% 0}}.tab-strip.is-tabs-hidden .tab:not(.tab-new):not(.tab-preview){display:none}@media (prefers-reduced-motion:reduce){html[data-running-title=shimmer] .task-row.is-running .row-title{color:inherit;background:0 0;animation:none}html[data-working-border=flow] .pane.is-working{animation:none}}.app{grid-template-columns:var(--rail-w,minmax(220px, 280px)) 1fr minmax(240px, 300px)}.app.is-zen{grid-template-columns:var(--rail-w,minmax(220px, 280px)) 1fr}.app.is-narrow{grid-template-columns:minmax(0,1fr)}.app.narrow-content .rail,.app.narrow-sidebar .workspace{display:none}.narrow-back{align-self:flex-start;padding:2px 6px;font-size:12px;font-weight:700}.recent-row .glyph{font-weight:700}.rail{position:relative}.rail-grip{cursor:col-resize;z-index:5;touch-action:none;width:6px;position:absolute;top:0;bottom:0;right:-3px}.rail-grip:hover,.rail-grip:active{background:var(--accent-soft)}.rail-fold-btn{color:var(--muted);z-index:6;padding:0 4px;font-weight:700;position:absolute;bottom:2px;right:8px}.rail-fold-btn:hover{color:var(--accent)}.rail.is-folded{align-items:center;overflow:hidden}.rail-fold-btn:only-child,.rail.is-folded .rail-fold-btn{right:50%;transform:translate(50%)}.rail-folded-list{flex:1;width:100%;min-height:0;padding:10px 0 24px;overflow-y:auto}.rail-folded-group{flex-direction:column;align-items:center;display:flex}.rail-folded-rule{border-top:1px solid var(--line);width:60%;margin:6px 0}.rail-folded-cell{width:100%;font:13px var(--mono);text-align:center;padding:3px 0}.rail-folded-list.is-initials .rail-folded-cell{justify-content:center;gap:8px;display:flex}.rail-folded-initials{color:var(--muted)}.rail-folded-list.is-hairline .rail-folded-cell{padding:3px 0;line-height:1}.rail-folded-cell.is-selected{background:var(--inset);box-shadow:inset 2px 0 0 var(--accent)}.hint-bar{white-space:nowrap;color:var(--muted);flex-shrink:0;align-items:baseline;font-size:11px;display:inline-flex}.hint-sep{margin:0 6px}.hint-bar .link:disabled{opacity:.5;cursor:default}.shortcut-badge{border:1px solid var(--accent);border-radius:var(--radius-sm);background:var(--surface);color:var(--accent);cursor:pointer;z-index:8;padding:1px 5px;font-size:10px;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.row.new-task,.inbox-chip,.badge-host,.hint-bar>span{position:relative}.rail-head .shortcut-badge{top:100%;right:0;transform:none}.split{flex:1;min-width:0;position:relative}.split-leaf{box-sizing:border-box;min-width:0;min-height:0;display:flex;position:absolute}.split.is-box .split-leaf{border:1px solid var(--line);border-radius:var(--radius-sm)}.split.is-line .split-leaf.has-left{border-left:1px solid var(--line)}.split.is-line .split-leaf.has-top{border-top:1px solid var(--line)}.split.is-rail .split-leaf{border-left:2px solid var(--line)}.split.is-rail .split-leaf.has-top{--mt:6px}.split.is-rule .split-leaf{border-top:1px solid var(--line)}.split.is-rule .split-leaf.has-left{--ml:8px}.split.is-rule .split-name{top:-8px}.split.is-box .split-leaf.is-active,.split.is-line .split-leaf.is-active.has-left,.split.is-line .split-leaf.is-active.has-top,.split.is-rail .split-leaf.is-active,.split.is-rule .split-leaf.is-active{border-color:var(--accent)}.split-name{background:var(--paper);color:var(--subtle);font:10px var(--mono);pointer-events:none;z-index:3;padding:0 4px;position:absolute;top:2px;right:8px}.split-leaf.is-active .split-name{color:var(--accent)}.term-scrolled{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--inset);z-index:4;gap:12px;padding:4px 10px;font-size:11px;display:flex;position:absolute;bottom:10px;right:10px}.tone-info{color:var(--accent)}.term-search{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);font:12px var(--mono);z-index:5;align-items:center;gap:10px;padding:4px 10px;display:flex;position:absolute;bottom:8px;left:8px;right:8px}.term-search-input{min-width:0;color:var(--ink);font:inherit;background:0 0;border:0;outline:none;flex:1}.prefix-guide{z-index:40;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);width:min(560px,100vw - 24px);max-height:60vh;padding:8px 12px;font-size:12px;position:fixed;bottom:76px;left:12px;overflow-y:auto;box-shadow:0 8px 24px #00000059}.prefix-guide-head{justify-content:space-between;gap:16px;margin-bottom:6px;display:flex}.prefix-guide-body{columns:2 220px;column-gap:20px}.prefix-guide-group{break-inside:avoid;margin-bottom:8px}.prefix-guide-row{width:100%;color:var(--ink);text-align:left;gap:10px;padding:1px 0;display:flex}.prefix-guide-row:hover:not(:disabled){background:var(--accent-soft)}.prefix-guide-row:disabled{cursor:default}.palette-list{margin:8px 0;overflow-y:auto}.palette-row{border-radius:var(--radius-sm);width:100%;color:var(--ink);font:12px var(--mono);text-align:left;white-space:pre;justify-content:space-between;gap:16px;padding:3px 6px;display:flex}.palette-row.is-selected{background:var(--accent-soft)}.palette-chord{color:var(--accent)}.help-head{justify-content:space-between;gap:16px;display:flex}.help-corner{flex-direction:column;align-items:flex-end;font-size:11px;display:flex}.help-scroll{max-height:52vh;margin-top:8px;overflow-y:auto}.help-section{margin-bottom:10px}.help-title{font:700 12px var(--sans);color:var(--accent);margin:0 0 4px}.help-row{gap:12px;padding:1px 0;font-size:12px;display:flex}.help-cap{min-width:14ch;color:var(--ink)}.help-desc{flex:1}.pane-hint{white-space:nowrap;text-overflow:ellipsis;margin:0;padding:4px 14px;font-size:11px;overflow:hidden}.app-shell{flex-direction:column;height:100%;display:flex}.app-shell>.app{flex:1;height:auto;min-height:0}.daemon-banner{border-bottom:1px solid var(--warning);background:var(--inset);color:var(--warning);flex-wrap:wrap;align-items:baseline;gap:12px;padding:4px 14px;font-size:12px;display:flex}.daemon-banner span{color:var(--muted)}.taskops-hint{font:11px var(--mono);color:var(--subtle)}.taskops-path{font:12px var(--mono);word-break:break-all}.brief{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);max-height:38vh;font:12px / 1.5 var(--mono);white-space:pre-wrap;word-break:break-word;margin:0;padding:10px 12px;overflow:auto}.notes{flex-direction:column;gap:8px;max-height:44vh;display:flex;overflow-y:auto}.note{border-radius:var(--radius-sm);text-align:left;flex-direction:column;gap:2px;width:100%;padding:6px 10px;display:flex}.note.is-selected,.note:focus-visible{background:var(--accent-soft);outline:none}.note-head{font:11px var(--mono);color:var(--accent);white-space:pre}.note-text{color:var(--ink);white-space:pre-wrap;word-break:break-word}.note-confirm{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);flex-direction:column;gap:8px;padding:10px 12px;display:flex}.note-confirm p{margin:0}.row.is-moving,.project-head.is-moving{background:var(--accent-soft);box-shadow:inset 2px 0 0 var(--accent)}.project-head.is-moving:after{content:"move";font:500 10px var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--accent)}.taskops-body{white-space:pre-line}.suggest{position:relative}.suggest-list{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--inset);max-height:188px;font:12px var(--mono);margin:4px 0 0;padding:2px;list-style:none;overflow-y:auto}.suggest-row{text-align:left;width:100%;font:inherit;border-radius:var(--radius-sm);color:var(--muted);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;padding:3px 8px;display:block;overflow:hidden}.suggest-row.is-cursor{background:var(--accent-soft);color:var(--ink)}.suggest-row.is-accent{color:var(--accent)}.newtask-legend{font:11px var(--mono);color:var(--subtle);margin:8px 0 0}.dialog-body+div>.dialog-body{margin-top:14px}.rail-nav{flex-direction:column;padding:0 6px 8px;display:flex}.rail-nav-row{border-radius:var(--radius-sm);color:var(--muted);text-align:left;align-items:center;padding:3px 8px;display:flex}.rail-nav-row:hover{background:var(--inset)}.rail-nav-row.is-active{color:var(--ink);font-weight:700}.mono{font-family:var(--mono)}.pg-top{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.pg-top .page-title{margin:0}.pg-hint{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:11px;overflow:hidden}.pg-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.kb-page{flex-direction:column;gap:8px;display:flex;overflow:hidden}.kb-project{align-items:baseline;gap:12px;min-width:0;display:flex}.kb-project-name{color:var(--accent);white-space:nowrap;font-weight:700}.kb-project-path{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:11px;overflow:hidden}.kb-empty{margin-left:auto;font-size:12px}.kb-board{flex:1;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;min-height:0;display:grid}.kb-single{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex}.kb-strip{gap:16px;font-size:12px;display:flex}.kb-strip .is-active{color:var(--accent);font-weight:700}.kb-lane{border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;min-height:0;padding:8px;display:flex}.kb-single .kb-lane{flex:1}.kb-lane-head{font:700 12px var(--mono);color:var(--muted);justify-content:space-between;gap:8px;margin:0 0 8px;display:flex}.kb-lane-in_progress .kb-lane-head{color:var(--accent)}.kb-lane-parked .kb-lane-head{color:var(--warning)}.kb-lane-done .kb-lane-head{color:var(--success)}.kb-cards{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex;overflow-y:auto}.kb-cards p{margin:0;font-size:11px}.kb-card{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;flex-direction:column;flex:none;gap:4px;padding:8px 10px;display:flex}.kb-card:hover{border-color:var(--line-active)}.kb-card.is-selected{border-color:var(--accent)}.kb-card.is-attention:not(.is-selected){border-color:var(--warning)}.kb-card.is-done .kb-card-title{color:var(--muted)}.kb-card-head{justify-content:space-between;gap:8px;display:flex}.kb-card-title{overflow-wrap:anywhere;min-width:0;font-weight:700}.kb-card-body{white-space:pre-wrap;overflow-wrap:anywhere;height:2.8em;font-size:12px;overflow:hidden}.kb-card-foot{justify-content:space-between;gap:8px;font-size:11px;display:flex}.dialog.kb-drawer{width:min(680px,100vw - 32px)}.kb-drawer-head{align-items:baseline;gap:14px;display:flex}.kb-label{align-items:baseline;gap:10px;display:flex}.kb-hint{text-transform:none;letter-spacing:0}.kb-body{font-family:var(--mono);min-height:160px}.kb-group{border-radius:var(--radius-sm);border:1px solid #0000;padding:4px}.kb-group:focus{border-color:var(--accent);outline:none}.kb-places{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.kb-place{font:12px var(--mono);color:var(--muted);white-space:pre}.kb-place.is-active{color:var(--accent);font-weight:700}.kb-legend{font-size:11px}.kb-section{flex-direction:column;gap:4px;display:flex}.kb-section p{margin:0}.kb-event{gap:8px;font-size:12px;display:flex}.kb-age{text-align:right;min-width:4ch}.pg-list{flex-direction:column;gap:6px;margin-top:10px;display:flex}.pg-row{border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;align-items:baseline;gap:10px;min-width:0;padding:7px 10px;display:flex}.pg-row.is-cursor{border-color:var(--accent);background:var(--inset)}.pg-row .pg-name{white-space:nowrap;font-weight:700}.pg-row.is-off .pg-name{color:var(--muted)}.pg-row .pg-grow{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.pg-detail{border:1px solid var(--line);border-radius:var(--radius);gap:24px;margin-top:10px;padding:12px;display:flex}.pg-detail>div{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.pg-detail p,.pg-detail h2{margin:0}.pg-prompt{white-space:pre-wrap;overflow-wrap:anywhere}.pg-run{font-size:12px}.pg-response{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px}.pg-notice{margin:8px 0 0;font-size:12px}.pg-cron{gap:18px;padding:6px 4px;display:flex}.pg-cron button{border-radius:var(--radius-sm);text-align:left;min-width:5ch;font:13px var(--mono);border:1px solid #0000;flex-direction:column;gap:2px;padding:4px 6px;display:flex}.pg-cron button span{color:var(--subtle);font-size:10px}.pg-cron button.is-active{border-color:var(--accent);color:var(--accent);font-weight:700}.pg-cron:focus{outline:none}.pg-issue-line{align-items:baseline;gap:10px;min-width:0;display:flex}.pg-issue-line .pg-num{color:var(--muted);white-space:nowrap}.pg-issue-sub{color:var(--muted);gap:10px;padding-left:4ch;font-size:12px;display:flex}.pg-issue-sub .pg-grow{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.pg-issue{border-radius:var(--radius-sm);cursor:pointer;border-left:2px solid #0000;flex-direction:column;gap:2px;padding:6px 10px;display:flex}.pg-issue.is-cursor{background:var(--inset);border-left-color:var(--accent)}.mods-page{flex-direction:column;gap:12px;display:flex}.mods-empty p{margin:4px 0}.mod-pane{border:1px solid var(--line);border-radius:var(--radius);font-family:var(--mono);padding:8px 12px 12px}.mod-pane-title{color:var(--ink);margin-bottom:8px;font-size:12px}.mod-box{align-items:flex-start;min-width:0;display:flex}.mod-box.is-framed{border:1px solid var(--line);border-radius:var(--radius-sm)}.mod-text{color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere}.mod-text.is-bold{font-weight:700}.mod-button{border-radius:var(--radius-sm);font:inherit;cursor:pointer;background:0 0;border:1px solid;padding:2px 10px;font-weight:700}.mod-button:hover,.mod-button.is-cursor{background:color-mix(in srgb, currentcolor 18%, transparent)}.mod-text.tone-info,.mod-button.tone-info{color:var(--info)}.mod-text.tone-success,.mod-button.tone-success{color:var(--success)}.mod-text.tone-warning,.mod-button.tone-warning{color:var(--warning)}.mod-text.tone-error,.mod-button.tone-error{color:var(--error)}.mod-text.tone-muted,.mod-button.tone-muted{color:var(--muted)}.mod-field{align-self:stretch;min-width:0;max-width:40em;display:flex}.mod-box.is-row>.mod-field{flex:12em;align-self:center}.mod-field .input{width:100%;font-family:var(--mono)}.xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;inset:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;inset:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre;font-family:monospace}.xterm .xterm-accessibility-tree>div{transform-origin:0;width:fit-content}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;z-index:11;background:0 0;transition:opacity .1s linear}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{display:none;position:absolute}.xterm .xterm-scrollable-element>.shadow.top{width:100%;height:3px;box-shadow:var(--vscode-scrollbar-shadow,#000) 0 6px 6px -6px inset;display:block;top:0;left:3px}.xterm .xterm-scrollable-element>.shadow.left{width:3px;height:100%;box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset;display:block;top:3px;left:0}.xterm .xterm-scrollable-element>.shadow.top-left-corner{width:3px;height:3px;display:block;top:0;left:0}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset}.welcome{max-width:72ch;font:12px / 1.5 var(--mono);flex-direction:column;gap:10px;margin:0 auto;padding:28px 20px;display:flex;overflow-y:auto}.welcome p,.welcome dl,.welcome dd{margin:0}.welcome-title{font:600 14px var(--mono);color:var(--accent);margin:0}.welcome-steps{flex-direction:column;gap:2px;padding-top:6px;display:flex}.welcome-step{gap:14px;display:flex}.welcome-cap{color:var(--accent);flex:0 0 8ch}.welcome-env,.welcome-start{flex-direction:column;gap:6px;padding-top:6px;display:flex}.welcome-start .button{align-self:flex-start}.welcome-fix{flex-direction:column;gap:2px;display:flex}.welcome-docs{opacity:.7;padding-top:6px}
|