name: Weekly Regression and Review on: schedule: # Friday 5:00 AM CST. Gitea schedules use UTC. # CST (UTC-6): 11:00 UTC. # During CDT this runs at 6:00 AM America/Chicago unless the cron is adjusted. - cron: '0 11 * * 5' workflow_dispatch: jobs: create-regression-review-issue: name: Create Regression & Review Issue runs-on: ubuntu-latest steps: - name: Create weekly review issue run: | python3 - <<'PYEOF' import json import urllib.request from datetime import datetime, timezone gitea_api = "http://100.79.253.19:3000/api/v1" repo = "${{ gitea.repository }}" token = "${{ gitea.token }}" run_url = "http://100.79.253.19:3000/${{ gitea.repository }}/actions/runs/${{ gitea.run_id }}" today = datetime.now(timezone.utc).strftime("%Y-%m-%d") body = f"""## Regression & Review - {today} Weekly checkpoint for moving **Throne of the Bone King** forward without letting regressions or vague design debt accumulate. **Action run:** {run_url} --- > Agent instructions: > > Post a separate comment for each completed section below. > If any section exposes a concrete bug, create a focused follow-up issue and link it from this review. > Keep notes practical: include affected files, screenshots when useful, and the next smallest shippable action. --- ### 1. Regression Smoke Pass - [ ] Run `npm run lint`. - [ ] Run `npm run test -- --runInBand`. - [ ] Run `npm run web:build`. - [ ] Run `npm run electron:build`. - [ ] Start `npm run dev:all` and confirm the browser app loads. - [ ] Confirm Toolkit becomes clickable only when resolution is Browser and socket is connected. - [ ] Confirm route persistence survives refresh on Home, Settings, Policies, Credits, and Toolkit. ### 2. Game Loop Readiness - [ ] Review New Game and Saves placeholders and identify the next implementation slice. - [ ] Verify the planned daily loop is still represented in Toolkit sections: Opening, Petitioners, Rulings, Seed, Resources, Map, Factions, Flags, Story, Lore, Audio, Credits, Endings, References. - [ ] Identify one gameplay loop that can be made testable with JSON fixtures this week. - [ ] Check whether content should stay in JSON or move toward a stronger schema. ### 3. Settings, Resolution, and Audio - [ ] Test Browser and phone-like resolution modes. - [ ] Verify mute, master, music, ambience, speech, and SFX settings persist. - [ ] Check that background music loops and respects mute/master/music values. - [ ] Identify any layout that scrolls or clips in fixed landscape sizes. ### 4. Toolkit Content Review - [ ] Review `src/data/credits.json` and the Toolkit Credits display. - [ ] Confirm socket read/save/change behavior is still covered by tests. - [ ] Identify the next Toolkit content resource that should get typed JSON support. - [ ] List any authoring forms that are now justified, but do not implement them from this issue. ### 5. Art, Fonts, and Presentation - [ ] Confirm the menu background, landing background, favicon, fonts, and audio assets render correctly. - [ ] Identify any oversized assets that should be optimized. - [ ] Check the main menu hierarchy, button contrast, and Toolkit distinction. ### 6. Backlog Decisions - [ ] Pick the top three follow-up issues that most directly advance the playable game. - [ ] Close or rewrite stale issues that no longer match current architecture. - [ ] Make sure each new issue has a small, testable outcome. --- _Auto-generated weekly by Gitea Actions._""" payload = { "title": f"Regression & Review - {today}", "body": body, } req = urllib.request.Request( f"{gitea_api}/repos/{repo}/issues", data=json.dumps(payload).encode("utf-8"), headers={ "Authorization": f"token {token}", "Content-Type": "application/json", }, method="POST", ) with urllib.request.urlopen(req, timeout=20) as response: result = json.loads(response.read()) print(f"Created issue #{result['number']}: {result['html_url']}") PYEOF