~ knotless Search/
↑↓ move↵ open⇧↵ all results

grain.social/grain

photography-focused photo sharing platform

grain.social
1 collaborator
0
2

marketing: notice of the move to the new server on Monday, Nov 16

Open
Open chadtmiller.com wants to merge into main from grain.social/grain:marketing/cutover-notice

What changes

Notice of the move to the new server on Monday, Nov 16. marketing/update/ holds:

  • three stories for grain.social's account: heads up, update today, and the day itself;
  • the feed image old apps show after the move;
  • the Bluesky posts from @grain.social, including a reply for web users.

posts.json holds every post's text, each image's alt text, and the steps they go out in; README.md says when each goes out.

Posting. post.mjs posts a step as grain.social: a Grain story, or a Bluesky post with its image and reply. It logs in with grain.social's app password, which is never kept in the repo, and won't post a step twice.

node marketing/update/render.mjs "Monday, Nov 16"
GRAIN_SOCIAL_PASSWORD=<app password> node marketing/update/post.mjs <step> [--dry-run]

Why

Every version before iOS 11 and Android 0.8.0 stops working at the cutover, and updating signs everyone out once. People need a week's notice. Keeping the copy, the images and the posting in one place means a change of date is one edit and one render.

How it was checked

  • All four images rendered and checked by eye.
  • Each post is under 300 graphemes (announcement 287), with no em dashes.
  • post.mjs story-1 --dry-run and announce --dry-run logged in as grain.social on its PDS and showed the records they would create.
  • Nothing has been posted yet.

Shortcomings

  • The App Store and Google Play pills are plain text, not the official store badges.
  • post.mjs speaks XRPC with fetch, not a client library; it only needs login, upload, list and create.

🤖 Generated with Claude Code

chadtmiller.com added 1 commit
Approved an earlier version

This adds marketing/update/. It holds the cutover notice copy and posts in the README, an HTML template, a render script, and four rendered PNGs. The script and template are consistent with each other. ../login-bg.jpg resolves to the existing marketing/login-bg.jpg, and the alt text matches the rendered copy. I did not open the PNGs. I only read the code that produces them.

One small fix: the README's last paragraph points at web/static/app-version.json, but the repo has no web/ directory. AGENTS.md puts the file at static/app-version.json. Please correct the path so nobody goes looking in the wrong place.

The caveat about grain-serve not yet answering the old feed method is stated clearly in the pull, so I'm not blocking on it.

marketing/update/README.mdline 68Outdated
place of an error. grain-serve does not answer the old feed method yet, so
until it does, those versions show their own error after the cutover. iOS 10
and Android 0.7.0 ask to be updated once the minimums in
`web/static/app-version.json` are raised.
review.knotless.dev

The repo has no web/ directory. AGENTS.md puts this file at static/app-version.json.

Approved an earlier version

Since my approval, the pull adds posts.json and post.mjs, and the README now points at them. The stale web/static/app-version.json path I flagged is gone. The README now says /app-version.json and names the Caddyfile that serves the feed item. I read post.mjs and posts.json in full, and found nothing that blocks merging.

Two small things you could fix later:

  • If announce creates the root post and the reply then fails, a rerun sees the root text already posted and exits. The reply never goes out, so you would have to post it by hand.
  • A story's duplicate check compares the uploaded blob's CID with recent stories. That works because identical bytes give the same CID, but it uploads the blob before checking.
chadtmiller.com added 1 commit
Approved

Since my last approval, the copy has been reworded from "new server" to "big update". posts.json and render.mjs agree with each other on this, and the alt text matches the rendered copy for story-1 and story-3. I didn't open the PNGs. Nothing I approved earlier is affected, because post.mjs is unchanged.

The pull's title and body still say "move to the new server". You may want to update them to match the new wording.

Approved

1 approval

Some checks were not successful

1 failed, 1 passed

1 failed check checkFailure in 7s
1 passed check testSuccess in 13s