Skip to content

avanrossum/sidemark

Repository files navigation

SideMark

A markdown editor for macOS built for working alongside AI.

Most markdown editors assume one author. SideMark assumes two. When Claude Code, Cursor, Windsurf, or any AI agent edits your files while you're working in them, SideMark handles the merge automatically. Non-overlapping changes merge silently. Conflicting changes show an interactive per-hunk diff. No lost work, no broken flow.

Free and open source. No account, no subscription, no telemetry.

Download License Website

Product Page · Blog Post

Download

Grab the latest .dmg from GitHub Releases. Open it, drag to Applications, done.

Signed and notarized with Apple — no Gatekeeper warnings. macOS 12+ required. Apple Silicon supported.

Screenshots

Three-pane layout
File browser, editor with git gutter markers, and live preview

Three-pane layout with git gutter
Three-way merge + toast
External changes merged automatically with notification

Merge toast notification
Interactive diff view
Per-hunk accept/reject when both authors edit the same lines

Interactive diff merge
Focus mode
Distraction-free fullscreen editing with centered content

Focus mode
Settings
Theme, accent color, fonts, font size, auto-save, line numbers

Settings panel
File deletion detection
Prompt to close or re-save when a file is deleted from disk

File deleted dialog

Built for AI-Assisted Development

Most markdown editors assume a single author. SideMark assumes two.

If you work with AI coding tools — Claude Code, Copilot, Cursor, or anything that writes to files on your behalf — these features exist because of that workflow:

Three-way merge. When you're editing a file and an external tool writes to it at the same time, the editor compares both sets of changes against the last known version. If you edited different parts of the file, both changes merge automatically — no dialog, no interruption. If you collide on the same lines, an interactive diff view lets you accept or reject each change individually, hunk by hunk.

Change notifications. When an external merge succeeds silently, a toast notification tells you what happened — so you always know when your file was touched by something outside the editor.

Git gutter markers. Green, blue, and red indicators in the editor gutter show added, modified, and deleted lines compared to the last git commit. After an external tool edits your file, you see exactly which lines changed at a glance.

Copy with context. One-click copy of file contents with the file path and line numbers prepended — designed for pasting into AI chat windows. Select text and hit ⌘⌥C to get // /path/to/file.md:L14-L27 followed by your selection. No selection copies the full file with path. Also available via right-click context menu, toolbar button, and Edit menu.

Auto-save. Keep your files continuously saved so external tools always read your latest version. Configurable delay (1-10 seconds), toggle on/off in Settings.

Deep linking. sidemark:// URL protocol lets AI agents and scripts open files directly in SideMark. Run open sidemark:///path/to/file.md from a terminal, or have your AI output clickable links. Directories open in the file browser.

Open from Path (⌘⇧P). Paste any file path — absolute, relative, or with ~ — to open it instantly. No file dialog, no navigation. Built for grabbing paths from terminal output and AI conversations.

File deletion detection. If an external tool deletes a file you have open, you're prompted to close the tab or re-save the file to disk.

Features

Editor CodeMirror 6 with markdown syntax highlighting, formatting toolbar with smart toggle detection, heading cycling, multi-line list handling, and full keyboard shortcuts (⌘B, ⌘I, ⌘K, etc.). Search and replace with case sensitivity and match navigation. Per-tab undo history. Git gutter markers for change tracking. Text Transforms (Edit menu) for Unicode italic, bold, small caps, and more — useful for LinkedIn and other platforms that don't support markdown.
Live Preview GitHub Flavored Markdown in real time. Bidirectional scroll sync. Local and remote images inline. Task list checkboxes. Clickable links — .md files open in a new tab, external links open in your browser.
Focus Mode Distraction-free fullscreen editing. Just the toolbar and editor, centered at a comfortable column width. Auto-saves in the background. ESC or ⌘W to return. Via right-click tab menu or ⌘⇧F.
Open from Path ⌘⇧P to open any file or folder by pasting its path. Supports ~, relative paths, and auto-detects files vs directories.
Deep Linking sidemark:///path/to/file.md — open files from terminal, scripts, or AI agent output via the sidemark:// URL protocol.
File Browser Expandable directory tree with auto-refresh. Context menu: new file, new folder, rename, delete (trash), show in Finder, copy path, favorites, find in folder.
Favorites Pin files and folders for quick access. Drag-and-drop reordering. Stale path detection for unmounted drives.
Tabs Dirty indicators, per-tab scroll/cursor restore, context menu (show in Finder, copy path, close, close others, close to right, focus mode). Auto-scrolls to keep active tab visible.
Auto-Save Optional, with configurable delay (1-10s). Toggle in Settings. Keeps files synced for external tool collaboration.
Export File > Export As > PDF or HTML. Clean light-theme styling with inline CSS, no dependencies.
Session Restore Tabs, active tab, folder, and window bounds persist across restarts. Multi-window support (⌘⇧N). Flush-on-quit ensures no session loss during updates.
Customization Dark, light, or system themes. 7 accent colors. Editor font (SF Mono, Menlo, Monaco, Courier New, Andale Mono), preview font (Helvetica Neue, Georgia, Palatino, Avenir Next, Charter), font size, line numbers, resizable panes.
File Associations Registers for .md, .markdown, .mdown, .mkd, .mkdn, .mdwn, .mdx, .txt. Shows in Finder's "Open With".
Auto-Updates Checks every 4 hours. Background download. One-click "Restart & Install" with release notes.

Power User Features

These are already built and shipping — the details that turn "clever idea" into "this person thought through every edge case":

Save Mine as New File. During merge conflicts, you can fork your version to a new file while accepting the AI's changes in the original. A power-user escape hatch for the worst case.

Smart hunk grouping. When the AI changes a heading and its body text, the diff resolver groups them into one logical decision instead of making you accept/reject each line individually.

Copy full file with path (⌘⌥C). With a selection, copies your text prefixed with file path and line numbers. With no selection, copies the entire file with the path header — the "paste this whole file into Claude" shortcut.

Configurable auto-save delay. Not just on/off — a knob from 1 to 10 seconds. 1-second save means the AI always reads your latest. 10-second save gives you a buffer to change your mind.

Multi-window with independent sessions. Each window remembers its own open files, tabs, and state. Open one window for docs and another for code notes.

Find in Folder (⌘⇧G). Project-wide search with case sensitivity. Results grouped by file with context lines.

Deep linking (sidemark://). Register the sidemark:// URL scheme so external tools can open files directly. open sidemark:///path/to/file.md from any terminal. AI agents can output these as clickable links.

What It Doesn't Do

No cloud sync. No real-time collaboration. No plugin system. No Vim mode. No WYSIWYG. No proprietary format. No account creation. No subscription. No telemetry.

Your files are plain markdown on disk. Open them with anything, anywhere, forever.

Security

This app underwent an adversarial security review with comprehensive hardening:

  • XSS prevention — DOMPurify sanitizes all markdown before rendering in the preview pane
  • Sandbox enabled — Chromium sandbox and context isolation enforced on all windows
  • Filesystem access control — Path validation limits access to home directory and /Volumes; sensitive directories (.ssh, .gnupg, .aws) blocked
  • Path traversal protectionlocal-resource:// protocol restricted to image file extensions
  • URL scheme allowlistingshell.openExternal limited to https://, http://, mailto:
  • Content Security Policy — Tightened CSP on settings and update dialogs
  • No network calls — except auto-update checks to GitHub Releases

Getting Started

From release

Download the .dmg from Releases, open it, drag to Applications.

From source

cd simple_markdown_editor
npm install
npm run dev
Command Description
npm run dev Development mode with hot reload
npm run build Production build
npm run release Signed build + GitHub release

Release builds require Apple Developer ID credentials (APPLE_ID, APPLE_APP_SPECIFIC_PASSWORD, APPLE_TEAM_ID) for code signing and notarization.

Tech Stack

Layer Technology
Framework Electron 33
UI React 18
Editor CodeMirror 6
Markdown marked (GitHub Flavored Markdown)
Build Vite 6 + electron-builder
Security DOMPurify, sandbox, CSP
File Watching chokidar
Diffing diff (three-way merge, git gutter)
Updates electron-updater (GitHub Releases)
Language JavaScript (TypeScript migration planned)

Repository Structure

The application source lives in simple_markdown_editor/. The outer repository holds project-level files (README, license, changelog, roadmap).

.
├── README.md
├── LICENSE
├── CHANGELOG.md
├── ROADMAP.md
├── Architecture.md
└── simple_markdown_editor/
    ├── package.json
    ├── vite.config.js
    ├── electron-builder.config.js
    ├── build/              # App icon and entitlements
    ├── scripts/            # Icon generation and release scripts
    └── src/
        ├── main/           # Electron main process (window lifecycle, IPC, file I/O)
        ├── renderer/       # React UI (editor, preview, file browser, tabs, toolbar)
        ├── settings/       # Settings overlay
        └── update-dialog/  # Auto-update UI

Contributing

SideMark is free and open source under the MIT license. Contributions are welcome — open an issue first if you're planning something big.

License

MIT — made by MipYip

About

A markdown editor for macOS built for working alongside AI. Three-way merge, per-hunk diff, git gutter, auto-save. Free and open source.

Topics

Resources

License

Stars

Watchers

Forks

Packages