How InariWrite grew from scaffold → shippable editor → hardened OSS. Timelines are flexible.
Related: Doc index · Architecture · Platforms · Release / 1.0 · Optional cloud
- Phase overview — one-screen status of phases 0–5.
- Per-phase sections — checklists and exit meaning for that milestone.
- Version 1.0 — go to RELEASE.md for the actionable release checklist (not duplicated here).
| Phase | Focus | Status |
|---|---|---|
| 0 | Monorepo, CI, core + web + CLI skeleton | Shipped |
| 1 | Credible web editor (preview, i18n, files) | Shipped |
| 2 | Safe for external contributors | Mostly shipped — two items open (see Phase 2 below) |
| 3 | MarkdownPlugin, CLI preview / build / check, worker preview |
Shipped |
| 4 | PWA, a11y baseline, audits, gzip budgets, Playwright | Shipped |
| 5 | Optional cloud stance + CLI publish |
Shipped |
| Surface | Location | Run / ship |
|---|---|---|
| Web + PWA | apps/web |
pnpm dev · deploy dist/ |
| Desktop | apps/desktop (Tauri) |
pnpm desktop:dev · pnpm desktop:build |
| Mobile | Capacitor from apps/web |
pnpm mobile:sync (after mobile:add:*) |
| CLI | apps/cli |
See README |
Details: platforms.md.
Goal: Clone the repo and understand it in minutes.
- Monorepo (pnpm, Turborepo)
- CI: lint, typecheck, test, build (
.github/workflows/ci.yml) -
packages/core:parseMarkdown→ mdast + Vitest -
apps/web(Vite + React);apps/cliwith--version - Docs linked from README
Exit: Green CI on main; layout matches architecture.md for core, web, cli (planned: editor / react packages on top of core).
Goal: Daily-use Markdown in the browser.
- Editor + live GFM preview (
markdownToHtml+rehype-sanitizein@inariwrite/core) - Dark/light themes (
localStorage) - i18n:
mndefault,en—@inariwrite/i18n,react-i18next - Open/save (file picker + download)
- README:
pnpm devquick start
Exit: Real notes/docs can be written and saved; MN/EN UI works.
Goal: Strangers can contribute with a clear process.
- Issue + PR templates (
.github/ISSUE_TEMPLATE,pull_request_template.md) - good-first-issues.md (apply label
good first issuewhen filing) - SECURITY.md and CoC — replace contact placeholders before a wide public launch
- Optional docs site (VitePress / Astro) mirroring key pages
- Changesets (
.changeset/config.json; npm publish when registry/token ready) - Dependabot (npm + Actions —
.github/dependabot.yml)
Exit: First external PR merged with a documented, repeatable flow.
Before a big announcement: finish the two unchecked items above (contacts + optional docs site).
Goal: One pipeline in core; web and CLI prove it.
-
MarkdownPlugin(defineMarkdownPlugin, remark/rehype) +@inariwrite/plugin-sample— plugins.md · plugins.mn.md - CLI
preview,build(markdownToHtmlDocument); same default plugins as web - Web preview in a Web Worker; Shiki/Mermaid = optional future plugins
- CLI
check— relative.md/.markdownlinks resolve on disk
Exit: Plugins + CLI documented; no duplicate markdown pipeline in apps.
Goal: Trust for real users and embedders.
- PWA —
vite-plugin-pwa+ Workbox (apps/web) - A11y baseline — skip link,
:focus-visible, previewrole="alert", landmarks, labeled controls - Supply chain — Dependabot;
pnpm audit --audit-level=highin CI;pnpm.overrideswhen needed - Gzip budgets + Playwright smoke —
pnpm run budget,pnpm run test:e2e(afterpnpm build)
Exit: 1.0-style criteria live in RELEASE.md.
Goal: Servers only where they add clear value.
- optional-cloud.md — sync / auth / AI as separate services
- CLI
publish <file> -u <url>— raw Markdown to your endpoint (Bearer:INARIWRITE_PUBLISH_TOKEN) - Default web + CLI need no backend (README Local-first)
- SECURITY.md — scope for optional future services
Exit: Local-first stays obvious in README and docs.
Ideas aligned with architecture.md Later / planned layers—prioritize by maintainer and user need.
| Theme | Examples |
|---|---|
| Core / packages | packages/editor, packages/react as thin layers over @inariwrite/core |
| Editing UX | Stronger keyboard shortcuts; deeper offline / File System Access API |
| Output | Export PDF; richer CLI build parity with web |
| Ecosystem | Curated inariwrite-plugin-* on npm |
| Collaboration | CRDT/OT after the document model is stable |
The checklist to call a release 1.0 lives only in RELEASE.md (semver, i18n completeness, maintainer contacts, CI, e2e, Changesets).
This roadmap records history by phase; RELEASE.md is what to do next to ship 1.0.