Release beta 2.0.5.1023
check / local-gate (push) Failing after 1m9s

This commit is contained in:
JWeBot Contributors
2026-10-23 17:19:23 +08:00
parent 6375ab5c79
commit 0ffd0b2a16
18 changed files with 52 additions and 29 deletions
+6
View File
@@ -1,5 +1,11 @@
# Changelog # Changelog
## beta 2.0.5.1023 - 2026-10-23 17:16:12
- 21 点胜率显示修复完成:`/摩拉` 里的 21 点战绩现在会和 `/21点 胜率` 使用同一套统计口径。
- 修复 `/摩拉` 误读旧版通用胜负字段的问题,避免旧抽奖等历史数据污染 21 点胜率展示。
- 超时认输、主动认输、单人结算和多人牌桌仍统一写入 `blackjack_stats`,本次只调整展示读取来源。
## beta 2.0.4.1023 - 2026-10-23 16:56:33 ## beta 2.0.4.1023 - 2026-10-23 16:56:33
- 许愿池和 21 点小版本更新完成:`/抽奖` 已并入许愿池,21 点新增群内胜率统计并调整下注上限。 - 许愿池和 21 点小版本更新完成:`/抽奖` 已并入许愿池,21 点新增群内胜率统计并调整下注上限。
+3 -3
View File
@@ -8,7 +8,7 @@ JWeBot 是运行于 Linux 的单群微信自动回复系统。它通过本地 OC
观察选定的微信窗口,将消息写入持久化 Edge 账本,调用经过审核的命令插件, 观察选定的微信窗口,将消息写入持久化 Edge 账本,调用经过审核的命令插件,
并通过带视觉确认的 GUI 发送链路回复。 并通过带视觉确认的 GUI 发送链路回复。
当前版本:`beta 2.0.4.1023`,更新时间:2026-10-23 16:56:33。 当前版本:`beta 2.0.5.1023`,更新时间:2026-10-23 17:16:12。
1.0 Beta 收口了当前稳定功能:本地命令插件、人物与上下文索引、 1.0 Beta 收口了当前稳定功能:本地命令插件、人物与上下文索引、
Steam 状态与时长查询、虚拟摩拉游戏、多人彩票、21 点、CS Major Steam 状态与时长查询、虚拟摩拉游戏、多人彩票、21 点、CS Major
@@ -272,10 +272,10 @@ visually confirmed GUI bridge.
Current version: Current version:
```text ```text
beta 2.0.4.1023 beta 2.0.5.1023
``` ```
Updated: 2026-10-23 16:56:33. Updated: 2026-10-23 17:16:12.
The 1.0 Beta baseline consolidates the stable local command set, person and The 1.0 Beta baseline consolidates the stable local command set, person and
context indexes, Steam presence/playtime queries, virtual coin games, context indexes, Steam presence/playtime queries, virtual coin games,
+1 -1
View File
@@ -1 +1 @@
beta 2.0.4.1023 beta 2.0.5.1023
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "jwebot-config" name = "jwebot-config"
version = "2.0.4b1+1023" version = "2.0.5b1+1023"
description = "Profile-based configuration compiler for JWeBot" description = "Profile-based configuration compiler for JWeBot"
requires-python = ">=3.9" requires-python = ">=3.9"
dependencies = [ dependencies = [
@@ -36,4 +36,4 @@ __all__ = [
"write_default_profile", "write_default_profile",
] ]
__version__ = "2.0.4b1+1023" __version__ = "2.0.5b1+1023"
@@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "jwebot-extension-host" name = "jwebot-extension-host"
version = "2.0.4b1+1023" version = "2.0.5b1+1023"
description = "Single-release, single-invocation process host for JWeBot extensions" description = "Single-release, single-invocation process host for JWeBot extensions"
requires-python = ">=3.9" requires-python = ">=3.9"
dependencies = [ dependencies = [
"jwebot-sdk==2.0.4b1+1023", "jwebot-sdk==2.0.5b1+1023",
"jwebot-kernel==2.0.4b1+1023", "jwebot-kernel==2.0.5b1+1023",
] ]
[project.scripts] [project.scripts]
@@ -16,4 +16,4 @@ __all__ = [
"process_request", "process_request",
] ]
__version__ = "2.0.4b1+1023" __version__ = "2.0.5b1+1023"
+4 -4
View File
@@ -4,13 +4,13 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "jwebot-kernel" name = "jwebot-kernel"
version = "2.0.4b1+1023" version = "2.0.5b1+1023"
description = "Stable routing and extension authority for JWeBot" description = "Stable routing and extension authority for JWeBot"
requires-python = ">=3.9" requires-python = ">=3.9"
dependencies = [ dependencies = [
"jwebot-config==2.0.4b1+1023", "jwebot-config==2.0.5b1+1023",
"jwebot-sdk==2.0.4b1+1023", "jwebot-sdk==2.0.5b1+1023",
"jwebot-official-extensions==2.0.4b1+1023", "jwebot-official-extensions==2.0.5b1+1023",
"tomli>=2; python_version < '3.11'", "tomli>=2; python_version < '3.11'",
] ]
@@ -107,4 +107,4 @@ __all__ = [
"verify_installed_release_signature", "verify_installed_release_signature",
] ]
__version__ = "2.0.4b1+1023" __version__ = "2.0.5b1+1023"
@@ -4,11 +4,11 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "jwebot-official-extensions" name = "jwebot-official-extensions"
version = "2.0.4b1+1023" version = "2.0.5b1+1023"
description = "Reviewed local command adapters and broker implementation for JWeBot" description = "Reviewed local command adapters and broker implementation for JWeBot"
requires-python = ">=3.9" requires-python = ">=3.9"
dependencies = [ dependencies = [
"jwebot-sdk==2.0.4b1+1023", "jwebot-sdk==2.0.5b1+1023",
] ]
[tool.setuptools.packages.find] [tool.setuptools.packages.find]
@@ -90,4 +90,4 @@ __all__ = [
"render_feature_list", "render_feature_list",
] ]
__version__ = "2.0.4b1+1023" __version__ = "2.0.5b1+1023"
@@ -816,8 +816,12 @@ class PlayerGames:
state = "进行中" if account.get("game") else "无进行中的牌局" state = "进行中" if account.get("game") else "无进行中的牌局"
loan = account.get("loan") loan = account.get("loan")
loan_text = f"未还贷款 {loan['principal']};" if loan else "无贷款;" loan_text = f"未还贷款 {loan['principal']};" if loan else "无贷款;"
total = account["wins"] + account["losses"] + account["ties"] blackjack_stats = account["blackjack_stats"]
win_rate = (account["wins"] / total * 100) if total else 0.0 total = int(blackjack_stats["hands"])
wins = int(blackjack_stats["wins"])
losses = int(blackjack_stats["losses"])
ties = int(blackjack_stats["ties"])
win_rate = (wins / total * 100) if total else 0.0
lines = [ lines = [
( (
f"{player_label}:{expired}当前摩拉 {account['balance']};" f"{player_label}:{expired}当前摩拉 {account['balance']};"
@@ -826,8 +830,8 @@ class PlayerGames:
f"{loan_text}" f"{loan_text}"
), ),
( (
f"21点 {state};已结算胜 {account['wins']} / " f"21点 {state};已结算胜 {wins} / "
f"负 {account['losses']} / 平 {account['ties']}," f"负 {losses} / 平 {ties},"
f"胜率 {win_rate:.2f}%。" f"胜率 {win_rate:.2f}%。"
), ),
"最近10次账户变动:", "最近10次账户变动:",
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "jwebot-sdk" name = "jwebot-sdk"
version = "2.0.4b1+1023" version = "2.0.5b1+1023"
description = "Typed, capability-limited extension API for JWeBot plugins" description = "Typed, capability-limited extension API for JWeBot plugins"
requires-python = ">=3.9" requires-python = ">=3.9"
dependencies = [] dependencies = []
@@ -40,4 +40,4 @@ __all__ = [
"SingleGroupContext", "SingleGroupContext",
] ]
__version__ = "2.0.4b1+1023" __version__ = "2.0.5b1+1023"
+1 -1
View File
@@ -1,5 +1,5 @@
[tool.jwebot] [tool.jwebot]
release = "beta 2.0.4.1023" release = "beta 2.0.5.1023"
production_deployments_enabled_by_default = false production_deployments_enabled_by_default = false
[tool.jwebot.workspace] [tool.jwebot.workspace]
+3 -3
View File
@@ -1291,9 +1291,9 @@ class LedgerAndApplicationTests(unittest.TestCase):
self.assertEqual(version["route"], "local") self.assertEqual(version["route"], "local")
self.assertIn("JWeBot 版本", version["text"]) self.assertIn("JWeBot 版本", version["text"])
self.assertIn("kernel", version["text"]) self.assertIn("kernel", version["text"])
self.assertIn("最新版本:beta 2.0.4.1023", version["text"]) self.assertIn("最新版本:beta 2.0.5.1023", version["text"])
self.assertIn("更新时间:2026-10-23 16:56:33", version["text"]) self.assertIn("更新时间:2026-10-23 17:16:12", version["text"])
self.assertIn("更新摘要:许愿池和 21 点小版本更新完成", version["text"]) self.assertIn("更新摘要:21 点胜率显示修复完成", version["text"])
self.assertEqual(debug["route"], "local") self.assertEqual(debug["route"], "local")
self.assertIn("调试埋点", debug["text"]) self.assertIn("调试埋点", debug["text"])
self.assertEqual(balance["route"], "local") self.assertEqual(balance["route"], "local")
+13
View File
@@ -193,6 +193,19 @@ class Release063GameTests(unittest.TestCase):
"alice:胜 0 / 负 0 / 平 1,胜率 0.00%;净赚净亏 0 摩拉", "alice:胜 0 / 负 0 / 平 1,胜率 0.00%;净赚净亏 0 摩拉",
rates, rates,
) )
account = self.state()
account["wins"] = 12
account["losses"] = 15
account["ties"] = 3
self.engine.ledger._save_player_account(
"group-a",
person_key,
account,
MODULE.utc_now(),
)
wallet = self.command("/摩拉")
self.assertIn("21点 无进行中的牌局;已结算胜 0 / 负 0 / 平 1", wallet)
self.assertNotIn("已结算胜 12 / 负 15 / 平 3", wallet)
self.assertIn("1~2000", self.command("/21点开始2001")) self.assertIn("1~2000", self.command("/21点开始2001"))
def test_multiplayer_blackjack_table_guides_turns_and_settles(self): def test_multiplayer_blackjack_table_guides_turns_and_settles(self):
+1 -1
View File
@@ -20,7 +20,7 @@ SPEC.loader.exec_module(MODULE)
class ReleaseUpdateTests(unittest.TestCase): class ReleaseUpdateTests(unittest.TestCase):
release = "beta 2.0.4.1023" release = "beta 2.0.5.1023"
major_release = "beta 2.0.0.1021" major_release = "beta 2.0.0.1021"
def setUp(self): def setUp(self):