Review of "Pinggy Control" version 0.1.0 (2)

Details Page Preview

Start, stop, and switch between Pinggy SSH tunnel profiles from the Quick Settings panel.

Extension Homepage
https://github.com/ryan-dutton/pinggy-control

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

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

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

  • lib/profileStore.js:62
    file.load_contents(null)

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

GSettings schema XML must be present in package

Extension appears to use GSettings but no `.gschema.xml` file is included in the package.

GSettings Schemas

EGO-P-007 warning

JavaScript files should be reachable from extension.js or prefs.js

Some JavaScript files are not reachable from `extension.js` or `prefs.js` imports.

Don't include unnecessary files

  • viewer/pinggy-viewer.js

EGO-L-002 warning

objects created by extension should be destroyed in disable()

Objects assigned in `enable()` are missing matching `.destroy()` calls in `disable()` or its helper methods.

Destroy all objects

  • extension.js:116
            this._label = new St.Label({
                style_class: 'pinggy-output-text',
                text: '',
            })
  • extension.js:90
            this._title = new St.Label({
                text: this._titleText(initial),
                style_class: 'pinggy-output-title',
            })
  • extension.js:298
    this._profilesSection = new PopupMenu.PopupMenuSection()
  • extension.js:306
    this._stopAllItem = stopAll

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

  • extension.js:116
            this._label = new St.Label({
                style_class: 'pinggy-output-text',
                text: '',
            })
  • extension.js:90
            this._title = new St.Label({
                text: this._titleText(initial),
                style_class: 'pinggy-output-title',
            })
  • extension.js:298
    this._profilesSection = new PopupMenu.PopupMenuSection()
  • extension.js:306
    this._stopAllItem = stopAll

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:521
                monitor.connect('changed', (_m, _f, _other, eventType) => {
                    if (
                        eventType === Gio.FileMonitorEvent.CHANGES_DONE_HINT ||
                        eventType === Gio.FileMonitorEvent.CREATED
                    ) {
                        this._store.load();
            

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:493
                GLib.timeout_add(GLib.PRIORITY_DEFAULT, 300, () => {
                    const socketPath = this._pinggyManager?.socketPathFor(domain);
                    if (socketPath)
                        this._viewerLauncher?.openFor(profile, socketPath);
                    return GLib.SOURCE_REMOVE;
             

All Versions

Version Status
0.1.0 (4) Unreviewed
0.1.0 (3) Rejected
0.1.0 (2) Rejected
0.1.0 (1) Rejected

Previous Reviews on this Version

Ryan auto- rejected
Auto-rejected because of new version 0.1.0 (3) was uploaded