Skip to content

CatPaw v0.2.1

Latest

Choose a tag to compare

@github-actions github-actions released this 11 Oct 06:58

Pages load faster. A profile of real sites (catpaw fetch --js --profile, new) showed their time going to waiting for the network one
thing at a time, not to their scripts:

  • The imports of a module load side by side, as a browser loads a module
    graph; they were fetched one after another, each waiting its turn. An
    import map's bare specifiers are started ahead too, and
    <link rel="modulepreload"> is honoured.
  • A frame's document loads off the page's thread, as a browser loads
    one: the page's scripts, timers and other frames run meanwhile, and the
    page waits for it as for a request of its own, under the settle
    policy's rules (a frame on an ignored host never holds an action up, a
    slow third party's for three seconds at most). The page used to fetch
    each frame's document in turn before going on, a frame that did not
    answer costing up to eight seconds a redirect hop. A frame that opens
    now runs before its parent's clock moves on, so its load fires where
    a browser's would, before the parent's later timers.
  • The external scripts a document names are fetched before the parser
    reaches them, as a browser's preload scanner has them: a script the
    parser waits for no longer holds up the ones after it.
  • catpaw fetch --js --profile tells where a page's time went: the event
    loop's steps by kind, scripts by source (compiling apart from running),
    parsing, rendering, and the waits for the network.

On the sites measured, the time waiting for the network fell by a third
to a half (github.com 13 s to 6–8 s on a quiet network, techcrunch.com
35 s to 16–17 s, figma.com 19 s to 13 s, crates.io 6.5 s to 4.4 s).
Network latency sets the rest: on these sites the scripts themselves
took 0.3–3 s a page, with a few heavy ones (an obfuscated bot check that
runs for the whole 10 s script budget) as the exceptions.

Install

macOS (Apple silicon) and Linux (x86_64, aarch64):

curl -fsSL https://catpaw.sh/install.sh | sh

Windows (PowerShell):

irm https://catpaw.sh/install.ps1 | iex

The scripts download the archive for your system from this release and
check it against SHA256SUMS. Or download an archive below, check it
(sha256sum -c SHA256SUMS --ignore-missing), and put catpaw on your
PATH. Then connect it to your agent:

catpaw setup claude-code

Intel Macs and other systems: cargo install catpaw (Rust 1.91 or
later) builds it, see the README.