Keep the personal half of the desktop in one place, and ask before installing it

Agent instructions, skills, SSH host aliases and expansion triggers are worth
having identical on every machine one person owns, and belong in none of the
shared configuration. They live in user/ now, with a manifest saying where each
piece goes and a link-user stage that puts it there.

That stage does nothing unless the machine said yes. Somebody who clones Panama
to try the desktop keeps their own ~/.claude/CLAUDE.md exactly where it was;
the question names the destinations and defaults to no. Anything displaced goes
to config/old rather than being deleted.

~/.claude/CLAUDE.md and ~/.codex/AGENTS.md were byte-identical copies of one
file, which is the drift this exists to prevent.

Also adds the vitals toggles for the battery and Claude usage readouts, which
had preferences and no way to reach them.
This commit is contained in:
Gabriel Brown
2026-08-22 08:54:43 -04:00
parent 8b96d907a1
commit 89761a7da3
156 changed files with 16439 additions and 6 deletions
@@ -0,0 +1,152 @@
---
name: hosting
description: Build and deploy Slidev presentations
---
# Hosting & Deployment
Build and deploy Slidev presentations.
## Build for Production
```bash
slidev build
```
Output: `dist/` folder (static SPA)
### Options
```bash
slidev build --base /talks/my-talk/ # Custom base path
slidev build --out public # Custom output dir
slidev build --download # Include PDF
slidev build --without-notes # Exclude notes
```
### Multiple Presentations
```bash
slidev build slides1.md slides2.md
```
## GitHub Pages
### GitHub Actions
Create `.github/workflows/deploy.yml`:
```yaml
name: Deploy
on:
push:
branches: [main]
permissions:
contents: read
pages: write
id-token: write
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 'lts/*'
- name: Install
run: npm install
- name: Build
run: npm run build -- --base /${{ github.event.repository.name }}/
- uses: actions/configure-pages@v4
- uses: actions/upload-pages-artifact@v3
with:
path: dist
- uses: actions/deploy-pages@v4
```
## Netlify
Create `netlify.toml`:
```toml
[build]
publish = 'dist'
command = 'npm run build'
[[redirects]]
from = '/*'
to = '/index.html'
status = 200
```
## Vercel
Create `vercel.json`:
```json
{
"rewrites": [
{ "source": "/(.*)", "destination": "/index.html" }
]
}
```
## Docker
### Using Official Image
```bash
docker run --name slidev --rm -it \
-v ${PWD}:/slidev \
-p 3030:3030 \
tangramor/slidev:latest
```
### Custom Dockerfile
```dockerfile
FROM tangramor/slidev:latest
COPY slides.md .
COPY public ./public
RUN npm run build
EXPOSE 80
CMD ["npx", "serve", "dist"]
```
## Base Path
For subdirectory deployment:
```bash
# Build
slidev build --base /my-slides/
# Or in headmatter
---
base: /my-slides/
---
```
## Router Mode
For servers without rewrite support:
```yaml
---
routerMode: hash
---
```
URLs become: `/#/1`, `/#/2`, etc.