Replicate the dsh-facet release stack: a Gitea Actions workflow
(.gitea/workflows/release.yml) + .gitea/scripts/release.sh read the commit
subjects since the last tag, bump package.json, prepend CHANGELOG.md, tag
vX.Y.Z and publish the release via API. Agreed install ref is
#semver:^0.1.0, and tags are what 'dsh plugin --profile web update' moves
to, so the workflow is what makes updates work. Add the release.test.sh
suite (43 checks), npm scripts (test:release / release:plan /
release:notes), AGENTS.md with the commit conventions, CHANGELOG.md seed,
and the README *Releases* rules.
On load, ensures the Playwright browser target (default: chromium) is installed
via `npx --yes playwright install chromium --with-deps` (background when missing,
so profile startup is not blocked), then symlinks the installed binary at
/usr/local/bin/google-chrome-stable (+ chromium). That exact name is what
dsh-ego-browser's PATH scan and its bundled --no-sandbox wrapper both look for,
so root/Docker containers get a working agent browser with zero manual PATH,
env-var or wrapper steps. Pre-existing user binaries/wrappers are never
clobbered. Ships as a dsh bundle (plain ESM, no build step); install via
`dsh plugin --profile web add github:<you>/dsh-browser-install#main` and update
with `dsh plugin --profile web update` (branch ref resolves the tip).