# Changelog ## 0.0.1 - Version tracking: the compiled version is embedded from build.zig.zon and shown by Changelog. - New builtins: Changelog, Newtty, and Joincol. - Markdown tree-sitter highlighting, including nested fenced code blocks. - `.patch` and `.diff` files are highlighted. - Coloring dispatch keys off the buffer title. - Opening a new file only splits into a new column when both panes would be at least 100 columns wide. - Terminal ANSI colors render only in tty mode; normal mode is a plain editing view, so an edit can never shift a shell row's colour. - `New` and `Newcol` open an empty scratch buffer instead of a shell or a temporary file. Its directory is inherited from the pane it was opened from. - `Save` on a scratch asks for a path, prefilled with that inherited directory, and the buffer becomes an ordinary file once written. - `Save` reaches every pane that holds text of its own and leads its tagline: a terminal ("Save New Newtty Del Filter") and an output buffer like `+Search` ("Save New Newtty Del") as well as a file. Images and PDFs keep the plain tail — their bytes on disk already are what they are. - `Save` takes the path as an ARGUMENT (`Save notes.txt`, or a selection chorded onto the word) and asks for one only when it was not given, the way Find and Grep ask for a pattern. A relative path resolves against the pane's own directory, with `.` and `..` normalized; a path that cannot be made absolute is refused rather than written next to the process. - Writing to a path never rewrites the pane: a terminal stays a terminal, an output buffer keeps its rows and its place in the n/N ring, and an open file keeps the file it has, so `Save ` is a copy and not a rename. The scratch `+New` is still the one exception, becoming the file it names. - A dropped pane's memory outlives its frame, so a pane pointer taken during that frame stays valid until the next one repairs it. - The core owns the event loop. Each platform is now a `Host` of optional function pointers; an unimplemented method falls back to an in-process default, so a host with no methods at all is still a complete pardes. - Ctrl-V and Ctrl-Shift-V paste in a tty pane: the default register and the system clipboard, typed at the program the way a terminal emulator pastes (bracketed under mode 2004). A paste arriving from the desktop reaches the shell instead of an edit buffer the pty cannot see. - The default filesystem is pardes's own source, embedded from an allowlist (src/source_manifest.zig): what a host with no file method reads, and what the browser has always read. It replaced a build-time generator that embedded every tracked .zig file. - `zig build run-isolated` builds and runs `pardes-isolate`: the same source with one comptime option, whose host supplies only the terminal. The filesystem is not disabled in it, it is absent — the libc paths compile away. - Typst highlighting: headings, `*bold*` spans, raw/code blocks and inline raw spans, and `#`-prefixed function calls (including the sigil itself). - Fenced Typst raw blocks with a language tag (e.g. ```` ```zig ````) get that language's grammar injected, the same treatment markdown fenced blocks already had. - Markdown bold, italics and inline code spans are highlighted: pardes now builds the markdown inline grammar, a second parser off the same dependency, and re-parses the block grammar's `inline` nodes with it. Only the block grammar was built before, so emphasis had no nodes to match. - Escape in a PDF pane is the document's own cancel: it drops the mouse selection and the search highlight overlay and stays where you were reading. It used to run `Last`, which moved focus out of the pane and left every following key going somewhere else. `Shift-Esc` is now the hop out — the same chord that leaves a raw tty. - `gj`/`gk` move one VISUAL line, following the automatic breaks of a soft-wrapped body and keeping the goal column inside the row. `j`/`k` are unchanged: whole file lines. With `Wrap` off a line is one visual row and the two pairs are the same motion.