📈 GH Trending Explorer 🎲 Surprise me

← all repos

Altimor / flo-state

git clone https://github.com/Altimor/flo-state.git v0.1.18 · 14d ago

A minimalist, native macOS markdown editor. Swift + TextKit 2. GPL-3.0.

+0
stars, 24h · #31,383
+~0
stars, 7 days · #31,858
+96
stars, 30 days · #4,992
96
★ total
8
forks · 5 open issues

Star history (as recorded here)

2026-10-20 · 96 ★ 2026-10-22 · 96 ★
LanguageSwift
LicenseGPL-3.0
Created2026-09-26 (26d ago)
Last push14d ago
Watchers1
OwnerUser

Links

README excerpt
# Flo State Native
A native macOS rewrite of Flo State, a customised build of
writer.computer's markdown editor.
The original is a Tauri app (React + CodeMirror 6 in a web view); this one is
Swift, AppKit and TextKit 2, with no web view in the editing path.
The goal is behavioural parity with the web app: the same live-preview
rendering (syntax marks hide per line, and tables, math, Mermaid, images and
HTML blocks fold into widgets), the same editing commands and keymaps, and the
same app shell (sidebar, tabs, command palette, outline rail, settings,
find/replace). Parity is measured against the real web frontend: see
Testing.
## Install
With Homebrew:
 [code] 
Or download the latest `.zip` from Releases. The app updates itself (Sparkle).
## Layout
| Path | What |
|---|---|
| `Sources/FloCore` | Platform-independent core: a Swift port of `@lezer/markdown` (plus GFM and the app's extensions), editor state/transactions/history, editing commands and keymaps, the render planner (per-character styles), and the app model (settings, workspace FS, `.gitignore`, search index, sessions). |
| `Sources/FloKit` | AppKit/TextKit 2 editor: text view, layout, widgets (tables, KaTeX math, Mermaid, HTML blocks, images), find overlay, wiki-link autocomplete, paste handling. |
| `Sources/FloStateNative` | The app: window, sidebar, tabs, palette, settings, menus, plus headless CLI modes (`--snapshot`, `--batch-geometry`, `--replay-keys`, `--perf `, `--fuzz-edit `, `--shell-snapshot`) used by the parity harness. |
| `Tests/` | Unit and parity tests (XCTest). `Tests/FloTestSupport` generates synthetic documents. |
| `fixtures/` | Behaviour recorded from the web app (syntax trees, per-char render styles, keystroke results, find/paste/menu/wiki-link behaviour). |
| `oracle/` | The harness that runs the real web frontend headless and records or compares fixtures. |
| `tools/` | Scripts that rebuild the bundled JavaScript (code highlighting, HTML sanitizer, Mermaid) from a writer-computer checkout. |
| `docs/` | `SPEC.md` (behavioural spec of the web app), `KEYS-DEVIATIONS.md`. |
## Build
Requires macOS 14+ and Swift 6 (Xcode 16 or a matching toolchain).
 [code] 
`scripts/bundle.sh` builds with `-j ${JOBS:-2}`; set `THROTTLE` to a wrapper
command (for example `nice -n 10`) to lower its priority. The app is ad-hoc
signed unless `DEVELOPER_ID` is set (`scripts/sign.sh`).
The version is `VERSION` (CFBundleShortVersionString); the build number
(CFBundleVersion) is the git commit count.
### Updates and releases
In-app updates use Sparkle 2 (pinned in
`Package.swift`, embedded in `Contents/Frameworks`). The feed is
`https://flocrivello.com/flostate/appcast.xml`; checks run daily and from
*Flo State → Check for Updates…*. Updates are verified with an EdDSA key whose
private half lives in the release machine's login keychain (Sparkle
`generate_keys --account flostate`); the public key is in `scripts/bundle.sh`.
 [code] 
For testing, `FLOSTATE_FEED_URL` (or `defaults write app.flos