| Commit message (Collapse) | Author | Age | ||
|---|---|---|---|---|
| ... | ||||
| | * | macos: the AppKit shell, its icon, and the offscreen e2e harness | Gabriel Schneider | 2026-08-11 | |
| | | | ||||
| * | | ghostty: bump pin to 82e53e3f and fix tab/virtual-column vt handling | Gabriel Schneider | 2026-08-10 | |
| |/ | | | | | | | - build.zig.zon: bump ghostty ba38b493 -> 82e53e3f (translate-c backport, fixes 404 on cold cache), update hash - src/pardes.zig: adapt Terminal.init/resize to new std.Io signatures; fix display-column conversion for tabs and clicks past EOL (fileRawDisplayCol/fileRawAtDisplay) - test/e2e_harness.zig: adapt to new ghostty_vt signatures - snap suite 86/86 green | |||
| * | fixed lsp rename | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | fix tab rendering - waybe wreckless | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | Better text rendering | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | replace ArrayLists with bounded storage | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | tagbottom: the message row sits just above the tagline, not at the top | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | lsp rows: paths relative to the asking file, and the completion text | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | review pass: fix the eaten Tab, drop the duplicated code, cover the gaps | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | Tab after a dot in insert mode lists what could go there | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | a pardes launched inside pardes hands its file to the outer one | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | a builtin to put the pane taglines at the bottom | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | tagline: align the command words across the panes of a column | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | Fix returning to tty so it focuses the prompt | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | Esc alternates between the last two panes; Toggleterm is gone | Gabriel Schneider | 2026-08-10 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Esc ran Toggleterm, which hopped between the newest DOC and the newest TERMINAL. That distinction never earned its keep. It made Esc unpredictable — which of three panes you landed on depended on their kinds, not on where you had been — and it could not alternate between two files at all, which is the case you hit most. Editing two files, Esc did nothing. The replacement already existed. Last (SPC j j) is "the pane you were in before this one, whichever it was": it walks the jump stack for the newest entry naming a different pane and restores its line and column. So Esc, and Shift-Esc in tty, now run Last, and Toggleterm is deleted rather than renamed — a third implementation of "go to the other pane" was the thing to avoid. SPC w t goes with it; the w group is the four directional moves, and the jump group already had SPC j j. Held down, Esc alternates. Two files, a file and its shell, a file and a +Search — all the same, because Last has no notion of kind to get wrong. This depends on the swap in the same series: Last reads the stack backwards, and until hopping stopped appending, the pane you came from could fall off it. windownav.snap needed only its keys and prose changed — its golden did not move at all, which is the useful evidence here: for the one scenario the old builtin handled well, Last produces an identical focus sequence. Coverage for what it did not handle is new: a unit test opens a second FILE by looking its name and asserts Esc alternates between two panes of the SAME kind, which is the case that used to be a no-op. Docs follow: tutor.txt, docs/helix-keys.md, docs/design.typ, and the builtin index goldens, which are now one row shorter. 75/75 snapshots, both unit suites, and the macOS ABI build all pass. | |||
| * | a native macOS backend: libpardes plus an AppKit shell | Gabriel Schneider | 2026-08-10 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds -Dplatform=macos, a fourth backend beside tty, gui and web. Zig keeps the core, the ptys, every effect and the worker threads; Swift owns NSApplication, the window, input translation, and drawing the cell grid with CoreText. They meet at a hand-written C ABI in src/macos/pardes.h, built as a static library the app links. The ABI is src/web.zig's boundary with the wasm removed, because both hosts are the same animal: someone else owns the clock, feeds events in through flat functions, and reads one packed cell buffer out. The browser proved the shape. The one divergence is that the browser has no processes and forwards every effect to JavaScript, whereas forkpty is right here, so src/macos.zig performs them — spawn, write, resize_pty, save_file, new_file, write_dump, open_link, set_clipboard. lsp, pipe and watch are answered with nothing and marked; the core already tolerates that, since the browser answers none of them either. This deliberately inverts ghostty's split, which was studied first and is written up in docs/ghostty-macos-notes.md. Ghostty hands Zig a bare NSView*, installs its own CALayer and owns the frame clock; Swift never renders. Pardes does the opposite because its frame is already a cell grid and CoreText draws one natively — the alternative is a second hand-rolled glyph atlas, which is what most of gui.zig's 4,300 lines already are. It would also have been written blind: the Swift half cannot be compiled here. What makes the scaffold verifiable rather than dead code is that the Zig half is ordinary POSIX and builds and tests on Linux. Borrowing ghostty's best trick, build.zig translate-C's the header into the test build and src/macos.zig asserts every constant, struct layout, and exported function's arity and widths against it. That guard earned its place immediately: pardes_scroll grew a cell coordinate after the Swift view had been written against the older form. Skipped, and named as the upgrade path in docs/macos.md: the Xcode project, xcframework, lipo and codesigning ghostty needs. All four exist for distribution; a dev build is a swiftc invocation and a directory with a plist. The Swift app is a scaffold and says so — every uncertain API spelling carries an UNVERIFIED marker, and no part of it has been compiled. tty is unaffected: 75/75 snapshot scripts and both unit suites pass. | |||
| * | add a Shell builtin, default fish, with per-family prompt integration | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | topbar execute: a selection is only an argument to a builtin that takes one | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | wrap by default, at the window width, with a break marker | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | add the transient message row | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | soft-wrap long lines behind a toggle | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | boot a file argument alone | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | theme the selection colors | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | support large PDF outlines | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | sharpen native SDL rendering | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | make filtered PDF tint the default | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | optimize and harness PDF sections navigation | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | add PDF sections output and Look navigation | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | expose MuPDF PDF outline metadata | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | animate anchored theme colors on native and tty backends | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | separate modal parsing and reuse actions for PDF navigation | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | pipe selections through shell commands | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | optimize PDF tint pixel transforms | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | add colorscheme-aware PDF tint modes | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | render MuPDF pages directly into owned RGBA | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | cache MuPDF display lists for repeated renders | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | render PDFs as a continuous vertical page strip | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | tune PDF raster resolution per native backend | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | make SDL scrolling continuous and linear | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | show New in every pane tag and enforce builtin-first Exec fallback | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | fix PDF mouse-wheel scrolling jumping multiple pages | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | prioritize useful topbar commands and put Kill last | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | add New builtin for an empty temporary file in the calling column | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | load builtin commands from the user config before rendering | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | SDL backend does not grab mouse focus | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | normal Esc toggles document/terminal focus | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | tty/image: big harness + golden coverage pass | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | gui: draw image surfaces as GPU quads via glsl shaders | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | add vanilla DOM web backend | Gabriel Schneider | 2026-08-10 | |
| | | ||||
| * | search look goldens: fsearch/grep/psearch/rsearch updated | Gabriel Schneider | 2026-08-10 | |
| | | ||||
