# Changelog ## alpha 0.6.3.1015 - Replace instant personal lottery tickets with one persistent multiplayer lottery round per group: start, register/update, status, draw, and cancel. - Treat each ticket as three distinct digits from 0-9. Sort digits before storage so `347` and `743` represent the same selection. - Accept spaced and compact OCR forms. Ticket stakes are 1-500 coins with a default of 10 when omitted. - Return 0%, 50%, 120%, or 300% of the stake for matching zero, one, two, or three drawn digits. All settlement values remain integer coins. - Commit entry updates, stake differences, all-player payouts, cancellation refunds, and event replay responses in serialized SQLite transactions. - Raise the blackjack stake range to 1-500 coins. - Add per-game personal sequence numbers and `/游戏记录` (`/gamehistory`) for prize draws, lottery rounds, and blackjack hands. - Prefix game output with the configured player label and game number, such as `Jacky #1:...`; aliases share the same counter and account. ## alpha 0.6.2.1015 - Bound direct DeepSeek SSE reads to 30 seconds of total wall time in addition to the existing 18-second socket inactivity timeout. - Stop reading as soon as the SSE `[DONE]` marker arrives instead of waiting for the upstream connection to close. - Prevent a trickling or unfinished upstream response from occupying both generation workers for about 15 minutes and delaying later final replies. - Preserve fast ACK delivery, three-attempt retry behavior, two generation workers, and strict final-reply ordering. - Treat `/21点 开始 100` as a 100-coin stake and accept OCR forms with missing whitespace, such as `/21点开始100` and `/blackjackstart100`. - Keep blackjack play as explicit steps: start and deal first, then hit or stand in a separate command. Combined forms return this workflow without opening a game or deducting funds. - Prefix blackjack hands, status and settlement replies with the current group-scoped player's configured display label, such as `jacky:...`. ## alpha 0.6.1.1015 - Add three reviewed plugins: local context summaries for 100/200/300 messages, person and alias lookup, and single-player virtual coin games. - Provide corresponding Chinese and English commands, including `/context`, `/people`, `/person`, `/wallet`, `/draw`, `/lottery`, and `/blackjack`. - Grant each group-scoped person 1000 virtual coins once; persist account state, private blackjack decks, timeout/forfeit rules, and win/loss statistics. - Commit funds, game state and event replay responses in one SQLite transaction; retries never debit twice, and aliases share the canonical person's account. - Reconcile the message image after a two-second idle wait so a missed final XDamage notification does not strand an isolated message; drain buffered Xlib events before waiting on the socket. Preserve visual deduplication and guards. - Keep the generated feature list within the sender's 900-character boundary. - Document local extractive-summary coverage, OCR identity limitations, game payouts, persistence and rollback behavior. ## alpha 0.6.0.1015 - Replace repository-local and hardcoded deployment values with independent, profile-based configuration packages. - Add atomic config generation, activation, import, redacted/private export, schema validation, and migration of legacy environment/context material. - Move private person aliases, bot identity, debug sessions, incident reports, telemetry exports, and root-operation archives outside Git with strict permissions. - Remove fixed Steam rosters, aliases, display names, and SteamIDs from source. - Make `/steam` discover the configured account's public friend list at runtime. - Add `/steam时长 游戏名`, whitespace-free OCR forms, game-name fuzzy matching, bounded per-account playtime queries, privacy-state accounting, and caching. - Add `/steam时长 游戏名、玩家名` with exact, unique partial, and fuzzy persona matching while limiting game-library requests to the selected account. - Preserve optional group-person-to-SteamID mappings in private profiles, migrate legacy scoped rosters and aliases, and prefer that roster over public friend discovery. - Preserve multiline local-command output so `/debug` remains readable. - Remove the visible `好友` wording and add a dedicated Steam progress ACK. - Rename built-in plugin ownership from a personal namespace to `jwebot`. - Rename the SDK event field to the generic `mention_bot`. - Add a privacy-safe tracked-file/Git-object scanner that never prints matched values. - Add a six-stage new-host bootstrap, an eight-stage coordinated deployment progress display, runtime requirements, and zero-to-running documentation. - Add public repository, configuration, SDK, contribution, security, and licensing documentation. - Start the public history from a sanitized root after a verified private backup; pre-public operational history remains only in protected local archives. ## Pre-Public Milestones Earlier alpha work established: - adaptive OCR and XDamage capture; - guarded GUI send with visual confirmation; - durable ACK/final delivery ordering; - privacy-safe latency telemetry; - capability-limited SDK contracts; - signed extension artifacts and isolated Host execution; - reviewed command ownership and generated adapters; - coordinated production backup, health gates, and rollback. Private host, person, address, account, incident, and deployment details are intentionally omitted from the public changelog.