v2.11.0+26.3-forge
RELEASE
September 22, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+26.3-neoforge
RELEASE
September 18, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+26.3-fabric
RELEASE
September 18, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+26.1-forge
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+26.1-neoforge
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+26.1-fabric
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.21.11-forge
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.21.11-neoforge
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.21.11-fabric
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.21.9-forge
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.21.9-neoforge
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.21.9-fabric
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.21.6-fabric
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.21.6-neoforge
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.21.6-forge
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.21.5-neoforge
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.21.5-forge
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.21.5-fabric
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.21-neoforge
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.21-forge
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.21-fabric
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.20.5-forge
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.20.5-fabric
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.20.3-fabric
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.20.3-forge
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.20.2-forge
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.20.2-fabric
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.20-forge
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.20-fabric
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.19.4-fabric
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.19.4-forge
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.19.3-forge
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.19.3-fabric
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.19.1-fabric
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.11.0+1.19.1-forge
RELEASE
September 8, 2026
### Added
- `/skin set`, `/skin clear` and `/skin reset` now accept offline players and UUIDs as targets; the skin is saved right away and applied on their next join
### Changed
- `/skin set web` now accepts URLs without quotes and suggests a quoted form when the URL has to be quoted
### Fixed
- Fixed a crash when a player head was displayed on a client that has the mod installed and is connected to a multiplayer server (1.20 and older)
v2.10.0+26.1-forge
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+26.1-fabric
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+26.1-neoforge
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.21.11-forge
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.21.11-neoforge
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.21.11-fabric
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.21.9-neoforge
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.21.9-forge
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.21.9-fabric
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.21.6-forge
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.21.6-neoforge
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.21.6-fabric
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.21.5-neoforge
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.21.5-fabric
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.21.5-forge
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.21-forge
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.21-neoforge
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.21-fabric
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.20.5-forge
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.20.5-fabric
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.20.3-fabric
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.20.3-forge
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.20.2-fabric
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.20.2-forge
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.20-fabric
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.20-forge
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.19.4-forge
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.19.4-fabric
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.19.3-fabric
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.19.3-forge
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.19.1-forge
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.10.0+1.19.1-fabric
RELEASE
July 30, 2026
### Added
- Added an optional `name` field to collection provider sources, allowing players to pick a specific skin with `/skin set collection <name>` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection)) ([#113](https://github.com/Suiranoil/SkinRestorer/issues/113))
- Added tab-completion for skin provider command arguments: online players for username-based providers, named skins for the collection provider
- Added the `providers.mineskin.allowedDomains` config option to restrict which domains players can use with `/skin set web` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
- Added the `command` config section to control who can change skins: `command.enabled`, `command.permissionLevel` and `command.targetsPermissionLevel` (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#command)) ([#114](https://github.com/Suiranoil/SkinRestorer/issues/114))
### Changed
- `/skin set web` now only accepts `http(s)` URLs
- `/skin config reload` now resends the command tree to online players, so command changes apply without relogging
v2.9.0+26.1-neoforge
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+26.1-forge
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+26.1-fabric
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.21.11-forge
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.21.11-neoforge
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.21.11-fabric
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.21.9-forge
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.21.9-fabric
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.21.9-neoforge
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.21.6-neoforge
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.21.6-forge
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.21.6-fabric
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.21.5-forge
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.21.5-neoforge
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.21.5-fabric
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.21-neoforge
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.21-forge
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.21-fabric
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.20.5-forge
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.20.5-fabric
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.20.3-fabric
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.20.3-forge
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.20.2-forge
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.20.2-fabric
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.20-forge
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.20-fabric
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.19.4-fabric
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.19.4-forge
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.19.3-fabric
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.19.3-forge
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.19.1-fabric
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.9.0+1.19.1-forge
RELEASE
July 7, 2026
### Added
- Added the `storage.location` config option to store skins globally (shared across all worlds) instead of per world ([#110](https://github.com/Suiranoil/SkinRestorer/issues/110))
v2.8.1+26.1-neoforge
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+26.1-forge
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+26.1-fabric
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.21.11-forge
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.21.11-neoforge
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.21.11-fabric
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.21.9-forge
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.21.9-neoforge
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.21.9-fabric
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.21.6-forge
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.21.6-neoforge
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.21.6-fabric
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.21.5-neoforge
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.21.5-forge
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.21.5-fabric
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.21-forge
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.21-neoforge
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.21-fabric
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.20.5-forge
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.20.5-fabric
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.20.3-forge
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.20.3-fabric
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.20.2-forge
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.20.2-fabric
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.20-forge
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.20-fabric
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.19.4-fabric
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.19.4-forge
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.19.3-forge
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.19.3-fabric
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.19.1-forge
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.1+1.19.1-fabric
RELEASE
June 11, 2026
### Changed
- Improved logging of unexpected errors during skin fetch on login
### Fixed
- Fixed skin changes being lost if the server crashed before the player disconnected (skins are now saved to disk immediately)
- Fixed usernames with special characters not being properly encoded in skin provider requests
- Fixed the custom authlib injector provider blocking the server thread while resolving its API root
- Fixed the MineSkin HTTP client and its worker threads not being closed when reloading the config
- Fixed skins of players that disconnect during login staying in the memory cache
- Fixed `request.userAgent` changes sometimes not applying after a config reload
- Fixed a rare issue where delayed skin apply tasks of different players could conflict
- Fixed an error being logged on first startup when no config file exists yet
v2.8.0+26.1-neoforge
RELEASE
June 1, 2026
### Added
- Added Japanese translation ([#100](https://github.com/Suiranoil/SkinRestorer/pull/100)) - *undefined9651*
- Added fallback providers support for automatic skin fetch ([#102](https://github.com/Suiranoil/SkinRestorer/pull/102)) - *Carto1a*
### Changed
- Renamed `autoFetch.provider` to `autoFetch.providers` (now a list, automatically migrated from old format)
- Improved German, Hindi, Hungarian, Ukrainian, and Simplified Chinese translations
- Improved performance and stability by running skin fetches on a dedicated thread pool
### Fixed
- Fixed player login hanging when a skin provider accepts the connection but never responds
- Fixed saved skins being lost if the server crashed while saving (skin files are now written atomically)
- Fixed a possible crash when using the collection provider with certain seeds
- Fixed provider skin caches growing without an upper bound
- Fixed the HTTP client not being closed when reloading the config
v2.8.0+26.1-forge
RELEASE
June 1, 2026
### Added
- Added Japanese translation ([#100](https://github.com/Suiranoil/SkinRestorer/pull/100)) - *undefined9651*
- Added fallback providers support for automatic skin fetch ([#102](https://github.com/Suiranoil/SkinRestorer/pull/102)) - *Carto1a*
### Changed
- Renamed `autoFetch.provider` to `autoFetch.providers` (now a list, automatically migrated from old format)
- Improved German, Hindi, Hungarian, Ukrainian, and Simplified Chinese translations
- Improved performance and stability by running skin fetches on a dedicated thread pool
### Fixed
- Fixed player login hanging when a skin provider accepts the connection but never responds
- Fixed saved skins being lost if the server crashed while saving (skin files are now written atomically)
- Fixed a possible crash when using the collection provider with certain seeds
- Fixed provider skin caches growing without an upper bound
- Fixed the HTTP client not being closed when reloading the config
v2.8.0+26.1-fabric
RELEASE
June 1, 2026
### Added
- Added Japanese translation ([#100](https://github.com/Suiranoil/SkinRestorer/pull/100)) - *undefined9651*
- Added fallback providers support for automatic skin fetch ([#102](https://github.com/Suiranoil/SkinRestorer/pull/102)) - *Carto1a*
### Changed
- Renamed `autoFetch.provider` to `autoFetch.providers` (now a list, automatically migrated from old format)
- Improved German, Hindi, Hungarian, Ukrainian, and Simplified Chinese translations
- Improved performance and stability by running skin fetches on a dedicated thread pool
### Fixed
- Fixed player login hanging when a skin provider accepts the connection but never responds
- Fixed saved skins being lost if the server crashed while saving (skin files are now written atomically)
- Fixed a possible crash when using the collection provider with certain seeds
- Fixed provider skin caches growing without an upper bound
- Fixed the HTTP client not being closed when reloading the config
v2.7.1+26.1-fabric
RELEASE
March 31, 2026
### Added
- Added support for minecraft 26.1
v2.7.1+26.1-forge
RELEASE
March 30, 2026
### Added
- Added support for minecraft 26.1
v2.7.1+26.1-neoforge
RELEASE
March 30, 2026
### Added
- Added support for minecraft 26.1
v2.7.0+1.21.11-neoforge
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.21.11-forge
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.21.11-fabric
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.21.9-forge
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.21.9-fabric
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.21.9-neoforge
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.21.6-forge
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.21.6-neoforge
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.21.6-fabric
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.21.5-neoforge
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.21.5-forge
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.21.5-fabric
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.21-neoforge
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.21-forge
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.21-fabric
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.20.5-forge
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.20.5-fabric
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.20.3-fabric
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.20.3-forge
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.20.2-forge
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.20.2-fabric
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.20-forge
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.20-fabric
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.19.4-forge
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.19.4-fabric
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.19.3-fabric
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.19.3-forge
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.19.1-fabric
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.7.0+1.19.1-forge
RELEASE
March 20, 2026
### Added
- Added versioning and migration system for config and skin data files
- Added `join.skipRefreshProviders` config option to skip skin refresh on join for specific providers (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#joinskiprefreshproviders))
- Added `request.userAgent` config option for customizing the HTTP user agent (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#requestuseragent))
### Changed
- Reorganized config structure into `join`, `request`, and `autoFetch` sections (automatically migrated from old format)
### Fixed
- Fixed bundled player info remove and update packets causing skin update issues (fixes [#96](https://github.com/Suiranoil/SkinRestorer/issues/96))
v2.6.0+1.21.11-forge
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.21.11-neoforge
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.21.11-fabric
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.21.9-forge
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.21.9-neoforge
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.21.9-fabric
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.21.6-fabric
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.21.6-forge
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.21.6-neoforge
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.21.5-fabric
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.21.5-neoforge
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.21.5-forge
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.21-neoforge
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.21-forge
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.21-fabric
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.20.5-forge
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.20.5-fabric
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.20.3-fabric
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.20.3-forge
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.20.2-fabric
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.20.2-forge
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.20-fabric
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.20-forge
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.19.4-fabric
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.19.4-forge
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.19.3-forge
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.19.3-fabric
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.19.1-forge
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.6.0+1.19.1-fabric
RELEASE
February 28, 2026
### Added
- Added custom skin providers system for configuring third-party skin sources (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscustom))
- Custom Yggdrasil provider (for custom authentication servers)
- Custom Authlib Injector provider
- Custom Username URL provider (fetch skins by URL using player username)
- Added `proxyUrlUpload` option for MineSkin provider (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Fixed
- Fixed ely.by provider using HTTP URL instead of HTTPS
- Fixed `/skin set` with multiple targets sometimes saving the wrong original skin for reset
v2.5.0+1.21.11-neoforge
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.21.11-fabric
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.21.11-forge
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.21.9-neoforge
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.21.9-forge
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.21.9-fabric
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.21.6-neoforge
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.21.6-fabric
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.21.6-forge
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.21.5-fabric
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.21.5-neoforge
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.21.5-forge
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.21-forge
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.21-neoforge
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.21-fabric
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.20.5-fabric
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.20.5-forge
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.20.3-forge
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.20.3-fabric
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.20.2-forge
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.20.2-fabric
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.20-fabric
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.20-forge
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.19.4-fabric
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.19.4-forge
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.19.3-forge
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.19.3-fabric
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.19.1-forge
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.5.0+1.19.1-fabric
RELEASE
January 14, 2026
### Added
- Added collection skin provider (allows assigning random skins from a predefined set) (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providerscollection))
- Added `forceFirstJoinSkinFetch` config option to force skin fetch on first join even if player already has a skin (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#forcefirstjoinskinfetch))
v2.4.3+1.21.11-neoforge
RELEASE
December 16, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.21.11-fabric
RELEASE
December 16, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.21.11-forge
RELEASE
December 16, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.21.9-neoforge
RELEASE
October 4, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.21.9-forge
RELEASE
October 4, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.21.9-fabric
RELEASE
October 4, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.21.6-forge
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.21.6-fabric
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.21.6-neoforge
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.21.5-fabric
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.21.5-neoforge
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.21.5-forge
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.21-neoforge
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.21-fabric
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.21-forge
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.20.5-forge
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.20.5-fabric
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.20.3-forge
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.20.3-fabric
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.20.2-forge
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.20.2-fabric
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.20-forge
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.20-fabric
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.19.4-fabric
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.19.4-forge
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.19.3-fabric
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.19.3-forge
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.19.1-fabric
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.3+1.19.1-forge
RELEASE
August 17, 2025
### Fixed
- Fixed crash on client when loading player head skin (fixes [#63](https://github.com/Suiranoil/SkinRestorer/issues/63) and [#64](https://github.com/Suiranoil/SkinRestorer/issues/64))
- Fixed server freeze when loading player head skin
v2.4.2+1.21.6-forge
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.21.6-fabric
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.21.6-neoforge
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.21.5-fabric
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.21.5-forge
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.21.5-neoforge
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.21-fabric
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.21-forge
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.21-neoforge
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.20.5-fabric
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.20.5-forge
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.20.3-fabric
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.20.3-forge
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.20.2-forge
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.20.2-fabric
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.20-fabric
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.20-forge
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.19.4-forge
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.19.4-fabric
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.19.3-forge
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.19.3-fabric
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.19.1-forge
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.2+1.19.1-fabric
RELEASE
July 13, 2025
### Fixed
- Fix crash when head profile name is null (fixes [#60](https://github.com/Suiranoil/SkinRestorer/issues/60) and [#61](https://github.com/Suiranoil/SkinRestorer/issues/61))
v2.4.1+1.21.6-neoforge
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.21.6-forge
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.21.6-fabric
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.21.5-fabric
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.21.5-neoforge
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.21.5-forge
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.21-neoforge
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.21-fabric
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.21-forge
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.20.5-forge
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.20.5-fabric
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.20.3-forge
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.20.3-fabric
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.20.2-fabric
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.20.2-forge
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.20-forge
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.20-fabric
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.19.4-fabric
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.19.4-forge
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.19.3-forge
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.19.3-fabric
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.19.1-forge
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.1+1.19.1-fabric
RELEASE
July 9, 2025
### Changed
- Log full exception and argument when unable to fetch/set skin
### Fixed
- Fixed mojang provider using offline uuids when unable to fetch actual uuid resulting in `no profile with uuid` error
v2.4.0+1.21.6-forge
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.21.6-neoforge
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.21.6-fabric
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.21.5-fabric
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.21.5-forge
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.21.5-neoforge
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.21-neoforge
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.21-forge
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.21-fabric
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.20.5-fabric
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.20.5-forge
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.20.3-fabric
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.20.3-forge
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.20.2-fabric
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.20.2-forge
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.20-forge
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.20-fabric
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.19.4-forge
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.19.4-fabric
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.19.3-forge
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.19.3-fabric
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.19.1-forge
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.4.0+1.19.1-fabric
RELEASE
July 5, 2025
### Added
- Added support for player heads
v2.3.5+1.21.6-fabric
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.21.6-neoforge
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.21.6-forge
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.21.5-forge
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.21.5-neoforge
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.21.5-fabric
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.21-fabric
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.21-forge
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.21-neoforge
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.20.5-fabric
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.20.5-forge
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.20.3-forge
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.20.3-fabric
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.20.2-forge
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.20.2-fabric
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.20-forge
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.20-fabric
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.19.4-fabric
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.19.4-forge
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.19.3-fabric
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.19.3-forge
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.19.1-fabric
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.5+1.19.1-forge
RELEASE
June 21, 2025
### Fixed
- Fix mod not loading on client
v2.3.4+1.21.6-fabric
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.21.6-forge
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.21.6-neoforge
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.21.5-fabric
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.21.5-neoforge
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.21.5-forge
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.21-forge
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.21-neoforge
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.21-fabric
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.20.5-forge
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.20.5-fabric
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.20.3-forge
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.20.3-fabric
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.20.2-forge
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.20.2-fabric
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.20-forge
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.20-fabric
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.19.4-fabric
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.19.4-forge
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.19.3-fabric
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.19.3-forge
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.19.1-forge
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.4+1.19.1-fabric
RELEASE
June 19, 2025
### Added
- Added support for minecraft 1.21.6
v2.3.3+1.21.5-forge
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.3+1.21.5-neoforge
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.3+1.21.5-fabric
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.3+1.21-forge
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.3+1.21-fabric
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.3+1.21-neoforge
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.3+1.20.5-forge
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.3+1.20.5-fabric
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.3+1.20.3-forge
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.3+1.20.3-fabric
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.3+1.20.2-forge
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.3+1.20.2-fabric
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.3+1.20-forge
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.3+1.20-fabric
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.3+1.19.4-fabric
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.3+1.19.4-forge
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.3+1.19.3-fabric
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.3+1.19.3-forge
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.3+1.19.1-fabric
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.3+1.19.1-forge
RELEASE
June 1, 2025
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
- Fixed various other crashes on forge
### Removed
- Removed minecraft 1.19 support
v2.3.2+1.21.5-fabric
RELEASE
May 24, 2025
### Fixed
- Fixed mixin incompatibility with ModernFix (closes [#42](https://github.com/Suiranoil/SkinRestorer/issues/52))
v2.3.2+1.21.5-forge
RELEASE
May 24, 2025
### Fixed
- Fixed mixin incompatibility with ModernFix (closes [#42](https://github.com/Suiranoil/SkinRestorer/issues/52))
v2.3.2+1.21.5-neoforge
RELEASE
May 24, 2025
### Fixed
- Fixed mixin incompatibility with ModernFix (closes [#42](https://github.com/Suiranoil/SkinRestorer/issues/52))
v2.3.2+1.21-fabric
RELEASE
May 24, 2025
### Fixed
- Fixed mixin incompatibility with ModernFix (closes [#42](https://github.com/Suiranoil/SkinRestorer/issues/52))
v2.3.2+1.21-neoforge
RELEASE
May 24, 2025
### Fixed
- Fixed mixin incompatibility with ModernFix (closes [#42](https://github.com/Suiranoil/SkinRestorer/issues/52))
v2.3.2+1.21-forge
RELEASE
May 24, 2025
### Fixed
- Fixed mixin incompatibility with ModernFix (closes [#42](https://github.com/Suiranoil/SkinRestorer/issues/52))
v2.3.2+1.20.5-fabric
RELEASE
May 24, 2025
### Fixed
- Fixed mixin incompatibility with ModernFix (closes [#42](https://github.com/Suiranoil/SkinRestorer/issues/52))
v2.3.2+1.20.3-fabric
RELEASE
May 24, 2025
### Fixed
- Fixed mixin incompatibility with ModernFix (closes [#42](https://github.com/Suiranoil/SkinRestorer/issues/52))
v2.3.2+1.20.2-fabric
RELEASE
May 24, 2025
### Fixed
- Fixed mixin incompatibility with ModernFix (closes [#42](https://github.com/Suiranoil/SkinRestorer/issues/52))
v2.3.2+1.20-fabric
RELEASE
May 24, 2025
### Fixed
- Fixed mixin incompatibility with ModernFix (closes [#42](https://github.com/Suiranoil/SkinRestorer/issues/52))
v2.3.2+1.19.4-fabric
RELEASE
May 24, 2025
### Fixed
- Fixed mixin incompatibility with ModernFix (closes [#42](https://github.com/Suiranoil/SkinRestorer/issues/52))
v2.3.2+1.19.3-fabric
RELEASE
May 24, 2025
### Fixed
- Fixed mixin incompatibility with ModernFix (closes [#42](https://github.com/Suiranoil/SkinRestorer/issues/52))
v2.3.2+1.19.1-fabric
RELEASE
May 24, 2025
### Fixed
- Fixed mixin incompatibility with ModernFix (closes [#42](https://github.com/Suiranoil/SkinRestorer/issues/52))
v2.3.2+1.19-fabric
RELEASE
May 24, 2025
### Fixed
- Fixed mixin incompatibility with ModernFix (closes [#42](https://github.com/Suiranoil/SkinRestorer/issues/52))
v2.3.1+1.21.5-neoforge
RELEASE
May 3, 2025
### Added
- Added support for minecraft 1.19-1.19.4
### Changed
- Use services and session server urls from environment
v2.3.1+1.21.5-fabric
RELEASE
May 3, 2025
### Added
- Added support for minecraft 1.19-1.19.4
### Changed
- Use services and session server urls from environment
v2.3.1+1.21.5-forge
RELEASE
May 3, 2025
### Added
- Added support for minecraft 1.19-1.19.4
### Changed
- Use services and session server urls from environment
v2.3.1+1.21-neoforge
RELEASE
May 3, 2025
### Added
- Added support for minecraft 1.19-1.19.4
### Changed
- Use services and session server urls from environment
v2.3.1+1.21-fabric
RELEASE
May 3, 2025
### Added
- Added support for minecraft 1.19-1.19.4
### Changed
- Use services and session server urls from environment
v2.3.1+1.21-forge
RELEASE
May 3, 2025
### Added
- Added support for minecraft 1.19-1.19.4
### Changed
- Use services and session server urls from environment
v2.3.1+1.20.5-fabric
RELEASE
May 3, 2025
### Added
- Added support for minecraft 1.19-1.19.4
### Changed
- Use services and session server urls from environment
v2.3.1+1.20.3-fabric
RELEASE
May 3, 2025
### Added
- Added support for minecraft 1.19-1.19.4
### Changed
- Use services and session server urls from environment
v2.3.1+1.20.2-fabric
RELEASE
May 3, 2025
### Added
- Added support for minecraft 1.19-1.19.4
### Changed
- Use services and session server urls from environment
v2.3.1+1.20-fabric
RELEASE
May 3, 2025
### Added
- Added support for minecraft 1.19-1.19.4
### Changed
- Use services and session server urls from environment
v2.3.1+1.19.4-fabric
RELEASE
May 3, 2025
### Added
- Added support for minecraft 1.19-1.19.4
### Changed
- Use services and session server urls from environment
v2.3.1+1.19.3-fabric
RELEASE
May 3, 2025
### Added
- Added support for minecraft 1.19-1.19.4
### Changed
- Use services and session server urls from environment
v2.3.1+1.19.1-fabric
RELEASE
May 3, 2025
### Added
- Added support for minecraft 1.19-1.19.4
### Changed
- Use services and session server urls from environment
v2.3.1+1.19-fabric
RELEASE
May 3, 2025
### Added
- Added support for minecraft 1.19-1.19.4
### Changed
- Use services and session server urls from environment
v2.3.0+1.21.5-neoforge
RELEASE
March 27, 2025
### Added
- Added `skinApplyDelayOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#skinapplydelayonjoin))
### Changed
- Updated to 1.21.5
### Removed
- [NeoForge] Dropped support for NeoForge on Minecraft 1.20.5-1.20.6
v2.3.0+1.21.5-fabric
RELEASE
March 27, 2025
### Added
- Added `skinApplyDelayOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#skinapplydelayonjoin))
### Changed
- Updated to 1.21.5
### Removed
- [NeoForge] Dropped support for NeoForge on Minecraft 1.20.5-1.20.6
v2.3.0+1.21.5-forge
RELEASE
March 27, 2025
### Added
- Added `skinApplyDelayOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#skinapplydelayonjoin))
### Changed
- Updated to 1.21.5
### Removed
- [NeoForge] Dropped support for NeoForge on Minecraft 1.20.5-1.20.6
v2.3.0+1.21-neoforge
RELEASE
March 27, 2025
### Added
- Added `skinApplyDelayOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#skinapplydelayonjoin))
### Changed
- Updated to 1.21.5
### Removed
- [NeoForge] Dropped support for NeoForge on Minecraft 1.20.5-1.20.6
v2.3.0+1.21-fabric
RELEASE
March 27, 2025
### Added
- Added `skinApplyDelayOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#skinapplydelayonjoin))
### Changed
- Updated to 1.21.5
### Removed
- [NeoForge] Dropped support for NeoForge on Minecraft 1.20.5-1.20.6
v2.3.0+1.21-forge
RELEASE
March 27, 2025
### Added
- Added `skinApplyDelayOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#skinapplydelayonjoin))
### Changed
- Updated to 1.21.5
### Removed
- [NeoForge] Dropped support for NeoForge on Minecraft 1.20.5-1.20.6
v2.3.0+1.20.5-fabric
RELEASE
March 27, 2025
### Added
- Added `skinApplyDelayOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#skinapplydelayonjoin))
### Changed
- Updated to 1.21.5
### Removed
- [NeoForge] Dropped support for NeoForge on Minecraft 1.20.5-1.20.6
v2.3.0+1.20.5-forge
RELEASE
March 27, 2025
### Added
- Added `skinApplyDelayOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#skinapplydelayonjoin))
### Changed
- Updated to 1.21.5
### Removed
- [NeoForge] Dropped support for NeoForge on Minecraft 1.20.5-1.20.6
v2.3.0+1.20.3-forge
RELEASE
March 27, 2025
### Added
- Added `skinApplyDelayOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#skinapplydelayonjoin))
### Changed
- Updated to 1.21.5
### Removed
- [NeoForge] Dropped support for NeoForge on Minecraft 1.20.5-1.20.6
v2.3.0+1.20.3-fabric
RELEASE
March 27, 2025
### Added
- Added `skinApplyDelayOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#skinapplydelayonjoin))
### Changed
- Updated to 1.21.5
### Removed
- [NeoForge] Dropped support for NeoForge on Minecraft 1.20.5-1.20.6
v2.3.0+1.20.2-forge
RELEASE
March 27, 2025
### Added
- Added `skinApplyDelayOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#skinapplydelayonjoin))
### Changed
- Updated to 1.21.5
### Removed
- [NeoForge] Dropped support for NeoForge on Minecraft 1.20.5-1.20.6
v2.3.0+1.20.2-fabric
RELEASE
March 27, 2025
### Added
- Added `skinApplyDelayOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#skinapplydelayonjoin))
### Changed
- Updated to 1.21.5
### Removed
- [NeoForge] Dropped support for NeoForge on Minecraft 1.20.5-1.20.6
v2.3.0+1.20-fabric
RELEASE
March 27, 2025
### Added
- Added `skinApplyDelayOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#skinapplydelayonjoin))
### Changed
- Updated to 1.21.5
### Removed
- [NeoForge] Dropped support for NeoForge on Minecraft 1.20.5-1.20.6
v2.3.0+1.20-forge
RELEASE
March 27, 2025
### Added
- Added `skinApplyDelayOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#skinapplydelayonjoin))
### Changed
- Updated to 1.21.5
### Removed
- [NeoForge] Dropped support for NeoForge on Minecraft 1.20.5-1.20.6
v2.2.1+1.21-neoforge
RELEASE
December 23, 2024
### Fixed
- Fixed game not closing because of mineskin working threads (closes [#41](https://github.com/Suiranoil/SkinRestorer/issues/41))
v2.2.1+1.21-forge
RELEASE
December 23, 2024
### Fixed
- Fixed game not closing because of mineskin working threads (closes [#41](https://github.com/Suiranoil/SkinRestorer/issues/41))
v2.2.1+1.21-fabric
RELEASE
December 23, 2024
### Fixed
- Fixed game not closing because of mineskin working threads (closes [#41](https://github.com/Suiranoil/SkinRestorer/issues/41))
v2.2.1+1.20.5-neoforge
RELEASE
December 23, 2024
### Fixed
- Fixed game not closing because of mineskin working threads (closes [#41](https://github.com/Suiranoil/SkinRestorer/issues/41))
v2.2.1+1.20.5-forge
RELEASE
December 23, 2024
### Fixed
- Fixed game not closing because of mineskin working threads (closes [#41](https://github.com/Suiranoil/SkinRestorer/issues/41))
v2.2.1+1.20.5-fabric
RELEASE
December 23, 2024
### Fixed
- Fixed game not closing because of mineskin working threads (closes [#41](https://github.com/Suiranoil/SkinRestorer/issues/41))
v2.2.1+1.20.3-fabric
RELEASE
December 23, 2024
### Fixed
- Fixed game not closing because of mineskin working threads (closes [#41](https://github.com/Suiranoil/SkinRestorer/issues/41))
v2.2.1+1.20.3-forge
RELEASE
December 23, 2024
### Fixed
- Fixed game not closing because of mineskin working threads (closes [#41](https://github.com/Suiranoil/SkinRestorer/issues/41))
v2.2.1+1.20.2-forge
RELEASE
December 23, 2024
### Fixed
- Fixed game not closing because of mineskin working threads (closes [#41](https://github.com/Suiranoil/SkinRestorer/issues/41))
v2.2.1+1.20.2-fabric
RELEASE
December 23, 2024
### Fixed
- Fixed game not closing because of mineskin working threads (closes [#41](https://github.com/Suiranoil/SkinRestorer/issues/41))
v2.2.1+1.20-fabric
RELEASE
December 23, 2024
### Fixed
- Fixed game not closing because of mineskin working threads (closes [#41](https://github.com/Suiranoil/SkinRestorer/issues/41))
v2.2.1+1.20-forge
RELEASE
December 23, 2024
### Fixed
- Fixed game not closing because of mineskin working threads (closes [#41](https://github.com/Suiranoil/SkinRestorer/issues/41))
v2.2.0+1.21-forge
RELEASE
December 2, 2024
### Added
- Added support for [SkinShuffle](https://modrinth.com/mod/skinshuffle) clients (requires FabricAPI on Fabric)
(closes [#34](https://github.com/Suiranoil/SkinRestorer/issues/34))
- Added `providers.mineskin.apiKey` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Changed
- Migrated to MineSkin's new API V2
### Fixed
- Fixed `providers` config validation
### Removed
- Dropped support for NeoForge on Minecraft 1.20.2-1.20.4
v2.2.0+1.21-fabric
RELEASE
December 2, 2024
### Added
- Added support for [SkinShuffle](https://modrinth.com/mod/skinshuffle) clients (requires FabricAPI on Fabric)
(closes [#34](https://github.com/Suiranoil/SkinRestorer/issues/34))
- Added `providers.mineskin.apiKey` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Changed
- Migrated to MineSkin's new API V2
### Fixed
- Fixed `providers` config validation
### Removed
- Dropped support for NeoForge on Minecraft 1.20.2-1.20.4
v2.2.0+1.21-neoforge
RELEASE
December 2, 2024
### Added
- Added support for [SkinShuffle](https://modrinth.com/mod/skinshuffle) clients (requires FabricAPI on Fabric)
(closes [#34](https://github.com/Suiranoil/SkinRestorer/issues/34))
- Added `providers.mineskin.apiKey` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Changed
- Migrated to MineSkin's new API V2
### Fixed
- Fixed `providers` config validation
### Removed
- Dropped support for NeoForge on Minecraft 1.20.2-1.20.4
v2.2.0+1.20.5-neoforge
RELEASE
December 2, 2024
### Added
- Added support for [SkinShuffle](https://modrinth.com/mod/skinshuffle) clients (requires FabricAPI on Fabric)
(closes [#34](https://github.com/Suiranoil/SkinRestorer/issues/34))
- Added `providers.mineskin.apiKey` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Changed
- Migrated to MineSkin's new API V2
### Fixed
- Fixed `providers` config validation
### Removed
- Dropped support for NeoForge on Minecraft 1.20.2-1.20.4
v2.2.0+1.20.5-forge
RELEASE
December 2, 2024
### Added
- Added support for [SkinShuffle](https://modrinth.com/mod/skinshuffle) clients (requires FabricAPI on Fabric)
(closes [#34](https://github.com/Suiranoil/SkinRestorer/issues/34))
- Added `providers.mineskin.apiKey` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Changed
- Migrated to MineSkin's new API V2
### Fixed
- Fixed `providers` config validation
### Removed
- Dropped support for NeoForge on Minecraft 1.20.2-1.20.4
v2.2.0+1.20.5-fabric
RELEASE
December 2, 2024
### Added
- Added support for [SkinShuffle](https://modrinth.com/mod/skinshuffle) clients (requires FabricAPI on Fabric)
(closes [#34](https://github.com/Suiranoil/SkinRestorer/issues/34))
- Added `providers.mineskin.apiKey` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Changed
- Migrated to MineSkin's new API V2
### Fixed
- Fixed `providers` config validation
### Removed
- Dropped support for NeoForge on Minecraft 1.20.2-1.20.4
v2.2.0+1.20.3-forge
RELEASE
December 2, 2024
### Added
- Added support for [SkinShuffle](https://modrinth.com/mod/skinshuffle) clients (requires FabricAPI on Fabric)
(closes [#34](https://github.com/Suiranoil/SkinRestorer/issues/34))
- Added `providers.mineskin.apiKey` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Changed
- Migrated to MineSkin's new API V2
### Fixed
- Fixed `providers` config validation
### Removed
- Dropped support for NeoForge on Minecraft 1.20.2-1.20.4
v2.2.0+1.20.3-fabric
RELEASE
December 2, 2024
### Added
- Added support for [SkinShuffle](https://modrinth.com/mod/skinshuffle) clients (requires FabricAPI on Fabric)
(closes [#34](https://github.com/Suiranoil/SkinRestorer/issues/34))
- Added `providers.mineskin.apiKey` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Changed
- Migrated to MineSkin's new API V2
### Fixed
- Fixed `providers` config validation
### Removed
- Dropped support for NeoForge on Minecraft 1.20.2-1.20.4
v2.2.0+1.20.2-fabric
RELEASE
December 2, 2024
### Added
- Added support for [SkinShuffle](https://modrinth.com/mod/skinshuffle) clients (requires FabricAPI on Fabric)
(closes [#34](https://github.com/Suiranoil/SkinRestorer/issues/34))
- Added `providers.mineskin.apiKey` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Changed
- Migrated to MineSkin's new API V2
### Fixed
- Fixed `providers` config validation
### Removed
- Dropped support for NeoForge on Minecraft 1.20.2-1.20.4
v2.2.0+1.20.2-forge
RELEASE
December 2, 2024
### Added
- Added support for [SkinShuffle](https://modrinth.com/mod/skinshuffle) clients (requires FabricAPI on Fabric)
(closes [#34](https://github.com/Suiranoil/SkinRestorer/issues/34))
- Added `providers.mineskin.apiKey` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Changed
- Migrated to MineSkin's new API V2
### Fixed
- Fixed `providers` config validation
### Removed
- Dropped support for NeoForge on Minecraft 1.20.2-1.20.4
v2.2.0+1.20-forge
RELEASE
December 2, 2024
### Added
- Added support for [SkinShuffle](https://modrinth.com/mod/skinshuffle) clients (requires FabricAPI on Fabric)
(closes [#34](https://github.com/Suiranoil/SkinRestorer/issues/34))
- Added `providers.mineskin.apiKey` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Changed
- Migrated to MineSkin's new API V2
### Fixed
- Fixed `providers` config validation
### Removed
- Dropped support for NeoForge on Minecraft 1.20.2-1.20.4
v2.2.0+1.20-fabric
RELEASE
December 2, 2024
### Added
- Added support for [SkinShuffle](https://modrinth.com/mod/skinshuffle) clients (requires FabricAPI on Fabric)
(closes [#34](https://github.com/Suiranoil/SkinRestorer/issues/34))
- Added `providers.mineskin.apiKey` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providersmineskin))
### Changed
- Migrated to MineSkin's new API V2
### Fixed
- Fixed `providers` config validation
### Removed
- Dropped support for NeoForge on Minecraft 1.20.2-1.20.4
v2.1.0+1.21-neoforge
RELEASE
September 25, 2024
### Added
- Added `config reload` command for dynamic configuration updates
- Added `refreshSkinOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#refreshskinonjoin))
- Implemented caching for skin providers
- Added provider configurations (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providers))
- Added username and url validation for requests
### Fixed
- Fixed old skin directory migration not working
- Prevented overwriting existing skin files during migration
v2.1.0+1.21-fabric
RELEASE
September 25, 2024
### Added
- Added `config reload` command for dynamic configuration updates
- Added `refreshSkinOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#refreshskinonjoin))
- Implemented caching for skin providers
- Added provider configurations (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providers))
- Added username and url validation for requests
### Fixed
- Fixed old skin directory migration not working
- Prevented overwriting existing skin files during migration
v2.1.0+1.21-forge
RELEASE
September 25, 2024
### Added
- Added `config reload` command for dynamic configuration updates
- Added `refreshSkinOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#refreshskinonjoin))
- Implemented caching for skin providers
- Added provider configurations (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providers))
- Added username and url validation for requests
### Fixed
- Fixed old skin directory migration not working
- Prevented overwriting existing skin files during migration
v2.1.0+1.20.5-neoforge
RELEASE
September 25, 2024
### Added
- Added `config reload` command for dynamic configuration updates
- Added `refreshSkinOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#refreshskinonjoin))
- Implemented caching for skin providers
- Added provider configurations (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providers))
- Added username and url validation for requests
### Fixed
- Fixed old skin directory migration not working
- Prevented overwriting existing skin files during migration
v2.1.0+1.20.5-fabric
RELEASE
September 25, 2024
### Added
- Added `config reload` command for dynamic configuration updates
- Added `refreshSkinOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#refreshskinonjoin))
- Implemented caching for skin providers
- Added provider configurations (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providers))
- Added username and url validation for requests
### Fixed
- Fixed old skin directory migration not working
- Prevented overwriting existing skin files during migration
v2.1.0+1.20.5-forge
RELEASE
September 25, 2024
### Added
- Added `config reload` command for dynamic configuration updates
- Added `refreshSkinOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#refreshskinonjoin))
- Implemented caching for skin providers
- Added provider configurations (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providers))
- Added username and url validation for requests
### Fixed
- Fixed old skin directory migration not working
- Prevented overwriting existing skin files during migration
v2.1.0+1.20.3-fabric
RELEASE
September 25, 2024
### Added
- Added `config reload` command for dynamic configuration updates
- Added `refreshSkinOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#refreshskinonjoin))
- Implemented caching for skin providers
- Added provider configurations (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providers))
- Added username and url validation for requests
### Fixed
- Fixed old skin directory migration not working
- Prevented overwriting existing skin files during migration
v2.1.0+1.20.3-neoforge
RELEASE
September 25, 2024
### Added
- Added `config reload` command for dynamic configuration updates
- Added `refreshSkinOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#refreshskinonjoin))
- Implemented caching for skin providers
- Added provider configurations (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providers))
- Added username and url validation for requests
### Fixed
- Fixed old skin directory migration not working
- Prevented overwriting existing skin files during migration
v2.1.0+1.20.3-forge
RELEASE
September 25, 2024
### Added
- Added `config reload` command for dynamic configuration updates
- Added `refreshSkinOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#refreshskinonjoin))
- Implemented caching for skin providers
- Added provider configurations (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providers))
- Added username and url validation for requests
### Fixed
- Fixed old skin directory migration not working
- Prevented overwriting existing skin files during migration
v2.1.0+1.20.2-neoforge
RELEASE
September 25, 2024
### Added
- Added `config reload` command for dynamic configuration updates
- Added `refreshSkinOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#refreshskinonjoin))
- Implemented caching for skin providers
- Added provider configurations (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providers))
- Added username and url validation for requests
### Fixed
- Fixed old skin directory migration not working
- Prevented overwriting existing skin files during migration
v2.1.0+1.20.2-fabric
RELEASE
September 25, 2024
### Added
- Added `config reload` command for dynamic configuration updates
- Added `refreshSkinOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#refreshskinonjoin))
- Implemented caching for skin providers
- Added provider configurations (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providers))
- Added username and url validation for requests
### Fixed
- Fixed old skin directory migration not working
- Prevented overwriting existing skin files during migration
v2.1.0+1.20.2-forge
RELEASE
September 25, 2024
### Added
- Added `config reload` command for dynamic configuration updates
- Added `refreshSkinOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#refreshskinonjoin))
- Implemented caching for skin providers
- Added provider configurations (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providers))
- Added username and url validation for requests
### Fixed
- Fixed old skin directory migration not working
- Prevented overwriting existing skin files during migration
v2.1.0+1.20-forge
RELEASE
September 25, 2024
### Added
- Added `config reload` command for dynamic configuration updates
- Added `refreshSkinOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#refreshskinonjoin))
- Implemented caching for skin providers
- Added provider configurations (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providers))
- Added username and url validation for requests
### Fixed
- Fixed old skin directory migration not working
- Prevented overwriting existing skin files during migration
v2.1.0+1.20-fabric
RELEASE
September 25, 2024
### Added
- Added `config reload` command for dynamic configuration updates
- Added `refreshSkinOnJoin` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#refreshskinonjoin))
- Implemented caching for skin providers
- Added provider configurations (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Configuration#providers))
- Added username and url validation for requests
### Fixed
- Fixed old skin directory migration not working
- Prevented overwriting existing skin files during migration
v2.0.3+1.21
RELEASE
August 20, 2024
### Added
- Added `firstJoinSkinProvider` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Config#firstjoinskinprovider))
### Fixed
- Fixed ability to set config values to `null`
v2.0.3+1.21
RELEASE
August 20, 2024
### Added
- Added `firstJoinSkinProvider` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Config#firstjoinskinprovider))
### Fixed
- Fixed ability to set config values to `null`
v2.0.3+1.21
RELEASE
August 20, 2024
### Added
- Added `firstJoinSkinProvider` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Config#firstjoinskinprovider))
### Fixed
- Fixed ability to set config values to `null`
v2.0.3+1.20.5
RELEASE
August 20, 2024
### Added
- Added `firstJoinSkinProvider` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Config#firstjoinskinprovider))
### Fixed
- Fixed ability to set config values to `null`
v2.0.3+1.20.5
RELEASE
August 20, 2024
### Added
- Added `firstJoinSkinProvider` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Config#firstjoinskinprovider))
### Fixed
- Fixed ability to set config values to `null`
v2.0.3+1.20.5
RELEASE
August 20, 2024
### Added
- Added `firstJoinSkinProvider` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Config#firstjoinskinprovider))
### Fixed
- Fixed ability to set config values to `null`
v2.0.3+1.20.3
RELEASE
August 20, 2024
### Added
- Added `firstJoinSkinProvider` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Config#firstjoinskinprovider))
### Fixed
- Fixed ability to set config values to `null`
v2.0.3+1.20.3
RELEASE
August 20, 2024
### Added
- Added `firstJoinSkinProvider` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Config#firstjoinskinprovider))
### Fixed
- Fixed ability to set config values to `null`
v2.0.3+1.20.3
RELEASE
August 20, 2024
### Added
- Added `firstJoinSkinProvider` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Config#firstjoinskinprovider))
### Fixed
- Fixed ability to set config values to `null`
v2.0.3+1.20.2
RELEASE
August 20, 2024
### Added
- Added `firstJoinSkinProvider` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Config#firstjoinskinprovider))
### Fixed
- Fixed ability to set config values to `null`
v2.0.3+1.20.2
RELEASE
August 20, 2024
### Added
- Added `firstJoinSkinProvider` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Config#firstjoinskinprovider))
### Fixed
- Fixed ability to set config values to `null`
v2.0.3+1.20.2
RELEASE
August 20, 2024
### Added
- Added `firstJoinSkinProvider` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Config#firstjoinskinprovider))
### Fixed
- Fixed ability to set config values to `null`
v2.0.3+1.20
RELEASE
August 20, 2024
### Added
- Added `firstJoinSkinProvider` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Config#firstjoinskinprovider))
### Fixed
- Fixed ability to set config values to `null`
v2.0.3+1.20
RELEASE
August 20, 2024
### Added
- Added `firstJoinSkinProvider` config option (see [wiki](https://github.com/Suiranoil/SkinRestorer/wiki/Config#firstjoinskinprovider))
### Fixed
- Fixed ability to set config values to `null`
v2.0.2+1.21
RELEASE
August 4, 2024
### Added
- Backported to minecraft 1.20-1.20.2
- [Forge] Added support for Forge
### Changed
- Changed minimum java version to 17 for minecraft 1.20-1.20.4
v2.0.2+1.21
RELEASE
August 4, 2024
### Added
- Backported to minecraft 1.20-1.20.2
- [Forge] Added support for Forge
### Changed
- Changed minimum java version to 17 for minecraft 1.20-1.20.4
v2.0.2+1.21
RELEASE
August 4, 2024
### Added
- Backported to minecraft 1.20-1.20.2
- [Forge] Added support for Forge
### Changed
- Changed minimum java version to 17 for minecraft 1.20-1.20.4
v2.0.2+1.20.5
RELEASE
August 4, 2024
### Added
- Backported to minecraft 1.20-1.20.2
- [Forge] Added support for Forge
### Changed
- Changed minimum java version to 17 for minecraft 1.20-1.20.4
v2.0.2+1.20.5
RELEASE
August 4, 2024
### Added
- Backported to minecraft 1.20-1.20.2
- [Forge] Added support for Forge
### Changed
- Changed minimum java version to 17 for minecraft 1.20-1.20.4
v2.0.2+1.20.5
RELEASE
August 4, 2024
### Added
- Backported to minecraft 1.20-1.20.2
- [Forge] Added support for Forge
### Changed
- Changed minimum java version to 17 for minecraft 1.20-1.20.4
v2.0.2+1.20.3
RELEASE
August 4, 2024
### Added
- Backported to minecraft 1.20-1.20.2
- [Forge] Added support for Forge
### Changed
- Changed minimum java version to 17 for minecraft 1.20-1.20.4
v2.0.2+1.20.3
RELEASE
August 4, 2024
### Added
- Backported to minecraft 1.20-1.20.2
- [Forge] Added support for Forge
### Changed
- Changed minimum java version to 17 for minecraft 1.20-1.20.4
v2.0.2+1.20.3
RELEASE
August 4, 2024
### Added
- Backported to minecraft 1.20-1.20.2
- [Forge] Added support for Forge
### Changed
- Changed minimum java version to 17 for minecraft 1.20-1.20.4
v2.0.2+1.20.2
RELEASE
August 3, 2024
### Added
- Backported to minecraft 1.20-1.20.2
- [Forge] Added support for Forge
### Changed
- Changed minimum java version to 17 for minecraft 1.20-1.20.4
v2.0.2+1.20.2
RELEASE
August 3, 2024
### Added
- Backported to minecraft 1.20-1.20.2
- [Forge] Added support for Forge
### Changed
- Changed minimum java version to 17 for minecraft 1.20-1.20.4
v2.0.2+1.20.2
RELEASE
August 3, 2024
### Added
- Backported to minecraft 1.20-1.20.2
- [Forge] Added support for Forge
### Changed
- Changed minimum java version to 17 for minecraft 1.20-1.20.4
v2.0.2+1.20
RELEASE
August 3, 2024
### Added
- Backported to minecraft 1.20-1.20.2
- [Forge] Added support for Forge
### Changed
- Changed minimum java version to 17 for minecraft 1.20-1.20.4
v2.0.2+1.20
RELEASE
August 3, 2024
### Added
- Backported to minecraft 1.20-1.20.2
- [Forge] Added support for Forge
### Changed
- Changed minimum java version to 17 for minecraft 1.20-1.20.4
v2.0.1+1.20.3
RELEASE
July 16, 2024
- added Traditional Chinese (zh_tw.json)
- fixed concurrent modification exception
v2.0.1+1.20.5
RELEASE
July 16, 2024
- added Traditional Chinese (zh_tw.json)
- fixed concurrent modification exception
v2.0.1+1.21
RELEASE
July 16, 2024
- added Traditional Chinese (zh_tw.json)
- fixed concurrent modification exception
v2.0.0+1.21
RELEASE
July 3, 2024
- added support for NeoForge
- added support for singleplayer
- added ely.by skin provider
- added `/skin refresh` command to get up-to-date skin
- added `/skin reset` command to remove skin data
- added proper support for secure servers
- added support for permissions api
- added translations
- skins are now saved per world and not in config folder
- fixed entity flickering on skin reload
- fixed player being left in invalid state on skin reload when dead
v2.0.0+1.20.5
RELEASE
July 3, 2024
- added support for NeoForge
- added support for singleplayer
- added ely.by skin provider
- added `/skin refresh` command to get up-to-date skin
- added `/skin reset` command to remove skin data
- added proper support for secure servers
- added support for permissions api
- added translations
- skins are now saved per world and not in config folder
- fixed entity flickering on skin reload
- fixed player being left in invalid state on skin reload when dead
v2.0.0+1.20.3
RELEASE
July 3, 2024
- added support for NeoForge
- added support for singleplayer
- added ely.by skin provider
- added `/skin refresh` command to get up-to-date skin
- added `/skin reset` command to remove skin data
- added proper support for secure servers
- added support for permissions api
- added translations
- skins are now saved per world and not in config folder
- fixed entity flickering on skin reload
- fixed player being left in invalid state on skin reload when dead
v1.2.6+1.21
RELEASE
June 25, 2024
- fix no permission level for `/skin clear` targets
- fix loading world screen on skin change
- allow command blocks to execute commands
- better skin refresh
v1.2.6+1.20.5
RELEASE
June 25, 2024
- fix no permission level for `/skin clear` targets
- fix loading world screen on skin change
- allow command blocks to execute commands
- better skin refresh
v1.2.6+1.20.3
RELEASE
June 25, 2024
- fix no permission level for `/skin clear` targets
- fix loading world screen on skin change
- allow command blocks to execute commands
- better skin refresh
v1.2.6+1.20.2
RELEASE
June 25, 2024
- fix no permission level for `/skin clear` targets
- fix loading world screen on skin change
- allow command blocks to execute commands
- better skin refresh
v1.2.4+1.20
RELEASE
September 30, 2023
- fix player stops riding entity with skin change
- fix armor and hand items not displaying with skin change
v1.2.4+1.20.2
RELEASE
September 30, 2023
- fix player stops riding entity with skin change
- fix armor and hand items not displaying with skin change
v1.2.2
RELEASE
August 10, 2023
- update to 1.19.4
v1.2.3
RELEASE
August 10, 2023
- update to 1.20-1.20.1