From 0fd908eea63d04886b269438aa7529d3dd422256 Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Tue, 29 Sep 2026 18:05:03 -0300 Subject: Release Pardes 0.4 Co-Authored-By: Claude Opus 5.5 --- src/CHANGELOG.md | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index 142287b2..d2641aa9 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -1,6 +1,60 @@ # Changelog -## 0.0.3 +## 0.0.4 + +- Drive the editor over 9P the way acme is driven. Panes take sam + addresses (`/re/`, `#n`, `$-1`, `0/re/`), `L:C` and inclusive `L:C-L2:C2` + ranges on `addr`, with `data` and `xdata`; `Edit` runs the sam command + language as one undo step. `exec` and `ctl` buffer lines per open, and a + line without a newline runs with its write. One rule for failure: a + builtin that fails fails the write and logs one `err`, no `msg`. +- New 9P files: `/layout`, `/tag`, `/tagexec`, `col//{tag,ctl,exec}`, + `pane//tagexec`, `/recent`, ask/answer records, and a `size` ctl for + detached sessions (160x50 by default). Listings freeze at their open, so + a read in several chunks never splices two moments. +- acme's ctl words (`name`, `put`, `clean`, `dirty`, `del`, `delete`, + `dot=addr`, `addr=dot`, `limit=addr`, `mark`, `nomark`, `show`, + `cleartag`) are accepted again, done by the files that replace them; a + pane's ctl reads acme's fields in acme's order. `Put` saves and `Delete` + closes; acme builtins pardes lacks are refused, never run as shell + commands. plan9port's `9p write` always truncates, so piping into `body` + replaces it: append with `>>` through a mount. +- Command panes and a REPL binding; `pty/run` runs one line and answers its + exit status. Every child starts with default signal dispositions. +- `Recent` lists recently opened files, closed ones included, and persists + in `$XDG_STATE_HOME/pardes/recent`. A Jumplist row for a closed file says + `(closed)`. `+Unsaved` lists dirty panes. `ThemeSel` and `FontSel` are now + `Themes` and `Fonts`; `Exit`'s refusal opens in an output pane. +- `pardes --wait FILE` (`-w`) run inside a pane opens FILE there and returns + only when its pane is deleted, as plan9port's `E` does: set + `EDITOR='pardes --wait'` for fish's Ctrl-O, git and the rest. Without it, + `pardes FILE` still hands the file over and returns at once. +- Only a write logs an `err`: a refused open, create or remove fails with + Plan 9 words (`permission denied`, `file does not exist`) and logs nothing. +- The tag is a full text buffer: multi-line, with undo. +- Helix keys: the skipped non-conflicting keys, full registers and per-range + anchors, checked against the latest helix. +- Deleting the last column leaves the window empty but for its tag, as in + acme. A buffer whose file was deleted on disk counts as dirty. +- 62 themes in 13 families, each as close as possible to its original, + grouped by family in `Themes`; an `acme` theme taken from plan9port's + source, with acme's grips, 2 px rules and a 1 px tag rule. Sizes follow + display density. +- GUI motion: `Motion` flavours (crisp, smooth, bouncy, playful, off), `Lift`, + a cursor that glides and moves with its pane, smooth scroll, and optional + Bloom, Vignette, Grain, SelectionGlow, HoverGlow and Shadertoy post passes + that recompile on save. Still passes let the GUI rest; Crt keeps drawing. +- The terminal: replies to capability queries, malformed escape sequences + and lone modifier keys never become typed text; function keys, Insert and + the keypad reach terminal panes; a lone Escape is Escape at once; a focus + change no longer resends every blank cell. +- Speed: the theme's chrome is worked out once, not per grapheme; typing + tells `g.` where its edit ended; large body and data writes are linear; + a pattern that opens with a literal jumps to it. `zig build perf-gate` + fails any gesture more than 3x its recorded baseline. +- Robustness: over-long paths, non-UTF-8 bytes and odd 9P input are refused, + never a panic; seeded GUI, core and 9P monkeys (`zig build monkey-9p`) + replay and shrink what they find. - A column can be empty, as in acme. `Newcol` makes an empty column and gives its tag the keyboard; closing a column's last pane, or dragging it @@ -63,6 +117,9 @@ carry real lengths, modes and mtimes. Sources are served under `/src` only with `-Dembed-sources=true`. The tree code moved from `src/fs.zig` to `src/ninep/`. + +## 0.0.3 + - Add pinned tree-sitter declaration context, with optional compact tagline styling and separators between discontinuous source lines. - Configure search and LSP result context with `LocationsConfig`. Results use -- cgit v1.3