GitHub Releases https://github.com/ 2026-08-25T10:00:53Z tag:github.com,2008:Repository/1238504280/v2.6.0 2026-08-25T10:00:53Z aria2-next: v2.6.0 - Mature Transport Backends and Persistent State Modernization <h2>Breaking Changes</h2> <p>This is the largest architectural update in Aria2 Next so far. Core transfer and persistence paths were extensively replaced, so this release may be less stable than previous patch releases.</p> <ul> <li>The handwritten HTTP, HTTPS, SFTP, FTP, BitTorrent, and Windows TLS transport paths have been removed.</li> <li>FTP downloads are no longer supported.</li> <li>Retired <code>.aria2</code> control data and legacy ED2K state formats are not imported into the new state stores.</li> <li>Legacy CLI, configuration, RPC, and libaria2 inputs are normalized at the boundary, while runtime behavior follows the new engines.</li> <li>Integrators should validate download, pause, resume, sharing, and state-restoration workflows before broad deployment.</li> </ul> <h2>Summary</h2> <p>Aria2 Next 2.6.0 replaces major handwritten transfer backends with mature libraries, modernizes persistent task state, and removes a large amount of obsolete networking and compatibility code.</p> <p>HTTP, HTTPS, SFTP, and Metalink payload transfers now use libcurl. BitTorrent is powered by libtorrent-rasterbar. HTTP/2 uses nghttp2. ED2K transfer state now uses SQLite. New tasks no longer scatter <code>.aria2</code> control files beside downloaded content.</p> <p>The release provides standalone builds for Linux, macOS, Windows, and Android.</p> <h3>Added</h3> <ul> <li>Added the libcurl multi-socket transfer engine for HTTP, HTTPS, SFTP, and Metalink payloads.</li> <li>Added HTTP/2 support through nghttp2.</li> <li>Added SQLite-backed stream state with completed-range persistence.</li> <li>Added SQLite-backed ED2K task, progress, source, credit, and network state.</li> <li>Added persistent ED2K <code>sharingTime</code> reporting through RPC.</li> <li>Added ED2K connection limits and improved lifecycle restoration.</li> <li>Added a centralized legacy input adapter for CLI, configuration, session, RPC, and libaria2 inputs.</li> <li>Added platform-native application state directory discovery.</li> </ul> <h3>Changed</h3> <ul> <li>Replaced the handwritten HTTP and SFTP command pipelines with libcurl.</li> <li>Replaced the native BitTorrent engine with libtorrent-rasterbar and its mature discovery, scheduling, disk, resume, and peer-management facilities.</li> <li>Routed Windows HTTPS through libcurl with the native Schannel backend.</li> <li>Kept secure RPC transport on OpenSSL.</li> <li>Moved stream, BitTorrent, and ED2K runtime state below <code>state-dir</code>.</li> <li>Unified speed calculation and progress reporting across transfer engines.</li> <li>Made ED2K <code>seed-time</code> use persistent cumulative sharing time across pauses and restarts.</li> <li>Vendored the required libcurl and nghttp2 sources for reproducible offline builds.</li> <li>Removed obsolete authentication, cookie, connection, proxy, FTP, HTTP, SFTP, TLS, progress-control, and compatibility implementations.</li> </ul> <h3>Fixed</h3> <ul> <li>Fixed the Windows TLS 1.3 receive failure caused by the retired handwritten WinTLS state machine.</li> <li>Fixed incomplete stream resume state by persisting verified completed ranges.</li> <li>Fixed ED2K completion, pause, restart, sharing, and deletion state handling.</li> <li>Fixed ED2K sharing time resetting after pause or process restart.</li> <li>Fixed inconsistent option handling across CLI, configuration, RPC, and libaria2 entry points.</li> <li>Fixed patch-zero version generation for the <code>2.6.0</code> build.</li> <li>Fixed Android release compilation by using the native 64-bit stdio seek interface.</li> <li>Fixed macOS release reproducibility by applying source-path remapping to Objective-C++ compilation.</li> </ul> <h3>Downloads</h3> <table> <thead> <tr> <th>Platform</th> <th>Download</th> </tr> </thead> <tbody> <tr> <td>Linux x86_64</td> <td><code>aria2-next-2.6.0-linux-x86_64</code></td> </tr> <tr> <td>Linux ARM64</td> <td><code>aria2-next-2.6.0-linux-aarch64</code></td> </tr> <tr> <td>macOS Apple Silicon</td> <td><code>aria2-next-2.6.0-macos-arm64</code></td> </tr> <tr> <td>macOS Intel</td> <td><code>aria2-next-2.6.0-macos-x86_64</code></td> </tr> <tr> <td>Windows x86_64</td> <td><code>aria2-next-2.6.0-windows-x86_64.exe</code></td> </tr> <tr> <td>Windows ARM64</td> <td><code>aria2-next-2.6.0-windows-arm64.exe</code></td> </tr> <tr> <td>Android ARM64</td> <td><code>aria2-next-2.6.0-android-arm64</code></td> </tr> <tr> <td>Checksums</td> <td><code>aria2-next-2.6.0-checksums.sha256</code></td> </tr> </tbody> </table> AnInsomniacy tag:github.com,2008:Repository/1062632280/v0.8.4 2026-08-25T07:55:27Z megatoy: v0.8.4 <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/ulalume/megatoy/compare/v0.8.3...v0.8.4"><tt>v0.8.3...v0.8.4</tt></a></p> github-actions[bot] tag:github.com,2008:Repository/1061247040/v0.6.4 2026-08-25T00:20:38Z rsync: v0.6.4 <h2>oc-rsync 0.6.4</h2> <p>Wire-compatible with upstream rsync 3.4.4 (protocol 32).</p> <h3>Install</h3> <p><strong>Homebrew:</strong></p> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="brew install oferchen/rsync/oc-rsync"><pre>brew install oferchen/rsync/oc-rsync</pre></div> <p><strong>Binary:</strong> Download the asset for your platform below.</p> <table> <thead> <tr> <th>Platform</th> <th>Formats</th> </tr> </thead> <tbody> <tr> <td>Linux (x86_64, aarch64)</td> <td><code>.deb</code>, <code>.rpm</code> (with OpenSSL), static musl <code>.tar.gz</code>, <code>*-openssl.tar.gz</code></td> </tr> <tr> <td>macOS (x86_64, aarch64)</td> <td><code>.tar.gz</code></td> </tr> <tr> <td>Windows (x86_64)</td> <td><code>.tar.gz</code>, <code>.zip</code></td> </tr> </tbody> </table> <p>Linux static tarballs: <code>*-musl.tar.gz</code> (pure Rust) or <code>*-musl-openssl.tar.gz</code> (OpenSSL-accelerated checksums).</p> <h3>Toolchain variants</h3> <p>Each release ships three Rust-toolchain variants of every binary:</p> <table> <thead> <tr> <th>Suffix</th> <th>Rust toolchain</th> <th>Recommended use</th> </tr> </thead> <tbody> <tr> <td><em>(none)</em></td> <td>stable</td> <td>Default. Use this.</td> </tr> <tr> <td><code>-beta</code></td> <td>Rust beta</td> <td>Early adopters validating the next Rust release.</td> </tr> <tr> <td><code>-nightly</code></td> <td>Rust nightly</td> <td>Performance experiments and unstable-feature testing.</td> </tr> </tbody> </table> <p>The <code>-beta</code> / <code>-nightly</code> suffix denotes the <strong>Rust toolchain</strong> the artifact was built with - it is <strong>not</strong> an indicator of oc-rsync's own release maturity (that is set in the release title and <code>README.md</code>).</p> <hr> <h3>Highlights</h3> <p><strong>Daemon features.</strong> </p> <p><strong>Transfer options.</strong> </p> <p><strong>Performance.</strong> </p> <p><strong>Bug fixes.</strong> </p> <p><strong>Testing.</strong> </p> <hr> <h3>Security</h3> <p>See <code>SECURITY.md</code> for the canonical mitigation roster and <code>docs/design/sec-1-completion-summary-2026-05-22.md</code> for the SEC-1 sub-task (<code>.a</code>-<code>.p</code>) ship state.</p> <p><strong>Active mitigations</strong></p> <table> <thead> <tr> <th>CVE</th> <th>Description</th> <th>Status</th> <th>Cite</th> </tr> </thead> <tbody> <tr> <td><a title="CVE-2026-29518" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-pfv9-gp3h-73xv/hovercard" href="https://github.com/advisories/GHSA-pfv9-gp3h-73xv">CVE-2026-29518</a></td> <td>Path traversal via symlink race</td> <td>Fixed</td> <td>SEC-1.a-q2, <code>SECURITY.md</code></td> </tr> <tr> <td><a title="CVE-2026-43619" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-pwrq-5rj3-c43m/hovercard" href="https://github.com/advisories/GHSA-pwrq-5rj3-c43m">CVE-2026-43619</a></td> <td>Privilege escalation via TOCTOU</td> <td>Fixed</td> <td>SEC-1.a-q2, <code>SECURITY.md</code></td> </tr> </tbody> </table> <p><strong>Defense-in-depth.</strong> This release ships the SEC-1 <code>*at</code> syscall chain (<code>fstatat</code>, <code>unlinkat</code>, <code>mkdirat</code>, <code>symlinkat</code>, <code>linkat</code>, <code>fchmodat</code>, <code>fchownat</code>, <code>utimensat</code>, <code>renameat</code>) routed through a per-transfer <code>DirSandbox</code> carrier with <code>openat2(RESOLVE_BENEATH | RESOLVE_NO_SYMLINKS)</code> runtime detection. The optional <code>landlock</code> Cargo feature (Linux 5.13+) layers kernel-enforced <code>PathBeneath</code> allowlisting on top; daemons on older kernels run with the <code>*at</code> chain as the sole TOCTOU defense, which is itself sufficient against <a title="CVE-2026-29518" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-pfv9-gp3h-73xv/hovercard" href="https://github.com/advisories/GHSA-pfv9-gp3h-73xv">CVE-2026-29518</a> / <a title="CVE-2026-43619" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-pwrq-5rj3-c43m/hovercard" href="https://github.com/advisories/GHSA-pwrq-5rj3-c43m">CVE-2026-43619</a>.</p> <h3>Platform support tiers</h3> <table> <thead> <tr> <th>Platform</th> <th>Tier</th> <th>Notes</th> </tr> </thead> <tbody> <tr> <td>Linux x86_64 / aarch64</td> <td><strong>Tier 1</strong></td> <td>Full <code>io_uring</code> + <code>splice</code> + <code>vmsplice</code> + Landlock + seccomp. Every required CI cell runs the full nextest workspace.</td> </tr> <tr> <td>macOS x86_64 / aarch64</td> <td><strong>Tier 1</strong></td> <td><code>kqueue</code> + <code>sendfile</code> + <code>clonefile</code>. Every required CI cell runs the full nextest workspace.</td> </tr> <tr> <td>Windows x86_64</td> <td><strong>Tier 2</strong></td> <td>IOCP file and socket I/O, <code>TransmitFile</code>, ReFS reflink, <code>CopyFileExW</code>. <code>splice</code> / <code>vmsplice</code> / <code>io_uring</code> are Linux-only and intentionally not implemented; the IOCP receive path is faster than the upstream Cygwin <code>read</code>/<code>write</code> fallback. Required CI cells test the <code>core</code>, <code>engine</code>, and <code>cli</code> crates. See <a href="https://github.com/oferchen/rsync/blob/master/docs/user/windows-support-matrix.md">Windows support matrix</a> and the <a href="https://github.com/oferchen/rsync/blob/master/docs/audits/win-tier2-stub-inventory.md">Windows Tier 2 stub inventory</a>.</td> </tr> </tbody> </table> <p>Tier 2 is a deliberate choice (no Win32 equivalent for <code>splice</code> / <code>vmsplice</code> / <code>io_uring</code>), not a defect. The IOCP backend matches or beats the upstream Cygwin baseline on the same workload.</p> <h3>Kernel / platform compatibility</h3> <table> <thead> <tr> <th>Layer</th> <th>Minimum</th> <th>Notes</th> </tr> </thead> <tbody> <tr> <td>io_uring data path</td> <td>Linux 5.6+</td> <td>Runtime-probed; falls back to standard buffered I/O.</td> </tr> <tr> <td>Provided buffer rings (PBUF_RING)</td> <td>Linux 5.19+</td> <td>Runtime-probed; falls back to standard buffered I/O.</td> </tr> <tr> <td>Landlock LSM (<code>landlock</code> feature)</td> <td>Linux 5.13+</td> <td>Best-effort ABI downgrade; no-op on older kernels.</td> </tr> <tr> <td><code>IORING_OP_SEND_ZC</code> (<code>iouring-send-zc</code> feature)</td> <td>Linux 6.0+ recommended</td> <td>Opt-in; default builds use plain <code>IORING_OP_SEND</code>.</td> </tr> <tr> <td>macOS <code>*at</code> chain</td> <td>macOS 10.10+</td> <td>BSD <code>*at</code> family verified at parity with Linux (SEC-1.k).</td> </tr> <tr> <td>Windows IOCP</td> <td>Windows 10 1809+</td> <td>NTFS handle-based APIs sidestep path TOCTOU structurally (SEC-1.l).</td> </tr> </tbody> </table> <p>Distro packagers: see <code>docs/packaging/landlock-feature-guidance.md</code> for the per-distro <code>--features landlock</code> recommendation, runtime ABI matrix, and build-time dependency notes.</p> <h3>Linux io_uring requirements</h3> <p>oc-rsync uses Linux io_uring for high-throughput I/O on supported kernels. The minimum supported kernel for the io_uring path is <strong>Linux 5.6</strong>; older kernels (including RHEL 8 / CentOS Stream 8 at 4.18) fall back to standard <code>read(2)</code> / <code>write(2)</code> automatically - no user action required.</p> <p>For the full performance tier (zero-copy <code>SEND_ZC</code>), Linux <strong>6.0 or newer</strong> is required AND the binary must be built with the <code>iouring-send-zc</code> cargo feature enabled. Default release builds advertise <code>--zero-copy</code> but downgrade to non-zero-copy <code>SEND</code> silently on older kernels or builds without the feature.</p> <p>Full per-opcode kernel-floor matrix: see <code>docs/audit/iouring-opcode-kernel-floor.md</code>.</p> <h3>Supported rsync protocol versions</h3> <p>oc-rsync continues to support protocol versions 28-32 inclusive, matching upstream rsync 2.6.x through 3.4.x. Protocol back-negotiation to 28 is exercised by wire-byte regression tests and a periodic CI matrix against rsync 2.6.9 (built from source). Protocols <code>&lt;= 27</code> (rsync 2.5.x and earlier) remain unsupported. See <code>docs/design/rp28-k-1-protocol-drop-vs-keep-decision.md</code> for the decision rationale and <code>docs/design/rp28-k-2-execution-record.md</code> for the execution record.</p> <hr> <p><strong>Full changelog:</strong> <a class="commit-link" href="https://github.com/oferchen/rsync/compare/%7B%7BPREV_VERSION%7D%7D...0.6.4"><tt>{{PREV_VERSION}}...0.6.4</tt></a></p> <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/oferchen/rsync/compare/v0.6.3...v0.6.4"><tt>v0.6.3...v0.6.4</tt></a></p> github-actions[bot] tag:github.com,2008:Repository/1061247040/v0.6.2 2026-08-25T00:08:00Z rsync: v0.6.2 <h2>oc-rsync 0.6.2</h2> <p>Wire-compatible with upstream rsync 3.4.1 (protocol 32).</p> <h3>Install</h3> <p><strong>Homebrew:</strong></p> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="brew install oferchen/rsync/oc-rsync"><pre>brew install oferchen/rsync/oc-rsync</pre></div> <p><strong>Binary:</strong> Download the asset for your platform below.</p> <table> <thead> <tr> <th>Platform</th> <th>Formats</th> </tr> </thead> <tbody> <tr> <td>Linux (x86_64, aarch64)</td> <td><code>.deb</code>, <code>.rpm</code> (with OpenSSL), static musl <code>.tar.gz</code>, <code>*-openssl.tar.gz</code></td> </tr> <tr> <td>macOS (x86_64, aarch64)</td> <td><code>.tar.gz</code></td> </tr> <tr> <td>Windows (x86_64)</td> <td><code>.tar.gz</code>, <code>.zip</code></td> </tr> </tbody> </table> <p>Linux static tarballs: <code>*-musl.tar.gz</code> (pure Rust) or <code>*-musl-openssl.tar.gz</code> (OpenSSL-accelerated checksums).</p> <h3>Toolchain variants</h3> <p>Each release ships three Rust-toolchain variants of every binary:</p> <table> <thead> <tr> <th>Suffix</th> <th>Rust toolchain</th> <th>Recommended use</th> </tr> </thead> <tbody> <tr> <td><em>(none)</em></td> <td>stable</td> <td>Default. Use this.</td> </tr> <tr> <td><code>-beta</code></td> <td>Rust beta</td> <td>Early adopters validating the next Rust release.</td> </tr> <tr> <td><code>-nightly</code></td> <td>Rust nightly</td> <td>Performance experiments and unstable-feature testing.</td> </tr> </tbody> </table> <p>The <code>-beta</code> / <code>-nightly</code> suffix denotes the <strong>Rust toolchain</strong> the artifact was built with - it is <strong>not</strong> an indicator of oc-rsync's own release maturity (that is set in the release title and <code>README.md</code>).</p> <hr> <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/oferchen/rsync/compare/v0.6.1...v0.6.2"><tt>v0.6.1...v0.6.2</tt></a></p> oferchen tag:github.com,2008:Repository/1061247040/v0.6.3 2026-08-25T00:06:42Z rsync: v0.6.3 <h2>oc-rsync 0.6.3</h2> <p>Wire-compatible with upstream rsync 3.4.1 (protocol 32).</p> <h3>Install</h3> <p><strong>Homebrew:</strong></p> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="brew install oferchen/rsync/oc-rsync"><pre>brew install oferchen/rsync/oc-rsync</pre></div> <p><strong>Binary:</strong> Download the asset for your platform below.</p> <table> <thead> <tr> <th>Platform</th> <th>Formats</th> </tr> </thead> <tbody> <tr> <td>Linux (x86_64, aarch64)</td> <td><code>.deb</code>, <code>.rpm</code> (with OpenSSL), static musl <code>.tar.gz</code>, <code>*-openssl.tar.gz</code></td> </tr> <tr> <td>macOS (x86_64, aarch64)</td> <td><code>.tar.gz</code></td> </tr> <tr> <td>Windows (x86_64)</td> <td><code>.tar.gz</code>, <code>.zip</code></td> </tr> </tbody> </table> <p>Linux static tarballs: <code>*-musl.tar.gz</code> (pure Rust) or <code>*-musl-openssl.tar.gz</code> (OpenSSL-accelerated checksums).</p> <h3>Toolchain variants</h3> <p>Each release ships three Rust-toolchain variants of every binary:</p> <table> <thead> <tr> <th>Suffix</th> <th>Rust toolchain</th> <th>Recommended use</th> </tr> </thead> <tbody> <tr> <td><em>(none)</em></td> <td>stable</td> <td>Default. Use this.</td> </tr> <tr> <td><code>-beta</code></td> <td>Rust beta</td> <td>Early adopters validating the next Rust release.</td> </tr> <tr> <td><code>-nightly</code></td> <td>Rust nightly</td> <td>Performance experiments and unstable-feature testing.</td> </tr> </tbody> </table> <p>The <code>-beta</code> / <code>-nightly</code> suffix denotes the <strong>Rust toolchain</strong> the artifact was built with - it is <strong>not</strong> an indicator of oc-rsync's own release maturity (that is set in the release title and <code>README.md</code>).</p> <hr> <h3>Security</h3> <p>See <code>SECURITY.md</code> for the canonical mitigation roster and <code>docs/design/sec-1-completion-summary-2026-05-22.md</code> for the SEC-1 sub-task (<code>.a</code>-<code>.p</code>) ship state. Release authors: copy the rows that changed this cycle from the <code>SECURITY.md</code> CVE table into the placeholder below; drop unaffected rows.</p> <p><strong>Active mitigations</strong></p> <table> <thead> <tr> <th>CVE</th> <th>Description</th> <th>Status</th> <th>Cite</th> </tr> </thead> <tbody> <tr> <td>CVE-XXXX-XXXXX</td> <td><em>short upstream description</em></td> <td><em>Fixed / Mostly fixed / Mitigated / Not vulnerable</em></td> <td>PR #NNNN, <code>SECURITY.md</code></td> </tr> </tbody> </table> <p>Status values mirror <code>SECURITY.md</code> ("Fixed", "Mostly fixed", "Mitigated", "Not vulnerable"). Use "Mostly fixed" when the primary syscall surface is migrated but deferred callers are tracked separately.</p> <p><strong>Defense-in-depth.</strong> This release ships the SEC-1 <code>*at</code> syscall chain (<code>fstatat</code>, <code>unlinkat</code>, <code>mkdirat</code>, <code>symlinkat</code>, <code>linkat</code>, <code>fchmodat</code>, <code>fchownat</code>, <code>utimensat</code>, <code>renameat</code>) routed through a per-transfer <code>DirSandbox</code> carrier with <code>openat2(RESOLVE_BENEATH | RESOLVE_NO_SYMLINKS)</code> runtime detection. The optional <code>landlock</code> Cargo feature (Linux 5.13+) layers kernel-enforced <code>PathBeneath</code> allowlisting on top; daemons on older kernels run with the <code>*at</code> chain as the sole TOCTOU defense, which is itself sufficient against <a title="CVE-2026-29518" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-pfv9-gp3h-73xv/hovercard" href="https://github.com/advisories/GHSA-pfv9-gp3h-73xv">CVE-2026-29518</a> / <a title="CVE-2026-43619" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-pwrq-5rj3-c43m/hovercard" href="https://github.com/advisories/GHSA-pwrq-5rj3-c43m">CVE-2026-43619</a>.</p> <h3>Kernel / platform compatibility</h3> <table> <thead> <tr> <th>Layer</th> <th>Minimum</th> <th>Notes</th> </tr> </thead> <tbody> <tr> <td>io_uring data path</td> <td>Linux 5.6+</td> <td>Runtime-probed; falls back to standard buffered I/O.</td> </tr> <tr> <td>Provided buffer rings (PBUF_RING)</td> <td>Linux 5.19+</td> <td>Runtime-probed; falls back to standard buffered I/O.</td> </tr> <tr> <td>Landlock LSM (<code>landlock</code> feature)</td> <td>Linux 5.13+</td> <td>Best-effort ABI downgrade; no-op on older kernels.</td> </tr> <tr> <td><code>IORING_OP_SEND_ZC</code> (<code>iouring-send-zc</code> feature)</td> <td>Linux 6.0+ recommended</td> <td>Opt-in; default builds use plain <code>IORING_OP_SEND</code>.</td> </tr> <tr> <td>macOS <code>*at</code> chain</td> <td>macOS 10.10+</td> <td>BSD <code>*at</code> family verified at parity with Linux (SEC-1.k).</td> </tr> <tr> <td>Windows IOCP</td> <td>Windows 10 1809+</td> <td>NTFS handle-based APIs sidestep path TOCTOU structurally (SEC-1.l).</td> </tr> </tbody> </table> <p>Distro packagers: see <code>docs/packaging/landlock-feature-guidance.md</code> for the per-distro <code>--features landlock</code> recommendation, runtime ABI matrix, and build-time dependency notes.</p> <h3>Linux io_uring requirements</h3> <p>oc-rsync uses Linux io_uring for high-throughput I/O on supported kernels. The minimum supported kernel for the io_uring path is <strong>Linux 5.6</strong>; older kernels (including RHEL 8 / CentOS Stream 8 at 4.18) fall back to standard <code>read(2)</code> / <code>write(2)</code> automatically - no user action required.</p> <p>For the full performance tier (zero-copy <code>SEND_ZC</code>), Linux <strong>6.0 or newer</strong> is required AND the binary must be built with the <code>iouring-send-zc</code> cargo feature enabled. Default release builds advertise <code>--zero-copy</code> but downgrade to non-zero-copy <code>SEND</code> silently on older kernels or builds without the feature.</p> <p>Full per-opcode kernel-floor matrix: see <code>docs/audit/iouring-opcode-kernel-floor.md</code>.</p> <h3>Supported rsync protocol versions</h3> <p>oc-rsync continues to support protocol versions 28-32 inclusive, matching upstream rsync 2.6.x through 3.4.x. Protocol back-negotiation to 28 is exercised by wire-byte regression tests and a periodic CI matrix against rsync 2.6.9 (built from source). Protocols <code>&lt;= 27</code> (rsync 2.5.x and earlier) remain unsupported. See <code>docs/design/rp28-k-1-protocol-drop-vs-keep-decision.md</code> for the decision rationale and <code>docs/design/rp28-k-2-execution-record.md</code> for the execution record.</p> <hr> <p><strong>Full Changelog</strong>: <a href="https://github.com/oferchen/rsync/commits/v0.6.3">https://github.com/oferchen/rsync/commits/v0.6.3</a></p> oferchen tag:github.com,2008:Repository/341787720/latest-commit 2026-08-24T20:56:52Z diffutils: latest-commit <p>commit: <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/uutils/diffutils/commit/cbc5298f0d59a2019baab9197bb0500ba17d9252/hovercard" href="https://github.com/uutils/diffutils/commit/cbc5298f0d59a2019baab9197bb0500ba17d9252"><tt>cbc5298</tt></a></p> github-actions[bot] tag:github.com,2008:Repository/1062632280/v0.8.3 2026-08-24T16:51:15Z megatoy: v0.8.3 <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/ulalume/megatoy/compare/v0.8.2...v0.8.3"><tt>v0.8.2...v0.8.3</tt></a></p> github-actions[bot] tag:github.com,2008:Repository/578822531/v1.18.2 2026-08-24T14:42:59Z localsend: v1.18.2 <p>This release fixes compatibility issues with 1.17.0 and earlier.<br> Unfortunately, the Windows EXE installer is not published yet (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5114614052" data-permission-text="Title is private" data-url="https://github.com/localsend/localsend/issues/3270" data-hovercard-type="issue" data-hovercard-url="/localsend/localsend/issues/3270/hovercard" href="https://github.com/localsend/localsend/issues/3270">#3270</a>).</p> <ul> <li>feat: drag and drop files into the "Receive via link" browser page</li> <li>feat(desktop): allow customizing the web share pages by placing HTML files in a <code>web</code> folder next to the executable</li> <li>feat(cli): add version info to the Windows executable</li> <li>feat(linux): set actual version in the AppImage</li> <li>security: do not follow HTTP redirects sent by peers</li> <li>fix: restore compatibility with 1.17.0 and earlier versions on missing multicast networks</li> <li>fix: devices running 1.17.0 and earlier could not add 1.18.0+ device as favorite</li> <li>fix: ignore proxies, fixes "TLS info not found" when a system proxy (e.g. Shadowrocket) is enabled</li> <li>fix: automatically restart the HTTP / multicast server when it dies or when the app resumes</li> <li>fix: drag and drop with a mix of folders and files</li> <li>fix: during transfer, add bottom padding when Advanced is open (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Chethan616/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Chethan616">@Chethan616</a>)</li> <li>fix: do not crash at startup when the executable path cannot be resolved (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Shlomo116/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Shlomo116">@Shlomo116</a>)</li> <li>fix(android): ignore unknown or invalid file modification times when reading files</li> <li>i18n: add Armenian</li> </ul> github-actions[bot] tag:github.com,2008:Repository/1096895/v3.05 2026-08-24T13:13:24Z qaac: v3.05 <p>Fixed <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5234643450" data-permission-text="Title is private" data-url="https://github.com/nu774/qaac/issues/133" data-hovercard-type="issue" data-hovercard-url="/nu774/qaac/issues/133/hovercard" href="https://github.com/nu774/qaac/issues/133">#133</a> .<br> Sample rate &gt; 65535 was not working on the new mmtisobmff based multiplexer.</p> nu774 tag:github.com,2008:Repository/381546263/nightly 2026-08-24T12:09:53Z ares: nightly 2026-08-24 <p>Merge commit '8a22cd8096c8ce366cccd44813b6210c2160ff29'</p> github-actions[bot] tag:github.com,2008:Repository/599431918/oxlint_v1.80.0 2026-08-24T11:33:15Z oxc: oxlint_v1.80.0: release(apps): oxlint v1.80.0 && oxfmt v0.65.0 (#26045) <h1>Oxlint</h1> <h3>๐Ÿš€ Features</h3> <ul> <li>70c3e35 linter/typescript/no-confusing-non-null-assertion: Implement suggestion (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5226634758" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/26012" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/26012/hovercard" href="https://github.com/oxc-project/oxc/pull/26012">#26012</a>) (Mikhail Baev)</li> </ul> <h3>๐Ÿ› Bug Fixes</h3> <ul> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/8a353a76e99c543a90095cda21facce1f687969f/hovercard" href="https://github.com/oxc-project/oxc/commit/8a353a76e99c543a90095cda21facce1f687969f"><tt>8a353a7</tt></a> linter/eslint/no-control-regex: Refine help message text (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5221569068" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25996" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25996/hovercard" href="https://github.com/oxc-project/oxc/pull/25996">#25996</a>) (Rahul Mishra)</li> <li>8a9bdbd estree: Include decorators in <code>FormalParameterRest </code> spans (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5227954483" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/26021" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/26021/hovercard" href="https://github.com/oxc-project/oxc/pull/26021">#26021</a>) (camc314)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/8d94cd16353e0f4928e932838f46cb02ac8a4cc0/hovercard" href="https://github.com/oxc-project/oxc/commit/8d94cd16353e0f4928e932838f46cb02ac8a4cc0"><tt>8d94cd1</tt></a> linter/eslint/no-useless-rename: Preserve type modifiers (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5227937678" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/26020" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/26020/hovercard" href="https://github.com/oxc-project/oxc/pull/26020">#26020</a>) (Cameron)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/2cde1f667174aa49c8d482b0ab443f25eb334c12/hovercard" href="https://github.com/oxc-project/oxc/commit/2cde1f667174aa49c8d482b0ab443f25eb334c12"><tt>2cde1f6</tt></a> rust: Address nightly deprecations (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5221664629" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25998" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25998/hovercard" href="https://github.com/oxc-project/oxc/pull/25998">#25998</a>) (Boshen)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/51d36d72283d516a29c63259dcb84af2a161cef2/hovercard" href="https://github.com/oxc-project/oxc/commit/51d36d72283d516a29c63259dcb84af2a161cef2"><tt>51d36d7</tt></a> linter/vue: Resolve <code>vue</code> imports via shared import helpers (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5188375149" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25903" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25903/hovercard" href="https://github.com/oxc-project/oxc/pull/25903">#25903</a>) (Connor Shea)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/83a68d2296d488bee7fd5cb7db3bc3566afd6c70/hovercard" href="https://github.com/oxc-project/oxc/commit/83a68d2296d488bee7fd5cb7db3bc3566afd6c70"><tt>83a68d2</tt></a> linter/react/no-react-children: Resolve <code>react</code> imports by symbol (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5188241485" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25901" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25901/hovercard" href="https://github.com/oxc-project/oxc/pull/25901">#25901</a>) (Connor Shea)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/124e1965517d144cbc45333f230f2d80bacf7ff8/hovercard" href="https://github.com/oxc-project/oxc/commit/124e1965517d144cbc45333f230f2d80bacf7ff8"><tt>124e196</tt></a> linter: Resolve globals by reference, not by name (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5188514449" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25905" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25905/hovercard" href="https://github.com/oxc-project/oxc/pull/25905">#25905</a>) (Connor Shea)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/a701bccac9d478fd347fdf1effca2ada6cebfe0f/hovercard" href="https://github.com/oxc-project/oxc/commit/a701bccac9d478fd347fdf1effca2ada6cebfe0f"><tt>a701bcc</tt></a> linter: Remove invalid React compiler doc links (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5188215049" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25900" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25900/hovercard" href="https://github.com/oxc-project/oxc/pull/25900">#25900</a>) (Boshen)</li> </ul> <h3>๐Ÿ“š Documentation</h3> <ul> <li>9b7e153 linter: Set <code>version</code> to 1.79.0 for rules shipped in 1.79.0 (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5188278265" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25902" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25902/hovercard" href="https://github.com/oxc-project/oxc/pull/25902">#25902</a>) (connorshea)</li> </ul> <h1>Oxfmt</h1> <h3>๐Ÿ› Bug Fixes</h3> <ul> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/bf37dd5c438c23b98fafed103471239c47b6331b/hovercard" href="https://github.com/oxc-project/oxc/commit/bf37dd5c438c23b98fafed103471239c47b6331b"><tt>bf37dd5</tt></a> formatter: Preserve class decorators before export when the statement is suppressed (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5231315871" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/26034" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/26034/hovercard" href="https://github.com/oxc-project/oxc/pull/26034">#26034</a>) (leaysgur)</li> </ul> oxc-guard[bot] tag:github.com,2008:Repository/599431918/oxfmt_v0.65.0 2026-08-24T11:33:15Z oxc: oxfmt_v0.65.0: release(apps): oxlint v1.80.0 && oxfmt v0.65.0 (#26045) <h1>Oxlint</h1> <h3>๐Ÿš€ Features</h3> <ul> <li>70c3e35 linter/typescript/no-confusing-non-null-assertion: Implement suggestion (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5226634758" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/26012" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/26012/hovercard" href="https://github.com/oxc-project/oxc/pull/26012">#26012</a>) (Mikhail Baev)</li> </ul> <h3>๐Ÿ› Bug Fixes</h3> <ul> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/8a353a76e99c543a90095cda21facce1f687969f/hovercard" href="https://github.com/oxc-project/oxc/commit/8a353a76e99c543a90095cda21facce1f687969f"><tt>8a353a7</tt></a> linter/eslint/no-control-regex: Refine help message text (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5221569068" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25996" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25996/hovercard" href="https://github.com/oxc-project/oxc/pull/25996">#25996</a>) (Rahul Mishra)</li> <li>8a9bdbd estree: Include decorators in <code>FormalParameterRest </code> spans (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5227954483" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/26021" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/26021/hovercard" href="https://github.com/oxc-project/oxc/pull/26021">#26021</a>) (camc314)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/8d94cd16353e0f4928e932838f46cb02ac8a4cc0/hovercard" href="https://github.com/oxc-project/oxc/commit/8d94cd16353e0f4928e932838f46cb02ac8a4cc0"><tt>8d94cd1</tt></a> linter/eslint/no-useless-rename: Preserve type modifiers (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5227937678" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/26020" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/26020/hovercard" href="https://github.com/oxc-project/oxc/pull/26020">#26020</a>) (Cameron)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/2cde1f667174aa49c8d482b0ab443f25eb334c12/hovercard" href="https://github.com/oxc-project/oxc/commit/2cde1f667174aa49c8d482b0ab443f25eb334c12"><tt>2cde1f6</tt></a> rust: Address nightly deprecations (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5221664629" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25998" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25998/hovercard" href="https://github.com/oxc-project/oxc/pull/25998">#25998</a>) (Boshen)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/51d36d72283d516a29c63259dcb84af2a161cef2/hovercard" href="https://github.com/oxc-project/oxc/commit/51d36d72283d516a29c63259dcb84af2a161cef2"><tt>51d36d7</tt></a> linter/vue: Resolve <code>vue</code> imports via shared import helpers (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5188375149" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25903" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25903/hovercard" href="https://github.com/oxc-project/oxc/pull/25903">#25903</a>) (Connor Shea)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/83a68d2296d488bee7fd5cb7db3bc3566afd6c70/hovercard" href="https://github.com/oxc-project/oxc/commit/83a68d2296d488bee7fd5cb7db3bc3566afd6c70"><tt>83a68d2</tt></a> linter/react/no-react-children: Resolve <code>react</code> imports by symbol (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5188241485" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25901" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25901/hovercard" href="https://github.com/oxc-project/oxc/pull/25901">#25901</a>) (Connor Shea)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/124e1965517d144cbc45333f230f2d80bacf7ff8/hovercard" href="https://github.com/oxc-project/oxc/commit/124e1965517d144cbc45333f230f2d80bacf7ff8"><tt>124e196</tt></a> linter: Resolve globals by reference, not by name (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5188514449" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25905" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25905/hovercard" href="https://github.com/oxc-project/oxc/pull/25905">#25905</a>) (Connor Shea)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/a701bccac9d478fd347fdf1effca2ada6cebfe0f/hovercard" href="https://github.com/oxc-project/oxc/commit/a701bccac9d478fd347fdf1effca2ada6cebfe0f"><tt>a701bcc</tt></a> linter: Remove invalid React compiler doc links (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5188215049" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25900" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25900/hovercard" href="https://github.com/oxc-project/oxc/pull/25900">#25900</a>) (Boshen)</li> </ul> <h3>๐Ÿ“š Documentation</h3> <ul> <li>9b7e153 linter: Set <code>version</code> to 1.79.0 for rules shipped in 1.79.0 (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5188278265" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25902" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25902/hovercard" href="https://github.com/oxc-project/oxc/pull/25902">#25902</a>) (connorshea)</li> </ul> <h1>Oxfmt</h1> <h3>๐Ÿ› Bug Fixes</h3> <ul> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/bf37dd5c438c23b98fafed103471239c47b6331b/hovercard" href="https://github.com/oxc-project/oxc/commit/bf37dd5c438c23b98fafed103471239c47b6331b"><tt>bf37dd5</tt></a> formatter: Preserve class decorators before export when the statement is suppressed (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5231315871" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/26034" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/26034/hovercard" href="https://github.com/oxc-project/oxc/pull/26034">#26034</a>) (leaysgur)</li> </ul> oxc-guard[bot] tag:github.com,2008:Repository/599431918/crates_v0.147.0 2026-08-24T11:31:39Z oxc: crates_v0.147.0 <h3>๐Ÿš€ Features</h3> <ul> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/b6e9e5efdab2ae76f6828b9f633e1b2d936a7971/hovercard" href="https://github.com/oxc-project/oxc/commit/b6e9e5efdab2ae76f6828b9f633e1b2d936a7971"><tt>b6e9e5e</tt></a> minifier: Fold switch stmt whose parent is not block stmt (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5097768509" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25403" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25403/hovercard" href="https://github.com/oxc-project/oxc/pull/25403">#25403</a>) (Armano)</li> </ul> <h3>๐Ÿ› Bug Fixes</h3> <ul> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/8db105342fb28c924dac7f4a54ff8f71b7c68197/hovercard" href="https://github.com/oxc-project/oxc/commit/8db105342fb28c924dac7f4a54ff8f71b7c68197"><tt>8db1053</tt></a> codegen: Require sourcemap for example (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5233345617" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/26047" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/26047/hovercard" href="https://github.com/oxc-project/oxc/pull/26047">#26047</a>) (camc314)</li> <li>8a9bdbd estree: Include decorators in <code>FormalParameterRest </code> spans (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5227954483" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/26021" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/26021/hovercard" href="https://github.com/oxc-project/oxc/pull/26021">#26021</a>) (camc314)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/6f0c7cf31bb5e26cdd888ddce42c20a59cc9f66b/hovercard" href="https://github.com/oxc-project/oxc/commit/6f0c7cf31bb5e26cdd888ddce42c20a59cc9f66b"><tt>6f0c7cf</tt></a> minifier: Avoid merging <code>if</code> to <code>for</code> in sloppy mode when containing function declaration (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5147877646" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25638" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25638/hovercard" href="https://github.com/oxc-project/oxc/pull/25638">#25638</a>) (sapphi-red)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/2cde1f667174aa49c8d482b0ab443f25eb334c12/hovercard" href="https://github.com/oxc-project/oxc/commit/2cde1f667174aa49c8d482b0ab443f25eb334c12"><tt>2cde1f6</tt></a> rust: Address nightly deprecations (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5221664629" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25998" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25998/hovercard" href="https://github.com/oxc-project/oxc/pull/25998">#25998</a>) (Boshen)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/6c5ad1b7232be75fb6ef718b2696fc7055cd1388/hovercard" href="https://github.com/oxc-project/oxc/commit/6c5ad1b7232be75fb6ef718b2696fc7055cd1388"><tt>6c5ad1b</tt></a> codegen: Only add mapping names for <code>PrivateIdentifier</code>s which have changed (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5214430578" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25958" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25958/hovercard" href="https://github.com/oxc-project/oxc/pull/25958">#25958</a>) (overlookmotel)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/2dad1e0ec7ba2878fc5472c9430b8ee28aa41b54/hovercard" href="https://github.com/oxc-project/oxc/commit/2dad1e0ec7ba2878fc5472c9430b8ee28aa41b54"><tt>2dad1e0</tt></a> parser: Track irregular line terminators in trivia (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5206738511" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25947" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25947/hovercard" href="https://github.com/oxc-project/oxc/pull/25947">#25947</a>) (camc314)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/58ba651e5c03817b12589c1163e6400d0eb0ac1f/hovercard" href="https://github.com/oxc-project/oxc/commit/58ba651e5c03817b12589c1163e6400d0eb0ac1f"><tt>58ba651</tt></a> minifier: Avoid merging <code>if</code> to <code>for</code> when the body contains a function declaration (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5147877526" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25637" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25637/hovercard" href="https://github.com/oxc-project/oxc/pull/25637">#25637</a>) (sapphi-red)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/a185ac3ff3167e7d734df1ae656bad9394fa63bb/hovercard" href="https://github.com/oxc-project/oxc/commit/a185ac3ff3167e7d734df1ae656bad9394fa63bb"><tt>a185ac3</tt></a> codegen: Print <code>#</code> before private identifier in TS signature key (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5204180191" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25938" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25938/hovercard" href="https://github.com/oxc-project/oxc/pull/25938">#25938</a>) (overlookmotel)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/af82a0707a4c0cb26e5a292a0a2534e49e7c8ef9/hovercard" href="https://github.com/oxc-project/oxc/commit/af82a0707a4c0cb26e5a292a0a2534e49e7c8ef9"><tt>af82a07</tt></a> minifier: Keep unary <code>+</code> when the other operand has side effects (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5149394079" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25645" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25645/hovercard" href="https://github.com/oxc-project/oxc/pull/25645">#25645</a>) (Kotaro Chikuba)</li> </ul> <h3>โšก Performance</h3> <ul> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/20711f4995fc295a21cc2e599417913b8a2287b9/hovercard" href="https://github.com/oxc-project/oxc/commit/20711f4995fc295a21cc2e599417913b8a2287b9"><tt>20711f4</tt></a> packages/codegen: Remove <code>node</code> param from <code>write</code> and <code>markMap</code> functions in sourcemap builds (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5219479462" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25989" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25989/hovercard" href="https://github.com/oxc-project/oxc/pull/25989">#25989</a>) (overlookmotel)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/29a774930a1bda5b1ccdcf809a9f804eb61d352a/hovercard" href="https://github.com/oxc-project/oxc/commit/29a774930a1bda5b1ccdcf809a9f804eb61d352a"><tt>29a7749</tt></a> packages/codegen: Pass <code>start</code> and <code>end</code> to <code>write</code> and <code>mark</code> functions (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5219479151" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25986" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25986/hovercard" href="https://github.com/oxc-project/oxc/pull/25986">#25986</a>) (overlookmotel)</li> <li>8ae741b packages/codegen: Replace <code>write</code> calls with <code>writeIdent</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5219373355" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25984" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25984/hovercard" href="https://github.com/oxc-project/oxc/pull/25984">#25984</a>) (overlookmotel)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/a78ed30bbf28d0dcbd10041f26ec2647df109843/hovercard" href="https://github.com/oxc-project/oxc/commit/a78ed30bbf28d0dcbd10041f26ec2647df109843"><tt>a78ed30</tt></a> packages/codegen: Remove <code>last</code> param from <code>writeWithMapNamed</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5219373281" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25983" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25983/hovercard" href="https://github.com/oxc-project/oxc/pull/25983">#25983</a>) (overlookmotel)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/53f62701f822e870011c71d597a141a0581dfbc9/hovercard" href="https://github.com/oxc-project/oxc/commit/53f62701f822e870011c71d597a141a0581dfbc9"><tt>53f6270</tt></a> packages/codegen: Eagerly initialize <code>mapNames</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5219270796" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25979" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25979/hovercard" href="https://github.com/oxc-project/oxc/pull/25979">#25979</a>) (overlookmotel)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/5b43c603866da8f226169fb86b3248e6365cf0d7/hovercard" href="https://github.com/oxc-project/oxc/commit/5b43c603866da8f226169fb86b3248e6365cf0d7"><tt>5b43c60</tt></a> packages/codegen: Split recording mappings into multiple functions (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5219270644" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25978" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25978/hovercard" href="https://github.com/oxc-project/oxc/pull/25978">#25978</a>) (overlookmotel)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/cc947b5a370296143af26bb4bc46a877eaccb85f/hovercard" href="https://github.com/oxc-project/oxc/commit/cc947b5a370296143af26bb4bc46a877eaccb85f"><tt>cc947b5</tt></a> packages/codegen: Reduce property lookups (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5219270521" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25977" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25977/hovercard" href="https://github.com/oxc-project/oxc/pull/25977">#25977</a>) (overlookmotel)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/c22a9cc26000dccb8aceb9113d9ae3c72e0013fa/hovercard" href="https://github.com/oxc-project/oxc/commit/c22a9cc26000dccb8aceb9113d9ae3c72e0013fa"><tt>c22a9cc</tt></a> packages/codegen: Combine condition checks (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5219270429" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25976" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25976/hovercard" href="https://github.com/oxc-project/oxc/pull/25976">#25976</a>) (overlookmotel)</li> <li>215a6a5 packages/codegen: Add functions for writing/marking unnamed mappings (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5219270327" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25975" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25975/hovercard" href="https://github.com/oxc-project/oxc/pull/25975">#25975</a>) (overlookmotel)</li> <li>fe444cc codegen: Avoid allocations for single comment anchors (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5141857734" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25598" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25598/hovercard" href="https://github.com/oxc-project/oxc/pull/25598">#25598</a>) (camc314)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/a0aee8187f871d3afe858f8642a5b19b8d409bec/hovercard" href="https://github.com/oxc-project/oxc/commit/a0aee8187f871d3afe858f8642a5b19b8d409bec"><tt>a0aee81</tt></a> minifier: Do not rebuild expression when substituting void to null (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5218805071" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25964" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25964/hovercard" href="https://github.com/oxc-project/oxc/pull/25964">#25964</a>) (Armano)</li> <li>1004439 packages/codegen: Merge <code>mark</code> and <code>write</code> calls in <code>printImportAttributes</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5219051219" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25972" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25972/hovercard" href="https://github.com/oxc-project/oxc/pull/25972">#25972</a>) (overlookmotel)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/94c8a34376f706870c56c84ba898f80de68450a3/hovercard" href="https://github.com/oxc-project/oxc/commit/94c8a34376f706870c56c84ba898f80de68450a3"><tt>94c8a34</tt></a> packages/codegen: Remove <code>node</code> param from <code>printString</code> and <code>printNonNegativeFloat</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5219051065" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25971" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25971/hovercard" href="https://github.com/oxc-project/oxc/pull/25971">#25971</a>) (overlookmotel)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/7e2b4b36a14ee8f460e163d1fea211ede9a02ea3/hovercard" href="https://github.com/oxc-project/oxc/commit/7e2b4b36a14ee8f460e163d1fea211ede9a02ea3"><tt>7e2b4b3</tt></a> packages/codegen: <code>printNonNegativeFloat</code> write mapping directly (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5219050675" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25968" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25968/hovercard" href="https://github.com/oxc-project/oxc/pull/25968">#25968</a>) (overlookmotel)</li> <li>f09c8ab minifier: Avoid creation of unnecessary conditional expressions (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5198363193" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25931" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25931/hovercard" href="https://github.com/oxc-project/oxc/pull/25931">#25931</a>) (Armano)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/53ff08068d2487489db9fe739937438fbb66db56/hovercard" href="https://github.com/oxc-project/oxc/commit/53ff08068d2487489db9fe739937438fbb66db56"><tt>53ff080</tt></a> packages/codegen: Remove <code>lastWasPostfixClose</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5183860916" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25888" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25888/hovercard" href="https://github.com/oxc-project/oxc/pull/25888">#25888</a>) (overlookmotel)</li> </ul> <h3>๐Ÿ“š Documentation</h3> <ul> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/07de64608c36f0afcff7c9fb3b7a198edf578461/hovercard" href="https://github.com/oxc-project/oxc/commit/07de64608c36f0afcff7c9fb3b7a198edf578461"><tt>07de646</tt></a> packages/codegen: Fix JSDoc comments on <code>write*</code> methods (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5219050305" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25966" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25966/hovercard" href="https://github.com/oxc-project/oxc/pull/25966">#25966</a>) (overlookmotel)</li> <li><a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/oxc-project/oxc/commit/3b09c04fb35f50df0042f6610ef9372d2c51e312/hovercard" href="https://github.com/oxc-project/oxc/commit/3b09c04fb35f50df0042f6610ef9372d2c51e312"><tt>3b09c04</tt></a> packages/codegen: Clarify comment (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5214848417" data-permission-text="Title is private" data-url="https://github.com/oxc-project/oxc/issues/25959" data-hovercard-type="pull_request" data-hovercard-url="/oxc-project/oxc/pull/25959/hovercard" href="https://github.com/oxc-project/oxc/pull/25959">#25959</a>) (overlookmotel)</li> </ul> github-actions[bot] tag:github.com,2008:Repository/1238504280/v2.5.9 2026-08-24T04:25:36Z aria2-next: v2.5.9 - Atomic Magnet File Selection <h2>Summary</h2> <p>Aria2 Next 2.5.9 makes magnet file selection atomic. BitTorrent payload transfer now remains paused until libtorrent confirms the complete file-priority plan, preventing unselected files from downloading while metadata selections are applied.</p> <h3>Changed</h3> <ul> <li>Delayed magnet payload transfer until libtorrent confirms the selected file and piece priorities.</li> <li>Centralized native torrent activation so paused, auto-managed, and stop-when-ready flags are cleared in the correct order.</li> <li>Preserved the selected task and file totals while an asynchronous priority update is in progress, then refreshed them from libtorrent after confirmation.</li> </ul> <h3>Fixed</h3> <ul> <li>Fixed magnet tasks downloading all files after users excluded files in the metadata selection dialog.</li> <li>Fixed pre-metadata placeholder files starting an invalid native priority transaction that blocked the real multi-file selection.</li> <li>Fixed stale full-torrent progress values replacing selected-file progress while the selection transaction was pending.</li> <li>Fixed resumed magnet tasks starting peer transfer before file priorities reached the libtorrent disk thread.</li> </ul> <h3>Downloads</h3> <table> <thead> <tr> <th>Platform</th> <th>Download</th> </tr> </thead> <tbody> <tr> <td>Linux x86_64</td> <td><code>aria2-next-2.5.9-linux-x86_64</code></td> </tr> <tr> <td>Linux ARM64</td> <td><code>aria2-next-2.5.9-linux-aarch64</code></td> </tr> <tr> <td>macOS Apple Silicon</td> <td><code>aria2-next-2.5.9-macos-arm64</code></td> </tr> <tr> <td>macOS Intel</td> <td><code>aria2-next-2.5.9-macos-x86_64</code></td> </tr> <tr> <td>Windows x86_64</td> <td><code>aria2-next-2.5.9-windows-x86_64.exe</code></td> </tr> <tr> <td>Windows ARM64</td> <td><code>aria2-next-2.5.9-windows-arm64.exe</code></td> </tr> <tr> <td>Android ARM64</td> <td><code>aria2-next-2.5.9-android-arm64</code></td> </tr> <tr> <td>Checksums</td> <td><code>aria2-next-2.5.9-checksums.sha256</code></td> </tr> </tbody> </table> AnInsomniacy tag:github.com,2008:Repository/1238504280/v2.5.8 2026-08-24T03:22:13Z aria2-next: v2.5.8 - BitTorrent Resume and Selection Reliability <h2>Summary</h2> <p>Aria2 Next 2.5.8 improves BitTorrent resume, selective-download, and seeding behavior. Paused tasks now restore verified progress without starting network transfer, file selection has an explicit transaction state, and RPC clients receive consistent completion and sharing status across restarts.</p> <h3>Added</h3> <ul> <li>Added <code>bittorrent.fileSelectionState</code> to expose the native file-selection transaction as <code>none</code>, <code>awaiting</code>, <code>ready</code>, or <code>applying</code>.</li> <li>Added structured <code>bittorrent.error</code> details for recoverable and terminal BitTorrent failures.</li> <li>Added native <code>activeTime</code>, <code>finishedTime</code>, and <code>seedingTime</code> metrics to BitTorrent RPC status.</li> </ul> <h3>Changed</h3> <ul> <li>Restored paused BitTorrent tasks into libtorrent with stop-when-ready so resume data and local files are validated without peer, tracker, or payload activity.</li> <li>Reused the restored native torrent handle when a paused task resumes.</li> <li>Preserved all representable tracker tiers and compacted only excess lowest-priority tiers.</li> <li>Clarified daemon startup requirements when no URI or input file is supplied.</li> <li>Defined <code>finished</code> as selected payload completion and <code>seeding</code> as full torrent completion.</li> </ul> <h3>Fixed</h3> <ul> <li>Fixed paused BitTorrent tasks reporting zero task and file progress after an engine restart.</li> <li>Fixed resume-time progress resets while libtorrent validates fast-resume data.</li> <li>Fixed file-selection state transitions for magnet downloads and resumed tasks.</li> <li>Fixed selective downloads reporting an incorrect non-seeder state after their selected payload completed.</li> <li>Fixed unpause behavior so a completed selective download resumes sharing through the existing native torrent state.</li> <li>Fixed native BitTorrent errors overwriting independent file-selection state.</li> </ul> <h3>Downloads</h3> <table> <thead> <tr> <th>Platform</th> <th>Download</th> </tr> </thead> <tbody> <tr> <td>Linux x86_64</td> <td><code>aria2-next-2.5.8-linux-x86_64</code></td> </tr> <tr> <td>Linux ARM64</td> <td><code>aria2-next-2.5.8-linux-aarch64</code></td> </tr> <tr> <td>macOS Apple Silicon</td> <td><code>aria2-next-2.5.8-macos-arm64</code></td> </tr> <tr> <td>macOS Intel</td> <td><code>aria2-next-2.5.8-macos-x86_64</code></td> </tr> <tr> <td>Windows x86_64</td> <td><code>aria2-next-2.5.8-windows-x86_64.exe</code></td> </tr> <tr> <td>Windows ARM64</td> <td><code>aria2-next-2.5.8-windows-arm64.exe</code></td> </tr> <tr> <td>Android ARM64</td> <td><code>aria2-next-2.5.8-android-arm64</code></td> </tr> <tr> <td>Checksums</td> <td><code>aria2-next-2.5.8-checksums.sha256</code></td> </tr> </tbody> </table> AnInsomniacy tag:github.com,2008:Repository/294977469/v1.9.32 2026-08-24T02:30:59Z clink: v1.9.32 <h4>Recent Breaking Change</h4> <ul> <li><strong>Breaking Change:</strong> the "gray text" auto-suggestions display is now off by default, due to too many complaints and frustration and support cost. <ul> <li>The <a href="https://chrisant996.github.io/clink/clink.html#suggestion-list" rel="nofollow">Suggestions List</a> since v1.8.0 is friendlier and more powerful; toggle it by pressing <kbd>F2</kbd> or enable it by default via <code>clink set suggestionlist.default true</code>.</li> <li>The "gray text" or "inline" auto-suggestions display can be turned on again via <code>clink set autosuggest.inline true</code> if preferred.</li> </ul> </li> </ul> <h4>v1.9.32</h4> <ul> <li>Fixed agnoster, Headline, and pure custom prompts to show just the base directory name for the Python virtual env.</li> <li>Fixed <code>rl.gethistoryindex()</code> during the <code>onbeginedit</code> callback and the first prompt filter per input line.</li> <li>Fixed width calculation for combining marks such as diacritics; there's no fully reliable way to predict how a terminal will render combining marks, but Clink tries to accommodate different OS versions and console configuration modes and grapheme combinations to predict as closely as possible.</li> </ul> chrisant996 tag:github.com,2008:Repository/1056194120/1.1-rc5 2026-08-23T19:53:27Z Super-Mario-Bros.-Remastered-Public: 1.1 RC5 <ul> <li>Fixed castles having some really dumb choices for its bg tiles, now uses the normal 16x16 one.</li> <li>ACTULLY fixed cannon balls crashing the game when being stomped, fr this time i promise</li> <li>Resource packs will only give warnings now, IF enabled in their <code>pack_info.json</code> file, using <code>"enable_warnings": true</code> (automatically enabled on creation of a new pack), otherwise they wont show</li> <li>Fixed loop offsets on animations, not being applied correctly, on cached spriteframes</li> <li>Clamped the level pack world select number icon sprite thingy to be "+" at maximum</li> <li>Added custom level autosave folder to the list of directories automatically created, at startup</li> <li>Fixed the second camera continuing to move, while the game is paused</li> <li>Fixed players sfx map not being able to have randomized sfx's</li> <li>Fixed resource pack config descriptions being part of the scroll container</li> <li>fixed burners not working properly in yvb</li> <li>made the labels in the results menus non clickable</li> <li>fixed overlapping invisible blocks in smbs 3-4 challenge mode</li> <li>marathon medal icons are replacable in the level select</li> </ul> JHDev2006 tag:github.com,2008:Repository/348053395/20.2.0 2026-08-23T16:11:13Z ConvertWithMoss: 20.2.0 <ul> <li>New: Added support for the ISLA Instruments S2400 kit format (KIT). Each pad of a kit becomes one zone mapped to a MIDI note (A1 is note 36, as in the default sample track MIDI map), carrying its sample, gain, fine tuning, choke group, filter (low/band/high-pass with its cutoff in Hertz and resonance) and HiFi volume envelope; loops are read from and written to the WAV 'smpl' chunk, where the device stores them. Writing creates the kit folder with the kit file named after it and one WAV per pad in the device native 48 kHz / 16-bit format. The format was reverse-engineered from the official S2400 Kit Builder web application since the device firmware is encrypted - not yet verified on real hardware.</li> <li>New: Added support for the E-mu Emulator II (IMG, EMUIIFD, HFE). One disk becomes one multi-sample: the key map of the bank gives the zones with their key ranges and root keys and each voice its name, its loop and its audio, which is expanded from the companded bytes the sampler feeds to its AM6072 DAC. A bank which is larger than one floppy is reported as continuing on another disk. Read only.</li> <li>New: Added support for the Roland S-10/S-220/MKS-100 System Exclusive files (*.syx) - read only</li> <li>New: The Analyse run can log for every found multi-sample what it contains (option "Log analysis details", on the command line <code>-ad</code>): the mapping of its zones with their sample format, loops with their cross-fades, envelopes, LFOs and the filter with its modulators. Only attributes which a source actually uses are logged, so searching the log finds the sources which use a specific feature - e.g. all presets of a library with a filter envelope, a loop cross-fade or a release trigger. The details describe the source as it was read, before any processing is applied.</li> <li>New: A note is logged when a loop of a converted preset audibly clicks at its wrap-around point (the step back to the loop start is many times the normal movement of the waveform and a substantial part of the level). Sample libraries ship such loops surprisingly often - 17 of 152 presets across three commercial Ensoniq libraries - and without the note the first hint is the converted preset ticking on the destination device. Nothing is changed: the loop is written as the source authored it, and the note points to the snap-to-zero-crossing and loop cross-fade processing options which remove such clicks. A loop which already has a cross-fade is not reported.</li> <li>New: A note is logged when samples are re-sampled because the destination format does not support their sample rate or bit resolution - e.g. a 24 bit / 48 kHz sample which is written as a Waldorf Quantum/Iridium preset with its 'Re-sample to 16bit/44.1kHz' option enabled, or written for a device whose hardware dictates the format of its samples. So far this conversion happened silently and the log gave no hint that the created preset does not contain the audio of the source unchanged; the note states the source format and the format it becomes. Each distinct conversion is logged once per run.</li> <li>New: Added several new tags for better category detection.</li> <li>Fixed: The sample and program files which a preset references are now looked up ignoring the upper/lower case of their name. Sampler file systems are case-insensitive and their CD-ROMs store all names in upper case, but a preset might well reference them in lower case. On a case-sensitive file system, which is the normal case on Linux, none of those samples could be found (e.g. 'STR SEC.6 -L.WAV' referenced as 'STR SEC.6 -L.wav'). This affects the Akai S5000/S6000 (AKP/AKM), Akai MESA, Akai MPC and MPC1000, FL Studio DirectWave, Teenage Engineering OP-XY and Synclavier Regen formats as well as all formats which use the common sample search (Ableton, Deluge, EXS24, NI Kontakt, NI Maschine, 1010music, SXT and TX16Wx) - the latter did only try the file ending in all upper and all lower case, so a name which differs in its case anywhere else was still not found.</li> <li>Fixed: When a sample was not found next to its preset, the search jumped the configured number of folder levels up in one go and took whatever the recursive search found first. Two libraries below the same folder which name their samples alike - the normal case for the variants of a library - then fed a preset the sample of the other library, which sounds wrong and, since the preset keeps its own loop points, clicks at the loop. The search now goes up one level at a time and stops at the first level which contains the file, so a sample close to the preset always wins over one of the same name further away.</li> <li>Fixed: The category names 'Winds' and 'World' were not detected when they were read back from a preset which stores the category as text: 'Winds' was detected as FX - from the 'Wind' sound effect - and 'World' was not detected at all. The name of a category is now a keyword of its own, which is checked for all of them.</li> <li>Fixed: Samples which are converted to the sample rate of the destination format (the conversions the re-sampling note reports) are now converted with the same band-limited resampler which the sample processing options use. The Java sound converter used before produced a slightly wrong number of frames - 88204 instead of exactly 88200 when a 2 second 48 kHz sample becomes 44.1 kHz - which stretches the audio against the sample and loop positions that are re-calculated with the exact rate ratio. A loop which wraps perfectly in the source then steps at its wrap-around point, the more the longer the loop is: measured on a 200 Hz sine with a 1.5 second loop, the step was 4.5% of the peak level and is 0.04% now. Up- and down-sampling also gain the band-limiting of that resampler, which the Java converter does not have.</li> <li>Fixed: An option which is enabled by default in the user interface was disabled when the conversion was started from the command line without giving that option. The command line only tested the value of a parameter, so an absent parameter always meant 'off', while the check-box of the same option is ticked in the user interface - the identical conversion therefore produced a different result depending on how it was started. Twelve options across eleven formats were affected, among them 'Re-sample to 16bit/44.1kHz' of the Waldorf Quantum/Iridium and 'Re-sample to 24bit/48kHz' of the Elektron Tonverk and the 1010music formats. Converting the Elektron Tonverk factory library to a Waldorf Quantum/Iridium preset from the command line wrote 1554 samples which the device cannot play: the library ships 64 bit float files and single-cycle waveforms whose pitch the Tonverk stores as a sample rate of up to 12 MHz, and without the re-sampling both were passed through unchanged. A parameter which is not given now keeps the default of its option.</li> <li>Backend <ul> <li>New: Added transpose, tuning, gain and panning attributes to performances (1010music bento/blackbox, Akai AKM, NI Kontakt 1, Roland S-7xx, TX16w, Yamaha Montage/MODX).</li> <li>New: Improved setting of MIDI channels, with distinct values for OFF and OMNI for all performances.</li> <li>Fixed: An error while one preset of a source file was converted ended the conversion of that whole file, so that every preset after it was silently lost - a disk image, a bank or a library delivers all of its presets from one read. The error is now reported with the name of the preset which caused it and with its stack, and the source is continued with the next preset. The same applies to performances.</li> </ul> </li> <li>User Interface <ul> <li>Improved: The audition of the Contents dialog holds the note as long as the sound needs to show its character instead of fixed 2 seconds: through the delay, attack and decay of its amplitude envelope, dwelling on the sustain, or until the body of its longest sample was heard once (an evolving texture or a phrase which only loops near its end) - at most 6 seconds. A sound which decays to silence is held through its whole decay, so nothing of its natural tail is cut off; short one-shots still end at their sample end as before.</li> <li>New: Contents dialog: A preset which shares its name with another preset in the same folder of the tree additionally shows the index which addresses it inside its file, e.g. 'Soul Ah's (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1295209449" data-permission-text="Title is private" data-url="https://github.com/git-moss/ConvertWithMoss/issues/12" data-hovercard-type="issue" data-hovercard-url="/git-moss/ConvertWithMoss/issues/12/hovercard" href="https://github.com/git-moss/ConvertWithMoss/issues/12">#12</a>, 21 zones, C1-C6)'. Sample library CD-ROMs re-use a name for a variant of a preset more often than one would expect - the 'Emulator Standards' library of the E-mu Emulator III does so in 45 of its banks, where the bank 'Soul Ahs' holds two presets called 'Soul Ah's' which differ in their velocity sensitivity - and those rows were indistinguishable, so it was not possible to tell which of them to tick. The index is the one the exported list writes and by which the imported list selects a preset, so the tree and the list address the same preset. A name which is unique in its folder is shown unchanged.</li> <li>New: Contents dialog: The new 'Export List...' button writes the listed presets - not the presets themselves - as a CSV or JSON file with the name, category, number of zones, key range (as note names and MIDI note numbers), folder, file, containers, index inside of the file and the ticked state of each of them. This gives an inventory of a disk image, a bank or a preset folder which can be used in a spreadsheet or a script. A search filter applies to the written list as well.</li> <li>New: Contents dialog: The new 'Import List...' button reads such a list back in and ticks exactly the presets which it selects, so the presets to convert can be picked in another application: export the list, tick the presets in e.g. a spreadsheet, save it as CSV again and import it. A row selects its preset when its 'Selected' field says so ('true', 'x', '1' or 'yes'); a list without that field selects every preset it contains, so deleting rows works as well. Presets are matched by their file and their index inside of it, which tells presets of the same name in different banks apart and still finds a library which was moved to another folder.</li> </ul> </li> <li>Akai MPC <ul> <li>Fixed: The Version element was created but never added to a written XPM file. Since it is the element by which the format is recognized, such a file was rejected when it was read back ("Could not read metadata: Unknown Root"). The platform is now written as well, so that the version log line is complete.</li> </ul> </li> <li>Akai S-900 <ul> <li>New: Reading of missing filter parameters (envelope, velocity mod., key-tracking), pitch LFO and envelope.</li> <li>Fixed: The amplitude envelope and pitch key-tracking were read from the wrong bytes.</li> <li>Fixed: Referenced samples can be on a continuation disk. For disks which point to a missing samples a continuation disk is searched in the same folder.</li> <li>Fixed: Improved logging.</li> <li>Fixed: The filter cutoff is now converted with the law of the sampler instead of a straight line over its range. The S900 does not filter digitally: each of its 8 voices runs through an analog switched-capacitor low-pass (MF6CN-50, a 6th order Butterworth) whose corner sits at a fixed fraction of the clock it is fed with, and that clock is a timer counter which the operating system loads with a divider it looks up with the setting. The scale follows from what the sampler does when it records: its block diagram sets the same filter to 0.4 times the sampling frequency while its operating system loads the divider with 80000/frequency, which fixes the cut-off at 32000/divider. The setting is scaled, offset and clipped to the range of that table, so the filter is fully closed below a setting of 24, fully open from 76 upwards, and follows a curve in between: setting 50 is 889 Hz and not 10.1 kHz, setting 70 is 4 kHz and not 14.1 kHz. Measured over the SL5000 factory library (20 disks, 71 programs, 209 filters) the cut-offs move from a range of 9.3-19.6 kHz to 0.7-6.4 kHz - the sampler is a good deal darker than a linear reading of the setting suggests, which is a large part of its character.</li> </ul> </li> <li>Akai S-1000/S-3000 <ul> <li>New: Programs of a volume which share their MIDI program number (on the same MIDI channel) are combined into one multi-sample with one group per program. Selecting that program number on the sampler activates all of them, so they always sound layered - many CD-ROMs build their final patches this way from 2 or 3 component programs, which each sounded like a bare fragment when they were converted one by one (e.g. 'DIGIJAZZ A' + 'DIGIJAZZ B' of East West's Twisted Textures, a bright and a dark layer, become the multi-sample 'DIGIJAZZ'). Each program keeps its own envelopes, filter and volume in its group, and the combination can be seen on the multi-sample itself: it is named after the programs it combines and every one of them becomes a group which carries its name.</li> <li>Fixed: Ignore undefined volumes (type 0xFFFFE5E5) and continue conversion.</li> <li>Fixed: Images with broken sample or program data blocks can now be read. Conversion does not stop but continues with also improved error logging.</li> <li>Fixed: The loudness of a program and the loudness offset of a key-group sample are now converted with the scale of the sound hardware, which spans 60.5 dB over its range in steps of 0.237 dB. The program loudness was read as a fraction of full level (90 of 99 became -0.8 dB where the sampler plays it 6.2 dB down) and the offset of a key-group sample was assumed to span +/-6 dB where it actually spans +/-30 dB. Both errors flatten the balance a sound designer set between the layers of a preset: the two programs of 'JAZZNSPACE' in East West's Twisted Textures are 18.3 dB apart on the sampler and were 3.3 dB apart after conversion, which put the bright layer far in front of the sound instead of behind it.</li> <li>Fixed: The envelope of the loudness is now shaped the way the sound hardware moves it. The level of a voice is an index into the gain table of the sampler, which is exponential with a step of 0.237 dB, and the operating system adds the rate of the envelope to that index - a stage is therefore a straight line in decibel and a curve in loudness. It was written as a straight line in loudness, which keeps a note near its full level for most of the stage and then drops it: the electric piano of 'DIGIJAZZ', whose decay is 9.5 seconds, reached -6 dB after 4.7 seconds and -20 dB after 8.6, where the sampler is 6 dB down after 0.9 seconds and 20 dB down after 3.1 - it did not sound like a piano at all. The envelope of the filter is deliberately left as it is, since its index addresses the cut-off table, which is exponential in frequency, so a straight line there already is one in the cut-off of the destination.</li> <li>Fixed: The sustain of an envelope is now converted with the same loudness scale. It is not a share of the level but an attenuation: the sampler scales the parameter with its loudness table and subtracts the remainder to the full level from the index into its gain table while a note is held. A sustain of 50 therefore does not hold a note at half of its level but 30.4 dB below it, which is 3 %. Read as half the level such a note sits about 24 dB too loud and the difference a sound designer set between the layers of a preset disappears. Measured over a commercial CD-ROM 2975 of its 5975 amplitude envelopes change, 242 of them by more than 6 dB and the largest by 15.4 dB.</li> <li>Fixed: The filter cut-off is now converted with the law of the sampler instead of a straight line over its range. The filter setting is scaled to the range of the sound hardware and looks up the coefficient of the three one-pole stages which form the 18dB/octave low-pass, which places the middle of the range far lower than a linear reading suggests: setting 43 is 306 Hz and not 8.7 kHz, setting 53 is 627 Hz and not 10.7 kHz. Converted presets were therefore up to 5 octaves too bright - the filter of a dark, evolving layer did nothing at all, so a preset which layers a bright and a dark program (the way most S1000 CD-ROMs build their sounds) converted with both layers wide open.</li> <li>Fixed: The times of the two ADSR envelopes are now converted with the rate table of the sampler instead of a straight line over the range of a setting. The sound hardware moves an envelope at a rate which the operating system looks up with '99 - setting', and those rates span a range of 16384 to 1 - a setting of 60 is therefore not 'a bit above half of the maximum time' but a small fraction of it. The same table serves the attack, the decay and the release of both envelopes, so the separate maxima which were assumed for them (2 seconds for the attack and the release, 6 seconds for the decay) do not exist either. Measured over two commercial libraries the settings which are actually used sit between 30 and 86, where the old law was up to seven times too long in the middle of the range and up to twenty times too short at its end: the electric piano of 'DIGIJAZZ' now decays over 9.5 seconds and releases in 0.11 seconds, as an electric piano does, instead of decaying in 5.0 seconds and releasing in 0.75.</li> <li>Fixed: Do not report samples for key-groups with upper velocity set to zero. These are used creatively by some companies to add their copyright info to each key-group.</li> <li>Fixed: Samples which were recorded at 22050Hz were read with a sample rate of 0Hz. The sampler fills in the exact sample rate only for the samples it records at 44100Hz and marks the 22050Hz ones solely by an index at the start of the sample header, which was not read. Such a sample was written as an unplayable file which claims a sample rate of 0Hz and, with the sample rate processing option enabled, made the conversion fail - which stopped the whole disk image, so that all presets after it were lost (32 of the 124 presets of a commercial CD-ROM).</li> <li>Fixed: Zones with an upper velocity of 0 are skipped entirely. A velocity of 0 is a note-off, so such a zone can never be triggered - they mute the layers which belong to the partner program of a layered stack (and carry the copyright info, see above). Before, they became dead zones on the destination and the audition played them as always-on, which doubled the layers.</li> </ul> </li> <li>Audiomodern Soundbox <ul> <li>New: Added reading/writing of category.</li> </ul> </li> <li>Bliss <ul> <li>Fixed: A zone with a trimmed sample start was re-sampled to exactly 96 kHz (the maximum rate of the format was applied as a fixed rate, up-sampling included). Worse, the trim positions count in frames of the source rate, so after the up-sampling they pointed at the wrong place and cut the later part of the sample audio away. The samples now keep their rate; only the actual limits of the format are enforced - a rate above 96 kHz or a bit resolution which the format does not store (e.g. 8 bit) is converted, and this now also happens for zones which are not trimmed, whose samples went into the file unchanged before.</li> </ul> </li> <li>Casio FZ <ul> <li>Fixed: The filter cut-off is now converted with the law of the filter chips instead of an assumed exponential curve. The value which a voice stores is not what the chips receive: the sampler adds 32 to it before it writes the result as an 8 bit code, so the range of the value covers exactly the codes 32 to 159 - and 159 is both the code the sampler initializes its filters with and the point its own documentation calls fully open, which is the confirmation that the offset is right. The frequencies of those codes follow three linear sections rather than an exponential curve (20 Hz at code 0 and 20 kHz at code 159 from the service manual, 4.5 kHz at code 108 and 9 kHz at code 124 from the anti-aliasing filters the sampler itself selects). Converted presets were therefore far too dark: measured over the FZ-1 factory library (12 disks, 153 programs, 1221 filtered zones) the cut-offs move from a range of 89 Hz - 11 kHz to 2.5 - 17.2 kHz, which is 1.9 octaves at the median.</li> <li>Fixed: The times of the 8-stage envelopes are now converted with the increment table of the sampler instead of an assumed law. The sampler advances an envelope by an amount which it looks up with the rate of the stage, 500 times a second, and those increments span 3 to 32767 - the times are therefore not a curve which halves every 8 rates as was assumed. The error is largest in the middle of the range, where the settings of real voices sit: a rate of 16 is 0.47 seconds and not 15, a rate of 32 is 0.14 seconds and not 3.75, and only at the very top of the range do the two agree. Measured over the FZ-1 factory library (12 disks, 153 programs, 674 envelopes) the amplitude decays drop from a maximum of 2.8 to 0.84 seconds and the releases from 6.3 to 0.85 - the brass ensemble of 'BRASS ENS 1' decays in 0.11 seconds and releases in 0.08, where it was 0.84 and 0.16 before.</li> </ul> </li> <li>CWITEC TX16Wx <ul> <li>New: Added support for bank output (*.txbank). Select 'Preset Library' as destination output.</li> </ul> </li> <li>DecentSampler <ul> <li>Fixed: The command line parameters 'DecentSamplerTemplateFolderPath' and 'DecentSamplerAddFilterToGroups' were read into each other's setting: the template folder path was taken from the add-filter parameter and the add-filter flag from the path. Giving a template folder on the command line therefore never reached the creator - it set the filter flag to false instead, since a path is not '1' - and giving the filter flag put the literal value into the template path. Neither option could be used from the command line; the user interface was not affected. The add-filter option now also keeps its default of enabled when its parameter is not given.</li> </ul> </li> <li>E-mu Emulator III/IIIX/ESI <ul> <li>Fixed: Reading a CD-ROM or hard disk image kept its own copy of the audio of a sample for every zone which plays it. The presets of a bank map the same samples over and over - the first volume of the 'Emulator Standards' library plays 1480 samples from 25580 zones - so an image was expanded to many times its size while it was read: that 304 MB volume held 3.5 GB of audio instead of the 192 MB it contains, and the conversion ended with 'Java heap space' and no presets at all on a machine whose Java heap is smaller than that. The audio of a sample is now decoded once and shared by all zones which play it, whether they belong to the same preset or not, which is what the samplers themselves do. Reading that volume now holds 192 MB and finishes in a 512 MB heap.</li> </ul> </li> <li>Fairlight CMI <ul> <li>Fixed: Reading a Voice file whose version is not recognized wrote a copy of that file into a hard-coded folder of the developer's machine which did crash the conversion.</li> </ul> </li> <li>FL Studio DirectWave <ul> <li>Fixed: Monolithic programs whose samples are stored uncompressed could not be read ("None of the samples of the program could be found next to the DWP file and it contains no embedded sample data"). DirectWave writes the embedded audio of a monolithic program either FLAC compressed or, in older versions, as uncompressed PCM in a block of its own; only the FLAC variant was recognized. The uncompressed block stores the channels one after the other instead of interleaved.</li> <li>Fixed: The embedded audio of a monolithic program is stored with 256 frames of silence before the sample and 256 after it, and the loop points of DirectWave do not count the leading silence. The silence was kept when such a program was read, so every sample started 5.8 ms late and its loop sat 256 frames early in the audio - silent on the perfectly periodic synthesizer loops of the library this was verified with, a click on anything sampled. Written programs padded the audio at the end only, so DirectWave skipped the first 5.8 ms of every sample and looped 256 frames late. Both now use the layout of the plug-in.</li> </ul> </li> <li>ISO File <ul> <li>Fixed: An image of the E-mu disk file system was read twice, once for each of the two E-mu formats which share that file system (Emulator III and EOS) since neither of them can read the banks of the other. Reading the files of an image reads all of their content, so a full library CD-ROM was loaded a second time only to find that it holds no bank of the second format. The image is now read once and both formats are offered its files.</li> </ul> </li> <li>Roland MV-8000 <ul> <li>Fixed: A written patch loaded on the device but was silent, and the device showed a start point, loop start and end point of 0 for every sample. The hardware plays - and displays - the three points which are stored in the SMT slot of a partial, not the ones of the sample parameter block, and only the latter were written. The slot points are written now; the 103 factory patches carry identical values in both places in all of their 1918 slots. Reading prefers the slot points as well, so a patch whose points were edited on the device converts with the points it actually plays.</li> <li>Fixed: The wave data of a written sample now keeps 2 frames behind its end point, as the device does for every sample it writes itself - none of the 1918 samples of the factory patches ends closer to the end of its data. A sample whose end point sat at the last frame of its data (a one-shot which plays to its very end, e.g. every sample of an Akai S1000 program whose end marker is its last frame) is padded with 2 frames of silence.</li> <li>Fixed: The envelope times are now converted with the time table of the sound engine instead of a formula borrowed from the S-7xx series. Every time is a 0-127 setting which the engine looks up in a 128 entry table, and that table sits in the firmware of both machines - at offset 0xB63EE of the S-760 system disk and 0x50538C of the decompressed MV-8000 operating system, with all 127 overlapping entries identical, which is also what shows that the MV-8000 runs the S-7xx sound engine and not the XV one whose category list it borrows. Its unit follows from the S-760 owner's manual, which documents the LFO delay - a 0-127 setting like the envelope times - as covering "0.01 - 22 sec": the table runs 30 to 65535, so an entry is 1/3000 second and the range is 0.0100 to 21.845 seconds, matching both ends of the documented range within one percent. The formula used before spans only 64:1 and cannot express anything below 302 ms, so it was up to 29 times too slow where the music is - a setting of 1 is 0.011 s and not 0.313 s, and 15, the median of the factory patches, is 0.025 s and not 0.496 s - and agreed only near the top of the range. The electric piano of the factory patch 'Mark V' now attacks in 0.011 s and releases in 0.016 s, as an electric piano does, instead of taking 0.3 s to do either.</li> </ul> </li> <li>Roland S-7xx <ul> <li>Fixed: The envelope times are now converted with the same table, which is the sampler's own; the formula used before was an uncalibrated approximation of it with the same 29-fold error at the fast end.</li> </ul> </li> <li>Teenage Engineering OP-XY <ul> <li>Fixed: The samples which do not make it into the written preset - the dropped velocity layers and the regions beyond the maximum of 24 - were still copied into the preset folder, although the description file does not reference them. They only occupied space on the device and could make the preset folder too big to load. Only the samples of the written regions are stored now.</li> </ul> </li> <li>Waldorf Quantum/Iridium <ul> <li>New: All layers of a preset are read instead of only the first two. The MK2 generation of the instruments stores 4 layers where the first one stores 2, and it always writes all four of them with the unused ones switched off; a layer which is switched off or which does not play samples is now reported and skipped instead of being converted or, as before, taking the whole preset down with it.</li> <li>New: A written preset can use a second layer ('Use a second layer for more than 3 groups', on the command line <code>QPATUseSecondLayer=1</code>). Each layer has 3 oscillators with a multi-sample of its own, so a preset holds up to 6 multi-samples instead of 3 and a source with more groups no longer has to merge them all into the last oscillator; the second set of groups also gets its own filter and amplitude envelope, which the oscillators of one layer have to share. Two layers are stored the same way by every instrument of the family, from the Quantum to the Iridium MK2. Only sounds which are meant to be heard together are put into a separate layer: the device has no velocity range for a layer, so a velocity split stays inside the sample maps. Disabled by default, which writes exactly what previous versions wrote. Verified on an Iridium MK2: a written two-layer preset loads and its second layer carries its own filter and its own amplitude envelope, and the oscillators which are not written stay off instead of keeping what the previously loaded preset had.</li> <li>New: A vibrato and a tremolo of the source are now written and read back - this was the last of the larger formats without them. The device has 6 low frequency oscillators and 40 modulation matrix slots, of which the slots 1-3 already carry the pitch envelopes of the 3 oscillators, so the vibrato takes the slot 4 and the tremolo the slot 5 and the slots 6-40 as well as the LFOs 3-6 stay untouched for the user. The vibrato drives the destination 'Pitch', which moves all three oscillators with a single slot instead of one slot per oscillator - a vibrato of a multi-sample belongs to the whole instrument and not to one of its layers. The tremolo drives the destination 'VCA' from the full level of the amplifier downwards with a unipolar oscillator, so that it attenuates instead of being pressed against the upper end of the amplifier for half of every cycle; its depth uses the loudness law of the device, where the full depth of the model (96 dB) is the swing from the full level down to silence. The waveform, rate, delay and fade-in are converted with the laws of the sound engine, which were read from the firmware of an Iridium MK2: the rate is 1/240 Hz + (100 Hz - 1/240 Hz) * x^4, which gives at the middle of its range the 6.25 Hz that the manual documents as the default, and the delay and the fade-in are 20 * x^2 and 10 * x^2 seconds. An oscillator of a read preset which runs on the tempo of the song is skipped, since a multi-sample carries no tempo with which its note lengths could be converted into Hertz.</li> <li>Fixed: A preset whose second layer does not play samples - a wave-table or virtual-analog layer next to a sampled one - was dropped completely, including the layer which did have samples ("Preset is not sample based"). 6 of the 16 two-layer presets of one factory folder were lost this way. Such a layer is now skipped and the sampled ones are converted.</li> <li>Fixed: A preset which contains a resource of an unknown type could not be read at all ("Unknown resource type"). The MK2 stores its parameter sequence in such a resource, so every MK2 preset which uses one was lost. Unknown resource types are now reported and skipped, and the message finally names the type.</li> <li>Fixed: The instrument on which a preset was saved was logged as 'null' for the Iridium MK2, and the layer mode was taken from a header field which only holds a meaningful value when the preset really has more than one layer, so single-layer presets were logged with a random mode.</li> <li>Fixed: Presets clicked when a key was released if the source left the amplitude release unset. An unset release becomes zero when it is clamped into range, and the de-click minimum was only applied to a release which is already greater than zero - so exactly the instant release which the minimum exists to prevent was written through unchanged. A release of zero gates the VCA off in a single sample and cuts the waveform wherever it stands, which for a looped zone is at full level, so the preset clicked on every key release. The minimum is now applied to the amplitude release whether or not the source set one. The attack is unchanged: it still passes a zero through, since a sample starts from silence at its own beginning.</li> <li>Fixed: The depth of a pitch envelope was converted on the wrong scale, in both directions. A depth of the model covers 12000 cent while one slot of the modulation matrix reaches 24 semi-tones, but the conversion treated the model as if it covered 4800 cent. Writing therefore made every pitch envelope 2.5 times too shallow - a source which sweeps 756 cent was written as an amount of -12.60 %, which the device plays as 302 cent - and reading made every one of them 2.5 times too deep, so a preset of the device whose slot stands at +50 %, and which the device plays as +12 semi-tones, was read as 3000 cent instead of 1200. The two errors mirror each other exactly, which is why a round-trip through the format looked correct and only the sound of the device gave it away. Of the 1292 zones which carry a pitch envelope on the E-mu Emulator III 'Emulator Standards' CD-ROM, 927 change what the device plays and the remaining 365 ask for more pitch than the device can reach at all and stay at the end of its range. The vibrato uses the same conversion, so both now agree.</li> <li>Fixed: A percussive sound lost its attack. The instant attack which such a source asks for gates the VCA open in one sample, which clicks, so every short amplitude attack was lifted to the shortest length the device can play - and that erases the strike of a drum, a plucked string or a piano. The audio is now inspected: the stage is only lifted when the first sample of a zone is far enough from zero to be heard as a click (2 % of its own peak, the same ratio at which a loop wrap becomes audible), and a source which fades in from silence keeps its instant attack. The device itself uses an attack of zero in 35 % of its factory presets.</li> <li>Fixed: The key tracking of the filter was written at twice the intended amount. The parameter spans -200 % to +200 % - the same scale the key tracking of an oscillator uses, where +100 % is the 1:1 tracking of the manual - but it was written over -100 % to +100 %, so a source which tracks the keyboard fully ended up at +200 % on the device (verified on an Iridium MK2). Such a preset opens its filter twice as far towards the top of the keyboard as the source does, and since the cut-off runs into its limit early the upper half of the range sounds equally bright. Reading is corrected the same way, which affects the presets of the device itself: a filter key tracking read from a preset was half of what the device shows.</li> <li>Fixed: A layer which the source pans as a whole is now panned on the oscillator which plays it. The panning of the single entries of a sample map is ignored by the device, so a preset which places its layers left and right - the way samplers build a wide, detuned sound, e.g. 'DIGIPAD ST' of East West's Twisted Textures, whose two layers sit hard left and hard right six cents apart - collapsed to the centre. Layers whose zones are not panned alike are left in the centre as before, and of 264 oscillators across a converted CD-ROM 166 stay centred while the presets which gain a panning are the ones whose names announce a stereo spread.</li> <li>Fixed: Reading a preset shifted the sample start/end and loop points of many zones one frame down. The positions are stored as a fraction of the sample length with 8 decimal places, which can land marginally below the exact frame boundary (frame 3977 of 5469 is written as 0.72718961, and 0.72718961 * 5469 = 3976.9999787); the fraction was truncated instead of rounded, which loses one frame for every such position - on a converted card of 165 presets, 759 of 2270 loop positions were affected. The device's own exported presets write fractions which land marginally below the frame the same way, so rounding to the nearest frame is also what the device does when it reads them.</li> <li>Fixed: The attributes of a written preset - the device lists them next to the preset name and filters the patches by them - now use the wording of the factory sound sets: 'Keys' instead of 'Keyboard', 'Bells' instead of 'Bell', 'Percussive' instead of 'Percussion', 'Loop' instead of 'Loops' and so on. Both words ended up in the filter list of the device otherwise, each of them finding only a part of the sounds.</li> <li>Fixed: A preset whose category could not be detected wrote the word 'Unknown' into the first attribute, which fills the filter list of the device with an entry that says nothing. The attribute is left empty now, like the factory sound sets do. A keyword which repeats the category is no longer written a second time.</li> </ul> </li> <li>Yamaha YSFC <ul> <li>Fixed: The play start, loop start and loop end of a written library still counted in frames of the source sample rate, although the audio itself is always converted to 44.1 kHz. For a 48 kHz source - e.g. every sample of a Korg Trinity KMP multi-sample - each position landed about 9% too far into the sample and the loop end that far beyond the end of the sample data, which clicks on every loop pass. The positions are now re-calculated to the destination rate, as the other creators with a fixed destination rate do.</li> </ul> </li> </ul> git-moss tag:github.com,2008:Repository/830127839/release-2026_08_23 2026-08-23T14:07:55Z gbe_fork: Release 2026 08 23 <h2>What's Changed</h2> <ul> <li>Fix Steam Input not updating when the game calls Init(false) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Vic-41148/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Vic-41148">@Vic-41148</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5031675881" data-permission-text="Title is private" data-url="https://github.com/Detanup01/gbe_fork/issues/583" data-hovercard-type="pull_request" data-hovercard-url="/Detanup01/gbe_fork/pull/583/hovercard" href="https://github.com/Detanup01/gbe_fork/pull/583">#583</a></li> <li>Update Simplified Chinese translations in overlay by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rcyggdra/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rcyggdra">@rcyggdra</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5069056040" data-permission-text="Title is private" data-url="https://github.com/Detanup01/gbe_fork/issues/586" data-hovercard-type="pull_request" data-hovercard-url="/Detanup01/gbe_fork/pull/586/hovercard" href="https://github.com/Detanup01/gbe_fork/pull/586">#586</a></li> <li>steam_overlay_translations.h: Add French translation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/TheKingFireS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/TheKingFireS">@TheKingFireS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5136892094" data-permission-text="Title is private" data-url="https://github.com/Detanup01/gbe_fork/issues/587" data-hovercard-type="pull_request" data-hovercard-url="/Detanup01/gbe_fork/pull/587/hovercard" href="https://github.com/Detanup01/gbe_fork/pull/587">#587</a></li> <li>Add SDK 1.65 Support by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/WowIsntThisInconvenient/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/WowIsntThisInconvenient">@WowIsntThisInconvenient</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5039531786" data-permission-text="Title is private" data-url="https://github.com/Detanup01/gbe_fork/issues/584" data-hovercard-type="pull_request" data-hovercard-url="/Detanup01/gbe_fork/pull/584/hovercard" href="https://github.com/Detanup01/gbe_fork/pull/584">#584</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Vic-41148/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Vic-41148">@Vic-41148</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5031675881" data-permission-text="Title is private" data-url="https://github.com/Detanup01/gbe_fork/issues/583" data-hovercard-type="pull_request" data-hovercard-url="/Detanup01/gbe_fork/pull/583/hovercard" href="https://github.com/Detanup01/gbe_fork/pull/583">#583</a></li> <li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/TheKingFireS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/TheKingFireS">@TheKingFireS</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5136892094" data-permission-text="Title is private" data-url="https://github.com/Detanup01/gbe_fork/issues/587" data-hovercard-type="pull_request" data-hovercard-url="/Detanup01/gbe_fork/pull/587/hovercard" href="https://github.com/Detanup01/gbe_fork/pull/587">#587</a></li> <li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/WowIsntThisInconvenient/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/WowIsntThisInconvenient">@WowIsntThisInconvenient</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5039531786" data-permission-text="Title is private" data-url="https://github.com/Detanup01/gbe_fork/issues/584" data-hovercard-type="pull_request" data-hovercard-url="/Detanup01/gbe_fork/pull/584/hovercard" href="https://github.com/Detanup01/gbe_fork/pull/584">#584</a></li> </ul> <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/Detanup01/gbe_fork/compare/release-2026_07_19...release-2026_08_23"><tt>release-2026_07_19...release-2026_08_23</tt></a></p> Detanup01 tag:github.com,2008:Repository/140602476/1.2.35 2026-08-23T13:19:32Z lsp-plugins: Release 1.2.35 <p>LSP Plugins 1.2.35 - now on Windows!</p> <p>That was a hard way but we finally managed to open our online store with official builds of LSP Plugins for Windows!<br> You may now register and get your personal builds on the <a href="https://lsp-builds.com" rel="nofollow">LSP-BUILDS.COM</a> site!</p> <p>The release is mostly minor and contains few fixes of regressions in 1.2.34 release:</p> <ul> <li>Bugfix in JACK driver that could cause connection estimation problem on the libjack library that could not be detected under PipeWire.</li> <li>Updated build scripts that could crash on binary dependencies when issuing multithreaded build.</li> </ul> sadko4u tag:github.com,2008:Repository/1096895/v3.04 2026-08-23T12:52:44Z qaac: v3.04 <p>Now properly set maxBitrate, avgBitrate field of esds DecoderConfig.<br> Addresses following issues:<br> <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5124521498" data-permission-text="Title is private" data-url="https://github.com/nu774/qaac/issues/129" data-hovercard-type="issue" data-hovercard-url="/nu774/qaac/issues/129/hovercard" href="https://github.com/nu774/qaac/issues/129">#129</a><br> <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5164690492" data-permission-text="Title is private" data-url="https://github.com/nu774/qaac/issues/132" data-hovercard-type="issue" data-hovercard-url="/nu774/qaac/issues/132/hovercard" href="https://github.com/nu774/qaac/issues/132">#132</a></p> nu774 tag:github.com,2008:Repository/1305551246/v1.12 2026-08-23T08:29:56Z gander: Gander 1.12 <p>One fix, for the largest documents Gander is asked to open.</p> <h3>Large PDFs no longer bring the phone to its knees</h3> <p>(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5218362346" data-permission-text="Title is private" data-url="https://github.com/mokshablr/gander/issues/16" data-hovercard-type="issue" data-hovercard-url="/mokshablr/gander/issues/16/hovercard" href="https://github.com/mokshablr/gander/issues/16">#16</a>, thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/logannc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/logannc">@logannc</a>, who found this and worked out that scrolling made it worse, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mjschwart/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mjschwart">@mjschwart</a>, who reproduced it on quite different hardware with a much heavier file)</p> <p>Gander lays out an empty box for every page in a document before it draws any of them, so the scrollbar is the right length from the moment it opens. Until now those boxes had no size: each was 300 by 150 pixels, a business card standing in for a page.</p> <p>That was visible as a column of small white rectangles whenever you scrolled faster than pages could be drawn, and it was the cause of a good deal more besides. Gander decides which pages are close enough to be worth drawing by looking a fixed distance ahead of you, and at that size about fifty of them fitted in the distance meant to hold three or four. So it started fifty at once, kept every one it had ever finished, and kept the artwork it decoded for them on top.</p> <p>On a 357-page illustrated rulebook, one flick through it took the renderer past 900 MB and Android killed it, sometimes taking other apps' browser windows down with it.</p> <p>The boxes are now the shape of the page they stand for, no more than three pages are ever drawn at once, a page you have flung past stops being drawn rather than finishing into a bitmap nobody will see, and a page far enough behind you gives back both its bitmap and its artwork. How far ahead Gander draws is now counted in pages rather than in screenfuls, which is the only version of that number that means the same thing when you turn the phone sideways.</p> <p>The rulebook now sits flat at about 180 MB however it is read, and a 520-page, 114 MB ebook at about 300 MB, neither of them climbing.</p> <h3>Install</h3> <p><code>Gander-1.12.apk</code> runs on every phone. The app ships no native code, so there is no architecture to choose.</p> <p>Viewing PDFs needs Android System WebView 125 or newer (May 2024). Any phone still receiving WebView updates is well past that.</p> <p>Verify before installing if you like. Signing certificate SHA-256:</p> <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="5B:5C:F6:4A:94:23:7C:D5:F0:E0:85:76:00:38:BC:1C:EB:DF:18:DA:BA:5C:B3:EA:CA:7C:15:9F:22:A7:E2:4B"><pre class="notranslate"><code>5B:5C:F6:4A:94:23:7C:D5:F0:E0:85:76:00:38:BC:1C:EB:DF:18:DA:BA:5C:B3:EA:CA:7C:15:9F:22:A7:E2:4B </code></pre></div> <hr> <p><strong>Help get Gander onto the Play Store.</strong> Publishing from a personal developer account needs 12 testers opted in for 14 days, and Google now checks they actually used the app rather than just installing it. If you can spare two minutes: join <code>gander-testers@googlegroups.com</code> with your Play Store Google account, then use this opt-in link โ€” <a href="https://play.google.com/apps/testing/com.arjun.gander" rel="nofollow">https://play.google.com/apps/testing/com.arjun.gander</a> โ€” and set it as your default PDF viewer for two weeks. Details in the <a href="https://github.com/mokshablr/gander/discussions/14" data-hovercard-type="discussion" data-hovercard-url="/mokshablr/gander/discussions/14/hovercard">pinned Discussion</a>.</p> mokshablr tag:github.com,2008:Repository/482265185/v6.2.2 2026-08-23T08:24:42Z breezy-weather: Breezy Weather v6.2.2 <p><strong>If you donโ€™t know what to do, download and install <code>breezy-weather-v6.2.2_standard.apk</code>, or check <a href="https://github.com/breezy-weather/breezy-weather/blob/main/INSTALL.md">INSTALL instructions</a> for more details.</strong></p> <p><strong>Improvements and fixes</strong></p> <ul> <li>Main screen - Add precipitation probability to hourly feels like tab</li> <li>Main screen - Make the sun dark instead of bright when the user explicitly asked for dark mode</li> </ul> <p><strong>Sources</strong></p> <ul> <li>BMKG - Fix refresh errors</li> <li>Met Office (UK) - Fix shifted day sequence in locations with a different timezone than UTC</li> <li>NCEI - Fix parsing error</li> </ul> <p><strong>Technical</strong></p> <ul> <li>[Breezy Update Notifier] Fix broadcast when the location list is changed from the app</li> </ul> <p><strong>Translations</strong></p> <ul> <li>Initial translation for Creoles and pidgins (English based) (En Oh)</li> <li>Initial translation for Hawaiian (En Oh)</li> <li>Initial translation for Kannada (Vinay)</li> <li>Initial translation for Urdu (haseebwt)</li> <li>Translations updated</li> </ul> <hr> <h3>Checksums</h3> <table> <thead> <tr> <th>Flavor</th> <th>Variant</th> <th>SHA-256</th> </tr> </thead> <tbody> <tr> <td>Standard</td> <td>Universal</td> <td>20a33a588e884257ab9329fee794d30a9d15ea067f64302c70c69c9adc3c6309</td> </tr> <tr> <td>Standard</td> <td>arm64-v8a</td> <td>829175ceb23d0e539f99b27d22ff10e06ba8d446ac070b28585a36316fd295d5</td> </tr> <tr> <td>Standard</td> <td>armeabi-v7a</td> <td>9900fa4a5ffc1360bb2d1d88d271fe05e98d1daff5a1aa08452bbf077467c1a6</td> </tr> <tr> <td>Standard</td> <td>x86</td> <td>5e3199df2e7b5a31192492c6d5a0ebb4700a2cc1510ebe06e831352cb3cb4457</td> </tr> <tr> <td>Standard</td> <td>x86_64</td> <td>1d95a963ac4176f4b3563056a700b7fc5c5540aeb3ddcd83bfb8fcc5000bd167</td> </tr> <tr> <td>Freenet</td> <td>Universal</td> <td>1369d817d426498715f8ccb6750baff19dadd78e85f707088e9bca43977570c0</td> </tr> </tbody> </table> github-actions[bot] tag:github.com,2008:Repository/1062632280/v0.8.2 2026-08-23T02:20:09Z megatoy: v0.8.2 <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/ulalume/megatoy/compare/v0.8.1...v0.8.2"><tt>v0.8.1...v0.8.2</tt></a></p> github-actions[bot] tag:github.com,2008:Repository/127519518/v2.16.0 2026-08-22T18:52:38Z subfinder: v2.16.0 <h2>What's Changed</h2> <ul> <li>feat(sources): honor -max-results across paginating sources by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gerijacki/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gerijacki">@Gerijacki</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4933932046" data-permission-text="Title is private" data-url="https://github.com/projectdiscovery/subfinder/issues/1810" data-hovercard-type="pull_request" data-hovercard-url="/projectdiscovery/subfinder/pull/1810/hovercard" href="https://github.com/projectdiscovery/subfinder/pull/1810">#1810</a></li> <li>fix(extractor): match the target domain literally and reject partial hosts by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gerijacki/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gerijacki">@Gerijacki</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4933933408" data-permission-text="Title is private" data-url="https://github.com/projectdiscovery/subfinder/issues/1811" data-hovercard-type="pull_request" data-hovercard-url="/projectdiscovery/subfinder/pull/1811/hovercard" href="https://github.com/projectdiscovery/subfinder/pull/1811">#1811</a></li> <li>fix(subscraping): cap untrusted source response bodies with a size limit by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/adamsjack711-ux/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/adamsjack711-ux">@adamsjack711-ux</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4878715753" data-permission-text="Title is private" data-url="https://github.com/projectdiscovery/subfinder/issues/1809" data-hovercard-type="pull_request" data-hovercard-url="/projectdiscovery/subfinder/pull/1809/hovercard" href="https://github.com/projectdiscovery/subfinder/pull/1809">#1809</a></li> <li>fix(subscraping): use DialContext instead of the deprecated Dial by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jonaslejon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jonaslejon">@jonaslejon</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5222080266" data-permission-text="Title is private" data-url="https://github.com/projectdiscovery/subfinder/issues/1835" data-hovercard-type="pull_request" data-hovercard-url="/projectdiscovery/subfinder/pull/1835/hovercard" href="https://github.com/projectdiscovery/subfinder/pull/1835">#1835</a></li> <li>feat: add scanmalware passive source by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jonaslejon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jonaslejon">@jonaslejon</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5221893262" data-permission-text="Title is private" data-url="https://github.com/projectdiscovery/subfinder/issues/1834" data-hovercard-type="pull_request" data-hovercard-url="/projectdiscovery/subfinder/pull/1834/hovercard" href="https://github.com/projectdiscovery/subfinder/pull/1834">#1834</a></li> <li>fix(crtsh): set statement_timeout via SQL query to avoid PgBouncer handshake rejection (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5147107924" data-permission-text="Title is private" data-url="https://github.com/projectdiscovery/subfinder/issues/1828" data-hovercard-type="issue" data-hovercard-url="/projectdiscovery/subfinder/issues/1828/hovercard" href="https://github.com/projectdiscovery/subfinder/issues/1828">#1828</a>) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gcoinstash-cmd/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gcoinstash-cmd">@gcoinstash-cmd</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5207449690" data-permission-text="Title is private" data-url="https://github.com/projectdiscovery/subfinder/issues/1832" data-hovercard-type="pull_request" data-hovercard-url="/projectdiscovery/subfinder/pull/1832/hovercard" href="https://github.com/projectdiscovery/subfinder/pull/1832">#1832</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/J12934/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/J12934">@J12934</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5081125667" data-permission-text="Title is private" data-url="https://github.com/projectdiscovery/subfinder/issues/1823" data-hovercard-type="pull_request" data-hovercard-url="/projectdiscovery/subfinder/pull/1823/hovercard" href="https://github.com/projectdiscovery/subfinder/pull/1823">#1823</a></li> <li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/adamsjack711-ux/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/adamsjack711-ux">@adamsjack711-ux</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4878715753" data-permission-text="Title is private" data-url="https://github.com/projectdiscovery/subfinder/issues/1809" data-hovercard-type="pull_request" data-hovercard-url="/projectdiscovery/subfinder/pull/1809/hovercard" href="https://github.com/projectdiscovery/subfinder/pull/1809">#1809</a></li> <li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gcoinstash-cmd/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gcoinstash-cmd">@gcoinstash-cmd</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5207449690" data-permission-text="Title is private" data-url="https://github.com/projectdiscovery/subfinder/issues/1832" data-hovercard-type="pull_request" data-hovercard-url="/projectdiscovery/subfinder/pull/1832/hovercard" href="https://github.com/projectdiscovery/subfinder/pull/1832">#1832</a></li> </ul> <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/projectdiscovery/subfinder/compare/v2.15.0...v2.16.0"><tt>v2.15.0...v2.16.0</tt></a></p> ehsandeep tag:github.com,2008:Repository/671654508/@biomejs/biome@2.5.10 2026-08-21T17:40:37Z biome: Biome CLI v2.5.10 <h2>2.5.10</h2> <h3>Patch Changes</h3> <ul> <li> <p><a href="https://github.com/biomejs/biome/pull/11403" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11403/hovercard">#11403</a> <a href="https://github.com/biomejs/biome/commit/8f7786ff62aef61cf75a91e1604cd380456a60f4"><code>8f7786f</code></a> Thanks <a href="https://github.com/Princesseuh">@Princesseuh</a>! - Fixed Astro rejecting JavaScript comments between attributes.</p> <div class="highlight highlight-source-astro notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;div /* block comment */ class=&quot;something&quot;&gt;&lt;/div&gt; &lt;Component /* c */ client:load /&gt;"><pre>&lt;<span class="pl-ent">div</span> /* <span class="pl-e">block</span> <span class="pl-e">comment</span> */ <span class="pl-e">class</span>=<span class="pl-s"><span class="pl-pds">"</span>something<span class="pl-pds">"</span></span>&gt;&lt;/<span class="pl-ent">div</span>&gt; &lt;<span class="pl-c1">Component</span> /* <span class="pl-e">c</span> */ <span class="pl-e">client:load</span> /&gt;</pre></div> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11403" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11403/hovercard">#11403</a> <a href="https://github.com/biomejs/biome/commit/8f7786ff62aef61cf75a91e1604cd380456a60f4"><code>8f7786f</code></a> Thanks <a href="https://github.com/Princesseuh">@Princesseuh</a>! - Fixed a bare <code>&lt;</code> in Astro text being treated as the start of a tag, such as <code>&lt;p&gt;5 &lt; 6 and 7 &gt; 6&lt;/p&gt;</code>. As in HTML, a <code>&lt;</code> that cannot open a tag is text and needs no escaping.</p> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11438" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11438/hovercard">#11438</a> <a href="https://github.com/biomejs/biome/commit/3133ffa9ae6beaa3c4464edac60de47d5c6f6426"><code>3133ffa</code></a> Thanks <a href="https://github.com/Princesseuh">@Princesseuh</a>! - Fixed <a href="https://github.com/biomejs/biome/issues/8294" data-hovercard-type="issue" data-hovercard-url="/biomejs/biome/issues/8294/hovercard">#8294</a>: an Astro expression holding only a comment is no longer reported as a parse error, which also stopped the whole file from being formatted.</p> <div class="highlight highlight-source-astro notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;div&gt;{/* a note */}&lt;/div&gt; &lt;div class={/* a note */}&gt;x&lt;/div&gt;"><pre>&lt;<span class="pl-ent">div</span>&gt;<span class="pl-pse">{</span><span class="pl-c"><span class="pl-c">/*</span> a note <span class="pl-c">*/</span></span><span class="pl-pse">}</span>&lt;/<span class="pl-ent">div</span>&gt; &lt;<span class="pl-ent">div</span> <span class="pl-e">class</span>=<span class="pl-pse">{</span><span class="pl-c"><span class="pl-c">/*</span> a note <span class="pl-c">*/</span></span><span class="pl-pse">}</span>&gt;x&lt;/<span class="pl-ent">div</span>&gt;</pre></div> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11403" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11403/hovercard">#11403</a> <a href="https://github.com/biomejs/biome/commit/8f7786ff62aef61cf75a91e1604cd380456a60f4"><code>8f7786f</code></a> Thanks <a href="https://github.com/Princesseuh">@Princesseuh</a>! - Fixed <a href="https://github.com/biomejs/biome/issues/9165" data-hovercard-type="issue" data-hovercard-url="/biomejs/biome/issues/9165/hovercard">#9165</a>: an empty Astro expression such as <code>&lt;div&gt;{}&lt;/div&gt;</code> no longer fails to parse. Astro renders <code>{}</code> as nothing.</p> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11403" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11403/hovercard">#11403</a> <a href="https://github.com/biomejs/biome/commit/8f7786ff62aef61cf75a91e1604cd380456a60f4"><code>8f7786f</code></a> Thanks <a href="https://github.com/Princesseuh">@Princesseuh</a>! - Fixed Astro expressions containing a comment failing to parse.</p> <div class="highlight highlight-source-astro notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;div&gt;{/* block comment */ x}&lt;/div&gt; &lt;div&gt;{/* only a comment */}&lt;/div&gt;"><pre>&lt;<span class="pl-ent">div</span>&gt;<span class="pl-pse">{</span><span class="pl-c"><span class="pl-c">/*</span> block comment <span class="pl-c">*/</span></span> <span class="pl-smi">x</span><span class="pl-pse">}</span>&lt;/<span class="pl-ent">div</span>&gt; &lt;<span class="pl-ent">div</span>&gt;<span class="pl-pse">{</span><span class="pl-c"><span class="pl-c">/*</span> only a comment <span class="pl-c">*/</span></span><span class="pl-pse">}</span>&lt;/<span class="pl-ent">div</span>&gt;</pre></div> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11403" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11403/hovercard">#11403</a> <a href="https://github.com/biomejs/biome/commit/8f7786ff62aef61cf75a91e1604cd380456a60f4"><code>8f7786f</code></a> Thanks <a href="https://github.com/Princesseuh">@Princesseuh</a>! - Added support for Astro's fragment shorthand.</p> <div class="highlight highlight-source-astro notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;&gt; &lt;p&gt;a&lt;/p&gt; &lt;/&gt;"><pre>&lt;&gt; &lt;<span class="pl-ent">p</span>&gt;a&lt;/<span class="pl-ent">p</span>&gt; &lt;/&gt;</pre></div> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11403" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11403/hovercard">#11403</a> <a href="https://github.com/biomejs/biome/commit/8f7786ff62aef61cf75a91e1604cd380456a60f4"><code>8f7786f</code></a> Thanks <a href="https://github.com/Princesseuh">@Princesseuh</a>! - Fixed an Astro frontmatter block being cut short by a closing tag inside a string or comment.</p> <div class="highlight highlight-source-astro notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="--- const a = &quot;&lt;/script&gt;&quot;; // &lt;/script&gt; in a comment ---"><pre><span class="pl-c">---</span><span class="pl-s1"></span> <span class="pl-s1"><span class="pl-k"><span class="pl-k">const</span></span> a <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>&lt;/script&gt;<span class="pl-pds">"</span></span>;</span> <span class="pl-s1"><span class="pl-c"><span class="pl-c">//</span> &lt;/script&gt; in a comment</span></span> <span class="pl-s1"></span><span class="pl-c">---</span></pre></div> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11403" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11403/hovercard">#11403</a> <a href="https://github.com/biomejs/biome/commit/8f7786ff62aef61cf75a91e1604cd380456a60f4"><code>8f7786f</code></a> Thanks <a href="https://github.com/Princesseuh">@Princesseuh</a>! - Fixed <code>---</code> being read as an Astro frontmatter fence when markup precedes it. Astro only recognizes frontmatter at the very start of a file, so a file opening with a comment now has no frontmatter, and its <code>---</code> lines are content.</p> <div class="highlight highlight-source-astro notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;!-- c --&gt; --- this is text, not frontmatter ---"><pre><span class="pl-c"><span class="pl-c">&lt;!--</span> c <span class="pl-c">--&gt;</span></span> --- this is text, not frontmatter ---</pre></div> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11403" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11403/hovercard">#11403</a> <a href="https://github.com/biomejs/biome/commit/8f7786ff62aef61cf75a91e1604cd380456a60f4"><code>8f7786f</code></a> Thanks <a href="https://github.com/Princesseuh">@Princesseuh</a>! - Fixed an Astro frontmatter block ending early on a line that merely starts with a dash.</p> <div class="highlight highlight-source-astro notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="--- --count; ---"><pre><span class="pl-c">---</span><span class="pl-s1"></span> <span class="pl-s1"><span class="pl-k">--</span><span class="pl-smi">count</span>;</span> <span class="pl-s1"></span><span class="pl-c">---</span></pre></div> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11403" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11403/hovercard">#11403</a> <a href="https://github.com/biomejs/biome/commit/8f7786ff62aef61cf75a91e1604cd380456a60f4"><code>8f7786f</code></a> Thanks <a href="https://github.com/Princesseuh">@Princesseuh</a>! - Fixed the children of an Astro element carrying <code>is:raw</code> being parsed as markup instead of raw text. This now also covers <code>&lt;script&gt;</code> and <code>&lt;style&gt;</code>, whose contents Astro emits verbatim rather than processing, so they are no longer linted as JavaScript or CSS.</p> <div class="highlight highlight-source-astro notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;article is:raw&gt;&lt;% awesome %&gt;&lt;/article&gt; &lt;script is:raw&gt;{{ mustache }}&lt;/script&gt;"><pre>&lt;<span class="pl-ent">article</span><span class="pl-s1"> <span class="pl-e">is:raw</span>&gt;&lt;% awesome %&gt;</span>&lt;/<span class="pl-ent">article</span>&gt; &lt;<span class="pl-ent">script</span><span class="pl-s1"> <span class="pl-e">is:raw</span>&gt;{{ mustache }}</span>&lt;/<span class="pl-ent">script</span>&gt;</pre></div> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11403" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11403/hovercard">#11403</a> <a href="https://github.com/biomejs/biome/commit/8f7786ff62aef61cf75a91e1604cd380456a60f4"><code>8f7786f</code></a> Thanks <a href="https://github.com/Princesseuh">@Princesseuh</a>! - Fixed Astro rejecting attribute names that start with a colon, such as <code>:href</code>.</p> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11403" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11403/hovercard">#11403</a> <a href="https://github.com/biomejs/biome/commit/8f7786ff62aef61cf75a91e1604cd380456a60f4"><code>8f7786f</code></a> Thanks <a href="https://github.com/Princesseuh">@Princesseuh</a>! - Fixed the Astro parser failing to recover from a malformed closing tag such as <code>&lt;div&gt;&lt;/{&lt;//</code>, so that a later mistake is reported where it happens rather than cascading.</p> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11403" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11403/hovercard">#11403</a> <a href="https://github.com/biomejs/biome/commit/8f7786ff62aef61cf75a91e1604cd380456a60f4"><code>8f7786f</code></a> Thanks <a href="https://github.com/Princesseuh">@Princesseuh</a>! - Fixed <code>{</code> inside an Astro <code>&lt;math&gt;</code> element opening an expression. MathML is foreign content where Astro parses no expressions, so LaTeX such as <code>R^{2x}</code> now survives as text. <code>&lt;svg&gt;</code> is unaffected.</p> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11403" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11403/hovercard">#11403</a> <a href="https://github.com/biomejs/biome/commit/8f7786ff62aef61cf75a91e1604cd380456a60f4"><code>8f7786f</code></a> Thanks <a href="https://github.com/Princesseuh">@Princesseuh</a>! - Fixed <code>{{</code> at the start of an Astro expression being read as an interpolation. Astro has no <code>{{ }}</code> syntax, so <code>{{ a: 1 }}</code> and <code>&lt;Comp a={{ b: 1 }} /&gt;</code> are object literals.</p> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11403" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11403/hovercard">#11403</a> <a href="https://github.com/biomejs/biome/commit/8f7786ff62aef61cf75a91e1604cd380456a60f4"><code>8f7786f</code></a> Thanks <a href="https://github.com/Princesseuh">@Princesseuh</a>! - Fixed expressions inside an Astro <code>&lt;pre&gt;</code> or <code>&lt;textarea&gt;</code> being read as raw text. Astro parses both as ordinary elements, so their markup and interpolations are now parsed, and a variable used only inside one is no longer reported as unused.</p> <div class="highlight highlight-source-astro notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;pre&gt;{value}&lt;/pre&gt; &lt;textarea&gt;&lt;div&gt;{value}&lt;/div&gt;&lt;/textarea&gt;"><pre>&lt;<span class="pl-ent">pre</span>&gt;<span class="pl-pse">{</span><span class="pl-smi">value</span><span class="pl-pse">}</span>&lt;/<span class="pl-ent">pre</span>&gt; &lt;<span class="pl-ent">textarea</span>&gt;&lt;<span class="pl-ent">div</span>&gt;<span class="pl-pse">{</span><span class="pl-smi">value</span><span class="pl-pse">}</span>&lt;/<span class="pl-ent">div</span>&gt;&lt;/<span class="pl-ent">textarea</span>&gt;</pre></div> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11403" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11403/hovercard">#11403</a> <a href="https://github.com/biomejs/biome/commit/8f7786ff62aef61cf75a91e1604cd380456a60f4"><code>8f7786f</code></a> Thanks <a href="https://github.com/Princesseuh">@Princesseuh</a>! - Added support for template literal attribute values in Astro, such as <code>&lt;div class=`a ${b} c`&gt;</code>.</p> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11403" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11403/hovercard">#11403</a> <a href="https://github.com/biomejs/biome/commit/8f7786ff62aef61cf75a91e1604cd380456a60f4"><code>8f7786f</code></a> Thanks <a href="https://github.com/Princesseuh">@Princesseuh</a>! - Fixed Astro rejecting HTML5 unquoted attribute values that contain <code>`</code>, <code>=</code>, <code>'</code> or <code>"</code>, such as <code>&lt;a href=a=b&gt;</code> and <code>&lt;a href=a'b&gt;</code>.</p> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11393" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11393/hovercard">#11393</a> <a href="https://github.com/biomejs/biome/commit/dec5a8fadcb565867526e51da0895c2be27400bb"><code>dec5a8f</code></a> Thanks <a href="https://github.com/1678092075">@1678092075</a>! - Fixed <a href="https://github.com/biomejs/biome/issues/11207" data-hovercard-type="issue" data-hovercard-url="/biomejs/biome/issues/11207/hovercard">#11207</a>: <a href="https://biomejs.dev/linter/rules/use-strict-mode/" rel="nofollow"><code>useStrictMode</code></a> no longer reports Vue event handlers such as <code>@click="count++"</code>.</p> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11431" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11431/hovercard">#11431</a> <a href="https://github.com/biomejs/biome/commit/c065f995909d16cbf98c247a280a48c156aeb61f"><code>c065f99</code></a> Thanks <a href="https://github.com/levrik">@levrik</a>! - Fixed <a href="https://github.com/biomejs/biome/issues/11429" data-hovercard-type="issue" data-hovercard-url="/biomejs/biome/issues/11429/hovercard">#11429</a>: Variables and imports used by Vue same-name bindings such as <code>:disabled</code> or <code>v-bind:disabled</code> are no longer reported as unused.</p> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11409" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11409/hovercard">#11409</a> <a href="https://github.com/biomejs/biome/commit/405dedb0ff65dd29927faf587f6542e3c29db248"><code>405dedb</code></a> Thanks <a href="https://github.com/ematipico">@ematipico</a>! - Fixed a memory leak in the LSP server where memory usage kept growing over long editor sessions.</p> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11422" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11422/hovercard">#11422</a> <a href="https://github.com/biomejs/biome/commit/a51eff7f7ca71e8786a2f0db1d560455b83ce21c"><code>a51eff7</code></a> Thanks <a href="https://github.com/dyc3">@dyc3</a>! - Fixed <a href="https://github.com/biomejs/biome/issues/11416" data-hovercard-type="issue" data-hovercard-url="/biomejs/biome/issues/11416/hovercard">#11416</a>: Biome no longer crashes when parsing incomplete <code>{let}</code> or <code>{const}</code> declarations in Svelte files.</p> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11378" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11378/hovercard">#11378</a> <a href="https://github.com/biomejs/biome/commit/34b715cb417d482bfb4630c05a576b748c8faa8b"><code>34b715c</code></a> Thanks <a href="https://github.com/Netail">@Netail</a>! - Added extra rule sources from <code>@eslint/css</code>. <code>biome migrate eslint</code> detects rules in your eslint configurations more reliably.</p> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11403" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11403/hovercard">#11403</a> <a href="https://github.com/biomejs/biome/commit/8f7786ff62aef61cf75a91e1604cd380456a60f4"><code>8f7786f</code></a> Thanks <a href="https://github.com/Princesseuh">@Princesseuh</a>! - Fixed <code>{#</code>, <code>{/</code>, <code>{:</code> and <code>{@</code> being read as Svelte block openings in every HTML-like file. They are now Svelte-only, so in HTML, Vue and Angular files a sequence such as <code>{#if x}</code> is ordinary text instead of a parse error.</p> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11443" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11443/hovercard">#11443</a> <a href="https://github.com/biomejs/biome/commit/8d452293d04272c876b0414292540645cfea87e4"><code>8d45229</code></a> Thanks <a href="https://github.com/ematipico">@ematipico</a>! - Fixed <a href="https://github.com/biomejs/biome/issues/11390" data-hovercard-type="issue" data-hovercard-url="/biomejs/biome/issues/11390/hovercard">#11390</a>: <a href="https://biomejs.dev/linter/rules/no-floating-promises/" rel="nofollow"><code>noFloatingPromises</code></a> no longer performs unnecessary type inference on call arguments when checking methods of non-generic class instances created with <code>new</code>.</p> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11425" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11425/hovercard">#11425</a> <a href="https://github.com/biomejs/biome/commit/9c2667ba2010441054bc0b54a1a810e851207560"><code>9c2667b</code></a> Thanks <a href="https://github.com/dyc3">@dyc3</a>! - Fixed <a href="https://github.com/biomejs/biome/issues/6426" data-hovercard-type="issue" data-hovercard-url="/biomejs/biome/issues/6426/hovercard">#6426</a>: GritQL plugins now match and rewrite metavariables embedded in quoted strings.</p> </li> <li> <p><a href="https://github.com/biomejs/biome/pull/11441" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11441/hovercard">#11441</a> <a href="https://github.com/biomejs/biome/commit/00317c353a65214d8f4cb0f2d930d7c4e1f305dd"><code>00317c3</code></a> Thanks <a href="https://github.com/dyc3">@dyc3</a>! - Improved performance of <a href="https://biomejs.dev/linter/rules/use-named-capture-group/" rel="nofollow"><code>useNamedCaptureGroup</code></a>, <a href="https://biomejs.dev/linter/rules/no-misplaced-assertion/" rel="nofollow"><code>noMisplacedAssertion</code></a>, <a href="https://biomejs.dev/linter/rules/no-skipped-tests/" rel="nofollow"><code>noSkippedTests</code></a>, <a href="https://biomejs.dev/linter/rules/no-exports-in-test/" rel="nofollow"><code>noExportsInTest</code></a>, <a href="https://biomejs.dev/linter/rules/no-duplicate-test-hooks/" rel="nofollow"><code>noDuplicateTestHooks</code></a>, <a href="https://biomejs.dev/linter/rules/no-identical-test-title/" rel="nofollow"><code>noIdenticalTestTitle</code></a>, <a href="https://biomejs.dev/linter/rules/use-test-hooks-in-order/" rel="nofollow"><code>useTestHooksInOrder</code></a>, and <a href="https://biomejs.dev/linter/rules/use-test-hooks-on-top/" rel="nofollow"><code>useTestHooksOnTop</code></a>.</p> </li> </ul> <h2>What's Changed</h2> <ul> <li>refactor(analyze): avoid boxed rule state strings by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dyc3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dyc3">@dyc3</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5176006237" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11385" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11385/hovercard" href="https://github.com/biomejs/biome/pull/11385">#11385</a></li> <li>ci: fix advistories by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ematipico/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ematipico">@ematipico</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5180794325" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11391" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11391/hovercard" href="https://github.com/biomejs/biome/pull/11391">#11391</a></li> <li>chore: update <code>spin</code> to resolve yanked package warning by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dyc3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dyc3">@dyc3</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5180862649" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11392" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11392/hovercard" href="https://github.com/biomejs/biome/pull/11392">#11392</a></li> <li>fix(useStrictMode): ignore Vue event handlers by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/1678092075/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/1678092075">@1678092075</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5181751791" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11393" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11393/hovercard" href="https://github.com/biomejs/biome/pull/11393">#11393</a></li> <li>refactor(core): settings as tracked functions by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ematipico/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ematipico">@ematipico</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5164817875" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11363" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11363/hovercard" href="https://github.com/biomejs/biome/pull/11363">#11363</a></li> <li>feat(md): frontmatter parsing support by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ematipico/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ematipico">@ematipico</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5182979933" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11395" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11395/hovercard" href="https://github.com/biomejs/biome/pull/11395">#11395</a></li> <li>chore: add CodSpeed and Cloudflare to sponsors by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ematipico/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ematipico">@ematipico</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5191556594" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11410" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11410/hovercard" href="https://github.com/biomejs/biome/pull/11410">#11410</a></li> <li>chore: missing rule sources by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Netail/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Netail">@Netail</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5172223276" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11378" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11378/hovercard" href="https://github.com/biomejs/biome/pull/11378">#11378</a></li> <li>chore: replace cargo-audit with cargo-deny by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Netail/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Netail">@Netail</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5192579322" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11413" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11413/hovercard" href="https://github.com/biomejs/biome/pull/11413">#11413</a></li> <li>feat(js_plugin): runtime AST bindings for JS plugins by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/siketyan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/siketyan">@siketyan</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4895222582" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/10954" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/10954/hovercard" href="https://github.com/biomejs/biome/pull/10954">#10954</a></li> <li>chore: split just test-lintrule by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Netail/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Netail">@Netail</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5193518143" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11414" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11414/hovercard" href="https://github.com/biomejs/biome/pull/11414">#11414</a></li> <li>feat(js_plugin): query AST nodes by their kind by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/siketyan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/siketyan">@siketyan</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5193676627" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11415" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11415/hovercard" href="https://github.com/biomejs/biome/pull/11415">#11415</a></li> <li>fix(core): files eviction and project by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ematipico/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ematipico">@ematipico</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5190691048" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11409" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11409/hovercard" href="https://github.com/biomejs/biome/pull/11409">#11409</a></li> <li>fix(parse/js): handle incomplete declarations more gracefully by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dyc3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dyc3">@dyc3</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5195297864" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11422" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11422/hovercard" href="https://github.com/biomejs/biome/pull/11422">#11422</a></li> <li>fix(grit): handle metavariables inside quoted strings by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dyc3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dyc3">@dyc3</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5198597696" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11425" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11425/hovercard" href="https://github.com/biomejs/biome/pull/11425">#11425</a></li> <li>chore(wasm): enable JS plugins via <code>unstable</code> feature by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/siketyan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/siketyan">@siketyan</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5195130919" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11421" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11421/hovercard" href="https://github.com/biomejs/biome/pull/11421">#11421</a></li> <li>feat(js_transform): erase type annotations in TypeScript code by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/siketyan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/siketyan">@siketyan</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5194301398" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11417" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11417/hovercard" href="https://github.com/biomejs/biome/pull/11417">#11417</a></li> <li>fix(html/parser): correct Astro document parsing by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Princesseuh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Princesseuh">@Princesseuh</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5188418214" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11403" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11403/hovercard" href="https://github.com/biomejs/biome/pull/11403">#11403</a></li> <li>fix(visitor): register references from Vue same-name bindings by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/levrik/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/levrik">@levrik</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5202698786" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11431" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11431/hovercard" href="https://github.com/biomejs/biome/pull/11431">#11431</a></li> <li>refactor(deserialize): type-erased visitor for reduce binary size by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/siketyan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/siketyan">@siketyan</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5200634058" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11428" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11428/hovercard" href="https://github.com/biomejs/biome/pull/11428">#11428</a></li> <li>fix(js_plugin): use web-time clock on Boa engine by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/siketyan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/siketyan">@siketyan</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5204838855" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11434" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11434/hovercard" href="https://github.com/biomejs/biome/pull/11434">#11434</a></li> <li>fix(tools): conformance checkout by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ematipico/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ematipico">@ematipico</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5212339251" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11444" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11444/hovercard" href="https://github.com/biomejs/biome/pull/11444">#11444</a></li> <li>fix(js/parser): accept comment-only Astro template expressions by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Princesseuh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Princesseuh">@Princesseuh</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5206770956" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11438" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11438/hovercard" href="https://github.com/biomejs/biome/pull/11438">#11438</a></li> <li>fix(inference): use local inference for constructor dependent members by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ematipico/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ematipico">@ematipico</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5212052117" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11443" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11443/hovercard" href="https://github.com/biomejs/biome/pull/11443">#11443</a></li> <li>perf(lint/js): optimize some rule queries and unit test call shared logic by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dyc3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dyc3">@dyc3</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5209587073" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11441" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11441/hovercard" href="https://github.com/biomejs/biome/pull/11441">#11441</a></li> <li>fix(parse/js): handle incomplete svelte declarations even more by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dyc3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dyc3">@dyc3</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5215202583" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11448" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11448/hovercard" href="https://github.com/biomejs/biome/pull/11448">#11448</a></li> <li>ci: release by @github-actions[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5215889529" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11450" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11450/hovercard" href="https://github.com/biomejs/biome/pull/11450">#11450</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/1678092075/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/1678092075">@1678092075</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5181751791" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11393" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11393/hovercard" href="https://github.com/biomejs/biome/pull/11393">#11393</a></li> <li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/levrik/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/levrik">@levrik</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5202698786" data-permission-text="Title is private" data-url="https://github.com/biomejs/biome/issues/11431" data-hovercard-type="pull_request" data-hovercard-url="/biomejs/biome/pull/11431/hovercard" href="https://github.com/biomejs/biome/pull/11431">#11431</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/biomejs/biome/compare/@biomejs/biome@2.5.9...@biomejs/biome@2.5.10">https://github.com/biomejs/biome/compare/@biomejs/biome@2.5.9...@biomejs/biome@2.5.10</a></p> github-actions[bot] tag:github.com,2008:Repository/1305551246/v1.11 2026-08-21T10:42:29Z gander: Gander 1.11 <p>This one is mostly about documents Gander could open but would not, and about files it was only ever handed a look at.</p> <h3>Password-protected PDFs</h3> <p>(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5115510452" data-permission-text="Title is private" data-url="https://github.com/mokshablr/gander/issues/11" data-hovercard-type="issue" data-hovercard-url="/mokshablr/gander/issues/11/hovercard" href="https://github.com/mokshablr/gander/issues/11">#11</a>, thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/juxuanu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/juxuanu">@juxuanu</a>)</p> <p>A PDF that wants a password now asks you for it. Type it and the document opens. Get it wrong and it says so and lets you try again, as often as you like, and none of that rereads the file.</p> <p>Before this the renderer raised its password error and the viewer showed you the raw text of it, which is about the least useful thing it could say.</p> <p>The prompt is drawn in the page rather than as an Android dialog. Gander has no bridge between a document and the app in either direction, and that absence is most of what keeps an untrusted file from reaching the app, so a password is not worth opening one for.</p> <p>Nothing is kept. The password lives as long as the document is on screen and goes when you leave.</p> <p>A file encrypted in a way the renderer cannot read at all now says so in a sentence too, rather than printing the exception at you.</p> <h3>Save a copy</h3> <p>(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5194374090" data-permission-text="Title is private" data-url="https://github.com/mokshablr/gander/issues/15" data-hovercard-type="issue" data-hovercard-url="/mokshablr/gander/issues/15/hovercard" href="https://github.com/mokshablr/gander/issues/15">#15</a>, thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sebestyn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sebestyn">@sebestyn</a>)</p> <p>The file you are looking at can be kept, through <strong>Save a copy</strong> in the viewer menu.</p> <p>It is meant for the file that came from somewhere else: an attachment, or a document another app hands over, which Gander is allowed to read only for as long as that screen is open and which is out of reach once you leave.</p> <p>Where the copy goes is chosen in Android's own picker, so this asks for no permission, and Gander is handed the one file it just wrote and nothing around it.</p> <p>A large copy reports its progress under the toolbar. One that fails takes its half-written file with it, rather than leaving something that opens and looks complete.</p> <h3>A document left open no longer takes the app down with it</h3> <p>(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5126368845" data-permission-text="Title is private" data-url="https://github.com/mokshablr/gander/issues/12" data-hovercard-type="issue" data-hovercard-url="/mokshablr/gander/issues/12/hovercard" href="https://github.com/mokshablr/gander/issues/12">#12</a>, thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rosyzc7/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rosyzc7">@rosyzc7</a>)</p> <p>Everything the sandboxed viewer draws, PDFs included, is rendered in a process of its own, and Android is free to end that process when memory runs short. Sharing a file to a large app is exactly that situation: the other app starts up in front, and the process holding the document is left with nobody looking at it.</p> <p>Gander had never answered that notification, and not answering it does not mean nothing happens. It means the framework closes the application. So the app disappeared with no crash of its own behind it and nothing on screen to account for it.</p> <p>It now stays open, says that Android closed the document to free up memory, and offers to load it again.</p> <h3>Messages in the PDF viewer are drawn at a readable size</h3> <p>A PDF page is laid out at a fixed width and zoomed to fit, which is what keeps it sharp. The cards the viewer puts on screen had been quietly riding along with that, at about a third of the size they were meant to be. The card explaining that a phone's browser engine is too old for PDFs was one of them.</p> <p>They are sized for that zoom now rather than against it.</p> <h3>Install</h3> <p><code>Gander-1.11.apk</code> runs on every phone. The app ships no native code, so there is no architecture to choose.</p> <p>Viewing PDFs needs Android System WebView 125 or newer (May 2024). Any phone still receiving WebView updates is well past that.</p> <p>Verify before installing if you like. Signing certificate SHA-256:</p> <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="5B:5C:F6:4A:94:23:7C:D5:F0:E0:85:76:00:38:BC:1C:EB:DF:18:DA:BA:5C:B3:EA:CA:7C:15:9F:22:A7:E2:4B"><pre class="notranslate"><code>5B:5C:F6:4A:94:23:7C:D5:F0:E0:85:76:00:38:BC:1C:EB:DF:18:DA:BA:5C:B3:EA:CA:7C:15:9F:22:A7:E2:4B </code></pre></div> <hr> <p><strong>Help get Gander onto the Play Store.</strong> Publishing from a personal developer account needs 12 testers opted in for 14 days, and Google now checks they actually used the app rather than just installing it. If you can spare two minutes: join <code>gander-testers@googlegroups.com</code> with your Play Store Google account, then use this opt-in link โ€” <a href="https://play.google.com/apps/testing/com.arjun.gander" rel="nofollow">https://play.google.com/apps/testing/com.arjun.gander</a> โ€” and set it as your default PDF viewer for two weeks. Details in the <a href="https://github.com/mokshablr/gander/discussions/14" data-hovercard-type="discussion" data-hovercard-url="/mokshablr/gander/discussions/14/hovercard">pinned Discussion</a>.</p> mokshablr tag:github.com,2008:Repository/1305267222/v1.0.2 2026-08-20T23:38:43Z Obsidian-B7000: v1.0.2 <p>Add Intel MacOS version (Untested as I don't have an intel mac)</p> github-actions[bot] tag:github.com,2008:Repository/1296938385/v1.0.2 2026-08-20T23:34:26Z NoAmp-Low-Rider-DI: NoAmpLowRiderDI v1.0.2 <p>Add Intel MacOS version (Untested as I don't have an intel mac)</p> github-actions[bot] tag:github.com,2008:Repository/1305551246/v1.10 2026-08-18T19:29:10Z gander: Gander 1.10 <p>This one is mostly about making Gander's claims checkable rather than just stated. There is also a real fix for phones whose WebView comes from the manufacturer, where PDFs had been failing with a confusing error.</p> <h3>An About screen that asks rather than asserts</h3> <p>There is an About screen now, in the menu on the home screen. The permission line on it does not repeat a promise typed in months ago. It asks Android what this install actually requests, and shows you the answer.</p> <p>The build has always failed if a dependency slipped a permission in. This is the same check, put somewhere you can see it without taking my word for anything.</p> <h3>The licences now travel with the app</h3> <p>The full licence text for every bundled rendering library ships inside the APK and opens from About, drawn by Gander's own Markdown viewer.</p> <p>They were in the repository before, which is not the same thing. Apache-2.0 ยง4(a) and the MIT and BSD notice clauses ask that the notices travel with the binary, not that they exist somewhere on the internet.</p> <h3>Gander has left Android's app backup</h3> <p>Gander no longer takes part in Android's app backup. The recents list was the only thing there was to copy, and a restored one is always empty anyway, because the folder permissions it points at do not survive being moved to another phone.</p> <p>So it was putting your file names into a Drive backup in exchange for nothing, and putting an asterisk on the one claim the app is built around.</p> <h3>PDFs on phones whose WebView comes from the manufacturer</h3> <p>(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="5107862055" data-permission-text="Title is private" data-url="https://github.com/mokshablr/gander/issues/9" data-hovercard-type="issue" data-hovercard-url="/mokshablr/gander/issues/9/hovercard" href="https://github.com/mokshablr/gander/issues/9">#9</a>, thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sdiddssew/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sdiddssew">@sdiddssew</a>)</p> <p>The check that decides whether a phone can render PDFs read the version off the WebView package. A manufacturer numbering its own builds <code>15.0.4.326</code> was read as version 15, dismissed as not a real version, and let through. Those phones then failed on the PDF with a parser error naming a file nobody has heard of.</p> <p>The version now comes from the browser engine itself, which reports it the same way no matter who makes the phone.</p> <p>Where the WebView is supplied by the manufacturer and cannot be replaced, the message no longer tells you to go and update something you have no way to update. It says PDFs will not work on this phone, and leads with the fact that every other format still opens, which is the part you can act on.</p> <h3>Install</h3> <p><code>Gander-1.10.apk</code> runs on every phone. The app ships no native code, so there is no architecture to choose.</p> <p>Viewing PDFs needs Android System WebView 125 or newer (May 2024). Any phone still receiving WebView updates is well past that.</p> <p>Verify before installing if you like. Signing certificate SHA-256:</p> <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="5B:5C:F6:4A:94:23:7C:D5:F0:E0:85:76:00:38:BC:1C:EB:DF:18:DA:BA:5C:B3:EA:CA:7C:15:9F:22:A7:E2:4B"><pre class="notranslate"><code>5B:5C:F6:4A:94:23:7C:D5:F0:E0:85:76:00:38:BC:1C:EB:DF:18:DA:BA:5C:B3:EA:CA:7C:15:9F:22:A7:E2:4B </code></pre></div> <hr> <p><strong>Help get Gander onto the Play Store.</strong> Publishing from a personal developer account needs 12 testers opted in for 14 days, and Google now checks they actually used the app rather than just installing it. If you can spare two minutes: join <code>gander-testers@googlegroups.com</code> with your Play Store Google account, then use this opt-in link โ€” <a href="https://play.google.com/apps/testing/com.arjun.gander" rel="nofollow">https://play.google.com/apps/testing/com.arjun.gander</a> โ€” and set it as your default PDF viewer for two weeks. Details in the <a href="https://github.com/mokshablr/gander/discussions/14" data-hovercard-type="discussion" data-hovercard-url="/mokshablr/gander/discussions/14/hovercard">pinned Discussion</a>.</p> mokshablr