Review of "Tailscale QS" version v6 (7)

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

Shexli found 2 issues that may need reviewer attention.

EGO015 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:76
    tailscale.connect('notify::exit-node', () => setVisible())
  • extension.js:77
    tailscale.connect('notify::running', () => setVisible())
  • extension.js:116
                      action.connect('notify::pressed', () => {
                          if (action.pressed)
                              this.add_style_pseudo_class('active');
                          else
                              this.remove_style_pseudo_class('active');
                      })
  • extension.js:130
                      action.connect('notify::pressed', () => {
                          if (action.pressed)
                              this.add_style_pseudo_class('active');
                          else
                              this.remove_style_pseudo_class('active');
                      })
  • extension.js:122
    action.connect('recognize', () => this.activate(Clutter.get_current_event()))
  • extension.js:136
    action.connect('recognize', () => onLongClick())
  • extension.js:361
              dns.connect('toggled', item => {
                  tailscale.accept_dns = item.state;
              })
  • extension.js:368
              lan.connect('toggled', item => {
                  tailscale.allow_lan_access = item.state;
              })
  • extension.js:360
    tailscale.connect('notify::accept-dns', obj => dns.setToggleState(obj.accept_dns))
  • extension.js:353
    tailscale.connect('notify::accept-routes', obj => routes.setToggleState(obj.accept_routes))
  • extension.js:367
    tailscale.connect('notify::allow-lan-access', obj => lan.setToggleState(obj.allow_lan_access))
  • extension.js:279
              tailscale.connect('notify::exit-node-name', () => {
                  this.subtitle = tailscale.exit_node_name;
                  this.menu.setHeader(icon, this.title, this.subtitle);
                  disableExitNodeButton.reactive = tailscale.exit_node !== '';
              })
  • extension.js:341
    tailscale.connect('notify::nodes', obj => updateNodes(obj))
  • extension.js:403
    tailscale.connect('notify::profiles', obj => updateProfiles(obj))
  • extension.js:374
    tailscale.connect('notify::shields-up', obj => shields.setToggleState(obj.shields_up))
  • extension.js:381
    tailscale.connect('notify::ssh', obj => ssh.setToggleState(obj.ssh))
  • extension.js:354
              routes.connect('toggled', item => {
                  tailscale.accept_routes = item.state;
              })
  • extension.js:375
              shields.connect('toggled', item => {
                  tailscale.shields_up = item.state;
              })
  • extension.js:382
              ssh.connect('toggled', item => {
                  tailscale.ssh = item.state;
              })

EGO037 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

alexjfinch auto- rejected
Auto-rejected because of new version v6 (8) was uploaded