Skip to content

liminallyspaced/dreamwrite

Repository files navigation

DreamWrite

DreamWrite

Offline ink-and-paper screenwriting.
Script · Board · Timeline — one document, no accounts.

Release MIT CI Offline

⬇ Download latest release · Install · Features · Develop


DreamWrite script view — sample screenplay on paper

One entity, three views. A scene is a script block and a board card and a timeline event.

DreamWrite board view   DreamWrite timeline view

Author Nicholas Siegel (liminallyspaced)
Stack Electron 33 · vanilla JS · esbuild · vitest
Platforms Windows x64 (installer + portable) · macOS arm64/x64 (DMG via CI/Mac)
License MIT

Why DreamWrite

Screenwriters juggle format tools, boards, and timelines — three apps, three models of “what a scene is,” plus logins and subscriptions.

DreamWrite is a single offline desktop workspace:

  • Industry-style pagination for screen and PDF
  • Full undo (command stack — prose is never silently dropped)
  • Board + timeline linked to the same script entities
  • No accounts, no telemetry, no network by default

Features

Area What you get
Script Courier Prime · 54 lines/page · Tab/Enter flow · CONT'D/MORE · multi-page paper stack · PDF
Pagination One engine for layout, stats, and export
Undo Full command history · typing merges · Ctrl/Cmd+Z
Marking wheel Middle-mouse hold · ≤8 contextual items · flick to mark · drag to pan
Timeline Integer ticks · bookend eras · lane packing · scene sync · jump to script
Board Notes · scene-cards · nested boards · templates · image assets · tables
Search / Bible Offline full-text · characters & locations from script
Projects Fountain in/out · folder packages + content-addressed assets · atomic saves

Not included (on purpose)

Non-goal Why
Real-time collab Needs accounts/server — breaks the premise
Stock photos by default Network is not the default
Web clipper as core Separate product if ever

Product direction

DreamWrite full desk UI

Monochrome carbon desk · clean white paper · Courier only on the page · IBM Plex / Source Serif for chrome.

Screenshots are live captures of the app (sample project The Last Signal), not concept art.


Install

Windows

From Releases:

File Use
DreamWrite-Portable-*.exe Preferred: install via npm run deploy:desktop
DreamWrite-Setup-*.exe Optional NSIS (does not auto-spam Desktop shortcuts)

Desktop update (Windows) — one launcher only

npm run deploy:desktop        # pack + install + scrub Desktop
npm run deploy:desktop:quick  # reinstall from existing dist/
What Where
App binary %LOCALAPPDATA%\Programs\DreamWrite\DreamWrite.exe
Desktop Exactly one DreamWrite.lnk (nothing else)
Old builds %LOCALAPPDATA%\DreamWrite\archive\ (never Desktop)

Deploy removes loose Desktop DreamWrite*.exe, *-FIXED.lnk, unpack folders, and old archive piles. Do not keep a second git clone on the Desktop — use SYNTH-PROJECTS\ScriptDesk only.

SmartScreen may warn on unsigned builds → More infoRun anyway if you trust the source.

macOS

Download the .dmg for your chip (arm64 or x64) from Releases (when published), or build on a Mac:

npm install && bash scripts/pack-mac.sh

First open if unsigned: right-click → Open.

Projects live in Documents/DreamWrite/.


Develop

git clone https://github.com/liminallyspaced/dreamwrite.git
cd dreamwrite
npm install
npm start
npm test                 # unit tests
npm run test:smoke       # Electron smoke (Windows)
npm run pack:win         # Setup + Portable → dist/
npm run deploy:desktop   # pack + clean Desktop (archive older builds)
Command Output
npm run pack:win DreamWrite-Setup-<ver>.exe + DreamWrite-Portable-<ver>.exe in dist/
npm run pack:mac DMG + ZIP (must run on macOS)
npm run deploy:desktop Single Desktop shortcut → LocalAppData install; archives off-Desktop

Tag a release to trigger CI builds:

git tag v1.2.1
git push origin v1.2.1

Architecture

src/core/      pure modules — store, pagination, board, timeline, format-v2
src/views/     script / board / timeline UI
src/app.js     renderer shell
main.js        Electron main — dialogs, atomic writes, path sandbox
docs/          ADRs + specs
website/       README images + optional static landing assets

Invariants: offline · core/ has no DOM · mutations via command stack · one pagination engine · never silently delete prose · never migrate projects in place.


Verification

  • 177 unit tests (vitest)
  • Electron smoke (load · type · autosave)
  • Windows NSIS installer + portable via electron-builder

Keyboard

Shortcut Action
Tab / Enter Cycle element / new block
Ctrl/Cmd+1…7 Element type
Ctrl/Cmd+Z Undo
Ctrl/Cmd+S / O / N Save / Open / New
Ctrl/Cmd+F Find
Ctrl/Cmd+P Export PDF
F11 Focus mode
MMB Wheel / mark / pan

License

MIT — see LICENSE.

Not affiliated with Final Draft, WriterDuet, Celtx, Milanote, or Aeon Timeline.


DreamWrite · liminallyspaced

About

DreamWrite — offline ink/paper screenwriting. Script + board + timeline. No accounts. Windows installer in Releases.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors