Nativní markdown editor pro macOS.
Vlevo zdroj se zvýrazněnou syntaxí, vpravo živý HTML náhled. Obyčejné soubory .md, žádná databáze, žádný účet.
Stáhnout DMG · Web projektu · Změny
- Proč Hashline
- Stažení a instalace
- Funkce
- Technologie
- Výkon
- Sestavení ze zdrojů
- Struktura repozitáře
- Licence
- Píše se, nic se nenastavuje. Otevře se okamžitě, ukáže text a pak nepřekáží.
- Soubor je pravda. Pracuje s obyčejnými
.mdna disku. Žádný vlastní formát ani databáze. - Nativní. Swift, AppKit a TextKit 2, žádný Electron. Světlý i tmavý režim, zkratky, Undo, Služby, Quick Look.
- Rychlý. Psaní pod 10 ms i v 1MB dokumentu, otevření 1MB souboru zhruba za 0,2 s. Měří se, neodhaduje.
- Bezpečný a soukromý. Sandbox, náhled bez JavaScriptu stránky, sanitizace HTML, žádná telemetrie. Asistent AI je jen volitelný a bez vašeho klíče nic neposílá.
Požadavky: macOS 14 Sonoma nebo novější, Mac s Apple Silicon.
Hashline je podepsaný jen ad-hoc (bez placeného účtu Apple Developer), takže macOS stažený soubor napoprvé zablokuje s hláškou, že ho nelze ověřit. Nejrychlejší je jeden příkaz v Terminálu, nebo povolení v Nastavení systému.
Rychle přes Terminál (doporučeno):
-
Stáhněte
Hashline.dmg. -
Odstraňte příznak „staženo z internetu“:
xattr -d com.apple.quarantine ~/Downloads/Hashline.dmg -
Otevřete DMG a přetáhněte Hashline do složky Aplikace. Spustí se bez dalších dotazů.
Bez Terminálu, přes Nastavení systému:
- Dvakrát klikněte na
Hashline.dmg. V hlášce, že soubor nelze ověřit, klikněte na Hotovo (ne na „Přesunout do koše“). - Otevřete Nastavení systému ▸ Soukromí a zabezpečení, sjeďte dolů do části Zabezpečení a u hlášky o
Hashline.dmgklikněte na Přesto otevřít. Potvrďte heslem nebo Touch ID. Tlačítko se ukazuje zhruba hodinu po pokusu o otevření. - Otevřete DMG znovu, v dialogu klikněte na Otevřít a přetáhněte Hashline do složky Aplikace.
- Při prvním spuštění Hashline zopakujte kroky 1–2 pro aplikaci (Přesto otevřít u „Hashline“). Pak se spouští normálně.
Když už aplikaci máte v Aplikacích a macOS ji blokuje, pomůže i xattr -dr com.apple.quarantine /Applications/Hashline.app.
Aktualizace: při druhém spuštění se Hashline zeptá, jestli má jednou týdně hledat nové verze (Sparkle). Aktualizace jsou podepsané klíčem EdDSA, takže se nainstaluje jen verze z tohoto projektu, a další povolení v Nastavení systému už nevyžadují. Ručně: Hashline ▸ Vyhledat aktualizace…
| ✍️ Editor | TextKit 2, zvýraznění Markdownu i bloků kódu (36 nejběžnějších jazyků), formátovací lišta, chytré seznamy, úprava tabulek tabulátorem |
| 👁️ Náhled | GFM tabulky, úkoly, poznámky pod čarou, [toc], emoji, matematika (KaTeX), diagramy (Mermaid), lokální i vzdálené obrázky, synchronní scrollování |
| 🗂️ Knihovna | Libovolný počet složek dokumentů s podsložkami (správa v Nastavení ▸ Knihovna, vytváření i přesun do koše), strom složek, osnova, hledání v knihovně ⇧⌘F, rychlé otevření ⌘P, najít a nahradit s regexem, přesun do koše (pravé tlačítko nebo ⌘⌫) |
| 🎨 Vzhled | Přepínač ☀︎ / ☾ v liště, témata theme.json + theme.css (Paper, Tomorrow Night, Solarized), písmo, výška řádku, šířka textu |
| 📖 Čtení | Tlačítko s knížkou v liště (⌘/): jen vykreslený dokument jako čitelná stránka, bez zdrojového kódu |
| 🧘 Režimy | Soustředění F8, psací stroj F9, stavový řádek se slovy, znaky a dobou čtení |
| 📤 Export | Markdown (kopie kamkoli), HTML, PDF se záložkami, PNG, přes Pandoc DOCX, ODT, RTF, ePub, LaTeX, MediaWiki, RST, import přes Pandoc |
| 🍎 macOS | Quick Look pro .md ve Finderu, Služby („Nový dokument Hashline s výběrem“), Sdílení, čeština a angličtina, přístupnost |
| 🤖 Asistent AI | Volitelný, ve výchozím stavu vypnutý (Nastavení ▸ Obecné ▸ Pokročilé). Chat u každého dokumentu s Claude, OpenAI nebo DeepSeek na vlastní klíč API (uložený jen v Klíčence), nebo s lokálním modelem v Ollamě či LM Studiu, kdy text neopustí Mac. Na požádání rovnou upravuje text, každý pokyn jde vrátit jedním ⌘Z, volitelná rešerše na webu se zdroji. Vidí jen svůj dokument. |
| 🔒 Bezpečnost | App Sandbox, CSP, allow-list sanitizace HTML, test proti 77 XSS vektorům, ochrana proti nepřátelským dokumentům |
Knihovna ukazuje dokumenty z libovolného počtu složek: poznámky na iCloud Drive, projekty na Synology, blog v Dokumentech. Každá složka je v knihovně nahoře pod svým jménem a pod ní její podsložky a soubory. Složky se přidávají a odebírají v Nastavení ▸ Knihovna, kam vede i tlačítko Složky ve spodní liště knihovny. Odebrání složky z knihovny nic nemaže z disku.
![]() |
![]() |
| Nastavení ▸ Knihovna, světlý režim | Nastavení ▸ Knihovna, tmavý režim |
Přepínač ☀︎ / ☾ v liště nebo podle systému. Editor i náhled mají vlastní téma pro každý režim.
![]() |
![]() |
| Světlý režim | Tmavý režim |
| Oblast | Použito |
|---|---|
| Jazyk a UI | Swift 6 (strict concurrency), SwiftUI pro okna a nastavení, AppKit (NSTextView, NSToolbar) |
| Editor | TextKit 2, inkrementální parsování po blocích, stylování jen viditelné oblasti |
| Markdown | swift-markdown (cmark-gfm): CommonMark + GitHub Flavored Markdown |
| Náhled | WebKit (WKWebView) bez JavaScriptu stránky, DOM se mění po blocích z izolovaného světa skriptů |
| Zvýraznění kódu | highlight.js v JavaScriptCore mimo hlavní vlákno |
| Matematika a diagramy | KaTeX (JavaScriptCore), Mermaid |
| Export | WebKit tisk a PDFKit (záložky), volitelně Pandoc |
| Aktualizace | Sparkle 2 s podpisem EdDSA |
| Build a kvalita | XcodeGen, Swift Testing, XCUITest, SwiftLint, os_signpost + Instruments |
Kód: ~11 900 řádků Swiftu v aplikaci a jádru (HashlineCore, testovatelné bez UI), ~2 500 řádků testů.
| Metrika | Rozpočet | Naměřeno (M4) |
|---|---|---|
| Latence psaní v 1MB dokumentu | < 16 ms | p50 ~6 ms, p95 ~7 ms |
| Otevření 1MB souboru | < 200 ms | 187–202 ms |
| Přepnutí režimu nebo tématu (1 MB) | < 50 ms | 2–40 ms (první přepnutí tématu až 70 ms) |
| Velikost aplikace | < 15 MB | 14 MB |
Měří se přes os_signpost v Instruments a skriptem scripts/bench-typing.sh.
Vyžaduje Xcode 16+ a XcodeGen.
brew install xcodegen swiftlint
git clone https://github.com/Hessevalentino/hashline.git
cd hashline
xcodegen generate
open Hashline.xcodeprojTesty a měření z příkazové řádky:
swift test --scratch-path ~/Library/Caches/Hashline-spm # jádro (parser, renderer, export, bezpečnost)
scripts/verify-security.sh # XSS v prohlížeči, nepřátelské dokumenty
scripts/bench-typing.sh 3 # latence psaníSources/HashlineCore/ jádro bez AppKitu: kódování souborů, parser, renderer, export, knihovna
Sources/Hashline/ aplikace (SwiftUI a AppKit): editor, náhled, knihovna, nastavení, asistent
Sources/HashlineQuickLook/ rozšíření Quick Look pro .md ve Finderu
Tests/ Swift Testing (jádro) a XCUITest (kritické toky)
Fixtures/ testovací korpus: kódování, konce řádků, XSS, nepřátelské dokumenty
Support/ Info.plist a entitlements
scripts/ vydání, lokalizace, měření a ověřovací skripty
project.yml XcodeGen (Hashline.xcodeproj se generuje, není v gitu)
appcast.xml kanál aktualizací Sparkle
Vydání nové verze: scripts/release.sh.
Hashline je open source pod licencí MIT. Převzaté části (MacDown, highlight.js, KaTeX, Mermaid, gemoji, Sparkle, swift-markdown, cmark-gfm) mají vlastní licence, viz Sources/Hashline/Resources/Licenses.


