[INFO] fetching crate fs-mcp-rs 1.2.5...
[INFO] testing fs-mcp-rs-1.2.5 against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate fs-mcp-rs 1.2.5 into /workspace/builds/worker-7-tc2/source
[INFO] started tweaking crates.io crate fs-mcp-rs 1.2.5
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate fs-mcp-rs 1.2.5
[INFO] tweaked toml for crates.io crate fs-mcp-rs 1.2.5 written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate fs-mcp-rs 1.2.5 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate fs-mcp-rs 1.2.5 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:103:12
[INFO] [stderr]     |
[INFO] [stderr] 103 | homepage = "https://github.com/nihmadev/fs-mcp-rs"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 109 | repository = "https://github.com/nihmadev/fs-mcp-rs"
[INFO] [stderr]     |              ---------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `fs-mcp-rs` (manifest) generated 1 warning
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] cfb26e57dcc0dde3bb51525a93a3ca0bd92faa1763163a91ad74666fc672be7c
[INFO] running `Command { std: "docker" "start" "cfb26e57dcc0dde3bb51525a93a3ca0bd92faa1763163a91ad74666fc672be7c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "cfb26e57dcc0dde3bb51525a93a3ca0bd92faa1763163a91ad74666fc672be7c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "cfb26e57dcc0dde3bb51525a93a3ca0bd92faa1763163a91ad74666fc672be7c" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "cfb26e57dcc0dde3bb51525a93a3ca0bd92faa1763163a91ad74666fc672be7c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "cfb26e57dcc0dde3bb51525a93a3ca0bd92faa1763163a91ad74666fc672be7c" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:103:12
[INFO] [stderr]     |
[INFO] [stderr] 103 | homepage = "https://github.com/nihmadev/fs-mcp-rs"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 109 | repository = "https://github.com/nihmadev/fs-mcp-rs"
[INFO] [stderr]     |              ---------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `fs-mcp-rs` (manifest) generated 1 warning
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling bytes v1.12.1
[INFO] [stderr]    Compiling futures-core v0.3.33
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling log v0.4.33
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling crossbeam-utils v0.8.22
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling tower-service v0.3.3
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.20
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling http v1.4.2
[INFO] [stderr]    Compiling futures-channel v0.3.33
[INFO] [stderr]    Compiling thread_local v1.1.10
[INFO] [stderr]    Compiling cc v1.3.0
[INFO] [stderr]    Compiling bitflags v2.13.1
[INFO] [stderr]    Compiling atomic-waker v1.1.2
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling tower-layer v0.3.3
[INFO] [stderr]    Compiling crossbeam-deque v0.8.7
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling futures-task v0.3.33
[INFO] [stderr]    Compiling httpdate v1.0.3
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling bstr v1.13.0
[INFO] [stderr]    Compiling futures-util v0.3.33
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling anyhow v1.0.104
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling unicode-segmentation v1.13.3
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling winnow v1.0.4
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling bitflags v1.3.2
[INFO] [stderr]    Compiling http-body v1.1.0
[INFO] [stderr]    Compiling http-body-util v0.1.4
[INFO] [stderr]    Compiling thiserror v2.0.19
[INFO] [stderr]    Compiling mime v0.3.17
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling mio v1.2.2
[INFO] [stderr]    Compiling socket2 v0.6.5
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling mio v0.8.11
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling fxhash v0.2.1
[INFO] [stderr]    Compiling blake3 v1.8.5
[INFO] [stderr]    Compiling clap_builder v4.6.2
[INFO] [stderr]    Compiling newline-converter v0.3.0
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling crossterm v0.25.0
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling fuzzy-matcher v0.3.7
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling toml_writer v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling arrayref v0.3.9
[INFO] [stderr]    Compiling arrayvec v0.7.8
[INFO] [stderr]    Compiling dyn-clone v1.0.20
[INFO] [stderr]    Compiling regex-automata v0.4.16
[INFO] [stderr]    Compiling matchit v0.8.4
[INFO] [stderr]    Compiling unicode-width v0.1.14
[INFO] [stderr]    Compiling fastrand v2.5.0
[INFO] [stderr]    Compiling constant_time_eq v0.4.2
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling cpufeatures v0.3.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling inquire v0.7.5
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling thiserror-impl v2.0.19
[INFO] [stderr]    Compiling clap_derive v4.6.4
[INFO] [stderr]    Compiling tokio-macros v2.7.1
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling toml v0.9.12+spec-1.1.0
[INFO] [stderr]    Compiling clap v4.6.4
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling globset v0.4.19
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling ignore v0.4.31
[INFO] [stderr]    Compiling hyper v1.11.0
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling axum v0.8.9
[INFO] [stderr]    Compiling fs-mcp-rs v1.2.5 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency
[INFO] [stdout]    --> src/search.rs:229:26
[INFO] [stdout]     |
[INFO] [stdout] 229 |                         .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stdout]     |                          ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]     |
[INFO] [stdout] 229 -                         .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stdout] 229 +                         .try_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> src/lib.rs:62:1
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub mod launcher;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/lib.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> src/lib.rs:63:1
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub mod tools;
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fs: Filesystem,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub search: Searcher,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub tree: TreeLister,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub settings: Arc<Settings>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub terminal: Terminal,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub oauth: OAuthStore,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub permits: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub io_permits: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub search_permits: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/app.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub fn new(settings: Settings) -> Result<Self> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/oauth.rs:74:1
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub struct RegisteredClient {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub client_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub client_secret: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 77 |     pub redirect_uris: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub client_name: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:79:5
[INFO] [stdout]    |
[INFO] [stdout] 79 |     pub grant_types: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub response_types: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub scope: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub issued_at: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/oauth.rs:87:1
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct AuthCode {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:88:5
[INFO] [stdout]    |
[INFO] [stdout] 88 |     pub code: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub client_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub redirect_uri: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub scope: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:92:5
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub code_challenge: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub code_challenge_method: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:94:5
[INFO] [stdout]    |
[INFO] [stdout] 94 |     pub expires_at: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/oauth.rs:99:1
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub struct TokenInfo {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout] 100 |     pub access_token: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:101:5
[INFO] [stdout]     |
[INFO] [stdout] 101 |     pub refresh_token: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:102:5
[INFO] [stdout]     |
[INFO] [stdout] 102 |     pub client_id: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:103:5
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub scope: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub expires_at: Instant,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:116:1
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub struct OAuthStore {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> src/oauth.rs:121:5
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub fn new() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:127:5
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub fn register_client(&self, mut client: RegisteredClient) -> RegisteredClient {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:142:5
[INFO] [stdout]     |
[INFO] [stdout] 142 |     pub fn get_client(&self, client_id: &str) -> Option<RegisteredClient> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:147:5
[INFO] [stdout]     |
[INFO] [stdout] 147 | /     pub fn create_code(
[INFO] [stdout] 148 | |         &self,
[INFO] [stdout] 149 | |         client_id: String,
[INFO] [stdout] 150 | |         redirect_uri: String,
[INFO] [stdout] ...   |
[INFO] [stdout] 153 | |         code_challenge_method: Option<String>,
[INFO] [stdout] 154 | |     ) -> String {
[INFO] [stdout]     | |_______________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:170:5
[INFO] [stdout]     |
[INFO] [stdout] 170 |     pub fn consume_code(&self, code: &str) -> Option<AuthCode> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:180:5
[INFO] [stdout]     |
[INFO] [stdout] 180 |     pub fn issue_token(&self, client_id: String, scope: String) -> TokenInfo {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:198:5
[INFO] [stdout]     |
[INFO] [stdout] 198 |     pub fn validate_token(&self, token: &str) -> bool {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:207:1
[INFO] [stdout]     |
[INFO] [stdout] 207 | pub fn get_issuer_url(app: &App, headers: &HeaderMap) -> String {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:233:1
[INFO] [stdout]     |
[INFO] [stdout] 233 | / pub async fn oauth_authorization_server_metadata(
[INFO] [stdout] 234 | |     State(app): State<App>,
[INFO] [stdout] 235 | |     headers: HeaderMap,
[INFO] [stdout] 236 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:253:1
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub async fn openid_configuration(State(app): State<App>, headers: HeaderMap) -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:272:1
[INFO] [stdout]     |
[INFO] [stdout] 272 | / pub async fn oauth_protected_resource_metadata(
[INFO] [stdout] 273 | |     State(app): State<App>,
[INFO] [stdout] 274 | |     headers: HeaderMap,
[INFO] [stdout] 275 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:286:1
[INFO] [stdout]     |
[INFO] [stdout] 286 | pub struct RegisterRequest {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:287:5
[INFO] [stdout]     |
[INFO] [stdout] 287 |     pub client_name: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:288:5
[INFO] [stdout]     |
[INFO] [stdout] 288 |     pub redirect_uris: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:289:5
[INFO] [stdout]     |
[INFO] [stdout] 289 |     pub grant_types: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:290:5
[INFO] [stdout]     |
[INFO] [stdout] 290 |     pub response_types: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:291:5
[INFO] [stdout]     |
[INFO] [stdout] 291 |     pub scope: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:294:1
[INFO] [stdout]     |
[INFO] [stdout] 294 | / pub async fn register_client(
[INFO] [stdout] 295 | |     State(app): State<App>,
[INFO] [stdout] 296 | |     Json(req): Json<RegisterRequest>,
[INFO] [stdout] 297 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:335:1
[INFO] [stdout]     |
[INFO] [stdout] 335 | pub struct AuthorizeParams {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:336:5
[INFO] [stdout]     |
[INFO] [stdout] 336 |     pub client_id: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:337:5
[INFO] [stdout]     |
[INFO] [stdout] 337 |     pub redirect_uri: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:338:5
[INFO] [stdout]     |
[INFO] [stdout] 338 |     pub response_type: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:339:5
[INFO] [stdout]     |
[INFO] [stdout] 339 |     pub scope: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:340:5
[INFO] [stdout]     |
[INFO] [stdout] 340 |     pub state: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:341:5
[INFO] [stdout]     |
[INFO] [stdout] 341 |     pub code_challenge: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:342:5
[INFO] [stdout]     |
[INFO] [stdout] 342 |     pub code_challenge_method: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:345:1
[INFO] [stdout]     |
[INFO] [stdout] 345 | / pub async fn authorize_get(
[INFO] [stdout] 346 | |     State(app): State<App>,
[INFO] [stdout] 347 | |     Query(params): Query<AuthorizeParams>,
[INFO] [stdout] 348 | | ) -> Response {
[INFO] [stdout]     | |_____________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:391:1
[INFO] [stdout]     |
[INFO] [stdout] 391 | pub struct AuthorizeForm {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:392:5
[INFO] [stdout]     |
[INFO] [stdout] 392 |     pub code: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:393:5
[INFO] [stdout]     |
[INFO] [stdout] 393 |     pub redirect_uri: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:394:5
[INFO] [stdout]     |
[INFO] [stdout] 394 |     pub state: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:397:1
[INFO] [stdout]     |
[INFO] [stdout] 397 | pub async fn authorize_post(Form(form): Form<AuthorizeForm>) -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:453:1
[INFO] [stdout]     |
[INFO] [stdout] 453 | / pub async fn token_endpoint(
[INFO] [stdout] 454 | |     State(app): State<App>,
[INFO] [stdout] 455 | |     headers: HeaderMap,
[INFO] [stdout] 456 | |     body: axum::body::Bytes,
[INFO] [stdout] 457 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:586:1
[INFO] [stdout]     |
[INFO] [stdout] 586 | pub async fn userinfo_endpoint(State(_app): State<App>, headers: HeaderMap) -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:604:1
[INFO] [stdout]     |
[INFO] [stdout] 604 | pub async fn jwks_endpoint() -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/launcher.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct CompanionProcess {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> src/launcher.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum Tunnel<'a> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/launcher.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Ngrok {
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |         program: &'a Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         extra_args: &'a [String],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/launcher.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     Cloudflared {
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         program: &'a Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |         extra_args: &'a [String],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/launcher.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     Zrok {
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |         program: &'a Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |         extra_args: &'a [String],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> src/launcher.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn failure(&self) -> Option<&str> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/launcher.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | /     pub fn start_tunnel(
[INFO] [stdout] 79 | |         tunnel: Tunnel<'_>,
[INFO] [stdout] 80 | |         host: IpAddr,
[INFO] [stdout] 81 | |         port: u16,
[INFO] [stdout] 82 | |         window: CompanionWindow,
[INFO] [stdout] 83 | |     ) -> Result<Self> {
[INFO] [stdout]    | |_____________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/launcher.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 87 | /     pub fn start_tunnel_with_url_callback(
[INFO] [stdout] 88 | |         tunnel: Tunnel<'_>,
[INFO] [stdout] 89 | |         host: IpAddr,
[INFO] [stdout] 90 | |         port: u16,
[INFO] [stdout] 91 | |         window: CompanionWindow,
[INFO] [stdout] 92 | |         on_public_url: impl Fn(String) + Send + Sync + 'static,
[INFO] [stdout] 93 | |     ) -> Result<Self> {
[INFO] [stdout]    | |_____________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> src/tools/dispatch.rs:47:1
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn tool_error(message: String) -> Value {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 2m 05s
[INFO] running `Command { std: "docker" "inspect" "cfb26e57dcc0dde3bb51525a93a3ca0bd92faa1763163a91ad74666fc672be7c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "cfb26e57dcc0dde3bb51525a93a3ca0bd92faa1763163a91ad74666fc672be7c" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:103:12
[INFO] [stderr]     |
[INFO] [stderr] 103 | homepage = "https://github.com/nihmadev/fs-mcp-rs"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 109 | repository = "https://github.com/nihmadev/fs-mcp-rs"
[INFO] [stderr]     |              ---------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `fs-mcp-rs` (manifest) generated 1 warning
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling bytes v1.12.1
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling futures-core v0.3.33
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling log v0.4.33
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling tower-service v0.3.3
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling thread_local v1.1.10
[INFO] [stderr]    Compiling crossbeam-utils v0.8.22
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling futures-channel v0.3.33
[INFO] [stderr]    Compiling futures-task v0.3.33
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling bitflags v2.13.1
[INFO] [stderr]    Compiling tower-layer v0.3.3
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling atomic-waker v1.1.2
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling httpdate v1.0.3
[INFO] [stderr]    Compiling futures-util v0.3.33
[INFO] [stderr]    Compiling winnow v1.0.4
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling bstr v1.13.0
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling bitflags v1.3.2
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling mime v0.3.17
[INFO] [stderr]    Compiling unicode-segmentation v1.13.3
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.20
[INFO] [stderr]    Compiling newline-converter v0.3.0
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling fxhash v0.2.1
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling clap_builder v4.6.2
[INFO] [stderr]    Compiling http v1.4.2
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling crossbeam-deque v0.8.7
[INFO] [stderr]    Compiling fuzzy-matcher v0.3.7
[INFO] [stderr]    Compiling unicode-width v0.1.14
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling fastrand v2.5.0
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling toml_writer v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling constant_time_eq v0.4.2
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling socket2 v0.6.5
[INFO] [stderr]    Compiling mio v1.2.2
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling mio v0.8.11
[INFO] [stderr]    Compiling cpufeatures v0.3.0
[INFO] [stderr]    Compiling matchit v0.8.4
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling regex-automata v0.4.16
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling arrayref v0.3.9
[INFO] [stderr]    Compiling arrayvec v0.7.8
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling dyn-clone v1.0.20
[INFO] [stderr]    Compiling thiserror v2.0.19
[INFO] [stderr]    Compiling anyhow v1.0.104
[INFO] [stdout] warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency
[INFO] [stdout]    --> src/search.rs:229:26
[INFO] [stdout]     |
[INFO] [stdout] 229 |                         .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stdout]     |                          ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]     |
[INFO] [stdout] 229 -                         .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stdout] 229 +                         .try_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> src/lib.rs:62:1
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub mod launcher;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/lib.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> src/lib.rs:63:1
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub mod tools;
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fs: Filesystem,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub search: Searcher,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub tree: TreeLister,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub settings: Arc<Settings>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub terminal: Terminal,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub oauth: OAuthStore,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub permits: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub io_permits: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub search_permits: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/app.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub fn new(settings: Settings) -> Result<Self> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/oauth.rs:74:1
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub struct RegisteredClient {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub client_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub client_secret: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 77 |     pub redirect_uris: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub client_name: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:79:5
[INFO] [stdout]    |
[INFO] [stdout] 79 |     pub grant_types: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub response_types: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub scope: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub issued_at: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/oauth.rs:87:1
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct AuthCode {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:88:5
[INFO] [stdout]    |
[INFO] [stdout] 88 |     pub code: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub client_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub redirect_uri: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub scope: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:92:5
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub code_challenge: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub code_challenge_method: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:94:5
[INFO] [stdout]    |
[INFO] [stdout] 94 |     pub expires_at: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/oauth.rs:99:1
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub struct TokenInfo {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout] 100 |     pub access_token: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:101:5
[INFO] [stdout]     |
[INFO] [stdout] 101 |     pub refresh_token: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:102:5
[INFO] [stdout]     |
[INFO] [stdout] 102 |     pub client_id: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:103:5
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub scope: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub expires_at: Instant,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:116:1
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub struct OAuthStore {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> src/oauth.rs:121:5
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub fn new() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:127:5
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub fn register_client(&self, mut client: RegisteredClient) -> RegisteredClient {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:142:5
[INFO] [stdout]     |
[INFO] [stdout] 142 |     pub fn get_client(&self, client_id: &str) -> Option<RegisteredClient> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:147:5
[INFO] [stdout]     |
[INFO] [stdout] 147 | /     pub fn create_code(
[INFO] [stdout] 148 | |         &self,
[INFO] [stdout] 149 | |         client_id: String,
[INFO] [stdout] 150 | |         redirect_uri: String,
[INFO] [stdout] ...   |
[INFO] [stdout] 153 | |         code_challenge_method: Option<String>,
[INFO] [stdout] 154 | |     ) -> String {
[INFO] [stdout]     | |_______________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:170:5
[INFO] [stdout]     |
[INFO] [stdout] 170 |     pub fn consume_code(&self, code: &str) -> Option<AuthCode> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:180:5
[INFO] [stdout]     |
[INFO] [stdout] 180 |     pub fn issue_token(&self, client_id: String, scope: String) -> TokenInfo {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:198:5
[INFO] [stdout]     |
[INFO] [stdout] 198 |     pub fn validate_token(&self, token: &str) -> bool {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:207:1
[INFO] [stdout]     |
[INFO] [stdout] 207 | pub fn get_issuer_url(app: &App, headers: &HeaderMap) -> String {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:233:1
[INFO] [stdout]     |
[INFO] [stdout] 233 | / pub async fn oauth_authorization_server_metadata(
[INFO] [stdout] 234 | |     State(app): State<App>,
[INFO] [stdout] 235 | |     headers: HeaderMap,
[INFO] [stdout] 236 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:253:1
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub async fn openid_configuration(State(app): State<App>, headers: HeaderMap) -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:272:1
[INFO] [stdout]     |
[INFO] [stdout] 272 | / pub async fn oauth_protected_resource_metadata(
[INFO] [stdout] 273 | |     State(app): State<App>,
[INFO] [stdout] 274 | |     headers: HeaderMap,
[INFO] [stdout] 275 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:286:1
[INFO] [stdout]     |
[INFO] [stdout] 286 | pub struct RegisterRequest {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:287:5
[INFO] [stdout]     |
[INFO] [stdout] 287 |     pub client_name: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:288:5
[INFO] [stdout]     |
[INFO] [stdout] 288 |     pub redirect_uris: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:289:5
[INFO] [stdout]     |
[INFO] [stdout] 289 |     pub grant_types: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:290:5
[INFO] [stdout]     |
[INFO] [stdout] 290 |     pub response_types: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:291:5
[INFO] [stdout]     |
[INFO] [stdout] 291 |     pub scope: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:294:1
[INFO] [stdout]     |
[INFO] [stdout] 294 | / pub async fn register_client(
[INFO] [stdout] 295 | |     State(app): State<App>,
[INFO] [stdout] 296 | |     Json(req): Json<RegisterRequest>,
[INFO] [stdout] 297 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:335:1
[INFO] [stdout]     |
[INFO] [stdout] 335 | pub struct AuthorizeParams {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:336:5
[INFO] [stdout]     |
[INFO] [stdout] 336 |     pub client_id: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:337:5
[INFO] [stdout]     |
[INFO] [stdout] 337 |     pub redirect_uri: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:338:5
[INFO] [stdout]     |
[INFO] [stdout] 338 |     pub response_type: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:339:5
[INFO] [stdout]     |
[INFO] [stdout] 339 |     pub scope: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:340:5
[INFO] [stdout]     |
[INFO] [stdout] 340 |     pub state: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:341:5
[INFO] [stdout]     |
[INFO] [stdout] 341 |     pub code_challenge: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:342:5
[INFO] [stdout]     |
[INFO] [stdout] 342 |     pub code_challenge_method: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:345:1
[INFO] [stdout]     |
[INFO] [stdout] 345 | / pub async fn authorize_get(
[INFO] [stdout] 346 | |     State(app): State<App>,
[INFO] [stdout] 347 | |     Query(params): Query<AuthorizeParams>,
[INFO] [stdout] 348 | | ) -> Response {
[INFO] [stdout]     | |_____________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:391:1
[INFO] [stdout]     |
[INFO] [stdout] 391 | pub struct AuthorizeForm {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:392:5
[INFO] [stdout]     |
[INFO] [stdout] 392 |     pub code: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:393:5
[INFO] [stdout]     |
[INFO] [stdout] 393 |     pub redirect_uri: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:394:5
[INFO] [stdout]     |
[INFO] [stdout] 394 |     pub state: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:397:1
[INFO] [stdout]     |
[INFO] [stdout] 397 | pub async fn authorize_post(Form(form): Form<AuthorizeForm>) -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:453:1
[INFO] [stdout]     |
[INFO] [stdout] 453 | / pub async fn token_endpoint(
[INFO] [stdout] 454 | |     State(app): State<App>,
[INFO] [stdout] 455 | |     headers: HeaderMap,
[INFO] [stdout] 456 | |     body: axum::body::Bytes,
[INFO] [stdout] 457 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:586:1
[INFO] [stdout]     |
[INFO] [stdout] 586 | pub async fn userinfo_endpoint(State(_app): State<App>, headers: HeaderMap) -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:604:1
[INFO] [stdout]     |
[INFO] [stdout] 604 | pub async fn jwks_endpoint() -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/launcher.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct CompanionProcess {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> src/launcher.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum Tunnel<'a> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/launcher.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Ngrok {
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |         program: &'a Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         extra_args: &'a [String],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/launcher.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     Cloudflared {
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         program: &'a Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |         extra_args: &'a [String],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/launcher.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     Zrok {
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |         program: &'a Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |         extra_args: &'a [String],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> src/launcher.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn failure(&self) -> Option<&str> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/launcher.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | /     pub fn start_tunnel(
[INFO] [stdout] 79 | |         tunnel: Tunnel<'_>,
[INFO] [stdout] 80 | |         host: IpAddr,
[INFO] [stdout] 81 | |         port: u16,
[INFO] [stdout] 82 | |         window: CompanionWindow,
[INFO] [stdout] 83 | |     ) -> Result<Self> {
[INFO] [stdout]    | |_____________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/launcher.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 87 | /     pub fn start_tunnel_with_url_callback(
[INFO] [stdout] 88 | |         tunnel: Tunnel<'_>,
[INFO] [stdout] 89 | |         host: IpAddr,
[INFO] [stdout] 90 | |         port: u16,
[INFO] [stdout] 91 | |         window: CompanionWindow,
[INFO] [stdout] 92 | |         on_public_url: impl Fn(String) + Send + Sync + 'static,
[INFO] [stdout] 93 | |     ) -> Result<Self> {
[INFO] [stdout]    | |_____________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> src/tools/dispatch.rs:47:1
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn tool_error(message: String) -> Value {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling http-body v1.1.0
[INFO] [stderr]    Compiling crossterm v0.25.0
[INFO] [stderr]    Compiling http-body-util v0.1.4
[INFO] [stderr]    Compiling blake3 v1.8.5
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling inquire v0.7.5
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling clap v4.6.4
[INFO] [stderr]    Compiling toml v0.9.12+spec-1.1.0
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling globset v0.4.19
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling ignore v0.4.31
[INFO] [stderr]    Compiling hyper v1.11.0
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling axum v0.8.9
[INFO] [stderr]    Compiling fs-mcp-rs v1.2.5 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency
[INFO] [stdout]    --> src/search.rs:229:26
[INFO] [stdout]     |
[INFO] [stdout] 229 |                         .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stdout]     |                          ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]     |
[INFO] [stdout] 229 -                         .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stdout] 229 +                         .try_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> src/lib.rs:62:1
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub mod launcher;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/lib.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> src/lib.rs:63:1
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub mod tools;
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fs: Filesystem,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub search: Searcher,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub tree: TreeLister,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub settings: Arc<Settings>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub terminal: Terminal,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub oauth: OAuthStore,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub permits: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub io_permits: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub search_permits: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/app.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub fn new(settings: Settings) -> Result<Self> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/oauth.rs:74:1
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub struct RegisteredClient {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub client_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub client_secret: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 77 |     pub redirect_uris: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub client_name: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:79:5
[INFO] [stdout]    |
[INFO] [stdout] 79 |     pub grant_types: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub response_types: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub scope: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub issued_at: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/oauth.rs:87:1
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct AuthCode {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:88:5
[INFO] [stdout]    |
[INFO] [stdout] 88 |     pub code: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub client_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub redirect_uri: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub scope: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:92:5
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub code_challenge: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub code_challenge_method: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:94:5
[INFO] [stdout]    |
[INFO] [stdout] 94 |     pub expires_at: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/oauth.rs:99:1
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub struct TokenInfo {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout] 100 |     pub access_token: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:101:5
[INFO] [stdout]     |
[INFO] [stdout] 101 |     pub refresh_token: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:102:5
[INFO] [stdout]     |
[INFO] [stdout] 102 |     pub client_id: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:103:5
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub scope: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub expires_at: Instant,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:116:1
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub struct OAuthStore {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> src/oauth.rs:121:5
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub fn new() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:127:5
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub fn register_client(&self, mut client: RegisteredClient) -> RegisteredClient {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:142:5
[INFO] [stdout]     |
[INFO] [stdout] 142 |     pub fn get_client(&self, client_id: &str) -> Option<RegisteredClient> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:147:5
[INFO] [stdout]     |
[INFO] [stdout] 147 | /     pub fn create_code(
[INFO] [stdout] 148 | |         &self,
[INFO] [stdout] 149 | |         client_id: String,
[INFO] [stdout] 150 | |         redirect_uri: String,
[INFO] [stdout] ...   |
[INFO] [stdout] 153 | |         code_challenge_method: Option<String>,
[INFO] [stdout] 154 | |     ) -> String {
[INFO] [stdout]     | |_______________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:170:5
[INFO] [stdout]     |
[INFO] [stdout] 170 |     pub fn consume_code(&self, code: &str) -> Option<AuthCode> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:180:5
[INFO] [stdout]     |
[INFO] [stdout] 180 |     pub fn issue_token(&self, client_id: String, scope: String) -> TokenInfo {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:198:5
[INFO] [stdout]     |
[INFO] [stdout] 198 |     pub fn validate_token(&self, token: &str) -> bool {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:207:1
[INFO] [stdout]     |
[INFO] [stdout] 207 | pub fn get_issuer_url(app: &App, headers: &HeaderMap) -> String {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:233:1
[INFO] [stdout]     |
[INFO] [stdout] 233 | / pub async fn oauth_authorization_server_metadata(
[INFO] [stdout] 234 | |     State(app): State<App>,
[INFO] [stdout] 235 | |     headers: HeaderMap,
[INFO] [stdout] 236 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:253:1
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub async fn openid_configuration(State(app): State<App>, headers: HeaderMap) -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:272:1
[INFO] [stdout]     |
[INFO] [stdout] 272 | / pub async fn oauth_protected_resource_metadata(
[INFO] [stdout] 273 | |     State(app): State<App>,
[INFO] [stdout] 274 | |     headers: HeaderMap,
[INFO] [stdout] 275 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:286:1
[INFO] [stdout]     |
[INFO] [stdout] 286 | pub struct RegisterRequest {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:287:5
[INFO] [stdout]     |
[INFO] [stdout] 287 |     pub client_name: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:288:5
[INFO] [stdout]     |
[INFO] [stdout] 288 |     pub redirect_uris: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:289:5
[INFO] [stdout]     |
[INFO] [stdout] 289 |     pub grant_types: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:290:5
[INFO] [stdout]     |
[INFO] [stdout] 290 |     pub response_types: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:291:5
[INFO] [stdout]     |
[INFO] [stdout] 291 |     pub scope: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:294:1
[INFO] [stdout]     |
[INFO] [stdout] 294 | / pub async fn register_client(
[INFO] [stdout] 295 | |     State(app): State<App>,
[INFO] [stdout] 296 | |     Json(req): Json<RegisterRequest>,
[INFO] [stdout] 297 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:335:1
[INFO] [stdout]     |
[INFO] [stdout] 335 | pub struct AuthorizeParams {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:336:5
[INFO] [stdout]     |
[INFO] [stdout] 336 |     pub client_id: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:337:5
[INFO] [stdout]     |
[INFO] [stdout] 337 |     pub redirect_uri: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:338:5
[INFO] [stdout]     |
[INFO] [stdout] 338 |     pub response_type: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:339:5
[INFO] [stdout]     |
[INFO] [stdout] 339 |     pub scope: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:340:5
[INFO] [stdout]     |
[INFO] [stdout] 340 |     pub state: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:341:5
[INFO] [stdout]     |
[INFO] [stdout] 341 |     pub code_challenge: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:342:5
[INFO] [stdout]     |
[INFO] [stdout] 342 |     pub code_challenge_method: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:345:1
[INFO] [stdout]     |
[INFO] [stdout] 345 | / pub async fn authorize_get(
[INFO] [stdout] 346 | |     State(app): State<App>,
[INFO] [stdout] 347 | |     Query(params): Query<AuthorizeParams>,
[INFO] [stdout] 348 | | ) -> Response {
[INFO] [stdout]     | |_____________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:391:1
[INFO] [stdout]     |
[INFO] [stdout] 391 | pub struct AuthorizeForm {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:392:5
[INFO] [stdout]     |
[INFO] [stdout] 392 |     pub code: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:393:5
[INFO] [stdout]     |
[INFO] [stdout] 393 |     pub redirect_uri: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:394:5
[INFO] [stdout]     |
[INFO] [stdout] 394 |     pub state: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:397:1
[INFO] [stdout]     |
[INFO] [stdout] 397 | pub async fn authorize_post(Form(form): Form<AuthorizeForm>) -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:453:1
[INFO] [stdout]     |
[INFO] [stdout] 453 | / pub async fn token_endpoint(
[INFO] [stdout] 454 | |     State(app): State<App>,
[INFO] [stdout] 455 | |     headers: HeaderMap,
[INFO] [stdout] 456 | |     body: axum::body::Bytes,
[INFO] [stdout] 457 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:586:1
[INFO] [stdout]     |
[INFO] [stdout] 586 | pub async fn userinfo_endpoint(State(_app): State<App>, headers: HeaderMap) -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:604:1
[INFO] [stdout]     |
[INFO] [stdout] 604 | pub async fn jwks_endpoint() -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/launcher.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct CompanionProcess {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> src/launcher.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum Tunnel<'a> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/launcher.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Ngrok {
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |         program: &'a Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         extra_args: &'a [String],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/launcher.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     Cloudflared {
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         program: &'a Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |         extra_args: &'a [String],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/launcher.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     Zrok {
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |         program: &'a Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |         extra_args: &'a [String],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> src/launcher.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn failure(&self) -> Option<&str> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/launcher.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | /     pub fn start_tunnel(
[INFO] [stdout] 79 | |         tunnel: Tunnel<'_>,
[INFO] [stdout] 80 | |         host: IpAddr,
[INFO] [stdout] 81 | |         port: u16,
[INFO] [stdout] 82 | |         window: CompanionWindow,
[INFO] [stdout] 83 | |     ) -> Result<Self> {
[INFO] [stdout]    | |_____________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/launcher.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 87 | /     pub fn start_tunnel_with_url_callback(
[INFO] [stdout] 88 | |         tunnel: Tunnel<'_>,
[INFO] [stdout] 89 | |         host: IpAddr,
[INFO] [stdout] 90 | |         port: u16,
[INFO] [stdout] 91 | |         window: CompanionWindow,
[INFO] [stdout] 92 | |         on_public_url: impl Fn(String) + Send + Sync + 'static,
[INFO] [stdout] 93 | |     ) -> Result<Self> {
[INFO] [stdout]    | |_____________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> src/tools/dispatch.rs:47:1
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn tool_error(message: String) -> Value {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency
[INFO] [stdout]    --> src/search.rs:229:26
[INFO] [stdout]     |
[INFO] [stdout] 229 |                         .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stdout]     |                          ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]     |
[INFO] [stdout] 229 -                         .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stdout] 229 +                         .try_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> src/lib.rs:62:1
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub mod launcher;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> src/lib.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> src/lib.rs:63:1
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub mod tools;
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fs: Filesystem,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub search: Searcher,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub tree: TreeLister,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub settings: Arc<Settings>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub terminal: Terminal,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub oauth: OAuthStore,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub permits: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub io_permits: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/app.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub search_permits: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/app.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub fn new(settings: Settings) -> Result<Self> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/oauth.rs:74:1
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub struct RegisteredClient {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub client_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub client_secret: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 77 |     pub redirect_uris: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub client_name: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:79:5
[INFO] [stdout]    |
[INFO] [stdout] 79 |     pub grant_types: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub response_types: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub scope: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub issued_at: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/oauth.rs:87:1
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct AuthCode {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:88:5
[INFO] [stdout]    |
[INFO] [stdout] 88 |     pub code: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub client_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub redirect_uri: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub scope: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:92:5
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub code_challenge: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub code_challenge_method: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/oauth.rs:94:5
[INFO] [stdout]    |
[INFO] [stdout] 94 |     pub expires_at: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/oauth.rs:99:1
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub struct TokenInfo {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout] 100 |     pub access_token: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:101:5
[INFO] [stdout]     |
[INFO] [stdout] 101 |     pub refresh_token: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:102:5
[INFO] [stdout]     |
[INFO] [stdout] 102 |     pub client_id: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:103:5
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub scope: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub expires_at: Instant,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:116:1
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub struct OAuthStore {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> src/oauth.rs:121:5
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub fn new() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:127:5
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub fn register_client(&self, mut client: RegisteredClient) -> RegisteredClient {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:142:5
[INFO] [stdout]     |
[INFO] [stdout] 142 |     pub fn get_client(&self, client_id: &str) -> Option<RegisteredClient> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:147:5
[INFO] [stdout]     |
[INFO] [stdout] 147 | /     pub fn create_code(
[INFO] [stdout] 148 | |         &self,
[INFO] [stdout] 149 | |         client_id: String,
[INFO] [stdout] 150 | |         redirect_uri: String,
[INFO] [stdout] ...   |
[INFO] [stdout] 153 | |         code_challenge_method: Option<String>,
[INFO] [stdout] 154 | |     ) -> String {
[INFO] [stdout]     | |_______________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:170:5
[INFO] [stdout]     |
[INFO] [stdout] 170 |     pub fn consume_code(&self, code: &str) -> Option<AuthCode> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:180:5
[INFO] [stdout]     |
[INFO] [stdout] 180 |     pub fn issue_token(&self, client_id: String, scope: String) -> TokenInfo {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> src/oauth.rs:198:5
[INFO] [stdout]     |
[INFO] [stdout] 198 |     pub fn validate_token(&self, token: &str) -> bool {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:207:1
[INFO] [stdout]     |
[INFO] [stdout] 207 | pub fn get_issuer_url(app: &App, headers: &HeaderMap) -> String {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:233:1
[INFO] [stdout]     |
[INFO] [stdout] 233 | / pub async fn oauth_authorization_server_metadata(
[INFO] [stdout] 234 | |     State(app): State<App>,
[INFO] [stdout] 235 | |     headers: HeaderMap,
[INFO] [stdout] 236 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:253:1
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub async fn openid_configuration(State(app): State<App>, headers: HeaderMap) -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:272:1
[INFO] [stdout]     |
[INFO] [stdout] 272 | / pub async fn oauth_protected_resource_metadata(
[INFO] [stdout] 273 | |     State(app): State<App>,
[INFO] [stdout] 274 | |     headers: HeaderMap,
[INFO] [stdout] 275 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:286:1
[INFO] [stdout]     |
[INFO] [stdout] 286 | pub struct RegisterRequest {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:287:5
[INFO] [stdout]     |
[INFO] [stdout] 287 |     pub client_name: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:288:5
[INFO] [stdout]     |
[INFO] [stdout] 288 |     pub redirect_uris: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:289:5
[INFO] [stdout]     |
[INFO] [stdout] 289 |     pub grant_types: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:290:5
[INFO] [stdout]     |
[INFO] [stdout] 290 |     pub response_types: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:291:5
[INFO] [stdout]     |
[INFO] [stdout] 291 |     pub scope: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:294:1
[INFO] [stdout]     |
[INFO] [stdout] 294 | / pub async fn register_client(
[INFO] [stdout] 295 | |     State(app): State<App>,
[INFO] [stdout] 296 | |     Json(req): Json<RegisterRequest>,
[INFO] [stdout] 297 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:335:1
[INFO] [stdout]     |
[INFO] [stdout] 335 | pub struct AuthorizeParams {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:336:5
[INFO] [stdout]     |
[INFO] [stdout] 336 |     pub client_id: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:337:5
[INFO] [stdout]     |
[INFO] [stdout] 337 |     pub redirect_uri: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:338:5
[INFO] [stdout]     |
[INFO] [stdout] 338 |     pub response_type: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:339:5
[INFO] [stdout]     |
[INFO] [stdout] 339 |     pub scope: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:340:5
[INFO] [stdout]     |
[INFO] [stdout] 340 |     pub state: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:341:5
[INFO] [stdout]     |
[INFO] [stdout] 341 |     pub code_challenge: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:342:5
[INFO] [stdout]     |
[INFO] [stdout] 342 |     pub code_challenge_method: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:345:1
[INFO] [stdout]     |
[INFO] [stdout] 345 | / pub async fn authorize_get(
[INFO] [stdout] 346 | |     State(app): State<App>,
[INFO] [stdout] 347 | |     Query(params): Query<AuthorizeParams>,
[INFO] [stdout] 348 | | ) -> Response {
[INFO] [stdout]     | |_____________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> src/oauth.rs:391:1
[INFO] [stdout]     |
[INFO] [stdout] 391 | pub struct AuthorizeForm {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:392:5
[INFO] [stdout]     |
[INFO] [stdout] 392 |     pub code: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:393:5
[INFO] [stdout]     |
[INFO] [stdout] 393 |     pub redirect_uri: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> src/oauth.rs:394:5
[INFO] [stdout]     |
[INFO] [stdout] 394 |     pub state: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:397:1
[INFO] [stdout]     |
[INFO] [stdout] 397 | pub async fn authorize_post(Form(form): Form<AuthorizeForm>) -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:453:1
[INFO] [stdout]     |
[INFO] [stdout] 453 | / pub async fn token_endpoint(
[INFO] [stdout] 454 | |     State(app): State<App>,
[INFO] [stdout] 455 | |     headers: HeaderMap,
[INFO] [stdout] 456 | |     body: axum::body::Bytes,
[INFO] [stdout] 457 | | ) -> impl IntoResponse {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:586:1
[INFO] [stdout]     |
[INFO] [stdout] 586 | pub async fn userinfo_endpoint(State(_app): State<App>, headers: HeaderMap) -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> src/oauth.rs:604:1
[INFO] [stdout]     |
[INFO] [stdout] 604 | pub async fn jwks_endpoint() -> impl IntoResponse {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> src/launcher.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct CompanionProcess {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> src/launcher.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum Tunnel<'a> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/launcher.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Ngrok {
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 |         program: &'a Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         extra_args: &'a [String],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/launcher.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     Cloudflared {
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |         program: &'a Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |         extra_args: &'a [String],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> src/launcher.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     Zrok {
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |         program: &'a Path,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> src/launcher.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |         extra_args: &'a [String],
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> src/launcher.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn failure(&self) -> Option<&str> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/launcher.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | /     pub fn start_tunnel(
[INFO] [stdout] 79 | |         tunnel: Tunnel<'_>,
[INFO] [stdout] 80 | |         host: IpAddr,
[INFO] [stdout] 81 | |         port: u16,
[INFO] [stdout] 82 | |         window: CompanionWindow,
[INFO] [stdout] 83 | |     ) -> Result<Self> {
[INFO] [stdout]    | |_____________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> src/launcher.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 87 | /     pub fn start_tunnel_with_url_callback(
[INFO] [stdout] 88 | |         tunnel: Tunnel<'_>,
[INFO] [stdout] 89 | |         host: IpAddr,
[INFO] [stdout] 90 | |         port: u16,
[INFO] [stdout] 91 | |         window: CompanionWindow,
[INFO] [stdout] 92 | |         on_public_url: impl Fn(String) + Send + Sync + 'static,
[INFO] [stdout] 93 | |     ) -> Result<Self> {
[INFO] [stdout]    | |_____________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> src/tools/dispatch.rs:47:1
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn tool_error(message: String) -> Value {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 57s
[INFO] running `Command { std: "docker" "inspect" "cfb26e57dcc0dde3bb51525a93a3ca0bd92faa1763163a91ad74666fc672be7c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "cfb26e57dcc0dde3bb51525a93a3ca0bd92faa1763163a91ad74666fc672be7c" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:103:12
[INFO] [stderr]     |
[INFO] [stderr] 103 | homepage = "https://github.com/nihmadev/fs-mcp-rs"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 109 | repository = "https://github.com/nihmadev/fs-mcp-rs"
[INFO] [stderr]     |              ---------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `fs-mcp-rs` (manifest) generated 1 warning
[INFO] [stderr] warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency
[INFO] [stderr]    --> src/search.rs:229:26
[INFO] [stderr]     |
[INFO] [stderr] 229 |                         .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stderr]     |                          ^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] help: replace the use of the deprecated method
[INFO] [stderr]     |
[INFO] [stderr] 229 -                         .fetch_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stderr] 229 +                         .try_update(Ordering::Relaxed, Ordering::Relaxed, |count| {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a module
[INFO] [stderr]   --> src/lib.rs:62:1
[INFO] [stderr]    |
[INFO] [stderr] 62 | pub mod launcher;
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] note: the lint level is defined here
[INFO] [stderr]   --> src/lib.rs:41:9
[INFO] [stderr]    |
[INFO] [stderr] 41 | #![warn(missing_docs)]
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a module
[INFO] [stderr]   --> src/lib.rs:63:1
[INFO] [stderr]    |
[INFO] [stderr] 63 | pub mod tools;
[INFO] [stderr]    | ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/app.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 15 |     pub fs: Filesystem,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/app.rs:16:5
[INFO] [stderr]    |
[INFO] [stderr] 16 |     pub search: Searcher,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/app.rs:17:5
[INFO] [stderr]    |
[INFO] [stderr] 17 |     pub tree: TreeLister,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/app.rs:18:5
[INFO] [stderr]    |
[INFO] [stderr] 18 |     pub settings: Arc<Settings>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/app.rs:19:5
[INFO] [stderr]    |
[INFO] [stderr] 19 |     pub terminal: Terminal,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/app.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 20 |     pub oauth: OAuthStore,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/app.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 21 |     pub permits: Arc<Semaphore>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/app.rs:22:5
[INFO] [stderr]    |
[INFO] [stderr] 22 |     pub io_permits: Arc<Semaphore>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/app.rs:23:5
[INFO] [stderr]    |
[INFO] [stderr] 23 |     pub search_permits: Arc<Semaphore>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for an associated function
[INFO] [stderr]   --> src/app.rs:27:5
[INFO] [stderr]    |
[INFO] [stderr] 27 |     pub fn new(settings: Settings) -> Result<Self> {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct
[INFO] [stderr]   --> src/oauth.rs:74:1
[INFO] [stderr]    |
[INFO] [stderr] 74 | pub struct RegisteredClient {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/oauth.rs:75:5
[INFO] [stderr]    |
[INFO] [stderr] 75 |     pub client_id: String,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/oauth.rs:76:5
[INFO] [stderr]    |
[INFO] [stderr] 76 |     pub client_secret: Option<String>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/oauth.rs:77:5
[INFO] [stderr]    |
[INFO] [stderr] 77 |     pub redirect_uris: Vec<String>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/oauth.rs:78:5
[INFO] [stderr]    |
[INFO] [stderr] 78 |     pub client_name: Option<String>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/oauth.rs:79:5
[INFO] [stderr]    |
[INFO] [stderr] 79 |     pub grant_types: Vec<String>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/oauth.rs:80:5
[INFO] [stderr]    |
[INFO] [stderr] 80 |     pub response_types: Vec<String>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/oauth.rs:81:5
[INFO] [stderr]    |
[INFO] [stderr] 81 |     pub scope: Option<String>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/oauth.rs:82:5
[INFO] [stderr]    |
[INFO] [stderr] 82 |     pub issued_at: u64,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct
[INFO] [stderr]   --> src/oauth.rs:87:1
[INFO] [stderr]    |
[INFO] [stderr] 87 | pub struct AuthCode {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/oauth.rs:88:5
[INFO] [stderr]    |
[INFO] [stderr] 88 |     pub code: String,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/oauth.rs:89:5
[INFO] [stderr]    |
[INFO] [stderr] 89 |     pub client_id: String,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/oauth.rs:90:5
[INFO] [stderr]    |
[INFO] [stderr] 90 |     pub redirect_uri: String,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/oauth.rs:91:5
[INFO] [stderr]    |
[INFO] [stderr] 91 |     pub scope: String,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/oauth.rs:92:5
[INFO] [stderr]    |
[INFO] [stderr] 92 |     pub code_challenge: Option<String>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/oauth.rs:93:5
[INFO] [stderr]    |
[INFO] [stderr] 93 |     pub code_challenge_method: Option<String>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/oauth.rs:94:5
[INFO] [stderr]    |
[INFO] [stderr] 94 |     pub expires_at: Instant,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct
[INFO] [stderr]   --> src/oauth.rs:99:1
[INFO] [stderr]    |
[INFO] [stderr] 99 | pub struct TokenInfo {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:100:5
[INFO] [stderr]     |
[INFO] [stderr] 100 |     pub access_token: String,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:101:5
[INFO] [stderr]     |
[INFO] [stderr] 101 |     pub refresh_token: Option<String>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:102:5
[INFO] [stderr]     |
[INFO] [stderr] 102 |     pub client_id: String,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:103:5
[INFO] [stderr]     |
[INFO] [stderr] 103 |     pub scope: String,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:104:5
[INFO] [stderr]     |
[INFO] [stderr] 104 |     pub expires_at: Instant,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct
[INFO] [stderr]    --> src/oauth.rs:116:1
[INFO] [stderr]     |
[INFO] [stderr] 116 | pub struct OAuthStore {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for an associated function
[INFO] [stderr]    --> src/oauth.rs:121:5
[INFO] [stderr]     |
[INFO] [stderr] 121 |     pub fn new() -> Self {
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a method
[INFO] [stderr]    --> src/oauth.rs:127:5
[INFO] [stderr]     |
[INFO] [stderr] 127 |     pub fn register_client(&self, mut client: RegisteredClient) -> RegisteredClient {
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a method
[INFO] [stderr]    --> src/oauth.rs:142:5
[INFO] [stderr]     |
[INFO] [stderr] 142 |     pub fn get_client(&self, client_id: &str) -> Option<RegisteredClient> {
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a method
[INFO] [stderr]    --> src/oauth.rs:147:5
[INFO] [stderr]     |
[INFO] [stderr] 147 | /     pub fn create_code(
[INFO] [stderr] 148 | |         &self,
[INFO] [stderr] 149 | |         client_id: String,
[INFO] [stderr] 150 | |         redirect_uri: String,
[INFO] [stderr] ...   |
[INFO] [stderr] 153 | |         code_challenge_method: Option<String>,
[INFO] [stderr] 154 | |     ) -> String {
[INFO] [stderr]     | |_______________^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a method
[INFO] [stderr]    --> src/oauth.rs:170:5
[INFO] [stderr]     |
[INFO] [stderr] 170 |     pub fn consume_code(&self, code: &str) -> Option<AuthCode> {
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a method
[INFO] [stderr]    --> src/oauth.rs:180:5
[INFO] [stderr]     |
[INFO] [stderr] 180 |     pub fn issue_token(&self, client_id: String, scope: String) -> TokenInfo {
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a method
[INFO] [stderr]    --> src/oauth.rs:198:5
[INFO] [stderr]     |
[INFO] [stderr] 198 |     pub fn validate_token(&self, token: &str) -> bool {
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a function
[INFO] [stderr]    --> src/oauth.rs:207:1
[INFO] [stderr]     |
[INFO] [stderr] 207 | pub fn get_issuer_url(app: &App, headers: &HeaderMap) -> String {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a function
[INFO] [stderr]    --> src/oauth.rs:233:1
[INFO] [stderr]     |
[INFO] [stderr] 233 | / pub async fn oauth_authorization_server_metadata(
[INFO] [stderr] 234 | |     State(app): State<App>,
[INFO] [stderr] 235 | |     headers: HeaderMap,
[INFO] [stderr] 236 | | ) -> impl IntoResponse {
[INFO] [stderr]     | |______________________^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a function
[INFO] [stderr]    --> src/oauth.rs:253:1
[INFO] [stderr]     |
[INFO] [stderr] 253 | pub async fn openid_configuration(State(app): State<App>, headers: HeaderMap) -> impl IntoResponse {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a function
[INFO] [stderr]    --> src/oauth.rs:272:1
[INFO] [stderr]     |
[INFO] [stderr] 272 | / pub async fn oauth_protected_resource_metadata(
[INFO] [stderr] 273 | |     State(app): State<App>,
[INFO] [stderr] 274 | |     headers: HeaderMap,
[INFO] [stderr] 275 | | ) -> impl IntoResponse {
[INFO] [stderr]     | |______________________^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct
[INFO] [stderr]    --> src/oauth.rs:286:1
[INFO] [stderr]     |
[INFO] [stderr] 286 | pub struct RegisterRequest {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:287:5
[INFO] [stderr]     |
[INFO] [stderr] 287 |     pub client_name: Option<String>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:288:5
[INFO] [stderr]     |
[INFO] [stderr] 288 |     pub redirect_uris: Option<Vec<String>>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:289:5
[INFO] [stderr]     |
[INFO] [stderr] 289 |     pub grant_types: Option<Vec<String>>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:290:5
[INFO] [stderr]     |
[INFO] [stderr] 290 |     pub response_types: Option<Vec<String>>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:291:5
[INFO] [stderr]     |
[INFO] [stderr] 291 |     pub scope: Option<String>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a function
[INFO] [stderr]    --> src/oauth.rs:294:1
[INFO] [stderr]     |
[INFO] [stderr] 294 | / pub async fn register_client(
[INFO] [stderr] 295 | |     State(app): State<App>,
[INFO] [stderr] 296 | |     Json(req): Json<RegisterRequest>,
[INFO] [stderr] 297 | | ) -> impl IntoResponse {
[INFO] [stderr]     | |______________________^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct
[INFO] [stderr]    --> src/oauth.rs:335:1
[INFO] [stderr]     |
[INFO] [stderr] 335 | pub struct AuthorizeParams {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:336:5
[INFO] [stderr]     |
[INFO] [stderr] 336 |     pub client_id: Option<String>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:337:5
[INFO] [stderr]     |
[INFO] [stderr] 337 |     pub redirect_uri: Option<String>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:338:5
[INFO] [stderr]     |
[INFO] [stderr] 338 |     pub response_type: Option<String>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:339:5
[INFO] [stderr]     |
[INFO] [stderr] 339 |     pub scope: Option<String>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:340:5
[INFO] [stderr]     |
[INFO] [stderr] 340 |     pub state: Option<String>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:341:5
[INFO] [stderr]     |
[INFO] [stderr] 341 |     pub code_challenge: Option<String>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:342:5
[INFO] [stderr]     |
[INFO] [stderr] 342 |     pub code_challenge_method: Option<String>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a function
[INFO] [stderr]    --> src/oauth.rs:345:1
[INFO] [stderr]     |
[INFO] [stderr] 345 | / pub async fn authorize_get(
[INFO] [stderr] 346 | |     State(app): State<App>,
[INFO] [stderr] 347 | |     Query(params): Query<AuthorizeParams>,
[INFO] [stderr] 348 | | ) -> Response {
[INFO] [stderr]     | |_____________^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct
[INFO] [stderr]    --> src/oauth.rs:391:1
[INFO] [stderr]     |
[INFO] [stderr] 391 | pub struct AuthorizeForm {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:392:5
[INFO] [stderr]     |
[INFO] [stderr] 392 |     pub code: String,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:393:5
[INFO] [stderr]     |
[INFO] [stderr] 393 |     pub redirect_uri: String,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]    --> src/oauth.rs:394:5
[INFO] [stderr]     |
[INFO] [stderr] 394 |     pub state: Option<String>,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a function
[INFO] [stderr]    --> src/oauth.rs:397:1
[INFO] [stderr]     |
[INFO] [stderr] 397 | pub async fn authorize_post(Form(form): Form<AuthorizeForm>) -> impl IntoResponse {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a function
[INFO] [stderr]    --> src/oauth.rs:453:1
[INFO] [stderr]     |
[INFO] [stderr] 453 | / pub async fn token_endpoint(
[INFO] [stderr] 454 | |     State(app): State<App>,
[INFO] [stderr] 455 | |     headers: HeaderMap,
[INFO] [stderr] 456 | |     body: axum::body::Bytes,
[INFO] [stderr] 457 | | ) -> impl IntoResponse {
[INFO] [stderr]     | |______________________^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a function
[INFO] [stderr]    --> src/oauth.rs:586:1
[INFO] [stderr]     |
[INFO] [stderr] 586 | pub async fn userinfo_endpoint(State(_app): State<App>, headers: HeaderMap) -> impl IntoResponse {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a function
[INFO] [stderr]    --> src/oauth.rs:604:1
[INFO] [stderr]     |
[INFO] [stderr] 604 | pub async fn jwks_endpoint() -> impl IntoResponse {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct
[INFO] [stderr]   --> src/launcher.rs:23:1
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub struct CompanionProcess {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for an enum
[INFO] [stderr]   --> src/launcher.rs:30:1
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub enum Tunnel<'a> {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a variant
[INFO] [stderr]   --> src/launcher.rs:31:5
[INFO] [stderr]    |
[INFO] [stderr] 31 |     Ngrok {
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/launcher.rs:32:9
[INFO] [stderr]    |
[INFO] [stderr] 32 |         program: &'a Path,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/launcher.rs:33:9
[INFO] [stderr]    |
[INFO] [stderr] 33 |         extra_args: &'a [String],
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a variant
[INFO] [stderr]   --> src/launcher.rs:35:5
[INFO] [stderr]    |
[INFO] [stderr] 35 |     Cloudflared {
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/launcher.rs:36:9
[INFO] [stderr]    |
[INFO] [stderr] 36 |         program: &'a Path,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/launcher.rs:37:9
[INFO] [stderr]    |
[INFO] [stderr] 37 |         extra_args: &'a [String],
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a variant
[INFO] [stderr]   --> src/launcher.rs:39:5
[INFO] [stderr]    |
[INFO] [stderr] 39 |     Zrok {
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/launcher.rs:40:9
[INFO] [stderr]    |
[INFO] [stderr] 40 |         program: &'a Path,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a struct field
[INFO] [stderr]   --> src/launcher.rs:41:9
[INFO] [stderr]    |
[INFO] [stderr] 41 |         extra_args: &'a [String],
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a method
[INFO] [stderr]   --> src/launcher.rs:74:5
[INFO] [stderr]    |
[INFO] [stderr] 74 |     pub fn failure(&self) -> Option<&str> {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for an associated function
[INFO] [stderr]   --> src/launcher.rs:78:5
[INFO] [stderr]    |
[INFO] [stderr] 78 | /     pub fn start_tunnel(
[INFO] [stderr] 79 | |         tunnel: Tunnel<'_>,
[INFO] [stderr] 80 | |         host: IpAddr,
[INFO] [stderr] 81 | |         port: u16,
[INFO] [stderr] 82 | |         window: CompanionWindow,
[INFO] [stderr] 83 | |     ) -> Result<Self> {
[INFO] [stderr]    | |_____________________^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for an associated function
[INFO] [stderr]   --> src/launcher.rs:87:5
[INFO] [stderr]    |
[INFO] [stderr] 87 | /     pub fn start_tunnel_with_url_callback(
[INFO] [stderr] 88 | |         tunnel: Tunnel<'_>,
[INFO] [stderr] 89 | |         host: IpAddr,
[INFO] [stderr] 90 | |         port: u16,
[INFO] [stderr] 91 | |         window: CompanionWindow,
[INFO] [stderr] 92 | |         on_public_url: impl Fn(String) + Send + Sync + 'static,
[INFO] [stderr] 93 | |     ) -> Result<Self> {
[INFO] [stderr]    | |_____________________^
[INFO] [stderr] 
[INFO] [stderr] warning: missing documentation for a function
[INFO] [stderr]   --> src/tools/dispatch.rs:47:1
[INFO] [stderr]    |
[INFO] [stderr] 47 | pub fn tool_error(message: String) -> Value {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `fs-mcp-rs` (lib) generated 87 warnings (run `cargo fix --lib -p fs-mcp-rs` to apply 1 suggestion)
[INFO] [stderr] warning: `fs-mcp-rs` (lib test) generated 87 warnings (87 duplicates)
[INFO] [stderr] warning: `fs-mcp-rs` (lib) generated 87 warnings (87 duplicates)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.23s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/fs-mcp-rs/a547cfb96e6856ad/out/fs_mcp_rs-a547cfb96e6856ad)
[INFO] [stdout] 
[INFO] [stdout] running 30 tests
[INFO] [stdout] test security::tests::accepts_single_component_write_path ... ok
[INFO] [stdout] test launcher::tests::extracts_provider_urls_from_common_output_formats ... ok
[INFO] [stdout] test filesystem::tests::requires_existing_parent_by_default ... ok
[INFO] [stdout] test protocol::tests::serializes_success_without_error ... ok
[INFO] [stdout] test settings::tests::resolves_explicit_and_default_config_path ... ok
[INFO] [stdout] test settings::tests::tunnel_providers_are_mutually_exclusive ... ok
[INFO] [stdout] test launcher::tests::ignores_urls_for_another_provider ... ok
[INFO] [stdout] test settings::tests::rejects_unknown_fields ... ok
[INFO] [stdout] test settings::tests::parses_run_with_ngrok_without_affecting_legacy_roots ... ok
[INFO] [stdout] test terminal::tests::rejects_commands_when_disabled ... ok
[INFO] [stdout] test search::tests::literal_search_uses_case_insensitive_fast_path ... ok
[INFO] [stdout] test security::tests::read_only_rejects_writes ... ok
[INFO] [stdout] test security::tests::rejects_paths_outside_root ... ok
[INFO] [stdout] test tools::dispatch::tests::argument_summary_truncates_unicode_at_character_boundaries ... ok
[INFO] [stdout] test tools::dispatch::tests::structured_result_keeps_text_and_object_representations ... ok
[INFO] [stdout] test filesystem::tests::writes_reads_and_hashes ... ok
[INFO] [stdout] test filesystem::tests::rejects_oversized_reads_and_writes ... ok
[INFO] [stdout] test patch::tests::preserves_crlf_and_rejects_context_without_writing ... ok
[INFO] [stdout] test patch::tests::applies_one_and_multiple_hunks_and_dry_run ... ok
[INFO] [stdout] test tree::tests::cursor_rejects_changed_filters_and_non_directory ... ok
[INFO] [stdout] test filesystem::tests::creates_missing_parent_directories_when_requested ... ok
[INFO] [stdout] test tree::tests::depth_order_globs_and_pagination ... ok
[INFO] [stdout] test filesystem::tests::read_only_mode_never_creates_parent_directories ... ok
[INFO] [stdout] test protocol::tests::negotiates_known_and_unknown_versions ... ok
[INFO] [stdout] test search::tests::regex_cache_evicts_one_entry_instead_of_clearing ... ok
[INFO] [stdout] test terminal::tests::enforces_concurrency_limit_for_session_lifetime ... ok
[INFO] [stdout] test terminal::tests::runs_a_shell_command_compatibly ... ok
[INFO] [stdout] test terminal::tests::can_write_to_stdin_and_close_it ... ok
[INFO] [stdout] test terminal::tests::kill_stops_a_running_session ... ok
[INFO] [stdout] test terminal::tests::reads_a_long_running_command_without_restarting_it ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/build/fs-mcp-rs/e8c11be0b7369e84/out/fs_mcp_rs-e8c11be0b7369e84)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/oauth_test.rs (/opt/rustwide/target/release/build/fs-mcp-rs/fda9b127fa1fcaf9/out/oauth_test-fda9b127fa1fcaf9)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test test_oauth_discovery_endpoints ... FAILED
[INFO] [stdout] test test_mcp_auth_enforcement ... FAILED
[INFO] [stdout] test test_pkce_s256_flow_hyperagent_vector ... FAILED
[INFO] [stdout] test test_oauth_client_registration_and_token_flow ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- test_oauth_discovery_endpoints stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'test_oauth_discovery_endpoints' (2718) panicked at tests/oauth_test.rs:80:5:
[INFO] [stdout] server did not start
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x591e2be25c75 - <unknown>
[INFO] [stdout]    1:     0x591e2be0538a - <unknown>
[INFO] [stdout]    2:     0x591e2be2530b - <unknown>
[INFO] [stdout]    3:     0x591e2be24def - <unknown>
[INFO] [stdout]    4:     0x591e2be24a1a - <unknown>
[INFO] [stdout]    5:     0x591e2be24555 - <unknown>
[INFO] [stdout]    6:     0x591e2be4b3e2 - <unknown>
[INFO] [stdout]    7:     0x591e2be4b369 - <unknown>
[INFO] [stdout]    8:     0x591e2be4b86c - <unknown>
[INFO] [stdout]    9:     0x591e2be0521b - <unknown>
[INFO] [stdout]   10:     0x591e2bdfc45a - <unknown>
[INFO] [stdout]   11:     0x591e2be021e8 - <unknown>
[INFO] [stdout]   12:     0x591e2be657eb - <unknown>
[INFO] [stdout]   13:     0x591e2be612a0 - <unknown>
[INFO] [stdout]   14:     0x591e2be609cc - <unknown>
[INFO] [stdout]   15:     0x591e2be80c3c - <unknown>
[INFO] [stdout]   16:     0x591e2be4d0e4 - <unknown>
[INFO] [stdout]   17:     0x7d4dfe116dfa - <unknown>
[INFO] [stdout]   18:     0x7d4dfe1aa3d4 - clone
[INFO] [stdout]   19:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- test_mcp_auth_enforcement stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'test_mcp_auth_enforcement' (2716) panicked at tests/oauth_test.rs:80:5:
[INFO] [stdout] server did not start
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x591e2be25c75 - <unknown>
[INFO] [stdout]    1:     0x591e2be0538a - <unknown>
[INFO] [stdout]    2:     0x591e2be2530b - <unknown>
[INFO] [stdout]    3:     0x591e2be24def - <unknown>
[INFO] [stdout]    4:     0x591e2be24a1a - <unknown>
[INFO] [stdout]    5:     0x591e2be24555 - <unknown>
[INFO] [stdout]    6:     0x591e2be4b3e2 - <unknown>
[INFO] [stdout]    7:     0x591e2be4b369 - <unknown>
[INFO] [stdout]    8:     0x591e2be4b86c - <unknown>
[INFO] [stdout]    9:     0x591e2be0521b - <unknown>
[INFO] [stdout]   10:     0x591e2bdfc45a - <unknown>
[INFO] [stdout]   11:     0x591e2be0166b - <unknown>
[INFO] [stdout]   12:     0x591e2be657eb - <unknown>
[INFO] [stdout]   13:     0x591e2be612a0 - <unknown>
[INFO] [stdout]   14:     0x591e2be609cc - <unknown>
[INFO] [stdout]   15:     0x591e2be80c3c - <unknown>
[INFO] [stdout]   16:     0x591e2be4d0e4 - <unknown>
[INFO] [stdout]   17:     0x7d4dfe116dfa - <unknown>
[INFO] [stdout]   18:     0x7d4dfe1aa3d4 - clone
[INFO] [stdout]   19:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- test_pkce_s256_flow_hyperagent_vector stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'test_pkce_s256_flow_hyperagent_vector' (2719) panicked at tests/oauth_test.rs:80:5:
[INFO] [stdout] server did not start
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x591e2be25c75 - <unknown>
[INFO] [stdout]    1:     0x591e2be0538a - <unknown>
[INFO] [stdout]    2:     0x591e2be2530b - <unknown>
[INFO] [stdout]    3:     0x591e2be24def - <unknown>
[INFO] [stdout]    4:     0x591e2be24a1a - <unknown>
[INFO] [stdout]    5:     0x591e2be24555 - <unknown>
[INFO] [stdout]    6:     0x591e2be4b3e2 - <unknown>
[INFO] [stdout]    7:     0x591e2be4b369 - <unknown>
[INFO] [stdout]    8:     0x591e2be4b86c - <unknown>
[INFO] [stdout]    9:     0x591e2be0521b - <unknown>
[INFO] [stdout]   10:     0x591e2bdfc45a - <unknown>
[INFO] [stdout]   11:     0x591e2be02e83 - <unknown>
[INFO] [stdout]   12:     0x591e2be657eb - <unknown>
[INFO] [stdout]   13:     0x591e2be612a0 - <unknown>
[INFO] [stdout]   14:     0x591e2be609cc - <unknown>
[INFO] [stdout]   15:     0x591e2be80c3c - <unknown>
[INFO] [stdout]   16:     0x591e2be4d0e4 - <unknown>
[INFO] [stdout]   17:     0x7d4dfe116dfa - <unknown>
[INFO] [stdout]   18:     0x7d4dfe1aa3d4 - clone
[INFO] [stdout]   19:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- test_oauth_client_registration_and_token_flow stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'test_oauth_client_registration_and_token_flow' (2717) panicked at tests/oauth_test.rs:80:5:
[INFO] [stdout] server did not start
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x591e2be25c75 - <unknown>
[INFO] [stdout]    1:     0x591e2be0538a - <unknown>
[INFO] [stdout]    2:     0x591e2be2530b - <unknown>
[INFO] [stdout]    3:     0x591e2be24def - <unknown>
[INFO] [stdout]    4:     0x591e2be24a1a - <unknown>
[INFO] [stdout]    5:     0x591e2be24555 - <unknown>
[INFO] [stdout]    6:     0x591e2be4b3e2 - <unknown>
[INFO] [stdout]    7:     0x591e2be4b369 - <unknown>
[INFO] [stdout]    8:     0x591e2be4b86c - <unknown>
[INFO] [stdout]    9:     0x591e2be0521b - <unknown>
[INFO] [stdout]   10:     0x591e2bdfc45a - <unknown>
[INFO] [stdout]   11:     0x591e2be03173 - <unknown>
[INFO] [stdout]   12:     0x591e2be657eb - <unknown>
[INFO] [stdout]   13:     0x591e2be612a0 - <unknown>
[INFO] [stdout]   14:     0x591e2be609cc - <unknown>
[INFO] [stdout]   15:     0x591e2be80c3c - <unknown>
[INFO] [stdout]   16:     0x591e2be4d0e4 - <unknown>
[INFO] [stdout]   17:     0x7d4dfe116dfa - <unknown>
[INFO] [stdout]   18:     0x7d4dfe1aa3d4 - clone
[INFO] [stdout]   19:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     test_mcp_auth_enforcement
[INFO] [stdout]     test_oauth_client_registration_and_token_flow
[INFO] [stdout]     test_oauth_discovery_endpoints
[INFO] [stdout]     test_pkce_s256_flow_hyperagent_vector
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 0 passed; 4 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.04s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--test oauth_test`
[INFO] running `Command { std: "docker" "inspect" "cfb26e57dcc0dde3bb51525a93a3ca0bd92faa1763163a91ad74666fc672be7c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cfb26e57dcc0dde3bb51525a93a3ca0bd92faa1763163a91ad74666fc672be7c", kill_on_drop: false }`
[INFO] [stdout] cfb26e57dcc0dde3bb51525a93a3ca0bd92faa1763163a91ad74666fc672be7c
