How xiaochong/markbun works
MarkBun is a cross-platform desktop Markdown editor. The main workflow is a writer opening or creating a document, editing it in WYSIWYG or source mode, and saving it through the desktop bridge; workspace browsing, navigation, export, recovery, and AI assistance support that workflow. The graph reflects documented capabilities and sampled call sites. Backend service wiring beyond the excerpts is represented only where README capabilities or source evidence supports it.
Main entry points: App.tsx Workspace app · electrobun.ts Desktop bridge · index.ts Desktop RPC · useCrepeEditor.ts WYSIWYG editor
Components 31
Writing workspace
- Workspace app
src/mainview/App.tsx - WYSIWYG editor
src/mainview/components/editor/hooks/useCrepeEditor.ts - Source editor
src/mainview/components/editor/SourceEditor.tsx - Find and replace
src/mainview/components/search-bar/useSearch.ts - Outline navigation
src/mainview/hooks/useOutline.ts - File explorer
src/mainview/hooks/useFileExplorer.ts - Quick Open
src/mainview/hooks/useQuickOpen.ts - File dialogs
src/mainview/components/file-dialog/useFileDialog.ts - Image handling
src/mainview/lib/image/index.ts - Document export
src/mainview/hooks/useExport.ts - Settings UI
src/mainview/components/settings/SettingsDialog.tsx - Workspace chrome
src/mainview/components/layout/index.ts - Mermaid diagrams
src/mainview/components/mermaid-viewer/MermaidDiagramViewer.tsx - Localization
src/mainview/i18n/index.ts
Desktop services
- Desktop bridge
src/mainview/lib/electrobun.ts - Desktop RPC
src/bun/index.ts - File operations
src/bun/ipc/files.ts - Folder operations
src/bun/ipc/folders.ts - Recovery and history
src/bun/services/backup.ts - Settings service
src/bun/services/settings.ts - Session state
src/bun/services/sessionState.ts
AI assistance
- AI chat UI
src/mainview/hooks/useAIChat.ts - Document AI tools
src/mainview/lib/ai-tools.ts - AI streaming
src/bun/services/ai-stream.ts - Provider keys
src/bun/services/ai-keys.ts
Shared commands
- Command handlers
src/mainview/lib/commandHandlers.ts - Command registry
src/shared/commandRegistry.ts - Command dispatcher
src/shared/commandDispatch.ts
Other components
- Writer
- AI providers
- Local filesystem
Connections 36
- Writer → Workspace app: uses
- Workspace app → WYSIWYG editor: loads document
- Workspace app → Source editor: loads document
- Workspace app → Desktop bridge: requests file actions
- Workspace app → Image handling: processes images
- Workspace app → Outline navigation: updates headings
- Workspace app → File explorer: manages workspace
- Workspace app → Find and replace: provides search
- Workspace app → Document export: exports document
- Workspace app → AI chat UI: shows assistant
- Workspace app → Workspace chrome: renders workspace
- File dialogs → Desktop bridge: requests paths
- File explorer → Desktop bridge: requests folders
- Quick Open → Desktop bridge: searches files
- Find and replace → WYSIWYG editor: dispatches search
- WYSIWYG editor → Mermaid diagrams: renders diagrams
- Settings UI → Desktop bridge: loads settings
- Desktop bridge → Desktop RPC: invokes RPC
- Desktop RPC → File operations: dispatches file calls
- Desktop RPC → Folder operations: dispatches folder calls
- Desktop RPC → Recovery and history: backs up saves
- Desktop RPC → Settings service: loads settings
- Desktop RPC → Session state: persists session
- File operations → Local filesystem: reads and writes
- Folder operations → Local filesystem: lists and changes
- Recovery and history → Local filesystem: stores recovery
- AI chat UI → Desktop bridge: sends prompts
- AI chat UI → Document AI tools: invokes document tools
- Desktop bridge → AI streaming: starts AI chat
- AI streaming → Provider keys: loads credentials
- AI streaming → AI providers: requests completions
- Command handlers → Command dispatcher: registers handlers
- Command dispatcher → Command registry: uses command definitions
- Command handlers → WYSIWYG editor: dispatches formatting
- Writer → Settings UI: configures editor
- Workspace app → Localization: initializes language