Releases: BeetleBot/ActOne-Screenplay
Release list
ActOne Screenplay v0.5.1
[0.5.1] - 2026-09-20
Added / Improved
- 🎞️ Screenplay Timeline View (Alt+T) – Introduced a multi-track interactive visual timeline docked seamlessly into the status bar area for pacing, structure, and real-time scene navigation. Key capabilities include:
- Multi-Track Visualization: Displays acts, sequences, scenes, and custom markers proportionally mapped across script duration.
- Dynamic Filtering & Highlighting: Instantly filter scenes by character, location, or marker type via the status bar menu.
- Customizable Display Options: Persistent multi-select display toggles (Section Lines, Scene Numbers, Scene Colors) saved to
localStorage(sections off by default). - Interactive Scrubbing & Navigation: Click or drag the playhead across the timeline to smoothly navigate through the script, with the playhead cleanly layered behind text labels and numbers.
- Smooth Status Bar Docking & Animation: Clean floating typography without box borders, split track lines around section labels, and a smooth slide-up entrance animation emerging directly from the status bar.
- Keyboard Shortcut: Quickly toggle the timeline on or off at any time using Alt+T or via the Command Palette.
- 📤 UPPERCASE Fountain Normalization on Export – Enhanced the Fountain export pipeline (
exportToFountain&transformBodyLinesUppercase) with an optional automatic normalization toggle that transforms scene headings, shots, transitions, and character cue names into standard UPPERCASE without modifying action or dialogue formatting. - 📄 Robust Title Page Parser & Editor Modal – Upgraded
TitlePageEditorModalwith a comprehensive key dictionary recognizing all standard Fountain title page keys (e.g.title,author,notes,contact,draft date,copyright,watermark,revision). Safely differentiates title blocks from transitions or headings, accurately extracts multi-line fields, and cleanly preserves screenplay body lines starting at line 1 when clearing or modifying metadata. - 📦 Updated
pdf2fountainto0.1.3– Upgraded the native Rust PDF screenplay converter to version0.1.3with refreshed lockfile checksums for enhanced character set mapping and parsing stability.
Fixed
- 🛡️ Editor Selection Bounds & Truncation Guard – Clamped cursor and selection positions (
Math.max(0, Math.min(pos, doc.length))) acrossuseCoreCodeMirror,activeLineAlwaysPlugin,computeEmptyLineDecorations, andcomputeFountainDecorations, preventing out-of-range indexing exceptions when content is truncated or replaced. - 🪟 Tauri Teardown Error Handling – Enhanced global error handlers (
window.onerrorandunhandledrejection) with defensive boundary checks, suppressing transient teardown exceptions (such as Windowstaoevent loop destructioncannot move state from Destroyed) from triggering false-positive crash screens during application exit.
ActOne Screenplay v0.5.0
[0.5.0] - 2026-09-16
Added / Improved
- ⚡ Granular External Sync & Undo Preservation – Integrated
diff-match-patchinto CodeMirror external text synchronization (useCoreCodeMirror), applying targeted changes rather than full-document replacements when external tools (such as AI modifications or translation) update document text, keeping the undo/redo history intact. - 🛡️ Collision-Resistant Atomic File Saves – Enhanced
write_file_atomicallyin the Rust backend to incorporate process IDs and an atomic sequence counter (.{filename}.{pid}-{seq}.tmp), eliminating temporary file naming collisions during concurrent saves. - 💾 Atomic Preference & Theme Persistence – Migrated preferences (
app_prefs.rs) and theme configuration (lib.rs) writes to use the atomic temp-and-rename pipeline, preventing configuration corruption during abrupt shutdowns. - 📦 Manifest-Less
.actoneScript Recovery – Added fallback recovery inunpackActoneBundlefor legacy or corrupted archives missingproject.json/fountain.json, discovering.fountain,.md, or.markdownscripts instead of returning empty content. - 🔐 Transparent AES-GCM Encryption for AI API Keys – Integrated installation-bound AES-256-GCM encryption using standard Web Crypto (
window.crypto.subtle) for AI API keys inlocalStorage, eliminating plaintext exposure while ensuring full cross-platform compatibility across Windows, Linux (Flatpak, AppImage), and headless/minimal desktop setups without OS keyring daemon dependencies. - 🐞 Direct Bug Reporting & Feedback via Sentry – Updated "Report a Bug" to submit user reports directly via Sentry User Feedback alongside system diagnostics and logs without screenplay content, eliminating reliance on vulnerable hardcoded Discord webhooks.
- 📡 Automated Crash Reporting via Sentry – Integrated Sentry error monitoring with strict PII and privacy scrubbing (
sendDefaultPii: false, screenplay content and local paths stripped) to capture unhandled exceptions and Rust panics reliably without webhook leaks. - 🛡️ Sanitized AI Output Rendering – Sanitized Assistant Markdown rendering in
AIChatMessageby neutralizingimgtags to prevent tracking pixels/network requests and enforcing safe external link attributes (rel="noopener noreferrer",target="_blank"). - 🔍 AI Tool Argument Validation – Added strict numeric bounds checking, integer validation, and scene existence verification to AI tools (
replace_scene,tag_scene,read_scene,read_active_cursor_context). - 📁 Snapshot Folder Path Validation – Hardened backend
open_foldercommand to reject path traversal (..) and restrict automatic directory creation strictly to.snapshotsdirectories.
Fixed
- 🔄 Async Parse Race Condition – Implemented sequence tracking and staleness guards in
FileContext(setRawTextandupdateFileScriptContent), preventing older in-flight background parse completions from overwriting newer user edits. - 🔒 Discord Webhook Exposure – Completely removed public Discord webhook URLs from the client bundle.
ActOne Screenplay v0.4.25
[0.4.25] - 2026-09-12
Added / Improved
🎬 Scene Jump Palette (Ctrl+J) – New fast scene navigation palette with fuzzy search across scene headings, scene numbers, settings, locations, and synopses. Shows scene colors, storyline tags, and metadata chips, supports prose headings/chapters, and is accessible via shortcut, Command Palette ("Jump to Scene..."), and keyboard navigation.
📥 PDF Screenplay Import via pdf2fountain – Import .pdf screenplays directly from the Welcome Screen, Project Pane import menu, Command Palette, drag-and-drop, and CLI (actone draft.pdf) using the native Rust parse_pdf_to_fountain converter (bumped to pdf2fountain 0.1.2). A brief accuracy notice reminds users to review formatting since PDF exports vary across apps.
🖱️ Drag-and-Drop Import Targets – Dropping files onto the Project & Scripts pane now adds them directly into the current .actone bundle (screenplays as scripts, Markdown as prose), while dropping onto the editor opens them as a new project. Empty projects (Landing Pad) accept drops anywhere, with a refreshed drop overlay listing supported types (.pdf, .fdx, .fadein, .fountain, .md, .actone) and an in-pane drop indicator plus import progress state.
🖍️ Refreshed Highlight Styling – Solid high-contrast highlight rendering (#ffd600 with dark text, square corners) in screenplay and prose editors, plus per-theme highlight colors for visual consistency across light/dark modes.
📏 Tighter Scene Number Spacing – Brought scene numbers closer to scene headings in the editor for a cleaner screenplay page.
💾 Hardened Save Pipeline & State Sync – Atomic writes now fall back to copy on cross-drive rename failures, folder-open validates canonical directory targets, editor content/dirty state syncs immediately via refs (no lost keystrokes when switching scripts mid-parse or rapid Ctrl+S), and bundle saves sync active script content before zipping.
📚 CLI Documentation & Help Refresh – New dedicated CLI guide (docs/features/23-cli.md), README installation/usage section, and updated in-app help articles covering actone [file] launches, instant imports (PDF/FDX/Fade In/Markdown), expanded import/drag-and-drop docs, and Linux-focused cleanup.
🧪 Expanded Automated Test Coverage – New unit tests for SceneJump fuzzy matching/palette, PDF/Markdown import paths, drag-and-drop behavior, atomic save fallbacks, and folder validation.
Removed
🗑️ Legacy .spmd Import Support – Removed .spmd from all import filters, file pickers, and filename handling in favor of PDF/FDX/Fade In/Fountain/Markdown.
🐧 In-App AppImage Desktop Integration Controls – Removed the Settings "Desktop Integration" card and backend is_appimage / is_appimage_integrated / integrate_appimage commands, plus the first-run install/uninstall integration scripting from the Linux packaging flow and Windows-specific CLI references in docs.
Fixed
🔄 Mid-Parse Script Switch Races – Parse completions now only update the document they started for, preventing background parsing from overwriting or dirty-flagging the wrong script.
📂 Fresh File & Snapshot State Sync – New files and snapshot-opened projects immediately sync active file/script refs so background updates and saves target the correct document.
Full Changelog: https://github.com/BeetleBot/ActOne-Screenplay/commits/v0.4.25
ActOne Screenplay v0.4.24
[0.4.24] - 2026-09-09
Added / Improved
📦 Flatpak Distribution Support & GitHub Actions CI – Added complete Flatpak packaging manifest (flatpak/ink.iyal.actone.yml), .desktop launcher, and AppStream metainfo XML. Automated headless build pipelines in GitHub Actions with Flatpak artifact uploads directly to GitHub Releases.
🐧 Universal Linux AppImage with System Desktop Integration – Built custom AppImage packaging tooling with automatic desktop integration on first run (creating application menu shortcuts, MIME file associations for .fountain and .actone, and high-res icon deployment), plus explicit manual integration and removal controls directly within App Settings.
📐 WebKitGTK & Flatpak Editor Selection Alignment – Resolved selection highlight offset and caret positioning drift on WebKitGTK / Flatpak runtimes by eliminating native CSS zoom and switching to responsive CSS variables (--app-scale-factor and font-size scaling) across the editor workspace canvas.
🎛️ Streamlined AI Model Switcher Palette – Compacted the AiModelPalette modal into a lightweight quick-picker (320px), embedded "Disable AI" at the top of the list, moved "Configure Models…" to the bottom of the list, and optimized key navigation.
📚 Linux Desktop Integration Help Documentation – Added a dedicated help article covering installation, Flatpak sandbox permissions, system font sharing, and desktop integration troubleshooting.
Fixed
📜 Editor Viewport Scroll Jump on Palette Toggle – Fixed a bug where opening or closing the AI Model Palette would forcibly scroll the editor viewport back to the top by removing aggressive scrollIntoView effects and configuring non-intrusive focus management.
⌨️ Palette Double-Jump Keyboard Navigation – Fixed duplicate keydown event bubbling between the modal container and search input that caused arrow key navigation to skip list items.
🔤 Flatpak Font Access Permissions – Configured sandbox filesystem access to user font directories (~/.local/share/fonts:ro, ~/.fonts:ro, /usr/local/share/fonts:ro) so custom installed screenplay fonts render seamlessly in Flatpak.
🔍 Translation Engine Regex Syntax – Corrected escaped character classes in the screenplay translation regex parser to ensure clean linting and regex evaluation.
Full Changelog: https://github.com/BeetleBot/ActOne-Screenplay/commits/v0.4.24