Skip to content

feat(config): add SKSE Menu Framework menu#47

Open
codepuncher wants to merge 13 commits into
mainfrom
feat/skse-menu-framework-v3-settings
Open

feat(config): add SKSE Menu Framework menu#47
codepuncher wants to merge 13 commits into
mainfrom
feat/skse-menu-framework-v3-settings

Conversation

@codepuncher
Copy link
Copy Markdown
Owner

Summary

  • add a HoldFast settings page to SKSE Menu Framework
  • let players change hold duration and Start/Back long-press actions in-game
  • keep settings persisted in HoldFast.ini

Copilot AI review requested due to automatic review settings June 7, 2026 19:07
Copy link
Copy Markdown

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

Adds optional integration with SKSE Menu Framework so players can edit HoldFast settings in-game while keeping persistence in HoldFast.ini. This fits into the plugin’s startup + input interception flow by centralizing INI parsing and adding a menu-driven settings surface.

Changes:

  • Refactors INI loading/parsing into a new HoldFast::Config module (load/save/apply/build buttons).
  • Adds HoldFastMenuUI integration (registers a Settings page; applies changes and persists to INI).
  • Updates input processing to avoid Start/Back interception while the Menu Framework UI is blocking input; updates build/docs to include the new dependency and instructions.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/Plugin.cpp Switches startup config loading to HoldFast::Config and registers the menu integration.
src/PCH.h Adds <filesystem> to PCH.
src/MenuUI.h Declares Menu Framework integration API.
src/MenuUI.cpp Implements Menu Framework registration, settings rendering, save/reload/reset, and “blocking input” detection.
src/InputHandler.cpp Skips interception while the Menu Framework UI is blocking input.
src/Config.h Declares settings model + config API (load/save/apply/parse/name).
src/Config.cpp Implements INI read/write, action parsing, and handler application logic.
README.md Documents optional in-game settings via SKSE Menu Framework.
docs/nexus-page.md Mirrors README documentation for Nexus.
CMakeLists.txt Adds new sources, include path for SKSE-MCP, and UNICODE defines.
.gitmodules Adds lib/skse-mcp submodule.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/InputHandler.cpp Outdated
Comment thread src/MenuUI.cpp Outdated
Comment thread src/Config.cpp Outdated
Comment thread src/MenuUI.cpp
Copy link
Copy Markdown

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

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

Comment thread test/PluginTests.cpp
Comment thread src/MenuUI.cpp
Comment thread src/Config.h
Fixes linker failure in PLUGIN_TESTS_ONLY build (r3369989644).

ParseAction and ActionName are moved from Config.cpp into a new
ConfigParsing.cpp that compiles without SKSE headers. The test target
gains ConfigParsing.cpp as a source and the PLUGIN_TESTS_ONLY compile
definition to guard out the logger call and PCH inclusion.
Copilot AI review requested due to automatic review settings June 7, 2026 20:32
Copy link
Copy Markdown

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

Copilot reviewed 15 out of 15 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (1)

CMakeLists.txt:28

  • The unit-test target now includes config parsing/tests that pull in Config.hInputHandler.h, but InputHandler.h depends on CommonLibSSE types (RE::...) and is not buildable in the current PLUGIN_TESTS_ONLY configuration (which only links Catch2 and doesn’t add CommonLibSSE include paths/targets). This will break cmake -DPLUGIN_TESTS_ONLY=ON builds.

Consider either (a) refactoring config parsing/types so they don’t depend on InputHandler/RE (e.g., a RE-free enum in HoldFast::Config plus mapping in the plugin), or (b) updating the tests CMake branch to add CommonLibSSE-NG (and any required compile defs/includes) so InputHandler.h can be compiled.

if(PLUGIN_TESTS_ONLY)

    find_package(Catch2 3 CONFIG REQUIRED)

    include(CTest)
    include(Catch)

    add_executable(${PROJECT_NAME}Tests test/PluginTests.cpp src/ConfigParsing.cpp)

    target_compile_definitions(${PROJECT_NAME}Tests PRIVATE PLUGIN_TESTS_ONLY)

    target_include_directories(${PROJECT_NAME}Tests PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src")

    target_link_libraries(${PROJECT_NAME}Tests PRIVATE Catch2::Catch2WithMain)

Comment thread src/MenuUI.cpp
Copilot AI review requested due to automatic review settings June 7, 2026 20:40
Copy link
Copy Markdown

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

Copilot reviewed 15 out of 15 changed files in this pull request and generated 5 comments.

Comment thread src/MenuUI.cpp
Comment thread src/Config.cpp
Comment thread src/Config.cpp
Comment thread test/PluginTests.cpp
Comment thread src/Config.h
Use SetSpaces(false) to match the existing no-space = style.
Use fmt::format with {:g} instead of SetDoubleValue to avoid the
%f six-decimal output (0.5 stays 0.5, not 0.500000).
… header

Fixes two review comments (r3370054355, r3370054365, r3370054338, r3370054350).

LongPressAction enum, ButtonConfig struct, and hold-duration constants
are moved to src/LongPressAction.h (stdlib-only, no RE:: dependency).
InputHandler.h includes it and adds using aliases so InputHandler::LongPressAction
and InputHandler::ButtonConfig remain valid throughout the plugin code.
Config.h replaces its InputHandler.h include with LongPressAction.h and
a forward declaration of InputHandler, making config parsing headers
RE-free — the PLUGIN_TESTS_ONLY build can now compile without CommonLibSSE.

Also fixes None/NONE/etc triggering a spurious invalid-action warning:
the guard now lowercases the raw value before comparing against 'none'.
Copilot AI review requested due to automatic review settings June 7, 2026 21:00
Copy link
Copy Markdown

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

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

Comment thread src/PCH.h Outdated
Comment thread src/Plugin.cpp Outdated
Comment thread src/MenuUI.cpp Outdated
Copy link
Copy Markdown

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

Copilot reviewed 15 out of 15 changed files in this pull request and generated 2 comments.

Comment thread src/MenuUI.cpp
Comment thread src/Config.cpp
Copy link
Copy Markdown

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

Copilot reviewed 15 out of 15 changed files in this pull request and generated 2 comments.

Comment thread src/MenuUI.cpp
Comment thread src/MenuUI.cpp Outdated
Copy link
Copy Markdown

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

Copilot reviewed 16 out of 16 changed files in this pull request and generated 1 comment.

Comment thread src/Config.cpp
Copy link
Copy Markdown

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

Copilot reviewed 16 out of 16 changed files in this pull request and generated 1 comment.

Comment thread src/InputHandler.cpp Outdated
Copy link
Copy Markdown

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

Copilot reviewed 16 out of 16 changed files in this pull request and generated no new comments.

@codepuncher codepuncher changed the title feat(menu): add SKSE Menu Framework menu feat(config): add SKSE Menu Framework menu Jun 7, 2026
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