Review of "Project Quick Switcher" version 1

Details Page Preview

Quickly switch between projects and launch editors or AI agents from the GNOME panel.

Extension Homepage
https://github.com/ba2hannn/Project-Quick-Switcher

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 3

Shexli found 3 issues that may need reviewer attention.

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

  • src/indicator.js:35
    file.load_contents(null)

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:37
            this._fileMonitor.connect('changed', (monitor, file, otherFile, eventType) => {
                if (eventType === Gio.FileMonitorEvent.ATTRIBUTE_CHANGED ||
                    eventType === Gio.FileMonitorEvent.PRE_UNMOUNT ||
                    eventType === Gio.FileMonitorEvent.UNMOUNTED)
                

EGO-L-006 warning

preferences classes should not retain window-scoped objects on instance fields without close-request cleanup

Preferences code stores window-scoped objects on the exported prefs class without `close-request` cleanup.

Destroy all objects

  • prefs.js:33
            this._listGroup = new Adw.PreferencesGroup({
                title: 'Your Projects',
                description: 'Click a project to edit its actions and settings.',
            })
  • prefs.js:61
            this._groupsListGroup = new Adw.PreferencesGroup({
                title: 'Your Groups',
                description: 'Groups run multiple actions from different projects at once. Optionally on a specific workspace.',
            })
  • prefs.js:107
            this._autoSaveId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 1000, () => {
                this._doSave(window);
                this._autoSaveId = 0;
                return GLib.SOURCE_REMOVE;
            })

All Versions

Version Status
2 Active
1 Active

Previous Reviews on this Version

fmuellner active
You should disconnect the file monitor signals on disable. The projects file seems small enough, but it would still be better to not use blocking IO (the process that is blocked in this case is the entire desktop!)