Skip to content

Port MajsoulMax MITM mod into Akagi-NG#66

Open
Capoouo wants to merge 2 commits intoXe-Persistent:masterfrom
Capoouo:NG-2
Open

Port MajsoulMax MITM mod into Akagi-NG#66
Capoouo wants to merge 2 commits intoXe-Persistent:masterfrom
Capoouo:NG-2

Conversation

@Capoouo
Copy link

@Capoouo Capoouo commented Mar 20, 2026

摘要

  • 將 MajsoulMax 的 Majsoul MITM mod 功能移植到 Akagi-NG
  • 保持既有 NG 架構,不改主流程,只接入必要的 MITM / bridge / settings / UI 能力
  • 將 mod proto 改為 descriptor-based loader,不再把 generated pb2 作為源码的一部分
  • 補充這次移植相關單元測試,提升主鏈 coverage

實作方式

這次變更是建立在 Akagi-NG 既有架構上做擴充,而不是重寫主架構。

1. Majsoul MITM 改包主鏈

  • akagi_ng/bridge/majsoul/bridge.py
  • akagi_ng/bridge/majsoul/liqi.py
  • akagi_ng/bridge/majsoul/modifier.py
  • akagi_ng/mitm_client/bridge_addon.py

在既有 bridge / mitm 流程中加入 Majsoul mod 的封包解析、改寫與回寫能力。

2. mod proto 改為動態 loader

  • akagi_ng/bridge/majsoul/mod_proto/loader.py
  • akagi_ng/bridge/majsoul/mod_proto/config.desc
  • akagi_ng/bridge/majsoul/mod_proto/sheets.desc

這次不再把 config_pb2.py / sheets_pb2.py 作為源码納入版本控制,而是改成 descriptor-based loader,方向上對齊 liqi.json 的處理思路。

3. 設定與前端

  • akagi_ng/dataserver/api.py
  • akagi_frontend/src/components/SettingsPanel.tsx
  • akagi_frontend/src/components/settings/MajsoulModSection.tsx
  • akagi_frontend/src/types.ts
  • assets/settings.schema.json
  • locale 文案檔

加入 Majsoul Mod 設定 API、前端設定區塊與多語系文案。

測試

已補充這次移植相關單元測試,覆蓋重點包含:

  • modifier 核心邏輯
  • MITM bridge addon
  • dataserver mod settings API
  • Majsoul bridge
  • liqi 協議解析
  • sync / reconnect 流程

本地驗證:

  • ruff check 通過
  • ruff format --check 通過
  • 關鍵測試 175 passed

這次移植主鏈 coverage:

  • bridge.py 86%
  • liqi.py 95%
  • modifier.py 92%
  • loader.py 100%
  • bridge_addon.py 98%
  • api.py 94%

總 coverage:

  • 92%

設計原則

  • 只保留 mod 移植必要內容
  • 保持 MITM-only 路線
  • 不引入與這次移植無關的主線改動
  • 以最新 upstream/master 為基底重新整理為單一 commit

@codecov
Copy link

codecov bot commented Mar 22, 2026

@Xe-Persistent Xe-Persistent self-requested a review March 22, 2026 18:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant