Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
63 changes: 45 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,18 +35,27 @@
- **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
- **Find & Replace** — Regex support, match case, replace all
- **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

Expand All @@ -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

Expand All @@ -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.
Expand All @@ -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)

Expand Down Expand Up @@ -126,15 +143,15 @@ 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.

---

## Building from Source

### Prerequisites

- **Python 3.10+**
- **Python 3.12+** (recommended; 3.10+ supported)
- **Rust 1.70+** (for the native core)
- **Qt 6** (installed via PySide6)

Expand Down Expand Up @@ -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
```
Expand All @@ -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

---

Expand Down
17 changes: 9 additions & 8 deletions openspec/README.md
Original file line number Diff line number Diff line change
@@ -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
29 changes: 28 additions & 1 deletion openspec/roadmap.yaml
Original file line number Diff line number Diff line change
@@ -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:
Expand Down Expand Up @@ -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
68 changes: 66 additions & 2 deletions openspec/status.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
updated: "2026-09-09"
updated: "2026-09-16"

features:
rust-core:
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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"
Loading