sova-fs 0.1.0

Local filesystem plugin for Sova (jail root, async CRUD, walk)
Documentation
# sova-fs

Local filesystem access for [Sova](https://github.com/s00d/sova) with a jail root.

```rust
use sova::prelude::*;
use sova::{Fs, FsExt};

#[tokio::main]
async fn main() -> Result<()> {
    let mut app = App::new();
    app.install(Fs::new("./data"));

    app.get("/notes", |req: Request| async move {
        let entries = req.fs().read_dir("notes").await?;
        Ok::<_, Error>(format!("{entries:?}"))
    });

    app.listen(3000).await
}
```

Config: `[fs] root = "./data"` or `SOVA_FS_ROOT`. Paths are relative to the jail; `..` / absolute escapes return `Forbidden`.