Review of "OTP keys" version 1.0.0 (27)

Details Page Preview

Show and copy otp keys

Extension Homepage
https://github.com/osmank3/otp-keys

No comments.

Diff Against

Files

Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.

All Versions

Version Status
1.0.2 (29) Active
1.0.1 (28) Active
1.0.0 (27) Active
26 Active
25 Active
24 Active
23 Active
22 Active
21 Active
20 Active
19 Active
18 Active
17 Rejected
16 Active
15 Rejected
14 Rejected
13 Active
12 Active
11 Active
10 Active
9 Active
8 Active
7 Inactive
6 Active
5 Active
4 Active
3 Active
2 Active
1 Rejected

Previous Reviews on this Version

JustPerfection waiting for author
What are `vendor/jsqr.js` and `vendor/protobuf-bundle.js`? Can it be installed as dependencies?
osmank3 posted a review
vendor/jsqr.js is browserified a pure javascript QR code reading library. I can't find a library or method for qr reading in gnome specific libraries. vendor/protobuf-bundle.js is browerified brotobufjs/minimal and compiled proto file bundle for importing otpauth-migration://... links which export of Google Authenticator. I also can't find a library or method for process protobuf in gnome specific libraries. So yes they are dependencies which extension needs to work and one of them compiled with extensions specific needs
JustPerfection active
Ok, I'm going to approve this but it would be much better to avoid using them directly in the shell process. Please find a better way or a TUI that can be called via spawn command so you can use them as a dependency.
osmank3 posted a review
Thank you for your review and the approval! I totally understand your concern regarding loading non-trivial JS libraries directly into the GNOME Shell process. I did look into possible native or external alternatives — like using libzbar for QR or any kind of Protobuf handling tools — but I couldn’t find any that were accessible or usable within the GNOME JavaScript (GJS) environment. Since there's no GNOME-native library or binding for these, and using spawn() would introduce new issues with cross-distro compatibility and dependency handling, I chose to embed the necessary JavaScript libraries directly. While spawn() is a possible workaround, it creates multiple challenges: * Different distributions package the required tools under different names (e.g. zbar-tools, protobuf-cli, etc.) * Not all users are comfortable installing packages or debugging missing dependencies. * GNOME Shell extensions have no standard way to declare or enforce external dependencies. My goal was to provide an extension that just works out of the box, with zero friction for the user. For that reason, I browserified the necessary libraries and included them under vendor/, ensuring: * Full offline functionality * No installation steps * Consistent behavior across distributions That said, I’m very open to further improving this. If you have any concrete suggestions on how this can be better structured — for example, deferring execution, isolating logic, or sandboxing resource-intensive operations — I’d be happy to explore them. Thank you again for your time and guidance!