Changelog
Changelog
Section titled “Changelog”All notable changes to Gigmeister are documented here. The app supports Web (PWA), iOS (Capacitor), and Desktop (Electron).
3.5.4 — May 2026
Section titled “3.5.4 — May 2026”Setlist Editor
Section titled “Setlist Editor”A new dedicated editor page replaces modal-based setlist editing. Songs visually nest inside named sections, you can pre-structure a setlist with empty placeholder sections, multi-select bulk-move blocks of songs, save a selection as a song group template, and run AI Optimize Order directly from the editor. Mobile gets a back button, section reorder, tappable header, and a primary CTA with overflow actions.
Rider Pack — Share Page Polish
Section titled “Rider Pack — Share Page Polish”Press Kit gets server-side WebP thumbnails so the share page loads fast even with large originals. The public share page adds a Print button, a sticky quick-nav header that jumps between filled-in sections, and a theme toggle for recipients.
Schema for in-app rich-text rider editing shipped in 20260513_add_rider_pack_rich_text (Tiptap JSON columns on band_rider_packs), but the production Tech / Hospitality Rider UI still uses PDF upload — the editor isn’t wired through yet.
Light Mode (Reintroduced)
Section titled “Light Mode (Reintroduced)”Theme preference moved off local browser storage onto your account, so Dark / Light syncs across web, iOS, and desktop. A sweep across ~180 files brings light-mode contrast in line with dark, including chord rendering, the practice session view, and rider pack tables. Pre-auth surfaces (login, signup, reset password) stay locked to dark.
Offline-First Auth (ADR-017)
Section titled “Offline-First Auth (ADR-017)”The app now distinguishes confirmed session rejection from transient network failure: it only logs you out on refresh_token_not_found / session_expired, never on NetworkError or timeouts. Supabase’s SIGNED_OUT event (which fires on flaky connections) is suppressed.
Electron Renderer OTA + Banner
Section titled “Electron Renderer OTA + Banner”The desktop app gets unified update banners across the app, download progress, and renderer-OTA restart prompts. Renderer bundles are published automatically on every push to main.
MIDI Debug Log Sidebar
Section titled “MIDI Debug Log Sidebar”Three previous MIDI debug surfaces consolidated into a single Log sidebar with an outgoing-send listener and direction column. Toggle with Cmd+Shift+M.
UI Primitives
Section titled “UI Primitives”<Button>, <Input>, <Pill>, <Card>, <PageShell> adopted across 40+ locations — auth pages, modals, settings, mail, setlist print, onboarding, song / setlist / group / event cards.
Security
Section titled “Security”Unauthenticated setlist OG metadata leak closed; Apple Music auth callback scoped and validated; MCP OAuth tokens issued per-band; stem cleanup temp paths constrained; OTA signing secrets isolated in CI; song delete now scopes setlist cleanup.
3.4.0 — May 2026
Section titled “3.4.0 — May 2026”Native iOS Stage App
Section titled “Native iOS Stage App”A full-parity rewrite of the iOS app in bespoke SwiftUI with brand-aligned loading screens, synthwave logo, native search, full Settings coverage, Native Shared Inbox v1, Native Insights v1 (Catalog + Practice), Setlist power-user surfaces, queue-style Practice, and a StageSidebar with collapsible sections and band switcher pill. iOS 26 two-pill TabView with emoji selection halos.
Server Modernization
Section titled “Server Modernization”Hono + Zod OpenAPI migration kicks off — health endpoint pilots the new createApiApp + app.openapi pattern. Request-ID middleware now correlates logs and Sentry. Pino structured logger rolled out across routes (replaces console.*). New parseBody() and withRoute() helpers; typed env() accessor (process.env.X banned outside server/lib/env.ts).
Query Backend Cutover
Section titled “Query Backend Cutover”Collections migrated from SWR to TanStack React Query in five phases. TanStack DB 0.6+ adapters for SQLite persistence (browser + Capacitor) ship alongside.
Security (40+ Fixes)
Section titled “Security (40+ Fixes)”OG-tag XSS closed; mail-search where-injection closed; Electron URL schemes allow-listed; HSTS / Permissions-Policy / frame-ancestors / form-action response headers; Paddle successUrl origin allow-list + webhook signing-secret enforcement; timing-safe cron secret comparison; mail display-name / subject validation.
Removed
Section titled “Removed”Multi-theme system removed in favor of dark-only — foundation for the 3.5 light-mode sweep.
3.2.1 — April 2026
Section titled “3.2.1 — April 2026”Band Chat
Section titled “Band Chat”Real-time in-app chat. Six role-scoped default channels (General, Announcements, Bookings, Core, Musicians, Production) are created automatically; new channels can be typed as general, gig, or setlist. A single global “Chat messages” notification toggle. Chat moves into the first Backstage tab on mobile. See Band Chat.
MIDI Scenes and Clock Mode
Section titled “MIDI Scenes and Clock Mode”MIDI Scenes for reusable preset bundles across multiple devices. MIDI Clock master / slave mode with configurable source device. See MIDI.
Mail / Inbox
Section titled “Mail / Inbox”Attachments, auto-generated AI draft replies, text selection on message bubbles and notes, and a route-driven thread view (/app/inbox/:threadId).
Backing Tracks
Section titled “Backing Tracks”Audio file reuse and trim timing (in / out points without re-encoding), transport-synced (beat-quantized) start, and offline-sync integration.
AI Agent / MCP
Section titled “AI Agent / MCP”Agent threads — persistent multi-turn conversations synced across devices. New agent tools: reorder / move setlist songs, structured get_setlist. Song-group structure preserved when building setlists via MCP.
Setlists & Calendar
Section titled “Setlists & Calendar”Adjacency-based grouping via section_marker; batch setlist creation; no_response attendance status included in iCal feed; cancelled gigs hidden from iCal.
OTA / Updates
Section titled “OTA / Updates”Silent Capgo OTA updates on every commit. Skip the OTA build when changes don’t affect the bundle. Toast only for minor / major updates. Old OTA bundles auto-cleaned from S3 (keep last 20).
Removed
Section titled “Removed”Deprecated lyrics and pageContent fields unified into a single content field. Genius lyrics source replaced with LRCLIB. next_practice_songs table dropped. CapacitorUpdateToast removed (silent updates only).
3.1.0 — March 2026
Section titled “3.1.0 — March 2026”Song Enrichment
Section titled “Song Enrichment”Auto-fill key, tempo, time signature, and duration from MusicBrainz. Lyrics fetched from LRCLIB (replacing Genius) with AI fallback. YouTube scrape fallback for mediaUrl. YouTube video embedding in native (iOS / Electron).
Insights
Section titled “Insights”A new Insights tab with four sections — Gigs, Catalog, Practice, Financial. The Gigs section ships with a date range selector (All Time / This Year / 12 / 6 / 3 Months); the other sections show across-all-data metrics today. See Insights.
Band Scoping
Section titled “Band Scoping”Band-scoped functionality across calendar, groups, and practice. Glass pill nav lands on web mobile. Consent-page band selection.
create_setlist_with_songs and other agent enhancements.
3.0.x — February → March 2026 (33 patches)
Section titled “3.0.x — February → March 2026 (33 patches)”The v3.0.0 framework migration plus 33 patch versions consolidating native, OTA, and UX polish.
Framework Migration (3.0.0, Breaking)
Section titled “Framework Migration (3.0.0, Breaking)”Complete platform rebuild from Next.js to Vite + Hono + React Router v7 (hash router). API routes ported to a standalone Hono server (port 3001). Shared libraries made framework-independent. Playwright e2e updated.
| Layer | New | Old |
|---|---|---|
| Frontend | Vite SPA + React 19 | Next.js App Router |
| Backend | Hono on Node.js | Next.js API routes |
| Routing | React Router v7 (#/path hash router) | Next.js file-based routing |
| Styles | Tailwind CSS v4 | Tailwind CSS v3 |
| Deployment | Coolify (self-hosted) | Vercel |
| iOS OTA | Capgo self-hosted with RSA signing | Direct Vercel |
Mutation WAL
Section titled “Mutation WAL”Write-Ahead Log with deduplication and retry for offline mutations across all platforms. Pending mutations storage in the persistence adapter. Background queue processor with lifecycle hooks. Sync-status UI and logout warning for pending mutations.
Rider Pack (Foundation)
Section titled “Rider Pack (Foundation)”Tech rider, hospitality rider, stage plan, patchlist, and press kit — with a public share token and file uploads. Tech and hospitality riders are PDF uploads; stage plan is a visual editor with an optional uploaded image.
Inbox Foundation
Section titled “Inbox Foundation”Mail thread infrastructure for band communications — one inbox per band — with notes, templates, activity logging, folder sync state, thread reply_to linking, pg_trgm search, and RLS hardening.
Push Notifications
Section titled “Push Notifications”Web push (VAPID) subscriptions. Native iOS push via APNs. Cron job for event reminders with APNs batch sending and focus-songs in rehearsal-reminder notifications. See Push Notifications.
Apple Music + YouTube
Section titled “Apple Music + YouTube”Apple Music token generation, player, and storefront support. YouTube integration for backing tracks. YouTube audio download (3.0.15). Stem separation via Spleeter → native Swift CLI (3.0.17).
Multitrack
Section titled “Multitrack”Single-song multitrack with preferred recording selection. Multitrack segment grouping. Song MIDI clip name + path.
Onboarding & Auth
Section titled “Onboarding & Auth”Onboarding wizard with social login (Apple Sign-In, Google Sign-In) and completion flag. Deep-link handling for iOS (gigmeister:// custom scheme). Implicit OAuth flow for email confirmations. Impersonation session rewrite (real Supabase sessions).
Soft-Delete & Bin
Section titled “Soft-Delete & Bin”Soft-delete for songs and setlists with a Bin / trash view and 30-day restoration window. Cache invalidation handled across collections.
RBAC Roles (3.0.18)
Section titled “RBAC Roles (3.0.18)”Five-role system — Owner, Manager, Member, Guest, Tech — with a documented permission matrix. See Band Roles.
Native Platforms
Section titled “Native Platforms”Capacitor adds WebSocket, Preferences, Bonjour Discovery, and Filesystem plugins. Native authentication for iOS (Google + Apple Sign-In). Electron deep-link handling for OAuth. Android via Firebase App Distribution. Universal links and Android App Links.
Liquid Glass UI
Section titled “Liquid Glass UI”Native iOS-style glass pill navigation (3.0.20). Floating glass nav pill on iOS (3.0.20). Liquid glass UI + sliding nav indicator (3.0.31). Settings promoted to bottom nav; hamburger menu removed (3.0.9). Bottom nav hides on scroll with smooth animation. Inbox swipe gestures.
Capgo OTA Updates (Self-Hosted)
Section titled “Capgo OTA Updates (Self-Hosted)”@capgo/capacitor-updater SDK integrated on every release. OTA release automation on version bump. OTA debug panel. RSA code signing for OTA bundles. Floating toast for OTA updates (later replaced with silent updates in 3.2.1).
Removed
Section titled “Removed”MIDI clip auto-play preference (deprecated). Pro billing features hidden during early-adopter period. Linux Electron downloads removed.
2.8.5 → 2.8.1 — February 2026
Section titled “2.8.5 → 2.8.1 — February 2026”2.8.5 (Feb 14)
Section titled “2.8.5 (Feb 14)”CI tag trigger broadened from electron-v* to v*. MIDI control + performance feature polish. Unified hooks (useSongsUnified, useSetlistsUnified, useGroupsUnified) used for offline-first data on native platforms.
2.8.1 (Feb 12)
Section titled “2.8.1 (Feb 12)”- Storage Migration: Supabase Storage replaced with Garage (S3-compatible) via the new
lib/storage.tsclient. - Runtime Feature Flags: Build-time
NEXT_PUBLIC_FEATURE_*flags replaced with runtimefeature_flagstable — features now toggle per-band without rebuilds.
2.8.0 - February 1, 2026
Section titled “2.8.0 - February 1, 2026”Shared Mailbox / Inbox
Section titled “Shared Mailbox / Inbox”IMAP/SMTP integration with encrypted credential storage. Thread management with assignment to band members. Internal notes with @mentions (Resend email notifications). Reply templates. Full-text search (FTS + ILIKE fallback). Bulk actions. Thread-to-event linking with auto-suggestions. 12-month historical backfill with progress tracking. Generic activity logging system. Feature-flagged behind shared_mailbox.
Multi-Band Support
Section titled “Multi-Band Support”Non-destructive switching between multiple bands. Secure email-based invitations with invite codes. RLS policies enforce per-band data isolation. selected_band_id tracked in user profile. Deterministic band resolution via getUserBandId().
Calendar
Section titled “Calendar”Full CRUD for gigs and rehearsals with timezone support. Recurring events (weekly, bi-weekly, custom RRULE) with skip / restore. Per-member attendance tracking. Personal iCal feeds for Google / Apple / Outlook. Event-to-setlist linking. Tally webhook integration for auto-creating gigs from form submissions.
Native Offline-First
Section titled “Native Offline-First”TanStack DB collections for songs, setlists, setlist_songs, song_groups with SQLite persistence on native. Unified hooks abstracting platform differences.
Infrastructure
Section titled “Infrastructure”Vercel → Coolify migration (self-hosted on Hetzner via Docker). Sentry monitoring with error tracking, performance tracing, and tunnel (replaced Highlight.io and Vercel monitors). AI Gateway → OpenRouter with Google Gemini 2.0 Flash.
2.7.5 - January 12, 2026
Section titled “2.7.5 - January 12, 2026”Features
Section titled “Features”- Persistent Practice Sessions: Practice sessions now persist across navigation with realtime sync to all band members
- Active Practice Sessions Database: New
active_practice_sessionstable with band_id, song_ids array, and RLS policies - API Routes: Add active-practice-session routes (GET, POST, DELETE, PATCH)
- Realtime Subscriptions: Add subscription for
active_practice_sessionstable changes - Mobile UI Improvements: Dropdown menu, hidden font resize buttons (pinch-to-zoom available)
- Song Editor: Unified step selector for MIDI settings across multiple steps
- Click Track: Add
persistClickTrackAcrossSongsoption with debug logging - MIDI Clip Loop Count: Configure loop count for MIDI clips per song
- MIDI Clip Device ID: Associate MIDI clips with specific devices
- iOS Safe Area: Add safe area top padding for native iOS app (fixes notch/dynamic island positioning)
- Mobile Z-Index: Fix z-index so bottom navigation appears above practice view
- Practice Mode: Don’t auto-enter practice view on page load; immediately update state after API calls
- TTS Announcements: Improve song announcement cleanup, error handling, skip announcement when manually clearing pending transition
- MIDI: Multiple MIDI fixes and improved MIDI learn functionality
- UI: Fix stepcard, header, z-index changes, navigation fixes
Improvements
Section titled “Improvements”- Better song navigation
- Improved pinch-to-zoom support
- Better hooks architecture
- Enhanced playback coordinator
- Improved autoplay functionality
- Styling improvements
2.7.0 - January 11, 2026
Section titled “2.7.0 - January 11, 2026”Features
Section titled “Features”- Docker/Coolify Deployment: Add Docker configuration for self-hosted deployment via Coolify
- MIDI Automation View: New components for visualizing MIDI automation
- MIDI Content Type: Add MIDI content type to view mode options
- Per-Song Content Type: Content type preference with auto-save per song
- Duplicate Finder: Add skip functionality to mark pairs as “not duplicates”
- Offline Settings: Offline settings tab with enable/disable toggle
- TTS Song Announcements: Text-to-speech announces current song during performance
- BPM Animation: Animate BPM display changes
- MIDI Next Step Control: Add MIDI control for Next Step navigation
- Alpha Banner: Subtle footer fallback when Alpha banner is dismissed
- Resolve React 19 peer dependency conflicts
- Prevent flash of home page before onboarding redirect
- Use Capacitor MIDI hook to detect MIDI support on native
- Update file path for lyrics import
- Add missing
use-debouncedependency
Improvements
Section titled “Improvements”- Replace custom useDebounce with
use-debouncelibrary - Refactor SongEditor and MidiAutomationView for improved state management
- Hide header and nav during active practice session
- Increase z-index of PracticeSessionView for full-screen coverage
2.6.0 - January 10, 2026
Section titled “2.6.0 - January 10, 2026”Electron Desktop App
Section titled “Electron Desktop App”- Phase 1 MVP: Electron app infrastructure with WebView loading from Vercel
- Phase 2: Enhanced offline support with local API server and IndexedDB
- Phase 3: Native desktop features (system tray, keyboard shortcuts, auto-updates, notifications)
- Phase 4: Polish and distribution (macOS, Windows, Linux builds)
- GitHub Actions CI/CD: Automated builds triggered by
electron-v*tags
MIDI Devices
Section titled “MIDI Devices”New MIDI device mappings:
- Korg MicroKorg, MicroKorg 2, Minilogue XD, Prologue, Wavestate
- ASM Hydrasynth
- Modal Cobalt8
- Behringer DeepMind 12
- Roland System-8
- Elektron Digitone, Analog Four
- And many more…
Quick Open
Section titled “Quick Open”- Quick open performance view for songs (Cmd/Ctrl+K)
Security
Section titled “Security”- Harden Electron local API server and IPC
2.5.0 - January 9, 2026
Section titled “2.5.0 - January 9, 2026”Features
Section titled “Features”- Song actions UI improvements
- Skip npm rebuild for Electron (no native modules needed)
2.4.0 - January 7, 2026
Section titled “2.4.0 - January 7, 2026”Features
Section titled “Features”- Song Steps in Chord Sheets: Display step markers in chord sheet view
- Fumadocs Integration: Public documentation at
/docspowered by Fumadocs - SWR Integration: Data fetching with SWR for improved caching
Improvements
Section titled “Improvements”- Better practice mode experience
- Nicer API design
- Fix MCP (Model Context Protocol) server
Measure-Based Auto Advance
Section titled “Measure-Based Auto Advance”- Configure auto-advance based on measure count
- Automatic song progression during performance
Backing Tracks
Section titled “Backing Tracks”- Upload and manage backing tracks per song
- Playback during performance
Next Step MIDI Action
Section titled “Next Step MIDI Action”- MIDI control to advance to next song step
Offline Mode
Section titled “Offline Mode”- Offline enabled preference per user
- IndexedDB caching for offline access
- Background sync when connection restored
MIDI Content Type
Section titled “MIDI Content Type”- New content view mode for MIDI-focused display
- Preferred content type saved per song
Skipped Duplicate Pairs
Section titled “Skipped Duplicate Pairs”- Mark song pairs as “not duplicates” to skip in future scans
MCP Integration
Section titled “MCP Integration”- Model Context Protocol (MCP) server for AI assistant integrations
- MCP auth codes for secure connection
- Connect Claude Desktop and other MCP clients
Band Activation
Section titled “Band Activation”- Band activation workflow
- Improved onboarding experience
Step MIDI Clips
Section titled “Step MIDI Clips”- MIDI clips per song step
- Step-specific MIDI clip names
Song Steps System
Section titled “Song Steps System”- Song Steps: Divide songs into multiple steps/sections
- Step Sequence: Ordered steps with custom arrangement
- Step Tempo: Per-step tempo configuration
- Step MIDI Settings: Individual MIDI settings per step
Audio System
Section titled “Audio System”- Audio Channel Routing: Route audio to specific outputs
- Audio Device Preference: Select preferred audio output device
- Click Track Settings: Configurable click track with measure events
- Toggle Click MIDI Action: MIDI control to toggle click track
Feature Flags
Section titled “Feature Flags”- Runtime feature flag system
- Gradual feature rollout capability
User MIDI Mappings
Section titled “User MIDI Mappings”- Custom MIDI program change mappings per user
- Override default device mappings
Content Preferences
Section titled “Content Preferences”- Content display preferences per user
- Hide/show lyrics, chords, lead sheets
Multiple Themes
Section titled “Multiple Themes”Five visual themes:
- Dark (default): Zinc palette with yellow accents
- Synthwave: Neon magenta/cyan, 80s retro
- Cyberpunk: Neon green/yellow matrix
- Vaporwave: Pastel pink/cyan 90s aesthetic
- Sunset: Warm orange/golden tones
API Keys System
Section titled “API Keys System”- User API Keys: Generate long-lived API keys (
gig_xxxxxxxxxxxxformat) - API Usage Logs: Track requests per key with endpoint and timing
- Usage Statistics: Daily/monthly usage reports
Practice Queue
Section titled “Practice Queue”- Next Practice Songs: Prioritized practice queue
- Drag-and-drop reordering: Organize practice priorities
- Smart Suggestions: Recommendations for least-practiced songs
Demo Data
Section titled “Demo Data”- Demo data generation for new bands
- Quick onboarding with sample songs and setlists
Transpose
Section titled “Transpose”- Per-user, per-song transpose settings
- Transpose preview in song editor
- Personal transpose independent from band settings
MIDI Clips
Section titled “MIDI Clips”- Upload MIDI files (.mid) per song
- Auto-play option on song selection
- Playback via Tone.js and @tonejs/midi
- Supabase Storage (
midi-clipsbucket)
Signup Notifications
Section titled “Signup Notifications”- Email notifications for new band signups
- Admin alerts via Resend
Lead Sheets
Section titled “Lead Sheets”- PDF Support: Upload and view multi-page PDFs
- Image Support: Upload PNG/JPG chord charts
- Pinch-to-Zoom: Zoom and pan on touch devices
- Full-screen View: Expand during performance
- Supabase Storage (
lead-sheetsbucket)
AI Usage Tracking
Section titled “AI Usage Tracking”- Track AI feature usage per band
Synthwave Theme
Section titled “Synthwave Theme”- First alternate theme (Synthwave)
- Neon magenta/cyan aesthetic
Section Markers
Section titled “Section Markers”- Add section markers to setlists (SET 1, SET 2, ENCORE)
- Visual separation in setlist view
Storage Policies
Section titled “Storage Policies”- Row Level Security for file uploads
- Band-scoped storage access
Multitrack Recordings
Section titled “Multitrack Recordings”- Upload rehearsal recordings with multiple stems
- Individual track volume control
- Song markers within recordings
- Multitrack player component
MIDI System
Section titled “MIDI System”- MIDI Devices: Configure up to 4 MIDI devices per user
- Device Types: Generic, Known (21 devices), MIDI Thru
- Program Changes: Bank MSB/LSB + Program Change messages
- Song MIDI Settings: Per-device settings per song
- MIDI Thru: Forward MIDI input to another device
Initial Known Devices:
- Nord Stage 4, Stage 3, Electro 6, Piano 5, Lead A1
- Yamaha CP88/CP73, YC Series
- Korg Kronos/Nautilus
- Roland RD-2000
- Hammond SKX/SK Pro
- Line 6 Helix
- Kemper Profiler
- Fractal FM9/Axe-FX
- Boss GT-1000
- Neural DSP Quad Cortex
- Roland SPD-SX/Pro
- Moog Subsequent 37
- Sequential Prophet Rev2
- Novation Peak/Summit
- Access Virus TI
- Arturia PolyBrute
Performance Functions
Section titled “Performance Functions”- Optimized database functions for performance
- Efficient song/setlist queries
Band Ownership
Section titled “Band Ownership”- Band owner role with elevated permissions
- Ownership transfer capability
Two-Column Layout
Section titled “Two-Column Layout”- Chord sheet two-column display mode
- Better use of screen real estate
User Song Settings
Section titled “User Song Settings”- Per-user notes on songs
- Personal annotations independent from shared data
User Preferences
Section titled “User Preferences”- Default Transpose: Global transpose offset
- MIDI Enabled: Show/hide MIDI controls
- MIDI Clip Auto-Play: Auto-play on song select
- Hide Lyrics: For instrumentalists
- Hide Chords: For vocalists
- Show Chord Diagrams: Visual chord reference
- Font Size: Small/medium/large text
Band Membership System
Section titled “Band Membership System”- Multi-user Bands: Share songs and setlists
- Invite Codes: Join bands via unique codes
- Row Level Security: Data isolation between bands
- Real-time Sync: Instant updates across all members
Lyrics
Section titled “Lyrics”- Lyrics field on songs
- Full lyrics display in song view
Tags, Practice, Media
Section titled “Tags, Practice, Media”- Tags: Categorize songs (ballad, opener, 80s, etc.)
- Practice Sessions: Log rehearsals with notes
- Media URL: Link to reference recordings
Song Title Index
Section titled “Song Title Index”- Database index for faster song searches
- Improved query performance
Song Groups
Section titled “Song Groups”- Reusable Templates: Create song groups (e.g., ”90s Medley”)
- Quick Insert: Add entire groups to setlists
- Ordered Songs: Maintain song order within groups
0.1.0 - Initial Release
Section titled “0.1.0 - Initial Release”Core Features
Section titled “Core Features”- Song Library: Create, edit, delete songs
- Song Metadata: Title, artist, key, tempo, duration, time signature, notes
- Chord Sheets: Inline chord markers with
[Chord]syntax - Setlists: Create and organize setlists
- Drag-and-Drop: Reorder songs in setlists
- Duration Tracking: Total setlist duration
- Soundman View: Share-friendly view for sound engineers
Technical Foundation
Section titled “Technical Foundation”- Next.js with App Router
- React with TypeScript
- Supabase (PostgreSQL + Auth)
- Row Level Security (RLS)
- Vercel deployment
- Mobile-first responsive design
Platform History
Section titled “Platform History”Web (PWA)
Section titled “Web (PWA)”- Current: Vite + React 19 SPA + React Router v7 (hash router) + TypeScript + Tailwind CSS v4
- Hono API server (Node.js, port 3001) as a separate process
- Supabase backend (PostgreSQL + Auth + Row Level Security)
- TanStack Query + TanStack DB with SQLite persistence on native; Service Worker handles web offline + mutation queue
- AI features via OpenRouter (Google Gemini 2.0 Flash)
- Migrated from Next.js to Vite in v3.0.0 (Feb 2026)
iOS (Capacitor) — Added v1.0.0
Section titled “iOS (Capacitor) — Added v1.0.0”- Capacitor 8 framework
- Custom MIDI plugin using CoreMIDI
- Native Apple Sign-In + Google Sign-In (v3.0.0)
- Capgo self-hosted OTA updates with RSA signing (v3.0.x)
- Stage app rewrite with bespoke SwiftUI design system (v3.3.0)
- Haptics, Status Bar, Network, WebSocket, Preferences, Bonjour Discovery, Filesystem plugins
Desktop (Electron) — Added v2.6.0
Section titled “Desktop (Electron) — Added v2.6.0”- Electron with electron-builder
- Auto-updater (generic HTTP provider) for shell updates
- Renderer OTA pipeline for hot-swapping the JS bundle without reinstalling (v3.3.0)
- System tray, keyboard shortcuts
- macOS (Apple Silicon), Windows (x64). Linux removed in v3.0.x.
Android — Beta
Section titled “Android — Beta”- Distributed via Firebase App Distribution beta channel (v3.0.x)
- Native MIDI via Capacitor MIDI plugin
MIDI Device Support
Section titled “MIDI Device Support”| Version | Devices Added | Total |
|---|---|---|
| 1.0.0 | Initial 21 devices | 21 |
| 2.6.0 | +28 devices | 49 |
| 3.0.x | Apple MainStage, Gig Performer (host software profiles) | 51 |
Supported Categories:
- Stage Keyboards (Nord, Yamaha, Korg, Roland, Hammond, Kurzweil, Dexibell)
- Synthesizers (Moog, Sequential, Novation, Access, Arturia, Oberheim, Waldorf, Modal, ASM, Behringer, Elektron)
- Workstations (Roland Jupiter/Fantom, Yamaha Montage)
- Guitar/Bass Processors (Line 6, Kemper, Fractal, Boss, Neural DSP)
- Drums (Roland SPD-SX, Nord Drum)
- Host Software (Apple MainStage, Gig Performer)