Review of "Vault" version 1

Details Page Preview

Encrypted vaults for GNOME Shell. Create, unlock, lock and delete encrypted folders using CryFS, gocryptfs or EncFS, all from the top bar.

Extension Homepage
https://github.com/uniface-xx/Vault4Gnome

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 7

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:168
    Gio.File.new_for_path(path).load_contents(null)

EGO-P-006 warning

unnecessary build and translation artifacts should not be shipped

Package contains files that often should not be shipped for review.

Don't include unnecessary files

  • install.sh
    install.sh
  • po/vault@gnome-shell.pot
    po/vault@gnome-shell.pot
  • po/zh_CN.po
    po/zh_CN.po

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:549
            this._entry = new St.Entry({
                style_class: 'vault-dialog-entry',
                hint_text: _('Password'),
                can_focus: true,
            })
  • extension.js:639
            this._confirmEntry = new St.Entry({
                style_class: 'vault-dialog-entry',
                hint_text: _('Confirm password'),
                can_focus: true,
            })
  • extension.js:602
            this._dirEntry = new St.Entry({
                style_class: 'vault-dialog-entry',
                hint_text: _('Encrypted directory (optional)'),
                can_focus: true,
            })
  • extension.js:647
    this._hint = new St.Label({ style_class: 'vault-dialog-hint' })
  • extension.js:595
            this._nameEntry = new St.Entry({
                style_class: 'vault-dialog-entry',
                hint_text: _('Vault name'),
                can_focus: true,
            })
  • extension.js:631
            this._passwordEntry = new St.Entry({
                style_class: 'vault-dialog-entry',
                hint_text: _('Password'),
                can_focus: true,
            })
  • extension.js:736
            this._eraseBtn = new St.Button({
                label: _('☐ Also permanently erase encrypted data'),
                toggle_mode: true,
                can_focus: true,
                style_class: 'vault-checkbox',
            })
  • extension.js:816
    this._hint = new St.Label({ style_class: 'vault-dialog-hint' })
  • extension.js:787
            this._nameEntry = new St.Entry({
                style_class: 'vault-dialog-entry',
                hint_text: _('Vault name (optional)'),
                can_focus: true,
            })
  • extension.js:780
            this._pathEntry = new St.Entry({
                style_class: 'vault-dialog-entry',
                hint_text: _('Encrypted directory path'),
                can_focus: 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:549
            this._entry = new St.Entry({
                style_class: 'vault-dialog-entry',
                hint_text: _('Password'),
                can_focus: true,
            })
  • extension.js:639
            this._confirmEntry = new St.Entry({
                style_class: 'vault-dialog-entry',
                hint_text: _('Confirm password'),
                can_focus: true,
            })
  • extension.js:602
            this._dirEntry = new St.Entry({
                style_class: 'vault-dialog-entry',
                hint_text: _('Encrypted directory (optional)'),
                can_focus: true,
            })
  • extension.js:647
    this._hint = new St.Label({ style_class: 'vault-dialog-hint' })
  • extension.js:595
            this._nameEntry = new St.Entry({
                style_class: 'vault-dialog-entry',
                hint_text: _('Vault name'),
                can_focus: true,
            })
  • extension.js:631
            this._passwordEntry = new St.Entry({
                style_class: 'vault-dialog-entry',
                hint_text: _('Password'),
                can_focus: true,
            })
  • extension.js:736
            this._eraseBtn = new St.Button({
                label: _('☐ Also permanently erase encrypted data'),
                toggle_mode: true,
                can_focus: true,
                style_class: 'vault-checkbox',
            })
  • extension.js:816
    this._hint = new St.Label({ style_class: 'vault-dialog-hint' })
  • extension.js:787
            this._nameEntry = new St.Entry({
                style_class: 'vault-dialog-entry',
                hint_text: _('Vault name (optional)'),
                can_focus: true,
            })
  • extension.js:780
            this._pathEntry = new St.Entry({
                style_class: 'vault-dialog-entry',
                hint_text: _('Encrypted directory path'),
                can_focus: 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:649
    this._dirEntry.clutter_text.connect('text-changed', () => this._updateHint())
  • extension.js:648
    this._nameEntry.clutter_text.connect('text-changed', () => this._updateHint())
  • extension.js:742
            this._eraseBtn.connect('clicked', () => {
                this._erase = !this._erase;
                this._eraseBtn.set_label(this._erase
                    ? _('☑ Also permanently erase encrypted data')
                    : _('☐ Also permanently erase encrypted data'));
            })
  • extension.js:817
    this._pathEntry.clutter_text.connect('text-changed', () => this._onPathChanged())

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:288
                GLib.timeout_add(GLib.PRIORITY_DEFAULT, 200, () => {
                    check();
                    return GLib.SOURCE_REMOVE;
                })

All Versions

Version Status
1 Unreviewed