- Implemented mixed Shopify store and product URL input.
- Added store aggregates, per-product store scan summaries, individual review rows, and explanatory status rows.
- Added native rating, media, newest, and oldest controls.
- Added advanced filters, custom sorts, language detection, translation, and streamed media archiving.
- Added field-level output controls and four dataset views.
- Added resumable deduplication and delivery safety.
- Added pay-per-event integration points and successful-value-only add-on billing.
- Added public plan-window sweeping and explicit incomplete-result status.
- Added public URL and redirect safety checks.
- Added 11 module test files, local scenario fixtures, validated Actor schemas, and customer documentation.
- Fixed request-origin handling, deep pagination, false plan-limit reporting, redirected sitemap discovery, locale-path deduplication, post-fetch filter completeness, and missing enabled-field normalization found during local testing.
- Fixed native rating/media under-delivery caused by Ryviu's unfiltered first-page preload consuming the requested result limit.
- Made language detection conservative for short, ambiguous reviews instead of emitting confident wrong labels.
- Scoped archived media keys by product and review so identical per-product review IDs cannot overwrite each other's files in mixed runs.
- Normalized Ryviu's zero-review average-rating sentinel from
0 to null so empty products do not expose an impossible rating.
- Prevented non-PPE cloud runs from treating an inactive billing event limit as a customer charge cap after the first delivered row.
- Normalized timezone-less Ryviu review timestamps as UTC so local and cloud runs emit identical publication times.
- Preserved non-root Shopify paths and routed pages with embedded product context to review mode instead of silently rewriting them to store scope.
- Added opt-in storefront hedging on retryable responses: two immediate three-session races followed by 30, 60, and 90 second single attempts, with losing bodies cancelled and the winning session retained.
- Moved text and JSON response-body reads inside the retry loop so a body that stalls after valid headers receives the normal retry policy; oversized bodies still fail immediately.
- Replaced the synthetic negative-detection input with a live, readable non-Ryviu Shopify storefront.
- Migrated the canonical Actor and existing Git history from the legacy
sandbox/ layout to the required apify-actor/ repository root and removed the duplicate deployment workflow.
- Removed ignored duplicate source and test snapshots that were still entering Docker and Apify source bundles.
- Verified the production container with a representative product fixture and validated all three emitted review rows.
- Omitted Q&A because no populated public row shape was found in the required probe.
- Aligned the input form, output views, and README with the published Shopify review Actor family, and added written-versus-rating-only filtering.
- Bounded optional Shopify product metadata retries so a blocked
.js endpoint cannot hold a successful product-page run through the long storefront hedge ladder.
Build 0.0.1 is the current stable Actor. The optional product metadata latency fix above remains local until a separately approved push.