Review of "Clipboard History" version 48

Details Page Preview

Gnome Clipboard History is a clipboard manager GNOME extension that saves items you've copied into an easily accessible, searchable history panel.

Extension Homepage
https://github.com/SUPERCILEX/gnome-clipboard-history

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) error 1 warning 4 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

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

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

  • store.js:45
        console.log(
          EXTENSION_UUID,
          "Failed to create cache dir, extension likely won't work",
          CACHE_DIR,
        )
  • store.js:178
    console.log(EXTENSION_UUID, 'Unknown op type, aborting load.', opType)
  • store.js:189
    console.log(EXTENSION_UUID, 'Parsing error')
  • store.js:221
    console.log(EXTENSION_UUID, 'Failed to move database file')
  • store.js:224
    console.log(EXTENSION_UUID, 'Crash moving database file')
  • store.js:190
    console.error(e)
  • store.js:225
    console.error(e)
  • store.js:267
    console.error(e)

EGO-P-006 warning

unnecessary build and translation artifacts should not be shipped

Compiled GSettings schemas should not be shipped for 45+ packages.

Don't include unnecessary files

  • schemas/gschemas.compiled
    schemas/gschemas.compiled

EGO-P-004 error

GSettings schema XML filename must match schema id

GSettings schema filename must match `<schema-id>.gschema.xml`.

GSettings Schemas

  • schemas/org.gnome.shell.extensions.clipboard-indicator.gschema.xml
    id='org.gnome.shell.extensions.clipboard-history' path='/org/gnome/shell/extensions/clipboard-history/'

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:1042
        this._notifSource.connect('destroy', () => {
          this._notifSource = undefined;
        })
  • extension.js:246
        this.menu.actor.connect('key-press-event', (_, event) =>
          this._handleGlobalKeyEvent(event),
        )
  • extension.js:132
        this.menu.connect('open-state-changed', (self, open) => {
          if (open) {
            this._setMenuWidth();
            this.searchEntry.set_text('');
            this._searchFocusHackCallbackId = GLib.timeout_add(
              GLib.PRIORITY_DEFAULT,
              1,
              () => {
                global.stage.se
  • extension.js:215
        this.privateModeMenuItem.connect('toggled', () => {
          this.settings.set_boolean(
            SettingsFields.PRIVATE_MODE,
            this.privateModeMenuItem.state,
          );
        })

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:626
        this._pasteHackCallbackId = GLib.timeout_add(
          GLib.PRIORITY_DEFAULT,
          1, // Just post to the end of the event loop
          () => {
            const SHIFT_L = 42;
            const INSERT = 110;
    
            const eventTime = Clutter.get_current_event_time() * 1000;
            VirtualKeyboard().notify
  • extension.js:136
            this._searchFocusHackCallbackId = GLib.timeout_add(
              GLib.PRIORITY_DEFAULT,
              1,
              () => {
                global.stage.set_key_focus(this.searchEntry);
                this._searchFocusHackCallbackId = undefined;
                return false;
              },
            )

All Versions

Version Status
48 Active
47 Active
46 Active
45 Active
44 Active
43 Active
42 Active
41 Active
40 Active
39 Active
38 Active
37 Active
36 Active
35 Active
34 Active
33 Active
32 Active
31 Active
30 Active
29 Active
28 Rejected
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 Active
11 Active
10 Active
9 Active
8 Active
7 Active
6 Active
5 Active
4 Active
3 Active
2 Rejected
1 Rejected

Previous Reviews on this Version

fmuellner active