Review of "WinV - Clipboard & Emoji (Windows 11 - style)" version 2

Details Page Preview

Recreates the Windows 11 smart clipboard experience in GNOME: Win+V opens the clipboard history (text and images), while Win+. opens the emoji picker. Floating popups appear near the cursor and include search, item pinning, and a Clear All option. Automatically matches the GNOME Shell theme (light or dark).

Extension Homepage
https://github.com/Peterson047/winv

No comments.

Diff Against

Files

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

Shexli (experimental) warning 5 manual_review 1

Shexli found 6 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

  • clipboardManager.js:31
    St.Clipboard.get_default()
  • extension.js:244
    St.Clipboard.get_default()

EGO-X-003 warning

extensions should not call run_dispose in extension code

Extension code should not call `run_dispose()`.

GObject.Object.run_dispose

  • keyboard.js:94
    this.#device.run_dispose()

EGO-A-004 warning

extension files should not contain excessive ungated console logging

File contains 8 ungated console.log/warn/error calls (threshold: 5).

No excessive logging

  • registry.js:185
    console.error('WinV ensureDir error:', err)
  • registry.js:232
    console.error('WinV writeEntryFile:', e)
  • registry.js:256
    console.error('WinV deleteEntryFile:', e)
  • registry.js:342
    console.error('WinV registry read failed:', e)
  • registry.js:353
    console.error('WinV: registry.txt is corrupt, ignoring:', e)
  • registry.js:361
    console.error('WinV: error loading registry entry:', e)
  • registry.js:393
    console.error('WinV readRecentEmojis:', e)
  • registry.js:401
    console.error('WinV readRecentEmojis parsing failed:', e)

EGO-L-005 warning

owned object references should be released in disable()

Owned references that are cleaned up in `disable()` should also be released with `null` or `undefined`.

Destroy all objects

  • keybindConflict.js:32
    this.settings = new Gio.Settings({ schema_id: schemaId })

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:52
            this._indicator.connect('button-press-event', (_i, event) => {
                if (event.get_button() === Clutter.BUTTON_PRIMARY) {
                    this.open(TAB.CLIPBOARD);
                    return Clutter.EVENT_STOP;
                }
                return Clutter.EVENT_PROPAGATE;
            })

EGO-M-005 warning

metadata session-modes must be omitted when only user mode is declared

Field `session-modes` should be omitted when it only contains `user`.

metadata.json must be well-formed

  • metadata.json
    session-modes=['user']

All Versions

Version Status
3 Unreviewed
2 Rejected
1 Rejected

Previous Reviews on this Version

peterson047 auto- rejected
Auto-rejected because of new version 3 was uploaded