Remaku

貢獻指南

設定開發環境並了解如何貢獻 Remaku。

Remaku 以 AGPL-3.0 授權開源,歡迎貢獻。

前置需求

  • Python 3.12
  • uv 套件管理工具
  • nodemon(選用,開發時熱重載)

專案結構

remaku/
  main.py                         # 進入點
  paths.py                        # 檔案路徑工具
  theme.py                        # 主題管理
  version.py                      # 版本資訊(從 pyproject.toml 讀取)
  controllers/
    home_controller.py            # 主編輯器控制器
    main_controller.py            # 應用層控制器
    macro_explorer_controller.py  # 巨集瀏覽器邏輯
    settings_controller.py        # 設定頁面控制器
  core/
    capture.py                    # 畫面擷取(BetterCam / DXGI)
    dialogs.py                    # 原生對話框輔助工具
    display.py                    # 顯示器與螢幕資訊工具
    event_bus.py                  # 全域事件系統
    i18n.py                       # 多國語言
    keymap.py                     # 虛擬鍵碼對應
    keys.py                       # 鍵盤輸入模擬(pydirectinput)
    vision.py                     # OpenCV 模板匹配
    window.py                     # Windows 視窗管理
  models/
    config_model.py               # 設定資料模型
    macro_model.py                # 巨集資料模型
    pack_model.py                 # 巨集包目錄模型
    step_dict.py                  # 步驟序列化/反序列化
    step_node.py                  # 步驟樹節點模型
    step_tree.py                  # 步驟樹管理器
  resources/
    icon.py                       # SVG 圖示引擎(Lucide)
    resources.qrc                 # Qt 資源檔
    icons/                        # SVG 圖示檔案
    images/                       # 圖片資源
    locales/                      # Qt 翻譯檔(.ts / .qm)
  services/
    clipboard_service.py          # 剪貼簿操作
    engine.py                     # JSON 巨集解析與執行
    hotkey_service.py             # 全域熱鍵註冊
    macro_import_service.py       # 巨集匯入/匯出(ZIP)
    macro_recorder.py             # 鍵盤與滑鼠錄製
    macro_runner.py               # 巨集執行器
    migration.py                  # 舊版資料遷移
    pack_service.py               # 巨集包目錄管理
    template_service.py           # 模板檔案管理
    updater.py                    # 自動更新
  views/
    home_view.py                  # 主編輯器檢視
    main_window.py                # 主應用程式視窗
    macro_explorer_view.py         # 巨集瀏覽器 介面
    region_selector.py            # 螢幕區域選取
    settings_view.py              # 設定頁面介面
    components/                   # 可重複使用的 UI 元件

快速開始

make setup        # 建立虛擬環境並安裝依賴
make dev          # 熱重載執行(需要 nodemon)

執行 make 可查看所有可用目標。

開發指令

指令說明
make setup建立虛擬環境並安裝依賴
make sync同步依賴
make dev熱重載執行
make test執行測試(含覆蓋率報表)
make lint執行 ruff 程式碼檢查
make format執行 ruff 格式化
make format-check檢查格式但不變更
make typecheck執行 pyright 型別檢查
make check-all執行 lint、格式檢查、型別檢查與測試
make translate更新並編譯翻譯檔案
make build建置安裝程式
make clean清除所有建置產物與快取

程式碼風格

  • 請勿在函式或變數名稱前加上 _ 前綴。
  • 在區塊語句(ifforwhile)前後加入空行,elif/else 前不加。

多國語言

使用者可見的字串請用 self.tr()QCoreApplication.translate() 包裝。執行 make translate 更新並編譯 .ts / .qm 檔案。

測試

執行所有測試:

make test

執行單一測試檔:

uv run pytest tests/path/to/test_file.py

提交前檢查

送出 Pull Request 前,請執行 make check-all 確保全部通過。

本頁目錄