zudo-text

検索したい単語を入力

いつでも検索バーを開ける

Overview

What is zudo-text?

zudo-text は、ドキュメントシステム(Astro Starlight、Hugo、Jekyll、素の VS Code ワークスペースなど)の流儀を尊重する、フロントマター対応の Markdown エディタです。デスクトップアプリ(Tauri v2)としてもブラウザからも動作し、AI と組み合わせて文章を書き上げる用途に特化しています。コンテンツは暗号化されたクラウドワークスペースに置かれ、デスクトップとブラウザはどちらも同じワークスペースを開きます。

スキーマやビルド・公開フローはエディタ側ではなくワークスペース側に置く、というのが zudo-text の基本姿勢です。背景にある考え方は Philosophy を参照してください。

Frontmatter Is the Contract

zudo-text は単一のドキュメントフレームワークに紐付かない設計です。

  • スキーマはワークスペースに住む — どのフロントマターフィールドが必要かを決めるのはワークスペース側(あるいはそこで使っているドキュメントフレームワーク)であって、エディタ側ではありません。

  • エディタはフロントマターを「理解する」だけ — パース・編集・補完などの編集体験は提供しますが、ビルド・レンダリング・公開には踏み込みません。

  • 同じエディタを別の用途で使い回せる — 技術ドキュメント、リサーチノート、ブログの下書き、業務メールなど、用途ごとにワークスペースとフロントマター契約だけを切り替えれば足ります。

Text Apps: Same Editor, Different Workspaces

zudo-text のもう一つの特徴は text app generator であることです。zudotext.app(ROOT app)が、同じ writing-app レンダラーを共有する複数の LEAF text app(modmsg.appprompts.appworktext.appztoffice.app など)を生成します。各 LEAF text app はそれぞれ専用のワークスペースにバインドされた、同じエディタの別インスタンスです。配色・ピン・ショートカットといった設定もフロントマタースキーマも、そのワークスペースの中にあります。

たとえば次のような使い分けが想定されます。

  • 技術ドキュメント — Astro Starlight などの流儀に沿った .mdx を編集する

  • リサーチノート — タグや日付などのフロントマターを使った個人ナレッジベース

  • ブログ下書き — Hugo / Jekyll などの静的サイトジェネレータのコンテンツディレクトリ

  • 日本語の業務コミュニケーション — 著者が日々使っている用途で、メールや Slack の下書きをアーカイブ管理する ztoffice のような text app を生成する

最後の「日本語の業務コミュニケーション」は zudo-text が生まれた背景にある具体例の一つに過ぎず、エディタ自体はそこに最適化されているわけではありません。

Key Features

  • Editor with vim mode — CodeMirror 6 editor with optional vim keybindings, markdown preview, and auto-formatting

  • Frontmatter-aware editing — Parses and edits YAML frontmatter; the schema and validation live in the workspace, not the editor

  • Inline AI@@-triggered inline commands and an AI assistant frame for longer exchanges

  • Multiple notes — Independent notes with the Note Tray toolbar, the Summarized Note List dialog, and Mod+1Mod+9 switching

  • Split frames — Split the editor into multiple frames (horizontal or vertical) for side-by-side editing, with focus navigation between frames

  • Kanban view — Render any markdown file as an interactive kanban board with drag-and-drop columns, labels, priorities, and due dates

  • Archives — Finished documents are moved into numbered Note Tray notes, browsable and searchable in-app (via Pile View)

  • Pins — Configurable content directories for quick access to reference files, plus header pins that install a whole layout in one click

  • Asset management — Drag-and-drop image import, clipboard paste, and an asset manager dialog for browsing and managing images

  • Command palette — Fuzzy-search command palette (Cmd+K) for navigation, layout, and actions

  • Keyboard shortcuts — Fully configurable shortcut bindings with chord support (e.g., Cmd+K Cmd+S)

  • Cloud-primary storage — An end-to-end encrypted workspace is the store, not a backup of local files; every device signed in sees the same content and the same settings

  • Find in page — Built-in text search across the current view

Config-Driven Architecture

zudo-text is fully config-driven. A single .zudotext.settings.json document — stored in the workspace, so it follows you to every device — controls:

  • Color scheme (two built-in schemes, Default Dark and Default Light, each fully tweakable via the ramp-based Colors tab)

  • Editor settings (font, size, vim mode, padding, typewriter scrolling)

  • Keyboard shortcuts

  • The frameset layout and the header pins that install layouts

  • Pin directories

Different configurations produce different app instances. What distinguishes one instance from another is which workspace it is bound to — recorded in ~/.config/zudotext/<appname>/config.json, the one local file involved. See App Generation for the text app generation flow and Settings & Configuration for the layering.

Tech Stack

LayerTechnology
Desktop frameworkTauri v2
BackendPure Rust (no Node.js in main process)
FrontendReact 19 + TypeScript
BuildVite
EditorCodeMirror 6
StylingTailwind CSS 4
StorageEnd-to-end encrypted cloud workspace (Cloudflare Workers + D1 + R2)
CryptoWeb Crypto API (@takazudo/cloud-crypto)

The app produces a ~5 MB binary, compared to ~260 MB with the previous Electron + Node.js stack.