Review of "Grid Desktop" version 1

Details Page Preview

Grid-based desktop widgets and icon management for GNOME. * Desktop icons support: place, organize, and manage files and launchers on the desktop. * Desktop widgets: clock, weather, notes, music, system monitor, clipboard, and image widgets on an aligned grid. * Local clipboard history with quick access. * Drag, resize, and customise each widget independently.

Extension Homepage
https://github.com/pelach/grid-desktop

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

Shexli found 10 issues that may need reviewer attention.

EGO-X-006 warning

extensions should not use lookupByURL or lookupByUUID for current extension access

Use `this`, `this.getSettings()` or `this.path` instead of `lookupByURL()` or `lookupByUUID()` for the current extension.

`extensionUtils`

  • desktopGrid/contextMenu.js:80
    Extension.lookupByUUID(grid.metadata.uuid)

EGO-A-004 warning

extension files should not contain excessive ungated console logging

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

No excessive logging

  • desktopGrid/contextMenu.js:120
    console.error('Grid-desktop: Failed to launch GNOME Settings:', err)
  • desktopGrid/contextMenu.js:153
    console.error('Grid-desktop: Végzetes hiba az URI megnyitásakor:', err)
  • desktopGrid/contextMenu.js:166
    console.error('Grid-desktop: Hiba a kukába helyezéskor:', err)
  • desktopGrid/contextMenu.js:170
    console.error('Grid-desktop: Kukába dobás sikertelen:', e)
  • desktopGrid/contextMenu.js:180
    console.error('Grid-desktop: Nem sikerült kiüríteni a kukát:', e)
  • desktopGrid/contextMenu.js:212
    console.error('Grid-desktop: Hiba a kötet leválasztásakor:', e)
  • desktopGrid/contextMenu.js:227
    console.error('Grid-desktop: Végzetes hiba a kötet leválasztásakor:', err)
  • desktopGrid/contextMenu.js:254
    console.error('Grid-desktop: Nem sikerült megnyitni a tulajdonságokat:', e)
  • desktopGrid/contextMenu.js:87
    console.warn('Gridgets: Could not open preferences window:', err?.message || err)
  • desktopGrid/contextMenu.js:91
    console.warn('Grid-desktop: Synchronous error opening preferences:', e?.message || e)

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

  • utils/moodStore.js:77
    file.load_contents(null)
  • utils/moodStore.js:157
    file.load_contents(null)
  • utils/moodStore.js:237
    file.load_contents(null)
  • utils/moodStore.js:286
    file.load_contents(null)
  • widgets/time/timeAnalog.js:46
    configFile.load_contents(null)

EGO-A-004 warning

extension files should not contain excessive ungated console logging

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

No excessive logging

  • utils/widgetUtils.js:307
    console.error(`Error creating ${errorContext} ${dirPath}:`, e)
  • utils/widgetUtils.js:338
    console.error(`Error reading ${filePath}:`, e)
  • utils/widgetUtils.js:351
    console.error(`Corrupt JSON in ${filePath}; ignoring saved data:`, parseError)
  • utils/widgetUtils.js:368
    console.error(`Error saving JSON to ${filePath}:`, e)
  • utils/widgetUtils.js:386
    console.error(`Error saving JSON to ${filePath}:`, e)
  • utils/widgetUtils.js:662
    console.error('Failed to parse widgets JSON from settings:', e)
  • utils/widgetUtils.js:676
    console.error('Failed to save widgets to settings:', e)

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

  • widgets/clipboard.js:100
    St.Clipboard.get_default()

EGO-X-002 warning

extensions should not use synchronous subprocess APIs in shell code

Shell code should avoid synchronous subprocess APIs like `GLib.spawn_command_line_sync()` and `GLib.spawn_sync()`.

Complete Examples

  • widgets/music/musicVisualizer.js:84
    GLib.spawn_command_line_sync(`mkfifo "${fifoPath}"`)

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

  • utils/generateFakeScreenTime.js

EGO-L-008 warning

Soup.Session instances should be aborted during cleanup

Soup.Session instances should be aborted during cleanup.

Soup.Session.abort

  • utils/rssEngine.js:114
    this.session = new Soup.Session({ timeout: FETCH_TIMEOUT_SECONDS })

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:59
                this._monitorsChangedIdleId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 400, () => {
                    this._monitorsChangedIdleId = 0;
                    this._rebuildGrids();
                    return GLib.SOURCE_REMOVE;
                })

All Versions

Version Status
9 Unreviewed
8 Rejected
7 Rejected
6 Rejected
5 Unreviewed
4 Rejected
3 Rejected
2 Rejected
1 Rejected

Previous Reviews on this Version

pch76 auto- rejected
Auto-rejected because of new version 2 was uploaded