I saw Boop by Ivan Mathy at Product Hunt back in 2020. I loved the idea of a simple scratchpad that could be used to run quick macros on text. I had been using online tools so much and I felt boop was exactly what I needed. Having a handy tool to quickly base64 encode/decode, url encode/decode, json pretty print, etc. was a great idea. I also wanted to build a project in Rust and this seemed like a good fit.
A gist for an example script that I wrote to convert text to owo speak is available here.
The initial implementation used a Custom WebView using a custom fork of Boscop’s 2019 implementation of web-view bindings for Rust (It has since been refactored to a much more cleaner state and contains the features I implemented), which resolved a few issues with frameless windows like resizing and moving the window.
I intended the app to be inter-compatible with the original Boop app, which used scripts written in JS. This inspired me to use a webview so that I could invoke JS scripts on the text. Initial implementation was using CodeMirror as the editor.
I later picked the project back up in 2021 and refactored the code to use Tauri instead, and replaced CodeMirror with AceEditor for a huge performance boost. I also added a few more features like customizing the stylesheet via themes, and introduced the concept the editor being able to retain the pasted information.
- I learnt how to write Context Free Grammers to implement the syntax highlighting for the editor.
- I learnt WinRT the native windows runtime to implement the inital version.
- I learnt how to dynamically import JS script files that export variables.