Review of "ClipSafe" version 1.0 (1)

Details Page Preview

Security-first clipboard history for text and images. This extension reads and writes the clipboard to keep a history of copied items. Text is memory-only; images use a session-only 0600 disk cache wiped on logout. Honors password-manager secret hints, masks sensitive entries, with search, regex/app exclusion rules, auto-expire and a keyboard shortcut.

Extension Homepage
https://github.com/piharpi/clipsafe

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-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

  • extension.js:376
    Gio.File.new_for_path(path).load_contents(null)

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:271
    St.Clipboard.get_default()

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:108
            this.menu.connect('open-state-changed', (_m, open) => {
                if (open) {
                    this._searchEntry.set_text('');
                    global.stage.set_key_focus(this._searchEntry.clutter_text);
                } else {
                    this._searchText = '';
                }
            })

EGO-M-008 warning

extensions using unlock-dialog must document it in disable() comments

Extensions using `unlock-dialog` should document the reason in `disable()` comments.

Session Modes

  • extension.js:291
        disable() {
            if (this._ownerChangedId) {
                this._selection.disconnect(this._ownerChangedId);
                this._ownerChangedId = null;
            }
            if (this._sessionId) {
                Main.sessionMode.disconnect(this._sessionId);
                this._sessionId = null;
            }
    

All Versions

Version Status
1.0 (3) Unreviewed
1.0 (2) Rejected
1.0 (1) Rejected

Previous Reviews on this Version

harpi auto- rejected
Auto-rejected because of new version 1.0 (2) was uploaded