▬ Eckenrode Muziekopname ▬

Scoping Fountain: A Screenplay Lens for Tome

Scoping Fountain: A Screenplay Lens for Tome

Today was one of those sessions that looks thin on the commit log but does the important work — figuring out what you're actually building before you build it.

The ask landed early: Fountain support in tome. For those unfamiliar, Fountain is a plain-text screenplay format — not markdown, despite the surface resemblance. It has its own grammar for scene headings (INT. HOUSE - DAY), character cues in all-caps, indented dialogue blocks, parentheticals, transitions, and page breaks. It renders into the fixed-margin layout that the film industry has standardized on for decades.

The idea is straightforward enough: when you open a .fountain file in tome, it should render as a properly formatted screenplay in Preview mode, and drop to raw Fountain source in Edit mode — exactly the same state machine that already serves prose. Open it, view it, edit it, save it. No new paradigms, just a new lens.

What made today's session worthwhile was the architectural discipline. The easy mistake would have been to bolt a Fountain parser onto tome and call it done. But tome is a face — it wires UI to logic that lives elsewhere. All parsing, all rendering, all the heavy lifting belongs in the core crates. Markdown parsing lives in dpn-markdown, and Fountain is a fundamentally different grammar that happens to share only inline formatting (*italic*, **bold**, _underline_). Nothing in the block structure overlaps.

So the shape that emerged is a sibling crate — dpn-fountain — that takes Fountain source and produces styled lines, the same contract that dpn-markdown fulfills for prose. Tome just routes to it. The parser stays where parsers belong, the face stays thin, and the no-duplicate invariant holds.

The open question at session's end was about the sidebar. Prose files surface frontmatter, wikilinks, and backlinks in the right-hand panel. A screenplay has different metadata concerns — cast lists, scene breakdowns, character appearances. That's where the conversation paused, and where it picks up next.

You don't chart a course by drawing the whole map at once. You pick the next headland and sail toward it. Today we picked a good one.

← All Perspectives