From 5faf40b2fabcab1b78db90aa97b10de61b227f8a Mon Sep 17 00:00:00 2001 From: thesillydoggo Date: Wed, 1 Apr 2026 14:31:33 +1100 Subject: [PATCH 1/4] fix MDTextArea culling --- loader/src/ui/nodes/MDTextArea.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/loader/src/ui/nodes/MDTextArea.cpp b/loader/src/ui/nodes/MDTextArea.cpp index b19314ca8..d86e7502b 100644 --- a/loader/src/ui/nodes/MDTextArea.cpp +++ b/loader/src/ui/nodes/MDTextArea.cpp @@ -88,7 +88,7 @@ class MDContentLayer : public CCContentLayer { // so that's why based MDContentLayer expects itself // to have a CCMenu :-) - if (m_content) { + if (m_content && getParent()) { for (auto child : CCArrayExt(m_content->getChildren())) { auto y = this->getPositionY() + child->getPositionY(); child->setVisible( @@ -163,6 +163,11 @@ bool MDTextArea::init(std::string str, CCSize const& size) { m_impl->m_content = CCMenu::create(); m_impl->m_content->setZOrder(2); + + auto content = MDContentLayer::create(m_impl->m_content, m_impl->m_size.width, m_impl->m_size.height); + m_impl->m_scrollLayer->m_contentLayer = content; + m_impl->m_scrollLayer->addChild(content); + m_impl->m_scrollLayer->m_contentLayer->addChild(m_impl->m_content); m_impl->m_scrollLayer->setTouchEnabled(true); From c65e5469408c41e728bce132f910c72270706e25 Mon Sep 17 00:00:00 2001 From: thesillydoggo Date: Wed, 1 Apr 2026 14:34:17 +1100 Subject: [PATCH 2/4] fix code styling --- loader/src/ui/nodes/MDTextArea.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/loader/src/ui/nodes/MDTextArea.cpp b/loader/src/ui/nodes/MDTextArea.cpp index d86e7502b..c3228be89 100644 --- a/loader/src/ui/nodes/MDTextArea.cpp +++ b/loader/src/ui/nodes/MDTextArea.cpp @@ -88,7 +88,7 @@ class MDContentLayer : public CCContentLayer { // so that's why based MDContentLayer expects itself // to have a CCMenu :-) - if (m_content && getParent()) { + if (m_content) { for (auto child : CCArrayExt(m_content->getChildren())) { auto y = this->getPositionY() + child->getPositionY(); child->setVisible( @@ -167,13 +167,12 @@ bool MDTextArea::init(std::string str, CCSize const& size) { auto content = MDContentLayer::create(m_impl->m_content, m_impl->m_size.width, m_impl->m_size.height); m_impl->m_scrollLayer->m_contentLayer = content; m_impl->m_scrollLayer->addChild(content); - - m_impl->m_scrollLayer->m_contentLayer->addChild(m_impl->m_content); + content->addChild(m_impl->m_content); m_impl->m_scrollLayer->setTouchEnabled(true); this->addChild(m_impl->m_scrollLayer); - + this->updateLabel(); return true; From e984631af4c159ea2abcccf830620676c536db8d Mon Sep 17 00:00:00 2001 From: thesillydoggo Date: Mon, 6 Apr 2026 15:02:22 +1000 Subject: [PATCH 3/4] implement hide username --- loader/resources/mod.json.in | 10 ++++++++++ loader/src/internal/crashlog.cpp | 21 +++++++++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/loader/resources/mod.json.in b/loader/resources/mod.json.in index c7744d779..d5ef57e13 100644 --- a/loader/resources/mod.json.in +++ b/loader/resources/mod.json.in @@ -110,6 +110,16 @@ "name": "Expand Installed Mods List", "description": "Make the installed mods list a single infinite scrollable list instead of having pages" }, + "hide-user-in-crashlogs": { + "type": "bool", + "default": true, + "name": "Hide Name in Crashlogs", + "description": "Replaces your username with \"{USERNAME}\" in crashlogs so you can share crashlogs without leaking your name.", + "platforms": [ + "win", + "mac" + ] + }, "developer-title": { "type": "title", "name": "Developer Settings" diff --git a/loader/src/internal/crashlog.cpp b/loader/src/internal/crashlog.cpp index 0cbafa489..ca641fbf2 100644 --- a/loader/src/internal/crashlog.cpp +++ b/loader/src/internal/crashlog.cpp @@ -268,6 +268,23 @@ std::string crashlog::writeCrashlog( // this could also be done by saving a loader setting or smth but eh. (void)utils::file::writeBinary(crashlog::getCrashLogDirectory() / "last-crashed", {}); + auto newInfo = std::string(info); + auto newStack = std::string(stacktrace); + + #if defined(GEODE_IS_WINDOWS) || defined(GEODE_IS_MACOS) + if (Mod::get()->getSettingValue("hide-user-in-crashlogs")) { + const char* user = std::getenv("USER"); + std::string newUser = "{USERNAME}"; + + // so we only replace file paths + newInfo = utils::string::replace(newInfo, fmt::format("\\{}\\", user), fmt::format("\\{}\\", newUser)); + newInfo = utils::string::replace(newInfo, fmt::format("/{}/", user), fmt::format("/{}/", newUser)); + + newStack = utils::string::replace(newStack, fmt::format("\\{}\\", user), fmt::format("\\{}\\", newUser)); + newStack = utils::string::replace(newStack, fmt::format("/{}/", user), fmt::format("/{}/", newUser)); + } + #endif + Buffer file; file.append(getDateString(false)); @@ -290,11 +307,11 @@ std::string crashlog::writeCrashlog( // exception info file.append("\n== Exception Information ==\n"); - file.append(info); + file.append(newInfo); // stack trace file.append("\n== Stack Trace (the most important part) ==\n"); - file.append(stacktrace); + file.append(newStack); // registers file.append("\n== Register States ==\n"); From 648f4320bfb8ea5d406b07455196679719e1ec39 Mon Sep 17 00:00:00 2001 From: thesillydoggo Date: Mon, 6 Apr 2026 15:46:04 +1000 Subject: [PATCH 4/4] change to --- loader/resources/mod.json.in | 2 +- loader/src/internal/crashlog.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/loader/resources/mod.json.in b/loader/resources/mod.json.in index b085d1747..4da577cbe 100644 --- a/loader/resources/mod.json.in +++ b/loader/resources/mod.json.in @@ -108,7 +108,7 @@ "type": "bool", "default": true, "name": "Hide Name in Crashlogs", - "description": "Replaces your username with \"{USERNAME}\" in crashlogs so you can share crashlogs without leaking your name.", + "description": "Replaces your username with \"\" in crashlogs so you can share crashlogs without leaking your name.", "platforms": [ "win", "mac" diff --git a/loader/src/internal/crashlog.cpp b/loader/src/internal/crashlog.cpp index ca641fbf2..4437c3f9d 100644 --- a/loader/src/internal/crashlog.cpp +++ b/loader/src/internal/crashlog.cpp @@ -274,7 +274,7 @@ std::string crashlog::writeCrashlog( #if defined(GEODE_IS_WINDOWS) || defined(GEODE_IS_MACOS) if (Mod::get()->getSettingValue("hide-user-in-crashlogs")) { const char* user = std::getenv("USER"); - std::string newUser = "{USERNAME}"; + std::string newUser = ""; // so we only replace file paths newInfo = utils::string::replace(newInfo, fmt::format("\\{}\\", user), fmt::format("\\{}\\", newUser));