<feed xmlns='http://www.w3.org/2005/Atom'>
<title>decky-loader/plugin_loader/main.py, branch v3.2.2</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/SteamDeckHomebrew/decky-loader/'/>
<entry>
<title>Work on react frontend loader</title>
<updated>2022-05-13T17:14:47+00:00</updated>
<author>
<name>Jonas Dellinger</name>
<email>jonas@dellinger.dev</email>
</author>
<published>2022-05-13T17:14:47+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/SteamDeckHomebrew/decky-loader/commit/?id=74438a31458af8bddd08d90eacc6d63677bab844'/>
<id>74438a31458af8bddd08d90eacc6d63677bab844</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Bug fixes</title>
<updated>2022-04-29T09:52:24+00:00</updated>
<author>
<name>marios</name>
<email>marios8543@gmail.com</email>
</author>
<published>2022-04-29T09:52:24+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/SteamDeckHomebrew/decky-loader/commit/?id=7d74e98f4f8a47daac85b5de1ef6aa29a1637c06'/>
<id>7d74e98f4f8a47daac85b5de1ef6aa29a1637c06</id>
<content type='text'>
- Fixed KeyError in execute_in_tab
- Changed the plugin process dispatch method, this *should* fix that annoying server hang issue.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Fixed KeyError in execute_in_tab
- Changed the plugin process dispatch method, this *should* fix that annoying server hang issue.
</pre>
</div>
</content>
</entry>
<entry>
<title>method call listener retry bug fix, method call response serializaiton failure fix,</title>
<updated>2022-04-26T20:37:01+00:00</updated>
<author>
<name>marios</name>
<email>marios8543@gmail.com</email>
</author>
<published>2022-04-26T20:37:01+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/SteamDeckHomebrew/decky-loader/commit/?id=fe1f6473e9324be5a3ae7bf5c641d1a652c7b5a6'/>
<id>fe1f6473e9324be5a3ae7bf5c641d1a652c7b5a6</id>
<content type='text'>
- Added retry logic to the QuickAccess tab fetching in the method call listener.
- Added exception handling, in case a plugin method returns something that can't be serialized as JSON.
- Changed a few log calls from info to debug to prevent spam
- Added a filter for asyncio base_event log records, since they get spamy and don't provide any useful info most of the time. This can be turned off with the LOG_BASE_EVENTS envar.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Added retry logic to the QuickAccess tab fetching in the method call listener.
- Added exception handling, in case a plugin method returns something that can't be serialized as JSON.
- Changed a few log calls from info to debug to prevent spam
- Added a filter for asyncio base_event log records, since they get spamy and don't provide any useful info most of the time. This can be turned off with the LOG_BASE_EVENTS envar.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed calling backend functions after restarting steam</title>
<updated>2022-04-22T16:43:52+00:00</updated>
<author>
<name>WerWolv</name>
<email>werwolv98@gmail.com</email>
</author>
<published>2022-04-22T16:43:52+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/SteamDeckHomebrew/decky-loader/commit/?id=340ea91d1c000fc934e02d033cc0a3d7feaf5da2'/>
<id>340ea91d1c000fc934e02d033cc0a3d7feaf5da2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Callsigns (#37)</title>
<updated>2022-04-18T12:57:51+00:00</updated>
<author>
<name>marios</name>
<email>marios8543@gmail.com</email>
</author>
<published>2022-04-18T12:57:51+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/SteamDeckHomebrew/decky-loader/commit/?id=fa776f0d0b7b4ca7071f0aa912be84e81caf6b61'/>
<id>fa776f0d0b7b4ca7071f0aa912be84e81caf6b61</id>
<content type='text'>
* Plugin callsigns, filechangehandler thread bug fix, plugin file perms

- Plugins are now assigned a callsign (a random string), which they use for all internal identification, like resource fetching and method calls. This is to ensure that plugins only access their own resources and methods.
- Made FileChangeHandler send off events to a queue, that is then consumed by the Loader, instead of calling import_plugin on its own, since that caused weird issues with the event loop and the thread watchdog is using.
- Plugins are now owned by root and have read-only permissions. This is handled automatically.

* Improved general look and feel of plugin tab

* Make all plugin entries have the same padding between them

* Make "No plugins installed" text look the same as "No new notifications"

Co-authored-by: WerWolv &lt;werwolv98@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Plugin callsigns, filechangehandler thread bug fix, plugin file perms

- Plugins are now assigned a callsign (a random string), which they use for all internal identification, like resource fetching and method calls. This is to ensure that plugins only access their own resources and methods.
- Made FileChangeHandler send off events to a queue, that is then consumed by the Loader, instead of calling import_plugin on its own, since that caused weird issues with the event loop and the thread watchdog is using.
- Plugins are now owned by root and have read-only permissions. This is handled automatically.

* Improved general look and feel of plugin tab

* Make all plugin entries have the same padding between them

* Make "No plugins installed" text look the same as "No new notifications"

Co-authored-by: WerWolv &lt;werwolv98@gmail.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Use f-strings instead of .format</title>
<updated>2022-04-12T20:27:46+00:00</updated>
<author>
<name>WerWolv</name>
<email>werwolv98@gmail.com</email>
</author>
<published>2022-04-12T20:27:46+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/SteamDeckHomebrew/decky-loader/commit/?id=0359fd966a5a33cd646202d0349ad5bdf01a6d1a'/>
<id>0359fd966a5a33cd646202d0349ad5bdf01a6d1a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>initial browser/installer commit, injector get_tab and stateful utils</title>
<updated>2022-04-07T19:38:26+00:00</updated>
<author>
<name>tza</name>
<email>marios8543@gmail.com</email>
</author>
<published>2022-04-07T19:38:26+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/SteamDeckHomebrew/decky-loader/commit/?id=c65427e693daf3ee96cfd707e74efcb8d9d985f2'/>
<id>c65427e693daf3ee96cfd707e74efcb8d9d985f2</id>
<content type='text'>
- Integrated plugin downloader/installer. It accepts POST requests at /browser/install_plugin, containing an artifact (basically an author/repo string like you'd find on github), and a release version, then fetches the zip file from the repo releases and unzips it inside the plugin dir, after asking for user confirmation (pop-up message in the plugin menu).
- Injector get_tab method. Basically get_tabs with the usual search for a specific tab. Decided to implement this because it was needed again and again, and we kept pasting the same list search one-liner.
- Utilities now have access to the main PluginManager class
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Integrated plugin downloader/installer. It accepts POST requests at /browser/install_plugin, containing an artifact (basically an author/repo string like you'd find on github), and a release version, then fetches the zip file from the repo releases and unzips it inside the plugin dir, after asking for user confirmation (pop-up message in the plugin menu).
- Injector get_tab method. Basically get_tabs with the usual search for a specific tab. Decided to implement this because it was needed again and again, and we kept pasting the same list search one-liner.
- Utilities now have access to the main PluginManager class
</pre>
</div>
</content>
</entry>
<entry>
<title>Reinject loader if steam got restarted</title>
<updated>2022-04-07T07:58:26+00:00</updated>
<author>
<name>WerWolv</name>
<email>werwolv98@gmail.com</email>
</author>
<published>2022-04-07T07:58:26+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/SteamDeckHomebrew/decky-loader/commit/?id=3dec82672a76eec0c4630afa7c2125780be57d0a'/>
<id>3dec82672a76eec0c4630afa7c2125780be57d0a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>enabled logging, fixed loader refresh bug, removed template</title>
<updated>2022-04-06T09:53:19+00:00</updated>
<author>
<name>tza</name>
<email>marios8543@gmail.com</email>
</author>
<published>2022-04-06T09:53:19+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/SteamDeckHomebrew/decky-loader/commit/?id=a6943dd7a25d0d787308897f6f55d44e89c216cf'/>
<id>a6943dd7a25d0d787308897f6f55d44e89c216cf</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>hot reloading, plugin instantiation, plugin main method</title>
<updated>2022-04-04T15:10:02+00:00</updated>
<author>
<name>tza</name>
<email>marios8543@gmail.com</email>
</author>
<published>2022-04-04T15:10:02+00:00</published>
<link rel='alternate' type='text/html' href='http://decky.mirror.aerocore.com.cn/SteamDeckHomebrew/decky-loader/commit/?id=8c142c01bda31a164cf5bacf5a7ae85366334a61'/>
<id>8c142c01bda31a164cf5bacf5a7ae85366334a61</id>
<content type='text'>
- The Loader now watches for file changes in the plugin directory, and will (re)import when a new plugin is created, or an existing one is modified. This is implemented by means of the watchdog library
- Plugin classes are now instantiated (and therefore require a self arg in every method). This way they can maintain a state during the runtime of the loader (or until they are reloaded), and share data between methods.
- Plugins can now have a __main() method, which can include long-running code. Every plugin's main method is ran in a separate asyncio task.
- Plugin methods that start from __ are now uncallable from javascript. This can be helpful when implementing unfinished/development versions of methods.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- The Loader now watches for file changes in the plugin directory, and will (re)import when a new plugin is created, or an existing one is modified. This is implemented by means of the watchdog library
- Plugin classes are now instantiated (and therefore require a self arg in every method). This way they can maintain a state during the runtime of the loader (or until they are reloaded), and share data between methods.
- Plugins can now have a __main() method, which can include long-running code. Every plugin's main method is ran in a separate asyncio task.
- Plugin methods that start from __ are now uncallable from javascript. This can be helpful when implementing unfinished/development versions of methods.
</pre>
</div>
</content>
</entry>
</feed>
