# Release guide ## 1. Prepare 1. Update the version in `package.json` and `extension/manifest.json`. 2. Run `npm ci` and `npm run build`. 3. Confirm `npm run check` reports that every generated install copy matches `shared/`. ## 2. Verify Run the repository gates: ```sh npm run check npm run test:browser npm run package:extension ``` For native verification, integrate into the pinned Harness checkout, run its Host and Client builds, start `pnpm dsh web`, and then run: ```sh npm run capture ``` The capture job tests the sidebar launcher, live controls, persistence after reload, and the wide-window Settings stacking regression before regenerating the committed PNG/GIF gallery. Visually review every file in `docs/screenshots/`. ## 3. Publish GitHub artifacts Commit the source and generated gallery, push the tag `vX.Y.Z`, then create a GitHub Release. Attach `release/open-sea-skin-extension-X.Y.Z.zip`, generated by `npm run package:extension`, and `open-sea-skin-X.Y.Z.tgz`, generated by `npm pack`. The tarball is the self-contained DSH marketplace bundle; the repository source also contains the static and native-source installers. Release notes should identify the tested Harness commit, describe migrations, and remind static-install users to run `install-skin.sh --update` after a Harness upgrade. ## 4. Optional Chrome Web Store submission Upload the same extension ZIP through a Chrome Web Store developer account. The listing privacy answers are: no data collection or sale; no remote code; `storage` saves preferences; loopback host access skins a locally running Harness. Keep [privacy.md](privacy.md) linked from the listing and retain the three.js MIT and Geist OFL notices in the package.