231 lines
12 KiB
Markdown
231 lines
12 KiB
Markdown
# Changelog
|
||
|
||
## alpha 0.6.11.1015
|
||
|
||
- Add `/大富翁榜`, `/金币排行`, `/金币排行榜`, and `/richlist` for 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-ranking` local 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-loan` local
|
||
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.py` and into
|
||
package data files under `jwebot_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 `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.
|