Review of "Quick Settings Audio Panel" version 104

Details Page Preview

Create a new panel containing volumes and media control in the quick settings

Extension Homepage
https://github.com/Rayzeq/quick-settings-audio-panel

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) error 1 warning 6

Shexli found 7 issues that may need reviewer attention.

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

  • libs/libpanel/main.js:62
    console.error("[LibPanel] libpanel wasn't directly enabled from extension code. It will not be enabled.")
  • libs/libpanel/main.js:80
    console.error("[LibPanel] libpanel wasn't directly disabled from extension code. It will not be disabled.")
  • libs/libpanel/main.js:94
    console.error(`[LibPanel] ${current_extension_uuid()} tried to add a panel, but the library is disabled.`)
  • libs/libpanel/main.js:105
    console.error("No instance while doing drag & drop, this is a bug")
  • libs/libpanel/main.js:116
    console.error("No instance while doing drag & drop, this is a bug")
  • libs/libpanel/main.js:200
    console.error(e)
  • libs/libpanel/main.js:205
    console.error(e)
  • libs/libpanel/main.js:297
    console.error(e)
  • libs/libpanel/main.js:70
    console.warn(`[LibPanel] ${current_extension_uuid()} depends on libpanel ${VERSION} but libpanel ${instance.VERSION} is loaded`)

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

  • libs/libpanel/gschemas.compiled
    libs/libpanel/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

  • libs/widgets.js:597
            this._label = new St.Label({
                natural_width: 0,
                track_hover: true,
                reactive: 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:44
    this._extension_controller = new ExtensionController(this.settings, this.getLogger(), this.InputVolumeIndicator, OutputVolumeSlider)
  • extension.js:114
    this._indicator = new PanelMenu.Button(0.0, "Audio panel", true)
  • libs/widgets.js:597
            this._label = new St.Label({
                natural_width: 0,
                track_hover: true,
                reactive: 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:136
                    this._panel._grid.connect("child-added", (_self, child) => {
                        child._qsap_vis_changed_callback = child.connect("notify::visible", () => {
                            update_visibility();
                        });
                        update_visibility();
                    }
  • extension.js:142
                    this._panel._grid.connect("child-removed", (_self, child) => {
                        if (child._qsap_vis_changed_callback) {
                            child.disconnect(child._qsap_vis_changed_callback);
                            delete child._qsap_vis_changed_callback;
                        
  • libs/libpanel/panel.js:270
            this.draggable.connect("drag-begin", () => {
                DND.addDragMonitor(this.drag_monitor);
                const grid = this.get_parent();
                const [_, x, y] = grid.transform_stage_point(
                // biome-ignore lint/style/noNonNullAssertion: always set after drag-begin is emit
  • libs/libpanel/panel.js:302
            this._grid.connect("child-added", (_, child) => {
                const handler_id = child.connect("notify::visible", () => this._update_visibility());
                // @ts-expect-error: hack
                child.__libpanel_handler_id = handler_id;
                this._update_visibility();
            })
  • libs/libpanel/panel.js:308
            this._grid.connect("child-removed", (_, child) => {
                // The check is needed because the placeholder doesn't have the signal
                // @ts-expect-error: hack
                if (child.__libpanel_handler_id) {
                    // @ts-expect-error: hack
                    child.disconne
  • libs/widgets.js:553
            this._pactl_path_changed_id = settings.connect("changed::pactl-path", () => {
                this._pactl_path = get_pactl_path(settings)[0];
            })
  • libs/widgets.js:605
            this._label.connect("notify::hover", () => {
                this._label.clutter_text.line_wrap = this._label.hover ? true : false;
                this._label.clutter_text.ellipsize = this._label.hover
                    ? Pango.EllipsizeMode.NONE
                    : Pango.EllipsizeMode.END;
            })

EGO-L-007 warning

main loop sources should be removed before being recreated

Main loop sources should be removed before creating a new source on the same field.

Remove main loop sources

  • libs/widgets.js:203
    this._setup_timeout = setTimeout(setup, 0)

EGO-M-004 error

metadata shell-version must only include plausible stable releases and at most one development release

Field `shell-version` contains invalid values, more than one development release, or implausible future releases.

metadata.json must be well-formed

  • metadata.json
    shell-version=['51']

All Versions

Previous Reviews on this Version

JustPerfection rejected
You cannot send 51 before rc release.