|
Sure! At first I wanted a sublime that played nice on windows with virtual desktops (it has some annoyances when dragging tabs, they dont respect separate destkops). I use sublime as my 'ephemeral' text editor, and Obsidian for my actual saved/persisted notes, but i love Obsidian's WYSIWYG markdown experience so i wanted to bake that into this as well. So the core ethos of it is: 1. ephemeral AND safe - easy to jot notes but also safe from crash or accidental closing ( all text buffers persist a rewindable history), 2. performance, 3. minimalism: I don't want a whole plugin ecosystem or bloat. extra features are all accessed via the command palette, 4. markdown WYSIWYG rendering tailored to my liking Technical details:
Native markdown notes editor for Windows, written in Rust. No GUI library as I went straight to raw Win32 with DirectWrite/Direct2D/D3D11 underneath. No winit, no wgpu, no async. Just a real wndproc and threads talking over crossbeam channels. The rope is canonical and there's a separate "display map" layer that handles wrapping, folding, hide/replace projections. source bytes never touch the GPU and every text layout is built from a display string with styles baked in. SQLite is the source of truth and the files on disk are exports, so every keystroke is durable Performance is the whole point as I wanted sublime-level performance(and beyond) There are gated budgets in CI for every slice, eg. keystroke to pixel under 8ms p99, decoration parse under 1ms, D2D submission under 2ms, edit-to-durable under 400ms, plus a variance-tail contract (p99.9 ≤ 2× p99) so sporadic stalls fail the build too. Steady-state target is zero new heap allocations per keystroke. Layout caches are keyed so they survive typing bursts, the display map has splice + motion-reuse caches that killed O(document) rebuilds on single-character edits and caret moves, and every reflow funnels through a helper that pins the caret's screen-y so font/wrap/resize changes never make you re-find your cursor. I've also done a bit of research on the psychology of perception and response times to try to tune this for maximum intuitiveness and responsiveness. Too fast is disconcerting, too slow is infuriating, too little feedback is confusing, too much is distractinc, etc. this has taken about a week so far and it's almost ready to replace my usage of sublime |