Merge branch 'develop' into stable

This commit is contained in:
Jesse Plamondon-Willard
2026-01-25 23:49:50 -05:00
8 changed files with 73 additions and 42 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ repo. It imports the other MSBuild files as needed.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!--set general build properties -->
<Version>4.5.0</Version>
<Version>4.5.1</Version>
<Product>SMAPI</Product>
<LangVersion>latest</LangVersion>
<AssemblySearchPaths>$(AssemblySearchPaths);{GAC}</AssemblySearchPaths>
+34 -9
View File
@@ -15,12 +15,12 @@
##########
$windowsOnly = $false # Windows-only build
$skipBundleDeletion = $false # skip bundle deletion (only applies when using WSL to finalize the build on Windows)
foreach ($arg in $args) {
if ($arg -eq "--windows-only" -and $IsWindows) {
$windowsOnly = $true
}
elseif ($arg -eq "--skip-bundle-deletion") {
$skipBundleDeletion = $true
foreach ($arg in $args) {
if ($arg -eq "--windows-only" -and $IsWindows) {
$windowsOnly = $true
}
elseif ($arg -eq "--skip-bundle-deletion") {
$skipBundleDeletion = $true
}
}
@@ -156,6 +156,7 @@ $installAssets = "src/SMAPI.Installer/assets"
$packagePath = "bin/SMAPI installer"
# init structure
Write-Host "Setting up structure..."
foreach ($folder in $folders) {
$folderPath = "$packagePath/internal/$folder/bundle/smapi-internal"
@@ -256,22 +257,37 @@ foreach ($folder in $folders) {
}
# mark scripts executable
Write-Host "Setting file permissions..."
if ($IsWindows) {
Write-Warning "Can't set Unix file permissions on Windows. This may cause issues for Linux/macOS players."
}
else {
ForEach ($path in @("install on Linux.sh", "install on macOS.command", "bundle/unix-launcher.sh")) {
ForEach ($path in @("install on Linux.sh", "install on macOS.command", "internal/linux/bundle/unix-launcher.sh", "internal/macOS/bundle/unix-launcher.sh")) {
if (Test-Path "$packagePath/$path" -PathType Leaf) {
chmod 755 "$packagePath/$path"
}
else {
Write-Host "Couldn't set permissions for '$packagePath/$path': file does not exist."
}
}
}
# convert bundle folder into final 'install.dat' files
Write-Host "Tucking SMAPI bundle into install.dat..."
foreach ($folder in $folders) {
$path = "$packagePath/internal/$folder"
Compress-Archive -Path "$path/bundle/*" -CompressionLevel Optimal -DestinationPath "$path/install.dat"
if ($IsWindows) {
Compress-Archive -Path "$path/bundle/*" -CompressionLevel Optimal -DestinationPath "$path/install.dat"
}
else {
# Compress-Archive doesn't keep Unix permissions, so use zip directly on Linux/macOS
pushd "$path/bundle" > /dev/null
zip "install.dat" * --recurse-paths --quiet
popd > /dev/null
mv "$path/bundle/install.dat" "$path/install.dat"
}
if (!$skipBundleDeletion) {
Remove-Item -Recurse -Force "$path/bundle"
}
@@ -281,9 +297,18 @@ foreach ($folder in $folders) {
###########
### Create release zips
###########
Write-Host "Creating release zip..."
Move-Item "$packagePath" "bin/SMAPI $version installer"
Compress-Archive -Path "bin/SMAPI $version installer" -DestinationPath "bin/SMAPI-$version-installer.zip" -CompressionLevel Optimal
if ($IsWindows) {
Compress-Archive -Path "bin/SMAPI $version installer" -DestinationPath "bin/SMAPI-$version-installer.zip" -CompressionLevel Optimal
}
else {
# Compress-Archive doesn't keep Unix permissions, so use zip directly on Linux/macOS
pushd bin > /dev/null
zip -9 "SMAPI-$version-installer.zip" "SMAPI $version installer" --recurse-paths --quiet
popd > /dev/null
}
Write-Output ""
Write-Output "Done! Package created in ${pwd.Path}/bin."
+1 -1
View File
@@ -68,7 +68,7 @@ Italian | ↻ [partly translated](../src/SMAPI/i18n/it.json)
Japanese | ↻ [partly translated](../src/SMAPI/i18n/ja.json)
Korean | ↻ [partly translated](../src/SMAPI/i18n/ko.json)
[Polish] | ↻ [partly translated](../src/SMAPI/i18n/pl.json)
Portuguese | ↻ [partly translated](../src/SMAPI/i18n/pt.json)
Portuguese | ✓ [fully translated](../src/SMAPI/i18n/pt.json)
Russian | ↻ [partly translated](../src/SMAPI/i18n/ru.json)
Spanish | ↻ [partly translated](../src/SMAPI/i18n/es.json)
[Thai] | ↻ [partly translated](../src/SMAPI/i18n/th.json)
+7
View File
@@ -1,6 +1,13 @@
← [README](README.md)
# Release notes
## 4.5.1
Released 25 January 2026 for Stardew Valley 1.6.14 or later.
* For players:
* Fixed error installing SMAPI 4.5.0 on Linux/macOS.
* Improved translations. Thanks to Maatsuki (updated Portuguese)!
## 4.5.0
Released 25 January 2026 for Stardew Valley 1.6.14 or later. See [release highlights](https://www.patreon.com/posts/149054246) and [build attestation](https://github.com/Pathoschild/SMAPI/attestations/17379361).
+2 -2
View File
@@ -1,9 +1,9 @@
{
"Name": "Console Commands",
"Author": "SMAPI",
"Version": "4.5.0",
"Version": "4.5.1",
"Description": "Adds SMAPI console commands that let you manipulate the game.",
"UniqueId": "SMAPI.ConsoleCommands",
"EntryDll": "ConsoleCommands.dll",
"MinimumApiVersion": "4.5.0"
"MinimumApiVersion": "4.5.1"
}
+2 -2
View File
@@ -1,9 +1,9 @@
{
"Name": "Save Backup",
"Author": "SMAPI",
"Version": "4.5.0",
"Version": "4.5.1",
"Description": "Automatically backs up all your saves once per day into its folder.",
"UniqueId": "SMAPI.SaveBackup",
"EntryDll": "SaveBackup.dll",
"MinimumApiVersion": "4.5.0"
"MinimumApiVersion": "4.5.1"
}
+1 -1
View File
@@ -49,7 +49,7 @@ internal static class EarlyConstants
internal static int? LogScreenId { get; set; }
/// <summary>SMAPI's current raw semantic version.</summary>
internal static string RawApiVersion = "4.5.0";
internal static string RawApiVersion = "4.5.1";
}
/// <summary>Contains SMAPI's constants and assumptions.</summary>
+25 -26
View File
@@ -11,45 +11,44 @@
/*********
** Generic Mod Config Menu UI
*********/
// TODO
// 'SMAPI features' section
"config.section.features": "SMAPI features",
"config.section.features": "Recursos do SMAPI",
"config.check-for-updates.name": "Check for updates",
"config.check-for-updates.desc": "Whether to automatically check for newer versions of SMAPI and mods when you load the game. If new versions are available, an alert will be shown in the console. This doesn't affect the load time even if your connection is offline or slow, because it happens in the background.",
"config.check-for-updates.name": "Verificar atualizações",
"config.check-for-updates.desc": "Define se o SMAPI deve verificar automaticamente por versões mais novas do SMAPI e dos mods ao iniciar o jogo. Se houver novas versões disponíveis, um alerta será exibido no console. Isso não afeta o tempo de carregamento, mesmo se sua conexão estiver offline ou lenta, pois acontece em segundo plano.",
"config.check-content-integrity.name": "Check content integrity",
"config.check-content-integrity.desc": "Whether SMAPI should check whether the game's content files are present and unmodified. This should nearly always be enabled. If disabled, SMAPI will log a warning for visibility when someone helps you troubleshoot game issues.",
"config.check-content-integrity.name": "Verificar integridade do conteúdo",
"config.check-content-integrity.desc": "Define se o SMAPI deve verificar se os arquivos de conteúdo do jogo estão presentes e sem modificações. Isso quase sempre deve ficar ativado. Se desativado, o SMAPI registrará um aviso para facilitar a identificação de problemas quando alguém estiver ajudando a solucionar erros do jogo.",
"config.read-console-input.name": "Read console input",
"config.read-console-input.desc": "Whether SMAPI should listen for console input. Disabling this will prevent you from using console commands. On some specific Linux systems, disabling this may reduce CPU usage.",
"config.read-console-input.name": "Ler entrada do console",
"config.read-console-input.desc": "Define se o SMAPI deve escutar comandos digitados no console. Desativar isso impedirá o uso de comandos do console. Em alguns sistemas Linux específicos, desativar essa opção pode reduzir o uso de CPU.",
// 'Console window' section
"config.section.console-window": "Console window",
"config.section.console-window": "Janela do console",
"config.developer-mode.name": "Developer mode",
"config.developer-mode.desc": "Whether to show much more info in the SMAPI consoler window, intended for mod developers. Not recommended for most players.",
"config.developer-mode.name": "Modo desenvolvedor",
"config.developer-mode.desc": "Define se devem ser exibidas muito mais informações na janela do console do SMAPI, destinado a desenvolvedores de mods. Não recomendado para a maioria dos jogadores.",
"config.color-scheme.name": "Color scheme",
"config.color-scheme.desc": "The color scheme to apply to text in the SMAPI console window. This has no effect on the game, mods, or SMAPI log file.",
"config.color-scheme.options.AutoDetect": "Auto-detect",
"config.color-scheme.options.AutoDetect.on-windows": "Auto-detect (recommended)",
"config.color-scheme.options.DarkBackground": "Lighter text (for dark backgrounds)",
"config.color-scheme.options.LightBackground": "Darker text (for light backgrounds)",
"config.color-scheme.options.None": "No colors",
"config.color-scheme.name": "Esquema de cores",
"config.color-scheme.desc": "O esquema de cores aplicado ao texto na janela do console do SMAPI. Isso não afeta o jogo, os mods ou o arquivo de log do SMAPI.",
"config.color-scheme.options.AutoDetect": "Detecção automática",
"config.color-scheme.options.AutoDetect.on-windows": "Detecção automática (recomendado)",
"config.color-scheme.options.DarkBackground": "Texto mais claro (para fundos escuros)",
"config.color-scheme.options.LightBackground": "Texto mais escuro (para fundos claros)",
"config.color-scheme.options.None": "Sem cores",
// 'Verbose logging' section
"config.section.verbose-logs": "Verbose logs",
"config.section.verbose-logs.explanation": "To help troubleshoot, SMAPI and many mods can send extra info to the SMAPI log (called 'verbose logging'). This may cause performance issues, and should usually be disabled.",
"config.section.verbose-logs": "Logs detalhados",
"config.section.verbose-logs.explanation": "Para ajudar na solução de problemas, o SMAPI e muitos mods podem enviar informações extras para o log do SMAPI (chamado de 'log detalhado'). Isso pode causar problemas de desempenho e geralmente deve permanecer desativado.",
"config.enable-for.name": "Enable for",
"config.enable-for.desc": "Choose which mods have verbose logging enabled.",
"config.enable-for.options.all": "All (not recommended)",
"config.enable-for.options.selected": "Mods selected below",
"config.enable-for.name": "Ativar para",
"config.enable-for.desc": "Escolha quais mods terão o log detalhado ativado.",
"config.enable-for.options.all": "Todos (não recomendado)",
"config.enable-for.options.selected": "Mods selecionados abaixo",
"config.enable-for-smapi.name": "SMAPI",
"config.enable-for-smapi.desc": "Whether to enable verbose logs for SMAPI itself.",
"config.enable-for-smapi.desc": "Define se os logs detalhados devem ser ativados para o próprio SMAPI.",
"config.enable-for-mod.name": "{{modName}}",
"config.enable-for-mod.desc": "Whether to enable verbose logs for the '{{modName}}' mod."
"config.enable-for-mod.desc": "Define se os logs detalhados devem ser ativados para o mod '{{modName}}'."
}