diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 217f66d..a609d45 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,9 +4,9 @@ Thanks for your interest in contributing to Ecrit! This guide will help you get ## Prerequisites -- **Python 3.10+** +- **Python 3.12+** (recommended; 3.10+ supported) - **Rust 1.70+** (for the PyO3 native modules) -- **PySide6** +- **PySide6 6.5+** ## Getting Started diff --git a/README.md b/README.md index fe38a99..8379efa 100644 --- a/README.md +++ b/README.md @@ -35,11 +35,11 @@ - **Outline** — Visual node graph with drag-and-drop scene cards, act breaks, and structure templates (Save the Cat, Hero’s Journey, Three-Act, and more) - **Manuscript** — Courier Prime script editor with full Fountain syntax highlighting, typewriter scrolling, auto-save, and scene numbering - **Proofread** — Read-only view with an issues rail for flagging problems -- **Deliver** — Preview with PDF/ODT/Fountain export, WGA revision tracking, and contest preset validation +- **Deliver** — Preview with PDF/ODT/Fountain/EPUB export, WGA revision tracking, and contest preset validation ### Writing Tools -- **Command Palette** (Ctrl+K) — Fuzzy search across 29 commands +- **Command Palette** (Ctrl+K) — Fuzzy search across 30+ commands - **Sprint Timer** — Timed writing sessions with 15/25/45/60-minute presets - **Reading Mode** — Distraction-free full-screen reading - **Scratchpad** — Clipboard for cut text with paste-back @@ -47,6 +47,15 @@ - **Compare Drafts** — Side-by-side and inline diff between snapshots - **Statistics** — Word counts, page counts, character/scene breakdowns - **Character Sheets** — Name, occupation, wants/needs/flaw, arc, moodboard +- **Bookmarks** — Mark and jump between important lines in your script +- **Scene Tags** — Categorize scenes with color-coded tags for filtering and organization +- **Autosave & Snapshots** — Automatic periodic snapshots with a visual browser to restore any version +- **Annotations** — Attach margin notes to specific lines with a filterable panel +- **Spell Check** — Edit-distance spell checker that understands Fountain syntax (skips scene headings, transitions, etc.) +- **Script Analytics** — Dialogue-to-action ratio, pacing graphs, scene length distribution, and complexity scoring +- **Orphan Finder** — Detect characters mentioned in dialogue but missing from character sheets +- **Title Templates** — Quick-start title page generation from genre-specific templates (thriller, comedy, drama, horror, sci-fi) +- **Character Cards** — Compact relationship-map cards with image, role, and arc summary ### Screenplay Features @@ -64,6 +73,10 @@ - **Remote Sync** — Push/pull to GitHub, GitLab, or Codeberg - **Cloud Export** — Export to Google Drive, iCloud, Dropbox, OneDrive, or Nextcloud - **Share for Review** — Generate self-contained, watermarked HTML files for confidential review +- **Real-time Collaboration** — LAN-based peer-to-peer editing with CRDT conflict resolution and presence indicators +- **Plugin Marketplace** — Browse, install, and manage community plugins with a built-in marketplace UI +- **Android Companion** — Sync screenplay bundles to a companion reader app via LAN or file export +- **Localization** — Full i18n system with translation support (English, French, Spanish, German, Japanese, Portuguese) ### Export Formats @@ -72,8 +85,11 @@ | **PDF** | QPrinter-based, US Letter or A4, optional title page | | **ODT** | ODF-spec compliant for LibreOffice/Word | | **Fountain** | Plain `.fountain` text | +| **EPUB** | EPUB 3 e-book export with metadata, table of contents, and styled chapters | | **HTML** | Watermarked review copies with dark mode | +Écrit can also **import** from Final Draft (`.fdx`) and Fountain (`.fountain`) files. + ### Themes Switch between **Nocturne** (dark) and **Organic** (light) with a single command. Both themes are built from a shared design token system for consistent styling. @@ -88,12 +104,13 @@ Download the latest release for your platform from the [Releases page](https://g | Platform | Download | |----------|----------| -| **Windows** | `Ecrit-x.x.x-win64.zip` | -| **macOS (Intel)** | `Ecrit-x.x.x-macos-x86_64.dmg` | -| **macOS (Apple Silicon)** | `Ecrit-x.x.x-macos-arm64.dmg` | -| **Linux (AppImage)** | `Ecrit-x.x.x-linux-x86_64.AppImage` | -| **Linux (.deb)** | `Ecrit-x.x.x-amd64.deb` | -| **Linux (.rpm)** | `Ecrit-x.x.x-x86_64.rpm` | +| **Windows (installer)** | `Ecrit-x.x-win64-setup.exe` | +| **Windows (portable)** | `Ecrit-x.x-win64.zip` | +| **macOS (Intel)** | `Ecrit-x.x-macos-x86_64.dmg` | +| **macOS (Apple Silicon)** | `Ecrit-x.x-macos-arm64.dmg` | +| **Linux (AppImage)** | `Ecrit-x.x-linux-x86_64.AppImage` | +| **Linux (.deb)** | `ecrit_x.x_amd64.deb` | +| **Linux (.rpm)** | `ecrit-x.x-1.x86_64.rpm` | ### From PyPI (coming soon) @@ -126,7 +143,7 @@ ecrit ### Importing Existing Scripts -Use **Import Script** from the Dashboard or Command Palette to open any `.fountain` file as a new project. +Use **Import Script** from the Dashboard or Command Palette to open `.fountain` or Final Draft `.fdx` files as a new project. --- @@ -134,7 +151,7 @@ Use **Import Script** from the Dashboard or Command Palette to open any `.founta ### Prerequisites -- **Python 3.10+** +- **Python 3.12+** (recommended; 3.10+ supported) - **Rust 1.70+** (for the native core) - **Qt 6** (installed via PySide6) @@ -191,17 +208,23 @@ Ecrit/ │ ├── screenplay/ # Screenplay domain logic │ │ ├── scene_numbers.py │ │ ├── revisions.py -│ │ ├── series_projects.py +│ │ ├── bookmarks.py +│ │ ├── analytics.py +│ │ ├── spellcheck.py │ │ └── ... -│ ├── export/ # PDF, ODT, Fountain, HTML exporters +│ ├── export/ # PDF, ODT, Fountain, EPUB, FDX, HTML exporters │ ├── sync/ # Remote sync and cloud export +│ ├── collab/ # Real-time collaboration (CRDT, P2P, LAN) +│ ├── plugins/ # Plugin marketplace and API +│ ├── companion/ # Android companion sync +│ ├── i18n/ # Localization and translations │ └── stores/ # Application state management ├── src-tauri/ # Rust core (PyO3) │ └── src/ │ ├── fountain/ # Fountain parser │ ├── project/ # Project file management │ └── lib.rs # PyO3 module -├── tests/ # Test suite (517 tests) +├── tests/ # Test suite (766 tests) ├── openspec/ # Feature tracking and roadmap └── public/ # Static assets ``` @@ -226,12 +249,16 @@ Contributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for gui ## Roadmap -The full feature roadmap is tracked in [`openspec/roadmap.yaml`](openspec/roadmap.yaml). All v1.0 milestone features are implemented. Future plans include: +The full feature roadmap is tracked in [`openspec/roadmap.yaml`](openspec/roadmap.yaml). All milestones through v2.0 are complete, including: -- Android companion app -- Real-time collaboration -- Plugin marketplace -- Localization (i18n) +- v0.1 Foundation — Rust core, Fountain parser, design system, dashboard +- v0.2 Full Editor — All 5 phases, character sheets, scene navigator +- v0.3 Project Management — New project wizard, import, settings, formats +- v0.4 Polish — Find/replace, stats, compare drafts, reading mode, sprint timer, command palette +- v0.5 Export & Sync — PDF/ODT/Fountain export, git snapshots, remote sync, cloud export +- v1.0 Release — Series projects, modules, production reports, share-for-review, contest presets +- v1.5 Platform — Localization, plugin marketplace, Android companion, real-time collaboration +- v2.0 Craft Tools — Bookmarks, scene tags, autosave, EPUB export, orphan finder, annotations, analytics, spell check, title templates, character cards --- diff --git a/openspec/README.md b/openspec/README.md index d324753..9270d4b 100644 --- a/openspec/README.md +++ b/openspec/README.md @@ -1,18 +1,19 @@ -# Écrit — OpenSpec Feature Tracking +# Ecrit — OpenSpec Feature Tracking -This directory tracks all features, milestones, and the development roadmap for Écrit. +This directory tracks all features, milestones, and the development roadmap for Ecrit. ## Structure - `roadmap.yaml` — milestones and release plan -- `features/` — individual feature specs organized by area -- `status.yaml` — current implementation status +- `status.yaml` — current implementation status of all features ## Milestones 1. **v0.1 — Foundation**: Rust core, design system, Dashboard, basic Manuscript editor 2. **v0.2 — Full Editor**: All 5 phases (Plan, Outline, Manuscript, Proofread, Deliver) -3. **v0.3 — Project Management**: New project wizard, import, settings, file management -4. **v0.4 — Polish**: Overlays, keyboard shortcuts, theme toggle, sprint timer -5. **v0.5 — Export & Sync**: PDF/ODT export, git snapshots, remote sync -6. **v1.0 — Release**: Android companion, series projects, modules, production reports +3. **v0.3 — Project Management**: New project wizard, import, settings, format system +4. **v0.4 — Polish**: Overlays, keyboard shortcuts, theme toggle, sprint timer, command palette +5. **v0.5 — Export & Sync**: PDF/ODT export, git snapshots, remote sync, cloud export +6. **v1.0 — Release**: Series projects, modules, production reports, scene numbers, revisions +7. **v1.5 — Platform**: Localization, plugin marketplace, Android companion, real-time collaboration, FDX import +8. **v2.0 — Craft Tools**: Bookmarks, scene tags, autosave, EPUB export, orphan finder, annotations, analytics, spell check, title templates, character cards diff --git a/openspec/roadmap.yaml b/openspec/roadmap.yaml index 1a0799a..c9bd6a6 100644 --- a/openspec/roadmap.yaml +++ b/openspec/roadmap.yaml @@ -1,5 +1,5 @@ project: ecrit -version: "0.1.0" +version: "26.09.0" description: "Screenplay writing app for Fountain and Fountain-derived dialects" milestones: @@ -78,3 +78,30 @@ milestones: - structure-templates - revisions-wga - scene-numbers + + - id: v1.5 + title: Platform + status: done + target: "2026-Q2" + features: + - i18n + - plugin-marketplace + - android-companion + - real-time-collaboration + - fdx-import + + - id: v2.0 + title: Craft Tools + status: done + target: "2026-Q3" + features: + - bookmarks + - scene-tags + - autosave + - epub-export + - orphan-finder + - annotations + - analytics + - spellcheck + - title-templates + - character-cards diff --git a/openspec/status.yaml b/openspec/status.yaml index 0624341..39bf648 100644 --- a/openspec/status.yaml +++ b/openspec/status.yaml @@ -1,4 +1,4 @@ -updated: "2026-09-09" +updated: "2026-09-16" features: rust-core: @@ -47,7 +47,7 @@ features: import-screen: status: done - notes: "File dialog to import .fountain files, creates project and opens in editor" + notes: "File dialog to import .fountain and .fdx files, creates project and opens in editor" settings-modal: status: done @@ -160,3 +160,67 @@ features: share-for-review: status: done notes: "Self-contained HTML generation with watermark overlay, Fountain-to-HTML parsing, XSS-safe output. ShareReviewDialog with watermark config, generated shares management." + + # ── v1.5 Platform features ────────────────────────────────────── + + i18n: + status: done + notes: "Translator class with JSON-based translations, 6 languages (en, fr, es, de, ja, pt), settings integration for language switching" + + plugin-marketplace: + status: done + notes: "Plugin API with manifest loading, sandboxed execution, and marketplace UI for browsing/installing community plugins" + + android-companion: + status: done + notes: "LAN device sync, reader-optimized HTML export, and bundle packaging for companion app" + + real-time-collaboration: + status: done + notes: "CRDT-based conflict resolution, P2P networking with LAN discovery, session management with presence indicators" + + fdx-import: + status: done + notes: "Final Draft .fdx XML import with element type mapping to Fountain format" + + # ── v2.0 Craft Tools ──────────────────────────────────────────── + + bookmarks: + status: done + notes: "BookmarkManager with add/remove/toggle/jump-next, persistent JSON storage per project" + + scene-tags: + status: done + notes: "Color-coded tags per scene with filter support, TagManager with JSON persistence" + + autosave: + status: done + notes: "Periodic automatic snapshots with configurable interval, AutosaveBrowser overlay for visual restoration" + + epub-export: + status: done + notes: "EPUB 3 export with metadata, NCX table of contents, styled XHTML chapters, and cover page" + + orphan-finder: + status: done + notes: "Detect characters in dialogue not present in character sheets, dialog with match results and add/ignore actions" + + annotations: + status: done + notes: "Line-anchored margin notes with AnnotationsPanel for browsing, filtering, and jumping to annotated lines" + + analytics: + status: done + notes: "Dialogue-to-action ratio, pacing analysis, scene length distribution, complexity scoring with visual charts" + + spellcheck: + status: done + notes: "Edit-distance spell checker with Fountain-aware word extraction, skipping headings/transitions/parentheticals" + + title-templates: + status: done + notes: "Genre-specific title page templates (thriller, comedy, drama, horror, sci-fi) with field auto-population" + + character-cards: + status: done + notes: "Compact relationship-map cards with image placeholder, role, arc summary, and quick-edit panel"