Nowline

io.nowline由 nowline.io 發布v0.12.1更新於 Nov 4, 2026

Create and edit your roadmaps in a plain-text format.

概覽

AI 產生的概覽

建立、驗證並算繪 .nowline 純文字路線圖檔案,可匯出為 SVG、PNG、PDF、HTML、Mermaid、XLSX 或 MS Project XML。

可以做什麼
  • 讀取、列出、建立、更新與刪除本機的 .nowline 路線圖檔案
  • 驗證路線圖原始碼並回傳含行列資訊的結構化診斷
  • 將路線圖算繪為 SVG 或 PNG,並提供對話內預覽與版面提示
  • 匯出為八種格式,包括 PDF、XLSX、HTML、Mermaid 與 MS Project XML
  • 在 .nowline 原始文字與 JSON AST 之間互相轉換
  • 查詢 DSL 參考、範例、schema、主題、圖示、語言、格式與範本
適用情境
適合以可版控的文字維護產品或工程路線圖,並希望助理在對話中直接草擬、修正與算繪的情況。也適合需要把路線圖輸出成 PDF、試算表或 MS Project 檔案的團隊。
執行需求
以本機 stdio 程序執行,透過 npm 套件 @nowline/mcp 安裝;未宣告驗證、環境變數或標頭。僅支援桌面端主機。README 指出使用 @nowline 系列套件需要 Node 22 以上版本。
安裝前請注意
create 工具會覆寫同路徑的既有檔案,update 會取代檔案,delete 會刪除本機檔案,請確認指向的目錄。share 工具會把完整路線圖原始碼編碼進連結,任何取得連結的人都能在免費網頁應用中開啟,機密內容不宜分享。專案仍在 0.x 階段,公開 API 可能在小版本之間變動。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Nowline,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[Nowline]

Roadmaps as code. For everyone.
Human readable roadmaps, built for AI.
Plain .nowline text files. Version-controlled. Render to SVG, PNG, PDF, HTML, Mermaid, XLSX, and MS Project XML.


What is Nowline?

Nowline is a text-first DSL for describing product and engineering roadmaps — human readable and machine readable. You write plain .nowline text files — indented, keyword-driven, diff-friendly — and tooling renders them as timelines, validates them, and composes them.

examples/minimal.nowline:

nowline
nowline v1
roadmap minimal "Starter" start:2026-01-05 scale:2w author:"Jane Doe"
swimlane engineering "Engineering"  item research "Research"  duration:3w status:done  item design   "Design"    duration:2w status:in-progress remaining:5d  item build    "Build"     duration:3w status:planned

Renders to:

[Minimal roadmap rendered with light theme and now-line on 2026-02-09]

Why Nowline?

  • Text, not a Gantt chart. Version-controlled, diffable, reviewable in a PR.
  • Indentation, not XML. Roadmaps read like outlines, because that's how people think about them.
  • Strict enough to catch mistakes. 30+ validation rules, clear error messages with line and column numbers.
  • Composable. include other files with explicit merge / ignore / isolate semantics.

Quick start

Install the CLI from your package manager:

bash
brew trust lolay/tap                                 # macOS / Linux / WSL (one-time)brew install lolay/tap/nowline

Debian/Ubuntu and Windows users can grab the latest .deb or .exe from GitHub Releases. See packages/cli/README.md for the full install matrix (including man nowline setup).

Toolchain

Two-tier Node policy: Node ≥ 22 to consume @nowline/* packages (engines.node on every published package), Node 26 (.nvmrc) to develop. CI tests both versions on every PR. See Toolchain & Supported Versions for the full policy and bump procedure.

Render your first roadmap:

bash
nowline examples/minimal.nowline                     # writes ./minimal.svgnowline --version

Or scaffold a brand-new file from a template:

bash
nowline --init my-project                            # ./my-project.nowlinenowline --init my-project -t teams                   # ./my-project.nowline (teams template)

To give an AI agent Nowline tools, install the plugin from this repo's marketplace. In Claude Code:

text
/plugin install nowline --marketplace lolay/nowline

GitHub Copilot CLI and Codex read the same marketplace; see plugins/nowline/README.md for those and the other ways to add the MCP server.

For the VS Code / Cursor / VSCodium extension, search Nowline on the VS Code Marketplace or Open VSX.

0.x versioning. nowline is on 0.x.y while we settle the embed surface and IDE expansion. Public APIs may change between minor versions; full SemVer guarantees apply once we ship 1.0. See specs/releasing.md for the version contract.

To run from a checkout for local development (pnpm install && pnpm build), see CONTRIBUTING.md.

Use the CLI

nowline is verbless: rendering is the default. Other operations are flags on the same command.

Render (default)

bash
nowline roadmap.nowline                          # writes ./roadmap.svgnowline roadmap.nowline -f png                   # writes ./roadmap.pngnowline roadmap.nowline -f pdf                   # writes ./roadmap.pdfnowline roadmap.nowline -f html                  # writes ./roadmap.htmlnowline roadmap.nowline -f mermaid               # writes ./roadmap.mdnowline roadmap.nowline -f xlsx                  # writes ./roadmap.xlsxnowline roadmap.nowline -f msproj                # writes ./roadmap.xmlnowline roadmap.nowline -o roadmap.pdf           # format inferred from extensionnowline roadmap.nowline -o -                     # SVG to stdoutnowline roadmap.nowline --theme dark --now 2026-03-15nowline roadmap.nowline --now - --asset-root ./brand --no-links --strictnowline roadmap.nowline -f pdf --page-size a4 --orientation landscape --margin 0.5incat roadmap.nowline | nowline -                  # stdin → ./roadmap.svg

The render pipeline is @nowline/core parse → @nowline/layout layout → @nowline/renderer SVG → format-specific exporter. Output is byte-for-byte deterministic for the same input, theme, and --now. A single nowline binary ships every format — see packages/cli/README.md for install details.

Validate (--dry-run)

Run the full pipeline (parse + validate + layout + format) without writing. Exits 0 on success, 1 if any errors are emitted.

bash
nowline roadmap.nowline --dry-runnowline roadmap.nowline -n                          # short aliascat roadmap.nowline | nowline - --dry-run           # read stdinnowline roadmap.nowline -n --diagnostic-format json # machine-readable outputnowline - -n --format=json < roadmap.nowline        # same, json is the default here

--diagnostic-format text|json picks the stderr format; with --dry-run --format=json it defaults to json, otherwise text. JSON mode writes one { "$nowlineDiagnostics": "1", "diagnostics": [...] } document to stderr whenever any diagnostic exists, warnings included, so a warnings-only source exits 0 with the document. Clean sources print nothing.

Convert text ↔ JSON

Convert is just -f json (or -f nowline to go the other way). Input format is inferred from the extension; --input-format overrides for unusual filenames.

bash
nowline roadmap.nowline -f json -o roadmap.json    # text → JSONnowline roadmap.json -f nowline -o roadmap.nowline # JSON → text (canonical)nowline roadmap.nowline -f json -o - | jq '.ast.roadmapDecl.name'

The emitted JSON carries a top-level "$nowlineSchema": "1" so downstream tools can detect schema changes. Comments are not preserved across round-trips — see packages/cli/README.md for the canonical printer rules.

Serve (--serve)

Run a live-reload preview in the browser. Great while authoring.

bash
nowline roadmap.nowline --serve                    # http://127.0.0.1:4318nowline roadmap.nowline --serve -p 4400 -t dark --opennowline roadmap.nowline --serve -o latest.svg      # rewrite latest.svg on each rebuild

The server re-parses, re-validates, re-lays-out, and re-renders on every file change; connected clients refresh automatically via Server-Sent Events. Validation errors are displayed as an overlay on top of the most recent successful render.

Init (--init)

Scaffold a new .nowline file in cwd. The positional argument is the project name, not a file path. .nowline is auto-appended.

bash
nowline --init                              # ./roadmap.nowline (default name)nowline --init my-project                   # ./my-project.nowlinenowline --init my-plan.nowline              # ./my-plan.nowline (literal)nowline --init my-project --template=teams  # use the teams template

minimal, teams, and product correspond to the files under examples/. Existing files are silently overwritten.

Exit codes

CodeMeaning
0Success
1Validation error (parse failure, invalid reference, any include error such as a missing include, a wave rule across included files)
2Usage error (missing input, bad flags, unsupported format, file not found, empty stdin, invalid --diagnostic-format, binary→TTY refusal)
3Output error (cannot write to destination)

Manual

After any package-manager install (brew install lolay/tap/nowline, npm install -g @nowline/cli, or the .deb from GitHub Releases), man nowline shows the CLI manual and man 5 nowline shows the full DSL reference. Both man pages also ship as standalone assets on every GitHub Release — see packages/cli/man/ for the mdoc sources.

Language at a glance

File structure

nowline
nowline v1                        // 1. version directive (optional, must be first)
include "shared/teams.nowline"    // 2. includesinclude "brand.nowline" config:isolate
config                            // 3. config section (optional)scale  name: weeksstyle enterprise  bg: blue  fg: navy
roadmap r "My Roadmap"            // 4. roadmap section
swimlane platform  item x "Work item" duration:1w status:done

Entities

KeywordPurpose
roadmapThe top-level roadmap declaration. At most one per file.
swimlaneA horizontal lane of work.
itemA unit of work inside a swimlane.
parallelA block whose children run concurrently.
groupA logical grouping of items, rendered together.
anchorA named date on the timeline.
milestoneA point-in-time marker that depends on work.
waveA barrier across every swimlane: no work in the next wave starts until this one ends.
footnoteA callout anchored to one or more entities.
person, teamOwnership references.
non-working, workingDays that consume no work (weekends, holidays, closures) and the exceptions that give them back. Config entries with date:, start: / end: or every:; a declaration named weekend replaces the business weekend. A dated closure with a title is labelled on the chart (Thanksgiving · 2d) and carried into the MS Project and Mermaid exports; a titled working day is labelled with the days it adds (Crunch Saturday · +1d).
style, symbol, label, size, status, scale, calendar, defaultConfig and declaration entries.

Properties

nowline
item auth "Auth refactor"  duration: 2w              // duration literal: d, w, m, q, y  status: in-progress       // builtin or custom from config  owner: sam                // id reference (person or team)  wave: build               // barrier the item belongs to (a declared wave)  after: kickoff            // dependency (single)  after: [kickoff, approvals] // dependency (list)  remaining: 30%             // percentage  labels: [security, p0]     // list of label ids  link: https://…            // URL (bare, no quotes)

Roadmap start date

A roadmap may carry an optional start:YYYY-MM-DD that anchors the timeline baseline:

nowline
roadmap platform-2026 "Platform 2026" start:2026-01-06
  • If the roadmap contains any anchor, or any milestone with a date: property, start: is required.
  • Every such date must be on or after start:.
  • A pure-relative roadmap (built from duration: and after: only) does not need start:.
  • Across includes that don't use roadmap:ignore, the parent and any included roadmap must agree on start: — both absent, or both present with the same value. Mismatches are errors, not silent overrides.

Includes

nowline
include "teams.nowline"                     // merge everything (default)include "snippet.nowline"  config:ignore    // skip child configinclude "partner.nowline"  roadmap:isolate  // render child as a separate region
  • merge — default: child content is merged; parent definitions win on collision.
  • ignore — child content of that kind is discarded.
  • isolate — child roadmap is preserved as a self-contained region (requires a roadmap in the child).

Waves never merge. Under roadmap:merge or roadmap:isolate, an included file that declares a roadmap, swimlanes, or waves must declare the same waves as its parent, in the same order with the same start floors (NL.E0202).

For the full grammar reference, see specs/dsl.md.

Examples

Progressively-richer examples are included. Every build of main renders them, and the renderer fixtures in tests/, at review.nowline.dev.

Editor support

A TextMate grammar lives at grammars/nowline.tmLanguage.json. It works in any editor that supports TextMate grammars (VS Code, Sublime Text, Zed, IntelliJ via third-party plugins, etc.). A first-class LSP server and VS Code extension are tracked in packages/lsp/ and packages/vscode-extension/.

Use as a library

@nowline/core is a pure-TypeScript parser, typed AST, and validator built on Langium. Everything the CLI does on top of parsing is itself built against this library. See packages/core/README.md for the API and a usage example.

Status

Nowline is on v0.x — published to Homebrew, npm, the VS Code Marketplace, Open VSX, and GitHub Releases. The parser, validator, layout, renderer, every export format (SVG, PNG, PDF, HTML, Markdown+Mermaid, XLSX, MS Project XML), and the verbless CLI (--dry-run, --init, --serve) are usable today. Breaking changes may land between 0.x minor versions while the embed surface and IDE expansion settle; full SemVer guarantees kick in at 1.0. The release-by-release roadmap lives in specs/milestones.md.

Contributing

Bug reports, feature requests, and pull requests are welcome. Start with CONTRIBUTING.md for setup, build/test commands, and the expected workflow. Before opening an issue, please check the templates under .github/ISSUE_TEMPLATE/. Security issues should follow SECURITY.md. All participation is governed by our CODE_OF_CONDUCT.md.

Design specs for the DSL, renderer, CLI, IDE integrations, and OSS milestones live under specs/ — start there to understand how Nowline is shaped before touching code.

License

Apache 2.0 — see LICENSE.

來源:README.md,提交 d8d931f

工具

19

validate

Validate Roadmap

Parse and validate a .nowline roadmap. Returns ok=true with optional layout insights when valid, or ok=false with structured diagnostics. Example: nowline v1 roadmap r "Title" start:2026-01-05 scale:2w swimlane eng "Engineering" item build "Build" duration:3w Source is `.nowline` DSL (not JSON/YAML); call the `reference`/`examples` tools for full syntax.

輸入參數nowpathsourcetimezone

read

Read Roadmap

Read a local .nowline file.

輸入參數path必填

create

Create Roadmap

Write a new .nowline file after validation. Overwrites if the path already exists. Example: nowline v1 roadmap r "Title" start:2026-01-05 scale:2w swimlane eng "Engineering" item build "Build" duration:3w Source is `.nowline` DSL (not JSON/YAML); call the `reference`/`examples` tools for full syntax.

輸入參數path必填source必填

update

Update Roadmap

Replace an existing .nowline file after validation. Example: nowline v1 roadmap r "Title" start:2026-01-05 scale:2w swimlane eng "Engineering" item build "Build" duration:3w Source is `.nowline` DSL (not JSON/YAML); call the `reference`/`examples` tools for full syntax.

輸入參數path必填source必填

delete

Delete Roadmap

Delete a local .nowline file.

輸入參數path必填

list

List Roadmaps

List .nowline files under a directory.

輸入參數directoryrecursive

render

Render Roadmap

Validate then render a .nowline roadmap to SVG or PNG (combined validate+render). Returns structured diagnostics on error-severity input instead of a raw kernel error. On MCP Apps hosts the in-chat preview is view-only (no download/export button); use `export` for files and the `share` tool for an openable link. Example: nowline v1 roadmap r "Title" start:2026-01-05 scale:2w swimlane eng "Engineering" item build "Build" duration:3w Source is `.nowline` DSL (not JSON/YAML); call the `reference`/`examples` tools for full syntax.

輸入參數nowpathscalethemewidthformatoutputreviewsourcepreviewtimezonenonWorking

export

Export Roadmap

Export a .nowline roadmap to any of the eight canonical formats. Byte-identical to `nowline -f <format>` for the same source and inputs. For pdf/xlsx/png: omit `delivery` and omit `output` — the server auto-saves to the configured folder and returns the path. Never use `delivery:"inline"` for binary formats on Claude Desktop (inline binary cannot be displayed). For svg/html/mermaid: the text is returned inline — present it to the user as a downloadable artifact of the matching type.

輸入參數nowpathscalethemeformat必填outputsourcedeliverymarginPtpageSizetimezonenonWorking另有 2 個

share

Share Roadmap

Generate a shareable link for a roadmap. The roadmap source is encoded into the URL fragment (client-side; no upload, no account, no network call) and opens in the free Nowline web app (free.nowline.io/open), where anyone with the link can view it and export to PDF/PNG/SVG. Prefer `render` to show a roadmap in chat — that is the default. Use `share` only when the user explicitly asks for a link to open, send, or export elsewhere.

輸入參數pathsource

convert

Convert Roadmap

Convert between .nowline source text and its JSON AST representation. `to:json` serializes a .nowline file to the JSON AST; `to:nowline` pretty-prints a JSON AST back to canonical .nowline source.

輸入參數to必填pathsource

capabilities

View Roadmap Capabilities

Return all supported themes, icons, locales, export formats, and template names in a single response.

無需輸入參數。

list-themes

List Themes

List supported color themes: light, dark, grayscale.

無需輸入參數。

list-icons

List Icons

List built-in capacity-icon names usable in the `capacity-icon:` style property.

無需輸入參數。

list-locales

List Locales

List supported BCP-47 locale tags.

無需輸入參數。

list-formats

List Export Formats

List all supported export formats (svg, png, pdf, html, mermaid, xlsx, msproj, json).

無需輸入參數。

list-templates

List Templates

List built-in template names usable with `nowline --init --template`.

無需輸入參數。

reference

View Roadmap Reference

Return the Nowline DSL reference (condensed cheatsheet or full man page). Callable alternative to the nowline://reference resource.

輸入參數format

examples

View Roadmap Examples

Return canonical .nowline example sources. Callable alternative to the nowline://examples resource.

輸入參數name

schema

View Roadmap Schema

Return the structured Nowline DSL key vocabulary (directive keys, entity types, item properties, config keywords, calendar declaration keys).

無需輸入參數。

版本歷史

6
  1. v0.12.1最新Nov 4, 2026
  2. v0.11.0Oct 26, 2026
  3. v0.10.0Oct 25, 2026
  4. v0.9.0Oct 23, 2026
  5. v0.8.6Oct 1, 2026
  6. v0.8.5Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分