To get automatically notified about SDK changes, you can subscribe to change tracking issue on GitHub.
6.11.0
- New
- Added support for new play action tracking options.
- Added support for software tools to execute scripts.
- M source/PlayniteSDK/Models/AppSoftware.cs
- M source/PlayniteSDK/Models/GameAction.cs
- M source/PlayniteSDK/Plugins/Actions.cs
6.10.0
- New
- Added
ActiveFullscreenView
toIMainViewAPI
API.
- Added
6.9.0
- New
- Added
DeleteDomainCookiesRegex
to web views for deleting domain cookies matching specific regex. - Added
OnGameStartupCancelled
application event which is called when an extension cancels game startup.
- Added
6.8.0
- New
- Added overload to
GetGameMatchesFilter
function for acronym match support.
- Added overload to
6.7.0
- New
- Added overload to
ExpandGameVariables
function for expanding{EmulatorDir}
variable.
- Added overload to
6.6.0
- New
- Added
GetGameMatchesFilter
andGetFilteredGames
methods to IGameDatabase - Toolbox utility can now verify addon and installer manifests.
- Added
6.5.0
- New
- Exposed filtering options for install size and recent activity fields
6.4.0
- New
- Built-in emulator profiles exposed in Emulation API.
- Added an option to switch progress bar mode from inside
ActivateGlobalProgress
dialog function while progress dialog is already opened. - Metadata plugins can provide data for new
InstallSize
field.
6.3.0
New
- Support for plugins to provide search results in new global search view.
- Filter presets (and associated functionality) completely exposed in the SDK.
- Added option for plugins to interrupt game startup by enabling
CancelStartup
property onOnGameStartingEventArgs
event. - Added
StartedProcessId
property toOnGameStartedEventArgs
, containing process ID of started game (if startup source sets it). - Added
ManuallyStopped
property toOnGameStoppedEventArgs
, indicating whether game tracking was manually stopped by a user. - Exposed UI thread dispatcher in main view API. Read more about thread safety here.
- Standard web view now has access to hosting window object via
WindowHost
property. - Added
IsGlobalSearchRequest
toGet*MenuItemsArgs
, to distinguish between menu requests and new global search view requests. - Added AddConvertersSupport method for plugins to supply themes with custom value converters.
Fixed
- Cases where some UI related events (for example for game selections) were not being called at all or too many times.
6.2.2
- Fixed
- Creating OffscreenWebView with custom user agent fails
- Crash when adding sidebar items
- OnGameStopped stopped event is called too early
6.2.0
- New
- Added selected ROM file and source game action to game starting events.
- Exposed selected Desktop view mode in UI API.
- Added option to select multiple games.
- Exposed list of currently filtered games.
- Exposed completion status settings.
- Added option to set user agent for specific web view instance.
- New model changes related to added option to override built-in emulator arguments.
- You can now use F12 on web view windows to open Chromium dev tools.
6.1.0
- New
IsMusicMuted
property exposed in settings API.
6.0.0
Breaking Changes
- Many breaking changes to the entire SDK. All extensions and themes have to updated to work with Playnite 9. See Playnite 9 migration guide for more details.
- Removed IronPython support.
- Extensions no longer log into main
playnite.log
log file, but instead log into separateextensions.log
file. - Playnite 9 changes how library files are stored on disk. This is not breaking change to the SDK, but some existing extensions modify library files directly (which was never supported) and those will not work anymore.
New
- PowerShell extensions are now implemented as proper PowerShell modules.
- Playnite now includes built-in add-on browser that can be used to install/update extension. You need to publish your extension to add-on repository for it to work.
- Ability to inject elements into Sidebar, Top panel and any custom theme that supports specific extension element explicitly.
- Ability to dynamically inject play, install and uninstall actions.
- You can now load extensions from custom directories via
For developers
settings menu. - Added
Trace
severity log messages. These are not written into log files unless enabled inFor developers
settings menu. - Import exclusions can be controlled via the SDK.
- Themes can now add custom mouse cursor and sound files.
5.5.0
- New
- Ability to change progress text when using ActivateGlobalProgress
CurrentExtensionInstallPath
andCurrentExtensionDataPath
global variables for script extensions
5.4.0
- New
- ActivateGlobalProgress can now report specific progress status.
- CanExecuteJavascriptInMainFrame property for WebViews.
- Various data serialization methods (JSON, YAML, TOML)
- CreateWindow for creating native Playnite windows with styling.
- GetCurrentAppWindow to get currently active Playnite window.
5.3.0
Breaking Changes:
- Playnite will no longer load plugins that reference non-SDK Playnite assemblies. See this page for more information.
- Playnite will no longer install extensions and themes that don't have proper version specified. The version string must a valid .NET version string!
Now obsolete:
- These changes do not break compatibility in current version (mentioned methods are still available in SDK), but they will be made breaking in future major Playnite updates.
- Added
Id
to extension and theme manifests. This field is currently not mandatory for existing extensions (Playnite 8 will load installed extensions without an ID, but will not install new ones without an ID), but should be provided for better extension installation and update support. Toolbox will not pack new extensions unlessId
is present. - The way custom menu items are implemented (for main menu and game menu) has been completely changed (the old system still works temporarily). See related documentation page for more information.
- NavigationChanged from IWebView is now obsolete, use new
LoadingChanged
instead.
New
- Metadata plugins can now provide
Features
,AgeRating
,Series
,Region
andPlatform
data. - Extensions can now provide custom menu items for game menus, including nested entries.
- Most useful Playnite settings are now exposed in IPlayniteSettingsAPI.
- ActivateGlobalProgress method to show blocking progress dialog.
- LoadingChanged event for WebViews.
- EvaluateScriptAsync method to execute JS code in a WebView.
- GetCookies method to get webview cookies.
- MarkdownToHtml method for converting Markdown markup to HTML.
- Metadata plugins can now provide
5.2.0
Breaking Changes:
- Toolbox utility has been reworked and accepts different arguments then previously.
New
- Library plugins can now support extra capabilities.
- Added
ImportGame
methods to more easily add new games to the library. - Added OpenPluginSettings method to open view with extension settings (also accessible via
OpenSettingsView
method inherited fromPlugin
class). - Added StartGame.
- Added UriHandler for registering of custom URI method actions.
- Added option settings when creating offscreen web view (currently only option to disable JavaScript execution).
- Added
OnGameSelected
,OnApplicationStopped
andOnLibraryUpdated
events. - Added
Features
game field and appropriate support for it in metadata plugins. - Toolbox utility can now generate plugins and scripts.
- Toolbox utility can pack plugins and scripts into
.pext
file that can be used for easier distribution and installation.
5.1.0
- New
- Added support for creating metadata providers via plugins.
- ChooseImageFile method for dialogs API. Only available in Desktop mode.
- ChooseItemWithSearch method for dialogs API. Only available in Desktop mode.
5.0.1
- Removed reference to LiteDB package. You can remove it from your plugin project if it's present.
5.0.0
Breaking Changes:
- Extension plugins are no longer created by inheriting plugin interface, but rather extending Plugin and LibraryPlugin abstract classes.
- IGameDatabase interface is completely changed and every object collection (Games, Genres, Tags etc.) is now accessible via appropriate
IItemCollection
property. - Game changed dramatically. Fields like genres, tags and others are no longer part of the model itself but just ID pointers to appropriate database objects.
New
- Extended several API with new methods.
3.0.0
- Breaking Changes:
- Removed and added new APIs and API members.
- Game files are no longer stored in single database file. All game and media files are now accessible in their raw form even without user of database API.
2.0.0
Breaking Changes:
- In order to unify terminology used in Playnite's UI and that in SDK, some classes and class members were renamed.
- Extensions (both plugins and scripts) have to provide extension manifest otherwise they won't be loaded.
- Various information about extension (author, version etc.) must be now stored in manifest file.
- Both plugins and scripts have to be stored in the same folder called
Extensions
(rather then in separatePlugins
orScripts
folders). - Signature for default C# plugins has changed and they now have to implement
IGenericPlugin
interface to be loaded.
New Plugin types. There are now two types of plugins that can be implemented:
- Generic Plugin: Same as the old plugins.
- Library Plugin: Used to add new library providers responsible for automatic game import from various sources.
- All existing supported library importers (Steam, GOG etc.) are now distributed as library plugins.
New APIs:
- Static LogManager for easier log operations.
- Web Views API for creating web view windows or accessing offscreen browser.
- Resources API for getting application resources like localized strings.
- Paths API providing information about Playnite's application paths.
- Application Info API providing information about Playnite.
New Methods
- GetPluginUserDataPath: Gets path dedicated for plugins to store user data.
- GetPluginConfiguration: Gets plugin configuration if available.
- LoadPluginSettings: Loads plugin settings.
- SavePluginSettings: Saves plugin settings.
- ExpandGameVariables: Expands dynamic game variables in specified game action.
- CreateLogger: Creates new instance of Playnite logger with name of calling class.
1.1.0
- Breaking Change: Scripts and Plugins must be place in subfolders rather then directly inside of
Scripts
orPlugins
folders. - New:
OnGameStarting
event that will execute before game is started. See events for use from scripts. - New: ShowErrorMessage method in
IDialogsFactory