# antisocial — working notes A self-hosted page that shows a social post without the app. StopTheMadness rewrites links to X, Threads, Instagram, TikTok and Bluesky into `//`; this resolves the post by driving a real headless Chromium and renders the media, the text, a platform badge and a copy-the-original button. Built for one person on a private network, with no authentication. `README.md` has the rewrite rules and the user-facing description. This file is the working context. This repository is public and deliberately says nothing about where any particular instance runs. Keep deployment specifics — hostnames, clusters, registries, manifests — out of it; they belong in whatever private repo does the deploying. Configuration is read from the environment, and CI reads the registry from repository variables. ## The main job: "this link didn't work" That is the recurring task. Work it in this order and do not skip step 1. **1. Reproduce against the real browser.** ```sh npm run resolve -- 'https://www.instagram.com/user/reel/ABC123/' ``` Prints the resolved `Post` as JSON, or the error. This is the ground truth. **2. Decide what kind of failure it is.** These are genuinely different and get different fixes: | Symptom | What it usually is | | --- | --- | | Works now, failed before | Rate limiting. TikTok especially. Not a bug — verify by waiting and retrying before changing anything. | | Verification puzzle | Expected. Should redirect to `/challenge/`. If it reports an error instead, the detection raced the render. | | Right media, wrong count | The structured payload was missed and it fell through to the DOM, which only shows the first carousel item. | | Poster image where a video belongs | Same fall-through, plus the `