## denoland/deno — v2.9.0…v2.9.1

_54 commits._

### Features
- **feat: update laufey to 0.5.0 (#35663)** (796a222)
- **feat(check): add `--desktop` flag to type-check for deno desktop (#35644)** (cde65fe)
- **feat(desktop): register deep-link URL schemes at bundle time (#35466)** (c3c632b)

### Fixes
- **fix(lib): add PerformanceObserver and PerformanceObserverEntryList types (#35640)** (541c51b)
- **fix(desktop): show macOS tray icon in bundled .app launched via Finder (#35626)** (037e930)
- **fix(desktop): discover deno.json in the project dir for `deno desktop .` (#35660)** (e2fedd4)
- **fix(rt_desktop): reveal initial window on first paint (startup black flash) (#35620)** (01d7da6)
- **fix(desktop): detect SvelteKit adapter-node and error on unsupported adapters (#35533)** (43f09cf)
- **fix(inspector): support Chrome worker debugging (#35629)** (1afa1a9)
- **fix(ext/fetch): include path and reason when fetching a file:// URL fails (#35606)** (2f4bef6)
- **fix(core): apply deferred fast-call op upgrade to the captured bootstrap clone (#35630)** (c0a6876)
- **fix(libs/http): add missing `write_flushed` in `poll_start_fixed_response_with` (#35649)** (6dc4f41)
- **fix(desktop): resolve launcher symlink so .deb/.rpm apps find the backend (#35632)** (99a45db)
- **fix(install): pin pre-release npm versions added via dist-tag (#35586)** (dfa8715)
- **fix(npm): realpath npm bin main module (#35554)** (c5d5a1a)
- **fix(npm): fall back for age-filtered npm dist-tags (#35561)** (1d08c79)
- **fix: show clear error when V8 fails to create worker threads (#32856)** (d31aaf1)
- **fix(ext/node): send TLS close_notify on JS stream-backed socket shutdown (#35582)** (96cedb7)
- **fix(doc): strip blockquote > prefixes from JSDoc code blocks (#34866)** (ede442b)
- **fix(bundle): emit CSSStyleSheet for CSS raw imports (#35598)** (3fe48f6)
- **fix(ext/node): pass Deno subcommands through child_process spawn (#35599)** (9b23333)
- **fix(ext/node_sqlite): keep attach limit capped under scoped permissions (#35232)** (38e00aa)
- **fix(ext/node): mock.reset() should also reset MockTimers (#35588)** (8bde75a)
- **fix(ext/web): make URL and URLSearchParams non-serializable (#35423)** (4c2f662)
- **fix(ext/node): export report as named export from node:process (#35400)** (6ddc9d7)
- **fix(npm): use case-insensitive match for trust-policy-exclude (#35520)** (c815982)
- **fix(ext/node): check permissions when binding node:net unix sockets (#35564)** (4216f2b)
- **fix(npm): decode percent-encoded subpath of npm specifiers (#35505)** (ed07e25)
- **fix(npm): show scoped-registry auth hint on tarball 404 (#35514)** (3a8ae3f)
- **fix(npm): normalize bin names with path separators (#35555)** (0532e63)
- **fix: correct property name for JSX new line configuration in schema file (#35565)** (74d504e)
- **fix(jupyter): register stdin peer only after ZMTP handshake completes (#35585)** (3ca0e08)
- **fix(desktop): default window title to app name instead of laufey_webview (#35541)** (02f2432)
- **fix(desktop): set LAUFEY_RUNTIME_PATH in Linux app launcher (#35580)** (d3c7a73)
- **perf(desktop): serve over in-process memory channel instead of TCP loopback (#35272)** (4925b0e)
- **fix(lsp): watch .wasm files for changes (#35560)** (c9a604a)
- **fix(desktop): repair webview and raw backends on Windows (laufey v0.4.1) (#35566)** (3d3dbb4)
- **perf(core/webidl): check `next` method outside of iterator loop (#35480)** (ea86647)
- **fix(desktop): don't delete user directories that collide with app name (#35513)** (edbcde8)
- **fix(fmt): stable formatting of multi-line html/svg tagged templates (#35540)** (303ba54)
- **fix(desktop): use zstd for appimage squashfs (#35506)** (845e9fd)
- **perf(ext/fetch): fast-path Response reconstruction (#35495)** (e887f38)
- **fix(core): prevent shared-buffer timer expiry race from losing timers (#35312)** (49c3825)
- **fix(node): load graph-backed TypeScript modules synchronously (#35527)** (c5a85e9)
- **perf(ext/http): coalesce chunked response writes into a single write (#35523)** (87bc062)
- **fix(cache): skip checksums for cached 404 entries (#35526)** (876a960)
- **fix(config): don't strip workspace-member includes from deploy config (#34788)** (8025886)
- **fix: resolve LAUFEY_VERSION from crate-local Cargo.lock during publish (#35507)** (5a33eed)

### Backend
- **2.9.1 (#35669)** (7afe265)
- **Revert "perf(desktop): serve over in-process memory channel instead of TCP loopback (#35272)" (#35670)** (25289de)

### Tests
- **test: fix flaky readableStreamEmittingManyChunks memory leak assertion (#35447)** (9ef38e3)

### Chore
- **chore: add doc/ directory and a docs-only CI fast path (#35650)** (89a4645)
- **chore: bump denokv_* crates to 0.14.0 (#35613)** (4bdf663)
- **chore(flake): rust-analyzer in nix develop shell and fix non-NixOS build (#35569)** (7d32102)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/denoland/deno?utm_source=github-action)._