WebDAV validates connections and preserves directory listings, with CI checking every change #1

Merged
temeddix merged 10 commits from fix-directory-listing into main 2026-09-30 13:10:15 +00:00
Owner

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.

Before After
WEBDAV root, light
WEBDAV root, light WEBDAV root, light
WEBDAV root, dark
WEBDAV root, dark WEBDAV root, dark
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](https://git.capsulizers.com/lead/memona/pulls/1154). All 17 unit tests pass. Live app checks confirm listings and exact file bytes without connection network grants. Captures use the updated app. | Before | After | | --- | --- | | WEBDAV root, light | | | ![WEBDAV root, light](https://git.capsulizers.com/attachments/8dbe80ef-74d8-4ed3-a217-d0985579d77b) | ![WEBDAV root, light](https://git.capsulizers.com/attachments/12a4a3ac-d3df-432b-acdb-c8123cd44e2d) | | WEBDAV root, dark | | | ![WEBDAV root, dark](https://git.capsulizers.com/attachments/44eca545-be55-4528-b1af-8533d4c33c53) | ![WEBDAV root, dark](https://git.capsulizers.com/attachments/0b3bcb35-a368-411e-a4e3-f6ac89d690dc) |
temeddix added 5 commits 2026-09-30 06:37:49 +00:00
temeddix added 1 commit 2026-09-30 06:40:41 +00:00
bot approved these changes 2026-09-30 06:41:53 +00:00
Dismissed
bot left a comment
Owner

✅ Approved
Connection validation, canonical listing paths, authentication handling, and CI meet the PR requirements.

Checks

  • cargo fmt --check
  • cargo clippy --locked --all-targets -- -D warnings
  • cargo test --locked --lib (17 passed)
  • cargo build --locked --release --target wasm32-wasip2
  • CI / checks (pull_request) passed for bae6e3d
Strengths
  • The root probe clears failed sessions and preserves the canonical href only for response matching.
  • Directory and deletion handling select the requested response independent of multistatus order.
  • Tests cover redirects, encoded paths, empty passwords, and failed reopens.
Declined to judge
  • None.

Profile: codex · gpt-5.6-terra

✅ Approved Connection validation, canonical listing paths, authentication handling, and CI meet the PR requirements. ## Checks - `cargo fmt --check` - `cargo clippy --locked --all-targets -- -D warnings` - `cargo test --locked --lib` (17 passed) - `cargo build --locked --release --target wasm32-wasip2` - CI / checks (pull_request) passed for `bae6e3d` <details> <summary>Strengths</summary> - The root probe clears failed sessions and preserves the canonical href only for response matching. - Directory and deletion handling select the requested response independent of multistatus order. - Tests cover redirects, encoded paths, empty passwords, and failed reopens. </details> <details> <summary>Declined to judge</summary> - None. </details> > Profile: `codex` · `gpt-5.6-terra`
temeddix added 1 commit 2026-09-30 06:46:45 +00:00
Explain connection permissions and supported transports
CI / checks (pull_request) Successful in 1m10s
d945b5280f
temeddix added 1 commit 2026-09-30 08:46:58 +00:00
Remove host allowlists from WebDAV plugin setup
CI / checks (pull_request) Successful in 1m17s
Agents / bot (pull_request) Successful in 4m16s
631ea9db65
Author
Owner

@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.

@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 https://git.capsulizers.com/lead/memona/pulls/1154.
temeddix requested review from bot 2026-09-30 08:55:14 +00:00
bot approved these changes 2026-09-30 08:59:14 +00:00
Dismissed
bot left a comment
Owner

✅ Approved
Schema 2 manifest, permission guidance, and updated contract comments meet the requested change.

Checks

  • cargo fmt --check
  • cargo clippy --locked --all-targets -- -D warnings
  • cargo test --locked --lib (17 passed)
  • cargo build --locked --release --target wasm32-wasip2
  • CI / checks (pull_request) passed for 631ea9d
Strengths
  • The manifest removes the obsolete host allowlist while retaining the schema-2 port declaration.
  • README and WIT guidance consistently require the private-network grant only for LAN/private addresses.
Declined to judge
  • The referenced Memona pull request was outside this checkout and unavailable to this review credential; this package's declared schema-2 contract was reviewed locally.

Profile: codex · gpt-5.6-terra

✅ Approved Schema 2 manifest, permission guidance, and updated contract comments meet the requested change. ## Checks - `cargo fmt --check` - `cargo clippy --locked --all-targets -- -D warnings` - `cargo test --locked --lib` (17 passed) - `cargo build --locked --release --target wasm32-wasip2` - CI / checks (pull_request) passed for `631ea9d` <details> <summary>Strengths</summary> - The manifest removes the obsolete host allowlist while retaining the schema-2 port declaration. - README and WIT guidance consistently require the private-network grant only for LAN/private addresses. </details> <details> <summary>Declined to judge</summary> - The referenced Memona pull request was outside this checkout and unavailable to this review credential; this package's declared schema-2 contract was reviewed locally. </details> > Profile: `codex` · `gpt-5.6-terra`
temeddix added 1 commit 2026-09-30 10:13:29 +00:00
Remove obsolete network permission guidance
CI / checks (pull_request) Successful in 2m40s
Agents / bot (pull_request) Successful in 10m2s
db4f5999d1
Author
Owner

@bot please review this head, including current Memona network behavior, literal remote paths, root validation, and the native test export guard.

@bot please review this head, including current Memona network behavior, literal remote paths, root validation, and the native test export guard.
temeddix requested review from bot 2026-09-30 10:19:37 +00:00
bot requested changes 2026-09-30 10:29:25 +00:00
Dismissed
bot left a comment
Owner

🛑 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
  • Schema 2 removes networkHosts, preserves declared ports, and the canonical-root handling has focused coverage.
Checks
  • cargo fmt --check
  • cargo clippy --locked --all-targets -- -D warnings
  • cargo test --locked --lib — 17 passed
  • cargo build --locked --release --target wasm32-wasip2
  • Required CI check: successful
Declined
  • No additional findings set aside.

Profile: codex · gpt-5.6-terra

🛑 Changes requested Restore the required private-network grant for LAN, link-local, and loopback access in the copied contract and README. ## Important <details> <summary>Private-network contract</summary> - `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. </details> <details> <summary>Connection guide</summary> - `README.md`: Do not tell users that LAN, link-local, and localhost addresses work without a separate permission; they require the private-network grant. </details> <details> <summary>Strengths</summary> - Schema 2 removes `networkHosts`, preserves declared ports, and the canonical-root handling has focused coverage. </details> <details> <summary>Checks</summary> - `cargo fmt --check` - `cargo clippy --locked --all-targets -- -D warnings` - `cargo test --locked --lib` — 17 passed - `cargo build --locked --release --target wasm32-wasip2` - Required CI check: successful </details> <details> <summary>Declined</summary> - No additional findings set aside. </details> > Profile: `codex` · `gpt-5.6-terra`
README.md Outdated
@@ -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 the
Owner

LAN, 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.

Profile: codex · gpt-5.6-terra

LAN, 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. > Profile: `codex` · `gpt-5.6-terra`
@@ -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 loopback
Owner

LAN 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.

Profile: codex · gpt-5.6-terra

LAN 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. > Profile: `codex` · `gpt-5.6-terra`
@@ -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 a
Owner

The private-network grant applies to TCP too. Keep that constraint in the socket documentation so it matches HTTP and the host's enforcement.

Profile: codex · gpt-5.6-terra

The private-network grant applies to TCP too. Keep that constraint in the socket documentation so it matches HTTP and the host's enforcement. > Profile: `codex` · `gpt-5.6-terra`
@@ -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`, for
Owner

UDP uses the same private-network grant as TCP and HTTP. Restore the grant rule here instead of reducing it to a port-only constraint.

Profile: codex · gpt-5.6-terra

UDP uses the same private-network grant as TCP and HTTP. Restore the grant rule here instead of reducing it to a port-only constraint. > Profile: `codex` · `gpt-5.6-terra`
temeddix added 1 commit 2026-09-30 10:32:03 +00:00
Clarify the grant-free schema 2 contract
CI / checks (pull_request) Successful in 4m29s
Agents / bot (pull_request) Successful in 6m33s
e14a4dd104
Author
Owner

The linked Memona head ac70c1b0 removes privateNetwork from 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.

The linked Memona head ac70c1b0 removes `privateNetwork` from 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.
temeddix requested review from bot 2026-09-30 10:32:43 +00:00
bot approved these changes 2026-09-30 10:38:44 +00:00
bot left a comment
Owner

✅ 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.
  • Root probing clears failed sessions; canonical hrefs are used only for response matching, preserving the configured request origin and credentials.
  • Href matching handles absolute/path forms, encoded names, unordered responses, and safe empty-directory deletion.

Issues

None
  • No Critical, Important, or Minor findings.

Checks

Passed
  • cargo fmt --check
  • cargo clippy --locked --all-targets -- -D warnings
  • cargo test --locked --lib — 17 passed
  • cargo build --locked --release --target wasm32-wasip2
  • Required CI / checks (pull_request) for e14a4dd — success

Declined to judge

Out of scope
  • Memona runtime implementation at the linked external pull request: not part of this repository or review range; this package's copied contract and schema usage are consistent with the stated compatible head.

Profile: codex · gpt-5.6-terra

✅ Approved Summary: Schema 2 contract, connection validation, literal paths, canonical listings, and native-test export guard are ready. ## Strengths <details> <summary>Contract and behavior</summary> - `manifest.json`, README, and copied WIT consistently describe schema 2's grant-free per-connection network API. - Root probing clears failed sessions; canonical hrefs are used only for response matching, preserving the configured request origin and credentials. - Href matching handles absolute/path forms, encoded names, unordered responses, and safe empty-directory deletion. </details> ## Issues <details> <summary>None</summary> - No Critical, Important, or Minor findings. </details> ## Checks <details> <summary>Passed</summary> - `cargo fmt --check` - `cargo clippy --locked --all-targets -- -D warnings` - `cargo test --locked --lib` — 17 passed - `cargo build --locked --release --target wasm32-wasip2` - Required `CI / checks (pull_request)` for `e14a4dd` — success </details> ## Declined to judge <details> <summary>Out of scope</summary> - Memona runtime implementation at the linked external pull request: not part of this repository or review range; this package's copied contract and schema usage are consistent with the stated compatible head. </details> > Profile: `codex` · `gpt-5.6-terra`
temeddix merged commit e0f4cf2c4b into main 2026-09-30 13:10:15 +00:00
temeddix deleted branch fix-directory-listing 2026-09-30 13:10:15 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: commons/memona-plugin-webdav#1