summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2022-05-01 18:16:09 -0400
committerJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2022-05-01 18:16:09 -0400
commitc8ad50dad1d706a1901798f9396f6becfea36c0e (patch)
tree28bd818a5db39ec5ece1bd141a28de955950463b /docs
parent451b70953ff4c0b1b27ae0de203ad99379b45b2a (diff)
parentf78093bdb58d477b400cde3f19b70ffd6ddf833d (diff)
downloadSMAPI-c8ad50dad1d706a1901798f9396f6becfea36c0e.tar.gz
SMAPI-c8ad50dad1d706a1901798f9396f6becfea36c0e.tar.bz2
SMAPI-c8ad50dad1d706a1901798f9396f6becfea36c0e.zip
Merge branch 'develop' into stable
Diffstat (limited to 'docs')
-rw-r--r--docs/release-notes.md71
-rw-r--r--docs/technical/mod-package.md6
-rw-r--r--docs/technical/smapi.md41
3 files changed, 98 insertions, 20 deletions
diff --git a/docs/release-notes.md b/docs/release-notes.md
index 05ab58a3..499c1d9b 100644
--- a/docs/release-notes.md
+++ b/docs/release-notes.md
@@ -1,6 +1,75 @@
← [README](README.md)
# Release notes
+## 3.14.0
+Released 01 May 2022 for Stardew Valley 1.5.6 or later. See [release highlights](https://www.patreon.com/posts/65265507).
+
+### For players
+This is a big update, but existing mods should all work fine. If the latest version of a mod breaks in SMAPI 3.14, please report it [on the SMAPI mod page](https://www.nexusmods.com/stardewvalley/mods/2400?tab=posts).
+
+* Improvements:
+ * SMAPI now ignores dot-prefixed files when searching for mod folders (thanks to Nuztalgia!).
+ * On Linux, SMAPI now fixes many case-sensitive mod path issues automatically.
+ * On Linux/macOS, added `--use-current-shell` [command-line argument](technical/smapi.md#command-line-arguments) to avoid opening a separate terminal window.
+ * Improved performance in some cases.
+ * Improved translations. Thanks to ChulkyBow (updated Ukrainian)!
+ * Dropped update checks for the unofficial 64-bit patcher (obsolete since SMAPI 3.12.6).
+* Fixes:
+ * Fixed some movie theater textures not translated when loaded through SMAPI (specifically assets with the `_international` suffix).
+ * Fixed the warning text when a mod causes an asset load conflict with itself.
+ * Fixed `--no-terminal` [command-line argument](technical/smapi.md#command-line-arguments) on Linux/macOS still opening a terminal window, even if nothing is logged to it (thanks to Ryhon0!).
+ * Fixed `player_add` console command not handling journal scraps and secret notes correctly.
+ * Fixed `set_farm_type` console command not updating warps.
+* For the web UI:
+ * Improved log parser UI (thanks to KhloeLeclair!):
+ * Added pagination for big logs.
+ * Added search box to filter the log.
+ * Added option to show/hide content packs in the mod list.
+ * Added jump links in the sidebar.
+ * The filter options now stick to the top of the screen when scrolling.
+ * Rewrote rendering to improve performance.
+
+### For mod authors
+This is a big release that includes the new features planned for SMAPI 4.0.0.
+
+For C# mod authors: your mods should still work fine in SMAPI 3.14.0. However you should review the [migration to SMAPI 4.0](https://stardewvalleywiki.com/Modding:Migrate_to_SMAPI_4.0) guide and update your mods when possible. Deprecated code will be removed when SMAPI 4.0.0 releases later this year (no sooner than August 2022), and break any mods which haven't updated by that time. You can update affected mods now, there's no need to wait for 4.0.0.
+
+For content pack authors: SMAPI 3.14.0 and 4.0.0 don't affect content packs. They should work fine as long as
+the C# mod that loads them is updated.
+
+* Major changes:
+ * Added [content events](https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Events#Content), which will replace `IAssetEditor` and `IAssetLoader` in SMAPI 4.0.0.
+ _These include new features not supported by the old API like load conflict resolution, edit priority, and content pack labels. They also support new cases like easily detecting when an asset has changed, and avoid data corruption issues in some edge cases._
+ * Added [nullable reference type annotations](https://stardewvalleywiki.com/Modding:Migrate_to_SMAPI_4.0#Nullable_reference_type_annotations) for all APIs.
+ * Added [`helper.GameContent` and `helper.ModContent`](https://stardewvalleywiki.com/Modding:Migrate_to_SMAPI_4.0#Content_loading_API), which will replace `helper.Content` in SMAPI 4.0.0.
+ * Improved [mod-provided API](https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Integrations#Mod-provided_APIs) proxying (thanks to Shockah!).
+ _This adds support for custom interfaces in return values or input arguments, custom enums if their values match, generic methods, and more. This is an internal change, you don't need to do anything different in your mod code._
+ * Mod files loaded through SMAPI APIs (including `helper.Content.Load`) are now case-insensitive, even on Linux.
+ * Enabled deprecation notices for all deprecated APIs. These will only be shown in `TRACE` logs for at least a month after SMAPI 3.14.0 releases.
+* Other improvements:
+ * Added `IAssetDataForImage.ExtendMap` to resize maps in asset editors.
+ * Added `IContentPack.ModContent` property to manage content pack assets.
+ * Added `Constants.ContentPath` to get the full path to the game's `Content` folder.
+ * Added `IAssetName` fields to the info received by `IAssetEditor`, `IAssetLoader`, and content event methods.
+ _This adds methods for working with asset names, parsed locales, etc._
+ * Added `helper.Content.ParseAssetName` to get an `IAssetName` for an arbitrary asset key.
+ * Added [command-line arguments](technical/smapi.md#command-line-arguments) to toggle developer mode (thanks to Tondorian!).
+ * If an asset is loaded multiple times in the same tick, `IAssetLoader.CanLoad` and `IAssetEditor.CanEdit` are now cached unless invalidated by `helper.Content.InvalidateCache`.
+ * The `ISemanticVersion` comparison methods (`CompareTo`, `IsBetween`, `IsNewerThan`, and `IsOlderThan`) now allow null values. A null version is always considered older than any non-null version per [best practices](https://docs.microsoft.com/en-us/dotnet/api/system.icomparable-1.compareto#remarks).
+ * Deprecation notices now show a shorter stack trace in most cases, so it's clearer where the deprecated code is in the mod.
+* Fixes:
+ * Fixed the `SDate` constructor being case-sensitive.
+ * Fixed support for using locale codes from custom languages in asset names (e.g. `Data/Achievements.eo-EU`).
+ * Fixed issue where suppressing `[Left|Right]Thumbstick[Down|Left]` keys would suppress the opposite direction instead.
+ * Fixed null handling in various edge cases.
+* For the web UI:
+ * Updated the JSON validator/schema for Content Patcher 1.25.0.
+ * Added `data-*` attributes to the log parser page for external tools.
+ * Fixed JSON validator showing incorrect error for update keys without a subkey.
+
+### For SMAPI contributors
+* You no longer need a Nexus API key to launch the `SMAPI.Web` project locally.
+
## 3.13.4
Released 16 January 2022 for Stardew Valley 1.5.6 or later.
@@ -56,7 +125,7 @@ Released 30 November 2021 for Stardew Valley 1.5.5 or later.
* Fixed installer failing on Windows when run from the game folder.
## 3.13.0
-Released 30 November 2021 for Stardew Valley 1.5.5 or later.
+Released 30 November 2021 for Stardew Valley 1.5.5 or later. See [release highlights](https://www.patreon.com/posts/59348226).
* For players:
* Updated for Stardew Valley 1.5.5.
diff --git a/docs/technical/mod-package.md b/docs/technical/mod-package.md
index 5e408168..c632af84 100644
--- a/docs/technical/mod-package.md
+++ b/docs/technical/mod-package.md
@@ -412,8 +412,12 @@ The NuGet package is generated automatically in `StardewModdingAPI.ModBuildConfi
when you compile it.
## Release notes
-## Upcoming release
+## 4.0.1
+Released 14 April 2022.
+
* Added detection for Xbox app game folders.
+* Fixed "_conflicts between different versions of Microsoft.Win32.Registry_" warnings in recent SMAPI versions.
+* Internal refactoring.
## 4.0.0
Released 30 November 2021.
diff --git a/docs/technical/smapi.md b/docs/technical/smapi.md
index d9aad875..44b6e49f 100644
--- a/docs/technical/smapi.md
+++ b/docs/technical/smapi.md
@@ -33,23 +33,27 @@ argument | purpose
`--uninstall` | Preselects the uninstall action, skipping the prompt asking what the user wants to do.
`--game-path "path"` | Specifies the full path to the folder containing the Stardew Valley executable, skipping automatic detection and any prompt to choose a path. If the path is not valid, the installer displays an error.
-SMAPI itself recognises two arguments **on Windows only**, but these are intended for internal use
+SMAPI itself recognises five arguments **on Windows only**, but these are intended for internal use
or testing and may change without warning. On Linux/macOS, see _environment variables_ below.
argument | purpose
-------- | -------
-`--no-terminal` | SMAPI won't write anything to the console window. (Messages will still be written to the log file.)
+`--developer-mode`<br />`--developer-mode-off` | Enable or disable features intended for mod developers. Currently this only makes `TRACE`-level messages appear in the console.
+`--no-terminal` | The SMAPI launcher won't try to open a terminal window, and SMAPI won't log anything to the console. (Messages will still be written to the log file.)
+`--use-current-shell` | The SMAPI launcher won't try to open a terminal window, but SMAPI will still log to the console. (Messages will still be written to the log file.)
`--mods-path` | The path to search for mods, if not the standard `Mods` folder. This can be a path relative to the game folder (like `--mods-path "Mods (test)"`) or an absolute path.
### Environment variables
-The above SMAPI arguments don't work on Linux/macOS due to the way the game launcher works. You can
-set temporary environment variables instead. For example:
+The above SMAPI arguments may not work on Linux/macOS due to the way the game launcher works. You
+can set temporary environment variables instead. For example:
> SMAPI_MODS_PATH="Mods (multiplayer)" /path/to/StardewValley
environment variable | purpose
-------------------- | -------
-`SMAPI_NO_TERMINAL` | Equivalent to `--no-terminal` above.
+`SMAPI_DEVELOPER_MODE` | Equivalent to `--developer-mode` and `--developer-mode-off` above. The value must be `true` or `false`.
`SMAPI_MODS_PATH` | Equivalent to `--mods-path` above.
+`SMAPI_NO_TERMINAL` | Equivalent to `--no-terminal` above.
+`SMAPI_USE_CURRENT_SHELL` | Equivalent to `--use-current-shell` above.
### Compile flags
SMAPI uses a small number of conditional compilation constants, which you can set by editing the
@@ -79,7 +83,7 @@ folder before compiling.
## Prepare a release
### On any platform
**⚠ Ideally we'd have one set of instructions for all platforms. The instructions in this section
-will produce a fully functional release for all supported platfrms, _except_ that the application
+will produce a fully functional release for all supported platforms, _except_ that the application
icon for SMAPI on Windows will disappear due to [.NET runtime bug
3828](https://github.com/dotnet/runtime/issues/3828). Until that's fixed, see the _[on
Windows](#on-windows)_ section below to create a build that retains the icon.**
@@ -116,8 +120,10 @@ Windows](#on-windows)_ section below to create a build that retains the icon.**
2. Launch the game through the Steam UI.
### Prepare the release
-1. Run `build/unix/set-smapi-version.sh` to set the SMAPI version. Make sure you use a [semantic
- version](https://semver.org). Recommended format:
+1. Run `build/unix/prepare-install-package.sh VERSION_HERE` to create the release package in the
+ root `bin` folder.
+
+ Make sure you use a [semantic version](https://semver.org). Recommended format:
build type | format | example
:--------- | :----------------------- | :------
@@ -125,9 +131,6 @@ Windows](#on-windows)_ section below to create a build that retains the icon.**
prerelease | `<version>-beta.<date>` | `4.0.0-beta.20251230`
release | `<version>` | `4.0.0`
-2. Run `build/unix/prepare-install-package.sh` to create the release package in the root `bin`
- folder.
-
### On Windows
#### First-time setup
1. Set up Windows Subsystem for Linux (WSL):
@@ -143,8 +146,10 @@ Windows](#on-windows)_ section below to create a build that retains the icon.**
```
### Prepare the release
-1. Run `build/windows/set-smapi-version.ps1` in PowerShell to set the SMAPI version. Make sure you
- use a [semantic version](https://semver.org). Recommended format:
+1. Run `build/windows/prepare-install-package.ps1 VERSION_HERE` in PowerShell to create the release
+ package folders in the root `bin` folder.
+
+ Make sure you use a [semantic version](https://semver.org). Recommended format:
build type | format | example
:--------- | :----------------------- | :------
@@ -152,17 +157,17 @@ Windows](#on-windows)_ section below to create a build that retains the icon.**
prerelease | `<version>-beta.<date>` | `4.0.0-beta.20251230`
release | `<version>` | `4.0.0`
-2. Run `build/windows/prepare-install-package.ps1` in PowerShell to create the release package
- folders in the root `bin` folder.
-
-3. Launch WSL and run this script:
+2. Launch WSL and run this script:
```bash
- # edit to match the build created in steps 1-2
+ # edit to match the build created in steps 1
# In WSL, `/mnt/c/example` accesses `C:\example` on the Windows filesystem.
version="4.0.0"
binFolder="/mnt/e/source/_Stardew/SMAPI/bin"
build/windows/finalize-install-package.sh "$version" "$binFolder"
```
+Note: to prepare a test Windows-only build, you can pass `--windows-only` in the first step and
+skip the second one.
+
## Release notes
See [release notes](../release-notes.md).