Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/OctoPrint/OctoPrint.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorGina Häußge <gina@octoprint.org>2021-11-30 15:53:35 +0300
committerGina Häußge <gina@octoprint.org>2021-11-30 15:53:35 +0300
commit118eaa66b499e70a7889d94c6103e364e7b705aa (patch)
treee1d638c2e36f56275857f9b29b80fb4016004e09 /docs
parent3c094f55852f322e22f8446b61caebee6f30ddc8 (diff)
📝 Fix doc bug reported in #4251
Plugins get on_plugin_enabled called *before* injection. Closes #4251
Diffstat (limited to 'docs')
-rw-r--r--docs/images/plugins_lifecycle.pngbin36529 -> 0 bytes
-rw-r--r--docs/images/plugins_lifecycle.svg4
-rw-r--r--docs/plugins/concepts.rst2
3 files changed, 5 insertions, 1 deletions
diff --git a/docs/images/plugins_lifecycle.png b/docs/images/plugins_lifecycle.png
deleted file mode 100644
index f0fe1e2d6..000000000
--- a/docs/images/plugins_lifecycle.png
+++ /dev/null
Binary files differ
diff --git a/docs/images/plugins_lifecycle.svg b/docs/images/plugins_lifecycle.svg
new file mode 100644
index 000000000..785e984e9
--- /dev/null
+++ b/docs/images/plugins_lifecycle.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Do not edit this file with editors other than diagrams.net -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" style="background-color: rgb(255, 255, 255);" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="800px" height="436px" viewBox="-0.5 -0.5 800 436" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2021-11-30T12:48:38.412Z&quot; agent=&quot;5.0 (Windows)&quot; version=&quot;15.8.7&quot; etag=&quot;dRCYf0ldIAGVQo3_ZfcA&quot; type=&quot;google&quot;&gt;&lt;diagram id=&quot;KSxbcLmsFqmVZw95xxym&quot; name=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;"><defs><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-dae8fc-1-7ea6e0-1-s-0"><stop offset="0%" style="stop-color: rgb(218, 232, 252); stop-opacity: 1;"/><stop offset="100%" style="stop-color: rgb(126, 166, 224); stop-opacity: 1;"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-ffffff-0.9-ffffff-0.1-s-0"><stop offset="0%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.9;"/><stop offset="100%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.1;"/></linearGradient></defs><g><path d="M 464 140 L 464 335 L 434 335 L 434 388.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 434 393.88 L 430.5 386.88 L 434 388.63 L 437.5 386.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="434" cy="25" rx="11" ry="11" fill="#000000" stroke="#000000" pointer-events="all"/><path d="M 434 40 L 434 77.76" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 429.5 69.88 L 434 78.88 L 438.5 69.88" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 56px; margin-left: 435px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">load</div></div></div></foreignObject><text x="435" y="59" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">load</text></switch></g><rect x="374" y="80" width="120" height="60" rx="9" ry="9" fill="#000000" stroke="#000000" pointer-events="all" transform="translate(2,3)" opacity="0.25"/><rect x="374" y="80" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-dae8fc-1-7ea6e0-1-s-0)" stroke="#6c8ebf" pointer-events="all"/><path d="M 384.15 79 Q 373 79 373 90.15 L 373 104 Q 434 122 495 104 L 495 90.15 Q 495 79 483.85 79 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 110px; margin-left: 375px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">disabled</div></div></div></foreignObject><text x="434" y="114" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">disabled</text></switch></g><rect x="374" y="240" width="120" height="60" rx="9" ry="9" fill="#000000" stroke="#000000" pointer-events="all" transform="translate(2,3)" opacity="0.25"/><rect x="374" y="240" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-dae8fc-1-7ea6e0-1-s-0)" stroke="#6c8ebf" pointer-events="all"/><path d="M 384.15 239 Q 373 239 373 250.15 L 373 264 Q 434 282 495 264 L 495 250.15 Q 495 239 483.85 239 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 270px; margin-left: 375px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">enabled</div></div></div></foreignObject><text x="434" y="274" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">enabled</text></switch></g><path d="M 494 110 L 509 110 L 509 270 L 500.37 270" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 495.12 270 L 502.12 266.5 L 500.37 270 L 502.12 273.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 180px; margin-left: 515px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">enable</div></div></div></foreignObject><text x="515" y="183" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">enable</text></switch></g><path d="M 374 270 L 359 270 L 359 110 L 367.63 110" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 372.88 110 L 365.88 113.5 L 367.63 110 L 365.88 106.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 181px; margin-left: 355px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">disable</div></div></div></foreignObject><text x="355" y="184" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">disable</text></switch></g><path d="M 59 80 L 56.38 80 Q 53.75 80 53.75 90 L 53.75 180 Q 53.75 190 46.38 190 L 42.69 190 Q 39 190 46.38 190 L 50.06 190 Q 53.75 190 53.75 200 L 53.75 290 Q 53.75 300 56.38 300 L 59 300" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)rotate(-90 29 190)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 222px; height: 1px; padding-top: 190px; margin-left: -82px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><pre style="text-align: right"><span style="line-height: 1.2"><font style="font-size: 10px" face="Lucida Console">plugin_manager.plugins</font></span></pre></div></div></div></foreignObject><text x="29" y="194" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">plugin_manager.plugins</text></switch></g><path d="M 69 150 L 289 150 L 319 180 L 319 230 L 69 230 L 69 150 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 289 150 L 289 180 L 319 180" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 248px; height: 1px; padding-top: 190px; margin-left: 71px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="line-height: 15.1199998855591px ; text-align: left"><font face="Lucida Console">plugin.disable</font></div><div style="line-height: 15.1199998855591px ; text-align: left"><font color="#0000ff">deregister hooks</font></div><div style="line-height: 15.1199998855591px ; text-align: left"><font color="#0000ff">deregister implementation</font></div><div style="line-height: 15.1199998855591px ; text-align: left"><font face="Lucida Console">plugin.implementation.on_plugin_disabled</font></div></div></div></div></foreignObject><text x="71" y="193" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="10px">plugin.disable...</text></switch></g><path d="M 549 118 L 759 118 L 789 148 L 789 265 L 549 265 L 549 118 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 759 118 L 759 148 L 789 148" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 238px; height: 1px; padding-top: 192px; margin-left: 551px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="line-height: 15.1199998855591px ; text-align: left"><font face="Lucida Console">plugin.enable</font></div><div style="line-height: 15.1199998855591px ; text-align: left"><font color="#0000ff">register hooks</font></div><div style="line-height: 15.1199998855591px ; text-align: left"><font color="#0000ff">register implementation</font></div><div style="line-height: 15.1199998855591px ; text-align: left"><div><span style="font-family: &quot;lucida console&quot; ; line-height: 15.1199998855591px">plugin.implementation.on_plugin_enabled</span><font face="Lucida Console"><br /></font></div></div><div style="line-height: 15.1199998855591px ; text-align: left"><br /></div><div style="line-height: 15.1199998855591px ; text-align: left">If/as soon as framework has started up:</div><blockquote style="margin: 0 0 0 40px ; border: none ; padding: 0px"><div style="line-height: 15.1199998855591px ; text-align: left"><div style="line-height: 14.0000009536743px"><span style="line-height: 1.26"><font color="#0000ff">inject dependencies into implementation</font></span></div></div><div style="line-height: 15.1199998855591px ; text-align: left"><div style="line-height: 14.0000009536743px"><font face="Lucida Console">plugin.implementation.initialize</font></div></div></blockquote><font face="Lucida Console"></font><div><font face="Lucida Console"><br /></font></div></div></div></div></foreignObject><text x="551" y="195" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="10px">plugin.enable...</text></switch></g><path d="M 459 25 L 559 25 L 589 55 L 589 65 L 459 65 L 459 25 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 559 25 L 559 55 L 589 55" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 128px; height: 1px; padding-top: 45px; margin-left: 461px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="text-align: left"><span style="line-height: 1.26"><font style="font-size: 10px" face="Lucida Console">plugin.load</font></span></div></div></div></div></foreignObject><text x="461" y="48" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="10px">plugin.load</text></switch></g><ellipse cx="434" cy="410" rx="11" ry="11" fill="#000000" stroke="#000000" pointer-events="all"/><ellipse cx="434" cy="410" rx="15" ry="15" fill="transparent" stroke="#000000" pointer-events="all"/><path d="M 404 300 L 404 335 L 434 335 L 434 388.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 434 393.88 L 430.5 386.88 L 434 388.63 L 437.5 386.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 357px; margin-left: 438px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">unload</div></div></div></foreignObject><text x="438" y="360" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">unload</text></switch></g><path d="M 459 370 L 559 370 L 589 400 L 589 410 L 459 410 L 459 370 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 559 370 L 559 400 L 589 400" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 128px; height: 1px; padding-top: 390px; margin-left: 461px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="text-align: left"><span style="line-height: 1.26"><font style="font-size: 10px" face="Lucida Console">plugin.unload</font></span></div></div></div></div></foreignObject><text x="461" y="394" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">plugin.unload</text></switch></g><path d="M 509 205 L 549 191.5" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 439 45 L 459 45" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 319 190 L 359 205" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 439 385 L 459 390" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 339 240 L 334 240 Q 329 240 329 250 L 329 262.5 Q 329 272.5 324 272.5 L 321.5 272.5 Q 319 272.5 324 272.5 L 326.5 272.5 Q 329 272.5 329 282.5 L 329 295 Q 329 305 334 305 L 339 305" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 22px; height: 1px; padding-top: 273px; margin-left: 295px;"><div style="box-sizing: border-box; font-size: 0px; text-align: right;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="text-align: right"><span style="font-size: 10px ; font-family: &quot;lucida console&quot; ; line-height: 16.8000011444092px">plugin_manager.enabled_plugins</span></div></div></div></div></foreignObject><text x="317" y="276" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="end">plug...</text></switch></g><path d="M 339 80 L 334 80 Q 329 80 329 90 L 329 102.5 Q 329 112.5 324 112.5 L 321.5 112.5 Q 319 112.5 324 112.5 L 326.5 112.5 Q 329 112.5 329 122.5 L 329 135 Q 329 145 334 145 L 339 145" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 22px; height: 1px; padding-top: 113px; margin-left: 295px;"><div style="box-sizing: border-box; font-size: 0px; text-align: right;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div style="text-align: left"><span style="font-family: &quot;lucida console&quot; ; line-height: 16.8000011444092px"><font style="font-size: 10px">plugin_manager.disabled_plugins</font></span></div></div></div></div></foreignObject><text x="317" y="116" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="end">plug...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg> \ No newline at end of file
diff --git a/docs/plugins/concepts.rst b/docs/plugins/concepts.rst
index 5e1c624cf..add1acf03 100644
--- a/docs/plugins/concepts.rst
+++ b/docs/plugins/concepts.rst
@@ -39,6 +39,6 @@ Some plugin types require a reload of the frontend or a restart of OctoPrint for
can recognize such plugins by their implementations implementing :class:`~octoprint.plugin.ReloadNeedingPlugin` or
:class:`~octoprint.plugin.RestartNeedingPlugin` or providing handlers for one of the hooks marked correspondingly.
-.. image:: ../images/plugins_lifecycle.png
+.. image:: ../images/plugins_lifecycle.svg
:align: center
:alt: The lifecycle of OctoPrint plugins.