[{"data":1,"prerenderedAt":504},["ShallowReactive",2],{"navigation_en":3,"-docs-uxd-guides-seed-local-files":150,"-docs-uxd-guides-seed-local-files-surround":499},{"docs":4},[5,41,86,121],{"title":6,"icon":7,"path":8,"stem":9,"children":10,"page":7},"Getting Started",false,"\u002Fdocs\u002Fuxd\u002Fgetting-started","docs\u002Fuxd\u002Fgetting-started",[11,16,21,26,31,36],{"title":12,"path":13,"stem":14,"icon":15},"Introduction","\u002Fdocs\u002Fuxd\u002Fgetting-started\u002Fintroduction","docs\u002Fuxd\u002Fgetting-started\u002F01.introduction","i-lucide-house",{"title":17,"path":18,"stem":19,"icon":20},"Installation","\u002Fdocs\u002Fuxd\u002Fgetting-started\u002Finstallation","docs\u002Fuxd\u002Fgetting-started\u002F02.installation","i-lucide-download",{"title":22,"path":23,"stem":24,"icon":25},"Quick Start","\u002Fdocs\u002Fuxd\u002Fgetting-started\u002Fquick-start","docs\u002Fuxd\u002Fgetting-started\u002F03.quick-start","i-lucide-zap",{"title":27,"path":28,"stem":29,"icon":30},"How It Works","\u002Fdocs\u002Fuxd\u002Fgetting-started\u002Fhow-it-works","docs\u002Fuxd\u002Fgetting-started\u002F04.how-it-works","i-lucide-workflow",{"title":32,"path":33,"stem":34,"icon":35},"Refs","\u002Fdocs\u002Fuxd\u002Fgetting-started\u002Frefs","docs\u002Fuxd\u002Fgetting-started\u002F05.refs","i-lucide-git-branch",{"title":37,"path":38,"stem":39,"icon":40},"Workspaces & Worktrees","\u002Fdocs\u002Fuxd\u002Fgetting-started\u002Fworkspaces","docs\u002Fuxd\u002Fgetting-started\u002F06.workspaces","i-lucide-folder-tree",{"title":42,"icon":7,"path":43,"stem":44,"children":45,"page":7},"Guides","\u002Fdocs\u002Fuxd\u002Fguides","docs\u002Fuxd\u002Fguides",[46,51,56,61,66,71,76,81],{"title":47,"path":48,"stem":49,"icon":50},"Review a Pull Request","\u002Fdocs\u002Fuxd\u002Fguides\u002Freview-a-pull-request","docs\u002Fuxd\u002Fguides\u002F01.review-a-pull-request","i-lucide-git-pull-request",{"title":52,"path":53,"stem":54,"icon":55},"Run Dev Servers in Parallel","\u002Fdocs\u002Fuxd\u002Fguides\u002Frun-dev-servers-in-parallel","docs\u002Fuxd\u002Fguides\u002F02.run-dev-servers-in-parallel","i-lucide-plug",{"title":57,"path":58,"stem":59,"icon":60},"Seed Local Files","\u002Fdocs\u002Fuxd\u002Fguides\u002Fseed-local-files","docs\u002Fuxd\u002Fguides\u002F03.seed-local-files","i-lucide-sprout",{"title":62,"path":63,"stem":64,"icon":65},"Refresh a Workspace","\u002Fdocs\u002Fuxd\u002Fguides\u002Frefresh-a-workspace","docs\u002Fuxd\u002Fguides\u002F04.refresh-a-workspace","i-lucide-refresh-cw",{"title":67,"path":68,"stem":69,"icon":70},"Clean Up Workspaces","\u002Fdocs\u002Fuxd\u002Fguides\u002Fclean-up-workspaces","docs\u002Fuxd\u002Fguides\u002F05.clean-up-workspaces","i-lucide-trash-2",{"title":72,"path":73,"stem":74,"icon":75},"Script with uxd","\u002Fdocs\u002Fuxd\u002Fguides\u002Fscript-with-uxd","docs\u002Fuxd\u002Fguides\u002F06.script-with-uxd","i-lucide-braces",{"title":77,"path":78,"stem":79,"icon":80},"Install Shell Completions","\u002Fdocs\u002Fuxd\u002Fguides\u002Fshell-completions","docs\u002Fuxd\u002Fguides\u002F07.shell-completions","i-lucide-keyboard",{"title":82,"path":83,"stem":84,"icon":85},"Troubleshooting","\u002Fdocs\u002Fuxd\u002Fguides\u002Ftroubleshooting","docs\u002Fuxd\u002Fguides\u002F08.troubleshooting","i-lucide-stethoscope",{"title":87,"icon":7,"path":88,"stem":89,"children":90,"page":7},"CLI Reference","\u002Fdocs\u002Fuxd\u002Fcli","docs\u002Fuxd\u002Fcli",[91,96,101,106,111,116],{"title":92,"path":93,"stem":94,"icon":95},"Command Grammar","\u002Fdocs\u002Fuxd\u002Fcli\u002Foverview","docs\u002Fuxd\u002Fcli\u002F01.overview","i-lucide-terminal",{"title":97,"path":98,"stem":99,"icon":100},"Workspace Verbs","\u002Fdocs\u002Fuxd\u002Fcli\u002Fworkspace-verbs","docs\u002Fuxd\u002Fcli\u002F02.workspace-verbs","i-lucide-folder-git-2",{"title":102,"path":103,"stem":104,"icon":105},"Project Verbs","\u002Fdocs\u002Fuxd\u002Fcli\u002Fproject-verbs","docs\u002Fuxd\u002Fcli\u002F03.project-verbs","i-lucide-boxes",{"title":107,"path":108,"stem":109,"icon":110},"Top-Level Verbs","\u002Fdocs\u002Fuxd\u002Fcli\u002Ftop-level-verbs","docs\u002Fuxd\u002Fcli\u002F04.top-level-verbs","i-lucide-wrench",{"title":112,"path":113,"stem":114,"icon":115},"Global Flags","\u002Fdocs\u002Fuxd\u002Fcli\u002Fglobal-flags","docs\u002Fuxd\u002Fcli\u002F05.global-flags","i-lucide-flag",{"title":117,"path":118,"stem":119,"icon":120},"Exit Codes","\u002Fdocs\u002Fuxd\u002Fcli\u002Fexit-codes","docs\u002Fuxd\u002Fcli\u002F06.exit-codes","i-lucide-circle-alert",{"title":122,"icon":7,"path":123,"stem":124,"children":125,"page":7},"Configuration","\u002Fdocs\u002Fuxd\u002Fconfiguration","docs\u002Fuxd\u002Fconfiguration",[126,131,136,141,145],{"title":127,"path":128,"stem":129,"icon":130},"Overview","\u002Fdocs\u002Fuxd\u002Fconfiguration\u002Foverview","docs\u002Fuxd\u002Fconfiguration\u002F01.overview","i-lucide-settings",{"title":132,"path":133,"stem":134,"icon":135},"Project File","\u002Fdocs\u002Fuxd\u002Fconfiguration\u002Fproject-file","docs\u002Fuxd\u002Fconfiguration\u002F02.project-file","i-lucide-file-code",{"title":137,"path":138,"stem":139,"icon":140},"Commands & Hooks","\u002Fdocs\u002Fuxd\u002Fconfiguration\u002Fcommands-and-hooks","docs\u002Fuxd\u002Fconfiguration\u002F03.commands-and-hooks","i-lucide-play",{"title":142,"path":143,"stem":144,"icon":75},"Environment & Templates","\u002Fdocs\u002Fuxd\u002Fconfiguration\u002Fenvironment-and-templates","docs\u002Fuxd\u002Fconfiguration\u002F04.environment-and-templates",{"title":146,"path":147,"stem":148,"icon":149},"Editors","\u002Fdocs\u002Fuxd\u002Fconfiguration\u002Feditors","docs\u002Fuxd\u002Fconfiguration\u002F05.editors","i-lucide-app-window",{"id":151,"title":57,"body":152,"description":491,"extension":492,"links":493,"meta":494,"navigation":495,"path":58,"seo":496,"stem":59,"__hash__":498},"docs_docs\u002Fdocs\u002Fuxd\u002Fguides\u002F03.seed-local-files.md",{"type":153,"value":154,"toc":480},"minimark",[155,164,169,292,296,306,335,346,352,358,362,369,372,394,400,411,415,421,445,449,467,473,476],[156,157,158,159,163],"p",{},"A fresh worktree has everything git tracks and nothing it does not — which\nmeans no ",[160,161,162],"code",{},".env.local",", no local certificates, no scratch config. Seeding puts\nthem there for you.",[165,166,168],"h2",{"id":167},"set-it-up","Set it up",[170,171,173,178,184,237,241,251,259,263,286],"steps",{"level":172},"3",[174,175,177],"h3",{"id":176},"declare-what-to-seed","Declare what to seed",[156,179,180,183],{},[160,181,182],{},"seed_files"," holds paths relative to the worktree root:",[185,186,192],"pre",{"className":187,"code":188,"filename":189,"language":190,"meta":191,"style":191},"language-toml shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","[setup]\nrun = \"pnpm install --frozen-lockfile\"\nseed_files = [\".env.local\", \"config\u002Flocal.json\"]\n","~\u002F.uxd\u002Fmy-project.toml","toml","",[160,193,194,210,220],{"__ignoreMap":191},[195,196,199,203,207],"span",{"class":197,"line":198},"line",1,[195,200,202],{"class":201},"s7iLA","[",[195,204,206],{"class":205},"szw1H","setup",[195,208,209],{"class":201},"]\n",[195,211,213,216],{"class":197,"line":212},2,[195,214,215],{"class":201},"run = ",[195,217,219],{"class":218},"semJd","\"pnpm install --frozen-lockfile\"\n",[195,221,223,226,229,232,235],{"class":197,"line":222},3,[195,224,225],{"class":201},"seed_files = [",[195,227,228],{"class":218},"\".env.local\"",[195,230,231],{"class":201},", ",[195,233,234],{"class":218},"\"config\u002Flocal.json\"",[195,236,209],{"class":201},[174,238,240],{"id":239},"put-the-sources-somewhere","Put the sources somewhere",[156,242,243,246,247,250],{},[160,244,245],{},"uxd"," looks for each file under ",[160,248,249],{},"\u003Cconfig-dir>\u002Fseeds\u002F\u003Cproject>\u002F",", mirroring the\nworktree layout:",[185,252,257],{"className":253,"code":255,"language":256},[254],"language-text","~\u002F.uxd\u002F\n  my-project.toml\n  seeds\u002F\n    my-project\u002F\n      .env.local\n      config\u002F\n        local.json\n","text",[160,258,255],{"__ignoreMap":191},[174,260,262],{"id":261},"materialize-a-workspace","Materialize a workspace",[185,264,268],{"className":265,"code":266,"language":267,"meta":191,"style":191},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","uxd my-project feat\u002Flogin run dev\n","bash",[160,269,270],{"__ignoreMap":191},[195,271,272,274,277,280,283],{"class":197,"line":198},[195,273,245],{"class":205},[195,275,276],{"class":218}," my-project",[195,278,279],{"class":218}," feat\u002Flogin",[195,281,282],{"class":218}," run",[195,284,285],{"class":218}," dev\n",[185,287,290],{"className":288,"code":289,"language":256},[254],"→ worktree ready: ~\u002Fdev\u002Fuxd\u002Fmy-project\u002Ftrees\u002Ffeat-login\n→ seeded .env.local\n→ seeded config\u002Flocal.json\n→ running setup\n",[160,291,289],{"__ignoreMap":191},[165,293,295],{"id":294},"seeding-from-an-existing-checkout","Seeding from an existing checkout",[156,297,298,299,301,302,305],{},"Already keeping your real ",[160,300,162],{}," in a working copy? Point ",[160,303,304],{},"seed_from"," at\nit instead of duplicating the file:",[185,307,309],{"className":187,"code":308,"filename":189,"language":190,"meta":191,"style":191},"[setup]\nseed_files = [\".env.local\"]\nseed_from = \"~\u002Fdev\u002Fmy-project\"\n",[160,310,311,319,327],{"__ignoreMap":191},[195,312,313,315,317],{"class":197,"line":198},[195,314,202],{"class":201},[195,316,206],{"class":205},[195,318,209],{"class":201},[195,320,321,323,325],{"class":197,"line":212},[195,322,225],{"class":201},[195,324,228],{"class":218},[195,326,209],{"class":201},[195,328,329,332],{"class":197,"line":222},[195,330,331],{"class":201},"seed_from = ",[195,333,334],{"class":218},"\"~\u002Fdev\u002Fmy-project\"\n",[156,336,337,339,340,342,343,345],{},[160,338,245],{}," checks ",[160,341,249],{}," first, then ",[160,344,304],{},". The first\nsource that exists wins, so you can override individual files in the seeds tree\nwhile letting the rest come from your checkout.",[156,347,348,349,351],{},"If no source is found, ",[160,350,245],{}," warns and continues rather than failing the\ncommand:",[185,353,356],{"className":354,"code":355,"language":256},[254],"warning: no seed source for '.env.local' (looked in seeds\u002Fmy-project and seed_from)\n",[160,357,355],{"__ignoreMap":191},[165,359,361],{"id":360},"existing-files-are-never-overwritten","Existing files are never overwritten",[156,363,364,365,368],{},"Seeding skips any target that already exists. That protects edits you made\ninside a workspace from being clobbered on the next ",[160,366,367],{},"run",".",[156,370,371],{},"To force a refresh — after rotating a key, say:",[185,373,375],{"className":265,"code":374,"language":267,"meta":191,"style":191},"uxd my-project feat\u002Flogin run dev --reseed\n",[160,376,377],{"__ignoreMap":191},[195,378,379,381,383,385,387,390],{"class":197,"line":198},[195,380,245],{"class":205},[195,382,276],{"class":218},[195,384,279],{"class":218},[195,386,282],{"class":218},[195,388,389],{"class":218}," dev",[195,391,393],{"class":392},"ssYy9"," --reseed\n",[156,395,396,399],{},[160,397,398],{},"--reseed"," removes the target first, then copies the source over it.",[401,402,404,406,407,410],"caution",{"title":403},"Seed paths must stay inside the worktree",[160,405,182],{}," entries must be relative and free of ",[160,408,409],{},".."," segments. Absolute paths\nand parent traversal are rejected by config validation.",[165,412,414],{"id":413},"secrets","Secrets",[156,416,417,418,420],{},"Seed files are ordinary files on your disk, copied verbatim. ",[160,419,245],{}," neither\nencrypts nor redacts them.",[422,423,424,428,431],"ul",{},[425,426,427],"li",{},"Keep the seeds directory out of any repository you push.",[425,429,430],{},"Prefer references (a path to a credential helper, a vault key name) over\nliteral secrets where your app supports it.",[425,432,433,434,437,438,440,441,444],{},"Remember that ",[160,435,436],{},"--dry-run"," on a ",[160,439,367],{}," prints the computed environment,\nincluding values from ",[160,442,443],{},"[env]"," — do not paste that output into a ticket\nwithout reading it first.",[165,446,448],{"id":447},"verify-before-you-trust-it","Verify before you trust it",[185,450,452],{"className":265,"code":451,"language":267,"meta":191,"style":191},"uxd config validate my-project\n",[160,453,454],{"__ignoreMap":191},[195,455,456,458,461,464],{"class":197,"line":198},[195,457,245],{"class":205},[195,459,460],{"class":218}," config",[195,462,463],{"class":218}," validate",[195,465,466],{"class":218}," my-project\n",[185,468,471],{"className":469,"code":470,"language":256},[254],"→ all project configs valid\n",[160,472,470],{"__ignoreMap":191},[156,474,475],{},"Validation is aggregate: it reports every schema error in a file at once, so\nyou fix the whole thing in one pass rather than one error per run.",[477,478,479],"style",{},"html pre.shiki code .s7iLA, html code.shiki .s7iLA{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6}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 .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 .ssYy9, html code.shiki .ssYy9{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#91CBFF}",{"title":191,"searchDepth":212,"depth":212,"links":481},[482,487,488,489,490],{"id":167,"depth":212,"text":168,"children":483},[484,485,486],{"id":176,"depth":222,"text":177},{"id":239,"depth":222,"text":240},{"id":261,"depth":222,"text":262},{"id":294,"depth":212,"text":295},{"id":360,"depth":212,"text":361},{"id":413,"depth":212,"text":414},{"id":447,"depth":212,"text":448},"Get .env.local and other untracked files into every new workspace automatically.","md",null,{},{"icon":60},{"title":57,"description":497},"Configure uxd's seed_files and seeds directory so untracked local files like .env.local land in every freshly materialized workspace.","m_FSjsH6SYeh041YpQI-2J3Mr0sZmchZt8ci_nrGuHQ",[500,502],{"title":52,"path":53,"stem":54,"description":501,"icon":55,"children":-1},"Configure ports so several workspaces can run at the same time without colliding.",{"title":62,"path":63,"stem":64,"description":503,"icon":65,"children":-1},"Bring a workspace up to date with its ref, and decide what happens to local changes.",1789131075215]