Review of "Tailscale QS" version v7 (11)

Details Page Preview

Add Tailscale to GNOME quick settings. Fork of joaophi/tailscale-gnome-qs with continued maintenance and improvements. Features: • Quick Toggle — Enable/disable Tailscale directly from the Quick Settings panel • Copy Node IP - Long-click a node to copy that node's ip address to the clipboard • Exit Nodes — Select and disconnect exit nodes, including Mullvad support with country flag display • Multi-Account — Switch between multiple Tailscale accounts (profiles) •Status Indicator — Visual indication of your Tailscale connection status NOTE: This extension accesses the clipboard to copy the node ip address. NOTE: Make sure you set your user as tailscale operator: `sudo tailscale set --operator=$USER`

Extension Homepage
https://github.com/tailscale-qs/tailscale-gnome-qs

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

Shexli found 3 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:342
    St.Clipboard.get_default()
  • extension.js:343
    St.Clipboard.get_default()

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:79
    this._RunningNotifier = tailscale.connect('notify::running', () => setVisible())
  • extension.js:78
    this._exitNodeNotifier = tailscale.connect('notify::exit-node', () => setVisible())
  • extension.js:127
    action.connect('notify::pressed', () => {
                          if (action.pressed)
                              this.add_style_pseudo_class('active');
                          else
                              this.remove_style_pseudo_class('active');
                      })

EGO-L-008 warning

Soup.Session instances should be aborted during cleanup

Soup.Session instances should be aborted during cleanup.

Soup.Session.abort

  • tailscale.js:11
            this.session = new Soup.Session({
                'remote-connectable': address,
                'timeout': 0,
                'idle-timeout': 0,
            })

All Versions

Version Status
v7 (14) Active
v7 (13) Rejected
v7 (12) Rejected
v7 (11) Rejected
v7 (10) Rejected
v6 (9) Active
v6 (8) Rejected
v6 (7) Rejected
v6 (6) Rejected
5 Active
4 Inactive
3 Inactive
2 Rejected
1 Rejected

Previous Reviews on this Version

JustPerfection rejected
1. Timeout should be removed before creating a new one (line 157 `extension.js`). 2. You should call destroy on the instance (line 348 `extension.js`).