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 分