Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

- Public TikTok, Vimeo, and SoundCloud metadata fetching through oEmbed, available automatically in the library, CLI, MCP server, and Python bindings.
- YouTube Shorts, live, embed, and privacy-enhanced embed URL support, with validated video IDs.
- `fetchkit_cli` library: `run(args, &dyn CliHost)` runs the exact `fetchkit` CLI inside another program (used by bashkit's `fetchkit` builtin), with stdout/stderr, environment, MCP, and egress supplied by the host.

### Changed

- **Breaking:** reqwest TLS, HTTP/2, proxy discovery, and body decompression are behind the new default `reqwest-tls` feature. Builds with `default-features = false` must enable it to use the built-in `ReqwestTransport` over HTTPS.
- Require Markkit 0.2.
- clap is built without color and suggestions; CLI help and errors are plain text.

## [0.6.0] - 2026-10-23

Expand Down
18 changes: 6 additions & 12 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 11 additions & 5 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,11 @@ categories = ["web-programming", "text-processing"]
# Async runtime
tokio = { version = "1.54.1", features = ["rt-multi-thread", "macros", "time", "sync"] }

# HTTP client
reqwest = { version = "0.13", features = ["gzip", "brotli", "deflate", "stream", "json"] }
# HTTP client. Default features off: TLS, HTTP/2, proxy discovery and body
# decompression are opted into by fetchkit's `reqwest-tls` feature (on by
# default), so embedders that supply their own `HttpTransport` (e.g. bashkit,
# ring-only rustls) do not get a second TLS stack or aws-lc-sys.
reqwest = { version = "0.13", default-features = false, features = ["stream", "json"] }

# Serialization
serde = { version = "1", features = ["derive"] }
Expand All @@ -36,8 +39,11 @@ tracing = "0.1"
# Error handling
thiserror = "2"

# CLI
clap = { version = "4", features = ["derive"] }
# CLI. Default features off (no color, no did-you-mean suggestions) to match
# bashkit's clap set: bashkit embeds this CLI as a builtin, and clap features
# unify, so color/suggestions here would change bashkit's output and make help
# and error text differ between the standalone binary and the builtin.
clap = { version = "4", default-features = false, features = ["derive", "std", "help", "usage", "error-context"] }

# Async streaming
futures = "0.3"
Expand All @@ -55,7 +61,7 @@ tower = { version = "0.5", features = ["util"] }

# Binary document extraction
pdf-inspector = "0.1.8"
markkit = { version = "0.1.1", default-features = false, features = ["docx", "spreadsheet"] }
markkit = { version = "0.2", default-features = false, features = ["docx", "spreadsheet"] }
calamine = { version = "0.37", default-features = false }
zip = { version = "9", default-features = false, features = ["deflate"] }
quick-xml = "0.41"
Expand Down
8 changes: 8 additions & 0 deletions crates/fetchkit-cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ keywords.workspace = true
categories.workspace = true
readme = "../../README.md"

[lib]
name = "fetchkit_cli"
path = "src/lib.rs"

[[bin]]
# Keep CLI docs off so rustdoc doesn't collide with the library's `fetchkit` output.
name = "fetchkit"
Expand All @@ -32,6 +36,10 @@ tokio = { workspace = true }
clap = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
async-trait = { workspace = true }

[dev-dependencies]
serde_json = { workspace = true }
bytes = { workspace = true }
futures = { workspace = true }
tokio = { workspace = true }
Loading
Loading