Engineering's Log

--Lā¤ā˜®šŸ¤š

Update D.36

20:00, refactor is underway - felt like we did 8 weeks of work in a day. We are rolling the new implementation out to beta - šŸ¤ž let us hope it works.

12:00, we are working on a refactor for Itero API to enable more control and visibility of the upload flow.

2022.09.30

14:00, we are testing out each component of Itero and adding some ease-in animations to reduce flickering for our users.

2022.09.28

20:00, we integrated the new Itero TestBed client API into BMS and BPP. We have also updated the keys schema with an itero property and added some documentation. The new action is now ready on the staging branch. We will be testing further in PlasmoHQ/with-wasm-zig once we roll out Itero 0.8.0. Once it is stable, we will bump bpp to v3.

18:00, we finalized the refactor. The new forge-based key generator increased our bundle size by 200KB due to its CJS nature. However, it works well and makes our upload process visibly faster. The async nature of this package played well with non-blocking our UI.

16:00, we removed rzcoder/node-rsa package from our dependency list and switched to digitalbazaar/forge instead. This package is also used by Expo: expo/expo-cli/tree/main/packages/pkcs12

14:00, we patched the asn1 package with a pnpm override to node-asn1-ber. However, the upstream rzcoder/node-rsa package is using the wrong result from TritonDataCenter/node-asn1, which caused the hash generated to have mismatching bits when processed by the replacement package.

12:00, we found a critical issue in the asn1 package - the Array type check is wrong. We sent a convoy to help, but it seems the planet is deserted: TritonDataCenter/node-asn1/pull/52. This is a big issue since we use it in Itero to generate keys for our packages.

2022.09.27

12:00, we are finally ready to establish a bridge between itero and bpp.

2022.09.26


Update C.35

12:00, we updated the format for Itero's changelog modal, making it more fun.

2022.09.20

20:00, we set up a staging environment to test Itero's trading quarter. We will also be applying the environment setting to test locally as well.

12:00, we updated PlasmoHQ/bpp dependencies, removing Opera store support and making it a monorepo.

2022.09.19

16:00, we released some new features for mb, making it more powerful when working with our monorepo setup.

12:00, rest day. We played around with zx, sending some care package to google/zx/issues/474.

2022.09.18

12:00, we are preparing to launch Itero - trading quarter is ready to be tested in staging.

2022.09.17

12:00, we're tending to some community-contributed PR for the storage module.

2022.09.16

12:00, we shipped PlasmoHQ/plasmo/releases/tag/v0.54.0

2022.09.15


Update B.34

10:00, we solved an issue with using css-module in CSUI. The css parser was trying to output the JSON classes. However, CSUI requires the style to be inlined with the shadowDOM. We fixed it by adding a more specific glob pattern for parsing css, and simply return the raw string content. More info: PlasmoHQ/plasmo/pull/207

2022.09.14

12:00, we are finalizing PlasmoHQ/plasmo/issues/199

10:00, we are testing out a new bitmap image layer for p/vulcan

2022.09.13

16:00, we submitted our application to join the Academy. It was quite a last-minute endeavor, but we got it done nonetheless.

12:00, we merged PlasmoHQ/examples/pull/16 for storage example, which should help folks working with Firefox. We are working on PlasmoHQ/plasmo/issues/199

2022.09.12

10:00, we hosted an intro to extension development workshop at the MLH hack week. The final project can be found here: PlasmoHQ/ghw-workshop

2022.09.11

22:00, we decided to stick to watching the whole document's body. By checking the shadowHost itself for whether its rootNode is the document, we can quickly check whether the component unmounted.

2022.09.10

12:00, we are experimenting with MutationObserver. So far, optimizing it by narrowing down the tree scope has been ineffective. The observer callback did not trigger when our element got removed from the DOM.

2022.09.09

12:00, today is our chore day. We're doing some cleanup around the ship. On the side, we are working on PlasmoHQ/plasmo/pull/191, experimenting over at PlasmoHQ/plasmo-test/tree/main/rfc/rfc-190

2022.09.08


Update A.35

20:00, long day. We decided to add runtime catch to reinitialize the firebase admin app as necessary as a fallback for the deployed environment. That seems to have worked.

16:00, we fixed the window object issue by moving the install section into a dynamically lazy loaded component.

10:00, we found a bug in Itero. The latest version of the extension installation page contains two issues: 1. window object is being statically evaluated in SSR, and 2. firebase-admin instantiation behavior is different between local and production environment. This made debugging runtime extremely gruesome.

2022.09.07

14:00, we are almost there with the new installation page for Itero. This improved page carries an end-to-end guide for extension tester.

12:00, we shipped the zip download button for Itero, allowing developers to manually install the zip for customers who do not want to use our binary.

10:00, we shipped a new signup form on Fronti, accessible via www.plasmo.com

2022.09.06

22:00, we implemented a zip download feature for Itero

18:00, we were s/live

14:00, we implemented a new installation page for Itero, which will guide end-user on self-serving their extension installation.

12:00, we implemented a preview solution for PlasmoHQ/plasmo/pull/183, released in canary. Please try it out and let us know if you find any bug

10:00, we onboarded a new ship onto the Itero highway. Further road construction is on the way, with better onboarding UI and self-served cargo.

2022.09.05

22:00, issues resolved. We found the root cause of the problem - the registry key must be manually created before its value can be set. Stand down red alert.

14:00, red alert: the Itero windows binary could not spawn the elevated process to change the policy on a new machine. Further investigation is being carried out; we suspect there is a bug within the update module.

12:00, we improved the icon generator with more naming variants, plus adding the NODE_ENV as an optional suffix to the asset name. See PlasmoHQ/plasmo/pull/172

10:00, we are working on merging some new community PR on PlasmoHQ/plasmo - Thank you very much for your contribution šŸ™‡. If you make a PR, please let us know your Discord handle so we can add you to the "Contributor" club šŸ„³

2022.09.03

18:00, we signed Itero windows binary via SSL cloud signing - thankfully, our binary was not too big for this application. We will perform end-to-end testing tomorrow to determine whether SmartScreen will recognize our signature.

16:00, we finalized our Linux binary. We were able to spawn a sudo child process, passing down the root password from the user. However, the child process does not terminate properly, and we could not handle runtime error with it. We decided to delegate this to the user to invoke sudo when running our binary in Linux environment.

14:00, we found a bug in Itero's binary cli. Our ternary condition was too complex and caused us to overlook its separator. Thus, our default commands always precede the commands passed down.

12:00, we signed off on our foreword for an upcoming book about browser extensions - looking forward to its release.

2022.09.02

15:00, we are attempting to implement the Linux binary for Itero. It's slightly tricky for Linux; the Chrome policy needs to be altered using root permission. The update logic is straightforward, but we're having trouble testing it in our WSL environment.

13:00, we found the latest WSL to be quiet powerful. It can run GUI app such as google-chrome. This would help debug our Linux binary.

google-chrome on WSL

12:00, we set up multipass for Linux VM instantiation. We won't be able to test GUI apps such as Chrome, but we will be able to compile our Linux target.

2022.09.01

Hall of Gratitude

${plasmo:universe}/U64eCftcNBXxHZRu3

Back to Engineering Quarter