···113113114114## Deploy (Cloudflare Pages)
115115116116-- **Build command:** `npm run build`
116116+The git remote lives on [tangled.org](https://tangled.org), so Cloudflare's git-connected builds
117117+aren't available. Deployment uses **Wrangler direct upload** instead — build locally, then push the
118118+`dist/` folder straight to the `atmot` Pages project:
119119+120120+```bash
121121+npm run deploy
122122+```
123123+124124+This runs `npm run build` (typecheck + Vite build) and then
125125+`wrangler pages deploy dist --project-name=atmot --branch=trunk`. The first run prompts for
126126+`wrangler login`.
127127+128128+The `--branch=trunk` flag is important: Wrangler tags a deployment with your current local git
129129+branch, and Cloudflare only promotes deployments whose branch matches the project's **production
130130+branch** (`trunk`). Without it, deploying from a feature branch produces a preview URL and leaves the
131131+live site unchanged.
132132+117133- **Output directory:** `dist`
134134+- **Pages project:** `atmot`
135135+- **Production branch:** `trunk`
118136- **Custom domain:** `atmot.herve.bzh`
119137120138`public/_redirects` provides the SPA history fallback so the `/p/<lang>/<n>` permalinks resolve to