Kinetic Markdown (KMD) is an experimental markup language and toolchain for animated, highly stylized text experiences. It combines Markdown-like authoring with a runtime built around parsing, layout, stage control, and GPU-rendered kinetic typography.
This repository is currently the main KMD incubation repo. It contains the Web editor, the evolving KMD core runtime, the VS Code extension, architecture notes, and product planning for future readers and community tools.
- KMD Web Editor: Vue-based editor and preview application.
- KMD Core Runtime: Parser, layout engine, effect pipeline, stage runtime, and rendering bridge.
- VS Code Extension: Language support under
extensions/vscode-kmd/. - Android Reader Integration: WebView runtime strategy and optional Android checkout coordination.
- Architecture Docs: Notes for command routing, parser flow, effect flow, and ongoing refactors.
The project is moving from an editor-only prototype toward a broader KMD language and content ecosystem. The WebView-hostable @kmd/reader-runtime-web package now exists; the current priority is stabilizing Android consumption of that artifact, keeping the package boundary clean, and reviewing Phase B language design before implementation resumes.
apps/editor/ Web editor and current KMD runtime source
apps/android-reader/ Optional local checkout of the Android app; ignored by this repo
packages/language/ Shared KMD language assets and package-level import seam
packages/reader-runtime-web/
Reader-only WebView/browser runtime bundle
extensions/vscode-kmd/ VS Code language extension
docs/planning/ Roadmaps plus package, app, and ecosystem plans
docs/knowledge/ Long-lived architecture, design, and research notes
docs/archive/ Historical discussions and obsolete drafts
dist/ Root build output generated by the editor app
scripts/ Local scripts
The current editor app still contains the shared parser/layout/effect/stage runtime under apps/editor/src/core/. packages/reader-runtime-web/ owns the reader-only entry and build artifact while it still reuses that runtime closure. A pure packages/core package remains intentionally later.
This project uses pnpm.
pnpm install
pnpm devUseful commands:
pnpm build
pnpm preview
pnpm test:parser
pnpm language:check
pnpm reader:build[align=center .glitch]
{Hello} {World} @ .ease(1s).goto(globalmark_up) f.red.wait(1s).shake f.blue.wave
{...}defines a token or grouped text segment.@separates text from commands.f.effectapplies an effect to a token..effectapplies a paragraph/global effect.[...]defines block options, global effects, and startup instructions.
Start with docs/README.md.
Important docs:
- Command Routing
- Effect Pipeline
- Parser Pipeline
- Implementation Roadmap
- Reader Runtime Web Extraction Record
- Repository Strategy
KMD is under active exploration. APIs, syntax details, and runtime internals may change quickly. The current runtime package boundary is @kmd/reader-runtime-web; Phase B language changes remain gated by language design review and integration stability.
KMD code is licensed under the Apache License 2.0. See LICENSE.
Bundled fonts and other third-party assets remain under their own licenses. See THIRD_PARTY_NOTICES.md.