From 0c0f7898f4ff3b2e4afdbdc438674b30be7dacc7 Mon Sep 17 00:00:00 2001 From: TehPers Date: Tue, 28 Jun 2022 16:37:58 -0700 Subject: Search assembly directory for dependencies --- src/SMAPI/Framework/ModLoading/AssemblyLoader.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/SMAPI/Framework/ModLoading/AssemblyLoader.cs b/src/SMAPI/Framework/ModLoading/AssemblyLoader.cs index eb940c41..bd29a159 100644 --- a/src/SMAPI/Framework/ModLoading/AssemblyLoader.cs +++ b/src/SMAPI/Framework/ModLoading/AssemblyLoader.cs @@ -264,8 +264,18 @@ namespace StardewModdingAPI.Framework.ModLoading if (!file.Exists) yield break; // not a local assembly + // add the assembly's directory temporarily if needed + // this is needed by F# mods which bundle FSharp.Core.dll, for example + string? temporarySearchDir = null; + if (file.DirectoryName is not null && !this.AssemblyDefinitionResolver.GetSearchDirectories().Contains(file.DirectoryName)) + { + this.AssemblyDefinitionResolver.AddSearchDirectory(file.DirectoryName); + temporarySearchDir = file.DirectoryName; + } + // read assembly AssemblyDefinition assembly; + try { byte[] assemblyBytes = File.ReadAllBytes(file.FullName); Stream readStream = this.TrackForDisposal(new MemoryStream(assemblyBytes)); @@ -286,6 +296,12 @@ namespace StardewModdingAPI.Framework.ModLoading assembly = this.TrackForDisposal(AssemblyDefinition.ReadAssembly(readStream, new ReaderParameters(ReadingMode.Immediate) { AssemblyResolver = assemblyResolver, InMemory = true })); } } + finally + { + // clean up temporary search directory + if (temporarySearchDir is not null) + this.AssemblyDefinitionResolver.RemoveSearchDirectory(temporarySearchDir); + } // skip if already visited if (visitedAssemblyNames.Contains(assembly.Name.Name)) -- cgit From f44a2fbfcfd06ac82c5b77177b0fd9475757d945 Mon Sep 17 00:00:00 2001 From: Chase Warrington Date: Mon, 4 Jul 2022 20:42:27 -0400 Subject: Add app.manifest, fixing DPI awareness --- src/SMAPI/SMAPI.csproj | 1 + src/SMAPI/app.manifest | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 src/SMAPI/app.manifest diff --git a/src/SMAPI/SMAPI.csproj b/src/SMAPI/SMAPI.csproj index c05512e9..1c745702 100644 --- a/src/SMAPI/SMAPI.csproj +++ b/src/SMAPI/SMAPI.csproj @@ -16,6 +16,7 @@ false + app.manifest diff --git a/src/SMAPI/app.manifest b/src/SMAPI/app.manifest new file mode 100644 index 00000000..d209bf77 --- /dev/null +++ b/src/SMAPI/app.manifest @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true/pm + + + + -- cgit From dcb3a97727401c2b3704e277bc4062b3bd89448e Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 8 Jul 2022 17:44:27 -0400 Subject: add log parser warning for PyTK compatibility mode --- docs/release-notes.md | 4 ++++ src/SMAPI.Web/Views/LogParser/Index.cshtml | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/release-notes.md b/docs/release-notes.md index 8b258fb3..cf237a82 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -7,6 +7,10 @@ _If needed, you can update to SMAPI 3.15.0 first and then install to the latest version._ --> +## Upcoming release +* For the web UI: + * Added log parser warning about performance of PyTK 1.23.0 or earlier. + ## 3.15.1 Released 06 July 2022 for Stardew Valley 1.5.6 or later. diff --git a/src/SMAPI.Web/Views/LogParser/Index.cshtml b/src/SMAPI.Web/Views/LogParser/Index.cshtml index b824b768..57e26ace 100644 --- a/src/SMAPI.Web/Views/LogParser/Index.cshtml +++ b/src/SMAPI.Web/Views/LogParser/Index.cshtml @@ -17,6 +17,7 @@ LogModInfo[] outdatedMods = log?.Mods.Where(mod => mod.HasUpdate).ToArray() ?? Array.Empty(); LogModInfo? errorHandler = log?.Mods.FirstOrDefault(p => p.IsCodeMod && p.Name == "Error Handler"); bool hasOlderErrorHandler = errorHandler?.GetParsedVersion() is not null && log?.ApiVersionParsed is not null && log.ApiVersionParsed.IsNewerThan(errorHandler.GetParsedVersion()); + bool isPyTkCompatibilityMode = log?.ApiVersionParsed?.IsOlderThan("3.15.0") is false && log.Mods.Any(p => p.IsCodeMod && p.Name == "PyTK" && p.GetParsedVersion()?.IsOlderThan("1.23.1") is true); // get filters IDictionary defaultFilters = Enum @@ -242,7 +243,7 @@ else if (log?.IsValid == true) @if (log?.IsValid == true) {
- @if (outdatedMods.Any() || errorHandler is null || hasOlderErrorHandler) + @if (outdatedMods.Any() || errorHandler is null || hasOlderErrorHandler || isPyTkCompatibilityMode) {

Suggested fixes

    @@ -254,6 +255,10 @@ else if (log?.IsValid == true) {
  • Your Error Handler mod is older than SMAPI. You may be missing some game/mod error fixes. You can reinstall SMAPI to update it.
  • } + @if (isPyTkCompatibilityMode) + { +
  • PyTK 1.23.0 or earlier isn't compatible with newer SMAPI performance optimizations. This may increase loading times or in-game lag.
  • + } @if (outdatedMods.Any()) {
  • -- cgit From 1b25710cf26ccc46485c9475e33980a5490b9561 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 8 Jul 2022 17:48:01 -0400 Subject: fix installer partly applying color theme before it's selected --- docs/release-notes.md | 3 +++ src/SMAPI.Installer/InteractiveInstaller.cs | 12 ++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/docs/release-notes.md b/docs/release-notes.md index cf237a82..6c3edb77 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -8,6 +8,9 @@ --> ## Upcoming release +* For players: + * Fixed Linux/macOS installer's color theme question partly unreadable if the terminal background is dark. + * For the web UI: * Added log parser warning about performance of PyTK 1.23.0 or earlier. diff --git a/src/SMAPI.Installer/InteractiveInstaller.cs b/src/SMAPI.Installer/InteractiveInstaller.cs index fd1a6047..d00a5df4 100644 --- a/src/SMAPI.Installer/InteractiveInstaller.cs +++ b/src/SMAPI.Installer/InteractiveInstaller.cs @@ -206,7 +206,7 @@ namespace StardewModdingApi.Installer Console.WriteLine(); // handle choice - string choice = this.InteractivelyChoose("Type 1 or 2, then press enter.", new[] { "1", "2" }); + string choice = this.InteractivelyChoose("Type 1 or 2, then press enter.", new[] { "1", "2" }, printLine: Console.WriteLine); switch (choice) { case "1": @@ -629,22 +629,22 @@ namespace StardewModdingApi.Installer } /// Interactively ask the user to choose a value. - /// A callback which prints a message to the console. + /// A callback which prints a message to the console. /// The message to print. /// The allowed options (not case sensitive). /// The indentation to prefix to output. - private string InteractivelyChoose(string message, string[] options, string indent = "", Action? print = null) + private string InteractivelyChoose(string message, string[] options, string indent = "", Action? printLine = null) { - print ??= this.PrintInfo; + printLine ??= this.PrintInfo; while (true) { - print(indent + message); + printLine(indent + message); Console.Write(indent); string? input = Console.ReadLine()?.Trim().ToLowerInvariant(); if (input == null || !options.Contains(input)) { - print($"{indent}That's not a valid option."); + printLine($"{indent}That's not a valid option."); continue; } return input; -- cgit From 1b3a1a48d0d0d7e2423db54f3266cabd80a5a9b3 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 8 Jul 2022 19:02:33 -0400 Subject: refactor assembly resolver to avoid repeatedly copying search directory list --- src/SMAPI/Constants.cs | 4 +- .../ModLoading/AssemblyDefinitionResolver.cs | 70 ++++++++++++++++++++-- src/SMAPI/Framework/ModLoading/AssemblyLoader.cs | 5 +- 3 files changed, 67 insertions(+), 12 deletions(-) diff --git a/src/SMAPI/Constants.cs b/src/SMAPI/Constants.cs index 33468717..442f2ec8 100644 --- a/src/SMAPI/Constants.cs +++ b/src/SMAPI/Constants.cs @@ -244,8 +244,8 @@ namespace StardewModdingAPI internal static void ConfigureAssemblyResolver(AssemblyDefinitionResolver resolver) { // add search paths - resolver.AddSearchDirectory(Constants.GamePath); - resolver.AddSearchDirectory(Constants.InternalFilesPath); + resolver.TryAddSearchDirectory(Constants.GamePath); + resolver.TryAddSearchDirectory(Constants.InternalFilesPath); // add SMAPI explicitly // Normally this would be handled automatically by the search paths, but for some reason there's a specific diff --git a/src/SMAPI/Framework/ModLoading/AssemblyDefinitionResolver.cs b/src/SMAPI/Framework/ModLoading/AssemblyDefinitionResolver.cs index b3378ad1..5a850255 100644 --- a/src/SMAPI/Framework/ModLoading/AssemblyDefinitionResolver.cs +++ b/src/SMAPI/Framework/ModLoading/AssemblyDefinitionResolver.cs @@ -4,18 +4,31 @@ using Mono.Cecil; namespace StardewModdingAPI.Framework.ModLoading { /// A minimal assembly definition resolver which resolves references to known assemblies. - internal class AssemblyDefinitionResolver : DefaultAssemblyResolver + internal class AssemblyDefinitionResolver : IAssemblyResolver { /********* ** Fields *********/ + /// The underlying assembly resolver. + private readonly DefaultAssemblyResolverWrapper Resolver = new(); + /// The known assemblies. private readonly IDictionary Lookup = new Dictionary(); + /// The directory paths to search for assemblies. + private readonly HashSet SearchPaths = new(); + /********* ** Public methods *********/ + /// Construct an instance. + public AssemblyDefinitionResolver() + { + foreach (string path in this.Resolver.GetSearchDirectories()) + this.SearchPaths.Add(path); + } + /// Add known assemblies to the resolver. /// The known assemblies. public void Add(params AssemblyDefinition[] assemblies) @@ -29,7 +42,7 @@ namespace StardewModdingAPI.Framework.ModLoading /// The assembly names for which it should be returned. public void AddWithExplicitNames(AssemblyDefinition assembly, params string[] names) { - this.RegisterAssembly(assembly); + this.Resolver.AddAssembly(assembly); foreach (string name in names) this.Lookup[name] = assembly; } @@ -37,18 +50,52 @@ namespace StardewModdingAPI.Framework.ModLoading /// Resolve an assembly reference. /// The assembly name. /// The assembly can't be resolved. - public override AssemblyDefinition Resolve(AssemblyNameReference name) + public AssemblyDefinition Resolve(AssemblyNameReference name) { - return this.ResolveName(name.Name) ?? base.Resolve(name); + return this.ResolveName(name.Name) ?? this.Resolver.Resolve(name); } /// Resolve an assembly reference. /// The assembly name. /// The assembly reader parameters. /// The assembly can't be resolved. - public override AssemblyDefinition Resolve(AssemblyNameReference name, ReaderParameters parameters) + public AssemblyDefinition Resolve(AssemblyNameReference name, ReaderParameters parameters) { - return this.ResolveName(name.Name) ?? base.Resolve(name, parameters); + return this.ResolveName(name.Name) ?? this.Resolver.Resolve(name, parameters); + } + + /// Add a directory path to search for assemblies, if it's non-null and not already added. + /// The path to search. + /// Returns whether the path was successfully added. + public bool TryAddSearchDirectory(string? path) + { + if (path is not null && this.SearchPaths.Add(path)) + { + this.Resolver.AddSearchDirectory(path); + return true; + } + + return false; + } + + /// Remove a directory path to search for assemblies, if it's non-null. + /// The path to remove. + /// Returns whether the path was in the list and removed. + public bool RemoveSearchDirectory(string? path) + { + if (path is not null && this.SearchPaths.Remove(path)) + { + this.Resolver.RemoveSearchDirectory(path); + return true; + } + + return false; + } + + /// + public void Dispose() + { + this.Resolver.Dispose(); } @@ -63,5 +110,16 @@ namespace StardewModdingAPI.Framework.ModLoading ? match : null; } + + /// An internal wrapper around to allow access to its protected methods. + private class DefaultAssemblyResolverWrapper : DefaultAssemblyResolver + { + /// Add an assembly to the resolver. + /// The assembly to add. + public void AddAssembly(AssemblyDefinition assembly) + { + this.RegisterAssembly(assembly); + } + } } } diff --git a/src/SMAPI/Framework/ModLoading/AssemblyLoader.cs b/src/SMAPI/Framework/ModLoading/AssemblyLoader.cs index bd29a159..01037870 100644 --- a/src/SMAPI/Framework/ModLoading/AssemblyLoader.cs +++ b/src/SMAPI/Framework/ModLoading/AssemblyLoader.cs @@ -267,11 +267,8 @@ namespace StardewModdingAPI.Framework.ModLoading // add the assembly's directory temporarily if needed // this is needed by F# mods which bundle FSharp.Core.dll, for example string? temporarySearchDir = null; - if (file.DirectoryName is not null && !this.AssemblyDefinitionResolver.GetSearchDirectories().Contains(file.DirectoryName)) - { - this.AssemblyDefinitionResolver.AddSearchDirectory(file.DirectoryName); + if (this.AssemblyDefinitionResolver.TryAddSearchDirectory(file.DirectoryName)) temporarySearchDir = file.DirectoryName; - } // read assembly AssemblyDefinition assembly; -- cgit From bc71665c1c696f5b99902bd3fc583f750a342fbe Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 8 Jul 2022 19:11:40 -0400 Subject: apply editorconfig --- src/SMAPI/app.manifest | 58 ++++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/src/SMAPI/app.manifest b/src/SMAPI/app.manifest index d209bf77..89aeca70 100644 --- a/src/SMAPI/app.manifest +++ b/src/SMAPI/app.manifest @@ -1,42 +1,40 @@ - - - - - - - - - - - - - - + + - - + + - - + + - - + + - - + + + + + + + true/pm + - - - - - true/pm - - - -- cgit From 0c787de2df202eb35c40b24b907619ecf750f051 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 8 Jul 2022 19:13:45 -0400 Subject: match settings used by the game --- src/SMAPI/app.manifest | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/SMAPI/app.manifest b/src/SMAPI/app.manifest index 89aeca70..42faff59 100644 --- a/src/SMAPI/app.manifest +++ b/src/SMAPI/app.manifest @@ -1,6 +1,6 @@ - + @@ -35,6 +35,7 @@ true/pm + permonitorv2,permonitor -- cgit From 8eeda8b4c496f73d2101c59f5b443bb6c2a2a06b Mon Sep 17 00:00:00 2001 From: Ishan Jalan Date: Fri, 8 Jul 2022 12:28:53 +0530 Subject: SVGs for pufferchick and pufferchick-cool SVG > PNG --- .gitignore | 4 ++++ src/SMAPI.Web/Views/Index/Index.cshtml | 2 +- src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg | 1 + src/SMAPI.Web/wwwroot/Content/images/pufferchick.svg | 1 + src/SMAPI.Web/wwwroot/Content/js/index.js | 4 ++-- 5 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg create mode 100644 src/SMAPI.Web/wwwroot/Content/images/pufferchick.svg diff --git a/.gitignore b/.gitignore index 527ac6bb..e4cc7c26 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,7 @@ appsettings.Development.json # Azure generated files src/SMAPI.Web/Properties/PublishProfiles/*.pubxml src/SMAPI.Web/Properties/ServiceDependencies/* - Web Deploy/ +src/SMAPI.Web/.DS_Store +src/SMAPI.Web/wwwroot/Content/images/.DS_Store +src/SMAPI.Web/wwwroot/Content/.DS_Store +src/SMAPI.Web/wwwroot/.DS_Store diff --git a/src/SMAPI.Web/Views/Index/Index.cshtml b/src/SMAPI.Web/Views/Index/Index.cshtml index acb8df78..308ed1e5 100644 --- a/src/SMAPI.Web/Views/Index/Index.cshtml +++ b/src/SMAPI.Web/Views/Index/Index.cshtml @@ -15,7 +15,7 @@

    SMAPI - +

    The mod loader for Stardew Valley.

    diff --git a/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg b/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg new file mode 100644 index 00000000..0b4c3ad1 --- /dev/null +++ b/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/SMAPI.Web/wwwroot/Content/images/pufferchick.svg b/src/SMAPI.Web/wwwroot/Content/images/pufferchick.svg new file mode 100644 index 00000000..5e77e493 --- /dev/null +++ b/src/SMAPI.Web/wwwroot/Content/images/pufferchick.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/SMAPI.Web/wwwroot/Content/js/index.js b/src/SMAPI.Web/wwwroot/Content/js/index.js index d0734b02..04db5c2f 100644 --- a/src/SMAPI.Web/wwwroot/Content/js/index.js +++ b/src/SMAPI.Web/wwwroot/Content/js/index.js @@ -3,10 +3,10 @@ $(document).ready(function () { var pufferchick = $("#pufferchick"); $(".cta-dropdown").hover( function () { - pufferchick.attr("src", "Content/images/pufferchick-cool.png"); + pufferchick.attr("src", "Content/images/pufferchick-cool.svg"); }, function () { - pufferchick.attr("src", "Content/images/pufferchick.png"); + pufferchick.attr("src", "Content/images/pufferchick.svg"); } ); -- cgit From 173bc4f517586a0b0cbbcf3ec6f966800c734bd4 Mon Sep 17 00:00:00 2001 From: Ishan Jalan Date: Fri, 8 Jul 2022 20:50:34 +0530 Subject: Updated pufferchick cool --- .gitignore | 1 + src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index e4cc7c26..daf93b7e 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,4 @@ src/SMAPI.Web/.DS_Store src/SMAPI.Web/wwwroot/Content/images/.DS_Store src/SMAPI.Web/wwwroot/Content/.DS_Store src/SMAPI.Web/wwwroot/.DS_Store +.DS_Store diff --git a/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg b/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg index 0b4c3ad1..a4985468 100644 --- a/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg +++ b/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file -- cgit From a52f24307b45e028aa08bc13352a89293567b850 Mon Sep 17 00:00:00 2001 From: Ishan Jalan Date: Fri, 8 Jul 2022 21:03:43 +0530 Subject: pufferchick-cool updated [2] --- src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg b/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg index a4985468..cb38da73 100644 --- a/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg +++ b/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file -- cgit From 5da690cbefb34acaecaeaa17110d1b701f3d87ba Mon Sep 17 00:00:00 2001 From: Ishan Jalan Date: Fri, 8 Jul 2022 21:27:54 +0530 Subject: Update pufferchick-cool.svg --- src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg b/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg index cb38da73..28b03976 100644 --- a/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg +++ b/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file -- cgit From 72ba455d5afbeaff089a6b5ab57d8009910be5e0 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 8 Jul 2022 19:36:09 -0400 Subject: simplify .gitignore --- .gitignore | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index daf93b7e..a89ccd21 100644 --- a/.gitignore +++ b/.gitignore @@ -34,8 +34,6 @@ appsettings.Development.json # Azure generated files src/SMAPI.Web/Properties/PublishProfiles/*.pubxml src/SMAPI.Web/Properties/ServiceDependencies/* - Web Deploy/ -src/SMAPI.Web/.DS_Store -src/SMAPI.Web/wwwroot/Content/images/.DS_Store -src/SMAPI.Web/wwwroot/Content/.DS_Store -src/SMAPI.Web/wwwroot/.DS_Store + +# macOS .DS_Store -- cgit From 477ecbab6ee4f011c68736c821cbe1476b384d29 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 8 Jul 2022 19:36:32 -0400 Subject: bypass browser cache & delete unused images --- src/SMAPI.Web/Views/Index/Index.cshtml | 2 +- .../wwwroot/Content/images/pufferchick-cool.png | Bin 1099 -> 0 bytes src/SMAPI.Web/wwwroot/Content/images/pufferchick.png | Bin 831 -> 0 bytes 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.png delete mode 100644 src/SMAPI.Web/wwwroot/Content/images/pufferchick.png diff --git a/src/SMAPI.Web/Views/Index/Index.cshtml b/src/SMAPI.Web/Views/Index/Index.cshtml index 308ed1e5..d6472fcb 100644 --- a/src/SMAPI.Web/Views/Index/Index.cshtml +++ b/src/SMAPI.Web/Views/Index/Index.cshtml @@ -10,7 +10,7 @@ @section Head { - + }

    diff --git a/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.png b/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.png deleted file mode 100644 index f359146c..00000000 Binary files a/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.png and /dev/null differ diff --git a/src/SMAPI.Web/wwwroot/Content/images/pufferchick.png b/src/SMAPI.Web/wwwroot/Content/images/pufferchick.png deleted file mode 100644 index 1de9cf47..00000000 Binary files a/src/SMAPI.Web/wwwroot/Content/images/pufferchick.png and /dev/null differ -- cgit From 9435711216ee8a8c224d70a18391f9f57f725b35 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 8 Jul 2022 19:40:54 -0400 Subject: update release notes --- docs/release-notes.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/release-notes.md b/docs/release-notes.md index 6c3edb77..df3949be 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -9,10 +9,15 @@ ## Upcoming release * For players: - * Fixed Linux/macOS installer's color theme question partly unreadable if the terminal background is dark. + * Fixed SMAPI applying different DPI awareness settings than the game (thanks to spacechase0!). + * Fixed Linux/macOS installer's color scheme question partly unreadable if the terminal background is dark. + +* For mod authors: + * While loading your mod, SMAPI now searches for indirect dependencies in your mod's folder to support edge cases like F# mods (thanks to TehPers)! * For the web UI: * Added log parser warning about performance of PyTK 1.23.0 or earlier. + * Converted pufferchick icons to SVG (thanks to ishan!). ## 3.15.1 Released 06 July 2022 for Stardew Valley 1.5.6 or later. -- cgit From 521129ad213da58fda5851f181a81bf661dde9b5 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sat, 9 Jul 2022 00:53:11 -0400 Subject: raise deprecation levels --- docs/release-notes.md | 2 ++ src/SMAPI/Constants.cs | 2 +- src/SMAPI/Framework/Content/AssetInfo.cs | 4 ++-- src/SMAPI/Framework/ModHelpers/CommandHelper.cs | 2 +- src/SMAPI/Framework/ModHelpers/ContentHelper.cs | 8 ++++---- src/SMAPI/Framework/ModHelpers/ModHelper.cs | 2 +- src/SMAPI/Framework/SCore.cs | 6 +++--- src/SMAPI/Utilities/PerScreen.cs | 2 +- 8 files changed, 15 insertions(+), 13 deletions(-) diff --git a/docs/release-notes.md b/docs/release-notes.md index df3949be..13c0dce8 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -14,6 +14,8 @@ * For mod authors: * While loading your mod, SMAPI now searches for indirect dependencies in your mod's folder to support edge cases like F# mods (thanks to TehPers)! + * **Raised deprecation message levels.** + _Deprecation warnings are now player-visible in the SMAPI console as grayed-out `DEBUG` messages. They'll be raised to `WARN` level in SMAPI 3.17 next month, which will be the last major release before SMAPI 4.0._ * For the web UI: * Added log parser warning about performance of PyTK 1.23.0 or earlier. diff --git a/src/SMAPI/Constants.cs b/src/SMAPI/Constants.cs index c59af612..7aaa33bb 100644 --- a/src/SMAPI/Constants.cs +++ b/src/SMAP