Skip to content

Releases: BeetleBot/ActOne-Screenplay

ActOne Screenplay v0.5.1

Choose a tag to compare

@github-actions github-actions released this 20 Sep 11:59

[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 TitlePageEditorModal with 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 pdf2fountain to 0.1.3 – Upgraded the native Rust PDF screenplay converter to version 0.1.3 with 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))) across useCoreCodeMirror, activeLineAlwaysPlugin, computeEmptyLineDecorations, and computeFountainDecorations, preventing out-of-range indexing exceptions when content is truncated or replaced.
  • 🪟 Tauri Teardown Error Handling – Enhanced global error handlers (window.onerror and unhandledrejection) with defensive boundary checks, suppressing transient teardown exceptions (such as Windows tao event loop destruction cannot move state from Destroyed) from triggering false-positive crash screens during application exit.

ActOne Screenplay v0.5.0

Choose a tag to compare

@github-actions github-actions released this 16 Sep 18:17

[0.5.0] - 2026-09-16

Added / Improved

  • Granular External Sync & Undo Preservation – Integrated diff-match-patch into 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_atomically in 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 .actone Script Recovery – Added fallback recovery in unpackActoneBundle for legacy or corrupted archives missing project.json/fountain.json, discovering .fountain, .md, or .markdown scripts 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 in localStorage, 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 AIChatMessage by neutralizing img tags 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_folder command to reject path traversal (..) and restrict automatic directory creation strictly to .snapshots directories.

Fixed

  • 🔄 Async Parse Race Condition – Implemented sequence tracking and staleness guards in FileContext (setRawText and updateFileScriptContent), 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

Choose a tag to compare

@BeetleBot BeetleBot released this 12 Sep 06:24

[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

Choose a tag to compare

@github-actions github-actions released this 09 Sep 11:17

[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