Skip to content

Move interfaces from Thunder/plugins to Thunder/interfaces#2102

Open
nxtum wants to merge 10 commits intordkcentral:masterfrom
nxtum:interfaces_directory
Open

Move interfaces from Thunder/plugins to Thunder/interfaces#2102
nxtum wants to merge 10 commits intordkcentral:masterfrom
nxtum:interfaces_directory

Conversation

@nxtum
Copy link
Copy Markdown
Contributor

@nxtum nxtum commented Apr 27, 2026

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR restructures Thunder’s public COM/PluginHost interface headers and generated JSON artifacts by moving them out of Source/plugins/ into a new Source/interfaces/ library, and updates build files to consume the new layout across CMake and Visual Studio projects.

Changes:

  • Introduces a new Source/interfaces/ component (headers + build targets) and wires it into the top-level build.
  • Updates Source/plugins/ and Source/Thunder/ to include interfaces from interfaces/... and consume JSON headers from interfaces/json/....
  • Adjusts Visual Studio solution/projects and CMake targets to link against the new interfaces library.

Reviewed changes

Copilot reviewed 33 out of 41 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
Source/CMakeLists.txt Adds INTERFACES option and builds Source/interfaces when enabled.
Source/interfaces/CMakeLists.txt New Interfaces + ProxyStubs CMake targets; sets up stub/json generation and installs headers/json artifacts.
Source/interfaces/definitions.h New definitions header for generated JSON enum sources (interfaces scope).
Source/interfaces/IDispatcher.h New/relocated dispatcher interface header.
Source/interfaces/IController.h Updates @insert paths to refer to interfaces/* headers.
Source/interfaces/IPlugin.h New/relocated plugin interface header.
Source/interfaces/IShell.h New/relocated shell interface header.
Source/interfaces/ISubSystem.h New/relocated subsystem interface header.
Source/interfaces/IStateControl.h New/relocated state control interface header.
Source/interfaces/IStateController.h New/relocated state controller interface header.
Source/interfaces/IVirtualInput.h New/relocated virtual input IPC types header.
Source/interfaces/interfaces.h New umbrella header for including interfaces from the new component.
Source/interfaces/interfaces.vcxproj New Visual Studio project for building interfaces and generating JSON code.
Source/interfaces/interfaces.vcxproj.filters Filters for the new interfaces VS project.
Source/interfaces/Module.cpp New interfaces module registration TU.
Source/interfaces/Module.h New module header for Interfaces component (exports, includes).
Source/interfaces/proxystubs.vcxproj Updates ProxyStub generation to include moved interfaces + new export macro.
Source/interfaces/proxystubs.vcxproj.filters Adds generated stub source entry for StateController.
Source/plugins/CMakeLists.txt Removes local interface/json generation; links Interfaces and pulls JSON enum sources from interfaces build output.
Source/plugins/Configuration.h Switches interface includes to interfaces/*.
Source/plugins/definitions.h Keeps generated-file include glue; now relies on interfaces include paths being available.
Source/plugins/JSONRPC.h Switches interface includes to interfaces/*.
Source/plugins/Metadata.cpp Switches interface includes to interfaces/*.
Source/plugins/Metadata.h Switches controller + JSON headers to interfaces/* and interfaces/json/*.
Source/plugins/Module.cpp Switches controller include to interfaces/IController.h.
Source/plugins/plugins.h Removes direct inclusion of moved interfaces from the umbrella header (now included indirectly via other headers).
Source/plugins/plugins.vcxproj Removes interface/json generation inputs; adds include path + link dependency on interfaces.lib.
Source/plugins/plugins.vcxproj.filters Removes interface/generated entries from the Plugins filters (moved to Interfaces project).
Source/plugins/Service.h Switches interface includes to interfaces/*.
Source/plugins/Shell.cpp Switches shell include to interfaces/IShell.h.
Source/plugins/StateControl.cpp Switches state control include to interfaces/IStateControl.h.
Source/plugins/StateControl.h Switches state control include to interfaces/IStateControl.h.
Source/plugins/SubSystem.cpp Switches subsystem include to interfaces/ISubSystem.h.
Source/plugins/SubSystem.h Switches subsystem include to interfaces/ISubSystem.h.
Source/plugins/Types.h Switches plugin/shell includes to interfaces/*.
Source/plugins/VirtualInput.h Switches virtual input include to interfaces/IVirtualInput.h.
Source/Thunder/bridge.vcxproj Adds interfaces include directory + links interfaces.lib.
Source/Thunder/CMakeLists.txt Switches include dir to use interfaces/json generated headers.
Source/Thunder/Controller.cpp Switches JSON include to <interfaces/json/json_IController.h>.
Source/Thunder/Controller.h Switches JSON include to <interfaces/json/json_IController.h>.
Source/Thunder.sln Adds new interfaces project; updates project dependencies/paths for proxystubs.
Comments suppressed due to low confidence (2)

Source/interfaces/proxystubs.vcxproj:158

  • The stub generator include paths are inconsistent across configurations: Release|x64 adds -I "$(FrameworkPath)" but this Debug|Win32 command does not. If $(FrameworkPath) is required to resolve includes for the moved interfaces, the other configurations will fail to generate stubs. Make the include path consistent across all configurations (or remove it everywhere if it’s not needed).
    Source/CMakeLists.txt:36
  • PLUGINS now depends on the new Interfaces library, but the top-level options still allow INTERFACES=OFF while PLUGINS=ON. That configuration will break configuration/build; consider forcing INTERFACES ON when PLUGINS is enabled or adding a clear fatal error when PLUGINS is ON but INTERFACES is OFF.
        "Include the interfaces library." ON)
option(PROCESS
        "Include the COM hosting process executable." ON)
option(PLUGINS
        "Include plugins library." ON)

Comment thread Source/interfaces/CMakeLists.txt
Comment thread Source/plugins/CMakeLists.txt Outdated
Comment thread Source/interfaces/CMakeLists.txt
Copilot AI review requested due to automatic review settings April 27, 2026 08:54
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

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.

2 participants