Engineering's Log


Update D.40


12:00, we found a critical bug on Itero - new signup does not work. We are debugging the issue on production environment.


12:00, investigating PlasmoHQ/plasmo/pull/281, more details in PlasmoHQ/plasmo/issues/267 and PlasmoHQ/plasmo/issues/264


12:00, we refactored the engineering log to have a quarter tag instead of a monthly tag.


12:00, Itero team joining is in Beta.


12:00, we refactored some resource rules and implemented team joining UX.


12:00, Itero team creation, and invites are ready in Beta.


12:00, we are looking to optimize the check for the code scanner.

16:00, we are implementing the team dashboard feature.


12:00, we implemented team creation and workspace switching UI.


12:00, we fixed the layout of the fronti checklist page.

Update C.39


04:00, we are refactoring some of our API to use middleware for auth and standard error handling now that we have a better sense of how our API should look like.


12:00, we made a mistake with the 0.57.0 release - it was pinned to the canary tag instead of latest. We have bumped the patch version and released 0.57.1

16:00, we got hailed by one of our sponsors regarding the new sandbox example not working. We are attempting to investigate.

19:00, we found the issue - apparently, the sandbox initializer was not included in the manifest creation code. Our local works due to the caching of the sandbox template. We released the patch into 0.57.2.

20:00, as the log frequency and the time we have to log decreased, we decided to change the format of our log to be section(top -> bottom).


12:00, we finalized PlasmoHQ/plasmo/issues/263 and are ready to release 0.57.0


12:00, we received an exciting hail from the community. One can use eval inside the sandbox environment, and it is possible to send message events to be eval'ed.

16:00, we were live.


12:00, the new CSUI multiple anchor API works. We are now finalizing the mount code for the other UI libraries and doing touch-up work on the exposed CSUI typing interface.

16:00, we optimized the CSUI multiple anchor mechanism for overlay in React - mounting them all under the same DOM parent.


12:00, we are refactoring the CSUI container to be more modularized. This will improve code reuse in our template engine.

Update B.38


12:00, we are working on a new API for CSUI. This new API will encompass multiple anchor capability: PlasmoHQ/plasmo/issues/198


12:00, we are revamping the code-scanning API to optimize it further. Some of the regexes are very slow.

16:00, we deferred the regex to a WebWorker to avoid blocking the UI thread. We are moving toward caching the code-scanning result for future look-up.


12:00, we released an article regarding Itero Generate Keypairs tool: p/how-to-create-a-consistent-id-for-your-chrome-extension

22:00, we completed the front end for code-scanning.


12:00, we initialized code scanning v0 for Itero. 20:00, we released a quick tool for extension developers who need to quickly generate a key for consistent ID: tools/generate-keypairs.


10:00, we fixed an issue with firefox development not working on the framework: PlasmoHQ/plasmo/issues/258 12:00, we went live.


12:00, we are working on a strategy to support multiple inline anchors.


8:00, we released Itero 0.8.0 - Open Beta. Will be testing everything out on prod and make sure everything is operational. 12:00, we released PlasmoHQ/plasmo/releases/tag/v0.56.0 - it encompasses a leap forward in live-reloading and HMR for extension development. We will talk more about the detail in a future video.

Update A.37


12:00, it's been 24 hours since our investigation with react-refresh. We put a dozen breakpoints and debugger symbols to crawl through the update lifecycle. We noticed that the react-dom mounted root array is not populated in our runtime.

14:00, we tried to guard the render method behind a timeout and trace the render stack of react-dom. So far, the hook that would be used to inject root into the mounted root was never invoked. Stressful.

16:00, we found something working - by invoking the bundle at root parent, the HMR update was able to apply. However, a warning was issued:

Warning: You are calling ReactDOMClient.createRoot() on a container that has already been passed to createRoot() before. Instead, call root.render() on the existing root instead if you want to update it

This indicates that we're not doing HMR, but rather re-mounting the whole root. Something is really wrong with the mounted root...

18:00, breakthrough - we realized that we have been bundling react-refresh into our runtime instead of looking up the existing instance provided by the final runtime. After removing react-refresh from our runtime bundle and consuming the current react-dom instance, HMR worked! This was an issue with react instances as well - component states must use the same react instance. Otherwise, their states will desync.


12:00, we're focusing on PlasmoHQ/plasmo/pull/255. So far, thanks to how plasmo bundle the dependency, we can clearly identify the type of extension entry files coming into the runtime. However, it appears the react-refresh is not working as expected. We're trying to figure out the root cause.


12:00, we were rejected by the Academy as our thesis on warp drive extension not being more popular due to the difficulty of building and testing them was not convincing enough. We also failed to deliver a vision of a broader frontier that we will explore following our deep dive into transwarp drives. We are resuming normal operations and with the feedback from the Academy, we will work toward our true vision and resubmit our application again in 6 months.

18:00, we released PlasmoHQ/plasmo/releases/tag/v0.55.3


12:00, we released PlasmoHQ/plasmo/releases/tag/v0.55.2

16:00, we found a bug with the new key generator, which caused a key mismatch when installing with a host. After properly wrapping the private key, everything's now working.


20:00, we discovered that the Firebase Firestore customMetadata field on the server side is only metadata: questions/58171462/file-metadata-is-not-getting-updated-in-firestore-storage. The Galatic Empire struck hard with this one...

Hall of Gratitude


Back to Engineering Quarter