How binaryoutlook/binary-markdown works
Binary Markdown is a visual Markdown editor for VS Code, with an Electron runtime also present in the tree. The main workflow is opening a Markdown document, editing it in the rendered webview (with source mode available), syncing changes through the host, and saving; users can also request local-format exports. The README documents broad editing, layout, outline, and export capabilities, but the sampled source excerpts show only parts of their wiring. The graph includes documented feature areas while limiting arrows to supported host, message, and export relationships.
Main entry points: editorProvider.ts Editor provider · controller.ts Export controller · main.ts Electron main · editor.js Editor webview
Components 24
Editor hosts
- VS Code
- Extension entry
src/extension.ts - Editor provider
src/editorProvider.ts - Electron main
electron/src/main.ts - File manager
electron/src/file-manager.ts
Editing experience
- Editor webview
src/webview/editor.js - Webview assembly
src/webviewContent.ts - Editor interface
src/shared/editor-body-html.js - Table controls
src/webview/table-toolbar.js
Shared document features
- Layout and settings
src/shared/editor-layout.js - Outline state
src/shared/outline-state-store.js - Document structure
src/shared/document-aux.js - Image and links
src/link-opener.ts - Settings provider
src/shared/settings-provider.ts
Export
- Export interface
src/webview/export-ui.js - Export controller
src/export/controller.ts - HTML preparation
src/export/html.ts - PDF conversion
src/export/pdf.ts - Pandoc conversion
src/export/pandoc.ts - Tool discovery
src/export/tools.ts - Artifact output
src/export/output.ts
Other components
- Markdown author
- Local Markdown file
- Local conversion tools
Connections 28
- Markdown author → VS Code: opens document
- VS Code → Extension entry: activates
- Extension entry → Editor provider: registers editor
- Editor provider → Webview assembly: builds webview
- Webview assembly → Editor interface: assembles interface
- Markdown author → Editor webview: edits Markdown
- Editor webview → Editor provider: sends edits
- Editor provider → Local Markdown file: saves document
- Local Markdown file → Editor provider: loads document
- Editor webview → Table controls: uses controls
- Editor provider → Outline state: stores outline state
- Editor provider → Document structure: refreshes structure
- Editor provider → Image and links: opens local links
- Editor provider → Settings provider: reads settings
- Editor provider → Export interface: hosts export UI
- Export interface → Export controller: requests export
- Export controller → Document structure: checks fresh TOC
- Export controller → Tool discovery: discovers tools
- Export controller → HTML preparation: prepares HTML
- Export controller → PDF conversion: converts PDF
- Export controller → Pandoc conversion: converts formats
- HTML preparation → Local conversion tools: uses browser
- PDF conversion → Local conversion tools: uses browser
- Pandoc conversion → Local conversion tools: invokes Pandoc
- Export controller → Artifact output: writes artifact
- Markdown author → Electron main: opens desktop app
- Electron main → File manager: manages documents
- Electron main → Settings provider: loads shared settings