summaryrefslogtreecommitdiff
path: root/src/CHANGELOG.md
blob: 3b5056b5d541848ed68b3aa51149e3151099c3ad (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 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 <elsewhere>` 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.