[{"data":1,"prerenderedAt":217},["ShallowReactive",2],{"docs-\u002Fcontributing":3},{"id":4,"title":5,"body":6,"description":208,"extension":209,"meta":210,"navTitle":211,"navigation":212,"path":213,"rawbody":214,"seo":215,"stem":12,"__hash__":216},"docs\u002Fcontributing.md","Contributing",{"type":7,"value":8,"toc":200},"minimark",[9,13,36,41,49,59,65,71,77,81,117,124,128,146,149,155,181,185],[10,11,5],"h1",{"id":12},"contributing",[14,15,16,17,24,25,29,30,35],"p",{},"This is the source for the MagicUtils documentation site — a\n",[18,19,23],"a",{"href":20,"rel":21},"https:\u002F\u002Fnuxt.com",[22],"nofollow","Nuxt"," app whose pages live as Markdown under ",[26,27,28],"code",{},"content\u002F",",\nrendered with ",[18,31,34],{"href":32,"rel":33},"https:\u002F\u002Fcontent.nuxt.com",[22],"@nuxt\u002Fcontent",".",[37,38,40],"h2",{"id":39},"run-the-docs-locally","Run the docs locally",[14,42,43,44,35],{},"The project uses ",[18,45,48],{"href":46,"rel":47},"https:\u002F\u002Fbun.sh",[22],"Bun",[50,51,57],"pre",{"className":52,"code":54,"language":55,"meta":56},[53],"language-bash","bun install\nbun run dev\n","bash","",[26,58,54],{"__ignoreMap":56},[14,60,61,64],{},[26,62,63],{},"bun run dev"," starts the dev server with hot reload. To produce and preview a\nproduction build:",[50,66,69],{"className":67,"code":68,"language":55,"meta":56},[53],"bun run build\nbun run preview\n",[26,70,68],{"__ignoreMap":56},[14,72,73,76],{},[26,74,75],{},"bun run typecheck"," runs the Nuxt\u002FVue type check.",[37,78,80],{"id":79},"edit-content","Edit content",[14,82,83,84,86,87,90,91,94,95,98,99,102,103,105,106,109,110,113,114,35],{},"Documentation pages are Markdown files under ",[26,85,28],{},"; the folder maps\ndirectly to URLs (",[26,88,89],{},"content\u002Fgetting-started\u002Finstallation.md"," →\n",[26,92,93],{},"\u002Fgetting-started\u002Finstallation","). Each page may set ",[26,96,97],{},"title"," and ",[26,100,101],{},"description","\nin its frontmatter — keep the ",[26,104,101],{}," a single quoted line, since it feeds\nthe page's ",[26,107,108],{},"\u003Cmeta description>",", Open Graph tags, and the generated\n",[26,111,112],{},"llms.txt","\u002F",[26,115,116],{},"llms-full.txt",[14,118,119,120,123],{},"The sidebar order is defined in ",[26,121,122],{},"app\u002Futils\u002Fnav.ts",", not inferred from the\nfolder, so add new pages there too.",[37,125,127],{"id":126},"versioned-docs-maintainers","Versioned docs (maintainers)",[14,129,130,131,133,134,137,138,141,142,145],{},"The latest docs live in ",[26,132,28],{}," and serve at the site root (URLs never\nchange, which is best for SEO). Each archived minor line lives under\n",[26,135,136],{},"content\u002Fv\u003Cminor>\u002F"," and serves at ",[26,139,140],{},"\u002Fv\u003Cminor>\u002F...","; archived pages are ",[26,143,144],{},"noindex","\nand canonicalise to their latest equivalent.",[14,147,148],{},"To freeze the current docs as an archived version when a new minor supersedes\nthem:",[50,150,153],{"className":151,"code":152,"language":55,"meta":56},[53],"node scripts\u002Farchive-version.mjs \u003Cnew-version> --dry-run\nnode scripts\u002Farchive-version.mjs \u003Cnew-version>\n",[26,154,152],{"__ignoreMap":56},[14,156,157,158,160,161,163,164,167,168,171,172,174,175,177,178,35],{},"This snapshots ",[26,159,28],{}," into ",[26,162,136],{}," and registers the archived\nline in ",[26,165,166],{},"app\u002Futils\u002Fversions.ts",". It does not rewrite version strings inside the\nMarkdown — the ",[26,169,170],{},"update-version"," GitHub Actions workflow does that, opening a PR\nthat bumps the latest version in ",[26,173,166],{}," and every version\nreference in ",[26,176,28],{}," whenever a newer MagicUtils release appears on\n",[26,179,180],{},"maven.theroer.dev",[37,182,184],{"id":183},"deploy","Deploy",[14,186,187,188,191,192,195,196,199],{},"Deployment is automated. Pushing to ",[26,189,190],{},"main"," triggers the ",[26,193,194],{},"build-and-push","\nworkflow, which builds the site into a Docker image and pushes it to GHCR\n(",[26,197,198],{},"ghcr.io\u002F\u003Cowner>\u002Fmagicutils-website","); the host then pulls the new image. There\nis no manual deploy step.",{"title":56,"searchDepth":201,"depth":201,"links":202},3,[203,205,206,207],{"id":39,"depth":204,"text":40},2,{"id":79,"depth":204,"text":80},{"id":126,"depth":204,"text":127},{"id":183,"depth":204,"text":184},"How to contribute to the MagicUtils documentation site: local setup with Bun and Nuxt, how versioned docs work, and how the site is deployed.","md",{},null,true,"\u002Fcontributing","---\ndescription: 'How to contribute to the MagicUtils documentation site: local setup with Bun and Nuxt, how versioned docs work, and how the site is deployed.'\n---\n\n# Contributing\n\nThis is the source for the MagicUtils documentation site — a\n[Nuxt](https:\u002F\u002Fnuxt.com) app whose pages live as Markdown under `content\u002F`,\nrendered with [@nuxt\u002Fcontent](https:\u002F\u002Fcontent.nuxt.com).\n\n## Run the docs locally\n\nThe project uses [Bun](https:\u002F\u002Fbun.sh).\n\n```bash\nbun install\nbun run dev\n```\n\n`bun run dev` starts the dev server with hot reload. To produce and preview a\nproduction build:\n\n```bash\nbun run build\nbun run preview\n```\n\n`bun run typecheck` runs the Nuxt\u002FVue type check.\n\n## Edit content\n\nDocumentation pages are Markdown files under `content\u002F`; the folder maps\ndirectly to URLs (`content\u002Fgetting-started\u002Finstallation.md` →\n`\u002Fgetting-started\u002Finstallation`). Each page may set `title` and `description`\nin its frontmatter — keep the `description` a single quoted line, since it feeds\nthe page's `\u003Cmeta description>`, Open Graph tags, and the generated\n`llms.txt`\u002F`llms-full.txt`.\n\nThe sidebar order is defined in `app\u002Futils\u002Fnav.ts`, not inferred from the\nfolder, so add new pages there too.\n\n## Versioned docs (maintainers)\n\nThe latest docs live in `content\u002F` and serve at the site root (URLs never\nchange, which is best for SEO). Each archived minor line lives under\n`content\u002Fv\u003Cminor>\u002F` and serves at `\u002Fv\u003Cminor>\u002F...`; archived pages are `noindex`\nand canonicalise to their latest equivalent.\n\nTo freeze the current docs as an archived version when a new minor supersedes\nthem:\n\n```bash\nnode scripts\u002Farchive-version.mjs \u003Cnew-version> --dry-run\nnode scripts\u002Farchive-version.mjs \u003Cnew-version>\n```\n\nThis snapshots `content\u002F` into `content\u002Fv\u003Cminor>\u002F` and registers the archived\nline in `app\u002Futils\u002Fversions.ts`. It does not rewrite version strings inside the\nMarkdown — the `update-version` GitHub Actions workflow does that, opening a PR\nthat bumps the latest version in `app\u002Futils\u002Fversions.ts` and every version\nreference in `content\u002F` whenever a newer MagicUtils release appears on\n`maven.theroer.dev`.\n\n## Deploy\n\nDeployment is automated. Pushing to `main` triggers the `build-and-push`\nworkflow, which builds the site into a Docker image and pushes it to GHCR\n(`ghcr.io\u002F\u003Cowner>\u002Fmagicutils-website`); the host then pulls the new image. There\nis no manual deploy step.\n",{"title":5,"description":208},"6UK_sJ58cY4_8_QtKz3igMxqgQJkOwTt7-95t1bLdpM",1783944487481]