The reference fork had drifted four builds behind the app actually running backstage. What it was missing is Birthday Mode — the feature the band-lineup module was ported with, and which this snapshot never had.
main.js grows the Planning Center birthday fetch (pcoFetchBirthday), mm-dd normalising, and a pco-test-birthdays IPC handler behind the settings pane's Test Birthdays button. The birthdate is kept as MM-DD only — the year is discarded on purpose, so a volunteer's age never lands on the backstage machine. The sync fetches one birthday per unique person, best-effort: a token without People access just yields '' and never fails the sync.
renderer.js gains the celebration itself: the Wednesday→Tuesday birthday week (cached, and re-rendered when it rolls over, so an app left running for days lights up on its own), the canvas confetti loop, the gold glow, and the controls — on/off, intensity, and a force-on picker for testing that lives in memory and clears on restart.
index.html / styles.css carry the Birthday Mode block in the PCO settings pane.
Purely additive: 597 lines in, four out, and those four are the version and build number.
What was deliberately not synced
.claude/settings.local.json — the local copy is one machine's accumulated permission entries (paths under /Users/Studio/), not app source.
.claude/launch.json — exists only here in the repo; a wholesale copy would have deleted it.
A stray Spanish-strings test file sitting beside the app, which is not part of it.
Everything else already matched: propresenter-core/, propresenter-app/, README.md, and the mocks in tmp/ are untouched and identical.
Verification
The three JavaScript files parse (checked with JavaScriptCore — the machine this was prepared on has no Node, so the app itself was not run). The snapshot is byte-identical to the backstage app: every file was diffed against it after landing.
Reviewing the wider drift while here: modules/band-lineup on main is already current at 1.11.0, with client.js, server.js, matching.js, matching.test.js and style.css byte-identical to the working copies, tools/pco-band-mock.js in place and the README documenting it. The display snapshot was the only gap.
The reference fork had drifted four builds behind the app actually running backstage. What it was missing is Birthday Mode — the feature the `band-lineup` module was ported with, and which this snapshot never had.
- **main.js** grows the Planning Center birthday fetch (`pcoFetchBirthday`), mm-dd normalising, and a `pco-test-birthdays` IPC handler behind the settings pane's Test Birthdays button. The birthdate is kept as `MM-DD` only — the year is discarded on purpose, so a volunteer's age never lands on the backstage machine. The sync fetches one birthday per unique person, best-effort: a token without People access just yields `''` and never fails the sync.
- **renderer.js** gains the celebration itself: the Wednesday→Tuesday birthday week (cached, and re-rendered when it rolls over, so an app left running for days lights up on its own), the canvas confetti loop, the gold glow, and the controls — on/off, intensity, and a force-on picker for testing that lives in memory and clears on restart.
- **index.html / styles.css** carry the Birthday Mode block in the PCO settings pane.
Purely additive: **597 lines in, four out**, and those four are the version and build number.
### What was deliberately not synced
- `.claude/settings.local.json` — the local copy is one machine's accumulated permission entries (paths under `/Users/Studio/`), not app source.
- `.claude/launch.json` — exists only here in the repo; a wholesale copy would have deleted it.
- A stray Spanish-strings test file sitting beside the app, which is not part of it.
Everything else already matched: `propresenter-core/`, `propresenter-app/`, `README.md`, and the mocks in `tmp/` are untouched and identical.
### Verification
The three JavaScript files parse (checked with JavaScriptCore — the machine this was prepared on has no Node, so the app itself was not run). The snapshot is byte-identical to the backstage app: every file was diffed against it after landing.
Reviewing the wider drift while here: `modules/band-lineup` on `main` is already current at 1.11.0, with `client.js`, `server.js`, `matching.js`, `matching.test.js` and `style.css` byte-identical to the working copies, `tools/pco-band-mock.js` in place and the README documenting it. The display snapshot was the only gap.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
christian
added 1 commit 2026-09-23 18:11:59 -04:00
The reference fork had drifted four builds behind the app actually running
backstage. What it was missing is Birthday Mode, the feature the ProdDash
module was ported with and this snapshot never had:
- main.js grows the Planning Center birthday fetch (`pcoFetchBirthday`),
mm-dd normalising, and a `pco-test-birthdays` IPC handler behind the
settings pane's Test Birthdays button.
- renderer.js gains the whole celebration: the Wednesday→Tuesday birthday
week, the canvas confetti loop, the gold glow, and the controls that switch
it on and set its intensity.
- index.html and styles.css carry the Birthday Mode block in settings.
Purely additive — 597 lines in, four out, and those four are the version and
build number. Source only, as the fork has always been: `.claude/` settings
stay as they are (the local copy's are one machine's accumulated permissions,
and it has no launch.json to give), and the stray test file beside them is not
part of the app.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The reference fork had drifted four builds behind the app actually running backstage. What it was missing is Birthday Mode — the feature the
band-lineupmodule was ported with, and which this snapshot never had.pcoFetchBirthday), mm-dd normalising, and apco-test-birthdaysIPC handler behind the settings pane's Test Birthdays button. The birthdate is kept asMM-DDonly — the year is discarded on purpose, so a volunteer's age never lands on the backstage machine. The sync fetches one birthday per unique person, best-effort: a token without People access just yields''and never fails the sync.Purely additive: 597 lines in, four out, and those four are the version and build number.
What was deliberately not synced
.claude/settings.local.json— the local copy is one machine's accumulated permission entries (paths under/Users/Studio/), not app source..claude/launch.json— exists only here in the repo; a wholesale copy would have deleted it.Everything else already matched:
propresenter-core/,propresenter-app/,README.md, and the mocks intmp/are untouched and identical.Verification
The three JavaScript files parse (checked with JavaScriptCore — the machine this was prepared on has no Node, so the app itself was not run). The snapshot is byte-identical to the backstage app: every file was diffed against it after landing.
Reviewing the wider drift while here:
modules/band-lineuponmainis already current at 1.11.0, withclient.js,server.js,matching.js,matching.test.jsandstyle.cssbyte-identical to the working copies,tools/pco-band-mock.jsin place and the README documenting it. The display snapshot was the only gap.Co-Authored-By: Claude Opus 5 noreply@anthropic.com