zudo-text

検索したい単語を入力

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

Quick Start

Prerequisites

  • Rust toolchain — Install via rustup

  • Node.js — v20 or later

  • pnpm — Package manager (npm install -g pnpm)

  • macOS — The app currently targets macOS only

Setup

Clone the repository and install dependencies:

git clone <repo-url>
cd zudo-text
pnpm install

Development

Start the Tauri dev server with hot-reload:

pnpm tauri:dev

This runs both the Rust backend and the Vite dev server. The app window opens automatically. Frontend changes hot-reload instantly; Rust changes trigger a recompile.

First Launch

The app has no local workspace directory. On first launch it runs onboarding: sign in, then create an encrypted cloud workspace or connect one your account already owns. Everything the app manages lives in that workspace:

  • inbox/ — Active notes (auto-managed)

  • archives/ — Archived messages, stored as numbered N.md notes

  • pins/ — Pinned content directories

  • .zudotext.settings.json — App configuration, synced across your devices

The binding that records which workspace this instance opens is the only local file: ~/.config/zudotext/<appname>/config.json. See Cloud-first onboarding for the flow, and Settings & Configuration for the layering.

For frontend-only work you can skip the workspace entirely — pnpm dev:mock runs the renderer against an in-memory backend with no Rust build and no sign-in.

App Layout

The main window is a frameset: a tree of splittable frames, each hosting one view.

+-------------------+-------------------+
|                   |                   |
|    Editor         |    Preview        |
|    (markdown)     |    (rendered)     |
|                   |                   |
+-------------------+-------------------+
          Toolbar (top)
  • Frames — Split horizontally or vertically; each frame hosts an editor, preview, note tray, board, AI assistant, or one of the other frame components

  • Toolbar — Header pins on the left (Inbox and Archives by default), layout controls and settings on the right

Layouts are not hardcoded: a header pin carries a whole frameset template and installs it in one click, and the live layout is saved in your synced settings. See Header pins and Frame/Frameset/Pin Architecture.

Other Commands

# Build production .app bundle
pnpm tauri:build

# Run linting and formatting
pnpm check

# Start Storybook for UI component development
pnpm storybook

# Start documentation site dev server
pnpm start