Skip to content
HessevalentinoPublic

About

Nativní markdown editor pro macOS: zdroj se zvýrazněnou syntaxí a živý HTML náhled.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Repository files navigation

Ikona aplikace Hashline

Hashline

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.

Poslední verze Počet stažení Licence MIT Open source macOS 14 a novější Apple Silicon

Swift 6 SwiftUI a AppKit CommonMark a GFM App Sandbox Bez telemetrie Čeština a angličtina

Stáhnout DMG  ·  Web projektu  ·  Změny

Hashline: vlevo knihovna se třemi složkami, uprostřed zdroj Markdownu se zvýrazněnou syntaxí, vpravo vykreslený náhled s tabulkou, kódem a matematikou

Obsah

Proč Hashline

  • 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 .md na 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á.

Stažení a instalace

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):

  1. Stáhněte Hashline.dmg.

  2. Odstraňte příznak „staženo z internetu“:

    xattr -d com.apple.quarantine ~/Downloads/Hashline.dmg
  3. 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:

  1. 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“).
  2. Otevřete Nastavení systému ▸ Soukromí a zabezpečení, sjeďte dolů do části Zabezpečení a u hlášky o Hashline.dmg klikněte na Přesto otevřít. Potvrďte heslem nebo Touch ID. Tlačítko se ukazuje zhruba hodinu po pokusu o otevření.
  3. Otevřete DMG znovu, v dialogu klikněte na Otevřít a přetáhněte Hashline do složky Aplikace.
  4. 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…

Funkce

✍️ 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 z více složek

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 ve světlém režimu: složky Poznámky, Projekty a Blog s tlačítky pro přidání a odebrání Nastavení ▸ Knihovna v tmavém režimu
Nastavení ▸ Knihovna, světlý režim Nastavení ▸ Knihovna, tmavý režim

Světlý a 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.

Hashline ve světlém režimu: knihovna, editor a náhled Hashline v tmavém režimu: knihovna, editor a náhled
Světlý režim Tmavý režim

Technologie

Swift JavaScript HTML5 CSS3 Python Shell Xcode Markdown

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ů.

Výkon

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.

Sestavení ze zdrojů

Vyžaduje Xcode 16+ a XcodeGen.

brew install xcodegen swiftlint
git clone https://github.com/Hessevalentino/hashline.git
cd hashline
xcodegen generate
open Hashline.xcodeproj

Testy 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í

Struktura repozitáře

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.

Licence

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.

About

Nativní markdown editor pro macOS: zdroj se zvýrazněnou syntaxí a živý HTML náhled.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages