Skip to content

feat(okww): migrate upstream parity into plugin adapter - #343

Open
1w1w11w1 wants to merge 3 commits into
AUTO-MAS-Project:dev-plugin-v2from
1w1w11w1:codex/okww-dev-v2-parity
Open

feat(okww): migrate upstream parity into plugin adapter#343
1w1w11w1 wants to merge 3 commits into
AUTO-MAS-Project:dev-plugin-v2from
1w1w11w1:codex/okww-dev-v2-parity

Conversation

@1w1w11w1

@1w1w11w1 1w1w11w1 commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Migrate upstream OK-WW launcher, client-path resolution, configuration ownership, and success-state behavior into the plugin adapter.
  • Keep AppConfig on the new ConfigEntry root for setting, queues, and tools; isolate scripts, plans, and emulators behind an explicit legacy bridge instead of inheriting the old GlobalConfig root.
  • Move legacy OK-WW records into plugin-owned storage while preserving simple-mode shared configuration copies and detailed per-user configuration.
  • Add focused runtime/schema/migration coverage and refresh uv.lock for the new configuration-base dependencies.

Verification

  • uv run --group plugins python -m unittest discover -s tests/plugins (28 passed)
  • uv run python -m app.config.tests.test_isolation (11/11 passed)
  • python -m compileall -q app plugins tests, uv lock --check, git diff --check
  • yarn format passed; yarn lint passed with 2 existing vue/no-v-html warnings

The full tests discovery still has 3 unrelated update-service failures already present on this branch.

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @1w1w11w1, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@sourcery-ai

sourcery-ai Bot commented Aug 8, 2026

Copy link
Copy Markdown

Reviewer's Guide

将 OK-WW 启动器/配置处理和游戏客户端解析迁移到插件适配器中,用基于模式的 ScriptConfig 会话替换定制的 JSON 配置编辑器,并通过新增测试收紧与用户配置存储、游戏进程管理以及成功检测相关的运行时行为。

OK-WW ScriptConfig 模式会话的时序图

sequenceDiagram
    actor User
    participant Frontend
    participant Backend
    participant OkwwAdapterHooks
    participant ScriptConfigTask
    participant ProcessManager
    participant OKWW

    User->>Frontend: Click Configure action
    Frontend->>Backend: POST /api/dispatch/start (mode ScriptConfig)
    Backend->>OkwwAdapterHooks: prepare(runtime)
    OkwwAdapterHooks->>OkwwAdapterHooks: check(runtime)
    OkwwAdapterHooks->>Backend: return "Pass"
    Backend->>OkwwAdapterHooks: run_script_config(runtime)
    OkwwAdapterHooks->>ScriptConfigTask: __init__(script_info, script_config, user_config)
    Backend->>ScriptConfigTask: main_task()
    ScriptConfigTask->>ScriptConfigTask: _kill_processes()
    ScriptConfigTask->>ScriptConfigTask: _configure_okww_launcher(root_path, resource)
    ScriptConfigTask->>ScriptConfigTask: copy mas_config_dir -> script_config_path
    ScriptConfigTask->>ProcessManager: open_process(exe_path)
    ProcessManager-->>OKWW: start ok-ww.exe
    ScriptConfigTask-->>ScriptConfigTask: wait_event.wait()

    User->>Frontend: Click stop in session overlay
    Frontend->>Backend: POST /api/dispatch/stop
    Backend->>ScriptConfigTask: final_task()
    ScriptConfigTask->>ScriptConfigTask: wait_event.set()
    ScriptConfigTask->>ScriptConfigTask: _kill_processes()
    ScriptConfigTask->>ScriptConfigTask: _configure_okww_launcher(root_path, resource)
    ScriptConfigTask->>ScriptConfigTask: _update_json(Basic Options.json)
    ScriptConfigTask->>ScriptConfigTask: copy script_config_path -> mas_config_dir
    ScriptConfigTask-->>Backend: user_item.status = "完成"
Loading

无主之海客户端解析与 MAS 游戏启动的时序图

sequenceDiagram
    participant AutoProxyTask
    participant resolve_wuthering_waves_process_path
    participant _decode_official_launcher_process_path
    participant _find_wegame_process_path_from_registry
    participant ProcessManager
    participant System

    AutoProxyTask->>AutoProxyTask: check()
    AutoProxyTask->>resolve_wuthering_waves_process_path: resolve_wuthering_waves_process_path(launcher_path)
    alt launcher_path.name == "wegame.exe"
        resolve_wuthering_waves_process_path->>_find_wegame_process_path_from_registry: _find_wegame_process_path_from_registry()
        _find_wegame_process_path_from_registry-->>resolve_wuthering_waves_process_path: game_process_path
    else launcher_path.name == "launcher.exe"
        resolve_wuthering_waves_process_path->>_decode_official_launcher_process_path: _decode_official_launcher_process_path(launcher_path)
        _decode_official_launcher_process_path-->>resolve_wuthering_waves_process_path: game_process_path
    end
    resolve_wuthering_waves_process_path-->>AutoProxyTask: game_process_path

    AutoProxyTask->>AutoProxyTask: _mas_launch_game_before_task()
    AutoProxyTask->>ProcessManager: open_process(game_process_path, Game.Arguments)
    AutoProxyTask->>AutoProxyTask: _game_process_info()
    AutoProxyTask->>ProcessManager: search_process(ProcessInfo, deadline)

    AutoProxyTask->>AutoProxyTask: _kill_game_process()
    AutoProxyTask->>ProcessManager: kill()
    AutoProxyTask->>System: kill_process(game_process_path)
Loading

文件级变更

Change Details Files
重构 AutoProxyTask 以管理 OK-WW 用户配置目录、启动器配置和游戏客户端解析,并更新成功/退出处理以及游戏进程生命周期。
  • 引入辅助函数,用于计算 MAS 侧配置目录,从 OK-WW/旧版位置克隆/初始化按用户区分的配置,并以原子方式更新 JSON 配置文件。
  • 配置 OK-WW 的 app.json 以支持自动启动和更新策略,根据用户资源选择配置文件并与可用配置文件进行校验。
  • 通过新的 resolve_wuthering_waves_process_path 从启动器 exe 解析无主之海客户端路径,保存解析出的客户端路径,并使用基于 ProcessManager 的启动/搜索/结束流程。
  • 在 check() 中要求存在 OK-WW 的 app.json,通过 _ensure_okww_user_config 初始化用户配置,并移除 manual_stop_requested 及相关的“手动停止即关闭”逻辑。
  • 更改成功检测逻辑为依赖特定的成功日志标记,并将非成功的提前退出视为异常;调整 _kill_game_process 以使用解析出的客户端路径并采用更健壮的搜索/结束行为。
  • 移除 update_config()/游戏配置概要日志,在设置 OK-WW 时将 MAS 覆盖应用到 DailyTask.json 和 Basic Options.json 中。
plugins/okww_adapter/src/okww_adapter/adapter/autoproxy.py
扩展插件运行时钩子以支持新的 ScriptConfig 模式,集中处理脚本配置的临时备份/恢复和锁定行为,并将 ScriptConfigTask 接入为单独的运行时入口点。
  • 允许 runtime.mode 为 AutoProxy 或 ScriptConfig,并在 ScriptConfig 模式下校验根路径、exe、app.json 以及目标用户是否存在。
  • 对 ScriptConfig(单一目标用户/Default)与 AutoProxy(仅启用的用户)使用不同方式构建 user_list。
  • 仅在 AutoProxy 模式下启用游戏管理(ProcessManager),并在复制原始配置前始终重新创建脚本配置临时目录。
  • 在 finalize/on_crash 中现在会恢复脚本配置,仅在 AutoProxy 模式下有条件地写回用户配置,并始终通过 _unlock_script_config 解锁存储脚本配置。
  • 新增 run_script_config 入口点,使用预先准备好的 MultipleConfig user_config 构造 ScriptConfigTask。
  • 优化脚本配置恢复逻辑,在 RootPath 下通过解析出的 _OKWW_REL_EXE 来结束 ok-ww.exe。
plugins/okww_adapter/src/okww_adapter/adapter/runtime.py
plugins/okww_adapter/src/okww_adapter/adapter/script_config.py
简化 Okww 插件描述符,使其依赖基于模式的配置和 ScriptConfig 会话,移除定制的 JSON 配置 HTTP 端点和客户端编辑器元数据。
  • 在 Plugin.on_start 中移除定制的 config_schema/ast_config 驱动的 JSON 编辑器管线以及所有 /okww/configs* HTTP 路由。
  • 更新 ScriptAdapterDefinition 元数据,移除 client.config_editor 合约,并声明同时支持 AutoProxy 和 ScriptConfig 两种模式。
  • 完全依赖 OkwwConfig/OkwwUserConfig 的 pydantic 模型以及 OkwwAdapterHooks/ScriptConfigTask 进行配置管理。
  • 更新 README,说明新的简洁/详细配置存储、ScriptConfig 会话、由 MAS 管理的每日任务字段,以及基于启动器的客户端解析。
  • 将 Okww 从 TYPE_KEY_EDITOR_SEGMENTS 中移除,使前端使用通用插件编辑器路由而非专门的 Okww 编辑器段。
plugins/okww_adapter/src/okww_adapter/plugin.py
plugins/okww_adapter/src/okww_adapter/config_schema.py
plugins/okww_adapter/src/okww_adapter/ast_config.py
plugins/okww_adapter/README.md
frontend/src/utils/scriptRegistry.ts
扩展 Okww 模式模型,以表达基于游戏启动器的配置、简洁/详细用户配置模式、结构化的每日任务选项,以及一个以动作驱动的 ScriptConfig 会话入口,并提供归一化辅助函数。
  • 将游戏 Path 字段更改为表示 launcher.exe/WeGame.exe 的选择,并带有合适的 UI 过滤器,同时从游戏配置中移除 CloseOnManualStop。
  • 允许 Resource 为 官服 或 国际服,并将 Mode 默认设为 简洁,提供解释性帮助文本,而不是只读的详细模式。
  • 将 TaskIndex 重新定义为受约束的字面量(1 或 7),并通过选项标签映射到 DailyTask/MultiAccountDailyTask,通过特定枚举和数值字段对每日任务选项进行建模,包括寂乐/伪声索引和材料选择。
  • 新增 AdditionalTasks,作为已知 OK-WW 任务的多选列表,并使用中文标签,同时接入 FarmNightmareNestForDailyEcho 作为布尔开关。
  • 引入 field_validator,将旧版 TaskIndex 值(例如 2 → 7)归一化为受支持的字面量。
  • 新增 OkwwUserActionConfig,其中包含一个 Configure 动作字段,用于通过 /api/dispatch/start 启动 ScriptConfig 会话,并向 UI 暴露停止/会话元数据;将其嵌入到 OkwwUserConfig.Action 下。
plugins/okww_adapter/src/okww_adapter/schema.py
引入无主之海启动器/客户端解析工具,以及一套覆盖插件描述符行为、运行时一致性、配置迁移和成功语义的综合测试套件。
  • 新增 wuthering_waves.py,包含辅助函数,用于解析官方启动器偏好数据(kr_game_temp.bin)以找到 installDirPath,并解析客户端 exe,同时在注册表中搜索 WeGame 安装位置。
  • 编写 OkwwPluginSchemaTest,以验证描述符中的 supported_modes/客户端元数据、模式默认值、TaskIndex 归一化,以及针对 Configure 的动作会话接线。
  • 编写 OkwwPluginRuntimeParityTest,以验证官方启动器解析、启动器配置更新时保持未托管字段不变、简洁模式 vs 详细模式下 MAS 配置目录路径、从 OK-WW 和旧版按用户复制初始化默认配置、在保持未托管 DailyTask 字段的同时应用 MAS 覆盖、基于日志的成功 vs 提前退出语义,以及通过解析出的客户端路径进行游戏跟踪。
  • 使用 Config、ProcessManager 的桩对象以及 is_process_running 的 mock,在不依赖宿主环境的情况下测试 AutoProxyTask 和辅助函数。
  • 通过注入 PLUGIN_SRC 路径,将测试接线到插件源码树中的 plugin/adapter 模块导入。
plugins/okww_adapter/src/okww_adapter/wuthering_waves.py
tests/plugins/test_okww_plugin_schema.py

Tips and commands

Interacting with Sourcery

  • 触发新评审: 在 Pull Request 中评论 @sourcery-ai review
  • 继续讨论: 直接回复 Sourcery 的评审评论。
  • 从评审评论生成 GitHub Issue: 在评审评论中回复请求 Sourcery 创建 issue。你也可以直接回复评审评论 @sourcery-ai issue 来从该评论创建一个 issue。
  • 生成 Pull Request 标题: 在 Pull Request 标题中任意位置写上 @sourcery-ai,即可随时生成标题。你也可以在 Pull Request 中评论 @sourcery-ai title 来随时(重新)生成标题。
  • 生成 Pull Request 摘要: 在 Pull Request 正文任意位置写上 @sourcery-ai summary,即可在该位置生成 PR 摘要。你也可以在 Pull Request 中评论 @sourcery-ai summary 来随时(重新)生成摘要。
  • 生成评审者指南: 在 Pull Request 中评论 @sourcery-ai guide,即可随时(重新)生成评审者指南。
  • 一次性解决所有 Sourcery 评论: 在 Pull Request 中评论 @sourcery-ai resolve,即可解决所有 Sourcery 评论。如果你已经处理完所有评论并且不想再看到它们,这会很有用。
  • 撤销所有 Sourcery 评审: 在 Pull Request 中评论 @sourcery-ai dismiss,即可撤销所有现有的 Sourcery 评审。特别适用于你想从头开始新的评审——别忘了再评论 @sourcery-ai review 来触发新评审!

Customizing Your Experience

打开你的 dashboard 来:

  • 启用或禁用评审功能,例如 Sourcery 生成的 Pull Request 摘要、评审者指南等。
  • 更改评审语言。
  • 添加、移除或编辑自定义评审指令。
  • 调整其他评审设置。

Getting Help

Original review guide in English

Reviewer's Guide

Migrates OK-WW launcher/config handling and game-client resolution into the plugin adapter, replaces the bespoke JSON-config editor with schema-driven ScriptConfig sessions, and tightens runtime behavior around user config storage, game process management, and success detection with new tests.

Sequence diagram for OK-WW ScriptConfig schema session

sequenceDiagram
    actor User
    participant Frontend
    participant Backend
    participant OkwwAdapterHooks
    participant ScriptConfigTask
    participant ProcessManager
    participant OKWW

    User->>Frontend: Click Configure action
    Frontend->>Backend: POST /api/dispatch/start (mode ScriptConfig)
    Backend->>OkwwAdapterHooks: prepare(runtime)
    OkwwAdapterHooks->>OkwwAdapterHooks: check(runtime)
    OkwwAdapterHooks->>Backend: return "Pass"
    Backend->>OkwwAdapterHooks: run_script_config(runtime)
    OkwwAdapterHooks->>ScriptConfigTask: __init__(script_info, script_config, user_config)
    Backend->>ScriptConfigTask: main_task()
    ScriptConfigTask->>ScriptConfigTask: _kill_processes()
    ScriptConfigTask->>ScriptConfigTask: _configure_okww_launcher(root_path, resource)
    ScriptConfigTask->>ScriptConfigTask: copy mas_config_dir -> script_config_path
    ScriptConfigTask->>ProcessManager: open_process(exe_path)
    ProcessManager-->>OKWW: start ok-ww.exe
    ScriptConfigTask-->>ScriptConfigTask: wait_event.wait()

    User->>Frontend: Click stop in session overlay
    Frontend->>Backend: POST /api/dispatch/stop
    Backend->>ScriptConfigTask: final_task()
    ScriptConfigTask->>ScriptConfigTask: wait_event.set()
    ScriptConfigTask->>ScriptConfigTask: _kill_processes()
    ScriptConfigTask->>ScriptConfigTask: _configure_okww_launcher(root_path, resource)
    ScriptConfigTask->>ScriptConfigTask: _update_json(Basic Options.json)
    ScriptConfigTask->>ScriptConfigTask: copy script_config_path -> mas_config_dir
    ScriptConfigTask-->>Backend: user_item.status = "完成"
Loading

Sequence diagram for Wuthering Waves client resolution and MAS game launch

sequenceDiagram
    participant AutoProxyTask
    participant resolve_wuthering_waves_process_path
    participant _decode_official_launcher_process_path
    participant _find_wegame_process_path_from_registry
    participant ProcessManager
    participant System

    AutoProxyTask->>AutoProxyTask: check()
    AutoProxyTask->>resolve_wuthering_waves_process_path: resolve_wuthering_waves_process_path(launcher_path)
    alt launcher_path.name == "wegame.exe"
        resolve_wuthering_waves_process_path->>_find_wegame_process_path_from_registry: _find_wegame_process_path_from_registry()
        _find_wegame_process_path_from_registry-->>resolve_wuthering_waves_process_path: game_process_path
    else launcher_path.name == "launcher.exe"
        resolve_wuthering_waves_process_path->>_decode_official_launcher_process_path: _decode_official_launcher_process_path(launcher_path)
        _decode_official_launcher_process_path-->>resolve_wuthering_waves_process_path: game_process_path
    end
    resolve_wuthering_waves_process_path-->>AutoProxyTask: game_process_path

    AutoProxyTask->>AutoProxyTask: _mas_launch_game_before_task()
    AutoProxyTask->>ProcessManager: open_process(game_process_path, Game.Arguments)
    AutoProxyTask->>AutoProxyTask: _game_process_info()
    AutoProxyTask->>ProcessManager: search_process(ProcessInfo, deadline)

    AutoProxyTask->>AutoProxyTask: _kill_game_process()
    AutoProxyTask->>ProcessManager: kill()
    AutoProxyTask->>System: kill_process(game_process_path)
Loading

File-Level Changes

Change Details Files
Refactored AutoProxyTask to manage OK-WW user config directories, launcher configuration, and game client resolution, and updated success/exit handling and game-process lifecycle.
  • Introduce helpers to compute MAS-side config directories, clone/initialize per-user configs from OK-WW/legacy locations, and atomically update JSON config files.
  • Configure OK-WW app.json for auto-start and update policy, with profile selection based on user resource and validation against available profiles.
  • Resolve Wuthering Waves client path from a launcher exe via new resolve_wuthering_waves_process_path, storing the resolved client path and using ProcessManager-based launch/search/kill flows.
  • Require presence of OK-WW app.json in check(), initialize user config via _ensure_okww_user_config, and remove manual_stop_requested and related close-on-manual-stop logic.
  • Change success detection to rely on a specific success log marker and treat non-success early exit as abnormal; adjust _kill_game_process to use resolved client path and robust search/kill behavior.
  • Remove update_config()/game-config summary logging, and apply MAS overrides into DailyTask.json and Basic Options.json when setting OK-WW.
plugins/okww_adapter/src/okww_adapter/adapter/autoproxy.py
Extended plugin runtime hooks to support a new ScriptConfig mode, centralized script-config temp backup/restore and locking behavior, and wired ScriptConfigTask as a separate runtime entrypoint.
  • Allow runtime.mode to be AutoProxy or ScriptConfig and validate root path, exe, app.json, and target user existence for ScriptConfig.
  • Build user_list differently for ScriptConfig (single target user/Default) vs AutoProxy (enabled users only).
  • Only enable game management (ProcessManager) for AutoProxy, and always recreate script-config temp directory before copying originals.
  • Finalize/on_crash now restore script config, conditionally write back user config only for AutoProxy, and always unlock storage script config via _unlock_script_config.
  • Add run_script_config entrypoint that constructs ScriptConfigTask using prepared MultipleConfig user_config.
  • Refine script-config restore to kill ok-ww.exe using resolved _OKWW_REL_EXE under RootPath.
plugins/okww_adapter/src/okww_adapter/adapter/runtime.py
plugins/okww_adapter/src/okww_adapter/adapter/script_config.py
Simplified the Okww plugin descriptor to rely on schema-driven configuration and ScriptConfig sessions, removing bespoke JSON-config HTTP endpoints and client editor metadata.
  • Drop custom config_schema/ast_config-based JSON editor plumbing and all /okww/configs* HTTP routes from Plugin.on_start.
  • Update ScriptAdapterDefinition metadata to remove client.config_editor contract and to advertise support for both AutoProxy and ScriptConfig modes.
  • Rely exclusively on OkwwConfig/OkwwUserConfig pydantic schemas and OkwwAdapterHooks/ScriptConfigTask for config management.
  • Update README to describe new simple/detailed config storage, ScriptConfig sessions, MAS-managed daily-task fields, and launcher-based client resolution.
  • Remove Okww from TYPE_KEY_EDITOR_SEGMENTS so frontend uses the generic plugin editor routing instead of a bespoke Okww editor segment.
plugins/okww_adapter/src/okww_adapter/plugin.py
plugins/okww_adapter/src/okww_adapter/config_schema.py
plugins/okww_adapter/src/okww_adapter/ast_config.py
plugins/okww_adapter/README.md
frontend/src/utils/scriptRegistry.ts
Extended Okww schema models to express game launcher-based configuration, simple/detailed user config modes, structured daily-task options, and an action-driven ScriptConfig session entry, plus normalization helpers.
  • Change game Path field to represent launcher.exe/WeGame.exe selection with appropriate UI filter, and remove CloseOnManualStop from game config.
  • Allow Resource to be 官服 or 国际服 and make Mode default to 简洁 with explanatory help instead of readonly detailed mode.
  • Redefine TaskIndex as a constrained literal (1 or 7) with option labels mapping to DailyTask/MultiAccountDailyTask, and model daily-task choices via specific enums and numeric fields for tacet/forgery indices and material selection.
  • Add AdditionalTasks as a multi-select list of known ok-ww tasks with Chinese labels, and wire FarmNightmareNestForDailyEcho as a boolean toggle.
  • Introduce field_validator to normalize legacy TaskIndex values (e.g., 2 → 7) into supported literals.
  • Add OkwwUserActionConfig with an Configure action field that starts a ScriptConfig session via /api/dispatch/start and exposes stop/session metadata for the UI, and embed it under OkwwUserConfig.Action.
plugins/okww_adapter/src/okww_adapter/schema.py
Introduced Wuthering Waves launcher/client resolution utilities and a comprehensive test suite covering plugin descriptor behavior, runtime parity, config migration, and success semantics.
  • Add wuthering_waves.py with helpers to decode official launcher preference data (kr_game_temp.bin) to find installDirPath and resolve the client exe, plus WeGame registry search for install location.
  • Write OkwwPluginSchemaTest to verify descriptor supported_modes/client metadata, schema defaults, TaskIndex normalization, and action session wiring for Configure.
  • Write OkwwPluginRuntimeParityTest to validate official launcher resolution, launcher config updates preserving unmanaged fields, MAS config dir paths for simple vs detailed modes, default config initialization from OK-WW and legacy per-user copies, MAS override behavior preserving unmanaged DailyTask fields, log-based success vs early-exit semantics, and game tracking via resolved client path.
  • Use stubs for Config, ProcessManager, and mocks for is_process_running to exercise AutoProxyTask and helper functions without host dependencies.
  • Wire tests to import plugin/adapter modules from the plugin src tree via PLUGIN_SRC path injection.
plugins/okww_adapter/src/okww_adapter/wuthering_waves.py
tests/plugins/test_okww_plugin_schema.py

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@1w1w11w1
1w1w11w1 force-pushed the codex/okww-dev-v2-parity branch from 2a86ddf to f4cfd74 Compare August 8, 2026 14:58
@1w1w11w1
1w1w11w1 changed the base branch from dev_v2 to dev-plugin-v2 August 8, 2026 14:58
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