Releases: sliekens/gw2sdk
v2.0.0
Highlights
With the release of .NET 9, it's time for a major version bump.
This release marks the end of support for .NET 6 and .NET 7.
Hint: you can technically still use GW2SDK in .NET 5, 6 or 7, but you will get the
.NET Standard 2.0 assembly which has worse performance.
Upgrade to .NET 8+ to keep enjoying the best performance.
In other news, JSON serialization of Item
objects with JsonSerializer.Serialize(Item)
and JsonSerializer.Deserialize<Item>(string)
now requires zero configuration.
This change should make it easier to create a local copy of the items on disk, formatted as JSON.
(Support for other object types is considered for a future release.)
Breaking changes
Skills:
- Changed
Offhand.None
andOffhand.Nothing
to mean different things- The underlying numeric values of
Offhand
(which you should never use) have changed - See the updated documentation: https://sliekens.github.io/gw2sdk/api/GuildWars2.Hero.Offhand.html
- The underlying numeric values of
Miscellaneous:
Enum.TryFormat
will no longer be available in .NET 6 or 7- because enums don't implement ISpanFormattable in .NET Standard
New features
Items:
- Added bespoke JSON converters for
Item
objects graphs.
Miscellaneous:
- Added bespoke JSON converters for enums and
Extensible<TEnum>
- Added
Gold
,Silver
andCopper
properties toCoin
- e.g.
new Coin(12345)
now hasGold = 1
,Silver = 23
andCopper = 45
- e.g.
Bug fixes
AOT compatibility:
- Added a missing
DynamicallyAccessedMembersAttribute
to classFlags
Full Changelog: v1.4.1...v2.0.0
Previous release notes: https://github.com/sliekens/gw2sdk/releases/tag/v1.4.1
v1.4.1
Highlights
Fixed an issue where an already-disposed semaphore object might be accessed.
Bugfixes
When using break
or return
to exit an await foreach
loop, the associated CancellationToken
is not necessarily canceled, and already-started tasks continue to run after dependencies are disposed. For bulk query methods, in-flight HTTP requests may run to completion and then attempt to call Release()
on a disposed SemaphoreSlim
object, which may show up in logs as an unhandled ObjectDisposedException
. In this release, the call to Release()
is skipped when the object is already disposed.
Full Changelog: v1.4.0...v1.4.1
Previous release notes: https://github.com/sliekens/gw2sdk/releases/tag/v1.4.0
v1.4.0
Highlights
Add support for guild mission logs.
New features
Guild log:
- Added class
GuildMission
- Added enum
GuildMissionState
Full Changelog: v1.3.0...v1.4.0
Previous release notes: https://github.com/sliekens/gw2sdk/releases/tag/v1.3.0
v1.3.0
Highlights
This release changes markup colors to the color values used in the game, while also adding the ability to override the colors.
Check out the updated documentation.
New features
Markup:
- Added class
MarkupConverter
to make it easier to work withMarkupTextConverter
andMarkupHtmlConverter
- Added
MarkupColorName.DefaultColorMap
with color values picked from the game - Added an overload for
MarkupHtmlConverter.Convert
that accepts a custom color map - Improved the performance of the converters
Full Changelog: v1.2.0...v1.3.0
Previous release notes: https://github.com/sliekens/gw2sdk/releases/tag/v1.2.0
v1.2.0
This release adds functionality for converting the markup language used to format text in the game.
Highlights
Converting the Guild Wars 2 markup language to plain text or to HTML is now supported, and low level constructs are provided for adding support for other UI frameworks. Read more about it in the documentation.
The documentation site now uses the DocFX modern template since the previous template was no longer actively developed.
New features
Markup:
- Added
MarkupTextConverter
to remove all formatting from a string that contains markup - Added
MarkupHtmlConverter
to convert the markup to HTML for rendering to a web view
Guilds:
- Added
InfluenceActivityKind.DailyLogin
to guild log activities - Added workaround for guild upgrade logs where the API sometimes returns
"complete"
instead of"completed"
Full Changelog: v1.1.2...v1.2.0
Previous release notes: https://github.com/sliekens/gw2sdk/releases/tag/v1.1.2
v1.1.2
Bug fixes
Guilds:
- Made property
upgrade_id
optional forupgrade
logs
Full Changelog: v1.1.1...v1.1.2
Previous release notes: https://github.com/sliekens/gw2sdk/releases/tag/v1.1.1
v1.1.1
In this patch, the minimum version of System.Text.Json
was increased to 8.0.5 because of a vulnerability (GHSA-8g4q-xg66-9fp4).
In System.Text.Json 6.0.x and 8.0.x, applications which deserialize input to a model with an [ExtensionData] property can be vulnerable to an algorithmic complexity attack resulting in Denial of Service.
Note that GW2SDK itself does not deserialize user input, nor does it use [ExtensionData]
for deserializing API output, so it is not directly vulnerable to an attack. However, a class library should not introduce transitive dependencies with known vulnerabilities into a solution, so I am pushing this update now.
Full Changelog: v1.1.0...v1.1.1
Previous release notes: https://github.com/sliekens/gw2sdk/releases/tag/v1.1.0
v1.1.0
This release is packed with new features, adding support for new content such as WvW guilds, terrestrial spears and homesteads.
Highlights
WvW restructuring: you can now retrieve lists of participating guilds and their team assignment, timers for guild selection lockout and team assignment, as well as the player's selected WvW guild and assigned team.
Homesteads: you can now retrieve homestead decorations and glyphs, as well as the player's unlocked decorations and equipped glyphs.
Spears: terrestrial spears are now supported in build template chat links.
The guidance for adding resilience with Polly was updated to fix some errors
New features
Account:
- Added the ability to check if an account has unlocked
SecretsOfTheObscure
andJanthirWilds
Chat links:
- Added support for terrestrial spears to build template links
- Added convenience method
ItemLink.GetSkinLink
- Added convenience method
ItemLink.GetSuffixItemLink
- Added convenience method
ItemLink.GetSecondarySuffixItemLink
- Removed braces from chat links in debugger displays for easier copying
Homesteads:
- Added the ability to retrieve homestead decorations and glyphs
- Added the ability to retrieve the player's unlocked decorations (with quantities)
- Added the ability to retrieve the player's equipped homestead glyphs
WvW
- Added the ability to retrieve WvW guilds and their team assignment by server (NA or EU)
- Added the ability to retrieve timers for the next lockout and team assignment
- Added the ability to retrieve the player's selected WvW guild and assigned team
- Added the ability to create subtokens with
Wvw
permission for limiting access to this feature
Bug fixes
Guilds:
- Made property
declined_by
optional forinvite_declined
logs
Misc:
- Fixed incorrect handling of unknown enum values.
IsDefined
should no longer return true for such values andToEnum
should now returnnull
instead of the default enum value.
Full Changelog: v1.0.1...v1.1.0
Previous release notes: https://github.com/sliekens/gw2sdk/releases/tag/v1.0.1
v1.0.1
This release contains performance improvements and bug fixes.
Bug fixes
- Fixed a crash that occurs with .NET Framework when a query exceeds 1024 characters. This bug affected endpoints like
GetItemsByIds
, where the URL can get pretty long when 200 comma-separated ids are specified. - Fixed a wrong error message when JSON parsing of container items fails
- Fixed a potential crash when parsing WvW matches after the weekly reset when
map_scores
are blank
Performance improvements
- Introduced
ThrowHelper
which results in smaller IL code than directthrow
Private API changes
QueryBuilder
ispublic
for technical reasons, not meant to be used directlyQueryBuilder.Add
overloads for numbers and collection types were removed
Full Changelog: v1.0.0...v1.0.1
Previous release notes: https://github.com/sliekens/gw2sdk/releases/tag/v1.0.0
v1.0.0
I am thrilled to announce the first official release of GW2SDK!
The SDK now offers a robust set of features for interacting with the Guild Wars 2 API and game client. All planned features are now complete, reviewed, tested, documented and optimized for extreme performance, without sacrificing ease of use.
Highlights
I added support for weapon skill overrides to chat links for build templates. This is used for Ranger builds that utilize Unleashed hammer skills.
I removed unnecessary NuGet dependencies, which could otherwise pollute your solution with unwanted packages. The only required dependency is System.Text.Json
. For legacy .NET Framework projects, there is an additional dependency on System.Runtime.InteropServices.RuntimeInformation
.
Enjoy!
Full Changelog: v1.0.0-rc.3...v1.0.0