Changelog
Latest updates and features for On Book Pro.
Current App Release
On Book Pro is currently version 1.29.4. The app now uses Release Please for semantic app releases and the canonical generated release log lives in the product repository CHANGELOG.md.
Recent releases expanded preserved-write handling, project invitations, script import resilience, profile settings, dashboard feed visibility, Notes reporting, communication audiences, Notes collaboration recovery, mobile usability, scene-order propagation, script-import dedupe, sound-control safety, calendar/security hardening, shared report generation, workspace navigation customization, schedule attendance behavior, project notification isolation, invitation reissue handling, rehearsal script access, and communication-send feedback:
- 1.29.4 keeps the Functions promise-lint ratchet at a zero-warning baseline.
- 1.29.3 replaces Prompt Book controls with shared UI primitives.
- 1.29.2 preserves the project-invite authentication handoff so accepted invitations carry the intended organization/project state through sign-in.
- 1.29.1 shows send progress in manual Communications composers while email delivery is in flight.
- 1.29.0 adds a Rehearsal Script view for script-text-enabled projects, giving limited cast-facing users a focused reading surface with assigned-character highlights and speech navigation.
- 1.28.7 restricts Feed media deletion to the expected project-scoped Storage paths.
- 1.28.6 makes project-invite retries idempotent.
- 1.28.5 replaces Performance controls with shared UI primitives.
- 1.28.4 routes accepted project invitations to the Dashboard with the accepted organization/project selected.
- 1.28.3 reuses the existing pending project invitation when an admin reissues an invite, keeping the invitation record and recipient validation aligned.
- 1.28.2 isolates in-app project notifications by active organization and project so notification trays do not mix activity across productions.
- 1.28.1 improves scheduler calendar attendance defaults and production milestone recognition.
- 1.28.0 lets users reorder the primary tools in each workspace sidebar; the command palette keeps workspace and tool commands alphabetized while the sidebar preserves the user's per-workspace order.
- 1.27.4 completes cloud write authority cleanup and routes Costumes and Budget writes through the project write authority.
- 1.27.3 replaces typed raw controls with shared UI primitives.
- 1.27.2 replaces Notes controls with shared UI primitives.
- 1.27.1 splits personnel profile privacy documentation.
- 1.27.0 adds a shared Reports modal that groups print and CSV report actions, including the Actor Rehearsal Hours report for called rehearsal time by actor and attendance status.
- 1.26.11 routes Settings toasts through the app toast provider so settings feedback appears consistently.
- 1.26.10 displays admin member join dates from member records.
- 1.26.9 guards callable email sends so malformed or incomplete requests fail before delivery.
- 1.26.8 restricts personnel shard writes to the intended server-authorized paths.
- 1.26.7 aligns mobile phone shell headers and propagates scene reorder changes into script surfaces.
- 1.26.6 repairs calendar subscription token regeneration.
- 1.26.5 secures trashed file cleanup.
- 1.26.4 scopes personal script imports to the caller.
- 1.26.3 further restricts actor-visible workspace tools.
- 1.26.2 hardens calendar subscription feeds.
- 1.26.1 replaces Sound control buttons with shared UI primitives so transport and utility controls keep explicit non-submit behavior.
- 1.26.0 improves mobile Profile and Feed usability and propagates Show Structure scene order into script, lighting, props, sound, print, and CSV surfaces.
- 1.25.0 improves mobile Files and Calendar usability, including phone-first file actions and agenda-first calendar browsing.
- 1.24.1 prevents duplicate imported props when script repair or production-element import results overlap existing scene-linked props.
- 1.24.0 improves mobile phone usability across the app shell, Personnel, notifications, and navigation, and upgrades the Notes editor workflow with attachments, outline/report-map navigation, snapshots, text import, and Markdown export.
- 1.23.6 flushes sent project invites from the outbound queue after delivery.
- 1.23.5 rediscovers project scope after stale local storage points at the wrong organization/project route.
- 1.23.4 hardens limited beta recovery paths.
- 1.23.3 prevents Blocking utility controls from submitting surrounding forms.
- 1.23.2 moves remaining cloud writes to server authority, including project bootstrap, access and role changes, roster/personnel authority, scoped imports, and attendance sign-in handling.
- 1.23.1 cleans up project invites and audience management, including personnel-backed invite invalidation, invite preview/acceptance behavior, and audience panel editing.
- 1.23.0 adds audience review and delivery history metadata to deadline pings.
- 1.22.2 clarifies agent branch hygiene in the Pro repository.
- 1.22.1 hardens collaborative Notes persistence and adds recovery snapshot tooling for legacy local note data.
- 1.22.0 adds the audience review flow to manual Call Sheet and Announcement sends.
- 1.21.2 replaces admin and file buttons with shared UI primitives.
- 1.21.1 adds explicit button types to admin modals so utility buttons do not submit forms unexpectedly.
- 1.21.0 adds the communication audience delivery foundation.
- 1.20.4 updates canonical documentation links.
- 1.20.3 records the current design backlog and roadmap audit.
- 1.20.2 makes shared buttons default to non-submit behavior so modal utility buttons do not accidentally submit forms.
- 1.20.1 prevents email composer close buttons from submitting forms.
- 1.20.0 routes rehearsal and meeting reports through configurable communication audiences with a recipient review step.
- 1.19.1 stabilizes Notes collaboration.
- 1.19.0 adds editable tables to the Notes editor.
- 1.18.6 uses login avatars for personnel cards.
- 1.18.5 populates personnel avatars from profile photos.
- 1.18.4 records the coverage ratchet result.
- 1.18.3 finalizes cloud-write task tracking.
- 1.18.2 selects the latest debug script job.
- 1.18.1 hides known-conflict controls for non-cast profiles.
- 1.18.0 adds right-click copy for script block text in the Script subtab.
- 1.17.1 preserves production elements generated during script import.
- 1.17.0 improves profile and file UI, including profile settings tied to linked personnel records.
- 1.16.3 routes nightly backlog automation.
- 1.16.2 updates Gemini model routing.
- 1.16.1 preserves remaining project write surfaces through the project-write authority.
- 1.16.0 connects Profile settings to project personnel records and makes the split-panel selector scrollable.
- 1.15.0 adds the Production Feed widget to the Dashboard.
- 1.14.7 aligns project write rules with the authority model, recovers stale conflict resolutions, compacts project-access invite lists, and stabilizes Notes/backend error handling.
- 1.14.6 improves conflict-review decision readability.
- 1.14.5 keeps cloud state authoritative over stale local browser state, preserves script block parentheticals and structure links, links loaded script block assignments, and lets stage-management roles edit personnel conflict metadata.
- 1.14.4 stabilizes Show Structure hydration for script-text-enabled projects.
- 1.14.3 repairs the personnel invite queue and clarifies the update toast.
- 1.14.2 stabilizes retries for preserved-write conflict resolution.
- 1.14.1 restores server-backed email callables.
- 1.14.0 adds the project invite onboarding gateway.
- 1.13.1 binds collaborative Notes documents to the active organization/project scope so identically named note ids cannot bleed across projects.
- 1.13.0 preserves artifact finalization writes after uploads complete, including generated script, file, and feed-media artifacts.
- 1.12.0 routes the remaining project write surfaces through the project-write authority where they are safe to apply automatically, while keeping unsafe bulk replacements in review.
- 1.11.x consolidated structured project writes and added preserved attendance writes.
- 1.7.0-1.10.0 moved schedule, line notes, file metadata, and blocking writes through the project outbox.
This page remains a curated feature-history guide. The historical sections below predate the Release Please baseline and should not be read as the current semantic app version.
Historical Feature Snapshot — March 2026
New Features
- Barry AI v2 — Major upgrade to the AI production assistant:
- ADK Agent Backend: Migrated from Genkit to Google Agent Development Kit (
@google/adkv0.5) for structured agent orchestration - Tiered Model Provider: "Lite" tier (managed Gemini 3.1 Flash Lite) for all users; "Pro" tier with Gemini 3.1 Pro BYOK (Bring Your Own Key) settings for power users
- Semantic Retrieval: Client-side semantic search using MiniLM-L6-v2 embeddings (via
@huggingface/transformers+ ONNX Runtime) for contextual grounding - Streaming Responses: Responses stream in real-time via Firestore document writes
- Session Continuity: Conversations persist across page refreshes with session management
- Guardrails & Token Budget: Context-aware guardrails and token budget management
- "Ask Barry" Contextual Help:
AskBarryChipcomponent provides inline AI assistance at friction points throughout the app
- ADK Agent Backend: Migrated from Genkit to Google Agent Development Kit (
- Mobile Responsiveness & iPad Parity — Comprehensive mobile device support:
- Mobile Sidebar Drawer: Hamburger-triggered sidebar overlay for viewports <768px with backdrop tap-to-dismiss
- Device Gate System:
useDeviceGatehook andDeviceGateBannercomponent for tools requiring minimum viewport widths - Touch Target Compliance: All interactive elements meet 44×44px minimum touch target standards
- iPad Split View: Tested and verified at 507×768 iPad Split View breakpoint
- Playwright E2E Suites: 16 mobile device gate tests, 5 iPad layout tests across multiple viewport configurations
- Mistral OCR Migration — Script ingestion pipeline upgrade:
- Replaced Google Document AI with Mistral OCR (
mistral-ocr-2512) for superior Markdown output and structural fidelity - PubSub Fan-Out Architecture: Project imports use parallel PubSub workers for concurrent block extraction
- OCR Caching: Raw OCR results cached in GCS for reuse and repair flows without re-scanning
- Replaced Google Document AI with Mistral OCR (
- Landing Page — Public marketing site at on-book.app:
- Features showcase, pricing tiers, testimonials, and team information
- Waitlist Signup: Email collection with Cloud Function backend and Firestore persistence
- Admin Panel: Google Sign-In protected waitlist management dashboard
- Terms of Service and Privacy Policy pages
- Fly Cue System — Fly cue tracking for rigging departments with cue management and scene assignments
- Projections Tool — Media projection management for productions with cue sequencing
Improvements
- Tool Permission Hardening — All tools now require
VIEW_ALLat minimum, closing a security gap where Feed, Files, Notes, Settings, Dev, and Scenes were accessible without authentication. New permissions added:CALL_SHOW,EDIT_PROJECTIONS,VIEW_PROMPTBOOK,EDIT_PROMPTBOOK - One-Line-Per-Block Standard — Architectural refactor ensuring each script line maps to exactly one ScriptBlock. Removed
preserveLineBreaksfield, eliminating multi-line block ambiguity in the script rendering contract - Vertex AI Context Caching — Token cost reduction of ~90% for large scripts by caching the full script text once and reusing for all extraction calls
Technical
- Migrated Barry backend from Genkit to
@google/adkv0.5.0 - Vite upgraded from 7.2 to 8.0.1, Zod upgraded to 4.3.6, motion upgraded to 12.34
- 40+ Playwright E2E tests across 6 spec files (
mobile-device-gate,ipad-layout,permissions,interactions,smoke,tab-rendering) - New feature modules:
fly/,notifications/,projections/ - Client-side semantic search using
@huggingface/transformers+ ONNX Runtime for embedding generation - New
DeviceGateBanner.tsx,useDeviceGate.tscomponents for viewport gating - Google Sign-In authentication for admin/waitlist pages
- Director role added to default RBAC roles
Version 2.10.0 — February 2026
New Features
- CSV Export — Download spreadsheet-ready data from any supported tool:
- Click the Download icon in the action toolbar (available on 8 tools)
- Exports contacts, schedules, deadlines, costume pieces, sound cues, and tracking compliance
- Production tab exports two files: deadlines + tracking matrix
- All fields properly escaped and quoted for clean Excel/Google Sheets import
- Department-Filtered Deadline Reports — Narrow print reports to a single department:
- New "Filter by Department" dropdown in the Print Configuration modal
- Summary statistics recalculate for the selected department
- Available when printing the Production Deadlines report
- Mic Pack Assignments — Wireless mic pack tracking for A2s and Stage Managers:
- Assign packs to actors sorted by first scene appearance
- Three-Way Lock State: Normal, Locked (dedicated), Low Priority (preferred swap candidate)
- Auto-Swap Algorithm: Suggests pack sharing at scene boundaries when packs < actors
- Minimum Pack Calculator: Badge showing absolute and lock-aware practical minimum with "Use Minimum" button
- Battery tracking (type + level cycle with auto-timestamp), frequency, and notes per pack
- Scene matrix grid showing pack usage across scenes
- Mic Plot Report: Printable assignment table, scene matrix, and swap summary
- Org-Level Role Templates — Define reusable permission sets at the organization level:
- Create role templates in the Admin Portal → Roles page
- Templates automatically inherit into new projects
- Track customization divergence per-project with "Reset to Template" capability
- Mark templates as default to auto-apply on project creation
- Lighting Tab — Dedicated lighting cue management for Stage Managers and Lighting Designers:
- Cue Builder: Scene-grouped LX cue list with custom numbering, inline editing, and drag-to-reorder
- Follow Spot Setup: Define spots with label, operator name, and position
- Follow Spot Cues: Per-cue pickups with character, action, frame/color, size, and intensity
- LX Cue List Report: Print-ready cue list grouped by act and scene
- Follow Spot Sheet Report: Landscape print report with spot roster summary
- CSV Export: Download lighting cues and follow spot cues as spreadsheet-ready CSV
- Workspace UX Upgrade — Activity-based workspaces with multi-panel layouts:
- Theatrical Naming: Workspaces renamed from role-based to activity-based theatrical metaphors (Rehearsal Room, Wardrobe, Workshop, Sound Booth, Light Lab, Creative Suite, Production Office, Green Room, Backstage)
- Split View Mode: Click the "Split" button in the toolbar to view two tools side-by-side
- 5 Preset Layouts: SM (Prompt Book + Notes), Director (Blocking + Notes), Sound (Sound + Run Sheet), Lighting (Lighting + Prompt Book), Production (Production + Budget)
- Resizable Panels: Drag the divider between panels to customize proportions — sizes persist across sessions
- Panel Focus: Click a panel to focus it — the toolbar title updates to show the active tool
- Desktop-Only: Split view activates on screens ≥1024px; mobile stays single-panel
- Liquid Glass Design System — New visual layer inspired by Apple's design language:
- GlassRegular: Frosted glass material for navigation and toolbars
- GlassClear: High-transparency material for media-rich overlays
- GlassPanel: Panel container with focus/inactive states and materialization animation
- PanelSeparator: Invisible-reveal resize handles with touch-optimized hit targets
- Blocking Tracker Backdrop Upload — Upload images or PDFs as scene backdrops directly from the toolbar:
- "Upload Backdrop" button appears next to the Set dropdown when a scene is selected
- Supports PNG, JPEG, WebP, SVG, and PDF files (renders page 1 at 2x scale)
- Creates a lightweight Set from the upload and auto-links it to the current scene
- Bypasses the Set Builder for simple stage plans and venue diagrams
- Streamlined File Management — Import tools relocated to contextual toolbar positions:
- Import Script (PDF) now appears in the Show Structure toolbar
- Import Props CSV now uses the upload icon in the Props toolbar with a full preview modal (append/replace, scene matching, template download) — matching the Deadline import pattern
- Settings tab now inlines all project lifecycle operations (Cloud sync, Open, Download, New Project)
- Admin Portal Access — Relocated from Header to Settings > Administration section, visible only to super admins. Pending member approvals now shown as a red badge on the Members tab in the Admin Portal sidebar.
- Script Import Repair — When AI script analysis partially fails, fix it without re-uploading:
- Status Chip in the Show Structure toolbar shows real-time import progress (processing → completed/partial/failed)
- Sidebar Badge on the Show Structure icon provides at-a-glance status from any tab (blue pulse = processing, amber = needs attention, green = done)
- Repair Popover lets you select which phases to re-run (Structure, Props, Sound Cues, Blocks) — failed phases are pre-selected
- No PDF re-upload or OCR reprocessing needed — repairs use existing cloud data
- Barry AI Production Assistant — In-app AI chat powered by Genkit + Vertex AI:
- Floating Action Button morphs into chat panel with liquid spring animation
- Ask production questions — Barry queries scripts, cast, schedules, cues, and project files
- Tool Attribution: See which data sources Barry consulted for each answer
- Suggestion Chips: Quick-start prompts for common queries
- Markdown Responses: Formatted answers with headers, lists, tables, and code blocks
- Roster CSV Import — Import people from CSV or spreadsheet into company roster:
- 4-Step Import Wizard: Upload → Preview → Duplicate Review → Confirm
- Drag-and-drop file upload or paste CSV text directly
- Fuzzy Header Matching: Recognizes 20+ column name synonyms (e.g. "First Name", "Given Name", "fname")
- Smart Duplicate Detection: Levenshtein name similarity (≥80%) and exact email matching
- Review potential duplicates with Skip or Import as New options
- "Ask Barry" Contextual Help — Inline AI assistance at friction points:
- Light-up chip appears when you might need help (e.g., CSV import warnings)
- Click to get AI-powered suggestions without opening the full chat panel
- Roster ↔ Personnel Sync — Org roster and project personnel stay in sync:
- Changes to roster contact info auto-propagate to linked project personnel
- Project-level edits to linked personnel queue for admin review in the Dashboard
- Dashboard "Attention Required" widget shows pending roster updates
- Add from Roster — Quick-add project personnel from the org-wide roster:
- New "Add from Roster" button in the Personnel Directory toolbar
- Pre-fills name, email, phone, and category from the org roster record
- Automatically links the personnel record back to the roster person
- Expanded Roster Categories — Six org-level categories: Staff, Volunteer, Board, Student, Guest Artist, Contractor (replacing the project-level Cast/Crew/Production at organization scope)
- Organization Inventory — Track org-owned physical assets across productions:
- Dedicated Inventory Page in the Admin Portal with table view, filters, and search
- Track item type, condition, storage location, availability, and photos
- Usage history shows which productions borrowed each item
- Add items via Prop/Costume modals, Archive Sweep, or manual entry
- Import from Past Production — Bring data from archived shows into new projects:
- Import Wizard with source project selector and category picker (Props, Costumes, Schedule Stats)
- Preview items before importing; select individually or in bulk
- Access from the Projects Page header button
- Archive Sweep — Inventory checklist before archiving a production:
- Automatically scans project props and costumes for inventory-eligible items (Stock, Purchased, Built)
- Already-inventoried items shown with green checkmarks
- Select items to add to org inventory, then archive in one step
- Milestone Recognition Engine — Automatic theatrical milestone detection:
- Diamond markers on Season Timeline for recognized milestones
- Two strategies: First-of-type (opening night, first tech, first run) and title-based (events matching theatrical keywords)
- Compact dots on the Dashboard's Season Snapshot widget
- Hover tooltips show milestone name and date
- Schedule Statistics — Analytics popup for past production schedule patterns:
- KPI cards, event type breakdown, and milestone timeline
- Accessible from the Import Wizard when viewing a source production's schedule data
- Attendance Module MVP — Full attendance tracking for Stage Managers:
- QR Code Sign-In: Generate and display QR codes linking to a public sign-in page for actors
- Fullscreen QR Projection: One-click projector mode displays QR code with event title and instructions
- Cloud-Secured Sign-In: Server-side token validation with automatic late detection (30-minute window)
- SM Attendance Roster: Summary cards (Present, Late, Missing, Excused), urgency-sorted actor list, tappable status badges for manual overrides
- Event Selector: Defaults to today's first event; switch between any scheduled event
- Quick Contact: Call or email actors directly from the attendance roster
- Dashboard Widget: "Today's Attendance" card with present/late/missing counts and progress bar
- Real-Time Sync: All attendance data syncs in real-time via Firestore subcollections
- First-Run Onboarding — Guided experience for new project members:
- Getting Started Wizard (SM): Multi-step wizard for Stage Managers on first project visit — import script + batch invite team
- Welcome Card (Collaborators): One-time greeting card with role badge, show title, and quick-start tips
- Roster-Powered Invites: Typeahead search-and-select from organization roster with manual entry fallback
- Contextual Empty States: All major modules upgraded with actionable CTAs (Import Script, Add Prop, etc.) instead of passive text
- Live Performance & Show Calling — Purpose-built show-calling interface for Stage Managers:
- Cue-Focused Layout: Current cue (large) + next cue preview with GO, SKIP, and BACK controls
- Department-Coded Cards: Cue cards color-coded by department (blue=LX, green=SQ, purple=FS, amber=DECK) with script context
- Show Clock: Real-time wallclock and elapsed show timer with monospace typography
- Quick Notes: Timestamped free-text notes during performance
- Show Controls: Start, intermission, end, and marker buttons for show flow management
- Keyboard Shortcuts: Space/Enter = GO, Arrow Right = Skip, Arrow Left = Back
- Forced Dark Mode: High-contrast amber/green/red visual treatment optimized for calling from a booth
- Auto-Save: Draft performance logs auto-save every 60 seconds during live shows
- Firestore Integration: Complete performance logs with cue timing, notes, and markers
- Demo Project — The Tempest — Pre-loaded showcase production for exploration and demos:
- Click "Load Demo — The Tempest" in the Season page's New Production dialog or empty state
- Creates a real cloud project with 15 personnel, 10 characters, props, costumes, sound cues, lighting cues, schedules, blocking, attendance, prompt book cues, run sheet rows, notes, and more
- Navigate every workspace to see a fully populated production without entering any data
- Great for onboarding, demos, and testing
Improvements
- RolesPage Redesign — Updated Admin Portal Roles page with org template management and project override indicators
- Batch Onboarding — Spreadsheet paste parsing improvements for bulk team member imports
- Scheduler Layout — Sidebar height now locks to the calendar grid; sections use proportional sizing (60/40 for templates/segments) with a fixed-height legend showing all 9 event types; calendar cells stretch to fill available height with no blank gap
- Script Import Status — Replaced persistent completion/failure toasts with Hybrid status system (sidebar badge + toolbar chip);
JobProgressContextsimplified to lightweight "started" toast only - Framer Motion Animations — Unified animation system replacing fragmented CSS keyframes:
- Barry Panel: Liquid morph from FAB to chat panel with spring overshoot, staggered content materialization on entry, instant dismiss
- Modal/Toast: Smooth enter/exit animations via
AnimatePresence - WorkspaceSelector: Scale + fade transitions
- Sidebar: Smooth collapse/expand with staggered accordion reveals
- Respects
prefers-reduced-motionsystem preference
Technical
- Container Query Responsive Grids — Migrated 12 in-panel components from viewport-based breakpoints (
sm:,md:,lg:) to container query breakpoints (@sm:,@md:,@lg:) so grids reflow correctly inside split panels instead of squeezing columns - New
ExportCSVButtoncomponent with per-tab dispatch logic - Six CSV export functions in
csv-utils.ts: contacts, schedule, deadlines, costumes, sound cues, tracking - Two CSV export functions for lighting:
exportLightingCuesCSV,exportFollowSpotCuesCSV - New
role-inheritance.tsAPI:inheritRoleTemplates,resetRoleToTemplate,isRoleCustomized - New
useRoleTemplateshook for org-level template CRUD - Firestore security rules added for project invitations subcollection
- 17 unit tests for CSV export functions
- New
MicPackView.tsxcomponent with three-zone layout (setup/matrix/swaps) - New
mic-swap-utils.tswithgenerateSwapSuggestions,calculateMinimumPacks,buildActorScenePresence - New
LockStatetype ('normal' | 'locked' | 'lowPriority') replacinglocked: booleaninMicAssignment - New
PrintMicPlot.tsxreport integrated intoPrintConfigModal - 23 unit tests for mic swap algorithm
- New
LightingSliceZustand store slice managinglightingCues,followSpotCues,followSpots - New
PrintLxCueList.tsxandPrintFollowSpotSheet.tsxprint report components - New
EDIT_LIGHTINGpermission added to RBAC system - Lighting registered as
'lxcuelist'and'followspot'report types inPrintConfigModal.tsx - New
SplitLayout.tsx— recursive renderer consumingLayoutConfigviareact-resizable-panels(Group/Panel/Separator) - New Liquid Glass components:
GlassRegular,GlassClear,GlassPanel,PanelSeparatorwith CSS module tokens - New
glass.module.csswith GlassKit design tokens and accessibility fallbacks (reduced transparency, reduced motion, increased contrast) - New
PanelConfig,LayoutConfiginterfaces andisPanelConfig()type guard inworkspace-config.ts - Added
splitToggleprop toToolActionBarfor split view toggle button - Desktop-only viewport guard via
window.matchMedia('(min-width: 1024px)')in MainLayout - Panel size persistence to localStorage via
onLayoutChangedcallback - New
pdfjs-distdependency (Apache 2.0) for client-side PDF rendering in backdrop upload - New
ImportButtons.tsxwithImportScriptButtonstandalone component for PDF script import - Admin Portal access moved from
Header.tsxtoSettingsTab.tsx(superadmin-gated) SidebarTabscomponent now supports optionalbadgeprop for notification countsAdminLayoutqueries pending approvals viauseAdminProjectsand passes badge to Members tabSettingsTab.tsxrefactored to inline all file management operations (cloud sync, open/download/new project)BlockingTab.tsxupgraded withhandleUploadBackdropsupporting both images and PDF-to-canvas rendering- New
useScriptJobStatushook subscribing toscript_jobsFirestore changes for real-time status + repair actions - New
ScriptJobStatusChip.tsxtoolbar component with 4 visual states (processing/partial/failed/completed) - New
ScriptRepairPopover.tsxwith phase-selective repair checkboxes and error summaries SidebarToolextended withstatusIndicatorprop for colored status dots (processing/warning/success)subscribeToLatestScriptJob()added toai-api.tsfor full job document subscriptionsScriptJobStatustype expanded withphaseErrorsfield andScriptJobStatusValuetype alias- New
motionpackage (MIT, ~32KB gzip) for declarative enter/exit/layout animations - New
useMotionConfighook centralizing transition presets (overlay,subtle,morph) withuseReducedMotionintegration AnimatePresencewrappers onModal,ToastContext,WorkspaceSelector, sidebar accordions- Sidebar collapse uses
motion.divwithlayoutprop for automatic size animation - Barry FAB uses Framer Motion
layoutIdfor positional morph between FAB and panel states - 6 dead CSS
@keyframesremoved (fadeIn,fadeInZoomIn,fadeOutZoomOut,zoomIn,fadeOut,zoomOut) - New
BarryPanel.tsxwithWelcomeMessage,MessageBubble,ThinkingIndicator,SuggestionChipsub-components - New
useBarryChat.tshook managing send/receive, loading states, error handling - New
barry/store.tsZustand slice for messages, open/close, loading state - New Cloud Functions:
barryChat(Genkit chat orchestrator with tool-call loop) - New
barry-tools.ts:searchFiles(Vertex AI Data Store RAG),getProductionData(Firestore shard query) - New
barry-datastore.ts: Vertex AI Search Data Store integration for file search - New
barry-config.ts,barry-prompts.ts: Model configuration and system prompt engineering - New
parse-roster-csv.tswith fuzzy header matching (20+ synonyms) and Levenshtein name similarity detection (10 unit tests) - New
RosterImportWizard.tsx— 4-step modal with drag-drop upload, inline dedup review, and Ask Barry integration - New
useAskBarryhook andAskBarryChipcomponent for lightweight inline AI contextual help - New
roster-sync-api.tswithlinkRosterToPerson,buildPersonnelFromRosterfor org↔project roster linking - New Cloud Functions:
onPersonnelWritten(upward sync with change detection),onRosterPersonWritten(downward sync to linked projects) - New
RosterPickerModal.tsxfor project-level "Add from Roster" with search and category filtering RosterCategorytype expanded from 3 to 6 values:staff,volunteer,board,student,guest,contractorRosterPersontype extended withlinkedProjects,workHistory,externalSourcefieldsPendingRosterUpdatetype andorganizations/{orgId}/pendingUpdatessubcollection for admin review queueAttentionRequiredcomponent now queries pending roster updates and surfaces them in the dashboardRosterPersonModalwork history tab upgraded with vertical timeline styling and linked projects badges- New
org-types.tswithInventoryItem,InventoryItemInput,ItemSource,ItemCondition,ItemAvailabilitytypes - New
inventory-api.ts— Full CRUD fororganizations/{orgId}/inventorycollection - New
useOrgInventory.tshook with real-time Firestore subscription - New
InventoryPage.tsx— Admin Portal table view with type/condition/availability filters - New
useAddToInventory.ts— Lightweight hook for promoting project items to org inventory from modals - New
ImportFromProductionWizard.tsx— 3-step wizard for importing props/costumes/stats from past productions - New
ArchiveInventoryChecklist.tsx— Intermediate archive step with item-selection checklist - New
ScheduleStatisticsPopup.tsx— Analytics popup with KPIs, event breakdown, milestone timeline - New
milestone-recognition.ts— First-of-type + title-based milestone extraction engine (26 unit tests) - New
MilestoneMarker.tsx— Diamond (full) and dot (compact) timeline markers with strategy-based colors - New
useProjectMilestones.ts— Per-project hook that fetches schedule events and runs milestone recognition AdminProjecttype extended with optionalmilestonesfield- Season Timeline (
SeasonRow.tsx) now renders milestone diamond markers on each project's phase bar - Season Snapshot (
SeasonSnapshot.tsx) now renders compact milestone dots on each row - New
attendance/store.ts— AttendanceSlice withattendanceRecords,setAttendanceRecords,clearAttendanceactions - New
attendance/attendance-api.ts—subscribeToAttendance,ensureAttendanceRecord,writeActorStatusFirestore API - New
useAttendanceSync.ts— real-timeonSnapshotsubscription for attendance subcollection - New Cloud Function:
recordAttendanceSignIn— callable function with server-side token validation and late detection - New
AttendanceWidget.tsx— Dashboard widget with present/late/missing counts and progress bar - Updated
AttendanceView.tsx— Full rewrite with summary cards, event selector, urgency-sorted roster, status badges - Updated
SignInLinkModal.tsx— Added fullscreen QR projection mode viarequestFullscreenAPI - Updated
PublicSignInPage.tsx— Shows Present/Late status from Cloud Function response attendanceRecordsexcluded from LocalStorage persistence (storage version unchanged)- Firestore security rules added for
projects/{id}/attendance/{eventId}subcollection - Legacy
AttendanceState,AttendanceStatus,updateAttendanceremoved fromcast/store.tsandcast/types.ts - New
RosterSearch.tsx— Shared typeahead search-and-select component for org roster with multi-select chips and manual entry fallback - New
GettingStartedWizard.tsx— Multi-step SM onboarding wizard (script import + batch invite) - New
WelcomeCardWidget.tsx— One-time collaborator greeting card with Firestore dismiss persistence EmptyStatecomponent enhanced withactionsarray prop for structured multi-button CTAsProjectMembertype extended withonboardingDismissedper-project flagUserProfiletype extended withwelcomeDismissedglobal flagRosterSearchintegrated intoBatchOnboardingComposerfor consistent invite UX- Contextual empty states upgraded across 7 modules: Show Structure, Cast, Dashboard, Props, Costumes, Notes, Blocking
- New
performance/types.tswithPerformanceCue,FiredCue,ShowMarker,QuickNote,PerformanceState,PerformanceLoginterfaces - New
performance/store.ts—PerformanceSliceZustand slice with init, start, fire, skip, navigate, markers, notes, intermission, end, reset actions - New
performance/utils/derive-cue-sequence.ts— pure function mapping prompt book anchors → ordered performance cues (10 unit tests) - New
performance/components/—PerformanceTab,CueCaller,CueCard,ShowClock,QuickNotes,ShowControls - New
performance/performance.module.css— forced dark theme with department-color tokens and CSS custom properties - New
performance/performance-api.ts—savePerformanceLog,saveDraftLog,getPerformanceLogsFirestore API - New
CALL_SHOWpermission added to RBAC system (Owner + Stage Manager default) - Performance workspace registered as
'performance'inworkspace-config.tswith lazy import inMainLayout.tsx - Firestore security rules added for
projects/{id}/performances/{performanceId}subcollection - 29 unit tests for performance feature (10 derivation + 19 store actions)
- New
src/demo/tempest-demo-data.ts— comprehensive demo dataset with typed constants for all 15+ modules - New
src/demo/load-demo.ts—loadDemoProject()hydrates Zustand store viasetState()with field mapping and deep cloning - New
functions/src/debug/seed-demo-project.ts— Admin SDK script to seed demo project to Firestore (8 shards + 4 subcollections) - 75 unit tests for demo data integrity and loader functionality
Version 2.9.0 — February 2026
New Features
- Email System (Phase 1) — Production email distribution powered by Postmark:
- Manual Communication Cards: Current visible cards include Call Sheet, Deadline Ping, Project Invite, and Announcement; report emails are sent from feature workflows
- Template-First Architecture: Shared Postmark Layout (
on-book-master) with production-branded headers and On Book Pro footer - Communications Tab: Quick action cards for composing and sending emails directly from the app
- Composer Components: Dedicated composition interfaces for each email type with recipient picker, rich text editing, and urgency flags
- Email History: Firestore-backed history showing all sent emails with template icons, delivery counts, and partial delivery indicators
- Deadline Ping Integration — PingModal now sends real emails:
- Previously a placeholder toast, now calls the
sendDeadlinePingCloud Function - Sends personalized reminder emails to assigned personnel with deadline details
- Previously a placeholder toast, now calls the
- Email Notification Preferences — New toggle in My Profile:
- Opt out of automated production emails (call sheets, reports, reminders)
- Manual SM-initiated emails always deliver regardless of preference
- Toggle persists on the Personnel record alongside other profile data
- Email System (Phase 2) — 5 automated notifications powered by Firestore triggers and Cloud Scheduler:
- Welcome Email: Automatically greets new team members when they join a production
- Schedule Change Alert: Notifies attendees when rehearsal date, time, or location changes
- Deadline Reminders: Daily 9 AM scan sends reminders for deadlines due within 48 hours (with urgency levels)
- @Mention Notification: Emails users when they're @mentioned in feed posts or comments
- Profile Reminder: Weekly Monday reminder for team members with incomplete profiles
- All automated emails respect opt-out preferences and include deduplication to prevent spam
- Email History shows "Auto" badge for system-sent notifications
- Social Feed Cloud Sync — Feed posts and comments now persist to Firestore:
- Real-time sync across all team members and devices
- Posts, comments, pins, and soft-deletes all saved to cloud
- Graceful local-only fallback when no project is connected
Improvements
- Shared Email Module — Centralized email infrastructure in
functions/src/email/:postmark-client.ts: Lazy Postmark client initialization, layout variable building, RBAC validationtypes.ts: Shared TypeScript interfaces for all email Cloud Functions- Consistent error handling and email history logging across all 7 functions
- Refactored Call Sheet — Migrated from raw
fetchto Postmark SDK with template support - Refactored Meeting Invites — Consolidated from standalone file into the shared email module
- Line Notes Integration —
SendLineNotesModalnow calls the realsendLineNotesCloud Function with per-actor HTML content
Technical
- New module:
functions/src/email/with 7 Cloud Functions and shared utilities - New frontend components:
DeadlinePingComposer,ProjectInviteComposer,AnnouncementComposer - Updated
EmailTabwith 5 action cards (4 composable + 1 info card for feature-page emails) - Expanded
EmailTemplatetype,EmailResult, and request data interfaces - Replaced stubbed
sendBatchwith per-type callable API wrappers and Firestore history reads - Added
emailOptOutfield to Personnel record for notification preferences - All Cloud Functions use
POSTMARK_SERVER_TOKENas a Firebase secret - RBAC validation (
validateEmailSender) integrated into all email functions - New
src/features/feed/feed-api.tswith Firestore CRUD for feed subcollections - New
useFeedSynchook for real-timeonSnapshotlisteners onfeed/andfeedComments/ - Feed data excluded from LocalStorage
partialize(storage version bumped to 8) - Firestore security rules added for
feed/{postId}andfeedComments/{commentId}
Version 2.8.0 — February 2026
New Features
- User-Centric Dashboard — Personalized landing page that adapts to your role and production phase:
- My Calls Widget: Shows only your schedule events for the next 48 hours
- Announcements Widget: Displays pinned posts and @department-tagged posts relevant to you
- Daily Schedule Widget: Full today's schedule for Stage Managers and production staff
- Phase-Aware Layout: Dashboard adapts based on production phase (Pre-Production → Rehearsal → Tech → Performance → Archival)
- Role-Based Visibility: Widgets show/hide based on your workspace (Cast Member, Stage Manager, Director, etc.)
- @Announcement Mentions — New department tag for production-wide posts:
- Renamed from @General to @Announcement for clarity
- Posts tagged @Announcement appear in everyone's Dashboard
- Use for company-wide notices, production updates, and important reminders
Improvements
- Dashboard as Default: Dashboard is now the first tool in all workspaces (your home screen)
- Department-Filtered Announcements: Only see announcements tagged for your department(s)
- Smart Call Filtering: Personalized schedule based on your permissions and group memberships
Technical
- New
src/features/dashboard/module with hooks, widgets, and configuration useProductionPhasehook detects production phase from scheduler milestone eventsuseMyCallshook filters events by user ID and permission-derived groupsuseMemberGroupshook maps permissions to scheduler group tags- Dashboard integrated into MainLayout toolComponents mapping
- Updated workspace-config.ts with 'dashboard' as first tool in all workspaces
Version 2.7.0 — January 2026
New Features
- Video Chat — Embedded video conferencing powered by Daily.co:
- 4 Specialized Layouts: Meeting (screen share focus), One-on-One (equal panels), Table Read (60/40 script split), Rehearsal (minimal video strip)
- Lobby (Hair Check): Device selection, camera preview, and real-time mic level visualization
- Role-Based Access: Stage Managers, Production Managers, and Owners can start meetings; all members can join
- Active Speaker Highlight: Pulsing border indicates who is speaking
- Transcript Capture: Planned future work; automatic meeting transcripts are not currently shipped
- Layout Preview Mode — Development tool for testing video layouts without live calls:
- Mock video tiles with gradient placeholders
- Configurable participant count for testing grid behavior
- Script Subtab — View and edit your imported script:
- Reading Mode: Clean, readable script format with scene navigation
- Block View Mode: Edit script as ScriptBlocks with type classification
- Block types:
dialogue,stage_direction,scene_heading,song,transition - Click any block to edit content, change type, or reassign scene
- Two-Stage AI Pipeline — Improved script import accuracy:
- Stage 1 (Gemini 2.5 Pro): Deep extraction of scenes, characters, and dialogue blocks
- Stage 2 (Gemini 2.0 Flash): Cleanup, linking, and formatting refinement
- Full ScriptBlocks stored for Script subtab display
- On-Demand Extraction — Props and Sound Cues extraction now triggered separately:
- Go to Props → Click "Extract from Script" in toolbar
- Go to Sound → Sound Cues → Click "Extract from Script" in toolbar
- Preview and select which items to import
Technical
- New feature module:
src/features/video/with isolated Zustand store - Cloud Functions:
createDailyRoom,getDailyToken; transcript retrieval was later deferred as future work - Web Audio API mic visualizer with RMS-based level calculation
- Hardware switching state machine with 200ms release delay
- 25 unit tests for video store and permissions
- Cloud Functions:
analyzeScript(two-stage),extractPropsFromScript,extractSoundCuesFromScript - New
ScriptBlocktype withtype,text,sceneId,actId,characterIdfields - Character state consolidated into
showStructure.characters(moved from root state)
Version 2.6.0 — January 2026
Technical Improvements
- Type Safety Hardening — Eliminated technical debt and improved code quality:
ScheduleEventrefactored to discriminated union with 24 specialized event types- Removed implicit 'any' types across codebase
- Sample data schema aligned with current Personnel type format
- Debranding & Naming Cleanup — Internal refactoring for brand consistency:
- Renamed
RunSheetState→ProjectStatethroughout codebase - Renamed
CastMember→Personnelin frontend state - Updated storage keys:
'run-sheet-storage'→'onbook-storage' - Updated event names:
'run-sheet-toast'→'app-toast' - IndexedDB keys updated:
run-sheet-notes-*→onbook-notes-*
- Renamed
- Cloud Storage Schema Update — Firestore persistence modernized:
- Schema version bumped from 3 → 4
- Cloud storage now uses
personnelfield instead of legacycastfield - Backward compatibility maintained during transition
- Projects automatically migrate to new format on next save
- Import Path Standardization — Improved maintainability:
- Standardized Button/Input/Select/Modal imports to use barrel exports
- Reduced direct file imports across feature modules
Bug Fixes
- Fixed
FocusStateinterface mismatch (castMemberId→castId) - Corrected Personnel type usage in print components
Version 2.5.0 — January 2026
New Features
- Self-Service Costume Sizing — Cast members can complete their measurements via My Profile:
- New Measurements tab in My Profile modal (cast members only)
- Progress ring showing completion percentage (e.g., "12/31 measurements")
- "Approved" status badge when measurements are verified by Costume Department
- Onboarding prompt guides actors to complete sparse profiles
- Manual completion toggle (Costume Department only) with audit trail
- Pronouns Support — Inclusivity improvements across the platform:
- Pronoun field in My Profile (she/her, they/them, he/him, etc.)
- Pronouns display on Personnel Cards next to name
- Intelligent silhouette defaults based on pronouns in Measurement Editor
Improvements
- MeasurementEditor Component — Extracted reusable measurement UI from modal for use in multiple contexts
- Cast-Only Measurements — Tab visibility restricted to cast members (not crew/production)
Technical
- New
MeasurementEditorcomponent withcanMarkCompleteprop for context-aware rendering - Added
pronounsfield to Personnel/CastMember type - Added
isComplete,completedBy,completedAtfields to MeasurementProfile for audit trail - Pronoun-based silhouette inference in measurement initialization
Version 2.4.0 — January 2026
New Features
- Production Management Module — Centralized deadline tracking and analytics:
- Dashboard Analytics with real-time metrics (Total, Pending, Met, Missed, Overdue)
- Completion progress visualization with progress bars
- Department breakdown cards with per-department metrics
- Budget health integration from Costumes and Props modules
- Success rate tracking for on-time deadline completion
- Deadline Management — Create and track production milestones:
- Full CRUD operations (create, edit, delete deadlines)
- Department and personnel assignment
- Status tracking (Pending → Met/Missed)
- Ping functionality for deadline reminders
- Overdue detection with visual warnings
- Production Deadlines Report — Professional print output:
- Summary statistics (5 key metrics)
- Comprehensive deadline table sorted by due date
- Department breakdown with completion percentages
- Color-coded status indicators
- Print button integrated into action toolbar
Improvements
- Print Button Migration — Production print now uses action toolbar instead of subtab
- Budget Health Cards — New reusable component for visualizing budget status
- Consistent Print UX — Production follows same print workflow as other tools
Technical
- New components:
ProductionTab,ProductionDashboard,DeadlineManager,CreateDeadlineModal,PingModal,BudgetHealthCard,PrintDeadlines - New selectors:
getDeadlines(),calculateProductionMetrics() - Extended
ScheduleEventtype with deadline support - Integrated with permission system (VIEW_PRODUCTION, EDIT_PRODUCTION)
Version 2.3.0 — January 2026
New Features
- Personnel Directory Redesign — Modern card-based interface for company roster:
- Visual Grid View with avatar cards, role badges, and quick action buttons
- List View toggle for dense editing and drag-and-drop reordering
- Category filter pills (All, Cast, Production, Crew) with counts
- URL state persistence for shareable filtered views
- Full keyboard accessibility with tab navigation
- Self-Service Onboarding — Simplified personnel addition workflow:
- Quick-add modal with minimal fields (name, email, category)
- Auto-match on sign-in prompts users to claim their profile
- Self-disclosure via My Profile modal (phone, bio, emergency contact, headshot)
- Personnel Cards — Rich, scannable contact information:
- Avatar display with headshot or initials fallback
- Character truncation pattern ("Hamlet +2" for multiple assignments)
- Color-coded category badges (Purple=Cast, Blue=Crew, Green=Production)
- Department head and linked account indicators
- Quick-action email and phone links
Improvements
- Character Display Utility — Smart truncation for actors with multiple character assignments
- Category Badge Colors — Consistent color coding across the Personnel interface
- Unified Directory — Cast, Crew, and Production consolidated in single view
Technical
- New components:
PersonnelDirectory,PersonnelGrid,PersonnelCard,PersonnelInviteModal - New utility:
getCharacterDisplayString()for truncated character name display - URL-based filter/view state with
?view=grid&filter=crewpattern - Reuses existing
ActorsTableandCrewTablefor List View
Version 2.1.0 — January 2026
New Features
- Costumes Module — Comprehensive costume management with:
- 31-point anatomical measurement tracking per actor
- Costume piece inventory with scene/character assignments
- Fitting log with notes and attendee tracking
- Quick change marking with duration, location, and dresser assignments
- Source tracking (stock, purchased, rental, borrowed, built)
- Budget tracking per piece with receipt upload
- Budget Dashboard — Production-wide financial overview:
- Summary cards for estimated vs. actual spending
- Variance tracking with color-coded indicators
- Group-by options (Status, Character, Source)
- Dedicated rental returns section with overdue highlighting
- Role-gated access (Stage Manager, Designer, Owner)
- Maintenance Tracking — Shared maintenance tab for Costumes and Props:
- "Needs Repair" and "Needs Laundry/Cleaning" status flags
- Quick action buttons to clear maintenance flags
- Contextual placement within each feature module
- Print Reports — Costume Bible — Professional costume documentation:
- Cover page with show branding
- Table of Contents
- Measurements section with all actor sizing
- Scene-by-scene costume plot
- Per-character breakdown
- Budget summary with totals
- Optional receipts appendix
- Print Reports — Quick Change Plot — Focused quick change documentation:
- Statistics summary (total changes, avg duration, locations, dressers)
- Detailed quick change table with timing and assignments
- Per-dresser assignment cards
- 30-second urgency highlighting
Improvements
- Header Grid Layout — Refactored header to CSS Grid for better button organization
- Props Sub-Navigation — Props now uses subtab pattern (Props List + Maintenance)
- Green Button Variant — New button color for Budget Dashboard access
- Silhouette Assets — Body outline diagrams for measurement visualization
Technical
- Added
VIEW_BUDGETpermission to RBAC system - Costumes feature uses modular Zustand slice architecture
- Print reports access costume data independently from RunSheetState
- Firestore security rules updated for costumes and budget collections
Version 2.2.0 — January 2026
New Features
- My Profile Modal — Personal profile management accessible via avatar click:
- Edit phone, emergency contact, bio, and allergies/notes
- View character assignments (read-only)
- User preferences including theme toggle and keyboard shortcuts
- Logout button consolidated in profile modal
- Feed Notification Badge — Real-time unread count on Feed sidebar item:
- Numeric count when sidebar is expanded
- Dot indicator when sidebar is collapsed
- Clears automatically when Feed is viewed
- Personnel Linking (Admin) — Manual user-to-personnel record linking:
- Link modal with search and personnel grouping by type
- Email match highlighting for easier identification
- Bidirectional link/unlink with click-to-unlink on linked display
- Useful for linking users when auto-link via email fails
- Share Link Relocated to Admin — Project sharing moved from File modal to Members page:
- "Invite Collaborators" section in Admin Portal's Members page
- Generate unique share link with one click
- Copy link with visual feedback
- Share tokens reset when switching projects
- Budget Management — Production managers can now configure project-wide budgets:
- New "Budget Setup" tab in Budget tool (permission-gated)
- Set total costume and props budget allocations
- Real-time comparison of allocated vs actual spending
- Color-coded budget health indicators (over budget, at risk, on track)
- Project-wide currency configuration
- New
EDIT_BUDGETpermission for Production Managers and Owners
Improvements
- Header Simplification — Removed standalone Logout button (now in My Profile modal)
- Settings Tab — Project settings now in dedicated Settings tool tab
- Textarea Primitive — New common UI component for consistent form styling
Technical
- Added
normalizeCasthelper for Firestore array/object format handling - New personnelLinking API with bidirectional link/unlink operations
- Improved Firestore transaction ordering (all reads before writes)
Version 2.0.0 — January 2026
New Features
- React Migration Complete — Full rewrite in React 19 with improved performance
- Social Feed — Threaded discussions with rich media support (replacing Forum)
- Custom Report Builder — Block-based template creator for personalized documents
- Stopwatch Timer — Built-in rehearsal timer in Notes toolbar with timer mark insertion
- Event Type Expansion — Scheduler now supports Meetings, Tech Rehearsals, Performances, and Deadlines
- Late Status Tracking — Attendance system now tracks "Late" arrivals with 30-minute window
- Public Sign-In System — QR code links for self-service attendance tracking
Improvements
- Primitive UI Refactor — All modals and forms now use design system primitives
- Floating Toolbar Enhancement — Stronger shadows and automatic button styling
- Side Tray Layout — Improved mobile responsiveness for Blocking Tracker
- Branded Types System — Type-safe ID handling across the codebase (developer improvement)
Bug Fixes
- Fixed PDF import hanging after "analyzing" toast
- Resolved
setStoreUser is not a functionerror on app initialization - Corrected presence permissions for non-existent projects
- Fixed low-priority UI inconsistencies across tabs
Technical
- Upgraded to Vite 7.2 and React 19.2
- Implemented Zustand persistence with rehydration safeguards
- Added Firebase security rules hardening
- Migrated to direct-path document discovery (no collection group queries)
Version 1.5.0 — December 2025
New Features
- AI Script Analysis — Automatic scene/character extraction from PDF scripts
- Set Builder Calibration — Real-world scaling for accurate floorplans
- Choreography Mode — Separate layer for dance/fight blocking
- AEA Compliance Checker — LORT and NEAT contract rule validation
Improvements
- Enhanced offline sync reliability
- Faster cloud sync with sharded Firestore documents
- Improved print layouts for all features
Bug Fixes
- Fixed audio playback on iOS Safari
- Resolved drag-and-drop issues on touchscreens
- Corrected timezone handling in Scheduler
Version 1.0.0 — October 2025
Initial Release
- Show Structure management (Acts/Scenes/Characters)
- Rehearsal Scheduler with calendar view
- Personnel & Tracking matrix
- Set Builder with 2D canvas
- Blocking Tracker
- Props inventory
- Run Sheet editor
- Sound system with Freesound integration
- Notes with TipTap editor
- Forum for team discussions
- Print system for all views
- Cloud sync with Firebase
- Progressive Web App (PWA) support
How to Update
On Book Pro automatically updates when you refresh the page. If you've installed it as a PWA, updates happen in the background.
Force an update:
- Clear your browser cache
- Refresh the page (Ctrl/Cmd + Shift + R)
- The latest version will load
Known Issues
No known critical issues at this time.
Upcoming Features
- Automated email triggers (Phase 3 — advanced scheduling and digest emails)
- Multi-show portfolio management
- Enhanced mobile rehearsal tools
Subscribe to release notifications: GitHub Releases