Releases: sliekens/gw2sdk
v2.1.0
Highlights
In this iteration, I made it easier to work with combat equipment through
new interfaces for items with item stats, upgrade slots, infusion slots and buffs.
GameLink
was improved for situations where the link is accessed by multiple
concurrent subscribers. It is now also possible to asynchronously dispose
GameLink
objects with await using
to prevent blocking the current thread.
The synchronous GameLink.Dispose()
method can still block the current thread,
because it waits until all callbacks have finished.
New features
Items:
- Added interface
ICombatEquipment
- Added interface
IUpgradable
- Added interface
IInfusable
- Added interface
IIinfused
- Added a more efficient
EqualityComparer
forAttributes
properties
(which is used inEquals
methods, you don't have to do anything) - Added property
TwoHanded
toWeapon
- Added collection property
UpgradeSlots
to upgradable items - Added property
UpgradeSlotCount
to upgradable items - Added property
InfusionSlotCount
to upgradable items - Added static class
RarityColor
GameLink:
- Now implements
IAsyncDisposable
Bugfixes
Items:
- Fix the color code for flavor text
GameLink:
- Fix unsafe collection access from multiple threads
Full Changelog: v2.0.0...v2.1.0
Previous release notes: https://github.com/sliekens/gw2sdk/releases/tag/v2.0.0
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