<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>SidePanel on Agile Software Development</title><link>https://www.agilesoftwaredevelopment.com/en/tags/sidepanel/</link><description>Recent content in SidePanel on Agile Software Development</description><generator>Hugo -- 0.151.0</generator><language>en</language><lastBuildDate>Tue, 27 Oct 2026 18:13:27 +0300</lastBuildDate><atom:link href="https://www.agilesoftwaredevelopment.com/en/tags/sidepanel/index.xml" rel="self" type="application/rss+xml"/><item><title>A Right-Click with a Memory: Why I Store a Counter in a Chrome Menu Item's id</title><link>https://www.agilesoftwaredevelopment.com/en/posts/save-image-as-pdf-mv3/</link><pubDate>Tue, 27 Oct 2026 00:00:00 +0000</pubDate><guid>https://www.agilesoftwaredevelopment.com/en/posts/save-image-as-pdf-mv3/</guid><description>&lt;p&gt;My hobby projects are small Chrome extensions and little single-purpose websites. One of those extensions, &lt;a href="https://chromewebstore.google.com/detail/pdf-to-png/efmncnngmhifenlnkdmphjmdhgbjnmgi?utm_source=asd&amp;amp;utm_medium=blog&amp;amp;utm_campaign=launch_b_en"&gt;PDF to PNG&lt;/a&gt;, unexpectedly climbed to first place in Chrome Web Store searches for &amp;ldquo;pdf to png&amp;rdquo; (well, most of the time), and nearly 500 people use it - which is amazing!&lt;/p&gt;
&lt;p&gt;Once PDF to images worked, I immediately wanted to do the reverse - images -&amp;gt; PDF, only better: right-click an image on any page, have an easy(!) way to adjust the settings, and do everything locally in the browser without uploading the images anywhere!&lt;/p&gt;
&lt;p&gt;I put all those lovely settings in the side panel. Except a regular user might never think to open it, and I did want them to know it was there, without pestering people who were happy with the right-click menu. So I&amp;rsquo;d show it &lt;strong&gt;sometimes&lt;/strong&gt; (or until the user actually clicked something in the panel).&lt;/p&gt;
&lt;p&gt;Then I ran into a Chrome rule: you can only open the panel in response to a click, which, in a menu item click handler, means before the first &lt;code&gt;await&lt;/code&gt;. And to show it sometimes, the extension needs to remember on each click how many times it has already shown it - but reading that from storage takes an &lt;code&gt;await&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The solution - store the counter right in the context menu item&amp;rsquo;s id! :)&lt;/p&gt;
&lt;p&gt;And here it is - &lt;strong&gt;&lt;a href="https://chromewebstore.google.com/detail/nicmmholfekimgabmengbofglgmphnpf?utm_source=asd&amp;amp;utm_medium=blog&amp;amp;utm_campaign=launch_b_en"&gt;Save Image as PDF&lt;/a&gt;&lt;/strong&gt;. Right-click - and your image is already a PDF.&lt;/p&gt;
&lt;video width="100%" autoplay loop muted playsinline style="border-radius: 8px; margin: 20px 0;"&gt;
&lt;source src="https://www.agilesoftwaredevelopment.com/images/save-image-as-pdf/demo.mp4" type="video/mp4"&gt;
Your browser does not support the video tag.
&lt;/video&gt;</description></item></channel></rss>