Shows how much of your Codex and Claude usage limits is left, right in the top panel. Click for the 5-hour and weekly windows and their reset times. Reads the local Codex CLI and Claude Code login files; no extra sign-in.
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
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.
extension.js:44
this._fill = new St.Widget({style_class: 'ai-limits-fill'})
extension.js:42
this._name = new St.Label({text: title, style_class: 'ai-limits-row-name', y_align: Clutter.ActorAlign.CENTER})
extension.js:46
this._pct = new St.Label({style_class: 'ai-limits-row-pct', y_align: Clutter.ActorAlign.CENTER})
extension.js:47
this._reset = new St.Label({style_class: 'ai-limits-row-reset', y_align: Clutter.ActorAlign.CENTER})
extension.js:43
this._track = new St.Widget({style_class: 'ai-limits-track', y_align: Clutter.ActorAlign.CENTER})
extension.js:40
this.actor = new St.BoxLayout({style_class: 'ai-limits-row', x_expand: true})
extension.js:87
this._details = new St.BoxLayout({orientation: Clutter.Orientation.VERTICAL, x_expand: true})
extension.js:90
this._message = new St.Label({style_class: 'ai-limits-error'})
extension.js:78
this._plan = new St.Label({style_class: 'ai-limits-service-plan', y_align: Clutter.ActorAlign.CENTER})
extension.js:75
this.actor = new St.BoxLayout({orientation: Clutter.Orientation.VERTICAL, style_class: 'ai-limits-service', x_expand: true})
extension.js:188
this._footer = new St.Label({style_class: 'ai-limits-footer', text: 'Not updated yet'})
extension.js:154
this._panelBox = new St.BoxLayout({style_class: 'ai-limits-panel'})
extension.js:156
this._panelSlash = new St.Label({text: '/', y_align: Clutter.ActorAlign.CENTER})
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`.
extension.js:44
this._fill = new St.Widget({style_class: 'ai-limits-fill'})
extension.js:42
this._name = new St.Label({text: title, style_class: 'ai-limits-row-name', y_align: Clutter.ActorAlign.CENTER})
extension.js:46
this._pct = new St.Label({style_class: 'ai-limits-row-pct', y_align: Clutter.ActorAlign.CENTER})
extension.js:47
this._reset = new St.Label({style_class: 'ai-limits-row-reset', y_align: Clutter.ActorAlign.CENTER})
extension.js:43
this._track = new St.Widget({style_class: 'ai-limits-track', y_align: Clutter.ActorAlign.CENTER})
extension.js:40
this.actor = new St.BoxLayout({style_class: 'ai-limits-row', x_expand: true})
extension.js:87
this._details = new St.BoxLayout({orientation: Clutter.Orientation.VERTICAL, x_expand: true})
extension.js:90
this._message = new St.Label({style_class: 'ai-limits-error'})
extension.js:78
this._plan = new St.Label({style_class: 'ai-limits-service-plan', y_align: Clutter.ActorAlign.CENTER})
extension.js:75
this.actor = new St.BoxLayout({orientation: Clutter.Orientation.VERTICAL, style_class: 'ai-limits-service', x_expand: true})
extension.js:188
this._footer = new St.Label({style_class: 'ai-limits-footer', text: 'Not updated yet'})
extension.js:154
this._panelBox = new St.BoxLayout({style_class: 'ai-limits-panel'})
extension.js:156
this._panelSlash = new St.Label({text: '/', y_align: Clutter.ActorAlign.CENTER})
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.
extension.js:328
this._settings.connect(`changed::${key}`, () => this._indicator?.update(this._state))
| Version | Status |
|---|---|
| 1.0.3 (4) | Unreviewed |
| 1.0.2 (3) | Rejected |
| 1.0.1 (2) | Rejected |
| 1.0.0 (1) | Rejected |