A powerful clipboard manager that combines your clipboard history, emojis, GIFs, kaomojis, and symbols into a single, searchable interface. External Services: • Klipy & Tenor - GIF search and browsing • Google S2 Favicons - Favicon fallback for URLs • Cloudflare Workers - API key storage Extension Homepage: https://github.com/NiffirgkcaJ/all-in-one-clipboard https://gitlab.com/NiffirgkcaJ/all-in-one-clipboard
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
EGO-A-005 manual_review
extensions should not access the clipboard directly
Direct clipboard access via `St.Clipboard.get_default()` requires reviewer scrutiny.
shared/utilities/utilityClipboard.js:10
St.Clipboard.get_default()
shared/utilities/utilityClipboard.js:23
St.Clipboard.get_default()
shared/utilities/utilityClipboard.js:36
St.Clipboard.get_default()
shared/utilities/utilityClipboard.js:51
St.Clipboard.get_default()
EGO-P-007 warning
JavaScript files should be reachable from extension.js or prefs.js
Some JavaScript files are not reachable from `extension.js` or `prefs.js` imports.
Don't include unnecessary files
features/Clipboard/constants/clipboardLayoutConstants.js
features/Clipboard/integrations/clipboardMenuDefinition.js
features/Clipboard/integrations/clipboardSearchProvider.js
features/Clipboard/services/clipboardSearchService.js
features/Clipboard/services/clipboardSelectionService.js
features/Clipboard/tabClipboard.js
features/Clipboard/utilities/clipboardKeyboardShortcuts.js
features/Clipboard/utilities/clipboardSearchUtils.js
features/Clipboard/view/clipboardActionBar.js
features/Clipboard/view/clipboardBaseItemConfig.js
features/Clipboard/view/clipboardBaseView.js
features/Clipboard/view/clipboardBaseWidgetFactory.js
features/Clipboard/view/clipboardGridItemFactory.js
features/Clipboard/view/clipboardGridView.js
features/Clipboard/view/clipboardListItemFactory.js
features/Clipboard/view/clipboardListView.js
features/Emoji/constants/emojiConstants.js
features/Emoji/integrations/emojiMenuDefinition.js
features/Emoji/integrations/emojiSearchProvider.js
features/Emoji/logic/emojiModifier.js
| Version | Status |
|---|---|
| 30 | Active |
| 29 | Active |
| 28 | Active |
| 27 | Active |
| 26 | Active |
| 25 | Active |
| 24 | Active |
| 23 | Active |
| 22 | Rejected |
| 21 | Rejected |
| 20 | Rejected |
| 19 | Active |
| 18 | Rejected |
| 17 | Rejected |
| 16 | Rejected |
| 15 | Active |
| 14 | Rejected |
| 13 | Active |
| 12 | Rejected |
| 11 | Rejected |
| 10 | Active |
| 9 | Rejected |
| 8 | Active |
| 7 | Active |
| 6 | Rejected |
| 5 | Active |
| 4 | Rejected |
| 3 | Rejected |
| 2 | Rejected |
| 1 | Rejected |
1. EGO-P-007: Reachability of JavaScript Files Message: "Some JavaScript files are not reachable from extension.js or prefs.js imports." Explanation: These warnings are false positives resulting from a limitation in static analysis. The files are not "unnecessary"; they are loaded dynamically to optimize performance. - Mechanism: The extension uses a Modular Registry Pattern. Instead of statically importing every feature tab at startup (which would increase memory overhead), the extension uses the asynchronous import() function. - Implementation: - shared/menu/menuOrder.js defines the module paths as strings. - shared/menu/menuRegistry.js iterates through these paths and calls await import(modulePath). - Conclusion: Static linters like shexli cannot follow string-based dynamic imports. All flagged files are vital components of the extension’s UI and logic that are loaded on demand. 2. EGO-A-005: Direct Clipboard Access Message: "Direct clipboard access via St.Clipboard.get_default() requires reviewer scrutiny." Explanation: This warning is triggered because the extension interacts with the system clipboard. Since the core purpose of this extension is to be a Clipboard Manager, this access is mandatory. - Transparency: To assist the manual review process, all clipboard read/write operations have been abstracted and centralized into a single, dedicated utility file: gnome-extensions/extension/shared/utilities/utilityClipboard.js. - Data Integrity: The implementation uses standard GJS/Shell APIs (St.Clipboard) to listen for selection changes and provide the user the ability to cycle through their clipboard history. - Scope: Clipboard access is strictly limited to capturing new entries for the history and restoring selected historical entries back to the system clipboard at the user's request.
1. Shouldn't delay destroy (line 882 `features/Clipboard/view/clipboardBaseView.js`). GNOME Shell doesn't expect the disable function to be async. Also delaying destroy is a bad idea since GNOME Shell needs to re-base in lock screen. 2. You cannot create instance of objects in global scope: - Line 9 `features/Emoji/integrations/emojiSearchProvider.js` - Line 11 `features/GIF/integrations/gifSearchProvider.js` - Line 194 `features/RecentlyUsed/definitions/recentlyUsedDefinitionClipboard.js` - Line 262 `features/RecentlyUsed/definitions/recentlyUsedDefinitionGif.js` - Line 159 `features/RecentlyUsed/definitions/recentlyUsedDefinitionKaomoji.js` - Line 204 `features/RecentlyUsed/definitions/recentlyUsedDefinitionPinned.js` - Line 188 `features/RecentlyUsed/definitions/recentlyUsedDefinitionSymbols.js` - Line 5-7 `shared/menu/menuRegistry.js` [EGO Review Guidelines: Destroy](https://gjs.guide/extensions/review-guidelines/review-guidelines.html#destroy-all-objects) 3. Many lines using `typeof`, `=== 'function'` and unnecessary try-catch wrappers which is the indication of AI usage. 4. The code base is really large for importing to the shell process. I highly recommend to move the logic to an app and move it out of the extension and just make that app as a dependency of this extension. Then you can use d-bus to communicate between the app and this extension. That way, the extension code base will be really small.