2024.12.18:
Started a new project! This time it's AI enabled browser extension. Although I have already launched two projects using the OpenAI API (SEO Meta Description AI and Novine.eu), plus one project that was abandoned, this is my first experience creating an extension.
Browser usage statistics suggest that I should start with a Chrome. However, as a Firefox user who is unwilling to switch my primary browser, I'll also develop the extension for Firefox in parallel.
To make the project more intriguing, I have decided to use JavaScript for the backend, which is also a new challenge for me. Previously I have developed backends only in PHP (during the time when PHP hosting was the most affordable), Java (since the launch of Google App Engine) and Python (since Google App Engine began supporting it).
Stay tuned, I hope this project will gross more than just peanuts. 😂 ðŸ˜
2024.12.20:
✅ First backend version deployed
✅ Prototype extension developed for both Chrome and Firefox
✅ Did 81 push-ups
Time to conduct extensive tests, i.e., eat my own dog food.
2024.12.21:
✅ Came up with the extension icon.
✅ Decided to use MongoDB (another new technology for me).
✅ Implemented rudimentary user management.
Apparently, I have stepped into the ME.N of the MERN tech stack.
2024.12.22:
You are right, those corners were too sharp. Here is the smoothed version.
Spent a day optimizing 45 lines of JavaScript code that were supposed to work in all circumstances, only to find out moments ago that all those lines can be replaced with:
document.execCommand("insertText", false, newText)
The catch: that call is deprecated.
2024.12.23:
✅ Deploying the database on MongoDB Atlas and connecting it to GoogleAppEngine.
✅ Adding cron jobs for user management.
2024.12.24:
✅ Implementing keyboard shortcuts for those who prefer not to click to open the context menu.
The
shortcuts are Alt+Shift+P and Alt+Shift+I; you can start memorizing
them. 🙂 It seems that’s it regarding the core functionality; what
remains is the landing page and integration with a payment processor.
2024.12.26:
As I wrap up the landing page, it's time to dive deeper into UX/UI. Excited to share my chosen color palette! Check out this fantastic palette generator.
Updated palette = updated product icon.
And here is the price table! Major second typescale with WCAG AAA contrasts. My favorite contrast checker: https://webaim.org/resources/contrastchecker/
2024.12.29:
While testing on Windows and using Chrome instead of Chromium, I discovered that the shortcut Alt+Shift+I is reserved and it opens a feedback from. It's a pity since the letters P and I correspond to the first letters of my extension's actions.
Additionally, I found that the extension is not working properly in the Reddit markdown editor (it works fine in the default editor) and in Blogger.
2024.12.30:
I have decided to keep the existing keyboard shortcuts for Firefox and, in Chrome, replace Alt+Shift+I with Alt+Shift+O. It's right between I and P, and my action name contains that letter as well. For a moment, I considered using Alt+Shift+1 and Alt+Shift+2 instead, but they are more challenging to type. Ctrl+Alt combinations are not allowed, as stated in the Key combination requirements for Chrome. In any case, it was my mistake not to check the existing Chrome keyboard shortcuts and Mozilla keyboard shortcuts before deciding on mine.
The prompt still doesn't take the character limit for a particular social network into consideration, and sometimes it interprets questions as instructions. Asking ChatGPT to improve the prompt for its own API did not help.
2024.12.31:
I successfully implemented text replacement for both Blogger and Reddit. The main challenge with Blogger was that the editable text was contained within an iframe, while Reddit presented complexities due to multiple shadowRoot element chainings. Extensive testing is essential to ensure that no negative side effects have been introduced.
2025.01.02:
As shown in the video below, the browser extension displays error messages inside a modal dialog layered over the web page. CSS is loaded remotely, and perhaps I'll also use remotely loaded HTML and JavaScript to completely customize the dialog without requiring the user to update the already installed extension.
UX/UI Tip 2: Restore the previous focus once your modal is closed.
2025.01.05
2025.01.09
✅ Added semantic elements to HTML.
✅ Added essential documents: Terms of Service, Privacy Notice, and Refund Policy.
✅ Connected the custom domain to Google App Engine.
✅ Submitted the domain to the e-commerce provider for approval.
2025.01.31
What has happened meanwhile? Choosing an e-commerce provider and obtaining verification from their side took too long, so I decided to publish the extension without any payment options. I will expose it to a limited number of users and gather their feedback. In the meantime, I have:✅ Opened dedicated accounts on various social networks and linked them on the extension's home page.
✅ Added Google Analytics to the home page.
✅ Improved the extension's modal dialog so that its style does not get messed up with the style of the underlying page.
✅ Separated the development from the deployment source code, which is now being minified, and updated the build scripts accordingly (for both the extension and server side).
✅ Submitted the extension to Mozilla, got verified, and uploaded the signed extension to the website.
And what now? Let's try to find some beta users.
By the way, at this moment, only the Firefox version is available. I have decided to start with that browser, as it has fewer users, and my plan is to, hopefully, increase their number gradually.Total time dedicated to the project before the first launch: 95.5 hours. This is slightly more than two workweeks, which is not bad considering that I have chosen to work with new technologies.
2025.02.02
The first beta users have been onboarded. Only after that I discovered that Firefox, after some time, kills extension background scripts. A user-triggered action on a text would reload the script, but as the unique user ID is fetched asynchronously, sometimes the server request would not contain it. This issue wasn't properly handled either on the server or in the extension. The bug has been fixed and version 0.1.2 released!
2025.02.07
After less than three days of being submitted, the extension has been approved in the Chrome Web Store. It has passed all security checks, and now it is time to onboard some Chrome users as well!
2025.02.12
Software is like a piece of art—it's never truly finished. 🎨 This is the fourth revision of the browser extension icon.
2025.02.13
It is time to create promotional graphics before publishing the extension on the Chrome Web Store.
![]() |
Promotional image (small) |
![]() |
Promotional image (marquee) |
2025.02.22
The latest extension update was approved yesterday by the Chrome Web Store. It took them 3 to 4 days, while Mozilla approved the Firefox version in a few hours. In any case, the extension is no longer in 'closed beta', it now has the official status of 'unlisted' on Chrome and 'experimental' on Firefox. However, anyone with the direct link can install it:
No comments:
Post a Comment