SCRIBE - WYSIWYG Markdown EditorWrite what you see. Commit what you mean. SCRIBE stands for Synchronized Content Rendering & Interactive Block Editing. It brings visual Markdown editing, native source views, code copying, and HTML/PDF export into one VS Code extension. Editor viewsCaptured from WYSIWYG view
Source view
Split view
Read-only preview
Development statusSCRIBE is an early release. TypeScript checking and all 29 core/regression tests pass. Use the committed Browser editing, native VS Code integration, PDF output, and cross-platform/Remote smoke tests remain release gates. The automated browser/native tests are blocked in the implementation environment by local-server and Electron restrictions. First-use fixes have regression coverage, including heading preservation, code-block exits, source formatting, HTML progress completion, and isolated PDF callback execution. Packaging alone does not validate complete editor behavior or PDF output. Open a documentRun SCRIBE: Open in SCRIBE, or choose Reopen Editor With → SCRIBE on a Use Source view, WYSIWYG view, Split view, or Read-only preview in the toolbar. All four stay inside the same SCRIBE tab. Split displays editable Markdown beside the visual editor, with synchronized selection and scrolling. Both editing panes share the same file, save state, undo history, and toolbar. Formatting actions apply to the focused pane: Markdown syntax in Source, rich formatting in WYSIWYG. Read-only preview shows the rendered document without typing or source-edit controls, similar to a repository Markdown page. Formatting buttons, editing menus, Normalize, and SCRIBE undo/redo are disabled. All view-switch buttons stay active, along with rendering-profile selection, code copying, and HTML/PDF export. Pending edits reach the document before entering preview; switching views does not discard them. Table of contents lists headings on the left and jumps to them in every view. It opens automatically when the editor is at least 1,100 pixels wide and hides on narrower editors. Use the toolbar toggle to override this; your choice persists for that editor across view changes and reloads. The list updates as you edit and ignores headings inside code blocks. The status bar shows Unsaved changes until the VS Code document is saved, then Saved. Use Ctrl/Cmd+S to save. Write visually, or type MarkdownThe compact toolbar shares a row with the SCRIBE branding when there is room and wraps underneath in narrower windows. Its icons have tooltips and accessible labels. Use its heading menu, formatting buttons, and Table actions menu to insert tables or add/remove rows and columns. Controls follow the VS Code light, dark, and high-contrast themes. Source and Split views highlight Markdown syntax as you type. The source remains plain editable Markdown, with colors following the editor theme. With Auto Markdown: On:
Turn Auto Markdown: Off in the toolbar to type Markdown characters literally. This disables automatic space, delimiter, and Enter conversions. Existing formatting and explicit toolbar actions still work; Enter continues existing lists normally. The toggle never rewrites the document. It persists through Use Ctrl/Cmd+Z for undo, Ctrl/Cmd+Shift+Z or Ctrl/Cmd+Y for redo. Conversion, normalization, and source edits participate in VS Code's document history.
In a visual code block, Ctrl/Cmd+Enter moves to a paragraph after it. Down Arrow at the end also exits to an available blank paragraph. You can click the line below the block or use its Continue after code block button. Regular Enter keeps writing code. In Source, Tab/Shift+Tab indent/outdent, and Escape focuses the toolbar. Keep meaningful Git diffsOpening a file does not rewrite it. Visual edits retain the exact source of semantically unchanged blocks, including their original markers and intervening whitespace. Only changed regions are serialized. Source line endings are retained. Normalize explicitly formats the whole document with ATX headings, dash bullets, fenced code, consistent spacing, and no prose wrapping. It is one undoable document edit. Front matter and raw HTML are preserved. Front matter, reference definitions, comments, HTML, alerts, footnotes, and math retain their source. Specialized content exposes Edit source or Edit, with Apply and Cancel. Ctrl/Cmd+Enter applies a block source edit; Escape cancels. HTML-containing blocks use this source-backed view to preserve their complete markup. If source changes race pending visual edits, SCRIBE refreshes to the current source and preserves the pending visual content in an untitled Markdown document for recovery. Rendering supportSelect GitHub or GitLab in the toolbar. Both profiles follow the VS Code theme in the editor; exports use a light document theme. These are local rendering profiles, not pixel-exact replicas of either website.
Repository lookups, account authentication, issue/merge-request resolution, remote includes, GitLab-only services such as Kroki, and complete platform parity are outside this release. Copy codeEvery code block has Copy Code and Copy Markdown buttons. Copy Code copies the displayed code exactly, without fences. Copy Markdown includes language and safe enclosing fences. Right-click a code block for the same copy actions. Copying uses VS Code's clipboard API. ExportUse HTML or PDF, or the corresponding command. Exports include current unsaved document content and use the selected rendering profile.
PDF export blocks document network requests. Remote images and missing/unsupported local images produce explicit export warnings. Images must be in the document's workspace, or its folder for standalone files. Symlinked assets and local images over 32 MB are rejected. Relative paths are resolved against the Markdown file, including in Remote workspaces. Supported image formats: PNG, JPEG, GIF, WebP, SVG, and AVIF. Print styles wrap long code, repeat table headings, and reduce awkward page breaks. PDF export requires a platform supported by Chrome for Testing and its system libraries; Linux ARM and minimal Linux installations may require a different environment. SCRIBE reports renderer errors without modifying the source. Cancelling stops the export immediately. If the first-use renderer download is already running, it may finish in the background and remain cached; no export file is written after cancellation. Settings and commands
Commands: Open in SCRIBE, Toggle Source, Split Editor, Toggle Auto Markdown, Normalize Document, Export HTML, and Export PDF, all prefixed with SCRIBE:. Build and testUse Node.js 22 and npm:
Build before pressing F5 to open the Run SCRIBE extension host. Try the sample document. The package command generates a Run The browser suite exercises the actual editor bundle against a simulated VS Code message host. The separate extension-host suite checks real VS Code editor registration, shared source, normalization, undo/revert, and settings. Linux CI runs extension-host tests under Xvfb. Manual Windows/macOS/Linux and Remote smoke tests remain a release gate. The Marketplace publisher is Publish a releasePublishing uses Marketplace Trusted Publishing through GitHub Actions OIDC. No publishing token or repository secret is needed. One-time setup:
For each release, update the version in The publishing workflow runs the complete CI suite and publishes the exact VSIX produced by those checks. It uses Commit dependency updates together with |




