From b0d0146a45af4330e110d88da65a559702410b4e Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Thu, 24 Jan 2019 14:49:12 -0500 Subject: [PATCH 01/14] update for Stardew Valley 1.3.35-beta support SDV 1.3.35 changes the signature for a utility method related to text width checks. SMAPI just needs to be recompiled, but the build won't work with previous versions of the game. --- build/GlobalAssemblyInfo.cs | 4 ++-- docs/release-notes.md | 4 ++++ src/SMAPI.Mods.ConsoleCommands/manifest.json | 4 ++-- src/SMAPI.Mods.SaveBackup/manifest.json | 4 ++-- src/SMAPI/Constants.cs | 6 +++--- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/build/GlobalAssemblyInfo.cs b/build/GlobalAssemblyInfo.cs index 3faed842..bac35ec3 100644 --- a/build/GlobalAssemblyInfo.cs +++ b/build/GlobalAssemblyInfo.cs @@ -1,5 +1,5 @@ using System.Reflection; [assembly: AssemblyProduct("SMAPI")] -[assembly: AssemblyVersion("2.10.2")] -[assembly: AssemblyFileVersion("2.10.2")] +[assembly: AssemblyVersion("2.11.0")] +[assembly: AssemblyFileVersion("2.11.0")] diff --git a/docs/release-notes.md b/docs/release-notes.md index 4527b12d..d61c7990 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -1,4 +1,8 @@ # Release notes +## 2.11-beta +* For players: + * Updated for Stardew Valley 1.3.35 beta. **Not compatible with non-beta versions of the game.** + ## 2.10.2 Released 08 January 2019 for Stardew Valley 1.3.32–33. diff --git a/src/SMAPI.Mods.ConsoleCommands/manifest.json b/src/SMAPI.Mods.ConsoleCommands/manifest.json index b5fd0424..afefd733 100644 --- a/src/SMAPI.Mods.ConsoleCommands/manifest.json +++ b/src/SMAPI.Mods.ConsoleCommands/manifest.json @@ -1,9 +1,9 @@ { "Name": "Console Commands", "Author": "SMAPI", - "Version": "2.10.2", + "Version": "2.11.0", "Description": "Adds SMAPI console commands that let you manipulate the game.", "UniqueID": "SMAPI.ConsoleCommands", "EntryDll": "ConsoleCommands.dll", - "MinimumApiVersion": "2.10.2" + "MinimumApiVersion": "2.11.0" } diff --git a/src/SMAPI.Mods.SaveBackup/manifest.json b/src/SMAPI.Mods.SaveBackup/manifest.json index 7ac537ca..a5841a65 100644 --- a/src/SMAPI.Mods.SaveBackup/manifest.json +++ b/src/SMAPI.Mods.SaveBackup/manifest.json @@ -1,9 +1,9 @@ { "Name": "Save Backup", "Author": "SMAPI", - "Version": "2.10.2", + "Version": "2.11.0", "Description": "Automatically backs up all your saves once per day into its folder.", "UniqueID": "SMAPI.SaveBackup", "EntryDll": "SaveBackup.dll", - "MinimumApiVersion": "2.10.2" + "MinimumApiVersion": "2.11.0" } diff --git a/src/SMAPI/Constants.cs b/src/SMAPI/Constants.cs index 51c15269..38e3e3db 100644 --- a/src/SMAPI/Constants.cs +++ b/src/SMAPI/Constants.cs @@ -20,13 +20,13 @@ namespace StardewModdingAPI ** Public ****/ /// SMAPI's current semantic version. - public static ISemanticVersion ApiVersion { get; } = new Toolkit.SemanticVersion("2.10.2"); + public static ISemanticVersion ApiVersion { get; } = new Toolkit.SemanticVersion("2.11.0-beta"); /// The minimum supported version of Stardew Valley. - public static ISemanticVersion MinimumGameVersion { get; } = new GameVersion("1.3.32"); + public static ISemanticVersion MinimumGameVersion { get; } = new GameVersion("1.3.35"); /// The maximum supported version of Stardew Valley. - public static ISemanticVersion MaximumGameVersion { get; } = new GameVersion("1.3.33"); + public static ISemanticVersion MaximumGameVersion { get; } = null; /// The target game platform. public static GamePlatform TargetPlatform => (GamePlatform)Constants.Platform; From 4221ad3668c59b1c0232bf351ec068212d56d392 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 25 Jan 2019 03:09:09 -0500 Subject: [PATCH 02/14] reorganise compatibility list, remove ancient entries --- .../wwwroot/StardewModdingAPI.metadata.json | 331 +++++++----------- 1 file changed, 131 insertions(+), 200 deletions(-) diff --git a/src/SMAPI.Web/wwwroot/StardewModdingAPI.metadata.json b/src/SMAPI.Web/wwwroot/StardewModdingAPI.metadata.json index 45a4959d..818ff9fe 100644 --- a/src/SMAPI.Web/wwwroot/StardewModdingAPI.metadata.json +++ b/src/SMAPI.Web/wwwroot/StardewModdingAPI.metadata.json @@ -115,22 +115,9 @@ "Default | UpdateKey": "Nexus:1820" }, - /********* - ** Content packs - *********/ - "Canon-Friendly Dialogue Expansion": { - "ID": "gizzymo.canonfriendlyexpansion", - "~1.1.1 | Status": "AssumeBroken" // causes a save crash on certain dates - }, - - "Everytime Submarine": { - "ID": "MustafaDemirel.EverytimeSubmarine", - "~1.0.0 | Status": "AssumeBroken" // breaks player saves if their beach bridge is fixed - }, - /********* - ** Mods + ** Map versions *********/ "Adjust Artisan Prices": { "ID": "ThatNorthernMonkey.AdjustArtisanPrices", @@ -146,28 +133,6 @@ } }, - "Always Scroll Map": { - "ID": "bcmpinc.AlwaysScrollMap", - "~0.6 | Status": "AssumeBroken" // breaks newer versions of bcmpinc mods (per bcmpinc's request) - }, - - "Animal Mood Fix": { - "ID": "GPeters-AnimalMoodFix", - "~ | Status": "Obsolete", - "~ | StatusReasonPhrase": "the animal mood bugs were fixed in Stardew Valley 1.2." - }, - - "Arcade Pong": { - "ID": "Platonymous.ArcadePong", - "~1.0.2 | Status": "AssumeBroken" // broke in SMAPI 2.6-beta.16 due to reflection into SMAPI internals - }, - - "Automated Doors": { - "ID": "azah.automated-doors", - "FormerIDs": "1abcfa07-2cf4-4dc3-a6e9-6068b642112b", // changed in 1.4.1 - "Default | UpdateKey": "GitHub:azah/AutomatedDoors" // added in 1.4.2 - }, - "Basic Sprinklers Improved": { "ID": "lrsk_sdvm_bsi.0117171308", "MapRemoteVersions": { "1.0.2": "1.0.1-release" } // manifest not updated @@ -184,11 +149,6 @@ "MapRemoteVersions": { "1.3.1": "1.3" } // manifest not updated }, - "BJS Night Sounds": { - "ID": "BunnyJumps.BJSNightSounds", - "~1.0.0 | Status": "AssumeBroken" // runtime errors with Harmony 1.2.0.1 in SMAPI 2.8+ - }, - "Casks Anywhere": { "ID": "CasksAnywhere", "MapLocalVersions": { "1.1-alpha": "1.1" } @@ -199,43 +159,21 @@ "MapLocalVersions": { "1.3-1": "1.3" } }, - "Chest Pooling": { - "ID": "mralbobo.ChestPooling", - "Default | UpdateKey": "GitHub:mralbobo/stardew-chest-pooling" - }, - "Cobalt": { "ID": "spacechase0.Cobalt", "MapRemoteVersions": { "1.1.3": "1.1.2" } // not updated in manifest }, - "Colored Chests": { - "ID": "4befde5c-731c-4853-8e4b-c5cdf946805f", - "~ | Status": "Obsolete", - "~ | StatusReasonPhrase": "colored chests were added in Stardew Valley 1.1." - }, - "Configurable Machines": { "ID": "21da6619-dc03-4660-9794-8e5b498f5b97", "MapLocalVersions": { "1.2-beta": "1.2" } }, - "Craft Counter": { - "ID": "bcmpinc.CraftCounter", - "~0.6 | Status": "AssumeBroken" // breaks newer versions of bcmpinc mods (per bcmpinc's request) - }, - "Crafting Counter": { "ID": "lolpcgaming.CraftingCounter", "MapRemoteVersions": { "1.1": "1.0" } // not updated in manifest }, - "Custom Farming Automate Bridge": { - "ID": "Platonymous.CFAutomate", - "~1.0.1 | Status": "AssumeBroken", // no longer compatible with Automate - "~1.0.1 | AlternativeUrl": "https://www.nexusmods.com/stardewvalley/mods/991" - }, - "Customizable Cart Redux": { "ID": "KoihimeNakamura.CCR", "MapLocalVersions": { "1.1-20170917": "1.1" } @@ -256,14 +194,138 @@ "MapLocalVersions": { "1.1": "1.1.1" } }, - "Enemy Health Bars": { - "ID": "Speeder.HealthBars", - "FormerIDs": "SPDHealthBar" // changed in 1.7.1-pathoschild-update + "Hunger Mod (skn)": { + "ID": "skn.HungerMod", + "MapRemoteVersions": { "1.2.1": "1.0" } // manifest not updated }, - "Fall 28 Snow Day": { - "ID": "Omegasis.Fall28SnowDay", - "~1.4.1 | Status": "AssumeBroken" // broke in SMAPI 2.0, and update for SMAPI 2.0 doesn't do anything + "Idle Pause": { + "ID": "Veleek.IdlePause", + "MapRemoteVersions": { "1.2": "1.1" } // manifest not updated + }, + + "Item Auto Stacker": { + "ID": "cat.autostacker", + "MapRemoteVersions": { "1.0.1": "1.0" } // manifest not updated + }, + + "Move Faster": { + "ID": "shuaiz.MoveFasterMod", + "~1.0.1 | Status": "AssumeBroken" // doesn't do anything as of SDV 1.2.33 (bad Harmony patch?) + }, + + "Multiple Sprites and Portraits On Rotation (File Loading)": { + "ID": "FileLoading", + "MapLocalVersions": { "1.1": "1.12" } + }, + + "Night Owl": { + "ID": "Omegasis.NightOwl", + "MapLocalVersions": { "2.1": "1.3" } // 1.3 had wrong version in manifest + }, + + "Point-and-Plant": { + "ID": "jwdred.PointAndPlant", + "MapRemoteVersions": { "1.0.3": "1.0.2" } // manifest not updated + }, + + "Relationship Status": { + "ID": "relationshipstatus", + "MapRemoteVersions": { "1.0.5": "1.0.4" } // not updated in manifest + }, + + "ReRegeneration": { + "ID": "lrsk_sdvm_rerg.0925160827", + "MapLocalVersions": { "1.1.2-release": "1.1.2" } + }, + + "Shop Expander": { + "ID": "Entoarox.ShopExpander", + "FormerIDs": "EntoaroxShopExpander", // changed in 1.5.2 + "MapRemoteVersions": { "1.6.0b": "1.6.0" } + }, + + "Showcase Mod": { + "ID": "Igorious.Showcase", + "MapLocalVersions": { "0.9-500": "0.9" } + }, + + "Siv's Marriage Mod": { + "ID": "6266959802", // official version + "FormerIDs": "Siv.MarriageMod | medoli900.Siv's Marriage Mod", // 1.2.3-unofficial versions + "MapLocalVersions": { "0.0": "1.4" } + }, + + "Solar Eclipse Event": { + "ID": "KoihimeNakamura.SolarEclipseEvent", + "MapLocalVersions": { "1.3.1-20180131": "1.3.1" } + }, + + "Time Reminder": { + "ID": "KoihimeNakamura.TimeReminder", + "MapLocalVersions": { "1.0-20170314": "1.0.2" } + }, + + + /********* + ** Obsolete + *********/ + "Animal Mood Fix": { + "ID": "GPeters-AnimalMoodFix", + "~ | Status": "Obsolete", + "~ | StatusReasonPhrase": "the animal mood bugs were fixed in Stardew Valley 1.2." + }, + + "Colored Chests": { + "ID": "4befde5c-731c-4853-8e4b-c5cdf946805f", + "~ | Status": "Obsolete", + "~ | StatusReasonPhrase": "colored chests were added in Stardew Valley 1.1." + }, + + "Modder Serialization Utility": { + "ID": "SerializerUtils-0-1", + "~ | Status": "Obsolete", + "~ | StatusReasonPhrase": "it's no longer maintained or used." + }, + + "No Debug Mode": { + "ID": "NoDebugMode", + "~ | Status": "Obsolete", + "~ | StatusReasonPhrase": "debug mode was removed in SMAPI 1.0." + }, + + + /********* + ** Broke circa SDV 1.3 + *********/ + "Canon-Friendly Dialogue Expansion": { + "ID": "gizzymo.canonfriendlyexpansion", + "~1.1.1 | Status": "AssumeBroken" // causes a save crash on certain dates + }, + + "Everytime Submarine": { + "ID": "MustafaDemirel.EverytimeSubmarine", + "~1.0.0 | Status": "AssumeBroken" // breaks player saves if their beach bridge is fixed + }, + + "Always Scroll Map": { + "ID": "bcmpinc.AlwaysScrollMap", + "~0.6 | Status": "AssumeBroken" // breaks newer versions of bcmpinc mods (per bcmpinc's request) + }, + + "Arcade Pong": { + "ID": "Platonymous.ArcadePong", + "~1.0.2 | Status": "AssumeBroken" // broke in SMAPI 2.6-beta.16 due to reflection into SMAPI internals + }, + + "BJS Night Sounds": { + "ID": "BunnyJumps.BJSNightSounds", + "~1.0.0 | Status": "AssumeBroken" // runtime errors with Harmony 1.2.0.1 in SMAPI 2.8+ + }, + + "Craft Counter": { + "ID": "bcmpinc.CraftCounter", + "~0.6 | Status": "AssumeBroken" // breaks newer versions of bcmpinc mods (per bcmpinc's request) }, "Fishing Adjust": { @@ -286,131 +348,31 @@ "~0.3 | Status": "AssumeBroken" // broke in 1.3: Exception from HarmonyInstance "bcmpinc.FixScytheExp" [...] Bad label content in ILGenerator. }, - "Gate Opener": { - "ID": "mralbobo.GateOpener", - "Default | UpdateKey": "GitHub:mralbobo/stardew-gate-opener" - }, - "Grass Growth": { "ID": "bcmpinc.GrassGrowth", "~0.6 | Status": "AssumeBroken" // breaks newer versions of bcmpinc mods (per bcmpinc's request) }, - "Hunger Mod (skn)": { - "ID": "skn.HungerMod", - "MapRemoteVersions": { "1.2.1": "1.0" } // manifest not updated - }, - - "Idle Pause": { - "ID": "Veleek.IdlePause", - "MapRemoteVersions": { "1.2": "1.1" } // manifest not updated - }, - - "Item Auto Stacker": { - "ID": "cat.autostacker", - "MapRemoteVersions": { "1.0.1": "1.0" } // manifest not updated - }, - - "Modder Serialization Utility": { - "ID": "SerializerUtils-0-1", - "~ | Status": "Obsolete", - "~ | StatusReasonPhrase": "it's no longer maintained or used." - }, - - "More Rain": { - "ID": "Omegasis.MoreRain", - "~1.4 | Status": "AssumeBroken" // broke in SMAPI 2.0 - }, - "More Silo Storage": { "ID": "OrneryWalrus.MoreSiloStorage", "~1.0.1 | Status": "AssumeBroken" // broke in SDV 1.3 }, - "Move Faster": { - "ID": "shuaiz.MoveFasterMod", - "~1.0.1 | Status": "AssumeBroken" // doesn't do anything as of SDV 1.2.33 (bad Harmony patch?) - }, - "Movement Speed": { "ID": "bcmpinc.MovementSpeed", "~0.6 | Status": "AssumeBroken" // breaks newer versions of bcmpinc mods (per bcmpinc's request) }, - "Multiple Sprites and Portraits On Rotation (File Loading)": { - "ID": "FileLoading", - "MapLocalVersions": { "1.1": "1.12" } - }, - - "Night Owl": { - "ID": "Omegasis.NightOwl", - "MapLocalVersions": { "2.1": "1.3" } // 1.3 had wrong version in manifest - }, - "No Added Flying Mine Monsters": { "ID": "Drynwynn.NoAddedFlyingMineMonsters", "~1.1 | Status": "AssumeBroken" // runtime errors with Harmony 1.2.0.1 in SMAPI 2.8+ }, - "No Debug Mode": { - "ID": "NoDebugMode", - "~ | Status": "Obsolete", - "~ | StatusReasonPhrase": "debug mode was removed in SMAPI 1.0." - }, - - "OmniFarm": { - "ID": "PhthaloBlue.OmniFarm", - "FormerIDs": "BlueMod_OmniFarm", // changed in 2.0.2-pathoschild-update - "Default | UpdateKey": "GitHub:lambui/StardewValleyMod_OmniFarm" - }, - - "Point-and-Plant": { - "ID": "jwdred.PointAndPlant", - "MapRemoteVersions": { "1.0.3": "1.0.2" } // manifest not updated - }, - - "Prairie King Made Easy": { - "ID": "Mucchan.PrairieKingMadeEasy", - "~1.0 | Status": "AssumeBroken" // broke in SDV 1.2 - }, - - "Relationship Status": { - "ID": "relationshipstatus", - "MapRemoteVersions": { "1.0.5": "1.0.4" } // not updated in manifest - }, - - "ReRegeneration": { - "ID": "lrsk_sdvm_rerg.0925160827", - "MapLocalVersions": { "1.1.2-release": "1.1.2" } - }, - - "Save Backup": { - "ID": "Omegasis.SaveBackup", - "~1.2 | Status": "AssumeBroken" // broke in SMAPI 2.0 - }, - "Server Bookmarker": { "ID": "Ilyaki.ServerBookmarker", "~1.0.0 | Status": "AssumeBroken" // broke in Stardew Valley 1.3.29 (runtime errors) }, - "Shop Expander": { - "ID": "Entoarox.ShopExpander", - "FormerIDs": "EntoaroxShopExpander", // changed in 1.5.2 - "MapRemoteVersions": { "1.6.0b": "1.6.0" } - }, - - "Showcase Mod": { - "ID": "Igorious.Showcase", - "MapLocalVersions": { "0.9-500": "0.9" } - }, - - "Siv's Marriage Mod": { - "ID": "6266959802", // official version - "FormerIDs": "Siv.MarriageMod | medoli900.Siv's Marriage Mod", // 1.2.3-unofficial versions - "MapLocalVersions": { "0.0": "1.4" } - }, - "Skill Prestige: Cooking Adapter": { "ID": "Alphablackwolf.CookingSkillPrestigeAdapter", "FormerIDs": "20d6b8a3-b6e7-460b-a6e4-07c2b0cb6c63", // changed circa 1.1 @@ -423,11 +385,6 @@ "1.3-beta | Status": "AssumeBroken" // doesn't work in multiplayer, no longer maintained }, - "Solar Eclipse Event": { - "ID": "KoihimeNakamura.SolarEclipseEvent", - "MapLocalVersions": { "1.3.1-20180131": "1.3.1" } - }, - "Split Screen": { "ID": "Ilyaki.SplitScreen", "~3.0.1 | Status": "AssumeBroken" // broke in SMAPI 2.6-beta.16 due to reflection into SMAPI internals @@ -438,11 +395,6 @@ "~0.6 | Status": "AssumeBroken" // breaks newer versions of bcmpinc mods (per bcmpinc's request) }, - "Stardew Notification": { - "ID": "stardewnotification", - "Default | UpdateKey": "GitHub:monopandora/StardewNotification" - }, - "Stephan's Lots of Crops": { "ID": "stephansstardewcrops", "MapRemoteVersions": { "1.41": "1.1" }, // manifest not updated @@ -460,35 +412,14 @@ "~0.6 | Status": "AssumeBroken" // breaks newer versions of bcmpinc mods (per bcmpinc's request) }, - "Time Reminder": { - "ID": "KoihimeNakamura.TimeReminder", - "MapLocalVersions": { "1.0-20170314": "1.0.2" } - }, - - "Tool Charging": { - "ID": "mralbobo.ToolCharging", - "Default | UpdateKey": "GitHub:mralbobo/stardew-tool-charging" - }, - "Tree Spread": { "ID": "bcmpinc.TreeSpread", "~0.6 | Status": "AssumeBroken" // breaks newer versions of bcmpinc mods (per bcmpinc's request) }, - "Variable Grass": { - "ID": "dantheman999.VariableGrass", - "Default | UpdateKey": "GitHub:dantheman999301/StardewMods" - }, - "Yet Another Harvest With Scythe Mod": { "ID": "bcmpinc.HarvestWithScythe", "~0.6 | Status": "AssumeBroken" // breaks newer versions of bcmpinc mods (per bcmpinc's request) - }, - - "Zoom Out Extreme": { - "ID": "RockinMods.ZoomMod", - "FormerIDs": "ZoomMod", // changed circa 1.2.1 - "~0.1 | Status": "AssumeBroken" // broke in SDV 1.2 } } } From 975ffe52e667cb4f1ed690cbf784fe9eae403326 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 25 Jan 2019 12:55:07 -0500 Subject: [PATCH 03/14] fix bundled mods not working in beta release --- src/SMAPI.Mods.ConsoleCommands/manifest.json | 4 ++-- src/SMAPI.Mods.SaveBackup/manifest.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/SMAPI.Mods.ConsoleCommands/manifest.json b/src/SMAPI.Mods.ConsoleCommands/manifest.json index afefd733..2e4ec9cc 100644 --- a/src/SMAPI.Mods.ConsoleCommands/manifest.json +++ b/src/SMAPI.Mods.ConsoleCommands/manifest.json @@ -1,9 +1,9 @@ { "Name": "Console Commands", "Author": "SMAPI", - "Version": "2.11.0", + "Version": "2.11.0-beta", "Description": "Adds SMAPI console commands that let you manipulate the game.", "UniqueID": "SMAPI.ConsoleCommands", "EntryDll": "ConsoleCommands.dll", - "MinimumApiVersion": "2.11.0" + "MinimumApiVersion": "2.11.0-beta" } diff --git a/src/SMAPI.Mods.SaveBackup/manifest.json b/src/SMAPI.Mods.SaveBackup/manifest.json index a5841a65..d21bcb5b 100644 --- a/src/SMAPI.Mods.SaveBackup/manifest.json +++ b/src/SMAPI.Mods.SaveBackup/manifest.json @@ -1,9 +1,9 @@ { "Name": "Save Backup", "Author": "SMAPI", - "Version": "2.11.0", + "Version": "2.11.0-beta", "Description": "Automatically backs up all your saves once per day into its folder.", "UniqueID": "SMAPI.SaveBackup", "EntryDll": "SaveBackup.dll", - "MinimumApiVersion": "2.11.0" + "MinimumApiVersion": "2.11.0-beta" } From f5d1bd8984a423bf5949040416035f23a73e13dc Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 8 Feb 2019 21:37:35 -0500 Subject: [PATCH 04/14] prepare for 2.11-beta.2 release --- src/SMAPI.Mods.ConsoleCommands/manifest.json | 4 ++-- src/SMAPI.Mods.SaveBackup/manifest.json | 4 ++-- src/SMAPI/Constants.cs | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/SMAPI.Mods.ConsoleCommands/manifest.json b/src/SMAPI.Mods.ConsoleCommands/manifest.json index 2e4ec9cc..c3ecf242 100644 --- a/src/SMAPI.Mods.ConsoleCommands/manifest.json +++ b/src/SMAPI.Mods.ConsoleCommands/manifest.json @@ -1,9 +1,9 @@ { "Name": "Console Commands", "Author": "SMAPI", - "Version": "2.11.0-beta", + "Version": "2.11.0-beta.2", "Description": "Adds SMAPI console commands that let you manipulate the game.", "UniqueID": "SMAPI.ConsoleCommands", "EntryDll": "ConsoleCommands.dll", - "MinimumApiVersion": "2.11.0-beta" + "MinimumApiVersion": "2.11.0-beta.2" } diff --git a/src/SMAPI.Mods.SaveBackup/manifest.json b/src/SMAPI.Mods.SaveBackup/manifest.json index d21bcb5b..b91986f2 100644 --- a/src/SMAPI.Mods.SaveBackup/manifest.json +++ b/src/SMAPI.Mods.SaveBackup/manifest.json @@ -1,9 +1,9 @@ { "Name": "Save Backup", "Author": "SMAPI", - "Version": "2.11.0-beta", + "Version": "2.11.0-beta.2", "Description": "Automatically backs up all your saves once per day into its folder.", "UniqueID": "SMAPI.SaveBackup", "EntryDll": "SaveBackup.dll", - "MinimumApiVersion": "2.11.0-beta" + "MinimumApiVersion": "2.11.0-beta.2" } diff --git a/src/SMAPI/Constants.cs b/src/SMAPI/Constants.cs index 38e3e3db..e0684bf4 100644 --- a/src/SMAPI/Constants.cs +++ b/src/SMAPI/Constants.cs @@ -20,7 +20,7 @@ namespace StardewModdingAPI ** Public ****/ /// SMAPI's current semantic version. - public static ISemanticVersion ApiVersion { get; } = new Toolkit.SemanticVersion("2.11.0-beta"); + public static ISemanticVersion ApiVersion { get; } = new Toolkit.SemanticVersion("2.11.0-beta.2"); /// The minimum supported version of Stardew Valley. public static ISemanticVersion MinimumGameVersion { get; } = new GameVersion("1.3.35"); From 4baad0ec8d568217aa2708afc15ba9672b0a2daf Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sat, 9 Feb 2019 15:20:35 -0500 Subject: [PATCH 05/14] cross out mod links on compat page if outdated to prevent confusion --- docs/release-notes.md | 9 +++++++-- src/SMAPI.Web/wwwroot/Content/css/mods.css | 10 ++++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/docs/release-notes.md b/docs/release-notes.md index d61c7990..a4a037e8 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -1,10 +1,15 @@ # Release notes ## 2.11-beta +Currently in beta for Stardew Valley 1.3.35-beta only. **Not compatible with non-beta versions of the game.** + * For players: - * Updated for Stardew Valley 1.3.35 beta. **Not compatible with non-beta versions of the game.** + * Updated for Stardew Valley 1.3.35 beta. + +* For the web UI: + * Mod compatibility page now crosses out mod links if they're outdated to prevent confusion. ## 2.10.2 -Released 08 January 2019 for Stardew Valley 1.3.32–33. +Released 09 January 2019 for Stardew Valley 1.3.32–33. * For players: * SMAPI now keeps the first save backup created for the day, instead of the last one. diff --git a/src/SMAPI.Web/wwwroot/Content/css/mods.css b/src/SMAPI.Web/wwwroot/Content/css/mods.css index 730bfc2e..f42800da 100644 --- a/src/SMAPI.Web/wwwroot/Content/css/mods.css +++ b/src/SMAPI.Web/wwwroot/Content/css/mods.css @@ -128,8 +128,10 @@ table.wikitable > caption { opacity: 0.7; } -#mod-list .mod-closed-source { - color: red; - font-size: 0.8em; - opacity: 0.5; +#mod-list tr[data-status="abandoned"] .mod-page-links, +#mod-list tr[data-status="broken"] .mod-page-links, +#mod-list tr[data-status="obsolete"] .mod-page-links, +#mod-list tr[data-status="unofficial"] .mod-page-links, +#mod-list tr[data-status="workaround"] .mod-page-links { + text-decoration: line-through; } From a23261106ea454ab2e264007f27ca11ddbb7e44b Mon Sep 17 00:00:00 2001 From: danvolchek Date: Sun, 17 Feb 2019 20:39:36 -0600 Subject: [PATCH 06/14] add update info in suggested fixes section --- .../Framework/LogParsing/LogParser.cs | 49 +++++++++++++-- .../Models/{ModInfo.cs => LogModInfo.cs} | 12 ++++ src/SMAPI.Web/Views/LogParser/Index.cshtml | 61 +++++++++++++++++-- .../wwwroot/Content/css/log-parser.css | 33 +++++++--- 4 files changed, 138 insertions(+), 17 deletions(-) rename src/SMAPI.Web/Framework/LogParsing/Models/{ModInfo.cs => LogModInfo.cs} (64%) diff --git a/src/SMAPI.Web/Framework/LogParsing/LogParser.cs b/src/SMAPI.Web/Framework/LogParsing/LogParser.cs index 6f848469..5cdc501f 100644 --- a/src/SMAPI.Web/Framework/LogParsing/LogParser.cs +++ b/src/SMAPI.Web/Framework/LogParsing/LogParser.cs @@ -39,6 +39,15 @@ namespace StardewModdingAPI.Web.Framework.LogParsing /// A regex pattern matching an entry in SMAPI's content pack list. private readonly Regex ContentPackListEntryPattern = new Regex(@"^ (?.+) (?.+) by (?.+) \| for (?.+?)(?: \| (?.+))?$", RegexOptions.Compiled | RegexOptions.IgnoreCase); + /// A regex pattern matching the start of SMAPI's mod update list. + private readonly Regex ModUpdateListStartPattern = new Regex(@"^You can update \d+ mods?:$", RegexOptions.Compiled | RegexOptions.IgnoreCase); + + /// A regex pattern matching an entry in SMAPI's mod update list. + private readonly Regex ModUpdateListEntryPattern = new Regex(@"^ (?.+?) (?" + SemanticVersion.UnboundedVersionPattern + @"): (?.+)$", RegexOptions.Compiled | RegexOptions.IgnoreCase); + + /// A regex pattern matching SMAPI's update line. + private readonly Regex SMAPIUpdatePattern = new Regex(@"^You can update SMAPI to (?" + SemanticVersion.UnboundedVersionPattern + @"): (?.+)$", RegexOptions.Compiled | RegexOptions.IgnoreCase); + /********* ** Public methods @@ -69,11 +78,12 @@ namespace StardewModdingAPI.Web.Framework.LogParsing }; // parse log messages - LogModInfo smapiMod = new LogModInfo { Name = "SMAPI", Author = "Pathoschild", Description = "" }; - LogModInfo gameMod = new LogModInfo { Name = "game", Author = "", Description = "" }; + LogModInfo smapiMod = new LogModInfo { Name = "SMAPI", Author = "Pathoschild", Description = "", Loaded = true}; + LogModInfo gameMod = new LogModInfo { Name = "game", Author = "", Description = "", Loaded = true }; IDictionary mods = new Dictionary(); bool inModList = false; bool inContentPackList = false; + bool inModUpdateList = false; foreach (LogMessage message in log.Messages) { // collect stats @@ -106,6 +116,8 @@ namespace StardewModdingAPI.Web.Framework.LogParsing inModList = false; if (inContentPackList && !this.ContentPackListEntryPattern.IsMatch(message.Text)) inContentPackList = false; + if (inModUpdateList && !this.ModUpdateListEntryPattern.IsMatch(message.Text)) + inModUpdateList = false; // mod list if (!inModList && message.Level == LogLevel.Info && this.ModListStartPattern.IsMatch(message.Text)) @@ -117,7 +129,7 @@ namespace StardewModdingAPI.Web.Framework.LogParsing string version = match.Groups["version"].Value; string author = match.Groups["author"].Value; string description = match.Groups["description"].Value; - mods[name] = new LogModInfo { Name = name, Author = author, Version = version, Description = description }; + mods[name] = new LogModInfo { Name = name, Author = author, Version = version, Description = description, Loaded = true }; } // content pack list @@ -131,7 +143,36 @@ namespace StardewModdingAPI.Web.Framework.LogParsing string author = match.Groups["author"].Value; string description = match.Groups["description"].Value; string forMod = match.Groups["for"].Value; - mods[name] = new LogModInfo { Name = name, Author = author, Version = version, Description = description, ContentPackFor = forMod }; + mods[name] = new LogModInfo { Name = name, Author = author, Version = version, Description = description, ContentPackFor = forMod, Loaded = true }; + } + + // mod update list + else if (!inModUpdateList && message.Level == LogLevel.Alert && this.ModUpdateListStartPattern.IsMatch(message.Text)) + inModUpdateList = true; + else if (inModUpdateList) + { + Match match = this.ModUpdateListEntryPattern.Match(message.Text); + string name = match.Groups["name"].Value; + string version = match.Groups["version"].Value; + string link = match.Groups["link"].Value; + if (mods.ContainsKey(name)) + { + mods[name].UpdateLink = link; + mods[name].UpdateVersion = version; + } + else + { + mods[name] = new LogModInfo {Name = name, UpdateVersion = version, UpdateLink = link, Loaded = false}; + } + } + + else if(message.Level == LogLevel.Alert && this.SMAPIUpdatePattern.IsMatch(message.Text)) + { + Match match = this.SMAPIUpdatePattern.Match(message.Text); + string version = match.Groups["version"].Value; + string link = match.Groups["link"].Value; + smapiMod.UpdateVersion = version; + smapiMod.UpdateLink = link; } // platform info line diff --git a/src/SMAPI.Web/Framework/LogParsing/Models/ModInfo.cs b/src/SMAPI.Web/Framework/LogParsing/Models/LogModInfo.cs similarity index 64% rename from src/SMAPI.Web/Framework/LogParsing/Models/ModInfo.cs rename to src/SMAPI.Web/Framework/LogParsing/Models/LogModInfo.cs index 8c84ab38..067e4df4 100644 --- a/src/SMAPI.Web/Framework/LogParsing/Models/ModInfo.cs +++ b/src/SMAPI.Web/Framework/LogParsing/Models/LogModInfo.cs @@ -12,6 +12,12 @@ namespace StardewModdingAPI.Web.Framework.LogParsing.Models /// The mod author. public string Author { get; set; } + /// The update version. + public string UpdateVersion { get; set; } + + /// The update link. + public string UpdateLink { get; set; } + /// The mod version. public string Version { get; set; } @@ -23,5 +29,11 @@ namespace StardewModdingAPI.Web.Framework.LogParsing.Models /// The number of errors logged by this mod. public int Errors { get; set; } + + /// Whether the mod was loaded into the game. + public bool Loaded { get; set; } + + /// Whether the mod has an update available. + public bool HasUpdate => this.UpdateVersion != null && this.Version != this.UpdateVersion; } } diff --git a/src/SMAPI.Web/Views/LogParser/Index.cshtml b/src/SMAPI.Web/Views/LogParser/Index.cshtml index 58830d64..07b413b1 100644 --- a/src/SMAPI.Web/Views/LogParser/Index.cshtml +++ b/src/SMAPI.Web/Views/LogParser/Index.cshtml @@ -117,9 +117,60 @@ else if (Model.ParsedLog?.IsValid == true) @* parsed log *@ @if (Model.ParsedLog?.IsValid == true) { -

Log info

- + @if (Model.ParsedLog.Mods.Any(mod => mod.HasUpdate)) + { +

Suggested fixes

+ +

You have some mods that aren't fully up to date. Updating them can fix problems.

+
+ + @foreach (LogModInfo mod in Model.ParsedLog.Mods.Where(mod => (mod.HasUpdate && mod.ContentPackFor == null) || (contentPacks != null && contentPacks.TryGetValue(mod.Name, out LogModInfo[] contentPackList) && contentPackList.Any(pack => pack.HasUpdate)))) + { + + + + + } +
+ Updates Available: +
+ @mod.Name + @if (contentPacks != null && contentPacks.TryGetValue(mod.Name, out LogModInfo[] contentPackList)) + { +
+ @foreach (LogModInfo contentPack in contentPackList.Where(pack => pack.HasUpdate)) + { + + @contentPack.Name
+ } +
+ } +
+ @if (mod.HasUpdate) + { + + @(mod.Version == null ? @mod.UpdateVersion : $"{mod.Version} → {mod.UpdateVersion}") + + } + else + { + + } + + @if (contentPacks != null && contentPacks.TryGetValue(mod.Name, out contentPackList)) + { +
+ @foreach (LogModInfo contentPack in contentPackList.Where(pack => pack.HasUpdate)) + { + @contentPack.Version → @contentPack.UpdateVersion
+ } +
+ } +
+ } + +

Log info

+ @@ -138,8 +189,8 @@ else if (Model.ParsedLog?.IsValid == true)
Game info:
Stardew Valley:@Model.ParsedLog.Timestamp.UtcDateTime.ToString("yyyy-MM-dd HH:mm") UTC ({{localTimeStarted}} your time)
-
- +
+
- @foreach (var mod in Model.ParsedLog.Mods.Where(p => p.ContentPackFor == null)) + @foreach (var mod in Model.ParsedLog.Mods.Where(p => p.Loaded && p.ContentPackFor == null)) { diff --git a/src/SMAPI.Web/wwwroot/Content/css/log-parser.css b/src/SMAPI.Web/wwwroot/Content/css/log-parser.css index 2f3dd0a1..5e7ccb79 100644 --- a/src/SMAPI.Web/wwwroot/Content/css/log-parser.css +++ b/src/SMAPI.Web/wwwroot/Content/css/log-parser.css @@ -13,6 +13,13 @@ caption { #output { padding: 10px; overflow: auto; +} + +#output h2 { + margin: -10px 0 10px -10px; +} + +#output table { font-family: monospace; } @@ -43,7 +50,7 @@ table caption { /********* ** Log metadata & filters *********/ -#metadata, #mods, #filters { +.table, #filters { border-bottom: 1px dashed #888888; margin-bottom: 5px; } @@ -53,7 +60,7 @@ table caption { padding-right: 0.7em; } -table#metadata, table#mods { +.table { border: 1px solid #000000; background: #ffffff; border-radius: 5px; @@ -63,6 +70,18 @@ table#metadata, table#mods { box-shadow: 1px 1px 1px 1px #dddddd; } +.mod-entry { + height: 1.8em; +} + +.table > caption { + min-height: 1.3em; +} + +#updates { + min-width: 10em; +} + .invisible { visibility: hidden; } @@ -87,8 +106,7 @@ table#metadata, table#mods { cursor: default; } -#metadata tr, -#mods tr { +.table tr { background: #eee } @@ -114,11 +132,11 @@ table#metadata, table#mods { display: inline-block; } -#mods .mod-entry.hidden { +.table .hidden { opacity: 0.5; } -#mods .content-packs { +.table .content-packs { margin-left: 1em; font-size: 0.9em; font-style: italic; @@ -128,8 +146,7 @@ table#metadata, table#mods { padding-right: 5px; } -#metadata tr:nth-child(even), -#mods tr:nth-child(even) { +.table tr:nth-child(even) { background: #fff } From 69aea77cdb2b44d6559b86d2136ae50515ef2614 Mon Sep 17 00:00:00 2001 From: danvolchek Date: Sun, 17 Feb 2019 20:42:09 -0600 Subject: [PATCH 07/14] update release notes --- docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/release-notes.md b/docs/release-notes.md index a4a037e8..92aa6d64 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -6,6 +6,7 @@ Currently in beta for Stardew Valley 1.3.35-beta only. **Not compatible with non * Updated for Stardew Valley 1.3.35 beta. * For the web UI: + * The log parser now displays available updates in a section at the top. * Mod compatibility page now crosses out mod links if they're outdated to prevent confusion. ## 2.10.2 From f676e0fe6d04f31d1614a4f533e20e7d8d499495 Mon Sep 17 00:00:00 2001 From: danvolchek Date: Sun, 17 Feb 2019 21:14:00 -0600 Subject: [PATCH 08/14] add removed space --- src/SMAPI.Web/Views/LogParser/Index.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SMAPI.Web/Views/LogParser/Index.cshtml b/src/SMAPI.Web/Views/LogParser/Index.cshtml index 07b413b1..3c842aed 100644 --- a/src/SMAPI.Web/Views/LogParser/Index.cshtml +++ b/src/SMAPI.Web/Views/LogParser/Index.cshtml @@ -189,7 +189,7 @@ else if (Model.ParsedLog?.IsValid == true)
Installed mods: @if (!Model.ShowRaw) @@ -149,7 +200,7 @@ else if (Model.ParsedLog?.IsValid == true) hide all }
@Model.ParsedLog.Timestamp.UtcDateTime.ToString("yyyy-MM-dd HH:mm") UTC ({{localTimeStarted}} your time)
-
+
Installed mods: From bbb33c96f1cf698eee1dd398526d9ea853c2fb2f Mon Sep 17 00:00:00 2001 From: danvolchek Date: Sun, 17 Feb 2019 21:31:07 -0600 Subject: [PATCH 09/14] fix availablity caption case --- src/SMAPI.Web/Views/LogParser/Index.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SMAPI.Web/Views/LogParser/Index.cshtml b/src/SMAPI.Web/Views/LogParser/Index.cshtml index 3c842aed..bf70f2d7 100644 --- a/src/SMAPI.Web/Views/LogParser/Index.cshtml +++ b/src/SMAPI.Web/Views/LogParser/Index.cshtml @@ -125,7 +125,7 @@ else if (Model.ParsedLog?.IsValid == true)

You have some mods that aren't fully up to date. Updating them can fix problems.

@foreach (LogModInfo mod in Model.ParsedLog.Mods.Where(mod => (mod.HasUpdate && mod.ContentPackFor == null) || (contentPacks != null && contentPacks.TryGetValue(mod.Name, out LogModInfo[] contentPackList) && contentPackList.Any(pack => pack.HasUpdate)))) { From fa3fa400fff0b97cbdca267295f8fbebbab17b61 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Thu, 21 Feb 2019 20:13:05 -0500 Subject: [PATCH 10/14] minor tweaks to new log parser UI (#619) --- .../Framework/LogParsing/LogParser.cs | 8 +- src/SMAPI.Web/Views/LogParser/Index.cshtml | 89 ++++++++++--------- .../wwwroot/Content/css/log-parser.css | 8 +- 3 files changed, 52 insertions(+), 53 deletions(-) diff --git a/src/SMAPI.Web/Framework/LogParsing/LogParser.cs b/src/SMAPI.Web/Framework/LogParsing/LogParser.cs index 5cdc501f..fdc19404 100644 --- a/src/SMAPI.Web/Framework/LogParsing/LogParser.cs +++ b/src/SMAPI.Web/Framework/LogParsing/LogParser.cs @@ -78,7 +78,7 @@ namespace StardewModdingAPI.Web.Framework.LogParsing }; // parse log messages - LogModInfo smapiMod = new LogModInfo { Name = "SMAPI", Author = "Pathoschild", Description = "", Loaded = true}; + LogModInfo smapiMod = new LogModInfo { Name = "SMAPI", Author = "Pathoschild", Description = "", Loaded = true }; LogModInfo gameMod = new LogModInfo { Name = "game", Author = "", Description = "", Loaded = true }; IDictionary mods = new Dictionary(); bool inModList = false; @@ -100,11 +100,9 @@ namespace StardewModdingAPI.Web.Framework.LogParsing break; default: - { if (mods.ContainsKey(message.Mod)) mods[message.Mod].Errors++; break; - } } } @@ -162,11 +160,11 @@ namespace StardewModdingAPI.Web.Framework.LogParsing } else { - mods[name] = new LogModInfo {Name = name, UpdateVersion = version, UpdateLink = link, Loaded = false}; + mods[name] = new LogModInfo { Name = name, UpdateVersion = version, UpdateLink = link, Loaded = false }; } } - else if(message.Level == LogLevel.Alert && this.SMAPIUpdatePattern.IsMatch(message.Text)) + else if (message.Level == LogLevel.Alert && this.SMAPIUpdatePattern.IsMatch(message.Text)) { Match match = this.SMAPIUpdatePattern.Match(message.Text); string version = match.Groups["version"].Value; diff --git a/src/SMAPI.Web/Views/LogParser/Index.cshtml b/src/SMAPI.Web/Views/LogParser/Index.cshtml index bf70f2d7..21adf35b 100644 --- a/src/SMAPI.Web/Views/LogParser/Index.cshtml +++ b/src/SMAPI.Web/Views/LogParser/Index.cshtml @@ -17,10 +17,10 @@ { } - + - +
- Updates Available: + Updates available: