summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
* Flatten the 9P control tree and move it out of fs.zigGabriel Schneider3 days
| | | | | | | | | | | | | | | The served tree loses the self/ level: /index /ctl /new /log /screen /listeners /pane/<n>/... /os, with /src only in -Dembed-sources=true builds (default off, on for esp32p4). ctl speaks the editor's own language with two lowercase verbs, look TEXT and exec TEXT, plus acme's addr verbs; the new/ factory directory becomes one clone file; cons is gone (exec Msg); name and sel are files; stats report real lengths, modes and mtimes; /log streams pane new/del/rename/save events. The tree code lives in src/ninep/ (tree, pane, ctl, addr, pty, events, screen, sources); fs.zig keeps host access, mounts, resolution and find/grep. Same engine and transports. README (fs-help.txt) and docs rewritten; tests updated and extended. Co-Authored-By: Claude Fable 5.1 <[email protected]>
* Add macOS backdrop blur and preserve PDF ink opacityGabriel Schneider3 days
|
* Align macOS rendering with Linux and establish parity regressionsGabriel Schneider3 days
|
* Follow the tag gap in the Look hover preview testGabriel Schneider3 days
| | | | | | | | | | The tag's first character moved to TAG_TEXT_INSET when the grip's hit area was separated from the text by a gap; the assertion kept reading GUTTER, which is now the gap itself and carries the plain tag background. The test's own point — that a preview on the tag's first character is paintable at tag column zero, PREFIX_W being a body concern — is unchanged; only where column zero is moved. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
* Forward Option chords to the child on macOSGabriel Schneider3 days
| | | | | | | | | | | | | | | | | | | In raw tty mode Alt-n reached the child as a bare `n`: the ESC prefix was dropped on the floor, and only on macOS. ghostty's encoder refuses the legacy alt-esc prefix on a macOS build unless macos_option_as_alt says Option really is Alt, and KeyEncodeOptions.fromTerminal cannot know that one — it says so in a comment — so it defaults to false. False is right for an app that lets macOS translate the chord and hands the encoder the composed text. Every pardes shell decides the modifier itself and hands the core the BASE key with the alt bit and no text at all, which PardesView.keyDown and app.mjs both spell the same way, so by the time the encoder runs there is nothing left to translate. The unit suite has been catching this on macOS all along; it is only invisible on Linux, where that branch does not compile in. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
* Give macOS scrolling momentumGabriel Schneider3 days
| | | | | | | | | | | | | | | | | | | | | | | | | | | | A swipe that was still moving when the fingers lifted stopped dead. The dial next to it has thrown properly since pardes_rotate_end, and this is that same curve on the scroll accumulator: velocity sampled between events off the monotonic clock, weighted toward the newest sample because a flick is decided by how the hand was moving when it left, and a fling that ramps up from zero at the floor rather than switching on at it. A coast stops at the end of a document rather than spinning its remaining velocity against the edge, which is why spendScroll now reports whether the pane moved and why paneAt is public. Only a step that delivered a press can report an edge — the many steps between two rows cross nothing. Nothing suppresses AppKit's own momentum, and nothing needs to: its momentum events are ordinary pardes_scroll calls, every one of which cancels the coast before spending its travel, so on a real trackpad the system takes the gesture over about a frame after the lift and the tail it ends on is below the floor. This is the path for devices AppKit does not fling for — and the only one a script can reach, since NSEvent phases have no public constructor. momentum.snap asserts both halves, which is why it needs the long scrollback: a flick with no document left proves nothing. A slow swipe is byte-identical after the release; a hard one coasts twenty-four rows further on its own, and a finger back on the pad stops it there. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
* Let WindowOpacity through on macOSGabriel Schneider3 days
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The builtin was gated on the SDL platform, so the macOS shell never registered it and the setting had nowhere to land. macOS already had transparency, but only the binary kind a theme decides — a theme with no background of its own drops the ground and the blur shows through. WindowOpacity is the graded, theme-independent version, and the window had no way to hear about it. pardes_window_opacity reports the percentage and acknowledges the request in one read, beside pardes_theme_bg: an SDL surface can arrive without an alpha channel and has to be able to refuse, while an AppKit window always composites per pixel, so there is nothing here to refuse and no rollback to perform. The view then paints the rule shaders/ui.frag.glsl states for the SDL shell: backgrounds — ground, cell and band fills, and the chrome rules over them — take the alpha, glyph ink never does, and the block cursor is exempt because it is foreground chrome that happens to be carried in a cell background. That exemption is why the cursor joins the colour in the background run key; it can no longer share a fill with the cells beside it. Two things the harness was missing fall out of testing it: it never adopted the theme background or the opacity, so a Theme or WindowOpacity in a script moved the core and never reached a pixel. draw-opacity records both ends of the alpha range, which is what makes the two-sided contract assertable — 60% reads 153..255, and 0% reads 0..255 with the ink still standing. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
* Restore the macOS shell build after the compact tagline driftGabriel Schneider3 days
| | | | | | | | | | The body-layer context rules landed on a private TaglineMetrics.scale, which never compiled: no macOS host built this shell when they were written. Expose the physical-pixel thickness the way borderThickness/borderTop already expose theirs, and paint the rule over the row's last pixel the way the SDL shell does, so the two shells agree on the pixel rather than sitting one apart. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
* Fetch cloud9 from sourcehut, and correct the citations into the board toolchainGabriel Schneider3 days
|
* Clear selections when navigating Back and ForwardGabriel Schneider3 days
|
* Keep unavailable numeric Look targets harmless when clearing selectionGabriel Schneider3 days
|
* Clear previous selections before resolving Look destinationsGabriel Schneider3 days
|
* Reuse bounded source analysis and speed up result context traversalGabriel Schneider3 days
|
* Default location results to stacked addresses and source previewsGabriel Schneider3 days
|
* Bound preceding result context by its outermost tree-sitter declarationGabriel Schneider3 days
|
* Highlight exact source occurrences in LSP references and goto resultsGabriel Schneider3 days
|
* Show result declaration locations only on their first header lineGabriel Schneider3 days
|
* Mark omitted source after result declaration context with ellipsesGabriel Schneider3 days
|
* Align search and LSP results in groups of eight matchesGabriel Schneider3 days
|
* Release Pardes 0.3 and stamp the macOS package versionGabriel Schneider3 days
|
* Center GUI pane indicators using cached font ink boundsGabriel Schneider2026-09-15
|
* Separate pane and column grip hit areas from tagline text with a small gapGabriel Schneider2026-09-15
|
* Keep column grips blank and muted in every focus stateGabriel Schneider2026-09-15
|
* Cycle pane input modes with Mode and retain terminal tag accessGabriel Schneider2026-09-15
|
* Reorder columns using aligned and distinctly colored tag gripsGabriel Schneider2026-09-15
|
* Make location highlighting an explicit output producer choiceGabriel Schneider2026-09-15
|
* Normalize keypad Enter in native and attached TTY inputGabriel Schneider2026-09-15
|
* Separate tag text geometry from physical pane gripsGabriel Schneider2026-09-15
|
* Ignore slash-only comment markers in general Look detectionGabriel Schneider2026-09-15
|
* Use result metadata when walking output locations with n and NGabriel Schneider2026-09-15
|
* Separate discontinuous pinned source context with thin bordersGabriel Schneider2026-09-15
|
* Hide redundant locations on neighboring result contextGabriel Schneider2026-09-15
|
* Align search and LSP context locations flush leftGabriel Schneider2026-09-15
|
* Match filename tint lightness in every canonical theme and focus stateGabriel Schneider2026-09-15
|
* Mute result declaration context and show nesting after locationsGabriel Schneider2026-09-15
|
* Add optional compact tagline styling for source contextGabriel Schneider2026-09-15
|
* Lead terminal tags with a tinted Tty commandGabriel Schneider2026-09-15
|
* Distinguish filename hues while preserving tag brightnessGabriel Schneider2026-09-15
|
* Expose LocationsConfig in location result pane tagsGabriel Schneider2026-09-15
|
* Follow embedded PDF links through LookGabriel Schneider2026-09-15
|
* Remember tag cursors and reserve uppercase pane navigationGabriel Schneider2026-09-15
|
* Tint pane tag filenames with an optional theme colorGabriel Schneider2026-09-15
|
* Align location results and configure source contextGabriel Schneider2026-09-15
|
* Add optional tree-sitter declaration contextGabriel Schneider2026-09-15
|
* Mirror raw terminal mouse selections for text transferGabriel Schneider2026-09-15
|
* Align file clicks and insertion cursorsGabriel Schneider2026-09-15
|
* Route mouse thumb buttons to jump historyGabriel Schneider2026-09-15
|
* Preserve selections when navigating jump historyGabriel Schneider2026-09-15
|
* Add Linux Tty9p mounted terminals and forward raw TTY keysGabriel Schneider2026-09-15
|
* 9p: use cloud9 protocol sessions and transportsGabriel Schneider2026-09-15
|