# Changelog of Bluesky Posts Search Scraper (`codingfrontend/bluesky-posts-search-scraper`) Actor

- **URL**: https://apify.com/codingfrontend/bluesky-posts-search-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/codingfrontend/bluesky-posts-search-scraper.md

## Changelog

### 1.0.1 - 2026-08-31

- Enforced strict programmatic input validation and rejected unknown fields.
- Stopped fabricating zero engagement counts when the public response omits them.
- Added explicit post/diagnostic record types, status, success flags, and common required fields.
- Removed synthetic diagnostic post text and corrected summary dataset counts.
- Corrected the Dockerfile path, removed an unused HTTP dependency, and replaced the permissive dataset validator.
- Added bounded latest, top, invalid, and cloud QA inputs with matching documentation.
- Switched the search route to Bluesky's documented `public.api.bsky.app` AppView host.

All notable changes to **bluesky-posts-search-scraper** are documented here.

### \[1.1.0] - 2025-07-08

#### Changed

- Refactored project to the Brave actor structure
- Extracted post normalization into `src/extractors/posts.js` (`normalizePost`)
- Extracted pagination logic into `src/routes/handlers.js` (`searchBlueskyPosts`)
- Added `src/schema/input.js` for validated input with defaults
- Added `src/utils/index.js` with `buildSearchUrl`, `sleep`, `PAGE_LIMIT`, `BASE_URL`
- Simplified `src/main.js` to a clean delegation entry point

#### Added

- `validate-datasets.js` for local dataset validation
- `src/routes.js` re-export for consistent module structure

### \[1.0.0] - 2024-12-01

#### Added

- Initial release — search Bluesky posts via AT Protocol API
- Cursor-based pagination for retrieving up to `maxItems` posts
- Output fields: uri, text, author, createdAt, likeCount, replyCount, repostCount, quoteCount, langs
