summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
* lsp rows: paths relative to the asking file, and the completion textGabriel Schneider2026-08-10
|
* review pass: fix the eaten Tab, drop the duplicated code, cover the gapsGabriel Schneider2026-08-10
|
* Tab after a dot in insert mode lists what could go thereGabriel Schneider2026-08-10
|
* a pardes launched inside pardes hands its file to the outer oneGabriel Schneider2026-08-10
|
* a builtin to put the pane taglines at the bottomGabriel Schneider2026-08-10
|
* tagline: align the command words across the panes of a columnGabriel Schneider2026-08-10
|
* Fix returning to tty so it focuses the promptGabriel Schneider2026-08-10
|
* Esc alternates between the last two panes; Toggleterm is goneGabriel Schneider2026-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 shellGabriel Schneider2026-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 integrationGabriel Schneider2026-08-10
|
* topbar execute: a selection is only an argument to a builtin that takes oneGabriel Schneider2026-08-10
|
* wrap by default, at the window width, with a break markerGabriel Schneider2026-08-10
|
* add the transient message rowGabriel Schneider2026-08-10
|
* soft-wrap long lines behind a toggleGabriel Schneider2026-08-10
|
* boot a file argument aloneGabriel Schneider2026-08-10
|
* theme the selection colorsGabriel Schneider2026-08-10
|
* support large PDF outlinesGabriel Schneider2026-08-10
|
* sharpen native SDL renderingGabriel Schneider2026-08-10
|
* make filtered PDF tint the defaultGabriel Schneider2026-08-10
|
* optimize and harness PDF sections navigationGabriel Schneider2026-08-10
|
* add PDF sections output and Look navigationGabriel Schneider2026-08-10
|
* expose MuPDF PDF outline metadataGabriel Schneider2026-08-10
|
* animate anchored theme colors on native and tty backendsGabriel Schneider2026-08-10
|
* separate modal parsing and reuse actions for PDF navigationGabriel Schneider2026-08-10
|
* pipe selections through shell commandsGabriel Schneider2026-08-10
|
* optimize PDF tint pixel transformsGabriel Schneider2026-08-10
|
* add colorscheme-aware PDF tint modesGabriel Schneider2026-08-10
|
* render MuPDF pages directly into owned RGBAGabriel Schneider2026-08-10
|
* cache MuPDF display lists for repeated rendersGabriel Schneider2026-08-10
|
* render PDFs as a continuous vertical page stripGabriel Schneider2026-08-10
|
* tune PDF raster resolution per native backendGabriel Schneider2026-08-10
|
* make SDL scrolling continuous and linearGabriel Schneider2026-08-10
|
* show New in every pane tag and enforce builtin-first Exec fallbackGabriel Schneider2026-08-10
|
* fix PDF mouse-wheel scrolling jumping multiple pagesGabriel Schneider2026-08-10
|
* prioritize useful topbar commands and put Kill lastGabriel Schneider2026-08-10
|
* add New builtin for an empty temporary file in the calling columnGabriel Schneider2026-08-10
|
* load builtin commands from the user config before renderingGabriel Schneider2026-08-10
|
* SDL backend does not grab mouse focusGabriel Schneider2026-08-10
|
* normal Esc toggles document/terminal focusGabriel Schneider2026-08-10
|
* tty/image: big harness + golden coverage passGabriel Schneider2026-08-10
|
* gui: draw image surfaces as GPU quads via glsl shadersGabriel Schneider2026-08-10
|
* add vanilla DOM web backendGabriel Schneider2026-08-10
|
* search look goldens: fsearch/grep/psearch/rsearch updatedGabriel Schneider2026-08-10
|
* a right click walks the hits, and a click inside a selection takes it whole; ↵Gabriel Schneider2026-08-01
| | | | search/range look steps, goldens updated
* a corner grab drags the column edge and the pane edge at onceGabriel Schneider2026-08-01
|
* the mode is a character in the layout box, not a word in the taglineGabriel Schneider2026-08-01
|
* the scrollbar is one column, not twoGabriel Schneider2026-08-01
|
* ctrl+ and ctrl- resize the gui's fontGabriel Schneider2026-08-01
|
* the gui wears any monospace font on the machineGabriel Schneider2026-08-01
|
* a wheel tick slides the pane instead of jumping itGabriel Schneider2026-08-01
|