Review of "Habla - Voice Dictation" version 1

Details Page Preview

Panel indicator for local whisper.cpp dictation. Shows a live input level while recording so you can see it hearing you, an elapsed timer, transcription progress and the last transcript. Clicking a transcript or a recent entry copies it to the clipboard. Start, stop, cancel and re-transcribe from the menu or from keyboard shortcuts.

Extension Homepage
https://github.com/enBonnet/habla

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:41
    GLib.file_get_contents(path)

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:179
    St.Clipboard.get_default()

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-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:65
    bar
  • extension.js:148
    this._historyItem = new PopupMenu.PopupSubMenuMenuItem('Recent transcripts')
  • extension.js:130
    this._statusItem = new PopupMenu.PopupMenuItem('Idle', { reactive: false })
  • extension.js:135
    this._transcriptItem = new PopupMenu.PopupMenuItem('')

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:148
    this._historyItem = new PopupMenu.PopupSubMenuMenuItem('Recent transcripts')
  • extension.js:98
    this._settings = extension.getSettings()
  • extension.js:130
    this._statusItem = new PopupMenu.PopupMenuItem('Idle', { reactive: false })
  • extension.js:135
    this._transcriptItem = new PopupMenu.PopupMenuItem('')

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:403
    this._settings.connect(
                    `changed::${key}`, () => this._place())
  • extension.js:152
            this.menu.connect('open-state-changed', (_menu, isOpen) => {
                if (isOpen)
                    this._rebuildHistory();
            })

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:308
                this._lingerId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
                    LINGER_MS[this._phase], () => {
                        this._lingerId = 0;
                        this._retired = this._since;
                        this._phase = 'idle';
                        this._render();
                    
  • extension.js:304
                this._tickId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, TICK_MS,
                    () => (this._tick(), GLib.SOURCE_CONTINUE))

All Versions

Version Status
3 Unreviewed
2 Active
1 Rejected

Previous Reviews on this Version

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