Pooya Parsa
@pi0
Building opensource stuff ◦ @unjs.io ◦ @nitro.build ◦ @nuxt.com 🌱 github.com/pi0 ❌ x.com/_pi0_
mountx works in any container with FUSE available (e.g. Vercel Sandbox) this which makes it a really interesting fit for user-defined storage.
You can try it out without even writing a line of code! $ npx mountx $ cat ~/mountx/README.md
⛰️ mountx :: mount JavaScript as a real filesystem! Write ~6 lines of JS, get a real directory any process can read & write: editors, CLIs, AI agents. Rootless on Linux (FUSE) and macOS (NFSv3 with no kernel extensions). ~Pure JS, zero deps. mountx.vercel.app
I’ve been exclusively coding in containers for a while now. no dev tools on my Laptop and PC. Today, I needed to test something and remembered that getutm.app can natively virtualize MacOS in MacOS. BTW Dropping this mini pkg shortly 😁
IPX 4 βeta is out! - Customizable parseURL - Faster etag revalidation - New unflatten and opacity operators - 16MB smaller than v3 - Security hardenings: symlink sandboxing, opt-in blockPrivateIPs, validated redirects, forced SVG sanitization, clamped dimensions, nosniff header, ...
H3 v2 RC.26 is out! 🚀 - New onDispose hook - Faster setCookie; sessions now use SameSite=Lax - Faster precomposed middleware, cutting dispatch overhead by 9–18% - Return an EventStream directly as a response - 20+ bug fixes and security hardening improvements - Redesigned docs
Side quest of the day: 🧹mermaid-compact Mermaid is great for diagrams… until noticed this cute thing, pulls in 100+ dependencies (140 MB install), and Vite emits 100+ chunks from the mermaid.esm.min import 😅 No more! The whole thing now bundles into a single ~2.7 MB chunk.
Today @kane.tw told me that unwasm has issues parsing some opcodes. It wasn’t the first time with this issue. Now the parser is replaced with a tiny one that extracts only what unwasm needs. A few more changes, the install size is down to 38.7kB/329kB from 417kB/2.44 MB 🚀
The latest version of VS Code (1.129) has a new experimental Modern UI (the one on the right) with rounded corners everywhere. I am enabling it in Coderaft to try! How do you like it?
New hook in H3: onDispose(event, cb). Fires when a request is truly done: response finished, client disconnected, or the stream errored. Works identically on all runtimes!
Did you know that even a simple console.log() per request can hugely hurt performance? The built-in logger in the next h3/srvx release batches writes and caches the timestamp (Intl), cutting logging overhead ~60–85%.
Did you know that H3 has a built-in `writeEarlyHints` utility that sends early hints? (Thanks to the initial contribution from @danielroe.dev, we’ve had it since the early days!)
process.getBuiltinModule() is SO underrated! Before this API, conditionally using Node.js built-ins in universal libraries was dodgy.
🍦 unjs/unctx v3: - Zero dependencies, with optional transformer - Faster transformers (thnx @thealexlichter.com) - Uses oxc parser for transform - AsyncLocalStorage doesn't needs to be polyfilled - Fixes memory leak with resources like timers in context
nowadays i work on multiple projects, in multiple branch worktrees, across multiple sessions all in parallel. zigpty has a built-in attention detection system that tells me when an agent is done. and i can close my laptop and pick up sessions from my phone while cooking!
Nitro’s routeRules engine will be 9–110× faster in the next release (over 250x when new security guards kick-in). This is powered by a new complex pattern-overlapping analyzer in rou3, enabling route rules to be pre-merged at compile time. And that’s not all 😜
Figured it might be better to think more about designing the right `defineQueryHandler` API. As the first step, the essentials, types + .query() support and spec-compliant utils (`requireContentType` and `appendAcceptQuery`) have landed.
I noticed code-server hasn’t published a new npm version in the past three months! although their GitHub releases still include tarballs. Coderaft is now upgraded to the latest VS Code (127). It’s my primary (in-container) IDE for almost everything and I’m really happy with it!
Working on first-class QUERY support in H3 (RFC 10008). Feedbacks on the ergonomics are welcome!
🌟unjs/ocache 0.2 is packed with fixes for 30+ long-standing issues. Landing soon in the next Nitro v3 beta.
In crossws 0.4.9: - App-level ping/pong hooks - Manual subprotocol negotiation - ws() plugin now works out of the box in srvx and h3 + caches resolution for speed - Universal idleTimeout (30s default) to help prevent memory leaks
webpack-dev-server, http-proxy-middleware and @rspack.dev are now using modernized unjs/httpxy 😃🔥
🌳 In h3/rou3 v0.9.0: 🔧 routeToRegExp() is now PCRE2-compatible 🔁 new regExpToRoute() to map proxy regexes back to rou3 patterns (URLPattern-ish) ✨ routesOverlap() / findOverlappingRoutes() built to handle complex logic like overlapping route rules in Nitro
What a fabulous day! Only my brain is officially fried from all the context switching 😵💫
Latest h3/srvx release is out with 3 fixes, (thanks to Fable 5), plus a new universal maxRequestBodySize option. This helps harden server security against clients sending large request bodies, especially when running without a CDN.