# Release Checklist

Use this checklist before every RC package.

## 1. Scope
- [ ] RC has one clear purpose.
- [ ] The base RC is documented.
- [ ] No unrelated changes were bundled in.
- [ ] Exercise player/video was not touched unless explicitly in scope.

## 2. Code checks
Run:
```bash
node --check assets/js/core/*.js
node --check assets/js/renderers/*.js
node --check assets/js/data.js
node --check assets/js/app.js
node --check assets/js/shell.js
php -l ota_youtube_proxy.php
```

## 3. Architecture checks
- [ ] Visual CSS lives in `next-system.css`.
- [ ] `app.css` remains minimal.
- [ ] New page markup lives in a renderer module.
- [ ] New icons are added to `core/icons.js`.
- [ ] New profile options are added to `core/profile-registry.js`.
- [ ] Renderer context is not mutated directly.
- [ ] Any new global action is registered/documented.

## 4. Manual functional checks
Test on mobile and desktop:
- [ ] Dashboard opens.
- [ ] Kalender opens.
- [ ] Program opens.
- [ ] Profil opens.
- [ ] Browser back works.
- [ ] Kalender → passöversikt → tillbaka works.
- [ ] Redigera profil → avbryt works.
- [ ] Redigera profil → spara works.
- [ ] Starta pass still opens exercise player.
- [ ] Exercise player/video behavior unchanged unless in scope.

## 5. Visual checks
- [ ] Topbar consistent.
- [ ] Page header spacing consistent.
- [ ] Cards/chips/buttons follow system styling.
- [ ] Calendar background is correct.
- [ ] Overview heading is not inset.
- [ ] Program/Profile still OK.

## 6. Package checks
- [ ] ZIP integrity test passes.
- [ ] QA report added.
- [ ] Codebase/architecture audit added when relevant.
- [ ] Package name clearly describes scope.
- [ ] User-facing summary says what changed and what did not.
