WebDAV validates connections and preserves directory listings, with CI checking every change #1
Reference in New Issue
Block a user
Delete Branch "fix-directory-listing"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Connections validate their root, preserve password spaces and literal remote names, and identify their own directory regardless of response order or root redirects.
Added cached CI for formatting, strict Clippy, tests and the WASM build, plus AI bot review. Schema 2 removes manifest host lists and requires the updated Memona.
All 17 unit tests pass. Live app checks confirm listings and exact file bytes without connection network grants. Captures use the updated app.
✅ Approved
Connection validation, canonical listing paths, authentication handling, and CI meet the PR requirements.
Checks
cargo fmt --checkcargo clippy --locked --all-targets -- -D warningscargo test --locked --lib(17 passed)cargo build --locked --release --target wasm32-wasip2bae6e3dStrengths
Declined to judge
@bot please review the new head: schema 2 removes networkHosts entirely, setup no longer asks for duplicate host/port grants, and WIT comments match the updated Memona contract. The user explicitly selected unrestricted public hosts; Private network remains required for LAN. Existing tests, strict checks, WASM build and complete schema 2 package validation pass. Memona compatibility changes are in lead/memona#1154.
✅ Approved
Schema 2 manifest, permission guidance, and updated contract comments meet the requested change.
Checks
cargo fmt --checkcargo clippy --locked --all-targets -- -D warningscargo test --locked --lib(17 passed)cargo build --locked --release --target wasm32-wasip2631ea9dStrengths
Declined to judge
@bot please review this head, including current Memona network behavior, literal remote paths, root validation, and the native test export guard.
🛑 Changes requested
Restore the required private-network grant for LAN, link-local, and loopback access in the copied contract and README.
Important
Private-network contract
wit/filesystem.wit: LAN and loopback access is documented as unrestricted, but the updated Memona contract still requires the connection's private-network grant. Restore that requirement for HTTP, TCP, and UDP.Connection guide
README.md: Do not tell users that LAN, link-local, and localhost addresses work without a separate permission; they require the private-network grant.Strengths
networkHosts, preserves declared ports, and the canonical-root handling has focused coverage.Checks
cargo fmt --checkcargo clippy --locked --all-targets -- -D warningscargo test --locked --lib— 17 passedcargo build --locked --release --target wasm32-wasip2Declined
@@ -15,6 +17,9 @@ It registers one provider, `webdav`, for the `webdav` and `davs` schemes.| Username | Optional account name for HTTP basic authentication || Password | Optional password, stored as a secret |Public, LAN, VPN, link-local and localhost addresses work directly from theLAN, link-local, and localhost addresses require the private-network grant. Update this guidance so users are prompted for the permission instead of being told none is needed.
@@ -40,3 +38,1 @@/// pinned. Private/LAN addresses additionally require the private-network/// grant. Cross-origin redirects remove request headers; HTTPS cannot/// downgrade. The host bounds total bytes per exchange, not buffer size./// Begins a request to any HTTP or HTTPS host, including LAN and loopbackLAN and loopback access still requires the connection's private-network grant. Restore that requirement here; otherwise this copied contract tells plugin authors that private hosts are reachable without consent.
@@ -55,3 +53,1 @@/// granted on the connection. The host resolves and pins DNS, applies the/// same private-address rule as `http`, and starts TLS when asked. Ports/// negotiated at runtime, such as an FTP data channel, still need a grant./// Opens a socket to any host, including LAN and loopback addresses, on aThe private-network grant applies to TCP too. Keep that constraint in the socket documentation so it matches HTTP and the host's enforcement.
@@ -67,3 +66,2 @@}/// Connects a datagram socket under the same declaration and grant rules/// as `connect`, for the few filesystem protocols that still need one./// Connects a datagram socket under the same port rules as `connect`, forUDP uses the same private-network grant as TCP and HTTP. Restore the grant rule here instead of reducing it to a port-only constraint.
The linked Memona head ac70c1b0 removes
privateNetworkfrom request/response DTOs and saved records, and removes private-address filtering from HTTP/TCP/UDP. This follow-up now states explicitly that the compatible schema 2 API has no per-connection network grant; its README and copied WIT match that runtime.✅ Approved
Summary: Schema 2 contract, connection validation, literal paths, canonical listings, and native-test export guard are ready.
Strengths
Contract and behavior
manifest.json, README, and copied WIT consistently describe schema 2's grant-free per-connection network API.Issues
None
Checks
Passed
cargo fmt --checkcargo clippy --locked --all-targets -- -D warningscargo test --locked --lib— 17 passedcargo build --locked --release --target wasm32-wasip2CI / checks (pull_request)fore14a4dd— successDeclined to judge
Out of scope