1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
|
# Release notes
<!--
## 2.0
See [log](https://github.com/Pathoschild/SMAPI/compare/1.9...2.0).
For mod developers:
* Added `ContentEvents.AssetLoading` event with a helper which lets you intercept the XNB content
load, and dynamically adjust or replace the content being loaded (including support for patching
images).
-->
## 1.9
See [log](https://github.com/Pathoschild/SMAPI/compare/1.8...1.9).
For players:
* Updated for Stardew Valley 1.2. Most mods are now rewritten for compatibility; some mods require an update from their authors.
* Added automatic detection of incompatible mods so they're disabled before they cause problems.
* Simplified log filename.
* Simplified error messages when a mod can't be loaded.
* Simple nested mod folders are now recognised by SMAPI (e.g. `ModName-1.0\ModName\manifest.json`).
* Improved TrainerMod command handling & feedback.
* Fixed game's debug output being shown in the console for all users.
* Fixed the game-outdated error not pausing before exit.
* Fixed installer errors for some players when deleting files.
* Fixed installer not ignoring potential game folders that don't contain a Stardew Valley exe.
* Fixed installer not recognising Linux/Mac paths starting with `~/` or containing an escaped space.
* Fixed TrainerMod letting you add invalid items which may crash the game.
* Fixed TrainerMod's `world_downminelevel` command not working.
* Fixed rare issue where mod dependencies would override SMAPI dependencies and cause unpredictable bugs.
* Fixed errors in console command handlers causing the game to crash.
For mod developers:
* Added `SaveEvents.AfterReturnToTitle`, `TimeEvents.AfterDayStarted`, and `ContentEvents.AfterLocaleChanged` events.
* Added a simpler API for console commands (see `helper.ConsoleCommands`).
* Added `GetPrivateProperty` reflection helper.
* SMAPI now writes XNA input enums (`Buttons` and `Keys`) to JSON as strings automatically, so mods no longer need to add a `StringEnumConverter` themselves for those.
* Logs now show the OS caption (like "Windows 10") instead of its internal version when available.
* Logs now always use `\r\n` to simplify crossplatform viewing.
* Fixed `SaveEvents.AfterLoad` being raised during the new-game intro before the player is initialised.
* Several obsolete APIs have been removed (see [deprecation guide](http://canimod.com/guides/updating-a-smapi-mod)),
and all _notice_-level deprecations have been increased to _info_.
* Deprecated the experimental `IConfigFile`.
For SMAPI developers:
* Added support for debugging with Visual Studio for Mac.
## 1.8
See [log](https://github.com/Pathoschild/SMAPI/compare/1.7...1.8).
For players:
* Mods no longer generate `.cache` subfolders.
* Fixed multiple issues where mods failed during assembly loading.
* Tweaked install package to reduce confusion.
For mod developers:
* The `SemanticVersion` constructor now accepts a string version.
* Increased deprecation level for `Extensions` to _pending removal_.
* **Warning:** `Assembly.GetExecutingAssembly().Location` will no longer reliably
return a valid path, because mod assemblies are loaded from memory when rewritten for
compatibility. This approach has been discouraged since SMAPI 1.3; use `helper.DirectoryPath`
instead.
For SMAPI developers:
* Rewrote assembly loading from the ground up. The new implementation...
* is much simpler;
* eliminates the `.cache` folders by loading rewritten assemblies from memory;
* ensures DLLs are loaded in leaf-to-root order (i.e. dependencies first);
* improves dependent assembly resolution;
* no longer loads DLLs if they're not referenced;
* reduces log verbosity.
## 1.7
See [log](https://github.com/Pathoschild/SMAPI/compare/1.6...1.7).
For players:
* The console now shows the folder path where mods should be added.
* The console now shows deprecation warnings after the list of loaded mods (instead of intermingled).
For mod developers:
* Added a mod registry which provides metadata about loaded mods.
* The `Entry(…)` method is now deferred until all mods are loaded.
* Fixed `SaveEvents.BeforeSave` and `.AfterSave` not triggering on days when the player shipped something.
* Fixed `PlayerEvents.LoadedGame` and `SaveEvents.AfterLoad` being fired before the world finishes initialising.
* Fixed some `LocationEvents`, `PlayerEvents`, and `TimeEvents` being fired during game startup.
* Increased deprecation levels for `SObject`, `LogWriter` (not `Log`), and `Mod.Entry(ModHelper)` (not `Mod.Entry(IModHelper)`) to _pending removal_. Increased deprecation levels for `Mod.PerSaveConfigFolder`, `Mod.PerSaveConfigPath`, and `Version.VersionString` to _info_.
## 1.6
See [log](https://github.com/Pathoschild/SMAPI/compare/1.5...1.6).
For players:
* Added console commands to open the game/data folders.
* Updated list of incompatible mods.
* Fixed `config.json` values being duplicated in some cases.
* Fixed some Linux users not being able to launch SMAPI from Steam.
* Fixed the installer not finding custom install paths on 32-bit Windows.
* Fixed error when loading a mod which was released with a `.cache` folder for a different platform.
* Fixed error when the console doesn't support colour.
* Fixed error when a mod reads a custom JSON file from a directory that doesn't exist.
For mod developers:
* Added three events: `SaveEvents.BeforeSave`, `SaveEvents.AfterSave`, and `SaveEvents.AfterLoad`.
* Deprecated three events:
* `TimeEvents.OnNewDay` is unreliable; use `TimeEvents.DayOfMonthChanged` or `SaveEvents` instead.
* `PlayerEvents.LoadedGame` is replaced by `SaveEvents.AfterLoad`.
* `PlayerEvents.FarmerChanged` serves no purpose.
For SMAPI developers:
* Added support for specifying a lower bound in mod incompatibility data.
* Added support for custom incompatible-mod error text.
* Fixed issue where `TrainerMod` used older logic to detect the game path.
## 1.5
See [log](https://github.com/Pathoschild/SMAPI/compare/1.4...1.5).
For players:
* Added an option to disable update checks.
* SMAPI will now show a friendly error with update links when you try to use a known incompatible mod version.
* Fixed an error when a mod uses the new reflection API on a missing field or method.
* Fixed an issue where mods weren't notified of a menu change if it changed while SMAPI was still notifying mods of the previous change.
For developers:
* Deprecated `Version` in favour of `SemanticVersion`.
_This new implementation is [semver 2.0](http://semver.org/)-compliant, introduces `NewerThan(version)` and `OlderThan(version)` convenience methods, adds support for parsing a version string into a `SemanticVersion`, and fixes various bugs with the former implementation. This also replaces `Manifest` with `IManifest`._
* Increased deprecation levels for `SObject`, `Extensions`, `LogWriter` (not `Log`), `SPlayer`, and `Mod.Entry(ModHelper)` (not `Mod.Entry(IModHelper)`).
## 1.4
See [log](https://github.com/Pathoschild/SMAPI/compare/1.3...1.4).
For players:
* SMAPI will now prevent mods from crashing your game with menu errors.
* The installer will now automatically detect most custom install paths.
* The installer will now automatically clean up old SMAPI files.
* Each mod now has its own `.cache` folder, so removing the mod won't leave orphaned cache files behind.
* Improved installer wording to reduce confusion.
* Fixed the installer not removing TrainerMod from appdata if it's already in the game mods directory.
* Fixed the installer not moving mods out of appdata if the game isn't installed on the same Windows partition.
* Fixed the SMAPI console not being shown on Linux and Mac.
For developers:
* Added a reflection API (via `helper.Reflection`) that simplifies robust access to the game's private fields and methods.
* Added a searchable `list_items` console command to replace the `out_items`, `out_melee`, and `out_rings` commands.
* Added `TypeLoadException` details when intercepted by SMAPI.
* Fixed an issue where you couldn't debug into an assembly because it was copied into the `.cache` directory. That will now only happen if necessary.
## 1.3
See [log](https://github.com/Pathoschild/SMAPI/compare/1.2...1.3).
For players:
* You can now run most mods on any platform (e.g. run Windows mods on Linux/Mac).
* Fixed the normal uninstaller not removing files added by the 'SMAPI for developers' installer.
## 1.2
See [log](https://github.com/Pathoschild/SMAPI/compare/1.1.1...1.2).
For players:
* Fixed compatibility with some older mods.
* Fixed mod errors in most event handlers crashing the game.
* Fixed mod errors in some event handlers preventing other mods from receiving the same event.
* Fixed game crashing on startup with an audio error for some players.
For developers:
* Improved logging to show `ReflectionTypeLoadException` details when it's caught by SMAPI.
## 1.1
See [log](https://github.com/Pathoschild/SMAPI/compare/1.0...1.1.1).
For players:
* Fixed console exiting immediately when some exceptions occur.
* Fixed an error in 1.0 when mod uses `config.json` but the file doesn't exist.
* Fixed critical errors being saved to a separate log file.
* Fixed compatibility with some older mods.<sup>1.1.1</sup>
* Fixed race condition where some mods would sometimes crash because the game wasn't ready yet.<sup>1.1.1</sup>
For developers:
* Added new logging interface:
* easier to use;
* supports trace logs (written to the log file, but hidden in the console by default);
* messages are now listed in order;
* messages now show which mod logged them;
* more consistent and intuitive console color scheme.
* Added optional `MinimumApiVersion` to `manifest.json`.
* Added emergency interrupt feature for dangerous mods.
* Fixed deprecation warnings being repeated if the mod can't be identified.<sup>1.1.1</sup>
## 1.0
See [log](https://github.com/Pathoschild/SMAPI/compare/0.40.1.1-3...1.0).
For players:
* Added support for Linux and Mac.
* Added installer to automate adding & removing SMAPI.
* Added background update check on launch.
* Fixed missing `steam_appid.txt` file.
* Fixed some mod UIs disappearing at a non-default zoom level for some users.
* Removed undocumented support for mods in AppData folder **(breaking change)**.
* Removed `F2` debug mode.
For mod developers:
* Added deprecation warnings.
* Added OS version to log.
* Added zoom-adjusted mouse position to mouse-changed event arguments.
* Added SMAPI code documentation.
* Switched to [semantic versioning](http://semver.org).
* Fixed mod versions not shown correctly in the log.
* Fixed misspelled field in `manifest.json` schema.
* Fixed some events getting wrong data.
* Simplified log output.
For SMAPI developers:
* Simplified compiling from source.
* Formalised release process and added automated build packaging.
* Removed obsolete and unfinished code.
* Internal cleanup & refactoring.
## 0.x
* 0.40.1.1 (2016-09-30, [log](https://github.com/Pathoschild/SMAPI/compare/0.40.0...0.40.1.1-3))
* Added support for Stardew Valley 1.1.
* 0.40.0 (2016-04-05, [log](https://github.com/Pathoschild/SMAPI/compare/0.39.7...0.40.0))
* Fixed an error that ocurred during minigames.
* 0.39.7 (2016-04-04, [log](https://github.com/Pathoschild/SMAPI/compare/0.39.6...0.39.7))
* Added 'no check' graphics events that are triggered regardless of game's if checks.
* 0.39.6 (2016-04-01, [log](https://github.com/Pathoschild/SMAPI/compare/0.39.5...0.39.6))
* Added game & SMAPI versions to log.
* Fixed conflict in graphics tick events.
* Bug fixes.
* 0.39.5 (2016-03-30, [log](https://github.com/Pathoschild/SMAPI/compare/0.39.4...0.39.5))
* 0.39.4 (2016-03-29, [log](https://github.com/Pathoschild/SMAPI/compare/0.39.3...0.39.4))
* 0.39.3 (2016-03-28, [log](https://github.com/Pathoschild/SMAPI/compare/0.39.2...0.39.3))
* 0.39.2 (2016-03-23, [log](https://github.com/Pathoschild/SMAPI/compare/0.39.1...0.39.2))
* 0.39.1 (2016-03-23, [log](https://github.com/Pathoschild/SMAPI/compare/0.38.8...0.39.1))
* 0.38.8 (2016-03-23, [log](https://github.com/Pathoschild/SMAPI/compare/0.38.7...0.38.8))
* 0.38.7 (2016-03-23, [log](https://github.com/Pathoschild/SMAPI/compare/0.38.6...0.38.7))
* 0.38.6 (2016-03-22, [log](https://github.com/Pathoschild/SMAPI/compare/0.38.5...0.38.6))
* 0.38.5 (2016-03-22, [log](https://github.com/Pathoschild/SMAPI/compare/0.38.4...0.38.5))
* 0.38.4 (2016-03-21, [log](https://github.com/Pathoschild/SMAPI/compare/0.38.3...0.38.4))
* 0.38.3 (2016-03-21, [log](https://github.com/Pathoschild/SMAPI/compare/0.38.2...0.38.3))
* 0.38.2 (2016-03-21, [log](https://github.com/Pathoschild/SMAPI/compare/0.38.0...0.38.2))
* 0.38.0 (2016-03-20, [log](https://github.com/Pathoschild/SMAPI/compare/0.38.1...0.38.0))
* 0.38.1 (2016-03-20, [log](https://github.com/Pathoschild/SMAPI/compare/0.37.3...0.38.1))
* 0.37.3 (2016-03-08, [log](https://github.com/Pathoschild/SMAPI/compare/0.37.2...0.37.3))
* 0.37.2 (2016-03-07, [log](https://github.com/Pathoschild/SMAPI/compare/0.37.1...0.37.2))
* 0.37.1 (2016-03-06, [log](https://github.com/Pathoschild/SMAPI/compare/0.36...0.37.1))
* 0.36 (2016-03-04, [log](https://github.com/Pathoschild/SMAPI/compare/0.37...0.36))
* 0.37 (2016-03-04, [log](https://github.com/Pathoschild/SMAPI/compare/0.35...0.37))
* 0.35 (2016-03-02, [log](https://github.com/Pathoschild/SMAPI/compare/0.34...0.35))
* 0.34 (2016-03-02, [log](https://github.com/Pathoschild/SMAPI/compare/0.33...0.34))
* 0.33 (2016-03-02, [log](https://github.com/Pathoschild/SMAPI/compare/0.32...0.33))
* 0.32 (2016-03-02, [log](https://github.com/Pathoschild/SMAPI/compare/0.31...0.32))
* 0.31 (2016-03-02, [log](https://github.com/Pathoschild/SMAPI/compare/0.3...0.31))
* 0.3 (2016-03-01, [log](https://github.com/Pathoschild/SMAPI/compare/Alpha0.2...0.3))
* 0.2 (2016-02-29, [log](https://github.com/Pathoschild/SMAPI/compare/Alpha0.1...Alpha0.2)
* 0.1 (2016-02-28)
|