12 KiB
12 KiB
Changelog
alpha 0.6.11.1015
- Add
/大富翁榜,/金币排行,/金币排行榜, and/richlistfor a group-scoped virtual coin leaderboard. Rankings are read-only, sorted by current coin balance, recover display names from configured aliases and observed profiles, and mark active loan principal when present. - Split leaderboard command ownership into a dedicated reviewed
coin-rankinglocal extension.
alpha 0.6.10.1015
- Add virtual coin loans with
/贷款 [金额]and/loan amount, plus repayments through/还款 [金额|全部]and/repay. Loans are stored in the same group-scoped virtual coin account, capped at 500 coins, limited to one active loan per account, and replay-safe through the existing ledger transaction path. - Split loan command ownership into a dedicated reviewed
coin-loanlocal extension so the single-player game plugin stays under the command-count validation limit.
alpha 0.6.9.1015
- Move CS Major autochess public game data out of
cs_autochess.pyand into package data files underjwebot_official_extensions/data/cs_autochess/. Player cards, coach cards, narrative fragments, shop/economy odds, draft pacing, synergy thresholds, match formats, MR15/overtime settings, and special event rewards are now data driven. - Add startup validation for the externalized data so missing fields, duplicate card IDs, invalid schema versions, or an undersized narrative library fail fast before the command engine runs.
- Add regression coverage that verifies the JSON files are packaged, readable, and consistent with the runtime card, coach, match-format, and narrative inventories.
- Add virtual coin transfers with
/转账 对方 金额and/transfer name amount. Transfers are single-transaction ledger updates, require the receiver to initialize/金币first, reject self-transfers, and replay safely by event ID.
alpha 0.6.8.1015
- Add an atomic compatibility path for old active CS autochess runs. When a
group still has a pre-schema-3 active tournament,
/自走棋开始now archives that old run as cancelled and opens a fresh schema-3 season in the same SQLite transaction. - Preserve old story and battle archive rows while ensuring the new season is the only active autochess run selected by future commands.
alpha 0.6.7.1015
- Expand CS Major autochess content to 100+ player cards and an 18-coach metadata pool while keeping the opening coach draft to 10 visible choices.
- Replace abstract training targets with real round-robin training rounds. Each round resolves participant-vs-participant or participant-vs-AI BO1 scrims, then opens an operation window for D rolling, locking, lineup swaps, tactics, and readiness.
- Replace fixed score bands with deterministic MR15 round simulation. Map scores now come from individual round outcomes, including 15-15 overtime, instead of direct mappings such as 16-6 or 16-9.
- Add a 120+ line local narrative library for openings, streaks, pauses, clutches, economy beats, closes, training hooks, and media/sponsor challenges so match reports vary across maps.
- Hide raw target/performance calculation text from training, match, and challenge reports while preserving structured battle facts in the archive.
- Start drafted players as two-star素材 and rebalance roster completion toward low/mid-cost cards, leaving upgrades and synergies to the shop loop.
alpha 0.6.6.1015
- Rebuild CS Major autochess around multi-message hosting: tournament welcomes, seed order, draft boards, status panels, training results, match reports, standings, brackets, and awards are emitted as separate bounded replies.
- Replace instant full rosters with three draft rounds: round one selects from a fixed 10-coach pool, rounds two and three draft players, then each team is completed to five starters, one coach, and three bench slots.
- Run the full event as training camp, BO3 single-round-robin group stage, one media/sponsor challenge after group round one or two, BO5 semifinals, BO5 final, and final awards.
- Let readiness advance phases automatically. Group matches wait for all real players, while knockout matches only wait for real players still in the current pairing, so eliminated players are not prompted to prepare.
- Add local multi-text reply support across the SDK, official extension adapter, Edge response contract, and recorder GUI sender while preserving single-message compatibility.
alpha 0.6.5.1015
- Extend the AI test path for CS Major autochess to support two-human games:
/自走棋加AI战队now adds AI 战队 A and AI 战队 B when exactly two real players have registered. - Keep the same command for two- and three-human test modes. The tournament engine selects 2 人+2 AI or 3 人+1 AI from the current registration count.
- Lock the roster after AI teams join, seed the four-team bracket as 1v4 and 2v3, and keep AI teams out of the human preparation order while preserving independent AI operations and story archives.
alpha 0.6.4.1015
- Add a reviewed 2-8 player CS Major autochess extension with a fixed five-player starting lineup, one always-active coach, an eight-slot bench, and a six-candidate shop that shows complete game data.
- Ship a fixed 60-player local pool with rifle, sniper, and in-game-leader roles; team and nation synergies; shared copy counts; and deterministic three-copy/two-star and nine-copy/three-star upgrades.
- Keep all five player slots occupied. Lineup changes are one-for-one swaps, starters cannot be sold directly, and coach upgrades only add a 2%-10% team bonus.
- Add player-selected firepower, stability, and clutch tactics. Resolve stability over firepower, firepower over clutch, clutch over stability, plus sniper/rifle/leader role counters before bounded +/-2% map variance.
- Generate the competition format once at tournament start: two players go directly to the final, three play a round robin for two final places, four use seeded 1v4 and 2v3 semifinals, and five to eight play a complete round robin for four semifinal places.
- Add an explicit three-human-plus-one-AI test mode. The host can add one deterministic local AI as seed four; it buys players, upgrades its coach, swaps its strongest lineup, and selects a counter tactic without an online model.
- Give Taffy a persistent host state machine: welcome and format briefing, rotating human preparation order, turn enforcement, explicit handoffs, round introductions, matchup calls, overtime narration, advancement, and championship presentation.
- Run group matches as BO3 and knockout matches as BO5. Simulate every map under MR15, including 15-15 overtime, 19-17/22-20 scores, and separately archived overtime stories.
- Persist run state, idempotent action responses, structured battles, and every generated story in serialized SQLite transactions. Invalid archives roll back the full action.
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
347and743represent 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点 开始 100as a 100-coin stake and accept OCR forms with missing whitespace, such as/21点开始100and/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
/steamdiscover 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
/debugremains 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.