Releases: saeeedhany/ase
Release list
v0.4.0-beta
The first release not called alpha. 90 commits and 70 ADRs since v0.3.0-alpha.
Beta because the gaps that stop an editor being a daily driver are closed, and the ones that lose your work are closed twice. Not because nothing is left — see Still open.
Highlights since v0.3.0-alpha
Your work is hard to lose now
- Atomic save — a save writes to a temporary beside the file and renames over it, so an interrupted or failed write leaves the original intact rather than truncated.
- Crash recovery — unsaved changes are snapshotted a moment after you stop typing, somewhere that is not beside your files, and offered back on the next launch. That now includes a buffer you never named:
Ctrl+N, type, crash, and it is still there. Verified against a realSIGKILL. - Session restore — files, carets and scroll positions, but only when you launch with no arguments.
ase foo.cmeansfoo.c.
A keyboard with a law
- Five layers, each with a reason rather than a free slot: bare keys are Vim's,
Ctrlis what you bring from other editors,Ctrl+Wis structure,Altis this editor's own,F<n>asks the language server. - Regions have a vocabulary —
Ctrl+W j/k/w/c/o/+/-, Vim's window prefix with Vim's window keys. Pressing the prefix alone shows what it is waiting for. - Every binding is data —
key.ctrl+s = editor.savein your config, including two-chord sequences, per-Vim-mode bindings,noneto unbind, and plugin commands. A binding naming a command that does not exist is reported when you save the config, not silently ignored. - A half-typed Vim command now shows in the status bar as you type it.
Language server, the other half
- Find references and a document outline, both in a navigable panel you can reach and drive from the keyboard without touching the buffer.
- Go-to-definition, a jumplist, diagnostics, completion and hover, sharing one server per language per project.
Looks
- Three built-in palettes —
:themeto list,:theme <name>to see it live,:theme saveto keep it. A colour you set by hand stays yours. - Git gutter marks — added, changed and deleted per line, hidden while an unsaved edit has moved the lines around.
- The seam between the editor and the panel below it is a hairline you can drag, at rest until you go near it.
Documentation that cannot drift
- A Guide covering install, configuration, themes, keybindings, Vim mode, language servers and writing a plugin.
- A Reference generated by the binary from its own tables — every command, every default binding, every config key. CI regenerates it and fails on a diff, so it cannot describe an editor that no longer exists.
Fixed
- Typing in a large file is up to 70× faster. Past 256KB the syntax parse is meant to wait for a pause in typing. It never had:
refreshCache()zeroed the capture window each keystroke and the caret measurement re-parsed the whole file four statements later. 290KB of C went from 4008µs a keystroke to 56. Ctrl+Scould save the wrong file. Every viewport registered its commands into one shared table that skipped names already present, so the first buffer opened owned everyeditor.*command for the session — silently, because that buffer was clean.- A plugin command no longer destroys your undo history. Its edit is recorded as a single step, so
utakes back the command and everything before it survives. :editor.savereported an unknown command while the same name worked as a key binding. One resolution order now, shared by both.Shift+Vpainted a one-pixel sliver on the line below the selection;Bbehaved likeb;cWate the following space;Alt+;did nothing at all, because Qt parses"Alt+;"and not"Alt+Semicolon"and an empty key sequence installs a shortcut that can never fire.
Platforms
Linux. That is where the GUI is built, tested and packaged. The core library is built and tested on macOS and Windows in CI, but the GUI has never been built on either — treat them as unverified rather than supported. On Windows ase_process_spawn() is unimplemented, so the language server and :compile are present and do nothing.
Downloads
| File | What it's for |
|---|---|
Absolute_Simple_Editor-0.4.0-beta-x86_64.AppImage |
Run directly on most x86_64 Linux distros — chmod +x, then run it. |
ase_0.4.0-beta1_amd64.deb |
Debian/Ubuntu — sudo apt install ./ase_0.4.0-beta1_amd64.deb |
| Arch Linux | Use packaging/arch/PKGBUILD from the source tree — cd packaging/arch && makepkg -si |
Verify a download against SHA256SUMS (also attached):
sha256sum -c SHA256SUMSv0.3.0-alpha
Highlights since v0.2.0-alpha
New:
- Vim mode, on by default — Normal/Insert/Visual (charwise and linewise), motions
h j k l 0 ^ $ gg G w b e, operatorsd y ccomposable with motions and counts (3j,d2w,3dd),x,p/P,u/Ctrl+R,oto swap selection ends, and:for the command line. A real block cursor in Normal/Visual, with the character under it knocked out so it stays readable. - Multiple buffers — a viewport per file behind a minimal, custom-painted tab strip: no frames or separators, state carried by opacity, a dot only when a buffer has unsaved changes.
Ctrl+Tab/Ctrl+W/Ctrl+N, andShift+wheel to pan when the tabs overflow. - The plugin host is wired into the GUI —
<config dir>/plugins/loads at startup, and:nameruns any registered command. It had existed as a tested core library with nothing calling it. - Runtime font zoom —
Ctrl+=/Ctrl+-/Ctrl+0, live, independent ofconfig.ase. - Syntax accent colours — types and strings in two accent colours instead of italics; everything else stays monochrome.
- A typing pop-in animation, and a rewritten welcome screen that leads with what the editor is, then the shortcuts that matter.
- Panel text fields draw the editor's own caret — the Find, Open/Save-As, command-line and shortcut-search fields now glide and breathe like the editor's caret instead of hard-blinking.
- Open/Save-As behaves like a file dialog — a typed path resolves in both modes, overwriting asks first, and the panel shows which directory you are in.
- Searchable, collapsible keyboard-shortcut reference.
Fixed:
- Idle CPU on an 8400-line file: 22% → 0.0%. The renderer re-scanned every highlight span for every visible line on every frame.
- Tab animations were keyed on the buffer's display name, and every new buffer is called
untitled— so new tabs slid in from the wrong place and closing skipped its animation entirely. - Charwise
pat end-of-line pasted onto the next line. - Both packages had silently stopped building against their target platforms' Qt (a Qt 6.6-only call, on bases that ship 6.2 and 6.4).
Internals:
EditorViewportsplit across nine translation units (it had reached 3608 lines).- One shared motion language (
gui/src/motion.h) — six files had each picked their own animation durations.
See the full ADR history for the decision-by-decision record.
Downloads
| File | What it's for |
|---|---|
Absolute_Simple_Editor-0.3.0-alpha-x86_64.AppImage |
Run directly on most x86_64 Linux distros — chmod +x, then run it. |
ase_0.3.0-alpha1_amd64.deb |
Debian/Ubuntu — sudo apt install ./ase_0.3.0-alpha1_amd64.deb |
| Arch Linux | Use packaging/arch/PKGBUILD from the source tree — cd packaging/arch && makepkg -si |
Verify a download against SHA256SUMS (also attached):
sha256sum -c SHA256SUMSv0.2.0-alpha
Highlights since v0.1.0-alpha
Real bugs fixed:
- Mouse click/hover drift on syntax-highlighted lines — clicking or hovering further right on a styled line increasingly missed the character under the pointer.
- Italic glyphs clipped at the top — italic
voidwas visibly misreadable asvoia. - Two packaging bugs from external testing:
.deb/AppImage built on a rolling-release dev machine baked in unrealistic Qt/glibc version floors — both now built inside pinned, old container bases (Debian bookworm / Ubuntu 22.04).
New:
- Diagnostic underline redesign — a plain thin line instead of a wavy squiggle, dim by default, brightening with a smooth left-to-right wipe on the line the cursor is on.
- An empty-buffer welcome overlay — the editor's logo and the essential shortcuts, shown until you start typing.
- Full floating-panel isolation — Find/File-browser/Command-line/Help/About panels now fully block the document underneath while open; closing is Escape-only.
- Help/About panels are draggable from their whole header bar, not just the badge.
- Quitting with unsaved changes now asks for confirmation, themed to match the editor.
- Faster global animation easing across the board (caret glide, scroll, diagnostics, overlays).
Process:
- A public feedback-triage log (
docs/feedback/) for external bug reports, with an explicit policy for telling real defects apart from deliberate design choices.
See the full ADR history for the complete decision-by-decision record.
Downloads
| File | What it's for |
|---|---|
Absolute_Simple_Editor-0.2.0-alpha-x86_64.AppImage |
Run directly on most x86_64 Linux distros — chmod +x, then run it. |
ase_0.2.0-alpha1_amd64.deb |
Debian/Ubuntu — sudo apt install ./ase_0.2.0-alpha1_amd64.deb |
| Arch Linux | Use packaging/arch/PKGBUILD from the source tree — cd packaging/arch && makepkg -si |
Verify a download against SHA256SUMS (also attached):
sha256sum -c SHA256SUMSv0.1.0-alpha — First alpha release
First alpha release of Absolute Simple Editor: a minimal, robust, blazingly fast, and aesthetically deliberate GUI text editor.
What's in it
All seven original spec phases plus the full "complete normal editor" pass: undo/redo, multi-cursor selection, clipboard, find/replace, viewport/scroll polish, a floating command line with :compile, and an LSP client (diagnostics, completion, hover) wired into the GUI — set lsp_command in config.ase to turn it on. See docs/ROADMAP.md for the full phase-by-phase history.
Licensed under the Apache License 2.0.
Installing
AppImage (any Linux distro, no install needed):
chmod +x Absolute_Simple_Editor-0.1.0-alpha-x86_64.AppImage
./Absolute_Simple_Editor-0.1.0-alpha-x86_64.AppImageDebian/Ubuntu (.deb):
sudo apt install ./ase_0.1.0-alpha1_amd64.debArch Linux: build from packaging/arch/PKGBUILD:
git clone https://github.com/saeeedhany/ase.git
cd ase/packaging/arch
makepkg -siSHA256SUMS below covers the AppImage and .deb — verify with sha256sum -c SHA256SUMS.
Known limitations
This is an alpha: Vim mode isn't implemented yet, and Windows/macOS builds aren't packaged (Linux only for now). See docs/ROADMAP.md for what's tracked.