From 3badc62e9bff97b7c75afecbb10d8dbf1f35987c Mon Sep 17 00:00:00 2001 From: jw098 Date: Sun, 9 Aug 2026 11:04:31 -0700 Subject: [PATCH 1/6] add intermediate dev mode --- .../CommonFramework/GlobalSettingsPanel.cpp | 19 ++++++++++++++----- .../CommonFramework/GlobalSettingsPanel.h | 1 + .../Source/CommonFramework/StaticGlobals.cpp | 2 +- .../Source/CommonFramework/StaticGlobals.h | 1 + 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp b/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp index fce0aa595f..5b8609ac40 100644 --- a/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp +++ b/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp @@ -35,9 +35,9 @@ #include "Controllers/ControllerSettings.h" #include "GlobalSettingsPanel.h" -// #include -// using std::cout; -// using std::endl; +#include +using std::cout; +using std::endl; namespace PokemonAutomation{ @@ -197,9 +197,15 @@ GlobalSettings::GlobalSettings() // IS_BETA_VERSION ) , ERROR_REPORTS(CONSTRUCT_TOKEN) + , DEVELOPER_MODE_CHECKBOX( + "Enable Developer mode:
Enable features for testing/development." + "
Restart application to take full effect after changing this.", + LockMode::UNLOCK_WHILE_RUNNING, + false + ) , DEVELOPER_TOKEN( true, - "Developer Token:
Restart application to take full effect after changing this.", + "Developer Token for Internal Dev mode:
Restart application to take full effect after changing this.", LockMode::LOCK_WHILE_RUNNING, "", "" ) @@ -261,6 +267,7 @@ GlobalSettings::GlobalSettings() PA_ADD_OPTION(ERROR_REPORTS); #endif + PA_ADD_OPTION(DEVELOPER_MODE_CHECKBOX); PA_ADD_OPTION(DEVELOPER_TOKEN); USE_GPU_FOR_ML_INFERENCE0.set_visibility(ConfigOptionState::HIDDEN); @@ -281,9 +288,11 @@ void GlobalSettings::load_json(const JsonValue& json){ } STATIC_GLOBALS.load_json(json); - const bool developer_mode = STATIC_GLOBALS.DEVELOPER_MODE; BatchOption::load_json(json); + STATIC_GLOBALS.DEVELOPER_MODE = DEVELOPER_MODE_CHECKBOX.current_value(); + const bool developer_mode = STATIC_GLOBALS.DEVELOPER_MODE; + ConfigOptionState devmode_visibility = developer_mode ? ConfigOptionState::ENABLED : ConfigOptionState::HIDDEN; diff --git a/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.h b/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.h index 7dc22b17aa..cb5e4667aa 100644 --- a/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.h +++ b/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.h @@ -118,6 +118,7 @@ class GlobalSettings : public BatchOption, private ConfigOption::Listener, priva Pimpl ERROR_REPORTS; + BooleanCheckBoxOption DEVELOPER_MODE_CHECKBOX; StringOption DEVELOPER_TOKEN; // The mode that does not run Qt GUI, but instead runs some tests for diff --git a/SerialPrograms/Source/CommonFramework/StaticGlobals.cpp b/SerialPrograms/Source/CommonFramework/StaticGlobals.cpp index aaa8e65223..5bdfbea0bc 100644 --- a/SerialPrograms/Source/CommonFramework/StaticGlobals.cpp +++ b/SerialPrograms/Source/CommonFramework/StaticGlobals.cpp @@ -47,7 +47,7 @@ void StaticGlobals::load_json(const JsonValue& json){ hash.push(dev_token->c_str(), dev_token->size()); hash.finish(); hash.get_hash_hex(); - DEVELOPER_MODE = TOKENS.find(hash.get_hash_hex()) != TOKENS.end(); + INTERNAL_DEVELOPER_MODE = TOKENS.find(hash.get_hash_hex()) != TOKENS.end(); } const JsonObject* debug_obj = obj->get_object("DEBUG"); diff --git a/SerialPrograms/Source/CommonFramework/StaticGlobals.h b/SerialPrograms/Source/CommonFramework/StaticGlobals.h index 61a0e6f863..9682176bad 100644 --- a/SerialPrograms/Source/CommonFramework/StaticGlobals.h +++ b/SerialPrograms/Source/CommonFramework/StaticGlobals.h @@ -27,6 +27,7 @@ class StaticGlobals{ public: bool NAUGHTY_MODE = false; bool DEVELOPER_MODE = false; + bool INTERNAL_DEVELOPER_MODE = false; // Debug color stats like those in: From b2366b8db3143d2d7334f1cf49f09fcbb9d393f6 Mon Sep 17 00:00:00 2001 From: jw098 Date: Sun, 9 Aug 2026 11:05:33 -0700 Subject: [PATCH 2/6] remove logging --- .../Source/CommonFramework/GlobalSettingsPanel.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp b/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp index 5b8609ac40..952d0e92e5 100644 --- a/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp +++ b/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp @@ -35,9 +35,9 @@ #include "Controllers/ControllerSettings.h" #include "GlobalSettingsPanel.h" -#include -using std::cout; -using std::endl; +// #include +// using std::cout; +// using std::endl; namespace PokemonAutomation{ From b5cee835d1bc58975627c6705f9395283b0ca81e Mon Sep 17 00:00:00 2001 From: jw098 Date: Sun, 9 Aug 2026 11:11:40 -0700 Subject: [PATCH 3/6] Move internal tools under INTERNAL_DEVELOPER_MODE --- .../Source/NintendoSwitch/NintendoSwitch_Panels.cpp | 4 +++- SerialPrograms/Source/PokemonSV/PokemonSV_Panels.cpp | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/SerialPrograms/Source/NintendoSwitch/NintendoSwitch_Panels.cpp b/SerialPrograms/Source/NintendoSwitch/NintendoSwitch_Panels.cpp index 4fd719f779..cfe63a61c5 100644 --- a/SerialPrograms/Source/NintendoSwitch/NintendoSwitch_Panels.cpp +++ b/SerialPrograms/Source/NintendoSwitch/NintendoSwitch_Panels.cpp @@ -88,7 +88,9 @@ std::vector PanelListFactory::make_panels() const{ ret.emplace_back(make_single_switch_program()); ret.emplace_back(make_computer_program()); #ifdef PA_OFFICIAL - add_panels(ret); + if (STATIC_GLOBALS.INTERNAL_DEVELOPER_MODE){ + add_panels(ret); + } #endif } diff --git a/SerialPrograms/Source/PokemonSV/PokemonSV_Panels.cpp b/SerialPrograms/Source/PokemonSV/PokemonSV_Panels.cpp index 49c0332535..a0832257cc 100644 --- a/SerialPrograms/Source/PokemonSV/PokemonSV_Panels.cpp +++ b/SerialPrograms/Source/PokemonSV/PokemonSV_Panels.cpp @@ -171,7 +171,7 @@ std::vector PanelListFactory::make_panels() const{ } #ifdef PA_OFFICIAL - if (STATIC_GLOBALS.DEVELOPER_MODE){ + if (STATIC_GLOBALS.INTERNAL_DEVELOPER_MODE){ ret.emplace_back("---- Research ----"); add_panels(ret); } From 00298c0bf95d2f0022d34f0aa7597d38be852b79 Mon Sep 17 00:00:00 2001 From: jw098 Date: Sun, 9 Aug 2026 12:57:16 -0700 Subject: [PATCH 4/6] split dev tokens. remove checkbox. --- .../CommonFramework/GlobalSettingsPanel.cpp | 15 +++++---- .../CommonFramework/GlobalSettingsPanel.h | 2 +- .../Source/CommonFramework/StaticGlobals.cpp | 31 ++++++++++++++++++- 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp b/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp index 952d0e92e5..d8d4a72ba0 100644 --- a/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp +++ b/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp @@ -197,13 +197,13 @@ GlobalSettings::GlobalSettings() // IS_BETA_VERSION ) , ERROR_REPORTS(CONSTRUCT_TOKEN) - , DEVELOPER_MODE_CHECKBOX( - "Enable Developer mode:
Enable features for testing/development." - "
Restart application to take full effect after changing this.", - LockMode::UNLOCK_WHILE_RUNNING, - false - ) , DEVELOPER_TOKEN( + true, + "Developer Token for Regular Dev mode:
Restart application to take full effect after changing this.", + LockMode::LOCK_WHILE_RUNNING, + "", "" + ) + , INTERNAL_DEVELOPER_TOKEN( true, "Developer Token for Internal Dev mode:
Restart application to take full effect after changing this.", LockMode::LOCK_WHILE_RUNNING, @@ -267,8 +267,8 @@ GlobalSettings::GlobalSettings() PA_ADD_OPTION(ERROR_REPORTS); #endif - PA_ADD_OPTION(DEVELOPER_MODE_CHECKBOX); PA_ADD_OPTION(DEVELOPER_TOKEN); + PA_ADD_OPTION(INTERNAL_DEVELOPER_TOKEN); USE_GPU_FOR_ML_INFERENCE0.set_visibility(ConfigOptionState::HIDDEN); RESOURCE_DOWNLOAD_TABLE.set_visibility(ConfigOptionState::HIDDEN); @@ -290,7 +290,6 @@ void GlobalSettings::load_json(const JsonValue& json){ STATIC_GLOBALS.load_json(json); BatchOption::load_json(json); - STATIC_GLOBALS.DEVELOPER_MODE = DEVELOPER_MODE_CHECKBOX.current_value(); const bool developer_mode = STATIC_GLOBALS.DEVELOPER_MODE; ConfigOptionState devmode_visibility = developer_mode diff --git a/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.h b/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.h index cb5e4667aa..e26bb536ad 100644 --- a/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.h +++ b/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.h @@ -118,8 +118,8 @@ class GlobalSettings : public BatchOption, private ConfigOption::Listener, priva Pimpl ERROR_REPORTS; - BooleanCheckBoxOption DEVELOPER_MODE_CHECKBOX; StringOption DEVELOPER_TOKEN; + StringOption INTERNAL_DEVELOPER_TOKEN; // The mode that does not run Qt GUI, but instead runs some tests for // debugging, unit testing and developing purposes. diff --git a/SerialPrograms/Source/CommonFramework/StaticGlobals.cpp b/SerialPrograms/Source/CommonFramework/StaticGlobals.cpp index 5bdfbea0bc..0b69116581 100644 --- a/SerialPrograms/Source/CommonFramework/StaticGlobals.cpp +++ b/SerialPrograms/Source/CommonFramework/StaticGlobals.cpp @@ -28,6 +28,20 @@ const std::set TOKENS{ "9b41db8175b5f248a78e738c7bd63a36e33b57953cb4e80ccdd13c2a7e892eec", // Dalton's token. }; +const std::set INTERNAL_TOKENS{ +// "f6538243092d8a3b9959bca988f054e1670f57c7246df2cbba25c4df3fe7a4e7", + "2d04af67f6520e3550842d7eeb292868c6d0d4809b607f5a454712023d8815e1", + "475d0a0a305a02cbf8b602bd47c3b275dccd5ac19fbe480729804a8e4e360b71", + "6643d9fe87b3e54dc75dfac8ac22f0cc8bd17f6a8a786debf5fc4c517ee65469", + "8e48e38e49bffc8462ada9d2d9d850d5b3b5c9529d20978c09bc548bc9a614a4", + "7694adee4419d62c6a923c4efc9e7b41def7b96bb84ea882701b0bf2e8c13bee", + "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08", // jw's token. + "e8d168bc482e96553ea9f9ecaea5a817474dbccc2a6a228a6bde67f2b2aa2889", // James' token. + "7555b7c63481cad42306718c67e7f9def5bfd1da8f6cd299ccd3d7dc95f307ae", // Kuro's token. + "3d475b46d121fc24559d100de2426feaa53cd6578aac2817c4857a610ccde2dd", // kichi's token. + "9b41db8175b5f248a78e738c7bd63a36e33b57953cb4e80ccdd13c2a7e892eec", // Dalton's token. +}; + @@ -47,7 +61,22 @@ void StaticGlobals::load_json(const JsonValue& json){ hash.push(dev_token->c_str(), dev_token->size()); hash.finish(); hash.get_hash_hex(); - INTERNAL_DEVELOPER_MODE = TOKENS.find(hash.get_hash_hex()) != TOKENS.end(); + DEVELOPER_MODE = TOKENS.find(hash.get_hash_hex()) != TOKENS.end(); + } + + const std::string* internal_dev_token = obj->get_string("INTERNAL_DEVELOPER_TOKEN"); + if (internal_dev_token){ + SHA256 hash; + hash.push(internal_dev_token->c_str(), internal_dev_token->size()); + hash.finish(); + hash.get_hash_hex(); + + bool internal_dev = INTERNAL_TOKENS.find(hash.get_hash_hex()) != INTERNAL_TOKENS.end(); + if (internal_dev){ + INTERNAL_DEVELOPER_MODE = true; + DEVELOPER_MODE = true; + } + } const JsonObject* debug_obj = obj->get_object("DEBUG"); From f327333ff30c87448ebf5b2abbbbdc53fcb3e346 Mon Sep 17 00:00:00 2001 From: jw098 Date: Sun, 9 Aug 2026 13:12:21 -0700 Subject: [PATCH 5/6] internal tokens also unlock regular dev mode. --- .../CommonFramework/GlobalSettingsPanel.cpp | 2 ++ .../Source/CommonFramework/StaticGlobals.cpp | 16 ++++------------ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp b/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp index d8d4a72ba0..d523bdb7de 100644 --- a/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp +++ b/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp @@ -290,6 +290,8 @@ void GlobalSettings::load_json(const JsonValue& json){ STATIC_GLOBALS.load_json(json); BatchOption::load_json(json); + // cout << "DEVELOPER_MODE: " << STATIC_GLOBALS.DEVELOPER_MODE << endl; + // cout << "INTERNAL_DEVELOPER_MODE: " << STATIC_GLOBALS.INTERNAL_DEVELOPER_MODE << endl; const bool developer_mode = STATIC_GLOBALS.DEVELOPER_MODE; ConfigOptionState devmode_visibility = developer_mode diff --git a/SerialPrograms/Source/CommonFramework/StaticGlobals.cpp b/SerialPrograms/Source/CommonFramework/StaticGlobals.cpp index 0b69116581..d342b19260 100644 --- a/SerialPrograms/Source/CommonFramework/StaticGlobals.cpp +++ b/SerialPrograms/Source/CommonFramework/StaticGlobals.cpp @@ -21,22 +21,11 @@ const std::set TOKENS{ "6643d9fe87b3e54dc75dfac8ac22f0cc8bd17f6a8a786debf5fc4c517ee65469", "8e48e38e49bffc8462ada9d2d9d850d5b3b5c9529d20978c09bc548bc9a614a4", "7694adee4419d62c6a923c4efc9e7b41def7b96bb84ea882701b0bf2e8c13bee", - "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08", // jw's token. "e8d168bc482e96553ea9f9ecaea5a817474dbccc2a6a228a6bde67f2b2aa2889", // James' token. - "7555b7c63481cad42306718c67e7f9def5bfd1da8f6cd299ccd3d7dc95f307ae", // Kuro's token. - "3d475b46d121fc24559d100de2426feaa53cd6578aac2817c4857a610ccde2dd", // kichi's token. - "9b41db8175b5f248a78e738c7bd63a36e33b57953cb4e80ccdd13c2a7e892eec", // Dalton's token. }; const std::set INTERNAL_TOKENS{ -// "f6538243092d8a3b9959bca988f054e1670f57c7246df2cbba25c4df3fe7a4e7", - "2d04af67f6520e3550842d7eeb292868c6d0d4809b607f5a454712023d8815e1", - "475d0a0a305a02cbf8b602bd47c3b275dccd5ac19fbe480729804a8e4e360b71", - "6643d9fe87b3e54dc75dfac8ac22f0cc8bd17f6a8a786debf5fc4c517ee65469", - "8e48e38e49bffc8462ada9d2d9d850d5b3b5c9529d20978c09bc548bc9a614a4", - "7694adee4419d62c6a923c4efc9e7b41def7b96bb84ea882701b0bf2e8c13bee", "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08", // jw's token. - "e8d168bc482e96553ea9f9ecaea5a817474dbccc2a6a228a6bde67f2b2aa2889", // James' token. "7555b7c63481cad42306718c67e7f9def5bfd1da8f6cd299ccd3d7dc95f307ae", // Kuro's token. "3d475b46d121fc24559d100de2426feaa53cd6578aac2817c4857a610ccde2dd", // kichi's token. "9b41db8175b5f248a78e738c7bd63a36e33b57953cb4e80ccdd13c2a7e892eec", // Dalton's token. @@ -61,7 +50,10 @@ void StaticGlobals::load_json(const JsonValue& json){ hash.push(dev_token->c_str(), dev_token->size()); hash.finish(); hash.get_hash_hex(); - DEVELOPER_MODE = TOKENS.find(hash.get_hash_hex()) != TOKENS.end(); + + bool internal_dev = INTERNAL_TOKENS.find(hash.get_hash_hex()) != INTERNAL_TOKENS.end(); + bool regular_dev = TOKENS.find(hash.get_hash_hex()) != TOKENS.end(); + DEVELOPER_MODE = regular_dev || internal_dev; } const std::string* internal_dev_token = obj->get_string("INTERNAL_DEVELOPER_TOKEN"); From 383eab11677769282173f18da2bf74d4e81fcb43 Mon Sep 17 00:00:00 2001 From: jw098 Date: Sun, 9 Aug 2026 14:19:22 -0700 Subject: [PATCH 6/6] only one dev token field --- .../CommonFramework/GlobalSettingsPanel.cpp | 9 +-------- .../Source/CommonFramework/GlobalSettingsPanel.h | 1 - .../Source/CommonFramework/StaticGlobals.cpp | 16 +--------------- 3 files changed, 2 insertions(+), 24 deletions(-) diff --git a/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp b/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp index d523bdb7de..de1e0d49bb 100644 --- a/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp +++ b/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.cpp @@ -199,13 +199,7 @@ GlobalSettings::GlobalSettings() , ERROR_REPORTS(CONSTRUCT_TOKEN) , DEVELOPER_TOKEN( true, - "Developer Token for Regular Dev mode:
Restart application to take full effect after changing this.", - LockMode::LOCK_WHILE_RUNNING, - "", "" - ) - , INTERNAL_DEVELOPER_TOKEN( - true, - "Developer Token for Internal Dev mode:
Restart application to take full effect after changing this.", + "Developer Token:
Restart application to take full effect after changing this.", LockMode::LOCK_WHILE_RUNNING, "", "" ) @@ -268,7 +262,6 @@ GlobalSettings::GlobalSettings() #endif PA_ADD_OPTION(DEVELOPER_TOKEN); - PA_ADD_OPTION(INTERNAL_DEVELOPER_TOKEN); USE_GPU_FOR_ML_INFERENCE0.set_visibility(ConfigOptionState::HIDDEN); RESOURCE_DOWNLOAD_TABLE.set_visibility(ConfigOptionState::HIDDEN); diff --git a/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.h b/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.h index e26bb536ad..7dc22b17aa 100644 --- a/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.h +++ b/SerialPrograms/Source/CommonFramework/GlobalSettingsPanel.h @@ -119,7 +119,6 @@ class GlobalSettings : public BatchOption, private ConfigOption::Listener, priva Pimpl ERROR_REPORTS; StringOption DEVELOPER_TOKEN; - StringOption INTERNAL_DEVELOPER_TOKEN; // The mode that does not run Qt GUI, but instead runs some tests for // debugging, unit testing and developing purposes. diff --git a/SerialPrograms/Source/CommonFramework/StaticGlobals.cpp b/SerialPrograms/Source/CommonFramework/StaticGlobals.cpp index d342b19260..139908e27b 100644 --- a/SerialPrograms/Source/CommonFramework/StaticGlobals.cpp +++ b/SerialPrograms/Source/CommonFramework/StaticGlobals.cpp @@ -54,21 +54,7 @@ void StaticGlobals::load_json(const JsonValue& json){ bool internal_dev = INTERNAL_TOKENS.find(hash.get_hash_hex()) != INTERNAL_TOKENS.end(); bool regular_dev = TOKENS.find(hash.get_hash_hex()) != TOKENS.end(); DEVELOPER_MODE = regular_dev || internal_dev; - } - - const std::string* internal_dev_token = obj->get_string("INTERNAL_DEVELOPER_TOKEN"); - if (internal_dev_token){ - SHA256 hash; - hash.push(internal_dev_token->c_str(), internal_dev_token->size()); - hash.finish(); - hash.get_hash_hex(); - - bool internal_dev = INTERNAL_TOKENS.find(hash.get_hash_hex()) != INTERNAL_TOKENS.end(); - if (internal_dev){ - INTERNAL_DEVELOPER_MODE = true; - DEVELOPER_MODE = true; - } - + INTERNAL_DEVELOPER_MODE = internal_dev; } const JsonObject* debug_obj = obj->get_object("DEBUG");