WYSIWYM Editing

Trellis uses a What-You-See-Is-What-You-Mean approach. You write markdown with inline formatting rendered live, while the underlying structure stays clean and predictable.

  • Inline bold, italic, code, and link formatting with keyboard shortcuts
  • Block-level rendering for headings, lists, and code blocks
  • Full undo/redo with inverse command tracking
  • Character-based offset system for precise editing
  • Style spans that auto-adjust as you type

Cross-Platform

A single Rust codebase powers Trellis on every platform. The Lattice architecture separates document logic from rendering, making true cross-platform editing possible.

  • macOS desktop app with native menu bar and .app bundle
  • Windows desktop with NSIS installer
  • Linux build-from-source support
  • Web PWA with offline support and service worker
  • Android and iOS through Makepad mobile targets

Offline-First Architecture

Trellis works without a server. Your documents live on your device, and the web version uses modern browser APIs to keep everything local and fast.

  • IndexedDB storage for web-based documents
  • Service worker for full offline capability
  • File System Access API for direct file editing
  • No account or sign-in required
  • Zero data sent to any server

Multi-Document Workspace

Organize your writing with projects, folders, and drag-and-drop. Trellis treats your workspace as a first-class concept, not an afterthought.

  • Nested folder hierarchy with drag-and-drop reordering
  • Directory-native persistence with .trellis.json manifest
  • Sidebar navigation with collapsible folders
  • Autosave with project-level configuration
  • Multi-document editing within a single project

Modular Architecture

The Lattice framework behind Trellis is a strict three-layer architecture. Each layer can be used independently, so you can build your own editor on top.

  • lattice-core: headless document model, commands, undo/redo
  • lattice-layout: viewport virtualization, glyph metrics, hit-testing
  • lattice-shell: platform event normalization, render bridge
  • One-way dependency direction for clean separation
  • Feature flags for optional capabilities like cosmic-text shaping