v1.4 (2026-06-11) — Never-FAIL hardening: reversed the v1.0.1 honest-fail. An Instagram block / proxy rate-limit / empty target is no longer treated as a run failure. When 0 reels are collected the run now emits a terminal WARNING status, pushes ONE schema-valid diagnostic row explaining why (so the dataset is never silently empty), and exits SUCCESS — runs only FAIL on a genuine unrecoverable code crash. Added safePushData() wrapping every Actor.pushData so a dataset_schema rejection on one record is caught and retried with a minimal compliant record instead of failing the batch. No change to scraping/extraction logic.
v1.3 (2026-06-11) — Per-user proxy fix: default proxy switched from a single shared Webshare account (rate-limited by Instagram under concurrent public load, causing net::ERR_TUNNEL_CONNECTION_FAILED and FAILED runs) to Apify Residential, giving every run its own per-user IP pool billed from the user's own credits. Webshare is now an opt-in override via the WEBSHARE_PROXY_URL secret only; the credential is no longer hardcoded.
v1.2 (2026-06-08) — Anti-block retry escalation: raised maxRequestRetries 2→4 and now retire the session on any failed request so blocked Webshare IPs/fingerprints are dropped and retries rotate onto fresh IPs. Cuts transient Instagram-block failures (was the main driver of the 30-day failure rate) before the run honest-fails.
v1.0.1 (2026-05-06) — Honest-by-default exit: when 0 reels collected AND all requests failed (proxy/IG block), the run now FAILS with a clear error message instead of silently reporting SUCCEEDED with empty dataset. Fixes user complaint about silent failures.