Review of "Cliporium" version 1

Details Page Preview

A local clipboard history for GNOME Shell. Cliporium reads clipboard text and images to store recent items on this device, never sends them anywhere, and lets you search, pin, and restore them from a keyboard-first popup.

Extension Homepage
https://github.com/engida32/cliporium

No comments.

FAQ

Files

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

Shexli (experimental) warning 3 manual_review 1

Shexli found 4 issues that may need reviewer attention.

EGO-A-005 manual_review

extensions should not access the clipboard directly

Direct clipboard access via `St.Clipboard.get_default()` requires reviewer scrutiny.

Review Guidelines

  • extension.js:53
    St.Clipboard.get_default()

EGO-X-004 warning

extensions should avoid synchronous file IO in shell code

Shell code should avoid synchronous file IO APIs like `GLib.file_get_contents()` and `Gio.File.load_contents()`.

File Operations

  • src/image-store.js:150
    Gio.File.new_for_path(
                this.pathFor(blobPath)
            ).load_contents(null)

EGO-L-003 warning

signals connected by extension should be disconnected in disable()

Signals assigned in `enable()` are missing matching disconnect calls in `disable()` or its helper methods.

Disconnect all signals

  • extension.js:528
            button.connect('key-press-event', (_actor, event) => {
                if (event.get_key_symbol() === Clutter.KEY_Escape)
                    return this._onKeyPress(event);
                return Clutter.EVENT_PROPAGATE;
            })
  • extension.js:226
            clutterText.connect('key-focus-in', () => {
                this._searchPill.add_style_class_name('cliporium-search-focused');
            })
  • extension.js:229
            clutterText.connect('key-focus-out', () => {
                this._searchPill.remove_style_class_name('cliporium-search-focused');
            })
  • extension.js:223
            clutterText.connect('key-press-event', (_actor, event) =>
                this._onKeyPress(event)
            )
  • extension.js:219
            clutterText.connect('text-changed', () => {
                this._showClearConfirm = false;
                this._scheduleSearch();
            })
  • extension.js:182
            this.menu.connect('open-state-changed', (_menu, open) => {
                if (open)
                    this._onOpened();
                else
                    this._onClosed();
            })

EGO-L-004 warning

main loop sources should be removed in disable()

Main loop sources assigned in `enable()` are missing matching removals in `disable()` or its helper methods.

Remove main loop sources

  • extension.js:770
                this._captureTimeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 150, () => {
                    this._captureTimeout = 0;
                    this._captureClipboard().catch(() => {});
                    return GLib.SOURCE_REMOVE;
                })
  • extension.js:623
            this._focusTimeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 50, () => {
                this._focusTimeout = 0;
                if (!this._destroyed)
                    global.stage.set_key_focus(this._search);
                return GLib.SOURCE_REMOVE;
            })
  • extension.js:1650
                this._noticeTimeout = GLib.timeout_add(
                    GLib.PRIORITY_DEFAULT,
                    timeout,
                    () => {
                        this._noticeTimeout = 0;
                        this._noticeText = '';
                        this._noticeWarning = false;
                        thi
  • extension.js:964
            this._searchTimeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 120, () => {
                this._searchTimeout = 0;
                this._refresh();
                return GLib.SOURCE_REMOVE;
            })
  • extension.js:1412
            GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
                if (!this._destroyed && this._previewId)
                    this._previewBack.grab_key_focus();
                return GLib.SOURCE_REMOVE;
            })

All Versions

Version Status
3 Unreviewed
2 Rejected
1 Rejected

Previous Reviews on this Version

engida auto- rejected
Auto-rejected because of new version 2 was uploaded