Review of "QuickNotes" version 1

Details Page Preview

A quick notes and tasks panel menu for GNOME Shell with markdown formatting.

Extension Homepage
https://gitlab.gnome.org/josechu/quicknotes

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

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

  • extension.js:82
    this._saveFile.load_contents(null)

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:281
    St.Clipboard.get_default()
  • extension.js:319
    St.Clipboard.get_default()

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

  • extension.js:633
    console.log(`QuickNotes: Markdown error — ${e}`)
  • extension.js:675
    console.log(`QuickNotes: Theme colors unavailable — ${e}`)
  • extension.js:93
    console.error(`QuickNotes: Load failed — ${e}`)
  • extension.js:130
    console.error(`QuickNotes: Async save — ${e}`)
  • extension.js:133
    console.error(`QuickNotes: Save error — ${e}`)
  • extension.js:143
    console.error(`QuickNotes: Sync save — ${e}`)
  • extension.js:156
    console.error(`QuickNotes: Bad tab-definitions — ${e}`)

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:205
            this._contentArea = new St.BoxLayout({
                vertical: true, x_expand: true, y_expand: true,
            })
  • extension.js:564
    this._focusTarget = textActor
  • extension.js:188
    this._headerBar = new St.BoxLayout({ x_expand: true, style: 'padding-bottom: 6px;' })
  • extension.js:184
            this._mainBox = new St.BoxLayout({
                vertical: true, style: 'width: 350px; min-height: 250px;',
            })
  • extension.js:189
    this._tabBar = new St.BoxLayout({ x_expand: true })

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:205
            this._contentArea = new St.BoxLayout({
                vertical: true, x_expand: true, y_expand: true,
            })
  • extension.js:188
    this._headerBar = new St.BoxLayout({ x_expand: true, style: 'padding-bottom: 6px;' })
  • extension.js:184
            this._mainBox = new St.BoxLayout({
                vertical: true, style: 'width: 350px; min-height: 250px;',
            })
  • extension.js:189
    this._tabBar = new St.BoxLayout({ x_expand: true })

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:712
                    entry.clutter_text.connect('activate', () => {
                        content.tasks.splice(i + 1, 0, '');
                        this._queueSave();
                        renderTasks(i + 1);
                    })
  • extension.js:718
                    entry.clutter_text.connect('key-press-event', (_a, event) => {
                        if (event.get_key_symbol() === Clutter.KEY_BackSpace
                            && entry.get_text() === ''
                            && content.tasks.length > 1) {
                            content.tasks.spli
  • extension.js:707
                    entry.clutter_text.connect('text-changed', () => {
                        content.tasks[i] = entry.get_text();
                        this._queueSave();
                    })

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:521
            GLib.timeout_add(GLib.PRIORITY_DEFAULT, 50, () => {
                this._focusTarget?.grab_key_focus();
                return GLib.SOURCE_REMOVE;
            })
  • extension.js:748
                        GLib.timeout_add(GLib.PRIORITY_DEFAULT, 50, () => {
                            entry.grab_key_focus();
                            return GLib.SOURCE_REMOVE;
                        })

All Versions

Version Status
1 Unreviewed