Band Lineup 1.12.0: Sync uses Planning Center notes for mics, keeps your moves, and dragging works on touch #51

Merged
christian merged 3 commits from claude/band-lineup-drag into main 2026-10-20 13:17:37 -04:00
Collaborator

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

## 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 touch 2026-10-20 13:14:59 -04:00
christian merged commit 8e4a0e849e into main 2026-10-20 13:17:37 -04:00
christian deleted branch claude/band-lineup-drag 2026-10-20 13:18:01 -04:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: michael/ProdDash#51