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

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.

FAQ

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:27
    St.Clipboard.get_default()
  • extension.js:166
    St.Clipboard.get_default()
  • extension.js:193
    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:82
    this.#device.run_dispose()

EGO-A-004 warning

extension files should not contain excessive ungated console logging

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

No excessive logging

  • registry.js:149
    console.error('WinV deleteEntryFile:', e)
  • registry.js:223
    console.error('WinV: registry.txt is corrupt, ignoring:', e)
  • registry.js:231
    console.error('WinV: error loading registry entry:', e)
  • registry.js:265
    console.error('WinV readRecentEmojis:', e)
  • registry.js:304
    console.error(e)
  • registry.js:307
    console.error('WinV clearCacheFolder:', e)

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:45
            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-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:173
                GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, () => {
                    this.pasteIntoFocus();
                    return GLib.SOURCE_REMOVE;
                })
  • extension.js:183
                GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, () => {
                    try {
                        Main.inputMethod.commit(char);
                    } catch (e) {
                        console.error('WinV: commit emoji failed, falling back to clipboard:', e);
                        this.copyAndPaste

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

JustPerfection rejected
Version 3 will be reviewed.