commit 1d03a771727b6b158d4675442c41d3280d9eee88
Author: Loi Nguyen <vanloi999@gmail.com>
Date:   Fri Jul 31 13:58:04 2026 +0700

    vfs: make poll shutdown lifecycle deterministic

commit d5275c4ebb82ef7ffe8406c2049f29c78a8b6446
Author: Loi Nguyen <vanloi999@gmail.com>
Date:   Fri Jul 31 12:39:05 2026 +0700

    vfs: test poll interval update lifecycle

commit f132aef2958f21d127d614db8ea150d33eef4412
Author: Loi Nguyen <vanloi999@gmail.com>
Date:   Fri Jul 31 12:38:22 2026 +0700

    vfs: synchronize poll updates with shutdown - fixes #9689

commit f4e231b094f9bb26b2d8cc3c081c8601ab4fa8fd
Author: Loi Nguyen <vanloi999@gmail.com>
Date:   Sat Aug 1 18:36:59 2026 +0700

    drive: fetch metadata permissions concurrently - fixes #9682
    
    Before this change permission metadata fetches were serialized by the permission cache mutex.

commit 8c8062da782e7cb5e6dca977736350aee6b5a7be
Author: Loi Nguyen <vanloi999@gmail.com>
Date:   Sat Aug 1 18:33:32 2026 +0700

    dropbox: preserve Paper export paths on lookup - fixes #9691
    
    Direct lookups of exported Dropbox Paper files retained the
    caller-visible extension before export metadata processing appended it
    again. Track when metadata was resolved through an export path so the
    object keeps the requested remote name while listing behavior remains
    unchanged.

commit 7f6207fae2386d747347199936d56a105cbdf557
Author: Loi Nguyen <vanloi999@gmail.com>
Date:   Fri Jul 31 00:06:00 2026 +0700

    lib/batcher: prevent commits racing shutdown - fixes #9687

commit 5dd34275dcbb485de2f6f7ce5d52242237c191f3
Author: am-at-enrollvb <arthur.melton@enrollvb.com>
Date:   Sat Aug 1 11:25:06 2026 +0000

    serve: pass the client IP address to the auth proxy - fixes #4499
    
    The auth proxy was only given the user and their password or public
    key, so a proxy program had no way to restrict logins to particular
    networks, or to record where an authentication attempt came from.
    
    The JSON sent to the program now has a client_ip key holding the bare
    IP the client connected from, with the port stripped so IPv6 arrives
    as 2001:db8::1 rather than [2001:db8::1]:52344. An IPv4-mapped IPv6
    address is reported as plain IPv4 so that a client arriving over a
    dual-stack listener still matches IPv4 networks. The key is omitted
    when the client has no IP address.
    
    The IP is also mixed into the backend cache key. That is needed as the
    program is only run on a cache miss, so a client from a
    non-allowlisted address presenting valid credentials within the 5
    minute cache lifetime would get a cache hit and be let in without the
    program being consulted at all.

commit 7804c1b315a5e74378611aada900c791a9fa7cd8
Author: SillyZir <269283839+SillyZir@users.noreply.github.com>
Date:   Mon Jul 20 22:49:57 2026 -0400

    serve nfs: fix EIO when creating symlinks with --vfs-links
    
    The macOS NFS client sends SETATTR after SYMLINK, which arrives as
    Chmod/Chown on the link path. These opened the target with vfs.Open,
    which follows symlinks - a freshly created symlink usually dangles, so
    the open failed with ENOENT, surfaced to the client as NFS3ERR_IO even
    though the link was created.
    
    Add path-based VFS.Chmod and VFS.Chown mirroring VFS.Chtimes. They do
    not follow symlinks (lstat semantics, matching VFS.Stat) and return
    ENOSYS when the node exists, since the VFS stores neither permissions
    nor ownership; serve nfs calls them and masks ENOSYS as before.
    
    Fixes #9627

commit 060b9975951d1d9dfa9f576384934d46b02d99f6
Author: acoeur <7315110+forestrock@users.noreply.github.com>
Date:   Fri Jul 31 19:41:46 2026 -0400

    azureblob: enable on Solaris
    
    The azure SDK didn't used to compile on Solaris, but now it does.

commit 39d8e83a12c0d265ceee981cd4495cf6ac4890f5
Author: Nick Craig-Wood <nick@craig-wood.com>
Date:   Fri Jul 31 18:21:36 2026 +0100

    Start v1.76.0-DEV development
