Skip to content

Commit 667844d

Browse files
committed
Merge branch 'develop' into stable
2 parents ae4c426 + e8987dc commit 667844d

File tree

57 files changed

+1018
-816
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+1018
-816
lines changed

build/common.targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ repo. It imports the other MSBuild files as needed.
77
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
88
<PropertyGroup>
99
<!--set general build properties -->
10-
<Version>4.1.7</Version>
10+
<Version>4.1.8</Version>
1111
<Product>SMAPI</Product>
1212
<LangVersion>latest</LangVersion>
1313
<AssemblySearchPaths>$(AssemblySearchPaths);{GAC}</AssemblySearchPaths>

build/deploy-local-smapi.targets

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ This assumes `find-game-folder.targets` has already been imported and validated.
2121
<Copy SourceFiles="$(TargetDir)\$(TargetName).xml" DestinationFolder="$(GamePath)" />
2222
<Copy SourceFiles="$(TargetDir)\SMAPI.config.json" DestinationFiles="$(GamePath)\smapi-internal\config.json" />
2323
<Copy SourceFiles="$(TargetDir)\SMAPI.metadata.json" DestinationFiles="$(GamePath)\smapi-internal\metadata.json" />
24+
<Copy SourceFiles="$(TargetDir)\Markdig.dll" DestinationFolder="$(GamePath)\smapi-internal" />
2425
<Copy SourceFiles="$(TargetDir)\Newtonsoft.Json.dll" DestinationFolder="$(GamePath)\smapi-internal" />
2526
<Copy SourceFiles="$(TargetDir)\TMXTile.dll" DestinationFolder="$(GamePath)\smapi-internal" />
2627
<Copy SourceFiles="$(TargetDir)\Pintail.dll" DestinationFolder="$(GamePath)\smapi-internal" />

build/unix/prepare-install-package.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ for folder in ${folders[@]}; do
134134
cp -r "$smapiBin/i18n" "$bundlePath/smapi-internal"
135135

136136
# bundle smapi-internal
137-
for name in "0Harmony.dll" "0Harmony.xml" "Mono.Cecil.dll" "Mono.Cecil.Mdb.dll" "Mono.Cecil.Pdb.dll" "MonoMod.Common.dll" "Newtonsoft.Json.dll" "Pathoschild.Http.Client.dll" "Pintail.dll" "TMXTile.dll" "SMAPI.Toolkit.dll" "SMAPI.Toolkit.xml" "SMAPI.Toolkit.CoreInterfaces.dll" "SMAPI.Toolkit.CoreInterfaces.xml" "System.Net.Http.Formatting.dll"; do
137+
for name in "0Harmony.dll" "0Harmony.xml" "Markdig.dll" "Mono.Cecil.dll" "Mono.Cecil.Mdb.dll" "Mono.Cecil.Pdb.dll" "MonoMod.Common.dll" "Newtonsoft.Json.dll" "Pathoschild.Http.Client.dll" "Pintail.dll" "TMXTile.dll" "SMAPI.Toolkit.dll" "SMAPI.Toolkit.xml" "SMAPI.Toolkit.CoreInterfaces.dll" "SMAPI.Toolkit.CoreInterfaces.xml" "System.Net.Http.Formatting.dll"; do
138138
cp "$smapiBin/$name" "$bundlePath/smapi-internal"
139139
done
140140

build/windows/prepare-install-package.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ foreach ($folder in $folders) {
155155
cp -Recurse "$smapiBin/i18n" "$bundlePath/smapi-internal"
156156

157157
# bundle smapi-internal
158-
foreach ($name in @("0Harmony.dll", "0Harmony.xml", "Mono.Cecil.dll", "Mono.Cecil.Mdb.dll", "Mono.Cecil.Pdb.dll", "MonoMod.Common.dll", "Newtonsoft.Json.dll", "Pathoschild.Http.Client.dll", "Pintail.dll", "TMXTile.dll", "SMAPI.Toolkit.dll", "SMAPI.Toolkit.xml", "SMAPI.Toolkit.CoreInterfaces.dll", "SMAPI.Toolkit.CoreInterfaces.xml", "System.Net.Http.Formatting.dll")) {
158+
foreach ($name in @("0Harmony.dll", "0Harmony.xml", "Markdig.dll", "Mono.Cecil.dll", "Mono.Cecil.Mdb.dll", "Mono.Cecil.Pdb.dll", "MonoMod.Common.dll", "Newtonsoft.Json.dll", "Pathoschild.Http.Client.dll", "Pintail.dll", "TMXTile.dll", "SMAPI.Toolkit.dll", "SMAPI.Toolkit.xml", "SMAPI.Toolkit.CoreInterfaces.dll", "SMAPI.Toolkit.CoreInterfaces.xml", "System.Net.Http.Formatting.dll")) {
159159
cp "$smapiBin/$name" "$bundlePath/smapi-internal"
160160
}
161161

docs/release-notes.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,28 @@
11
[README](README.md)
22

33
# Release notes
4+
## 4.1.8
5+
Released 28 November 2024 for Stardew Valley 1.6.14 or later.
6+
7+
* For players:
8+
* Updated the mod compatibility blacklist.
9+
* Fixed compatibility with newer macOS security restrictions.
10+
* Fixed crash with some rare combinations of mods involving Harmony and mod APIs.
11+
12+
* For mod authors:
13+
* Added `PathUtilities.CreateSlug` to get a safe Unicode string for use in special contexts like URLs and file paths.
14+
_For example, `PathUtilities.CreateSlug("some 例子?!/\\~ text")` becomes `"some-例子-text"`._
15+
* `PathUtilities.IsSlug` now allows more Unicode characters.
16+
* Updated [Pintail](https://github.com/Nanoray-pl/Pintail) 2.6.0 → 2.6.1 (see [changes](https://github.com/Nanoray-pl/Pintail/blob/master/docs/release-notes.md#261)).
17+
18+
* For the web UI:
19+
* Fixed log parser not highlighting update alerts for mods which SMAPI couldn't load.
20+
* Fixed CurseForge links not shown for mods that have a CurseForge page.
21+
22+
* For external tools:
23+
* Revamped the mod compatibility list to simplify maintenance. It's now stored [in a Git repo](https://github.com/Pathoschild/SmapiCompatibilityList), which replaces the former [wiki page](https://stardewvalleywiki.com/Modding:Mod_compatibility).
24+
* Added toolkit method to get the URL from an update key's site and mod ID.
25+
426
## 4.1.7
527
Released 12 November 2024 for Stardew Valley 1.6.14 or later.
628

docs/technical/web.md

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -228,10 +228,9 @@ The mod ID you specified in the request.
228228
<td>
229229

230230
The update version recommended by the web API, if any. This is based on some internal rules (e.g.
231-
it won't recommend a prerelease update if the player has a working stable version) and context
232-
(e.g. whether the player is in the game beta channel). Choosing an update version yourself isn't
233-
recommended, but you can set `includeExtendedMetadata: true` and check the `metadata` field if you
234-
really want to do that.
231+
it won't recommend a prerelease update if the player has a working stable version). Choosing an
232+
update version yourself isn't recommended, but you can set `includeExtendedMetadata: true` and
233+
check the `metadata` field if you really want to do that.
235234

236235
</td>
237236
</tr>
@@ -260,20 +259,16 @@ field | summary
260259
`nexusID` | The mod ID on [Nexus Mods](https://www.nexusmods.com/stardewvalley/), if any.
261260
`chucklefishID` | The mod ID in the [Chucklefish mod repo](https://community.playstarbound.com/resources/categories/stardew-valley.22/), if any.
262261
`curseForgeID` | The mod project ID on [CurseForge](https://www.curseforge.com/stardewvalley), if any.
263-
`curseForgeKey` | The mod key on [CurseForge](https://www.curseforge.com/stardewvalley), if any. This is used in the mod page URL.
264262
`modDropID` | The mod ID on [ModDrop](https://www.moddrop.com/stardew-valley), if any.
265263
`gitHubRepo` | The GitHub repository containing the mod code, if any. Specified in the `Owner/Repo` form.
266264
`customSourceUrl` | The custom URL to the mod code, if any. This is used for mods which aren't stored in a GitHub repo.
267265
`customUrl` | The custom URL to the mod page, if any. This is used for mods which aren't stored on one of the standard mod sites covered by the ID fields.
268266
`main` | The primary mod version, if any. This depends on the mod site, but it's typically either the version of the mod itself or of its latest non-optional download.
269267
`optional` | The latest optional download version, if any.
270268
`unofficial` | The version of the unofficial update defined on the wiki for this mod, if any.
271-
`unofficialForBeta` | Equivalent to `unofficial`, but for beta versions of SMAPI or Stardew Valley.
272-
`hasBetaInfo` | Whether there's an ongoing Stardew Valley or SMAPI beta which may affect update checks.
273269
`compatibilityStatus` | The compatibility status for the mod for the stable version of the game, as defined on the wiki, if any. See [possible values](https://github.com/Pathoschild/SMAPI/blob/develop/src/SMAPI.Toolkit/Framework/Clients/Wiki/WikiCompatibilityStatus.cs).
274270
`compatibilitySummary` | The human-readable summary of the mod's compatibility in HTML format, if any.
275271
`brokeIn` | The SMAPI or Stardew Valley version that broke this mod, if any.
276-
`betaCompatibilityStatus`<br />`betaCompatibilitySummary`<br />`betaBrokeIn` | Equivalent to the preceding fields, but for beta versions of SMAPI or Stardew Valley.
277272

278273
</td>
279274
</tr>
@@ -307,14 +302,12 @@ Example response with `includeExtendedMetadata: true`:
307302
"name": "Content Patcher",
308303
"nexusID": 1915,
309304
"curseForgeID": 309243,
310-
"curseForgeKey": "content-patcher",
311305
"modDropID": 470174,
312306
"gitHubRepo": "Pathoschild/StardewMods",
313307
"main": {
314308
"version": "1.10",
315309
"url": "https://www.nexusmods.com/stardewvalley/mods/1915"
316310
},
317-
"hasBetaInfo": true,
318311
"compatibilityStatus": "Ok",
319312
"compatibilitySummary": "✓ use latest version."
320313
},
@@ -389,8 +382,7 @@ Initial setup:
389382
property name | description
390383
------------------------------- | -----------------
391384
`BackgroundServices:Enabled` | Set to `true` to enable background processes like fetching data from the wiki, or false to disable them.
392-
`Site:BetaEnabled` | Set to `true` to show a separate download button if there's a beta version of SMAPI in its GitHub releases.
393-
`Site:BetaBlurb` | If `Site:BetaEnabled` is true and there's a beta version of SMAPI in its GitHub releases, this is shown on the beta download button as explanatory subtext.
385+
`Site:OtherBlurb` | A message to show below the download button (e.g. for details on downloading a beta version), in Markdown format.
394386
`Site:SupporterList` | A list of Patreon supports to credit on the download page.
395387

396388
To deploy updates, just [redeploy the web project from Visual Studio](https://docs.microsoft.com/en-us/visualstudio/deployment/quickstart-deploy-to-azure).

src/Directory.Packages.props

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55

66
<ItemGroup>
77
<!-- SMAPI + toolkit -->
8-
<PackageVersion Include="FluentAssertions" Version="6.12.1" />
9-
<PackageVersion Include="HtmlAgilityPack" Version="1.11.70" />
8+
<PackageVersion Include="FluentAssertions" Version="6.12.2" />
9+
<PackageVersion Include="HtmlAgilityPack" Version="1.11.71" />
1010
<PackageVersion Include="Microsoft.Build.Utilities.Core" Version="17.10.4" />
1111
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.9.2" />
12-
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
12+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
1313
<PackageVersion Include="Microsoft.Win32.Registry" Version="5.0.0" />
1414
<PackageVersion Include="Mono.Cecil" Version="0.11.5" />
1515
<PackageVersion Include="MonoMod.Common" Version="22.3.5.1" />
@@ -18,14 +18,14 @@
1818
<PackageVersion Include="NUnit" Version="4.2.2" />
1919
<PackageVersion Include="NUnit3TestAdapter" Version="4.6.0" />
2020
<PackageVersion Include="Pathoschild.Http.FluentClient" Version="4.4.1" />
21-
<PackageVersion Include="Pintail" Version="2.6.0" />
21+
<PackageVersion Include="Pintail" Version="2.6.1" />
2222
<PackageVersion Include="Platonymous.TMXTile" Version="1.5.9" />
2323
<PackageVersion Include="System.Management" Version="8.0.0" />
2424
<PackageVersion Include="System.Reflection.Emit" Version="4.7.0" />
2525
<PackageVersion Include="VdfConverter" Version="1.0.3" />
2626

2727
<!-- web -->
28-
<PackageVersion Include="Azure.Storage.Blobs" Version="12.22.2" />
28+
<PackageVersion Include="Azure.Storage.Blobs" Version="12.23.0" />
2929
<PackageVersion Include="Hangfire.AspNetCore" Version="1.8.15" />
3030
<PackageVersion Include="Hangfire.Console" Version="1.4.3" />
3131
<PackageVersion Include="Hangfire.MemoryStorage" Version="1.8.1.1" />

src/SMAPI.Installer/InteractiveInstaller.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,21 @@ public void Run(string[] args)
415415
}
416416
}.Start();
417417
}
418+
419+
// sign SMAPI on macOS
420+
// This avoids 'StardewModdingAPI will damage your computer' errors in newer versions.
421+
if (context.Platform is Platform.Mac)
422+
{
423+
new Process
424+
{
425+
StartInfo = new ProcessStartInfo
426+
{
427+
FileName = "codesign",
428+
Arguments = $"--force --sign - \"{paths.UnixSmapiExecutablePath}\"",
429+
CreateNoWindow = true
430+
}
431+
}.Start();
432+
}
418433
}
419434

420435
// copy the game's deps.json file
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
22
"Name": "Console Commands",
33
"Author": "SMAPI",
4-
"Version": "4.1.7",
4+
"Version": "4.1.8",
55
"Description": "Adds SMAPI console commands that let you manipulate the game.",
66
"UniqueID": "SMAPI.ConsoleCommands",
77
"EntryDll": "ConsoleCommands.dll",
8-
"MinimumApiVersion": "4.1.7"
8+
"MinimumApiVersion": "4.1.8"
99
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
22
"Name": "Save Backup",
33
"Author": "SMAPI",
4-
"Version": "4.1.7",
4+
"Version": "4.1.8",
55
"Description": "Automatically backs up all your saves once per day into its folder.",
66
"UniqueID": "SMAPI.SaveBackup",
77
"EntryDll": "SaveBackup.dll",
8-
"MinimumApiVersion": "4.1.7"
8+
"MinimumApiVersion": "4.1.8"
99
}

0 commit comments

Comments
 (0)