mirror of
https://github.com/archr-linux/Arch-R.git
synced 2026-07-12 18:19:42 -07:00
Update RK3326 Game Console Device Tree and related configurations
- Modify joypad compatibility to include "archr-joypad" in the device tree source. - Adjust internal display settings to use the same reset GPIO and add enable GPIO. - Remove SDIO card detect GPIO and mark it as non-removable. - Update the joypad driver in the MIPI generator to use "archr-joypad". - Fix Vulkan custom dispatchers to restrict header version checks. - Add system manager timeout overrides for improved shutdown performance. - Update kernel configuration to version 6.12.79 and enable BFQ I/O scheduler. - Clean up GPU governor settings in post-update scripts. - Update PPSSPP emulator to version 1.20.2 and apply necessary patches. - Adjust SDL2 and Mesa package dependencies and versions. - Update Vulkan headers and loader to version 1.4.347. - Add udev rules for BFQ scheduler and systemd configuration for shutdown timeout. - Implement input sense adjustments for better button mapping. - Add clock speed settings to EmulationStation configuration. - Disable rumble motor on boot to prevent unwanted vibrations.
This commit is contained in:
@@ -42,7 +42,7 @@
|
||||
};
|
||||
|
||||
joypad: odroidgo3-joypad {
|
||||
compatible = "odroidgo3-joypad";
|
||||
compatible = "archr-joypad", "odroidgo3-joypad";
|
||||
pwms = <&pwm0 0 200000000 0>;
|
||||
pwm-names = "enable";
|
||||
rumble-boost-weak = <0x0000>;
|
||||
@@ -176,13 +176,18 @@
|
||||
};
|
||||
};
|
||||
|
||||
/* Soysauce panel: different reset GPIO + additional enable GPIO */
|
||||
/* Soysauce panel: same reset GPIO as base (GPIO3_PC0), add enable GPIO */
|
||||
&internal_display {
|
||||
compatible = "archr,generic-dsi", "rocknix,generic-dsi";
|
||||
reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>;
|
||||
enable-gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
/* Soysauce uses GPIO3_PB6 for BTN-A, not sdio card detect */
|
||||
&sdio {
|
||||
/delete-property/ cd-gpios;
|
||||
non-removable;
|
||||
};
|
||||
|
||||
&rk817_codec {
|
||||
spk-ctl-gpios = <&gpio3 RK_PC4 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
@@ -215,9 +220,6 @@
|
||||
};
|
||||
|
||||
panel {
|
||||
panel_reset: panel-reset {
|
||||
rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
panel_enable: panel-enable {
|
||||
rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm64 6.12.61 Kernel Configuration
|
||||
# Linux/arm64 6.12.79 Kernel Configuration
|
||||
#
|
||||
CONFIG_CC_VERSION_TEXT="aarch64-archr-linux-gnu-gcc-14.2.0 (GCC) 14.2.0"
|
||||
CONFIG_CC_IS_GCC=y
|
||||
@@ -818,7 +818,8 @@ CONFIG_BLK_PM=y
|
||||
#
|
||||
CONFIG_MQ_IOSCHED_DEADLINE=y
|
||||
CONFIG_MQ_IOSCHED_KYBER=y
|
||||
# CONFIG_IOSCHED_BFQ is not set
|
||||
CONFIG_IOSCHED_BFQ=y
|
||||
CONFIG_BFQ_GROUP_IOSCHED=y
|
||||
# end of IO Schedulers
|
||||
|
||||
CONFIG_PADATA=y
|
||||
|
||||
@@ -105,14 +105,15 @@ get_gpu_performance_level() {
|
||||
|
||||
gpu_performance_level() {
|
||||
case ${1} in
|
||||
profile_peak)
|
||||
set_gpu_gov performance
|
||||
;;
|
||||
auto|profile_standard)
|
||||
auto|default)
|
||||
set_gpu_gov ondemand
|
||||
;;
|
||||
low)
|
||||
set_gpu_gov powersave
|
||||
*)
|
||||
set_gpu_gov ${1}
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
get_available_gpu_governors() {
|
||||
echo "default"; tr " " "\n" < $GPU_FREQ/available_governors | grep \[a-z\]
|
||||
}
|
||||
|
||||
@@ -293,3 +293,8 @@ if [ -e "/storage/.config/duckstation/settings.ini" ]; then
|
||||
# no confirmation popup
|
||||
sed -i 's/ConfirmPowerOff = true/ConfirmPowerOff = false/' /storage/.config/duckstation/settings.ini
|
||||
fi
|
||||
|
||||
# Clean old GPU 'governor' values
|
||||
sed -i '/gpuperf=low/d' /storage/.config/system/configs/system.cfg
|
||||
sed -i '/gpuperf=profile_standard/d' /storage/.config/system/configs/system.cfg
|
||||
sed -i '/gpuperf=profile_peak/d' /storage/.config/system/configs/system.cfg
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="ppsspp-lr"
|
||||
PKG_VERSION="e49c0bd8836a8a8f678565357773386f1174d3f5"
|
||||
PKG_VERSION="afbc66a318b86432642b532c575241f3716642ef" # v1.20.2
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/hrydgard/ppsspp"
|
||||
PKG_URL="https://github.com/hrydgard/ppsspp.git"
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
diff --git a/Core/System.cpp b/Core/System.cpp
|
||||
index cb6fc34fa..829a5795a 100644
|
||||
--- a/Core/System.cpp
|
||||
+++ b/Core/System.cpp
|
||||
@@ -619,12 +619,7 @@ std::string PSP_GetLoading() {
|
||||
diff --git a/Core/Util/PathUtil.cpp b/Core/Util/PathUtil.cpp
|
||||
--- a/Core/Util/PathUtil.cpp
|
||||
+++ b/Core/Util/PathUtil.cpp
|
||||
@@ -45,12 +45,7 @@
|
||||
Path GetSysDirectory(PSPDirectories directoryType) {
|
||||
const Path &memStickDirectory = g_Config.memStickDirectory;
|
||||
Path pspDirectory;
|
||||
@@ -13,6 +12,6 @@ index cb6fc34fa..829a5795a 100644
|
||||
- pspDirectory = memStickDirectory / "PSP";
|
||||
- }
|
||||
+ pspDirectory = memStickDirectory / "PSP";
|
||||
|
||||
|
||||
switch (directoryType) {
|
||||
case DIRECTORY_PSP:
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -395,6 +395,7 @@
|
||||
@@ -413,6 +413,7 @@
|
||||
# NEON optimizations in libpng17 seem to cause PNG load errors, see #14485.
|
||||
add_compile_definitions(PNG_ARM_NEON_OPT=0)
|
||||
|
||||
+ add_compile_options(-Ofast -fno-tree-slp-vectorize)
|
||||
add_compile_options(-Wall -Werror=return-type -Wno-unused-function -Wno-sign-compare -Wno-unused-but-set-variable "$<$<COMPILE_LANGUAGE:CXX>:-Wno-reorder>" -Wno-unknown-pragmas -Wno-unused-value -Wno-unused-variable)
|
||||
add_compile_options(-Wall -Werror=return-type -Wno-unused-function -Wno-sign-compare -Wno-unused-but-set-variable "$<$<COMPILE_LANGUAGE:CXX>:-Wno-reorder>" -Wno-unknown-pragmas -Wno-unused-value -Wno-unused-variable -Wno-error=incompatible-pointer-types)
|
||||
if(NOT CLANG)
|
||||
# This one is very useful but has many false positives.
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -396,6 +396,7 @@
|
||||
@@ -414,6 +414,7 @@
|
||||
add_compile_definitions(PNG_ARM_NEON_OPT=0)
|
||||
|
||||
add_compile_options(-Ofast -fno-tree-slp-vectorize)
|
||||
+ add_compile_options(-mno-outline-atomics)
|
||||
add_compile_options(-Wall -Werror=return-type -Wno-unused-function -Wno-sign-compare -Wno-unused-but-set-variable "$<$<COMPILE_LANGUAGE:CXX>:-Wno-reorder>" -Wno-unknown-pragmas -Wno-unused-value -Wno-unused-variable)
|
||||
add_compile_options(-Wall -Werror=return-type -Wno-unused-function -Wno-sign-compare -Wno-unused-but-set-variable "$<$<COMPILE_LANGUAGE:CXX>:-Wno-reorder>" -Wno-unknown-pragmas -Wno-unused-value -Wno-unused-variable -Wno-error=incompatible-pointer-types)
|
||||
if(NOT CLANG)
|
||||
# This one is very useful but has many false positives.
|
||||
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
--- a/libretro/libretro_vulkan.cpp
|
||||
+++ b/libretro/libretro_vulkan.cpp
|
||||
@@ -109,27 +109,34 @@ static VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice_libretro(VkPhysicalDevice p
|
||||
newInfo.enabledExtensionCount = (uint32_t)enabledExtensionNames.size();
|
||||
newInfo.ppEnabledExtensionNames = newInfo.enabledExtensionCount ? enabledExtensionNames.data() : nullptr;
|
||||
|
||||
- // Then check for VkPhysicalDeviceFeatures2 chaining or pEnabledFeatures to enable required features. Note that when both
|
||||
- // structs are present Features2 takes precedence. vkCreateDevice parameters don't give us a simple way to detect
|
||||
- // VK_KHR_get_physical_device_properties2 usage so we'll always try both paths.
|
||||
+ // Check for VkPhysicalDeviceFeatures2 in pNext chain. Per Vulkan spec, pEnabledFeatures
|
||||
+ // must be NULL when VkPhysicalDeviceFeatures2 is present in pNext.
|
||||
std::unordered_map<VkPhysicalDeviceFeatures *, VkPhysicalDeviceFeatures> originalFeaturePointers;
|
||||
VkPhysicalDeviceFeatures placeholderEnabledFeatures{};
|
||||
+ bool hasFeatures2InChain = false;
|
||||
|
||||
for (const VkBaseOutStructure *next = (const VkBaseOutStructure *)pCreateInfo->pNext; next != nullptr;) {
|
||||
if (next->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2) {
|
||||
VkPhysicalDeviceFeatures *enabledFeatures = &((VkPhysicalDeviceFeatures2 *)next)->features;
|
||||
originalFeaturePointers.try_emplace(enabledFeatures, *enabledFeatures);
|
||||
+ hasFeatures2InChain = true;
|
||||
}
|
||||
|
||||
next = (const VkBaseOutStructure *)next->pNext;
|
||||
}
|
||||
|
||||
- if (newInfo.pEnabledFeatures) {
|
||||
- placeholderEnabledFeatures = *newInfo.pEnabledFeatures;
|
||||
- }
|
||||
+ if (!hasFeatures2InChain) {
|
||||
+ // Only use pEnabledFeatures when VkPhysicalDeviceFeatures2 is NOT in pNext chain.
|
||||
+ if (newInfo.pEnabledFeatures) {
|
||||
+ placeholderEnabledFeatures = *newInfo.pEnabledFeatures;
|
||||
+ }
|
||||
|
||||
- newInfo.pEnabledFeatures = &placeholderEnabledFeatures;
|
||||
- originalFeaturePointers.try_emplace((VkPhysicalDeviceFeatures *)newInfo.pEnabledFeatures, *newInfo.pEnabledFeatures);
|
||||
+ newInfo.pEnabledFeatures = &placeholderEnabledFeatures;
|
||||
+ originalFeaturePointers.try_emplace((VkPhysicalDeviceFeatures *)newInfo.pEnabledFeatures, *newInfo.pEnabledFeatures);
|
||||
+ } else {
|
||||
+ // Ensure pEnabledFeatures is NULL when features2 is used (Vulkan spec requirement).
|
||||
+ newInfo.pEnabledFeatures = nullptr;
|
||||
+ }
|
||||
|
||||
for (const auto& pair : originalFeaturePointers) {
|
||||
for (uint32_t i = 0; i < sizeof(VkPhysicalDeviceFeatures) / sizeof(VkBool32); i++) {
|
||||
+5
-2
@@ -4,7 +4,7 @@
|
||||
# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS)
|
||||
|
||||
. /etc/profile
|
||||
set_kill set "-9 duckstation-mini"
|
||||
set_kill set "-9 AppRun.wrapped"
|
||||
|
||||
# Filesystem vars
|
||||
IMMUTABLE_CONF_DIR="/usr/config/duckstation"
|
||||
@@ -120,7 +120,10 @@ fi
|
||||
fi
|
||||
|
||||
#Retroachievements
|
||||
/usr/bin/cheevos_duckstation.sh
|
||||
# Disabled, not working. Seems like Duckstation changed the token encruption...
|
||||
# /usr/bin/cheevos_duckstation.sh
|
||||
sed -i '/\[Cheevos\]/,/^\s*$/s/Enabled =.*/Enabled = false/' ${CONF_FILE}
|
||||
|
||||
|
||||
#Run Duckstation
|
||||
${EMUPERF} duckstation-sa -fullscreen -bigpicture -nogui -- "${1}" > /dev/null 2>&1
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
PKG_NAME="ppsspp-sa"
|
||||
PKG_SITE="https://github.com/hrydgard/ppsspp"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
PKG_VERSION="eb859735feddf88dbe651763f366a7705612113a" # v1.20.1
|
||||
PKG_VERSION="afbc66a318b86432642b532c575241f3716642ef" # v1.20.2
|
||||
CHEAT_DB_VERSION="7c9fe1ae71155626cea767aed53f968de9f4051f" # Update cheat.db (17/01/2026)
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_DEPENDS_TARGET="toolchain libzip SDL2 zlib zip"
|
||||
|
||||
+6
-10
@@ -74,26 +74,22 @@ index 04c16ca7a0..cecc4b7f0f 100644
|
||||
g_display.pixel_yres = g_DesktopHeight;
|
||||
}
|
||||
diff --git a/UI/MainScreen.cpp b/UI/MainScreen.cpp
|
||||
index d7a97347b1..531997fba0 100644
|
||||
--- a/UI/MainScreen.cpp
|
||||
+++ b/UI/MainScreen.cpp
|
||||
@@ -1454,19 +1454,6 @@ void MainScreen::CreateViews() {
|
||||
@@ -1459,18 +1459,6 @@
|
||||
LinearLayout *rightColumnItems = new LinearLayout(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, WRAP_CONTENT));
|
||||
rightColumnItems->SetSpacing(0.0f);
|
||||
ViewGroup *logo = new LogoView(false, new LinearLayoutParams(FILL_PARENT, 80.0f));
|
||||
-#if !defined(MOBILE_DEVICE)
|
||||
- auto gr = GetI18NCategory(I18NCat::GRAPHICS);
|
||||
- ImageID icon(g_Config.bFullScreen ? "I_RESTORE" : "I_FULLSCREEN");
|
||||
- UI::Button *fullscreenButton = logo->Add(new Button("", icon, new AnchorLayoutParams(48, 48, NONE, 0, 0, NONE, Centering::None)));
|
||||
- Button *fullscreenButton = logo->Add(new Button("", ImageID(), new AnchorLayoutParams(48, 48, NONE, 0, 0, NONE, Centering::None)));
|
||||
- fullscreenButton->SetIgnoreText(true);
|
||||
- fullscreenButton->OnClick.Add([fullscreenButton](UI::EventParams &e) {
|
||||
- if (fullscreenButton) {
|
||||
- fullscreenButton->SetImageID(ImageID(!g_Config.bFullScreen ? "I_RESTORE" : "I_FULLSCREEN"));
|
||||
- }
|
||||
- fullscreenButton->OnClick.Add([](UI::EventParams &e) {
|
||||
- g_Config.bFullScreen = !g_Config.bFullScreen;
|
||||
- System_ApplyFullscreenState();
|
||||
- });
|
||||
- fullscreenButton->SetImageIDFunc([]() {
|
||||
- return g_Config.bFullScreen ? ImageID("I_RESTORE") : ImageID("I_FULLSCREEN");
|
||||
- });
|
||||
-#endif
|
||||
rightColumnItems->Add(logo);
|
||||
|
||||
LinearLayout *rightColumnChoices = rightColumnItems;
|
||||
|
||||
@@ -29,6 +29,7 @@ IRES=$(get_setting internal_resolution "${PLATFORM}" "${GAME}")
|
||||
GRENDERER=$(get_setting graphics_backend "${PLATFORM}" "${GAME}")
|
||||
SKIPB=$(get_setting skip_buffer_effects "${PLATFORM}" "${GAME}")
|
||||
VSYNC=$(get_setting vsync "${PLATFORM}" "${GAME}")
|
||||
CLOCK_SPEED=$(get_setting clock_speed "${PLATFORM}" "${GAME}")
|
||||
|
||||
#Set the cores to use
|
||||
CORES=$(get_setting "cores" "${PLATFORM}" "${GAME}")
|
||||
@@ -89,6 +90,15 @@ fi
|
||||
sed -i '/^VSyncInterval =/c\VSyncInterval = False' ${CONF_DIR}/${PPSSPP_INI}
|
||||
fi
|
||||
|
||||
#Clock Speed
|
||||
if [ "${CLOCK_SPEED}" = "222" ]; then
|
||||
sed -i '/^CPUSpeed =/c\CPUSpeed = 222' ${CONF_DIR}/${PPSSPP_INI}
|
||||
elif [ "${CLOCK_SPEED}" = "333" ]; then
|
||||
sed -i '/^CPUSpeed =/c\CPUSpeed = 333' ${CONF_DIR}/${PPSSPP_INI}
|
||||
else
|
||||
sed -i '/^CPUSpeed =/c\CPUSpeed = 0' ${CONF_DIR}/${PPSSPP_INI}
|
||||
fi
|
||||
|
||||
#Retroachievements
|
||||
/usr/bin/cheevos_ppsspp.sh
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ PKG_URL="https://www.libsdl.org/release/SDL2-${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain alsa-lib systemd dbus pulseaudio libdrm SDL2:host"
|
||||
PKG_LONGDESC="Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware."
|
||||
PKG_BUILD_FLAGS="+speed"
|
||||
PKG_DEPENDS_HOST="toolchain:host distutilscross:host"
|
||||
PKG_DEPENDS_HOST="toolchain:host distutilscross:host libX11:host"
|
||||
|
||||
if [ ! "${OPENGL_SUPPORT}" = "no" ]; then
|
||||
PKG_DEPENDS_TARGET+=" ${OPENGL} glu"
|
||||
|
||||
@@ -12,7 +12,7 @@ PKG_DEPENDS_TARGET="toolchain expat libdrm Mako:host pyyaml:host"
|
||||
PKG_LONGDESC="Mesa is a 3-D graphics library with an API."
|
||||
PKG_TOOLCHAIN="meson"
|
||||
PKG_PATCH_DIRS+=" ${DEVICE}"
|
||||
PKG_VERSION="26.0.2"
|
||||
PKG_VERSION="26.0.4"
|
||||
PKG_URL="https://gitlab.freedesktop.org/mesa/mesa/-/archive/mesa-${PKG_VERSION}/mesa-mesa-${PKG_VERSION}.tar.gz"
|
||||
|
||||
if listcontains "${GRAPHIC_DRIVERS}" "panfrost"; then
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="vulkan-headers"
|
||||
PKG_VERSION="1.4.332"
|
||||
PKG_VERSION="1.4.347"
|
||||
PKG_LICENSE="Apache-2.0"
|
||||
PKG_SITE="https://github.com/KhronosGroup/Vulkan-Headers"
|
||||
PKG_URL="https://github.com/KhronosGroup/Vulkan-Headers/archive/v${PKG_VERSION}.tar.gz"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="vulkan-loader"
|
||||
PKG_VERSION="1.4.332"
|
||||
PKG_VERSION="1.4.347"
|
||||
PKG_LICENSE="Apache-2.0"
|
||||
PKG_SITE="https://github.com/KhronosGroup/Vulkan-Loader"
|
||||
PKG_URL="https://github.com/KhronosGroup/Vulkan-Loader/archive/v${PKG_VERSION}.tar.gz"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="vulkan-tools"
|
||||
PKG_VERSION="1.4.332"
|
||||
PKG_VERSION="1.4.347"
|
||||
PKG_LICENSE="Apache-2.0"
|
||||
PKG_SITE="https://github.com/KhronosGroup/Vulkan-Tools"
|
||||
PKG_URL="https://github.com/KhronosGroup/Vulkan-tools/archive/v${PKG_VERSION}.tar.gz"
|
||||
|
||||
@@ -2,22 +2,5 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
|
||||
|
||||
. /etc/profile.d/001-functions
|
||||
|
||||
### Set the default performance scaling mode for a few systems.
|
||||
for SYSTEM in dreamcast n64 ports psp psx saturn gba pcfx cdi
|
||||
do
|
||||
CPU_SETTING=$(get_setting ${SYSTEM}.cpugovernor)
|
||||
if [ -z "${CPU_SETTING}" ]
|
||||
then
|
||||
set_setting ${SYSTEM}.cpugovernor performance
|
||||
fi
|
||||
GPU_SETTING=$(get_setting ${SYSTEM}.gpuperf)
|
||||
if [ -z "${GPU_SETTING}" ]
|
||||
then
|
||||
set_setting ${SYSTEM}.gpuperf profile_peak
|
||||
fi
|
||||
done
|
||||
|
||||
# Need to set RA video driver to GL for libmali driver.
|
||||
sed -i '/video_driver =/c\video_driver = "gl"' /storage/.config/retroarch/retroarch.cfg
|
||||
|
||||
@@ -15,7 +15,7 @@ case ${DEVICE} in
|
||||
PKG_PATCH_DIRS+=" 6.12-LTS"
|
||||
;;
|
||||
*)
|
||||
PKG_VERSION="b1405e8f82d26381ce94d79e47586531ea7a54db"
|
||||
PKG_VERSION="422e192b7e3aa3140f34de34765b798817c1f749"
|
||||
PKG_URL="http://github.com/archr/mali_kbase/archive/${PKG_VERSION}.tar.gz"
|
||||
;;
|
||||
esac
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user