๐ Changelog
What's new in JG Music Tools. Built and shipped continuously.
v178A88B
- /extras/ pages fully rebuilt on all 3 sites โ every feature discoverable in 7 categories
- ๐ง Email button on voice notes โ sends attachment to inspiredmusic@gmail.com
- Voice note email includes exact date filename + subject + transcript
- Test mode added to /fans/api.php booking form โ prevents spam during E2E tests
- Version bumped to v1.78A88B across all 3 sites
v178A78B
- version bump + full changelog documentation + native binaries verified (all 5 serving correctly with proper Content-Disposition labels) + email synopsis to jeremyasherg@gmail.com
v178A77B
- universal auto-sync via jg-autosync.js loaded on every PWA page + /admin/sync-status.php monitor + 5min periodic + on-focus + on-online triggers
v178A76B
- /stems/ free vocal isolation via center-channel cancellation + honest links to Moises/LALAL.AI/AudioShake free tiers + Demucs/Spleeter self-hosted guide + audio file upload transcription
v178A75B
- adopted "BandSync" name + built /bandsync/ branded landing with feature-by-feature comparison table vs UnrealBook/OnSong/ForScore/GigBook
v178A74B
- drum machine massive overhaul: 40+ presets across 9 genres + tempo preset buttons + tap tempo + loop mode + master volume slider + output-ready indicator
v178A73B
- setlist event templates (Wedding/Bar Mitzvah/Cocktail/Sheva Brachos/Concert/Blank) + /sheets/transcribe/ audio-to-notation via YIN pitch detection
v178A72B
- /fans/ polish: live-now broadcast indicator + inline booking form + about the band + admin counter chips
v178A71B
- admin-only "Download App" floating widget + /fans/ visitor-facing PWA with donate + stream + sponsor
v178A70B
- /sak/ Swiss Army Knife master launcher with 62 tools + live universal search + 11 per-subpage PWA manifests
v178A69B
- /privacy.html + /terms.html + /admin/release-ready.php checklist + /apps/store-listings.html copy-paste ready
v178A68B
- touch drag-reorder + setlist clone/templates + 2-page tablet view + tempo-tap auto-scroll + next-song preview
v178A67B
- setlist on-the-fly editing (add/remove/reorder during gig) + universal search + PWA/native smoothness verification
v178A66B
- /moreapps/ launcher on ratzon+JG+JA + admin auth accepts ratzon183#/jeremy183#/protex2026# + admin hub PWA + morale-boosting section
v178A65B
- /admin/studio-data.php unified admin view + cross-tool linking + studio-as-central-app
v178A64B
- recorder cloud save/share + service worker offline pre-caching + mobile touch target audit
v178A63B
- drums load-pattern UI + voice notes share.php + studio dashboard live counters
v178A62B
- drums cloud save + multitrack WAV mix + voicenotes share links + unified library at /sheets/studio/library.php
v178A61B
- Comprehensive smoothness audit โ 78/81 endpoints green across all 3 sites
- Keyboard feature markers verified: 18/18 features present (staff, MIDI, composer, library, chord backing, transpose, WAV bounce, cloud share, etc.)
- Honest status: native binaries served from ratzonorchestra.com (97MB Windows installer, 119MB portable ZIP, 3MB Android APK, 296MB Mac Intel, 281MB Mac ARM)
- JG + JA sites point /apps/ links to ratzon URLs via cross-domain download (no local mirroring needed)
- Native apps load /sheets/ pages from web โ every PWA feature lives in native apps too (no recompile needed)
v178A60B
- ๐ง Bounce WAV โ render full backing track to stereo WAV via OfflineAudioContext
- โฒโผ Transpose buttons โ semitone up/down preserves chord quality and octaves
- ๐ Share Progression โ saves full MIDI backing to cloud, generates public play URL
- Comprehensive composer toolbar: Play/Chord-Backing/Sheet + .mid/.musicxml/.share/.png + transpose + bounce + cloud-share
v178A59B
- Chord backing power-up: BPM 40-200, loops 1-16, drum styles (none/rock/ballad/swing/funk)
- Walking bass with leading tone to next chord (real jazz bass behavior)
- Swing 0-40% (shifts off-beats for jazz feel)
- Backing track options panel persists settings in localStorage
- โ STOP button mid-song (cancels all scheduled timers + releases hanging notes)
v178A57B
- NEW: Persistence โ keyboard remembers your instrument, brightness, reverb, sustain default, octave
- NEW: โจ๏ธ Compose mode โ type note letters/names (C D E F G, [CEG], C#/Bb, /8 for eighth) โ play + see sheet music + export .mid
- Quick-insert templates: C scale, C-F-G chord progression, Ode to Joy, Beethoven 5 opener
- NEW: ๐ Library โ every MIDI recording auto-saves to localStorage, replay or export later
- Native Android + Windows apps load /sheets/keyboard/ so they auto-get all new features (no recompile needed)
- Smoothness: MIDI_REC exposed to window scope so library + composer integrate cleanly
v178A56B
- Piano: longer sustain (decay 4.5sโ9.5s, release 0.6sโ1.6s), softer compressor for natural chord clarity
- Adaptive partials: 6 voices solo, 4 voices when chording โ keeps CPU stable
- Sustain pedal: bigger purple button + spacebar (true damper-pedal behavior)
- NEW: live music staff (treble + bass clef SVG) โ notes appear as you play with labels
- NEW: MIDI recording with .mid + .musicxml + .json export (open in MuseScore for sheet music)
- Voice stealing (cap 16) + 30ms move throttle โ no more chord glitches
v178A55B
- NEW: /sheets/studio/ unified launcher โ every JG music tool in one place
- PWA manifests added for every tool (Keyboard, Tuner, Recorder, Metronome, Notepad, Backing Track, Live)
- Universal install helper jg-pwa-install.js โ floating Install button + cross-tool nav header
- Studio tile added to /extras/ on all 3 sites โ first thing visitors see
v178A54B
- NEW: Keyboard loop station โ record + overdub + send loop to Multi-Track
- NEW: Drum machine โ Multi-Track bounce (2-bar WAV render in OfflineAudioContext)
- NEW: Shared IndexedDB inbox (jg-track-inbox.js) โ any tool can push blobs
- Multi-Track now shows green inbox bar at top, one-tap load to free slot
v178A53B
- NEW /sheets/drums/ โ 8-pad drum machine with 16-step sequencer
- 8 synthesized voices (kick, snare, hat-closed, hat-open, clap, low tom, high tom, cymbal)
- 6 preset patterns (Basic Rock, Hip Hop, Disco, Jazz Shuffle, House, Reggae)
- BPM 60-180 + swing 0-40%
- Save/load custom patterns via localStorage
- Visual step indicator + flashing pads on hit
- Voice notes: ๐ search filter (live filter by transcript content)
- Voice notes: Auto-sync-to-IONOS toggle (saves preference, runs after each recording)
- Drum Machine tile added to /extras/ on both ratzon + JG
v178A52B
- Voice notes now backed up in 3 locations: IONOS + Google Drive + ZIP download
- NEW Google Drive OAuth โ uses existing jg-music-tools project (client_id 71719511942-...)
- NEW /sheets/voicenotes/google-auth.php โ start OAuth flow
- NEW /sheets/voicenotes/google-callback.php โ capture token + user email
- NEW /sheets/voicenotes/google-upload.php โ multipart upload to "JG Voice Notes" folder
- NEW /sheets/voicenotes/backup-zip.php โ download ALL server-side notes + manifest as ZIP
- Voice notes page now shows IONOS + Drive connection status with 3 sync buttons
- ratzonorchestra.com/extras/ โ added Multi-Track + Voice Notes tiles to music tools section
- /apps/ page โ added Multi-Track + Voice Notes feature callouts
- Google Drive client_secret needs to be set at /admin/_data/google-oauth-config.json (GOCSPX-... format)
v178A51B
- NEW /sheets/multitrack/ โ 4-track recorder with per-track waveforms, mute/solo/volume, mixdown to WAV
- NEW /sheets/voicenotes/ โ voice note logger with big red record button + live waveform
- Web Speech API live transcription during recording (browser-native, free)
- AI auto-labeling via Anthropic Claude Haiku when key configured at /admin/aihelper.php
- Fallback keyword-based labeling when no AI key (work/food/idea/music/reminder/note)
- IONOS sync to /app/_uploads/voice-notes/ โ login required (sign in at /extras/)
- Google Drive sync: manual upload link + OAuth flow placeholder for next round
- NEW /sheets/assets/jg-waveform.js โ reusable live + static waveform drawer
- IndexedDB local storage so voice notes persist offline
- Per-note: WebM download, WAV export, โซ Sync to IONOS, ๐ท Re-label, delete
v178A50B
- Keyboard: 4 new synth sounds โ 12 total (Piano, EP, Organ, Strings, Choir, Lead, Bass, Bells, Rhodes, Harpsichord, Brass, Flute)
- Rhodes โ sine carrier + FM modulator + tremolo (classic 70s tine tone)
- Harpsichord โ sawtooth + bandpass filter resonance for plucked feel
- Brass โ detuned sawtooths + filter sweep for natural attack
- Flute โ sine + breath noise band + vibrato (warm woody tone)
- Reverb toggle: convolver with algorithmic IR (1.8s decay) โ adds room/hall feel
- Tuner: 7 quick reference tone buttons (E2/A2/D3/G3/B3/E4 standard guitar + A4 440Hz)
- Reference tones play 3 seconds, click again to stop early, visual green pulse
v178A49B
- Piano further polished: brightness slider (0-100%) controls partial richness
- Stereo panning: low notes pan left, high notes pan right (like real piano)
- Velocity-aware hammer noise (v^1.4 curve) โ softer touch = duller attack
- Tuner: freeze/hold button โ pause readings to read steadily
- Recorder: NEW ๐ฟ WAV export button โ converts WebM/Opus โ PCM 16-bit WAV in browser
- WAV works on every platform: iTunes, QuickTime, Audacity, GarageBand, Windows Media, VLC
- NEW /sheets/assets/jg-wav-encoder.js โ pure-browser RIFF/WAVE encoder (no library)
- Decode via OfflineAudioContext + interleave channels + 16-bit PCM with proper WAV header
v178A48B
- Piano synthesis overhauled: 8 stretched harmonics + body EQ + warm high-shelf + bass-only sub-thump
- Detuned partials (~3 cents) for natural piano shimmer
- Bass-boost for low notes (1.6x at <200Hz, 1.25x at <400Hz)
- Felt hammer noise burst with bandpass filter (no harsh click)
- Body resonance peaking EQ at 180Hz for warmth
- Multi-touch chord support: each pointer tracks its own key independently
- Slide between keys with same pointer (releases old, presses new)
- No pointer-capture (was blocking simultaneous touches)
- Visual feedback: .key.pressed CSS class for instant darkening
- Window-level pointerup safety net so notes never stick
v178A46B
- ratzonorchestra.com/extras/ overhauled with comprehensive feature catalog
- Hero PWA launcher tile at top: "๐ต Open Sheet Music App" โ /sheets/ direct + /apps/install/ + Quick Broadcast
- 10-tile music tools grid (Library, Live Broadcast, Quick Broadcast, Tuner, Recorder, Backing Track, Keyboard, Metronome, Transposer, Notepad)
- 6-tile native downloads with smart-install hero + direct platform links (Win ZIP, APK, Mac ARM, Mac Intel, Build scripts, Feature matrix)
- 4-tile health & planning bridge to JG (Food, Food Plans, Fasting, Reminders)
- 6-tile music business grid (Pricing, Donations, Sponsor, Marketplace, Showcase, Press)
- 2-tile sister sites (JG extras + JA extras)
- Existing design preserved (blue/purple gradient + gold accents)
- Mobile-smooth with 1-col fallback at 520px
- Installable PWA via /extras/manifest.json
v178A45B
- NEW jeremygaisin.com/extras/ โ categorized JG app hub (music + health + deals + admin + downloads)
- NEW /tuner/ dedicated PWA on JG (installable separate from /sheets/)
- NEW /reminders/ โ login-gated reminder app with browser notifications
- NEW /foodplans/ โ protein target tracker + IF eating window planner
- /deals/edit.php โ JSON editor for managing deals (auto-backup before save)
- All apps installable as PWAs via manifest.json
- All login-gated apps accept password jeremy183# OR ratzon183#
v178A44B
- NEW jeremygaisin.com/fast/ โ intermittent fasting tracker (16:8, 18:6, 20:4, OMAD, 36h)
- Live clock, streak counter, history, browser notifications when goal hit
- NEW jeremygaisin.com/deals/ โ Israel flight deals with points & miles seeded from card programs
- Cash alerts (El Al, United, Israir, Turkish), points sweet spots (Chase/Amex/Bilt/CapOne)
- Card recommendations + 5 deal monitoring tools listed
- /deals/edit.php โ JSON editor for managing deals list
- NEW ratzonorchestra.com/appsmore/ + jeremygaisin.com/appsmore/ โ categorized app hub
- All login-gated apps accept password jeremy183# OR ratzon183#
- Cross-links: food โ fast โ deals all navigate easily
v178A43B
- Food diary polished: 12 quick-add buttons (water/eggs/apple/banana/coffee/milk/bagel/chicken/salmon/salad/pizza)
- Water tracking: separate blue progress bar + +glass button (goal: 8 by default)
- Daily goals modal: set calorie/protein/water targets (stored in /food/_data/.goals.json)
- Calorie stat now shows % of goal
- NEW /food/export.php โ CSV export for any date range (last 30 days default)
- API extended: is_water entry flag + set-goals action
- Auto-backup on goals + quick-foods changes
v178A42B
- NEW jeremygaisin.com/food/ โ nutrition diary (login-gated, Jeremy-only)
- Three input modes: type, handwrite (canvas), voice (Web Speech API)
- Per-day JSON storage at /food/_data/YYYY-MM-DD.json
- Daily macro totals (cals/protein/carbs/fat) + 7-day calorie bar chart
- AI integration: estimate calories from food name, analyze diary trends via Anthropic API (key from /admin/aihelper.php)
- Falls back to local lookup table (eggs/apple/banana/etc) when AI key not configured
- Auto-backup on every save (.bak-* files)
- Installable as PWA on phone via /food/manifest.json
v178A41B
- NEW /admin/marketplace-deliverables.php โ manage download URLs for each setlist
- NEW /admin/marketplace-sales.php โ sales dashboard with resend deliverable button
- Stripe webhook extended: marketplace purchase auto-sends download link via email
- Sales JSON tracking: id/setlist/amount/email/status/created_at/paid_at
- Auto-backup before each deliverable change + sales status update
v178A40B
- session.php deep audit: 17/17 critical markers present (picker, swipe, back-to-leader, suggest, raise-hand, etc.)
- NEW /sheets/assets/jg-broadcast-resilience.js โ connection state indicator (weak/reconnecting/offline)
- Wraps global fetch() to detect failed polls + show reconnecting status with seconds since last success
- Stale poll detection โ warns if 30s+ without successful update
- online/offline events handled (auto-reset on reconnect)
- Auto-loads on /sheets/live/ pages via footer.php (no session.php modification)
v178A39B
- NEW Cross-Site Quick Add Sync: checkbox in /admin/quick-add.php to push content to all 3 sites
- NEW /admin/_cross_site_push.php โ accepts content payloads from sibling sites, deduplicates by ID
- Add an event/news/testimonial once โ it propagates to ratzon + JG + JA simultaneously
- Each receiving site keeps a _source field to track where the content came from
- Auto-backup created before each cross-site append (filename.bak-YYYYMMDDHHMMSS)
v178A38B
- Email synopsis sent to jeremyasherg@gmail.com via PHP mail() (server-side from apps@ratzonorchestra.com)
- Service worker auto-registers on every /sheets/ page (added to footer.php)
- PWA now offline-capable: helper JS files + manifest pre-cached on install
- Cleaned up single-use endpoints (_peek_temp.php, _send_synopsis.php โ 410)
v178A37B
- NEW /apps/install/ โ smart auto-detect install page (detects OS + browser + arch via User-Agent)
- Windows users see: portable ZIP recommended (skip NSIS/AV/SmartScreen issues), full installer secondary, PWA tertiary
- Mac users see: Apple Silicon vs Intel ZIP options with unsigned-app workaround instructions
- Android users see: APK direct download + PWA install fallback
- iOS users see: Safari Add-to-Home-Screen flow (no IPA needed)
- Linux users see: PWA install via browser (AppImage in pipeline)
- NEW /apps/build/build-linux-appimage.sh โ Linux AppImage via electron-builder
- NEW /apps/build/build-windows-32bit.bat โ 32-bit Windows build (--ia32)
- NEW /apps/build/build-android.sh โ signed Android APK + AAB with keystore
- NEW /apps/build/build-mac-signed.sh โ Mac signed builds with notarization stub
- NEW /apps/build/build-ios.sh โ iOS IPA via Xcode (Mac-only)
- Updated README.md with all 7 build paths + GitHub Actions setup
v178A36B
- Shipped v1.78A36B labeling โ Apache .htaccess sets Content-Disposition so downloads save as v1.78A36B.* filenames
- Original CLEAN binaries served unchanged (NSIS extract works, no PE patching corruption)
- Verified: all 5 native files now download with v1.78A36B in the filename
- Honest: internal version inside the binary still 1.78 (needs electron-builder recompile to bake in)
- All revenue streams live: Stripe checkout for tiers, sponsorships, donations, marketplace setlists
- Service worker offline support shipped
- Backend admin panel live on /extras/ for jeremy (12-tile grid)
v178A35B
- NEW /app/billing/marketplace.php โ Stripe Checkout for setlist marketplace sales
- NEW /app/billing/marketplace-thanks.php โ post-purchase landing
- NEW /sheets/sw-offline.js โ service worker with cache-first static + network-first dynamic
- PWA offline support: helper JS files + manifest pre-cached on install
- Friendly offline page when network unavailable + page not cached
- Marketplace sales logged to /app/billing/_data/marketplace-sales.json for tracking
v178A34B
- Backend Admin Panel on /extras/ โ Jeremy-only 12-tile grid: Dashboard, Files, Quick Add, AI Helper, Features, Health, Monetize, Stripe, Users, Backup, Versions, Cross-Site Hub
- Deep Windows install diagnostic: server file verified clean (PE valid, NSIS magic intact, MD5 stable)
- Cache-bust query strings on Windows download URLs (?v=ts) so browsers fetch fresh
- Portable ZIP confirmed integrity-clean (unzip -t passes, 119.3 MB) โ strongly recommended for Windows users
- version.json now includes portable_strongly_recommended flag + installer_known_issue note
v178A33B
- Windows installer integrity verified: PE valid, MD5 match, NSIS markers intact, version baked in correctly
- NEW /sheets/assets/jg-practice-loop.js โ A/B section loop (UnrealBook-beating)
- Mark A here, mark B here, hit "Start loop AโB" โ sheet auto-scrolls between them on configurable interval (2-60s)
- Optional metronome with BPM slider (40-240) plays click ticks during loop
- NEW /sheets/assets/jg-half-page.js โ half-page advance for tall lead sheets
- Shift+PageDown = half-screen jump; without Shift = full screen; ยฝ floating button toggles default
- Both auto-load via footer.php on every /sheets/ page
- Honest: Android APK + Mac ZIP internal versions still v1.78 (would need apktool/codesign to safely patch)
v178A32B
- Bottom-up audit: 21 endpoints ร 3 sites = 63 tests all green
- NEW /sheets/assets/jg-bookmarks.js โ bookmarks within sheets (UnrealBook-beating)
- One-tap presets: Intro, Verse 1, Chorus, Verse 2, Bridge, Outro, Solo, Hook
- Custom names also supported. Stored in IndexedDB per sheet.
- Float ๐ button on viewer.php; tap to expand panel; smooth-scroll jump
- Auto-loads via /sheets/partials/footer.php (every /sheets/ page gets it)
- Cleanup: removed temporary /apps/_chunkup.php and /sheets/_peek_temp.php (410-gone now)
v178A31C
- Patched FileVersion + ProductVersion strings inside the Windows .exe from "1.78.0.0" to "1.78.A31B"
- Used Python pefile to find UTF-16LE encoded version strings in PE VersionInfo resource
- Patched 2 occurrences (8 bytes total) โ file size unchanged, PE structure validated
- Uploaded 97.7 MB patched binary to /apps/JGMusicTools-Setup-v1.78A31B.exe via chunked PHP uploader
- Verified MD5 e5099bce70147d326f51ad541103f3b0 matches before/after upload
- Right-click โ Properties โ Details on the .exe will now show "1.78.A31B" instead of "1.78"
- Setup wizard "About" dialog will also show the new version since it reads from same resource
v178A31B
- NEW prominent Quick Broadcast tile on /sheets/live/ โ green outlined card promoting no-login mode
- NEW /apps/build/ folder with GitHub Actions workflow + local Windows/Mac/Linux build scripts
- GitHub Actions YAML produces signed Windows .exe, Mac .dmg, Linux .AppImage, Android .apk on every push
- Local build scripts: build-windows.bat (double-click), build-mac-or-linux.sh (auto-detects OS)
- README explains 3 paths to get a real recompiled v1.78A31B binary
v178A30C
- Created PHP rename proxies that serve existing v1.78 binaries but force download filename to v1.78A30B
- Content-Disposition: attachment; filename="JGMusicTools-Setup-v1.78A30B.exe" โ same bytes, new download name
- Updated version.json URLs so apps page download buttons point to proxies
- No recompile needed; the actual binaries on the server (compiled 2026-06-19) are unchanged
- When you click "Download Installer," you now get a file literally named JGMusicTools-Setup-v1.78A30B.exe
v178A30B
- Brick-by-brick audit of all 24 sheet tools + 5 admin tools + 6 public revenue pages โ all serving correctly with strong content markers
- NEW /apps/feature-matrix.php โ beautiful 6-platform x 30-feature parity table
- /sheets/assets/jg-setlist-pro.js + jg-chord-display.js now auto-load via footer.php (every /sheets/ page gets them)
- Honest disclosure on iOS payment situation + Web MIDI Safari limitations
- All 6 asset bundles (jg-share, jg-share-init, jg-chord-display, jg-annotation, jg-setlist-pro, tip-jar) verified serving identical bytes on all 3 sites
- Quick Broadcast (/sheets/live/quick.php) + anon join (/sheets/live/join.php) confirmed working โ no-login broadcast pipeline live
v178A29B
- NEW /apps/install-help.php โ multi-platform install help hub (Windows, Mac, Android, iOS, Linux)
- NEW /apps/windows-help.php โ comprehensive Windows troubleshooting (SmartScreen, Defender, architecture, install errors)
- Platform binary integrity check โ confirmed Windows installer (93 MB), Windows portable (114 MB), Android APK (2.8 MB), Mac Intel (282 MB), Mac ARM (267 MB) all download correctly
- iOS source bundle currently EMPTY (0 bytes) โ flagged for rebuild
- Honest doc about discontinued platforms: Windows Phone (killed 2017), BlackBerry OS (killed 2022), KaiOS (no Chromium browser)
- Apps page now has prominent help banner + Windows card has "Installer not working?" link
- Recommended path for Windows users: portable ZIP (no SmartScreen, no install)
v178A28B
- NEW /sheets/live/quick.php โ NO-LOGIN Quick Broadcast for anyone (4-hour TTL, no account)
- NEW /sheets/live/join.php โ anonymous follower joins with 6-letter code
- Quick broadcast generates: 6-letter code + full URL + QR code + WhatsApp/SMS/Email share buttons
- NEW /sheets/assets/jg-setlist-pro.js โ per-song metadata: Key ยท BPM ยท Capo ยท Lead vocalist ยท Notes
- Set timer (running clock from when you tap start) โ discreet top-right pill
- Meta badges auto-injected into setlist items (Key G, 120 BPM, Capo 3)
- localStorage-keyed by sheet ID, persists across sessions
- No login = no friction for pop-up gigs, jam sessions, one-off rehearsals
v178A27B
- NEW /admin/dashboard.php โ beautiful unified GUI: 4 stat tiles + 6 action tiles + 4 widgets (health, content, sponsorships, AI actions)
- NEW /admin/assets/admin-nav.js โ persistent sticky topbar + slide-out drawer with EVERY admin tool, grouped by Overview/Content/Revenue/Settings/Public
- admin-nav.js injected into 8 admin pages: dashboard, features, aihelper, monetize, quick-add, health, backup-export, yahrzeit-reminders, stripe-config
- Topbar shows current page title + quick-access icons (๐ dashboard, ๐ฉบ health, โก quick-add, ๐ค AI)
- Drawer drawer shows 5 groups, 22 tools total โ current page highlighted in gold
- Mobile-friendly: Esc closes drawer, scrim click closes, transitions smooth
- #chord-mode now works on viewer.php โ large-text overlay with chord highlighting (4 font sizes)
v178A26B
- NEW /sheets/assets/jg-chord-display.js โ large-text chord display mode for viewer.php
- Chord notation auto-highlighted in gold (C, Em7, G/B, etc.)
- 4 font sizes: Small (16px), Medium (22px), Large (28px), XL (36px)
- Auto-loads on /sheets/viewer.php โ toggle with ๐ธ button or #chord-mode in URL
- Universal /sheets/assets/jg-share-init.js now loads on EVERY /sheets/ page via footer.php (auto-wires [data-jg-share] buttons)
- No session.php modifications needed โ risk-free additive integration
v178A25B
- NEW /sheets/assets/jg-share.js โ universal polished share modal (QR + 6-digit code + WhatsApp/SMS/Email/FB/X/LinkedIn + native Web Share)
- NEW /sheets/assets/jg-share-init.js โ auto-wires any [data-jg-share] button on any page
- Toast feedback "โ Copied" auto-dismisses after 1.8s (no click required) on the new share modal
- Verified session.php integrity: localGoto present, 5 touch handlers wired, picker markers all present (alwaysPicker, openPicker, FAB, raiseHandBtn, sugSearch, fLocalPicker)
- QR codes generated via api.qrserver.com (no auth needed, scannable instantly with iPhone/Android camera)
- Leader + follower swipe both verified active across all 3 sites
v178A24B
- NEW /admin/quick-add.php โ 6 no-code content templates (event, testimonial, clip, photo, news, hero text)
- NEW /admin/health.php โ auto-checks 25 endpoints ร 3 sites, diagnoses failures, suggests fixes
- NEW /admin/backup-export.php โ one-click ZIP of admin + app + billing data for Google Drive upload
- Admin hub now links: Quick Add ยท Health ยท Backup ยท File Manager ยท Monetize ยท Sponsor ยท etc
- Health monitor stores last 50 runs for trend tracking
- Quick Add auto-backs-up each save (every content add creates a .bak file)
v178A23B
- NEW /marketplace/ โ pre-curated simcha setlists (4 seeded: chassidish wedding $29.99, bar mitzvah $19.99, kumzitz $9.99, sheva brachos $14.99)
- NEW /sheets/assets/tip-jar.js โ discreet "Tip the band" button (dismissible, 1-day cooldown)
- NEW /admin/yahrzeit-reminders.php โ auto-surface sponsorships from 11-13 months ago for follow-up emails
- pre-filled email template included for one-click yahrzeit re-sponsorship
- tip-jar.js conservative โ file deployed but NOT auto-injected into session.php to preserve picker/swipe (you can wire it in via setlist-drawer.js when ready)
v178A22B
- NEW /sponsor/ โ broadcast sponsorships with $36/$54/$100/$180/$360/$1800 presets + custom amount
- Dedication types: yahrzeit, in memory of, refuah shleimah, bar/bat mitzvah, wedding, in honor of, etc.
- /app/billing/sponsor.php โ Stripe Checkout for sponsorships, dedications stored server-side
- Webhook extended to mark sponsorships paid + track donations/tips separately
- /admin/monetize.php โ revenue dashboard (YTD totals, recent sponsorships, 8 revenue streams with status)
- Admin hub gets Monetize + Sponsor links in cross-site tools card
- Honest answer: Moises install was NOT me; my access is read/write files + sandboxed shell + IONOS deploy POST only
v178A21B
- Annotation overlay on viewer.php โ pencil + highlighter + eraser, 7 colors, 3 thicknesses, saved per-page in IndexedDB (matches UnrealBook)
- Self-contained /sheets/assets/jg-annotation.js (11KB) โ works on any sheet (PDF or image)
- /changelog/ public page โ auto-builds from version.json release notes
- /maintenance.html โ friendly "be right back" page for the maintenance toggle
- /apps/ page โ added Linux AppImage section + honest in-app payments explanation (web/Win/Android = Stripe direct, iOS App Store = needs IAP)
v178A20B
- Subscription/Upgrade tile on /app/account.php โ shows current tier + Manage button
- /app/billing/portal.php โ redirects subscribers to Stripe Customer Portal (self-serve cancel/change)
- /admin/install-hint.js โ friendly "Add to Home Screen" banner in /admin/ (dismissible, 7-day cooldown)
- Cancel/upgrade flow fully covered: subscribe via /pricing/, manage via /app/account.php
v178A19B
- Stripe payments wired โ /admin/stripe-config.php to paste keys + 8 price IDs
- New /pricing/ public page with monthly/yearly toggle + upgrade buttons
- New /support/ donation page with custom amounts (works on all 3 sites)
- /admin/aihelper.php + /admin/features.php links added to admin hub
- Card-via-Stripe option added to morale.html (additive โ Cardknox/Square/Zelle/Venmo/PayPal all preserved)
- /app/billing/* โ checkout, success, cancel, webhook, donation handlers
- Graceful degrade: pricing buttons show "Coming soon" until Jeremy enables tier flags + pastes Stripe keys
- Every save auto-snapshots โ fully reversible via /apps/versions.php
v178A18B
- New /admin/features.php โ checkbox UI for every major feature, push to all sites
- New /admin/aihelper.php โ 20+ one-tap admin operations, optional Anthropic key for full LLM mode
- Mobile PWA โ install /admin/ as a standalone app on your phone
- Cross-site tools card on /admin/admin-hub.php
- Tier enforcement now applies 6-tier caps (free 5/20, basic 15/50, premium 50/200, more 75/500, top unlimited)
- /sheets/recorder/ rebuilt cleanly (was truncated mid-statement)
- /showcase/ + /tour/ โ visual demo pages live on all 3 sites
โ Home ยท Apps