[{"data":1,"prerenderedAt":507},["ShallowReactive",2],{"navigation_en":3,"-docs-guides-seed-local-files":153,"-docs-guides-seed-local-files-surround":502},{"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":58,"body":155,"description":494,"extension":495,"links":496,"meta":497,"navigation":498,"path":59,"seo":499,"stem":60,"__hash__":501},"docs_guides\u002Fdocs\u002Fguides\u002F03.seed-local-files.md",{"type":156,"value":157,"toc":483},"minimark",[158,167,172,295,299,309,338,349,355,361,365,372,375,397,403,414,418,424,448,452,470,476,479],[159,160,161,162,166],"p",{},"A fresh worktree has everything git tracks and nothing it does not — which\nmeans no ",[163,164,165],"code",{},".env.local",", no local certificates, no scratch config. Seeding puts\nthem there for you.",[168,169,171],"h2",{"id":170},"set-it-up","Set it up",[173,174,176,181,187,240,244,254,262,266,289],"steps",{"level":175},"3",[177,178,180],"h3",{"id":179},"declare-what-to-seed","Declare what to seed",[159,182,183,186],{},[163,184,185],{},"seed_files"," holds paths relative to the worktree root:",[188,189,195],"pre",{"className":190,"code":191,"filename":192,"language":193,"meta":194,"style":194},"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","",[163,196,197,213,223],{"__ignoreMap":194},[198,199,202,206,210],"span",{"class":200,"line":201},"line",1,[198,203,205],{"class":204},"s7iLA","[",[198,207,209],{"class":208},"szw1H","setup",[198,211,212],{"class":204},"]\n",[198,214,216,219],{"class":200,"line":215},2,[198,217,218],{"class":204},"run = ",[198,220,222],{"class":221},"semJd","\"pnpm install --frozen-lockfile\"\n",[198,224,226,229,232,235,238],{"class":200,"line":225},3,[198,227,228],{"class":204},"seed_files = [",[198,230,231],{"class":221},"\".env.local\"",[198,233,234],{"class":204},", ",[198,236,237],{"class":221},"\"config\u002Flocal.json\"",[198,239,212],{"class":204},[177,241,243],{"id":242},"put-the-sources-somewhere","Put the sources somewhere",[159,245,246,249,250,253],{},[163,247,248],{},"uxd"," looks for each file under ",[163,251,252],{},"\u003Cconfig-dir>\u002Fseeds\u002F\u003Cproject>\u002F",", mirroring the\nworktree layout:",[188,255,260],{"className":256,"code":258,"language":259},[257],"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",[163,261,258],{"__ignoreMap":194},[177,263,265],{"id":264},"materialize-a-workspace","Materialize a workspace",[188,267,271],{"className":268,"code":269,"language":270,"meta":194,"style":194},"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",[163,272,273],{"__ignoreMap":194},[198,274,275,277,280,283,286],{"class":200,"line":201},[198,276,248],{"class":208},[198,278,279],{"class":221}," my-project",[198,281,282],{"class":221}," feat\u002Flogin",[198,284,285],{"class":221}," run",[198,287,288],{"class":221}," dev\n",[188,290,293],{"className":291,"code":292,"language":259},[257],"→ worktree ready: ~\u002Fdev\u002Fuxd\u002Fmy-project\u002Ftrees\u002Ffeat-login\n→ seeded .env.local\n→ seeded config\u002Flocal.json\n→ running setup\n",[163,294,292],{"__ignoreMap":194},[168,296,298],{"id":297},"seeding-from-an-existing-checkout","Seeding from an existing checkout",[159,300,301,302,304,305,308],{},"Already keeping your real ",[163,303,165],{}," in a working copy? Point ",[163,306,307],{},"seed_from"," at\nit instead of duplicating the file:",[188,310,312],{"className":190,"code":311,"filename":192,"language":193,"meta":194,"style":194},"[setup]\nseed_files = [\".env.local\"]\nseed_from = \"~\u002Fdev\u002Fmy-project\"\n",[163,313,314,322,330],{"__ignoreMap":194},[198,315,316,318,320],{"class":200,"line":201},[198,317,205],{"class":204},[198,319,209],{"class":208},[198,321,212],{"class":204},[198,323,324,326,328],{"class":200,"line":215},[198,325,228],{"class":204},[198,327,231],{"class":221},[198,329,212],{"class":204},[198,331,332,335],{"class":200,"line":225},[198,333,334],{"class":204},"seed_from = ",[198,336,337],{"class":221},"\"~\u002Fdev\u002Fmy-project\"\n",[159,339,340,342,343,345,346,348],{},[163,341,248],{}," checks ",[163,344,252],{}," first, then ",[163,347,307],{},". The first\nsource that exists wins, so you can override individual files in the seeds tree\nwhile letting the rest come from your checkout.",[159,350,351,352,354],{},"If no source is found, ",[163,353,248],{}," warns and continues rather than failing the\ncommand:",[188,356,359],{"className":357,"code":358,"language":259},[257],"warning: no seed source for '.env.local' (looked in seeds\u002Fmy-project and seed_from)\n",[163,360,358],{"__ignoreMap":194},[168,362,364],{"id":363},"existing-files-are-never-overwritten","Existing files are never overwritten",[159,366,367,368,371],{},"Seeding skips any target that already exists. That protects edits you made\ninside a workspace from being clobbered on the next ",[163,369,370],{},"run",".",[159,373,374],{},"To force a refresh — after rotating a key, say:",[188,376,378],{"className":268,"code":377,"language":270,"meta":194,"style":194},"uxd my-project feat\u002Flogin run dev --reseed\n",[163,379,380],{"__ignoreMap":194},[198,381,382,384,386,388,390,393],{"class":200,"line":201},[198,383,248],{"class":208},[198,385,279],{"class":221},[198,387,282],{"class":221},[198,389,285],{"class":221},[198,391,392],{"class":221}," dev",[198,394,396],{"class":395},"ssYy9"," --reseed\n",[159,398,399,402],{},[163,400,401],{},"--reseed"," removes the target first, then copies the source over it.",[404,405,407,409,410,413],"caution",{"title":406},"Seed paths must stay inside the worktree",[163,408,185],{}," entries must be relative and free of ",[163,411,412],{},".."," segments. Absolute paths\nand parent traversal are rejected by config validation.",[168,415,417],{"id":416},"secrets","Secrets",[159,419,420,421,423],{},"Seed files are ordinary files on your disk, copied verbatim. ",[163,422,248],{}," neither\nencrypts nor redacts them.",[425,426,427,431,434],"ul",{},[428,429,430],"li",{},"Keep the seeds directory out of any repository you push.",[428,432,433],{},"Prefer references (a path to a credential helper, a vault key name) over\nliteral secrets where your app supports it.",[428,435,436,437,440,441,443,444,447],{},"Remember that ",[163,438,439],{},"--dry-run"," on a ",[163,442,370],{}," prints the computed environment,\nincluding values from ",[163,445,446],{},"[env]"," — do not paste that output into a ticket\nwithout reading it first.",[168,449,451],{"id":450},"verify-before-you-trust-it","Verify before you trust it",[188,453,455],{"className":268,"code":454,"language":270,"meta":194,"style":194},"uxd config validate my-project\n",[163,456,457],{"__ignoreMap":194},[198,458,459,461,464,467],{"class":200,"line":201},[198,460,248],{"class":208},[198,462,463],{"class":221}," config",[198,465,466],{"class":221}," validate",[198,468,469],{"class":221}," my-project\n",[188,471,474],{"className":472,"code":473,"language":259},[257],"→ all project configs valid\n",[163,475,473],{"__ignoreMap":194},[159,477,478],{},"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.",[480,481,482],"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":194,"searchDepth":215,"depth":215,"links":484},[485,490,491,492,493],{"id":170,"depth":215,"text":171,"children":486},[487,488,489],{"id":179,"depth":225,"text":180},{"id":242,"depth":225,"text":243},{"id":264,"depth":225,"text":265},{"id":297,"depth":215,"text":298},{"id":363,"depth":215,"text":364},{"id":416,"depth":215,"text":417},{"id":450,"depth":215,"text":451},"Get .env.local and other untracked files into every new workspace automatically.","md",null,{},{"icon":61},{"title":58,"description":500},"Configure uxd's seed_files and seeds directory so untracked local files like .env.local land in every freshly materialized workspace.","WnXaFiL5od9itZNqEu6zJ4JOB203DKMMrzL2SKuh6k4",[503,505],{"title":53,"path":54,"stem":55,"description":504,"icon":56,"children":-1},"Configure ports so several workspaces can run at the same time without colliding.",{"title":63,"path":64,"stem":65,"description":506,"icon":66,"children":-1},"Bring a workspace up to date with its ref, and decide what happens to local changes.",1784975262311]