[{"data":1,"prerenderedAt":680},["ShallowReactive",2],{"navigation_en":3,"-":153},{"gettingStarted":4,"guides":41,"cli":87,"configuration":123},[5],{"title":6,"icon":7,"path":8,"stem":9,"children":10,"page":7},"Getting Started",false,"\u002Fdocs\u002Fgetting-started","docs\u002Fgetting-started",[11,16,21,26,31,36],{"title":12,"path":13,"stem":14,"icon":15},"Introduction","\u002Fdocs\u002Fgetting-started\u002Fintroduction","docs\u002Fgetting-started\u002F01.introduction","i-lucide-house",{"title":17,"path":18,"stem":19,"icon":20},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002Fgetting-started\u002F02.installation","i-lucide-download",{"title":22,"path":23,"stem":24,"icon":25},"Quick Start","\u002Fdocs\u002Fgetting-started\u002Fquick-start","docs\u002Fgetting-started\u002F03.quick-start","i-lucide-zap",{"title":27,"path":28,"stem":29,"icon":30},"How It Works","\u002Fdocs\u002Fgetting-started\u002Fhow-it-works","docs\u002Fgetting-started\u002F04.how-it-works","i-lucide-workflow",{"title":32,"path":33,"stem":34,"icon":35},"Refs","\u002Fdocs\u002Fgetting-started\u002Frefs","docs\u002Fgetting-started\u002F05.refs","i-lucide-git-branch",{"title":37,"path":38,"stem":39,"icon":40},"Workspaces & Worktrees","\u002Fdocs\u002Fgetting-started\u002Fworkspaces","docs\u002Fgetting-started\u002F06.workspaces","i-lucide-folder-tree",[42],{"title":43,"icon":7,"path":44,"stem":45,"children":46,"page":7},"Guides","\u002Fdocs\u002Fguides","docs\u002Fguides",[47,52,57,62,67,72,77,82],{"title":48,"path":49,"stem":50,"icon":51},"Review a Pull Request","\u002Fdocs\u002Fguides\u002Freview-a-pull-request","docs\u002Fguides\u002F01.review-a-pull-request","i-lucide-git-pull-request",{"title":53,"path":54,"stem":55,"icon":56},"Run Dev Servers in Parallel","\u002Fdocs\u002Fguides\u002Frun-dev-servers-in-parallel","docs\u002Fguides\u002F02.run-dev-servers-in-parallel","i-lucide-plug",{"title":58,"path":59,"stem":60,"icon":61},"Seed Local Files","\u002Fdocs\u002Fguides\u002Fseed-local-files","docs\u002Fguides\u002F03.seed-local-files","i-lucide-sprout",{"title":63,"path":64,"stem":65,"icon":66},"Refresh a Workspace","\u002Fdocs\u002Fguides\u002Frefresh-a-workspace","docs\u002Fguides\u002F04.refresh-a-workspace","i-lucide-refresh-cw",{"title":68,"path":69,"stem":70,"icon":71},"Clean Up Workspaces","\u002Fdocs\u002Fguides\u002Fclean-up-workspaces","docs\u002Fguides\u002F05.clean-up-workspaces","i-lucide-trash-2",{"title":73,"path":74,"stem":75,"icon":76},"Script with uxd","\u002Fdocs\u002Fguides\u002Fscript-with-uxd","docs\u002Fguides\u002F06.script-with-uxd","i-lucide-braces",{"title":78,"path":79,"stem":80,"icon":81},"Install Shell Completions","\u002Fdocs\u002Fguides\u002Fshell-completions","docs\u002Fguides\u002F07.shell-completions","i-lucide-keyboard",{"title":83,"path":84,"stem":85,"icon":86},"Troubleshooting","\u002Fdocs\u002Fguides\u002Ftroubleshooting","docs\u002Fguides\u002F08.troubleshooting","i-lucide-stethoscope",[88],{"title":89,"icon":7,"path":90,"stem":91,"children":92,"page":7},"CLI Reference","\u002Fdocs\u002Fcli","docs\u002Fcli",[93,98,103,108,113,118],{"title":94,"path":95,"stem":96,"icon":97},"Command Grammar","\u002Fdocs\u002Fcli\u002Foverview","docs\u002Fcli\u002F01.overview","i-lucide-terminal",{"title":99,"path":100,"stem":101,"icon":102},"Workspace Verbs","\u002Fdocs\u002Fcli\u002Fworkspace-verbs","docs\u002Fcli\u002F02.workspace-verbs","i-lucide-folder-git-2",{"title":104,"path":105,"stem":106,"icon":107},"Project Verbs","\u002Fdocs\u002Fcli\u002Fproject-verbs","docs\u002Fcli\u002F03.project-verbs","i-lucide-boxes",{"title":109,"path":110,"stem":111,"icon":112},"Top-Level Verbs","\u002Fdocs\u002Fcli\u002Ftop-level-verbs","docs\u002Fcli\u002F04.top-level-verbs","i-lucide-wrench",{"title":114,"path":115,"stem":116,"icon":117},"Global Flags","\u002Fdocs\u002Fcli\u002Fglobal-flags","docs\u002Fcli\u002F05.global-flags","i-lucide-flag",{"title":119,"path":120,"stem":121,"icon":122},"Exit Codes","\u002Fdocs\u002Fcli\u002Fexit-codes","docs\u002Fcli\u002F06.exit-codes","i-lucide-circle-alert",[124],{"title":125,"icon":7,"path":126,"stem":127,"children":128,"page":7},"Configuration","\u002Fdocs\u002Fconfiguration","docs\u002Fconfiguration",[129,134,139,144,148],{"title":130,"path":131,"stem":132,"icon":133},"Overview","\u002Fdocs\u002Fconfiguration\u002Foverview","docs\u002Fconfiguration\u002F01.overview","i-lucide-settings",{"title":135,"path":136,"stem":137,"icon":138},"Project File","\u002Fdocs\u002Fconfiguration\u002Fproject-file","docs\u002Fconfiguration\u002F02.project-file","i-lucide-file-code",{"title":140,"path":141,"stem":142,"icon":143},"Commands & Hooks","\u002Fdocs\u002Fconfiguration\u002Fcommands-and-hooks","docs\u002Fconfiguration\u002F03.commands-and-hooks","i-lucide-play",{"title":145,"path":146,"stem":147,"icon":76},"Environment & Templates","\u002Fdocs\u002Fconfiguration\u002Fenvironment-and-templates","docs\u002Fconfiguration\u002F04.environment-and-templates",{"title":149,"path":150,"stem":151,"icon":152},"Editors","\u002Fdocs\u002Fconfiguration\u002Feditors","docs\u002Fconfiguration\u002F05.editors","i-lucide-app-window",{"id":154,"title":155,"body":156,"description":671,"extension":672,"meta":673,"navigation":7,"path":674,"seo":675,"stem":678,"__hash__":679},"landing\u002Findex.md","uxd",{"type":157,"value":158,"toc":669},"minimark",[159,262,318,429,522,592,641,665],[160,161,164,225,229,237,240],"gradient-page-hero",{":ui":162,"orientation":163},"{\"description\":\"text-toned\"}","horizontal",[165,166,168],"browser-frame",{"title":167},"Terminal",[169,170,175],"pre",{"className":171,"code":172,"language":173,"meta":174,"style":174},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","uxd my-project 42 code\nuxd my-project 42 run dev\nuxd my-project clean --merged\n","bash","",[176,177,178,197,212],"code",{"__ignoreMap":174},[179,180,183,186,190,194],"span",{"class":181,"line":182},"line",1,[179,184,155],{"class":185},"szw1H",[179,187,189],{"class":188},"semJd"," my-project",[179,191,193],{"class":192},"ssYy9"," 42",[179,195,196],{"class":188}," code\n",[179,198,200,202,204,206,209],{"class":181,"line":199},2,[179,201,155],{"class":185},[179,203,189],{"class":188},[179,205,193],{"class":192},[179,207,208],{"class":188}," run",[179,210,211],{"class":188}," dev\n",[179,213,215,217,219,222],{"class":181,"line":214},3,[179,216,155],{"class":185},[179,218,189],{"class":188},[179,220,221],{"class":188}," clean",[179,223,224],{"class":192}," --merged\n",[226,227,228],"template",{"v-slot:headline":174},"unpack · execute · debug",[226,230,231,232],{"v-slot:title":174},"Any git ref, running locally in ",[179,233,236],{"className":234},[235],"text-primary","one command",[226,238,239],{"v-slot:description":174},"uxd turns a PR number, a branch, a commit, a URL, or a path into an isolated git worktree — dependencies installed, ports allocated, dev server up.",[226,241,242,253],{"v-slot:links":174},[243,244,252],"u-button",{"className":245,"color":249,"size":250,"to":8,"trailing-icon":251},[246,247,248],"w-full","justify-center","sm:w-auto","primary","xl","i-lucide-arrow-right","Get started",[243,254,261],{"className":255,"color":256,"size":250,"to":257,"target":258,"variant":259,"icon":260},[246,247,248],"neutral","https:\u002F\u002Fgithub.com\u002Fuxfront-com\u002Fuxd","_blank","outline","i-lucide-github","Star on GitHub",[263,264,268,271,274],"u-page-section",{"className":265},[266,267],"border-t","border-default",[226,269,270],{"v-slot:title":174},"Every command is the same three steps",[226,272,273],{"v-slot:description":174},"One pipeline behind every verb. Learn it once and the whole CLI is predictable.",[226,275,276,290,302],{"v-slot:features":174},[277,278,280,287],"u-page-feature",{"as":279,"icon":35},"li",[226,281,282,286],{"v-slot:title":174},[179,283,285],{"className":284},[235],"resolve"," the ref",[226,288,289],{"v-slot:description":174},"A PR number, a branch, a 40-char SHA, a URL, or a local path becomes one concrete git target. First match wins.",[277,291,292,299],{"as":279,"icon":40},[226,293,294,298],{"v-slot:title":174},[179,295,297],{"className":296},[235],"materialize"," the workspace",[226,300,301],{"v-slot:description":174},"A worktree exists, with dependencies installed, seed files copied, and ports allocated. Idempotent — and cheap when it already exists.",[277,303,304,311],{"as":279,"icon":143},[226,305,306,310],{"v-slot:title":174},[179,307,309],{"className":308},[235],"act"," on it",[226,312,313,314,317],{"v-slot:description":174},"Open an editor, run a configured command, exec, drop into a shell, diff, or sync. ",[176,315,316],{},"checkout"," is this pipeline with a no-op act step.",[263,319,321,395,402,405],{"className":320,"orientation":163},[266,267],[165,322,324],{"title":323},"Six ways to name the same thing",[169,325,327],{"className":171,"code":326,"language":173,"meta":174,"style":174},"uxd my-project 42            # pull request\nuxd my-project feat\u002Flogin    # branch\nuxd my-project 1a2b3c…       # 40-char SHA\nuxd my-project - shell       # last used ref\nuxd …\u002Fpull\u002F42 code           # straight from a URL\n",[176,328,329,341,353,365,381],{"__ignoreMap":174},[179,330,331,333,335,337],{"class":181,"line":182},[179,332,155],{"class":185},[179,334,189],{"class":188},[179,336,193],{"class":192},[179,338,340],{"class":339},"sq92B","            # pull request\n",[179,342,343,345,347,350],{"class":181,"line":199},[179,344,155],{"class":185},[179,346,189],{"class":188},[179,348,349],{"class":188}," feat\u002Flogin",[179,351,352],{"class":339},"    # branch\n",[179,354,355,357,359,362],{"class":181,"line":214},[179,356,155],{"class":185},[179,358,189],{"class":188},[179,360,361],{"class":188}," 1a2b3c…",[179,363,364],{"class":339},"       # 40-char SHA\n",[179,366,368,370,372,375,378],{"class":181,"line":367},4,[179,369,155],{"class":185},[179,371,189],{"class":188},[179,373,374],{"class":188}," -",[179,376,377],{"class":188}," shell",[179,379,380],{"class":339},"       # last used ref\n",[179,382,384,386,389,392],{"class":181,"line":383},5,[179,385,155],{"class":185},[179,387,388],{"class":188}," …\u002Fpull\u002F42",[179,390,391],{"class":188}," code",[179,393,394],{"class":339},"           # straight from a URL\n",[226,396,397,398],{"v-slot:title":174},"Any ref ",[179,399,401],{"className":400},[235],"you can name",[226,403,404],{"v-slot:description":174},"If you can point at it, uxd can run it. No cloning, no stashing, no \"let me finish what I'm doing first\".",[226,406,407,420],{"v-slot:features":174},[277,408,410,413],{"as":279,"icon":409},"i-lucide-list-tree",[226,411,412],{"v-slot:title":174},"Six kinds of ref",[226,414,415,416,419],{"v-slot:description":174},"PR numbers, branches, SHAs, GitHub URLs, local paths, and ",[176,417,418],{},"-"," for the last ref you used.",[277,421,423,426],{"as":279,"icon":422},"i-lucide-link",[226,424,425],{"v-slot:title":174},"Paste the URL",[226,427,428],{"v-slot:description":174},"A GitHub PR or tree URL carries the project and the ref, so one argument is the whole command.",[263,430,433,486,493,496],{"className":431,"orientation":163,":reverse":432},[266,267],"true",[165,434,436],{"title":435},"~\u002F.config\u002Fuxd\u002Fprojects\u002Facme-web.toml",[169,437,441],{"className":438,"code":439,"language":440,"meta":174,"style":174},"language-toml shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","[ports]\ncount = 1\n\n[env]\nPORT = \"{port}\"\n","toml",[176,442,443,455,463,469,478],{"__ignoreMap":174},[179,444,445,449,452],{"class":181,"line":182},[179,446,448],{"class":447},"s7iLA","[",[179,450,451],{"class":185},"ports",[179,453,454],{"class":447},"]\n",[179,456,457,460],{"class":181,"line":199},[179,458,459],{"class":447},"count = ",[179,461,462],{"class":192},"1\n",[179,464,465],{"class":181,"line":214},[179,466,468],{"emptyLinePlaceholder":467},true,"\n",[179,470,471,473,476],{"class":181,"line":367},[179,472,448],{"class":447},[179,474,475],{"class":185},"env",[179,477,454],{"class":447},[179,479,480,483],{"class":181,"line":383},[179,481,482],{"class":447},"PORT = ",[179,484,485],{"class":188},"\"{port}\"\n",[226,487,488,489],{"v-slot:title":174},"Isolated ",[179,490,492],{"className":491},[235],"by construction",[226,494,495],{"v-slot:description":174},"Three branches can run at once without fighting over a port or a node_modules.",[226,497,498,510],{"v-slot:features":174},[277,499,500,503],{"as":279,"icon":56},[226,501,502],{"v-slot:title":174},"A port of its own",[226,504,505,506,509],{"v-slot:description":174},"uxd allocates free ports, exported as ",[176,507,508],{},"$UXD_PORT"," and templated into your commands.",[277,511,513,516],{"as":279,"icon":512},"i-lucide-package-check",[226,514,515],{"v-slot:title":174},"Setup that remembers",[226,517,518,521],{"v-slot:description":174},[176,519,520],{},"cache_key"," globs mean installs rerun only when the lockfile actually moves.",[263,523,525,532,535],{"className":524},[266,267],[226,526,527,528],{"v-slot:title":174},"From open to ",[179,529,531],{"className":530},[235],"disposed",[226,533,534],{"v-slot:description":174},"A workspace has a lifespan. uxd covers all of it, then cleans up after itself.",[226,536,537,563,575],{"v-slot:features":174},[277,538,539,542],{"as":279,"icon":97},[226,540,541],{"v-slot:title":174},"One verb per intent",[226,543,544,546,547,546,550,546,553,546,556,546,559,562],{"v-slot:description":174},[176,545,176],{},", ",[176,548,549],{},"run",[176,551,552],{},"shell",[176,554,555],{},"exec",[176,557,558],{},"diff",[176,560,561],{},"sync"," — each materializes first, so there is no wrong order.",[277,564,566,569],{"as":279,"icon":565},"i-lucide-layout-list",[226,567,568],{"v-slot:title":174},"See the whole board",[226,570,571,574],{"v-slot:description":174},[176,572,573],{},"list"," shows every workspace with its branch, port, age, PR state and CI mark.",[277,576,577,580],{"as":279,"icon":71},[226,578,579],{"v-slot:title":174},"Reclaim the disk",[226,581,582,546,585,546,588,591],{"v-slot:description":174},[176,583,584],{},"clean --merged",[176,586,587],{},"--closed",[176,589,590],{},"--older-than 7d",". Prints a plan, asks first, skips dirty trees.",[263,593,595,602,605],{"className":594},[266,267],[226,596,597,598],{"v-slot:title":174},"Runs on the stack ",[179,599,601],{"className":600},[235],"you already have",[226,603,604],{"v-slot:description":174},"No new runtime, no daemon, no account.",[226,606,607,616,628],{"v-slot:features":174},[277,608,610,613],{"as":279,"icon":609},"i-lucide-hexagon",[226,611,612],{"v-slot:title":174},"Stock Node, plain git",[226,614,615],{"v-slot:description":174},"Node ≥ 18 and git ≥ 2.38. Install it with npm, pnpm, or yarn — no Bun or Deno required.",[277,617,619,625],{"as":279,"icon":618},"i-lucide-circle-dashed",[226,620,621,624],{"v-slot:title":174},[176,622,623],{},"gh"," optional",[226,626,627],{"v-slot:description":174},"With it you get PR state, CI marks, and true PR diffs. Without it, every feature degrades gracefully.",[277,629,631,634],{"as":279,"icon":630},"i-lucide-settings-2",[226,632,633],{"v-slot:title":174},"One TOML per project",[226,635,636,637,640],{"v-slot:description":174},"Commands, env, hooks, editor, ports — versioned as text, validated in aggregate by ",[176,638,639],{},"config validate",".",[642,643,646,649,655],"u-page-c-t-a",{"className":644,"variant":645},[266,267],"subtle",[226,647,648],{"v-slot:title":174},"Materialize your first workspace",[226,650,651,654],{"v-slot:description":174},[176,652,653],{},"uxd setup"," creates the config dir, scaffolds your first project file, and prints the next command to run.",[226,656,657,660],{"v-slot:links":174},[243,658,252],{"className":659,"color":249,"size":250,"to":8,"trailing-icon":251},[246,247,248],[243,661,664],{"className":662,"color":256,"size":250,"to":663,"target":258,"variant":259},[246,247,248],"https:\u002F\u002Fgithub.com\u002Fuxfront-com\u002Fuxd#commands","CLI reference",[666,667,668],"style",{},"html pre.shiki code .szw1H, html code.shiki .szw1H{--shiki-light:#702C00;--shiki-default:#702C00;--shiki-dark:#FFB757}html pre.shiki code .semJd, html code.shiki .semJd{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF}html pre.shiki code .ssYy9, html code.shiki .ssYy9{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#91CBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sq92B, html code.shiki .sq92B{--shiki-light:#66707B;--shiki-default:#66707B;--shiki-dark:#BDC4CC}html pre.shiki code .s7iLA, html code.shiki .s7iLA{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6}",{"title":174,"searchDepth":199,"depth":199,"links":670},[],"Turn any git ref into a running local workspace with one command.","md",{},"\u002F",{"title":676,"description":677},"uxd — run any git ref locally in one command","uxd turns a PR number, a branch, a commit, a URL, or a path into an isolated git worktree with dependencies installed, ports allocated, and a dev server up.","index","sAavEpbAGdalEIK4rGz04Y3N7JNok1uO9UAI9-_iPBQ",1784975260589]