Files
christianandClaude Opus 5 882a418a0f Band Lineup Display snapshot catches up: 1.3.6 → 1.3.10
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>
2026-09-23 16:37:54 -04:00

40 lines
2.0 KiB
JavaScript

const { contextBridge, ipcRenderer } = require('electron');
contextBridge.exposeInMainWorld('lineup', {
addImagesDialog: () => ipcRenderer.invoke('add-images-dialog'),
addImagesPaths: (paths) => ipcRenderer.invoke('add-images-paths', paths),
loadState: () => ipcRenderer.invoke('load-state'),
saveState: (payload) => ipcRenderer.invoke('save-state', payload),
deleteLibraryImage: (fileName) => ipcRenderer.invoke('delete-library-image', fileName),
imageUrl: (fileName) => ipcRenderer.invoke('image-url', fileName),
parallaxAssets: (fileName) => ipcRenderer.invoke('parallax-assets', fileName),
pcoStatus: () => ipcRenderer.invoke('pco-status'),
pcoConnect: (payload) => ipcRenderer.invoke('pco-connect', payload),
pcoDisconnect: () => ipcRenderer.invoke('pco-disconnect'),
pcoServiceTypes: () => ipcRenderer.invoke('pco-service-types'),
pcoPositionOptions: (serviceTypeId) => ipcRenderer.invoke('pco-position-options', serviceTypeId),
pcoSyncUpcomingPlan: (payload) => ipcRenderer.invoke('pco-sync-upcoming-plan', payload),
pcoTestBirthdays: () => ipcRenderer.invoke('pco-test-birthdays'),
onMenuAddPhotos: (cb) => {
ipcRenderer.on('menu-add-photos', () => cb());
},
appVersion: () => ipcRenderer.invoke('app-version'),
display: {
status: () => ipcRenderer.invoke('display-status'),
setEnabled: (enabled) => ipcRenderer.invoke('display-set-enabled', enabled),
setPort: (port) => ipcRenderer.invoke('display-set-port', port),
copyUrl: (url) => ipcRenderer.invoke('display-copy-url', url),
},
proPresenter: {
status: () => ipcRenderer.invoke('pp-status'),
connect: (payload) => ipcRenderer.invoke('pp-connect', payload),
disconnect: () => ipcRenderer.invoke('pp-disconnect'),
start: () => ipcRenderer.invoke('pp-start'),
listPlaylists: () => ipcRenderer.invoke('pp-playlists'),
selectPlaylist: (payload) => ipcRenderer.invoke('pp-select-playlist', payload),
onData: (cb) => {
ipcRenderer.on('pp-data', (_event, data) => cb(data));
},
},
});