<feed xmlns='http://www.w3.org/2005/Atom'>
<title>decky-loader/plugin_loader/loader.py, branch v1.1.0</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.mirror.aerocore.com.cn/SteamDeckHomebrew/decky-loader/'/>
<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://git.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>Added support for including styles/scripts in the header of html files (#29)</title>
<updated>2022-04-07T17:25:03+00:00</updated>
<author>
<name>ttay24</name>
<email>tanner.taylor24@gmail.com</email>
</author>
<published>2022-04-07T17:25:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mirror.aerocore.com.cn/SteamDeckHomebrew/decky-loader/commit/?id=0f14f2707bf0c50d6fbbfda3da66394953ae4128'/>
<id>0f14f2707bf0c50d6fbbfda3da66394953ae4128</id>
<content type='text'>
* Added support for including styles/scripts in the header of html files

* updated route name</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Added support for including styles/scripts in the header of html files

* updated route name</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://git.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>Feature/20 plugins as folders (#24)</title>
<updated>2022-04-06T09:40:11+00:00</updated>
<author>
<name>ttay24</name>
<email>tanner.taylor24@gmail.com</email>
</author>
<published>2022-04-06T09:40:11+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mirror.aerocore.com.cn/SteamDeckHomebrew/decky-loader/commit/?id=85e5554c05a60b701fd69fabe47e74fb83ebfd68'/>
<id>85e5554c05a60b701fd69fabe47e74fb83ebfd68</id>
<content type='text'>
* updated loader to watch directories correctly and pull in main.py; also made sure we pull in main.py; WIP on pulling in the template correctly

* Making other changes to support pulling in templates from other pages</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* updated loader to watch directories correctly and pull in main.py; also made sure we pull in main.py; WIP on pulling in the template correctly

* Making other changes to support pulling in templates from other pages</pre>
</div>
</content>
</entry>
<entry>
<title>added plugin tile view isolation</title>
<updated>2022-04-05T19:40:24+00:00</updated>
<author>
<name>tza</name>
<email>marios8543@gmail.com</email>
</author>
<published>2022-04-05T19:40:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mirror.aerocore.com.cn/SteamDeckHomebrew/decky-loader/commit/?id=30325397d090cfffee1143f21423aff7bd4e6122'/>
<id>30325397d090cfffee1143f21423aff7bd4e6122</id>
<content type='text'>
Tile views will now run each in their own iframe. This makes it more safe as plugins no longer share the same javascript context, and plugin method calls can now be supported from the tile view.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Tile views will now run each in their own iframe. This makes it more safe as plugins no longer share the same javascript context, and plugin method calls can now be supported from the tile view.
</pre>
</div>
</content>
</entry>
<entry>
<title>hot reload now refreshes iframe</title>
<updated>2022-04-04T17:46:35+00:00</updated>
<author>
<name>tza</name>
<email>marios8543@gmail.com</email>
</author>
<published>2022-04-04T17:46:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mirror.aerocore.com.cn/SteamDeckHomebrew/decky-loader/commit/?id=8d0fe5c45ac67ea4eef9a7c6a5e4eaaa57ad01d3'/>
<id>8d0fe5c45ac67ea4eef9a7c6a5e4eaaa57ad01d3</id>
<content type='text'>
also fixed fetch_nocors
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
also fixed fetch_nocors
</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://git.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>
<entry>
<title>Python rewrite (#6)</title>
<updated>2022-04-03T20:50:26+00:00</updated>
<author>
<name>marios</name>
<email>marios8543@gmail.com</email>
</author>
<published>2022-04-03T20:50:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mirror.aerocore.com.cn/SteamDeckHomebrew/decky-loader/commit/?id=5e9c12bac838730d4e216b3779227a9a94447e40'/>
<id>5e9c12bac838730d4e216b3779227a9a94447e40</id>
<content type='text'>
* Initial commit. Untested

* various fixes

Core functionality confirmed working:
 - Iframe injection into steam client
 - Plugin fetching from the iframe
 - Plugin opening

* Added function to fetch resources from steam

* Improved injector module, added server-js communication

- Injector module now has methods for better lower-level manipulation of the tab debug websocket.
- Our "front-end" can now communicate with the manager (2-way), completely bypassing the chromium sandbox. This works via a dirty debug console trick, whoever wants to know how it works can take a look at the code.
- Added utility methods file, along with an implementation of the aiohttp client that our "front-end" can access, via the system described above.
- Added js implementations of the communication system described above, which can be imported by plugins.

* Added steam_resource endpoint

* Added basic installer script

* retry logic bug fix

* fixed library injection, event propagation, websocket handling

- library is injected directly into the plugins as well as the plugin list
- resolveMethodCall is implemented in the plugin_list.js file, which in turns calls window.sendMessage on the iframe to propagate the event
- websocket method calls are processed in their own tasks now, so as not to block on long-running calls.

Co-authored-by: tza &lt;tza@hidden&gt;
Co-authored-by: WerWolv &lt;werwolv98@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Initial commit. Untested

* various fixes

Core functionality confirmed working:
 - Iframe injection into steam client
 - Plugin fetching from the iframe
 - Plugin opening

* Added function to fetch resources from steam

* Improved injector module, added server-js communication

- Injector module now has methods for better lower-level manipulation of the tab debug websocket.
- Our "front-end" can now communicate with the manager (2-way), completely bypassing the chromium sandbox. This works via a dirty debug console trick, whoever wants to know how it works can take a look at the code.
- Added utility methods file, along with an implementation of the aiohttp client that our "front-end" can access, via the system described above.
- Added js implementations of the communication system described above, which can be imported by plugins.

* Added steam_resource endpoint

* Added basic installer script

* retry logic bug fix

* fixed library injection, event propagation, websocket handling

- library is injected directly into the plugins as well as the plugin list
- resolveMethodCall is implemented in the plugin_list.js file, which in turns calls window.sendMessage on the iframe to propagate the event
- websocket method calls are processed in their own tasks now, so as not to block on long-running calls.

Co-authored-by: tza &lt;tza@hidden&gt;
Co-authored-by: WerWolv &lt;werwolv98@gmail.com&gt;</pre>
</div>
</content>
</entry>
</feed>
