diff --git a/404.html b/404.html index 5508311..5ae3e9b 100644 --- a/404.html +++ b/404.html @@ -74,7 +74,7 @@ email - git PGP diff --git a/README.md b/README.md index 9cc2abc..286d137 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # saturn -my personal site, live at [danieldaum.net](https://danieldaum.net). mostly handwritten html and css, no build step. pushing to main deploys it. +my personal site, live at [danieldaum.net](https://danieldaum.net). mostly handwritten html and css, no build step. the source lives on [tangled](https://tangled.org/danieldaum.net/saturn) and is mirrored to github and gitea. pushing to main deploys it. ## run it locally @@ -13,12 +13,9 @@ then open localhost:8080. ## post on bluesky -1. post on bluesky -2. gitea → actions → sync → run +post it. the sync pipeline runs once an hour and puts it on the home page, /blog/ and /posts/. to run it now: tangled → saturn → pipelines → the newest sync run → retry. `git pull` before working on the site again. -it shows up on the home page, /blog/ and /posts/ a minute or two later. `git pull` before working on the site again. - -the same button refreshes the recent commits on /projects/ and /projects/holonet/ (locally: `mise run sync-commits`). +the same sync refreshes the recent commits on /projects/ and /projects/holonet/ (locally: `mise run sync-commits`). ## new blog post @@ -28,7 +25,7 @@ the same button refreshes the recent commits on /projects/ and /projects/holonet 4. add it to recent writing on the home page, with the word count 5. add it to `feed.xml` 6. if it's a now page, update `/now/` too -7. push, then gitea → actions → sync → run. that puts it on standard.site +7. push. the next sync puts it on standard.site reviews go in the same writing list, tagged #game, #movie, #show, #book or #album. they don't go in the feed. @@ -42,4 +39,5 @@ reviews go in the same writing list, tagged #game, #movie, #show, #book or #albu ## good to know - `internal/` never gets deployed. `internal/styles.html` shows every style on the site. +- ci lives in `.tangled/workflows/`: deploy and mirror run on every push to main, sync runs hourly. secrets are under settings → pipelines on tangled. - `internal/site-guide.md` is the long version of all this, written for an llm to read before helping out. diff --git a/about/index.html b/about/index.html index e75f0e8..71c36ec 100644 --- a/about/index.html +++ b/about/index.html @@ -253,7 +253,7 @@ email email email - git PGP diff --git a/books/a-court-of-thorns-and-roses/index.html b/books/a-court-of-thorns-and-roses/index.html index 99002fa..458ed65 100644 --- a/books/a-court-of-thorns-and-roses/index.html +++ b/books/a-court-of-thorns-and-roses/index.html @@ -101,7 +101,7 @@ email - git PGP diff --git a/books/a-head-full-of-ghosts/index.html b/books/a-head-full-of-ghosts/index.html index c0c2a29..6e8d8df 100644 --- a/books/a-head-full-of-ghosts/index.html +++ b/books/a-head-full-of-ghosts/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/books/all-systems-red/index.html b/books/all-systems-red/index.html index 8c61cce..1ed37e2 100644 --- a/books/all-systems-red/index.html +++ b/books/all-systems-red/index.html @@ -101,7 +101,7 @@ email - git PGP diff --git a/books/careless-people/index.html b/books/careless-people/index.html index 9b85591..2ed39f0 100644 --- a/books/careless-people/index.html +++ b/books/careless-people/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/books/carmilla/index.html b/books/carmilla/index.html index a921af9..1cd2625 100644 --- a/books/carmilla/index.html +++ b/books/carmilla/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/books/dark-age/index.html b/books/dark-age/index.html index 4cbef58..24b5341 100644 --- a/books/dark-age/index.html +++ b/books/dark-age/index.html @@ -101,7 +101,7 @@ email - git PGP diff --git a/books/furnace/index.html b/books/furnace/index.html index 743fe1f..6abdf2d 100644 --- a/books/furnace/index.html +++ b/books/furnace/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/books/hard-boiled-wonderland-and-the-end-of-the-world/index.html b/books/hard-boiled-wonderland-and-the-end-of-the-world/index.html index c148107..a24fa68 100644 --- a/books/hard-boiled-wonderland-and-the-end-of-the-world/index.html +++ b/books/hard-boiled-wonderland-and-the-end-of-the-world/index.html @@ -96,7 +96,7 @@ email - git PGP diff --git a/books/index.html b/books/index.html index e494cdf..ad6bf59 100644 --- a/books/index.html +++ b/books/index.html @@ -444,7 +444,7 @@ email - git PGP diff --git a/books/iron-gold/index.html b/books/iron-gold/index.html index f260fbb..9716ce0 100644 --- a/books/iron-gold/index.html +++ b/books/iron-gold/index.html @@ -97,7 +97,7 @@ email - git PGP diff --git a/books/light-bringer/index.html b/books/light-bringer/index.html index 2204d83..ef975db 100644 --- a/books/light-bringer/index.html +++ b/books/light-bringer/index.html @@ -101,7 +101,7 @@ email - git PGP diff --git a/books/project-hail-mary/index.html b/books/project-hail-mary/index.html index dcb3f41..fb0821a 100644 --- a/books/project-hail-mary/index.html +++ b/books/project-hail-mary/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/books/tender-is-the-flesh/index.html b/books/tender-is-the-flesh/index.html index a11be2b..f709026 100644 --- a/books/tender-is-the-flesh/index.html +++ b/books/tender-is-the-flesh/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/books/the-caves-of-steel/index.html b/books/the-caves-of-steel/index.html index 607fc2a..ab7c671 100644 --- a/books/the-caves-of-steel/index.html +++ b/books/the-caves-of-steel/index.html @@ -101,7 +101,7 @@ email - git PGP diff --git a/books/the-left-hand-of-darkness/index.html b/books/the-left-hand-of-darkness/index.html index bf40568..c2f0116 100644 --- a/books/the-left-hand-of-darkness/index.html +++ b/books/the-left-hand-of-darkness/index.html @@ -101,7 +101,7 @@ email - git PGP diff --git a/books/the-strength-of-the-few/index.html b/books/the-strength-of-the-few/index.html index c19aa67..5612a18 100644 --- a/books/the-strength-of-the-few/index.html +++ b/books/the-strength-of-the-few/index.html @@ -101,7 +101,7 @@ email - git PGP diff --git a/books/the-will-of-the-many/index.html b/books/the-will-of-the-many/index.html index b7b3e64..9d0eab4 100644 --- a/books/the-will-of-the-many/index.html +++ b/books/the-will-of-the-many/index.html @@ -101,7 +101,7 @@ email - git PGP diff --git a/books/tomorrow-and-tomorrow-and-tomorrow/index.html b/books/tomorrow-and-tomorrow-and-tomorrow/index.html index ee44568..a609029 100644 --- a/books/tomorrow-and-tomorrow-and-tomorrow/index.html +++ b/books/tomorrow-and-tomorrow-and-tomorrow/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/books/we-used-to-live-here/index.html b/books/we-used-to-live-here/index.html index c68e885..241497a 100644 --- a/books/we-used-to-live-here/index.html +++ b/books/we-used-to-live-here/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/books/when-the-wolf-comes-home/index.html b/books/when-the-wolf-comes-home/index.html index 78252ef..10bf7e2 100644 --- a/books/when-the-wolf-comes-home/index.html +++ b/books/when-the-wolf-comes-home/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/books/where-the-axe-is-buried/index.html b/books/where-the-axe-is-buried/index.html index ef3aee0..af5cc00 100644 --- a/books/where-the-axe-is-buried/index.html +++ b/books/where-the-axe-is-buried/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/changelog/index.html b/changelog/index.html index 5f9413f..5d60dc1 100644 --- a/changelog/index.html +++ b/changelog/index.html @@ -317,7 +317,7 @@ email email - git PGP diff --git a/games/baldurs-gate-3/index.html b/games/baldurs-gate-3/index.html index 4de578f..eeb8451 100644 --- a/games/baldurs-gate-3/index.html +++ b/games/baldurs-gate-3/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/battlefield-6/index.html b/games/battlefield-6/index.html index 9a0cbcd..16ad55a 100644 --- a/games/battlefield-6/index.html +++ b/games/battlefield-6/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/call-of-duty-modern-warfare-2-2009/index.html b/games/call-of-duty-modern-warfare-2-2009/index.html index 62855de..ab763e5 100644 --- a/games/call-of-duty-modern-warfare-2-2009/index.html +++ b/games/call-of-duty-modern-warfare-2-2009/index.html @@ -96,7 +96,7 @@ email - git PGP diff --git a/games/clair-obscur-expedition-33/index.html b/games/clair-obscur-expedition-33/index.html index b95d8ed..af12584 100644 --- a/games/clair-obscur-expedition-33/index.html +++ b/games/clair-obscur-expedition-33/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/demonschool/index.html b/games/demonschool/index.html index 8c3a190..62bb4f0 100644 --- a/games/demonschool/index.html +++ b/games/demonschool/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/dispatch/index.html b/games/dispatch/index.html index 1075043..a5498c7 100644 --- a/games/dispatch/index.html +++ b/games/dispatch/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/halo-2/index.html b/games/halo-2/index.html index 1df0e5b..299f247 100644 --- a/games/halo-2/index.html +++ b/games/halo-2/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/halo-reach/index.html b/games/halo-reach/index.html index 6293a3e..bdeb46a 100644 --- a/games/halo-reach/index.html +++ b/games/halo-reach/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/index.html b/games/index.html index 2505635..c08dcf3 100644 --- a/games/index.html +++ b/games/index.html @@ -1147,7 +1147,7 @@ email email - git PGP diff --git a/games/journey/index.html b/games/journey/index.html index 60639b9..d3390d9 100644 --- a/games/journey/index.html +++ b/games/journey/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/kingdom-come-deliverance-ii/index.html b/games/kingdom-come-deliverance-ii/index.html index b55a335..dc77681 100644 --- a/games/kingdom-come-deliverance-ii/index.html +++ b/games/kingdom-come-deliverance-ii/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/kotor-ii-the-sith-lords/index.html b/games/kotor-ii-the-sith-lords/index.html index 527af4b..6cd1508 100644 --- a/games/kotor-ii-the-sith-lords/index.html +++ b/games/kotor-ii-the-sith-lords/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/marathon/index.html b/games/marathon/index.html index 970130a..e0e6bf5 100644 --- a/games/marathon/index.html +++ b/games/marathon/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/mass-effect-2/index.html b/games/mass-effect-2/index.html index 7a629c0..7f7227d 100644 --- a/games/mass-effect-2/index.html +++ b/games/mass-effect-2/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/pokemon-emerald/index.html b/games/pokemon-emerald/index.html index a5801f6..8af7edd 100644 --- a/games/pokemon-emerald/index.html +++ b/games/pokemon-emerald/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/replaced/index.html b/games/replaced/index.html index dd91345..d4da9cd 100644 --- a/games/replaced/index.html +++ b/games/replaced/index.html @@ -96,7 +96,7 @@ email - git PGP diff --git a/games/returnal/index.html b/games/returnal/index.html index 6cc365a..f2526d8 100644 --- a/games/returnal/index.html +++ b/games/returnal/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/south-of-midnight/index.html b/games/south-of-midnight/index.html index fce973c..16d15f6 100644 --- a/games/south-of-midnight/index.html +++ b/games/south-of-midnight/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/star-wars-battlefront-ii-2005/index.html b/games/star-wars-battlefront-ii-2005/index.html index 5dce95c..26e07c1 100644 --- a/games/star-wars-battlefront-ii-2005/index.html +++ b/games/star-wars-battlefront-ii-2005/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/star-wars-knights-of-the-old-republic/index.html b/games/star-wars-knights-of-the-old-republic/index.html index 8ad2835..c5733fb 100644 --- a/games/star-wars-knights-of-the-old-republic/index.html +++ b/games/star-wars-knights-of-the-old-republic/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/star-wars-outlaws/index.html b/games/star-wars-outlaws/index.html index 57cf890..74847a8 100644 --- a/games/star-wars-outlaws/index.html +++ b/games/star-wars-outlaws/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/star-wars-republic-commando/index.html b/games/star-wars-republic-commando/index.html index a68fa84..5e08578 100644 --- a/games/star-wars-republic-commando/index.html +++ b/games/star-wars-republic-commando/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/star-wars-the-old-republic/index.html b/games/star-wars-the-old-republic/index.html index 1f4cead..67e1d7b 100644 --- a/games/star-wars-the-old-republic/index.html +++ b/games/star-wars-the-old-republic/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/stardew-valley/index.html b/games/stardew-valley/index.html index 01d65d4..b8f37a8 100644 --- a/games/stardew-valley/index.html +++ b/games/stardew-valley/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/starfield/index.html b/games/starfield/index.html index 60d201d..b4613fd 100644 --- a/games/starfield/index.html +++ b/games/starfield/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/the-callisto-protocol/index.html b/games/the-callisto-protocol/index.html index 80417df..8fafea2 100644 --- a/games/the-callisto-protocol/index.html +++ b/games/the-callisto-protocol/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/the-last-of-us-part-i/index.html b/games/the-last-of-us-part-i/index.html index d1207fc..cf984d3 100644 --- a/games/the-last-of-us-part-i/index.html +++ b/games/the-last-of-us-part-i/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/the-last-of-us-part-ii/index.html b/games/the-last-of-us-part-ii/index.html index 2f706fc..7f2d95c 100644 --- a/games/the-last-of-us-part-ii/index.html +++ b/games/the-last-of-us-part-ii/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/the-quarry/index.html b/games/the-quarry/index.html index 38eb306..6495439 100644 --- a/games/the-quarry/index.html +++ b/games/the-quarry/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/v-rising/index.html b/games/v-rising/index.html index f221b43..eb622a5 100644 --- a/games/v-rising/index.html +++ b/games/v-rising/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/vampire-survivors/index.html b/games/vampire-survivors/index.html index 314ec7c..1f42743 100644 --- a/games/vampire-survivors/index.html +++ b/games/vampire-survivors/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/vampire-the-masquerade-bloodlines-2/index.html b/games/vampire-the-masquerade-bloodlines-2/index.html index c188007..1ef5536 100644 --- a/games/vampire-the-masquerade-bloodlines-2/index.html +++ b/games/vampire-the-masquerade-bloodlines-2/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/games/warhammer-40-000-space-marine-ii/index.html b/games/warhammer-40-000-space-marine-ii/index.html index 0fa0f26..4e36454 100644 --- a/games/warhammer-40-000-space-marine-ii/index.html +++ b/games/warhammer-40-000-space-marine-ii/index.html @@ -100,7 +100,7 @@ email - git PGP diff --git a/garden/index.html b/garden/index.html index 6ae7c43..f09129b 100644 --- a/garden/index.html +++ b/garden/index.html @@ -200,7 +200,7 @@ email email email - git PGP changelog diff --git a/internal/site-guide.md b/internal/site-guide.md index 4b1606d..63c9c59 100644 --- a/internal/site-guide.md +++ b/internal/site-guide.md @@ -5,7 +5,8 @@ A guide for an assistant helping me with danieldaum.net. Read all of it before c ## the basics - Handwritten HTML and one stylesheet (`global.css`). No framework, no build step, and no JavaScript on public pages. -- Hosting is Cloudflare Pages. Pushing to `main` on my Gitea runs `.gitea/workflows/deploy.yaml`. It copies every tracked file except `internal/`, `scripts/`, `workers/`, `.gitea/`, `.gitignore` and `mise.toml`, and deploys them. +- The source lives on Tangled: https://tangled.org/danieldaum.net/saturn (`origin`, `git@tangled.org:danieldaum.net/saturn`). GitHub and my Gitea are read-only mirrors. +- Hosting is Cloudflare Pages. Pushing to `main` on Tangled runs `.tangled/workflows/deploy.yml` on the public spindle. It copies every tracked file except `internal/`, `scripts/`, `workers/`, `.tangled/`, `.gitignore` and `mise.toml`, and deploys them. CI details are in section 8. - Images live on R2, served from `https://assets.danieldaum.net/img/...`. Photos are `img/photos/.webp`. - Likes and comments come from `functions/_middleware.js` and a D1 database. They work on `/about/`, `/now/`, `/now//` and `/blog//`, with no setup per post. - My Bluesky account runs on my own PDS: `https://pds.danieldaum.net`, DID `did:plc:e3z5gj5iyuwgqao562bo4bdf`, handle `danieldaum.net`. @@ -41,6 +42,7 @@ garden/ ratings/ changelog/ privacy/ feed.xml atom feed, long-form posts only internal/ never deployed: template.html, example.html, styles.html, this guide scripts/ sync-posts.mjs, sync-commits.mjs, sync-standard.mjs, word-count.py +.tangled/workflows/ deploy.yml, mirror.yml, sync.yml (ci, see section 8) .well-known/ atproto-did, site.standard.publication ``` @@ -49,9 +51,8 @@ scripts/ sync-posts.mjs, sync-commits.mjs, sync-standard.mjs, word- ## 1. posting on bluesky 1. Post on Bluesky. -2. Gitea → Actions → **Sync** → Run. -That's it. The workflow runs `scripts/sync-posts.mjs`, commits "chore: sync" and pushes, which deploys. It takes a few minutes. Afterwards, `git pull` before editing locally. +That's it. The sync pipeline runs once an hour: it runs `scripts/sync-posts.mjs` (and the other sync scripts), commits "chore: sync" and pushes, which deploys. To run it now: Tangled → saturn → Pipelines → the newest sync run → Retry. Afterwards, `git pull` before editing locally. What the sync does: @@ -121,7 +122,7 @@ Work out the slug (`now/oct-2026`, `blog/some-title`) and the date first. - `content type="html"` in CDATA: the post body. Banner first, as `
`. Absolute URLs, no `class`/`aria-*`/`target`/`rel` attributes, one block per line, indented 6 spaces. 9. **Now posts only:** replace the article in `now/index.html` with the new post's article. Keep its likes section as `data-social="/now//"` so likes and comments are shared with the dated page. 10. Check it locally, then show me the diff for me to commit and push. -11. After it's deployed: Gitea → Actions → **Sync** → Run. That publishes it to standard.site (see section 6) and adds a `` tag to the page. +11. After it's deployed, the next hourly sync publishes it to standard.site (see section 6) and adds a `` tag to the page. Retry the newest sync run to do it straight away. When an existing post changes, also update its word count on the home page and its `` in `feed.xml`. @@ -234,7 +235,7 @@ Every game, movie, show, book and album has a page (`games//` and so on) w My long-form posts are published as `site.standard.document` records on my PDS, so atproto reading apps can find and follow them. It's metadata only (title, description, path, date, tag and a cover image). The post itself stays on the site. -- `scripts/sync-standard.mjs` runs as part of the **Sync** button, and locally with `mise run sync-standard`. Locally it needs the app password: +- `scripts/sync-standard.mjs` runs as part of the hourly sync, and locally with `mise run sync-standard`. Locally it needs the app password: ```bash read -s -p "app password: " ATPROTO_APP_PASSWORD && echo && export ATPROTO_APP_PASSWORD && mise run sync-standard ``` @@ -242,7 +243,7 @@ My long-form posts are published as `site.standard.document` records on my PDS, - **Record IDs** come from the post's date, so changing a date creates a new record. The script never deletes records. - **Only changed records are written,** so running it twice is harmless. - **The publication record** has ID `3mbd3542k2222`. Its address is also in `.well-known/site.standard.publication`. -- **Gitea secrets:** `SYNC_TOKEN` (repo write, so the push triggers a deploy) and `ATPROTO_APP_PASSWORD`. Without the app password, the standard.site step skips itself. +- **Secrets:** `ATPROTO_APP_PASSWORD` is a spindle secret (section 8). Without it, the standard.site step skips itself. ## 7. projects @@ -254,13 +255,34 @@ A project shows up in three places, newest first: **Pills.** `
` with `#new`. `#in-development` also carries `pill--dev`, a pulsing dot that is commented out in `global.css` for now. They're grey, never lime. Take them off when the project isn't new any more. -**Commit log.** `scripts/sync-commits.mjs` reads recent commits from my Gitea's public API and writes them between `` markers. It runs with the **Sync** button, or locally with `mise run sync-commits`. To add a repo, put the markers inside a `.commit-log` and add the page to `PAGES` in the script. On the `/projects/` card, the log is `aria-hidden` because the whole card is a link, and it hides the hash to save room. +**Commit log.** `scripts/sync-commits.mjs` reads recent commits from my Gitea's public API and writes them between `` markers. It runs with the hourly sync, or locally with `mise run sync-commits`. To add a repo, put the markers inside a `.commit-log` and add the page to `PAGES` in the script. On the `/projects/` card, the log is `aria-hidden` because the whole card is a link, and it hides the hash to save room. -## 8. don't +## 8. ci (tangled spindle) + +Three workflows in `.tangled/workflows/`, run by the public spindle (`spindle.tangled.sh`). Status shows under Pipelines on the repo page. + +- **deploy.yml** (every push to `main`): stages the public files and runs `npx wrangler@4 pages deploy`. +- **mirror.yml** (every push to `main`): force-pushes the newest `main` to GitHub and Gitea. Never push to those directly; it gets overwritten. +- **sync.yml** (hourly, plus Retry): checks out the newest `main`, runs the three sync scripts, and if anything changed commits "chore: sync" and pushes back over SSH, which runs deploy and mirror. + +**Secrets** (Tangled → saturn → Settings → Pipelines): `CLOUDFLARE_API_TOKEN`, `CLOUDFLARE_ACCOUNT_ID`, `GH_MIRROR_TOKEN` (GitHub, contents write on this repo), `GITEA_MIRROR_TOKEN`, `ATPROTO_APP_PASSWORD`, `TANGLED_PUSH_KEY` (private half of the `saturn-spindle` SSH key on my Tangled account). + +**Gotchas** (nixery engine): + +- There's no "run workflow" button. A manual run is the Retry button on an existing run. +- All steps share one container and run `bash -c` without `set -e`, so multi-line steps start with `set -euo pipefail`. +- Images only have bash, git, coreutils, tar and zstd. Anything else (`gnugrep`, `findutils`, `nodejs`, `openssh`) goes under `dependencies: nixpkgs:`. +- Big nixpkgs packages can time out on nixery with a 504 (`wrangler` did). Prefer `npx` for those. +- The checkout is one commit deep (`clone.depth: 0` also means 1). `git fetch --unshallow origin` for full history. +- There's no `/etc/passwd`, which `ssh` needs. sync.yml writes one before pushing. +- A push from a pipeline triggers the push workflows. `git push -o skip-ci` skips them; `[skip ci]` in a message doesn't. + +## 9. don't - Don't add JavaScript, inline styles or new external hosts to public pages without asking. - Don't hand-edit content between `` or `` markers. - Don't use `#view-...` links outside `/photos/`. Posts and banners link to `/photos//`. - Don't commit `.claude/launch.json`, `.dev.vars` or anything with a password in it. - Don't re-add `@view-transition` (it caused unstyled loads in Safari). +- Don't push to GitHub or Gitea. They're mirrors of Tangled. - Don't commit or push. Show me the changes instead. diff --git a/internal/social/index.html b/internal/social/index.html index 1f60969..d68a555 100644 --- a/internal/social/index.html +++ b/internal/social/index.html @@ -329,7 +329,7 @@
@@ -923,7 +923,7 @@