{"id":50141368,"url":"https://github.com/sethbang/markee","last_synced_at":"2026-05-24T01:33:53.337Z","repository":{"id":357953403,"uuid":"1239007605","full_name":"sethbang/markee","owner":"sethbang","description":"Editor-agnostic Markdown preview for macOS. Watches your file and re-renders the moment you save — KaTeX, Mermaid, syntax highlighting.","archived":false,"fork":false,"pushed_at":"2026-05-19T14:31:26.000Z","size":2130,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-24T01:33:52.045Z","etag":null,"topics":["developer-tools","katex","macos","markdown","markdown-editor","markdown-preview","mermaid","open-source","swift","swiftui","wkwebview"],"latest_commit_sha":null,"homepage":"https://markee.sbang.dev","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sethbang.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-14T17:06:40.000Z","updated_at":"2026-05-19T14:49:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/sethbang/markee","commit_stats":null,"previous_names":["sethbang/markee"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/sethbang/markee","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sethbang%2Fmarkee","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sethbang%2Fmarkee/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sethbang%2Fmarkee/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sethbang%2Fmarkee/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sethbang","download_url":"https://codeload.github.com/sethbang/markee/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sethbang%2Fmarkee/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33418547,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"ssl_error","status_checked_at":"2026-05-23T22:14:43.778Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["developer-tools","katex","macos","markdown","markdown-editor","markdown-preview","mermaid","open-source","swift","swiftui","wkwebview"],"created_at":"2026-05-24T01:33:52.838Z","updated_at":"2026-05-24T01:33:53.331Z","avatar_url":"https://github.com/sethbang.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n\u003cdiv\u003e\n  \u003cimg src=\"Resources/AppIcon.svg\" width=\"64\" height=\"64\" alt=\"Markee app icon\"\u003e\n  \u003ch1 align=\"center\"\u003eMarkee\u003c/h1\u003e\n\u003c/div\u003e\nA native macOS Markdown preview app that watches a file on disk and re-renders\nthe moment you save. **Editor-agnostic** — keep using Vim, VS Code, Cursor,\nZed, JetBrains, Sublime, or whatever else you already love; let Markee handle\nthe preview.\n\n**Website:** [markee.sbang.dev](https://markee.sbang.dev)\n\n\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/screenshots/window-dark.png\"\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"docs/screenshots/window-light.png\"\u003e\n    \u003cimg alt=\"Markee preview window showing docs/demo.md — outline sidebar visible, KaTeX equation, syntax-highlighted Swift code, Mermaid diagram.\" src=\"docs/screenshots/window-light.png\" width=\"820\"\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n## Why Markee?\n\nMost Mac Markdown apps want to be your editor too — and that means picking\nbetween their text-editing experience and the one you've already tuned for\nyears. Markee skips the fight: it's a *preview*. You edit in the editor you\nknow, save the file, and the rendered view updates instantly. Want to jump\nback to a heading you're scrolled to? Right-click it in the outline → **Open\nin Editor**, and your editor opens at that line.\n\n## Features\n\n- Live re-render on save, with scroll position preserved.\n- Works with editors that do atomic saves (Vim, VS Code, Cursor, Zed,\n  Sublime, JetBrains, …).\n- GitHub-flavored Markdown plus footnotes, definition lists, attribute\n  lists, task lists, YAML front matter.\n- KaTeX math (inline `$…$` and display `$$…$$`).\n- Syntax highlighting via highlight.js.\n- Mermaid diagrams.\n- **Quick Look** — press Space on a `.md` file in Finder for a fully rendered\n  preview instead of raw text.\n- **Finder thumbnails \u0026 document icon** — `.md` files show a thumbnail of\n  their rendered content, and carry a branded Markee document icon.\n- **Interactive task-list checkboxes** that write back to the source file.\n- **Open in Editor at Current Heading** — ⌥⌘E or right-click an outline row\n  to jump to that heading's source line in your editor.\n- Outline sidebar with live active-heading highlight (⌘⌥\\\\ to toggle).\n- Export Standalone HTML with inlined CSS + images (⌘E).\n- ⌘F find in preview, ⌘P print or save as PDF.\n- Light + dark themes, follows `prefers-color-scheme`.\n- CLI launcher: `markee path/to/notes.md`.\n\n## Install\n\n### Recommended: prebuilt `.app`\n\nDownload `Markee.app.zip` from the latest\n[GitHub Release](https://github.com/sethbangert/markee/releases), unzip, drag\ninto `/Applications`.\n\nRelease builds are Developer ID signed and notarized, so they open normally\nwith a double-click — no Gatekeeper warning, no right-click workaround needed.\n\n### From source\n\n```sh\nmake fetch-vendor   # one-time: pinned downloads of markdown-it, KaTeX, highlight.js, Mermaid\nmake app            # builds Markee.app at the repo root\nmake run            # builds + opens\nmake install        # copies to /Applications\n```\n\nSubsequent `make app` invocations skip the vendor fetch (sentinel-based).\n\n## Use\n\nAny of these opens a file:\n\n- Drag a `.md` onto the Markee dock icon.\n- File ▸ Open… (⌘O).\n- `open Markee.app yourfile.md`.\n- After installing the CLI (File ▸ Install Command Line Tool…):\n  `markee yourfile.md`.\n\nThen edit the file in your editor. Save. The preview updates.\n\n## Keyboard shortcuts\n\n| Shortcut | Action |\n|----------|--------|\n| ⌘O | Open file |\n| ⌘W | Close window |\n| ⌘⌥\\\\ | Toggle outline sidebar |\n| ⌘E | Export Standalone HTML |\n| ⌥⌘E | Open in Editor at current heading |\n| ⌘F | Find in preview |\n| ⌘P | Print / save as PDF |\n\n## Open-in-Editor configuration\n\nMarkee auto-detects the first available editor from this list on your `PATH`\n(via your login shell, so Homebrew / fnm / asdf entries work):\n\n```\ncursor → code → zed → subl → mate → mvim → hx\n```\n\nOverride by setting a preference:\n\n```sh\ndefaults write com.markee.preview editor \"zed\"\n```\n\nFor each editor, Markee constructs the right \"jump to line\" syntax —\n`code -g path:line:col`, `zed path:line:col`, `subl path:line`,\n`mate -l line path`, `mvim +line path`, `hx path:line`. The full list of\nsupported editors is in `Sources/Markee/EditorLauncher.swift`.\n\n## Develop\n\n```sh\nmake test         # swift test + node --test (Swift + JS)\nmake test-swift   # FileWatcher, SchemeHandler, PreviewController, EditorLauncher\nmake test-js      # util.js (collectTaskLineNumbers, slugify, pickActiveHeading)\nmake clean        # nuke .build, Markee.app, and Resources/web/vendor\n```\n\n48 tests passing at HEAD (24 Swift + 24 JS).\n\n### Project layout\n\n```\nSources/Markee/        Swift app (SwiftUI DocumentGroup + WKWebView)\nResources/web/         HTML/JS/CSS shipped into the bundle\n  template.html        Loads vendor + util + app\n  app.js               Renderer glue, scroll preservation, message bridge\n  util.js              Pure helpers (importable by Node tests)\n  theme.css            Light/dark theme\n  vendor/              Fetched at build time, not committed\nResources/cli/markee   Shell launcher\nResources/AppIcon.svg  Source for the app icon\nscripts/               build-icon.sh, fetch-vendor.sh, sign-app.sh, notarize-app.sh\nTests/                 Swift + JS tests\nfixtures/sample.md     Exercises every feature\ndocs/demo.md           README hero document\n```\n\n### How it works (briefly)\n\nThe Swift side is a thin host: a `DocumentGroup`, a per-window\n`PreviewController`, a `FileWatcher` (kqueue with atomic-save reattach), and\ntwo custom URL scheme handlers — `markee-app://` for bundle assets and\n`markee-doc://` for the current document's directory (sandboxed against path\ntraversal *and* symlink escape). All Markdown rendering happens in JavaScript\ninside the WebView; Swift just streams the file's source into\n`window.markee.render({…})` after every change.\n\n## Requirements\n\n- macOS 13 (Ventura) or later.\n- Apple Silicon (untested on Intel — should work but no CI for it).\n- Swift 5.9+ (ships with Xcode 15 / the Command Line Tools).\n- Node ≥ 18 (only needed to run the JS test suite).\n\n## Status\n\nv1.0.0 — see [CHANGELOG.md](CHANGELOG.md) for the full release history.\nDeveloper ID signed and notarized.\n\n## Contributing\n\nThis is a small personal project. Issues and focused PRs are welcome; for\nanything larger than a small fix, please open an issue first so we can talk\nthrough the approach. See [CONTRIBUTING.md](CONTRIBUTING.md).\n\nFor security reports, see [SECURITY.md](SECURITY.md).\n\n## License\n\n[MIT](LICENSE). Markee bundles a handful of third-party JS/CSS libraries\nunder their own permissive licenses — see\n[THIRD-PARTY-NOTICES.md](THIRD-PARTY-NOTICES.md) for the full texts.\n\n## Credits\n\nBuilt on the shoulders of\n[markdown-it](https://github.com/markdown-it/markdown-it),\n[KaTeX](https://katex.org),\n[highlight.js](https://highlightjs.org),\nand [Mermaid](https://mermaid.js.org).\nThe macOS-app shell is plain SwiftUI + WKWebView.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsethbang%2Fmarkee","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsethbang%2Fmarkee","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsethbang%2Fmarkee/lists"}