You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: add automated backport request process and Shexli review scan (#45)
- Documented the process for requesting maintenance backports via GitHub labels in CONTRIBUTING.md.
- Added a Shexli review scan command to the CI pipeline and documentation for GNOME Extensions Review.
- Updated README.md to clarify testing commands and improve readability.
fix: update Portuguese translations
- Updated the POT-Creation-Date and fixed various translation strings in pt_BR.po.
fix: change default value for auto theme switcher module
- Updated the default value for the `module-auto-theme-switcher` key in gschema.xml from true to false.
chore: enhance justfile with Shexli packaging command
- Added a new command in the justfile to run Shexli for static analysis of the extension package.
refactor: improve module disabling logic
- Refactored the disable method in AuroraShellExtension to call a new private method for disabling all modules.
- Improved BluetoothDeviceItemPatcher to handle disposal and restoration of original children more gracefully.
style: update logging levels from log to debug
- Changed logger calls from log to debug in various modules for better log level management.
fix: clean up disconnect logic in various modules
- Removed unnecessary disconnectObject calls in several modules to prevent potential errors.
- name: Mark inactive posts as stale and close stale issues
134
+
uses: actions/stale@v10
135
+
with:
136
+
stale-issue-label: stale
137
+
stale-pr-label: stale
138
+
days-before-issue-stale: 45
139
+
days-before-issue-close: 14
140
+
days-before-pr-stale: 30
141
+
days-before-close: -1
142
+
days-before-pr-close: -1
143
+
close-issue-label: closed-as-stale
144
+
close-issue-reason: not_planned
145
+
remove-stale-when-updated: true
146
+
operations-per-run: 100
147
+
stale-issue-message: |
148
+
This issue has been marked as stale because it has not had recent activity. Add a comment or remove the `stale` label if it is still relevant.
149
+
close-issue-message: |
150
+
This issue has been closed because it stayed stale without further activity. Reopen it or file a new issue if it is still relevant.
151
+
stale-pr-message: |
152
+
This pull request has been marked as stale because it has not had recent activity. Update it, add a comment, or remove the `stale` label if it should stay active.
-**Run (toolbox):**`just toolbox run` — same as above, but inside the Fedora toolbox
35
+
-**Run (host):**`just run` — packages, installs, then launches a devkit GNOME Shell session
36
+
-**Run (toolbox):**`just toolbox run` — packages/installs on the host, then runs GNOME Shell inside the Fedora toolbox
37
37
-**Create toolbox:**`just toolbox create` — create the `aurora-shell-devel` Fedora toolbox
38
38
-**Remove toolbox:**`just toolbox remove` — delete the toolbox
39
39
-**Validate:**`just validate` — runs tsc, ESLint, Prettier check, and Stylelint
40
+
-**Shexli:**`just shexli` — packages the extension and runs the extensions.gnome.org static analyzer on the generated ZIP
40
41
-**Lint:**`just lint` — runs ESLint only
41
42
-**Watch SCSS:**`just watch` — watches `src/styles/` and recompiles on change
42
43
-**View logs:**`just logs` — shows recent `aurora` entries from the current boot journal
@@ -52,7 +53,7 @@ Do not leave a task incomplete if either command reports errors or failures.
52
53
53
54
### Translation commands
54
55
55
-
-**Regenerate POT template:**`just pot` — builds then scans compiled JS (`dist/`) and writes the `.pot` into `dist/` (a build artifact, **not** committed — avoids `POT-Creation-Date` churn). Run this whenever translatable strings are added or removed.
56
+
-**Regenerate POT template:**`just pot` — builds, then scans compiled JS (`dist/`) and writes the `.pot` into `dist/` (a build artifact, **not** committed — avoids `POT-Creation-Date` churn). Run this whenever translatable strings are added or removed.
56
57
-**Merge new strings into .po files:**`just update-po` — depends on `pot`; regenerates the template into `dist/` then runs `msgmerge` on every `data/po/*.po` against it. The hand-translated `data/po/*.po` files are the committed source of truth.
57
58
-**Compile .mo binaries:**`just compile-mo` — compiles each `po/*.po` into `dist/locale/<lang>/LC_MESSAGES/*.mo`. Called automatically by `just build`.
58
59
@@ -68,7 +69,8 @@ Do not leave a task incomplete if either command reports errors or failures.
68
69
-`context.ts` — `ExtensionContext` interface and implementation
69
70
-`logger.ts` — Abstracted logging
70
71
-`settings.ts` — `SettingsManager` abstraction for GSettings
71
-
-`modules/` — one **folder** per feature module, named after the module (e.g., `dock/dock.ts`); the main entry file shares the folder name
72
+
-`modules/` — feature modules registered by `registry.ts`
73
+
- regular modules use one **folder** per feature module, named after the module (e.g., `dock/dock.ts`); the main entry file shares the folder name
72
74
-`dev/` — developer-only tooling (e.g., `devTool.ts`), gated behind the `AURORA_DEVTOOLS=1` env var. **Not** a feature module: it is not in the registry, prefs, or gschema, and is instantiated directly by `extension.ts`
73
75
-`shared/` — shared utilities used across modules (e.g., `quickSettings.ts`)
74
76
-`styles/` — SCSS stylesheets (compiled to light + dark CSS)
@@ -98,7 +100,7 @@ Do not leave a task incomplete if either command reports errors or failures.
98
100
99
101
## Adding a Module
100
102
101
-
1. Create `src/modules/myModule/myModule.ts` with a `Module` subclass **and** a co-located `definition` export. Every module**must** live in its own folder named after the module (e.g., `dock/dock.ts`, `panel/panel.ts`):
103
+
1. Create `src/modules/myModule/myModule.ts` with a `Module` subclass **and** a co-located `definition` export. Regular modules**must** live in their own folder named after the module (e.g., `dock/dock.ts`, `panel/panel.ts`).
102
104
103
105
```typescript
104
106
import { gettextas_ } from'gettext';
@@ -161,7 +163,7 @@ return [/* …, */ myModule];
161
163
</key>
162
164
```
163
165
164
-
`tests/unit/registry.test.ts` enforces that step 2, step 3, and step 4 stay in parity — including that every module's `section` is a known section id and matches between the registry and `prefsMetadata.ts`. A half-finished addition will fail CI.
166
+
`tests/unit/registry.test.ts` enforces that steps 2, 3, and 4 stay in parity — including that every module's `section` is a known section id and matches between the registry and `prefsMetadata.ts`. A half-finished addition will fail CI.
165
167
166
168
### Prefs sections
167
169
@@ -191,6 +193,19 @@ Per the GNOME review guidelines, clipboard-related keyboard shortcuts must not s
191
193
- Keep `enable()` and `disable()` symmetric.
192
194
- Read settings through `this.context.settings`. Importing `Main`/`Shell`/`St` directly is fine — keep heavy algorithms in shell-free pure files so they stay unit-testable.
193
195
196
+
## Human Review Quality Bar
197
+
198
+
Avoid code that only looks plausible. A human reviewer should be able to read a change and see a real contract, not a guess.
199
+
200
+
- Do not add optional calls such as `object?.method?.(...)` unless that method is a real, documented API or the local type intentionally models it. Never use patterns like `this.disconnectObject?.(this)` on objects that do not own that signal connection contract.
201
+
- Do not ship fake behavior. If a UI label, schema description, README entry, or module subtitle says a feature is wired to NetworkManager, ModemManager, UPower, sensors, widgets, or GNOME internals, the code must actually call the relevant API or clearly describe itself as a fallback.
202
+
- Keep runtime capability checks honest. Hardware-specific modules must detect missing services/devices at runtime and stay inactive or degrade explicitly.
203
+
- Do not scatter `as unknown as ...` casts through feature modules. If GObject construction or Shell internals require a cast, isolate it in a small shared helper/factory with a clear name.
204
+
- Do not leave placeholder helpers, legacy duplicates, or unused compatibility functions after a refactor. Remove dead code instead of keeping it “just in case”.
205
+
- Keep strings and metadata truthful and synchronized across module `definition`, `src/prefsMetadata.ts`, schema XML, README/architecture docs, and `.po` files when strings change.
206
+
- Search for obvious generated-code artifacts before finishing: broken joined words in docs, stale project names, obsolete env vars, and UI descriptions that exceed what is implemented.
207
+
- Prefer explicit D-Bus/property handling over no-op calls that only log success. If a feature cannot be safely implemented yet, make the limitation visible in the title/subtitle/docs rather than implying it works.
208
+
194
209
## Logging Style
195
210
196
211
Prefix every log message with the module name in `[PascalCase]` brackets. Use the global `logger` from `~/core/logger.ts` — never `console.log/warn` or `GLib.log_structured` directly from module code.
0 commit comments