Skip to content

About

iA Writer Classic Clone

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

Writer Classic app icon

Writer Classic

A quiet, keyboard-first Markdown editor for macOS.
A Tauri 2 and Vue 3 reimplementation of iA Writer Classic 2.1.6 for Apple Silicon, with Vim and dark mode added.

macOS 11+ Apple Silicon Tauri 2 Vue 3 License: MIT

Features · Install · Shortcuts · Development · Limits


The Writer Classic window: a Markdown document in a monospaced column with heading marks hung in the margin, the format bar and word count in the footer, and Vim in NORMAL mode.

About

Writer Classic is a writing window and not much more: one column of monospaced text, a footer that fades while you type, and native macOS menus for the rest. The installed iA Writer Classic 2.1.6 is the behavioral and visual reference. Vim and dark mode are the two additions.

Vim is on by default. Edit → Vim Mode turns it off and remembers that choice. Dark Mode is in the View menu.

Note

This is a working implementation, not a claim of exact parity. The acceptance matrix, reference sources, regression evidence and remaining fidelity gaps are in docs/implementation.md.

Features

  • Vim by default. Normal, insert and all three visual modes (characterwise, linewise and blockwise) with their operators, plus :w, :q and :wq.
  • Sentence focus. Command-D dims everything except the sentence you are writing.
  • Light and dark. View → Dark Mode switches the editor and the separate preview window together.
  • Your bytes, untouched. Text is not trimmed or normalized on open or save. UTF-8 BOMs, mixed CRLF and LF, tabs, duplicate lines and final newlines all survive.
  • Saves you can trust. Named documents autosave after a pause and unnamed drafts are recovered locally. A file changed on disk blocks overwriting, and a cancelled or failed save never closes the document.
  • Native versions. File → Browse All Versions reads macOS NSFileVersion history. Restore a version, copy it, or delete it.
  • Import and export. Open text or import DOCX. Export HTML, DOCX and RTF, or save a PDF from the print dialog.
  • A Mac citizen. Native menus, spelling and substitutions through Cocoa's responder chain, system word completion, a help book, AppleScript and Quick Look previews.
Focus Mode: every sentence is dimmed except the one holding the cursor.
Focus Mode keeps the current sentence lit and dims the rest. Screenshots show the browser build, which sets text in Menlo.

Install

Writer Classic uses Cocoa APIs and runs on macOS only. There is no prebuilt release, so build it from source.

Requirements

  • macOS 11 or later on Apple Silicon
  • Xcode command-line tools
  • Node.js 22.12 or later
  • Rust with the aarch64-apple-darwin target

Run it in development

export PATH="$HOME/.cargo/bin:$PATH"
npm ci
npm run tauri -- dev

Build the app

npm run tauri -- build --target aarch64-apple-darwin
open 'src-tauri/target/aarch64-apple-darwin/release/bundle/macos/Writer Classic.app'

Important

The app is built locally and ad-hoc signed. It is not notarized for distribution.

npm run dev serves a browser build for verification. Its Save action downloads a file instead of writing to disk. Use the native app for document storage, versions, system dialogs and text services.

Keyboard shortcuts

Documents

Action Shortcut
New document window ⌘N
Open text or import DOCX ⌘O
Save as UTF-8 text ⌘S
Duplicate ⇧⌘S
Export HTML, DOCX or RTF ⇧⌘E
Print plain or formatted ⌘P · ⌥⌘P
Find, or find and replace ⌘F · ⌥⌘F
Close window, or close all ⌘W · ⌥⌘W

View

Action Shortcut
Sentence focus ⌘D
Preview ⌘R
Format bar ⌥⌘T
Dark mode ⌥⌘D
Full screen ⌃⌘F

Formatting

Action Shortcut
Heading 1–6, or body text ⌘1–⌘6 · ⌘0
Strong ⌘B
Emphasis ⌘I
Strikethrough ⌘-
Link ⌘K
Unordered or ordered item ⌘L · ⇧⌘L

Vim

Keys Effect
i Insert mode
Esc Normal mode
v · V · ⌃V Characterwise, linewise and blockwise visual
:w · :q · :wq Save, close, save and close
⌥⌘V Turn Vim mode on or off

With Vim off, Esc asks the system for word completion.

Fidelity and limits

Reference assets. The installed Classic application was inspected read-only. Its proprietary icons, fonts and other resources are not bundled. On a machine with Classic installed in /Applications, the native app loads its Nitti font in memory; otherwise it uses Menlo. The Menlo fallback is a known visual parity limit.

iCloud. Files in an existing iCloud Drive folder can be selected through the native dialogs. The original Classic iCloud container belongs to its publisher and cannot be assumed accessible. This checkout has no Apple Developer signing identity or iCloud container entitlement, so private-container parity is not verified.

Development

Run every check before you push:

npm test
npm run test:icons
npx playwright install chromium webkit
npm run test:e2e
npm run build
cargo test --manifest-path src-tauri/Cargo.toml
python3 scripts/verify-bundle.py # after the targeted native build above
qlty config validate
qlty check --all

.githooks/commit-msg checks commit messages. Enable it once per clone with git config core.hooksPath .githooks.

The browser suite tests real Vim editing, default and persisted preferences, every visual-mode operator, raw file round trips, draft recovery, modal guards, find and replace, previews, and export and import. Native dialog failures are tested at the Tauri boundary. Rust tests exercise real filesystem writes, symlinks, conflict rejection, native file versions and moves. Neither replaces a controlled native desktop scenario.

node scripts/readme-screenshots.mjs regenerates the screenshots in docs/images.

Document Covers
PRODUCT.md What is being built and for whom
DESIGN.md The writing window's composition and interaction
docs/implementation.md Acceptance matrix, evidence and open fidelity gaps
brand/ICONS.md App and document icons, and how to rebuild them

License

MIT © 2026 Sid Wood

Writer Classic is an independent project. It is not affiliated with or endorsed by iA, the maker of iA Writer.

About

iA Writer Classic Clone

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages