Refuse a relative file:// storage_url and decode its escapes #330

Merged
clawbot merged 1 commits from issue-299-file-url-absolute-path into next 2026-10-13 11:28:00 +02:00
1 Commits
Author SHA1 Message Date
sneak 42bd39fa23 Refuse a relative file:// storage_url and decode its escapes (closes #299)
check / check (push) Waiting to run
The path after file:// was used as written. file://dest resolved
against the working directory, so a backup run from another directory
wrote elsewhere, exited 0 and left a snapshot that could not be
restored; my%20stick created a directory with that literal name.

Config load now refuses a file:// storage_url whose path is not
absolute. ParseStorageURL refuses it too and decodes percent-escapes;
a literal space still works. The rule is written in both packages
because config cannot import storage, which imports config.

A % not followed by two hex digits now fails when the storage is
opened, not at config load.

Model: opus-5-5
2026-10-13 09:20:08 +00:00