Skip to content

Commit 7374ddd

Browse files
committed
chore: release v0.1.20
- stygian-proxy promoted to published crate (circuit breaker, proxy manager, browser/graph integrations) - MSRV locked to 1.94.0 - Proxy add_proxy/acquire_proxy race fix - CDP automation artifact cleanup in browser - crawllab.dev live integration tests (graph + browser)
1 parent 2906791 commit 7374ddd

File tree

4 files changed

+43
-3
lines changed

4 files changed

+43
-3
lines changed

.github/workflows/release.yml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
- name: Verify workspace versions match tag
2727
run: |
2828
TAG_VERSION="${GITHUB_REF#refs/tags/v}"
29-
for crate in stygian-graph stygian-browser; do
29+
for crate in stygian-browser stygian-proxy stygian-graph; do
3030
CARGO_VERSION=$(cargo metadata --no-deps --format-version 1 \
3131
| jq -r --arg name "$crate" '.packages[] | select(.name == $name) | .version')
3232
if [ "$CARGO_VERSION" != "$TAG_VERSION" ]; then
@@ -73,6 +73,21 @@ jobs:
7373
- name: Wait for crates.io index propagation
7474
run: sleep 30
7575

76+
- name: Publish stygian-proxy
77+
run: |
78+
VERSION=$(cargo metadata --no-deps --format-version 1 \
79+
| jq -r '.packages[] | select(.name == "stygian-proxy") | .version')
80+
if cargo search stygian-proxy --limit 1 2>/dev/null | grep -q "^stygian-proxy = \"$VERSION\""; then
81+
echo "stygian-proxy@$VERSION already published, skipping"
82+
else
83+
cargo publish -p stygian-proxy
84+
fi
85+
env:
86+
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
87+
88+
- name: Wait for crates.io index propagation
89+
run: sleep 30
90+
7691
- name: Publish stygian-graph
7792
run: |
7893
VERSION=$(cargo metadata --no-deps --format-version 1 \

CHANGELOG.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.1.20] - 2026-03-16
11+
12+
### Added
13+
14+
- `stygian-proxy`: new crate — high-performance, resilient proxy pool with per-proxy circuit breakers, configurable rotation strategies (round-robin, random, weighted, failover), SOCKS4/5 support, health scoring, and in-memory storage; `socks` feature enables SOCKS proxy types via reqwest
15+
- `stygian-proxy`: `CircuitBreaker` per-proxy state machine — open/half-open/closed transitions with configurable failure threshold and recovery window; wired into `ProxyManager::acquire_proxy` so unhealthy proxies are skipped automatically
16+
- `stygian-proxy`: `ProxyManager` — unified pool orchestrator exposing `add_proxy`, `remove_proxy`, `acquire_proxy`, `release_proxy`, and `pool_stats`; every operation is traced and metered
17+
- `stygian-proxy`: `ProxyBrowserPool``browser` feature flag wires the proxy pool into `stygian-browser`; browsers are launched with a live proxy from the pool and the proxy is re-evaluated on browser release
18+
- `stygian-graph`: `RestApiAdapter` proxy integration via stygian-proxy (`graph` feature on stygian-proxy)
19+
- `book`: `stygian-proxy` mdBook module added — architecture overview, circuit breaker semantics, rotation strategies, and browser/graph integration guides
20+
21+
### Changed
22+
23+
- Workspace MSRV updated to Rust 1.94.0 (aligned with stable feature usage: async closures, `LazyLock`, let chains)
24+
25+
### Fixed
26+
27+
- `stygian-proxy`: eliminated TOCTOU race in `add_proxy` — the `circuit_breakers` write lock is now held for the full duration of `storage.add()`, ensuring `acquire_proxy` can never observe a proxy record without a corresponding circuit breaker
28+
- `stygian-browser`: CDP protection removes `cdc_*` and `domAutomation` automation artifact properties from `window` on every navigation, reducing fingerprint surface for Akamai/PerimeterX detectors
29+
30+
### Tests
31+
32+
- `stygian-graph`: 12 live integration tests against crawllab.dev (all `#[ignore]`) — status code classification (200/404/429/500), redirect following, redirect cycle detection, JSON/text/HTML content types, 204 No Content, and paginated forum endpoint
33+
- `stygian-browser`: 4 live browser integration tests against crawllab.dev (all `#[ignore]`) — inline JS rendering, external script rendering, basic navigation, and JS eval with stealth verification
34+
1035
## [0.1.19] - 2026-03-15
1136

1237
### Changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ members = [
77
]
88

99
[workspace.package]
10-
version = "0.1.19"
10+
version = "0.1.20"
1111
edition = "2024"
1212
rust-version = "1.94.0"
1313
authors = ["Nick Campbell <s0ma@protonmail.com>"]

crates/stygian-proxy/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ reqwest = { workspace = true }
3535
rand = "0.9"
3636

3737
# Browser integration (optional)
38-
stygian-browser = { path = "../stygian-browser", optional = true }
38+
stygian-browser = { path = "../stygian-browser", version = "0.1", optional = true }
3939

4040
[dev-dependencies]
4141
tokio = { workspace = true }

0 commit comments

Comments
 (0)