Review of "CGM panel widget" version 10

Details Page Preview

CGM glucose monitor with real-time display and historical graph

Extension Homepage
https://github.com/bramgn/gnome-cgm-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) warning 3

Shexli found 3 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

  • cache.js:23
    this._file.load_contents(null)
  • config.js:32
    file.load_contents(null)

EGO-A-004 warning

extension files should not contain excessive ungated console logging

File contains 10 ungated console.log/warn/error calls (threshold: 5).

No excessive logging

  • config.js:96
    console.log(`Created default CGM config at: ${this.configFile}`)
  • config.js:115
    console.log('Storing LibreLink password for:', this._config.librelink.email)
  • config.js:133
    console.log('Password store result:', success)
  • config.js:157
    console.log('Password lookup result:', password ? 'Found' : 'Not found')
  • config.js:180
    console.log('Password clear result:', success)
  • config.js:61
    console.error('Error loading CGM config:', error)
  • config.js:137
    console.error('Error storing LibreLink password:', error)
  • config.js:161
    console.error('Error retrieving LibreLink password:', error)
  • config.js:184
    console.error('Error clearing LibreLink password:', error)
  • config.js:209
    console.error('Error saving CGM config:', error)

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:131
                this._monitor.connect('changed', (monitor, file, otherFile, eventType) => {
                    if (file.get_basename() === 'config.json' && 
                       (eventType === Gio.FileMonitorEvent.CHANGED || eventType === Gio.FileMonitorEvent.CREATED)) {
                        this._log('Config
  • extension.js:222
            this.menu.connect('open-state-changed', (menu, open) => {
                if (open && !this._isDestroyed) {
                    // Refresh data when popup opens if it's been a while
                    const now = Date.now();
                    const timeSinceLastFetch = (now - this._lastFetchTime) / 1000;

All Versions

Version Status
10 Active
9 Active
8 Inactive
7 Inactive
6 Rejected
5 Rejected
4 Inactive
3 Rejected
2 Inactive
1 Rejected

Previous Reviews on this Version

JustPerfection active
For EGO-X-004 mentioned in Shexli: [Gio.File.load_contents_async](https://gjs-docs.gnome.org/gio20~2.0/gio.file#method-load_contents_async)
bramgn posted a review
Thanks, I noticed the warning as well when running against Shexli. Will address this in an upcoming update.
JustPerfection posted a review
Thanks!