# Changelog of Zalo Exporter - Group Members, Contacts and Chats (`kazkn/zalo-member-profile-exporter`) Actor

- **URL**: https://apify.com/kazkn/zalo-member-profile-exporter/changelog.md
- **Full Actor documentation**: https://apify.com/kazkn/zalo-member-profile-exporter.md

## Changelog

### Unreleased

- Changed omitted safety limits to starter-sized defaults: 1 group, 100 members
  per group, 3 conversations per type, and 200 messages per conversation.
  Existing API callers can keep their previous volume by sending explicit
  limits.
- Replaced stale QR action links with terminal failure statuses after QR expiry
  or rejection, so a failed run tells the user to start a fresh QR flow.
- Added a conversion hero, direct Run link, adjacent KazKN tools, and a copyable
  AI-assistant prompt to the README.
- Added value-based paid events for profiles, groups, group members,
  conversation summaries, and messages so each successful Dataset row maps to
  the result delivered.
- Kept owner-exempt Apify test runs in Dataset and OUTPUT counts while stopping
  cleanly when a customer's maximum run charge blocks another result.
- Redesigned the input form with visual export presets, focused sections,
  clearer cost controls, and consistent emoji shortcuts.
- Reworked the README into an outcome-first landing page with colored badges,
  a preset guide, quick start, price examples, focused outputs, and compact
  technical details.
- Replaced the technical scope picker with four user-facing export presets:
  group roster, contacts and profiles, conversation backup, and complete
  snapshot. The obsolete `scopes` field is no longer published in the input
  schema; existing API inputs that explicitly send it remain compatible.
- Added focused Dataset views for group members, groups, profiles,
  conversations, and messages.
- Removed the obsolete duplicate passphrase-era input schema.
- Standardized deployment language on the single `latest` build tag, with no
  intermediate build tags.

### 0.1.24 — 2026-07-30

- Added message type, message text, and attachment details to the default
  Dataset table view.
- Kept the underlying Dataset records unchanged; the view now exposes the
  message fields users expect without requiring a raw JSON or CSV export.

### 0.1.23 — 2026-07-29

- Raised the single user-facing message limit to 10,000 per direct or
  joined-group conversation.
- Added automatic sequential direct and group-history pagination with a 250 ms
  inter-page delay, cursor/message deduplication, and hard page/time anti-ban
  ceilings.
- Added precise completion metadata for message, date, real-start, time, page,
  cursor, and socket boundaries.
- Removed the obsolete 50-message group-history setting from the public form;
  no new technical input or authentication step is required.

### 0.1.16 — 2026-07-28

- Corrected self-cloud history discovery to use Zalo's dedicated
  `send2me_id` thread instead of assuming the account user ID is the cloud
  conversation ID.
- Reads only that one thread reference from the authenticated in-memory
  context; cookies and all other context fields remain outside Actor output.

### 0.1.15 — 2026-07-28

- Enabled read-only self-listening so the optional bounded listener exports
  messages sent by the authenticated account as well as messages it receives.
- This adds no Zalo write API and allows private verification through the
  account's own cloud conversation.

### 0.1.14 — 2026-07-28

- Excluded local tests, smoke scripts, build artifacts, and the obsolete
  passphrase-era schema copy from the private Apify source bundle.
- Kept the active input schema unchanged: standard runs still require no
  passphrase, cookie, token, or other technical authentication input.

### 0.1.13 — 2026-07-28

- Expanded direct-conversation discovery beyond the visible friend list to
  include the account's self/cloud thread plus pinned, hidden, archived, and
  unread conversation references returned by authenticated read-only APIs.
- Added strict thread-ID validation, user/group separation, deduplication, and
  graceful fallback when an optional conversation list is unavailable.
- Kept explicit `conversationIds` authoritative and capped automatic candidate
  discovery before bounded history pagination.

### 0.1.12 — 2026-07-28

- Fixed direct-message history requests to include the targeted Zalo user
  thread instead of issuing an untargeted old-message synchronization.
- Added sequential per-thread pagination, cursor-loop protection, per-thread
  message limits, and a global synchronization timeout.
- Added joined-group conversation records through Zalo's authenticated group
  history endpoint and bounded them separately from direct conversations.
- Kept message text and attachment metadata optional for privacy-safe checks.

### 0.1.11 — 2026-07-28

- Replaced the unauthenticated Playwright conversation path with Zalo's
  authenticated read-only old-message listener for direct and group history.
- Added bounded pagination, cipher-handshake readiness, deterministic listener
  cleanup, partial-history reporting, and content-redaction regressions.
- Saved the encrypted reusable session immediately after authentication, before
  any optional extraction can fail.
- Kept the Actor private and limited-permission while conversation, group, and
  member verification continues.

### 0.1.2 — 2026-07-28

- Removed the user-managed session passphrase from Actor input.
- Added operator-managed secret derivation scoped by Actor, Apify user, and
  saved Zalo account.
- Made the standard form runnable with no required fields and added
  plain-language data, date, privacy, and QR recovery controls.
- Kept multi-account labels, filters, and safety limits as advanced settings.

### 0.1.1 — 2026-07-28

- Fixed limited-permission detection when `apify@3.7.2` exposes the platform
  value only through the raw `ACTOR_PERMISSION_LEVEL` environment variable.
- Added a regression test that keeps full-permission runs fail-closed.
- Fixed alias-lock requests so Crawlee can attach its internal request metadata
  without weakening tenant or account isolation.
- Fixed session and restart-checkpoint keys to comply with Apify key-value store
  naming rules.

### 0.1.0 — 2026-07-28

- Added hybrid run-local QR authentication with encrypted session reuse.
- Added per-Apify-user, per-alias, and per-Zalo-account isolation.
- Added read-only export of friends, accessible profiles, joined groups, visible
  members, recent group messages, Zalo Web history, and a bounded listener.
- Added strict input/output/Dataset schemas and limited-permission runtime guard.
- Added fail-closed selector checks, secret-redaction regressions, 80% coverage
  gates, and an offline smoke test.

The Actor remains private and requires record-level conversation, group, and
member canaries before any public Store launch claim.
