Every week the booth writes the leader's and each vocalist's mic into their Planning Center note, for example "Mix 8, VOX 5" or "Mix 1, Vox 1". That's needed because those assignments change weekly and the position is just "Vocalist". Sync used to ignore the notes and put the singers on Vox 2–5 in whatever order Planning Center listed them.
Now, anyone whose note names a spot goes there first:
The note's mix number has to match the slot's MIX.
The role part ("VOX 5", "Drums") is scored the same way as a position name.
"NA" or a blank note is ignored.
Everyone else is placed by position, as before.
Sync: two other fixes
I checked these against the October 25 plan and the live board.
A person on the plan twice could fill two spots. Mike Powell is both [Leader] and Guitar [Acoustic]. Depending on the order Planning Center returns people, his second entry could take Guitar 2 and push Craig off the board. Assignment now uses each person once.
Moving a synced person was undone by the next Sync. A move now counts as a hand placement for the current plan, and Sync leaves it alone.
The previous fix (1.11.1) is working on the live board: none of October 18's people remain.
Dragging
The editor used the browser's built-in drag-and-drop. That has three problems:
It never fires for a finger on a touchscreen.
The drop highlight flickered.
Any board update arriving mid-drag dropped the drag.
Dragging now runs on pointer events, with one path for mouse and touch:
A mouse drags as soon as it moves.
A finger holds still for a moment first, so a swipe still scrolls.
A floating copy of the photo follows the pointer, and the spot under it lights up.
The editor auto-scrolls near its edges.
Board updates wait until the drop.
Tap-a-photo-then-tap-a-spot still works.
Verified
matching.test.js: new tests use the real October 25 and November 1 notes. They cover all four singers on the right mics, Mike placed only once, "DP48, Drums" landing on [DRUMS], "NA" ignored, and Mix 1 never matching MIX 10. On the previous matching code, the singers land on the wrong mics and Mike can take two spots.
Sync harness: a JavaScriptCore harness ran the real server.js with the October 25 roster, its notes and the real slot labels, starting from an October 18 board. Every check passes:
Rosaliz is on Vox 2, DJ on Vox 3, Genesis on Vox 4 and Bianca on Vox 5.
Nobody from last week remains.
Nobody appears twice.
A hand swap survives a re-sync.
Dragging: the real client.js ran in a browser on the live board's data. I tested a mouse drag, a touch hold-and-drag, a board update arriving mid-drag, a swipe that must not drag, and tap-to-place.
## Sync: Planning Center notes decide the mic
Every week the booth writes the leader's and each vocalist's mic into their Planning Center note, for example "Mix 8, VOX 5" or "Mix 1, Vox 1". That's needed because those assignments change weekly and the position is just "Vocalist". Sync used to ignore the notes and put the singers on Vox 2–5 in whatever order Planning Center listed them.
Now, anyone whose note names a spot goes there first:
- The note's mix number has to match the slot's MIX.
- The role part ("VOX 5", "Drums") is scored the same way as a position name.
- "NA" or a blank note is ignored.
Everyone else is placed by position, as before.
## Sync: two other fixes
I checked these against the October 25 plan and the live board.
- **A person on the plan twice could fill two spots.** Mike Powell is both [Leader] and Guitar [Acoustic]. Depending on the order Planning Center returns people, his second entry could take Guitar 2 and push Craig off the board. Assignment now uses each person once.
- **Moving a synced person was undone by the next Sync.** A move now counts as a hand placement for the current plan, and Sync leaves it alone.
The previous fix (1.11.1) is working on the live board: none of October 18's people remain.
## Dragging
The editor used the browser's built-in drag-and-drop. That has three problems:
- It never fires for a finger on a touchscreen.
- The drop highlight flickered.
- Any board update arriving mid-drag dropped the drag.
Dragging now runs on pointer events, with one path for mouse and touch:
- A mouse drags as soon as it moves.
- A finger holds still for a moment first, so a swipe still scrolls.
- A floating copy of the photo follows the pointer, and the spot under it lights up.
- The editor auto-scrolls near its edges.
- Board updates wait until the drop.
- Tap-a-photo-then-tap-a-spot still works.
## Verified
- **`matching.test.js`:** new tests use the real October 25 and November 1 notes. They cover all four singers on the right mics, Mike placed only once, "DP48, Drums" landing on [DRUMS], "NA" ignored, and Mix 1 never matching MIX 10. On the previous matching code, the singers land on the wrong mics and Mike can take two spots.
- **Sync harness:** a JavaScriptCore harness ran the real `server.js` with the October 25 roster, its notes and the real slot labels, starting from an October 18 board. Every check passes:
- Rosaliz is on Vox 2, DJ on Vox 3, Genesis on Vox 4 and Bianca on Vox 5.
- Nobody from last week remains.
- Nobody appears twice.
- A hand swap survives a re-sync.
- **Dragging:** the real `client.js` ran in a browser on the live board's data. I tested a mouse drag, a touch hold-and-drag, a board update arriving mid-drag, a swipe that must not drag, and tap-to-place.
Not yet tried on the production machine.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
christian
added 2 commits 2026-10-20 13:12:16 -04:00
The editor used the browser's built-in drag-and-drop, which never fires for
a touchscreen, flickered its drop highlight over a card's inner parts, and
lost the drag whenever a board update arrived mid-drag (the editor was
rebuilt under the pointer).
Dragging is now driven by pointer events, one path for mouse and touch: a
mouse drags as soon as it moves, a finger holds still for a moment first so
a swipe still scrolls. A floating copy of the photo follows the pointer, the
spot under it lights up, the editor auto-scrolls near its edges, and board
updates wait until the drop. Tap a photo then tap a spot still works.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Two Sync problems found by checking the real October 25 plan against the
board:
- Someone on the plan twice (Mike Powell is Leader and Guitar [Acoustic])
could fill two spots, pushing a real player off the board. Which spot
the duplicate took depended on the order Planning Center returned
people, so it only happened some weeks. Assignment now uses each person
once.
- Moving a synced person to another spot was undone by the next Sync,
which re-placed everyone it had filled. A move is now a hand placement
for the current plan and Sync leaves it alone.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
christian
added 1 commit 2026-10-20 13:14:49 -04:00
The booth writes each vocalist's and the leader's mic into their Planning
Center note every week ("Mix 8, VOX 5", "Mix 1, Vox 1"), because those
change week to week and the position name ("Vocalist") carries no number.
Sync ignored the notes and dropped the singers onto Vox 2-5 in whatever
order Planning Center listed them.
Sync now reads each team member's note and places anyone whose note names
a spot there first: the mix number must agree with the slot's MIX, and the
role ("VOX 5", "Drums") is scored like a position. "NA" or a blank note
says nothing. Everyone else is placed by position as before. Tests use the
real Oct 25 and Nov 1 notes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
christian
changed title from Band Lineup 1.12.0: easier dragging, and Sync keeps your moves and places each person once to Band Lineup 1.12.0: Sync uses Planning Center notes for mics, keeps your moves, and dragging works on touch2026-10-20 13:14:59 -04:00
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.
Sync: Planning Center notes decide the mic
Every week the booth writes the leader's and each vocalist's mic into their Planning Center note, for example "Mix 8, VOX 5" or "Mix 1, Vox 1". That's needed because those assignments change weekly and the position is just "Vocalist". Sync used to ignore the notes and put the singers on Vox 2–5 in whatever order Planning Center listed them.
Now, anyone whose note names a spot goes there first:
Everyone else is placed by position, as before.
Sync: two other fixes
I checked these against the October 25 plan and the live board.
The previous fix (1.11.1) is working on the live board: none of October 18's people remain.
Dragging
The editor used the browser's built-in drag-and-drop. That has three problems:
Dragging now runs on pointer events, with one path for mouse and touch:
Verified
matching.test.js: new tests use the real October 25 and November 1 notes. They cover all four singers on the right mics, Mike placed only once, "DP48, Drums" landing on [DRUMS], "NA" ignored, and Mix 1 never matching MIX 10. On the previous matching code, the singers land on the wrong mics and Mike can take two spots.server.jswith the October 25 roster, its notes and the real slot labels, starting from an October 18 board. Every check passes:client.jsran in a browser on the live board's data. I tested a mouse drag, a touch hold-and-drag, a board update arriving mid-drag, a swipe that must not drag, and tap-to-place.Not yet tried on the production machine.
🤖 Generated with Claude Code
The booth writes each vocalist's and the leader's mic into their Planning Center note every week ("Mix 8, VOX 5", "Mix 1, Vox 1"), because those change week to week and the position name ("Vocalist") carries no number. Sync ignored the notes and dropped the singers onto Vox 2-5 in whatever order Planning Center listed them. Sync now reads each team member's note and places anyone whose note names a spot there first: the mix number must agree with the slot's MIX, and the role ("VOX 5", "Drums") is scored like a position. "NA" or a blank note says nothing. Everyone else is placed by position as before. Tests use the real Oct 25 and Nov 1 notes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>Band Lineup 1.12.0: easier dragging, and Sync keeps your moves and places each person onceto Band Lineup 1.12.0: Sync uses Planning Center notes for mics, keeps your moves, and dragging works on touch