@@ -7,15 +7,58 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
88## [ Unreleased]
99
10+ ## [ 0.2.0] - 2026-03-27
11+
1012### Highlights
1113
12- - Added a hardened outbound profile for cluster and data-plane deployments
13- - Ambient proxy environment variables are now ignored by default
14- - Added hostname, port, and redirect restrictions for tighter egress policy
14+ - Pluggable fetchers for GitHub, Wikipedia, YouTube, ArXiv, StackOverflow, HackerNews, RSS, package registries, docs sites, and Twitter
15+ - Batch fetching for concurrent multi-URL requests
16+ - Content-focused extraction with boilerplate stripping and structured metadata
17+ - Conditional fetching with ETag and If-Modified-Since support
18+ - Improved HTML-to-Markdown conversion quality
19+ - Content quality signals: word count, redirect chain, paywall detection
20+ - Optional Web Bot Authentication support
21+ - Hardened outbound fetch policy with proxy isolation and SSRF mitigations
22+ - Live integration test suite behind feature flag
23+
24+ ### Breaking Changes
25+
26+ - Ambient proxy environment variables are now ignored by default; set them explicitly if needed
1527
1628### What's Changed
1729
18- - ` fix(security): harden outbound fetch policy and add deployment guidance `
30+ * test(fetchers): add live integration tests behind feature flag ([ #84 ] ( https://github.com/everruns/fetchkit/pull/84 ) )
31+ * chore: periodic maintenance — deps update and spec sync ([ #83 ] ( https://github.com/everruns/fetchkit/pull/83 ) )
32+ * feat(fetch): add content quality signals (word_count, redirect_chain, is_paywall) ([ #82 ] ( https://github.com/everruns/fetchkit/pull/82 ) )
33+ * feat(client): add batch_fetch for concurrent multi-URL fetching ([ #81 ] ( https://github.com/everruns/fetchkit/pull/81 ) )
34+ * feat(fetch): add conditional fetching with ETag and If-Modified-Since ([ #80 ] ( https://github.com/everruns/fetchkit/pull/80 ) )
35+ * feat(convert): improve HTML-to-Markdown conversion quality ([ #79 ] ( https://github.com/everruns/fetchkit/pull/79 ) )
36+ * feat(convert): add content-focused extraction with boilerplate stripping ([ #78 ] ( https://github.com/everruns/fetchkit/pull/78 ) )
37+ * feat(convert): add structured metadata extraction from HTML pages ([ #77 ] ( https://github.com/everruns/fetchkit/pull/77 ) )
38+ * feat(fetchers): add RSSFeedFetcher for structured feed parsing ([ #70 ] ( https://github.com/everruns/fetchkit/pull/70 ) )
39+ * feat(fetchers): add HackerNewsFetcher for structured thread extraction ([ #69 ] ( https://github.com/everruns/fetchkit/pull/69 ) )
40+ * feat(fetchers): add ArXivFetcher for paper metadata and abstract ([ #68 ] ( https://github.com/everruns/fetchkit/pull/68 ) )
41+ * feat(fetchers): add YouTubeFetcher for video metadata extraction ([ #67 ] ( https://github.com/everruns/fetchkit/pull/67 ) )
42+ * feat(fetchers): add WikipediaFetcher for article extraction ([ #66 ] ( https://github.com/everruns/fetchkit/pull/66 ) )
43+ * feat(fetchers): add PackageRegistryFetcher for PyPI, crates.io, npm ([ #65 ] ( https://github.com/everruns/fetchkit/pull/65 ) )
44+ * feat(fetchers): add StackOverflowFetcher for clean Q&A extraction ([ #64 ] ( https://github.com/everruns/fetchkit/pull/64 ) )
45+ * feat(fetchers): add DocsSiteFetcher with llms.txt support ([ #63 ] ( https://github.com/everruns/fetchkit/pull/63 ) )
46+ * feat(fetchers): add GitHubCodeFetcher for source file fetching ([ #62 ] ( https://github.com/everruns/fetchkit/pull/62 ) )
47+ * feat(fetchers): add GitHubIssueFetcher for structured issue/PR fetching ([ #61 ] ( https://github.com/everruns/fetchkit/pull/61 ) )
48+ * feat: add process-issues skill for e2e GitHub issue resolution ([ #60 ] ( https://github.com/everruns/fetchkit/pull/60 ) )
49+ * feat: add optional Web Bot Authentication support ([ #49 ] ( https://github.com/everruns/fetchkit/pull/49 ) )
50+ * feat(fetchers): add TwitterFetcher for tweet URL handling ([ #47 ] ( https://github.com/everruns/fetchkit/pull/47 ) )
51+ * feat: skip HTML conversion for non-HTML responses ([ #48 ] ( https://github.com/everruns/fetchkit/pull/48 ) )
52+ * chore(deps): update workspace dependencies and fix flaky proxy tests ([ #46 ] ( https://github.com/everruns/fetchkit/pull/46 ) )
53+ * feat(toolkit): align fetchkit with toolkit library contract ([ #45 ] ( https://github.com/everruns/fetchkit/pull/45 ) )
54+ * fix(security): harden outbound fetch policy ([ #43 ] ( https://github.com/everruns/fetchkit/pull/43 ) )
55+ * docs: clarify latest-main requirement for worktrees ([ #44 ] ( https://github.com/everruns/fetchkit/pull/44 ) )
56+ * fix(security): isolate proxy env in shared runtimes ([ #42 ] ( https://github.com/everruns/fetchkit/pull/42 ) )
57+ * fix(security): block IPv4-compatible and 6to4 IPv6 addresses in SSRF protection ([ #41 ] ( https://github.com/everruns/fetchkit/pull/41 ) )
58+ * fix(security): sanitize reqwest error messages to prevent hostname leakage ([ #40 ] ( https://github.com/everruns/fetchkit/pull/40 ) )
59+ * fix: resolve threat model issues ([ #37 ] ( https://github.com/everruns/fetchkit/pull/37 ) )
60+
61+ ** Full Changelog** : https://github.com/everruns/fetchkit/compare/v0.1.3...v0.2.0
1962
2063## [ 0.1.3] - 2026-03-12
2164
@@ -96,7 +139,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
96139
97140** Full Changelog** : https://github.com/everruns/fetchkit/commits/v0.1.0
98141
99- [ Unreleased ] : https://github.com/everruns/fetchkit/compare/v0.1.3...HEAD
142+ [ Unreleased ] : https://github.com/everruns/fetchkit/compare/v0.2.0...HEAD
143+ [ 0.2.0 ] : https://github.com/everruns/fetchkit/compare/v0.1.3...v0.2.0
100144[ 0.1.3 ] : https://github.com/everruns/fetchkit/compare/v0.1.2...v0.1.3
101145[ 0.1.2 ] : https://github.com/everruns/fetchkit/compare/v0.1.1...v0.1.2
102146[ 0.1.1 ] : https://github.com/everruns/fetchkit/compare/v0.1.0...v0.1.1
0 commit comments