Review of "Clipboard Indicator" version 73

Details Page Preview

The most popular clipboard manager for GNOME, with over 1M downloads

Extension Homepage
https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator

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 4 manual_review 1

Shexli found 5 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:70
    St.Clipboard.get_default()

EGO-A-004 warning

extension files should not contain excessive ungated console logging

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

No excessive logging

  • extension.js:180
    console.error('Clipboard Indicator: _buildMenu failed', e)
  • extension.js:1022
    console.error('Clipboard Indicator: could not import history', e)
  • extension.js:1093
    console.error('Clipboard Indicator: Failed to refresh indicator')
  • extension.js:1094
    console.error(e)
  • extension.js:1427
    console.error(e)
  • extension.js:1533
    console.error('Clipboard Indicator: Failed to update registry')
  • extension.js:1534
    console.error(e)
  • extension.js:1816
    console.error('Clipboard Indicator: failed to load image preview')
  • extension.js:1817
    console.error(e)

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:19
    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:78
    console.error('Clipboard Indicator: failed to write registry file', e)
  • registry.js:122
    console.error(`Clipboard Indicator: could not read registry file, starting with an empty history: ${e.message}`)
  • registry.js:128
    console.error(moveError)
  • registry.js:172
    console.error(e)
  • registry.js:176
    console.error('Clipboard Indicator: failed to open registry file')
  • registry.js:281
    console.error(e)
  • registry.js:299
    console.error(e)
  • registry.js:340
    console.error(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:1120
            this.#moveFirstClosedId = this.menu.connect('menu-closed', () => {
                this.menu.disconnect(this.#moveFirstClosedId);
                this.#moveFirstClosedId = 0;
    
                const entries = this.#moveFirstOnClose;
                this.#moveFirstOnClose = [];
                for (const entry of
  • extension.js:1320
                this._notifSource.connect('destroy', () => {
                    this._notifSource = null;
                })
  • extension.js:381
    this.clearMenuItem.connect('activate', this._removeAll.bind(this))
  • extension.js:724
    menuItem.imagePreviewBtn.connect('clicked', () => this.#showImagePreview(entry))
  • extension.js:742
    menuItem.editBtn.connect('clicked', () => this.#showEditDialog(menuItem))
  • extension.js:781
            menuItem.pasteBtn.connect('clicked',
                () => this.#pasteItem(menuItem)
            )
  • extension.js:801
    menuItem.tagBtn.connect('clicked', () => this.#showTagDialog(menuItem))
  • extension.js:639
            menuItem.actor.connect('key-press-event', (actor, event) => {
                switch (event.get_key_symbol()) {
                    case Clutter.KEY_Delete:
                        if (menuItem.entry.isFavorite()) {
                            if (CONFIRM_ON_PINNED_DELETE) {
                                this
  • extension.js:119
            this.menu.connect('open-state-changed', (menu, isOpen) => {
                if (!isOpen)
                    this.menu.sourceActor = this;
            })
  • extension.js:263
            this.menu.connect('open-state-changed', (self, open) => {
                this._setFocusOnOpenTimeout = setTimeout(() => {
                    if (!open) return;
    
                    if (this._focusItemOnOpen) {
                        const item = this._focusItemOnOpen;
                        this._focusItemO
  • extension.js:373
            this.resetTimerButton.connect('clicked', () => {
                this._scheduleNextHistoryClear();
            })
  • extension.js:393
    this.settingsMenuItem.connect('activate', this._openSettings.bind(this))

All Versions

Version Status
73 Rejected
72 Active
71 Active
70 Active
69 Active
68 Active
67 Rejected
66 Active
65 Active
64 Active
63 Active
62 Active
61 Active
60 Active
59 Active
58 Inactive
57 Active
56 Active
55 Active
54 Active
53 Active
52 Active
51 Active
50 Active
49 Rejected
48 Rejected
47 Active
46 Rejected
45 Active
44 Active
43 Active
42 Active
41 Rejected
40 Rejected
39 Inactive
38 Active
37 Active
36 Active
35 Inactive
34 Active
33 Active
32 Active
31 Inactive
30 Active
29 Active
28 Active
27 Active
26 Active
25 Active
24 Active
23 Active
22 Active
21 Active
20 Active
19 Active
18 Active
17 Active
16 Active
15 Active
14 Active
13 Active
12 Rejected
11 Active
10 Active
9 Active
8 Active
7 Active
6 Active
5 Active
4 Rejected
3 Rejected
2 Active
1 Rejected

Previous Reviews on this Version

JustPerfection rejected
You cannot use spawn command to remove files (line 496 and 503 `prefs.js`).
Tudmotu posted a review
Ok, will revise