Review of "openwispr-gnome-extension" version 4

Details Page Preview

AI-powered voice-to-text dictation for GNOME. Requires the openwispr companion engine service for recording/transcription. Uses clipboard copy/paste for output (optional auto-paste). Optional remote STT/LLM requests are sent only to user-configured providers.

Extension Homepage
https://github.com/tnfssc/openwispr-gnome-extension

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) warning 3 manual_review 1

Shexli found 4 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:684
    St.Clipboard.get_default()
  • extension.js:703
    St.Clipboard.get_default()

EGO-A-004 warning

extension files should not contain excessive ungated console logging

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

No excessive logging

  • extension.js:100
    console.error(`[openwispr-gnome-extension] Failed to load panel logo icon: ${e}`)
  • extension.js:159
    console.error('[openwispr-gnome-extension] Failed to acquire DBus bus name')
  • extension.js:163
    console.error(`[openwispr-gnome-extension] Failed to export DBus control interface: ${e}`)
  • extension.js:529
    console.error(`[openwispr-gnome-extension] Companion start failed: ${e}`)
  • extension.js:593
    console.error(`[openwispr-gnome-extension] Companion stop failed: ${e}`)
  • extension.js:619
    console.error(`[openwispr-gnome-extension] Failed to connect to companion DBus service: ${e}`)
  • extension.js:696
    console.error(`[openwispr-gnome-extension] Injection failed: ${e}`)
  • extension.js:747
    console.error(`[openwispr-gnome-extension] Failed to restore clipboard: ${e}`)
  • extension.js:756
    console.error(`[openwispr-gnome-extension] Injection failed: ${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:105
            this._icon = new St.Icon(
                this._panelLogoGicon
                    ? {
                        gicon: this._panelLogoGicon,
                        style_class: 'system-status-icon',
                    }
                    : {
                        icon_name: 'microphone-sensitivity-high-symbolic',
    

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:119
            this._indicator.connect('button-press-event', () => {
                this._toggleRecording();
                return Clutter.EVENT_PROPAGATE;
            })

All Versions

Version Status
4 Active
3 Active
2 Rejected
1 Rejected

Previous Reviews on this Version

fmuellner active