just depsinstalls dependencies with Yarn's immutable mode.just buildcompiles TypeScript and SCSS, copies metadata and schemas, and compiles translations.just package productioncreates the production extension ZIP.just package developmentcreates the DevTool-enabled development ZIP.just package checkbuilds and inspects both packages.just installinstalls the development package.just uninstalldisables and removes the extension.just runinstalls the development package and starts a devkit session.just watchrecompiles SCSS as files change.just logsshows recent Aurora entries from the current boot journal.
Use just clean to remove dist/ and just clean all to also remove node_modules/.
just validateruns TypeScript, ESLint, Prettier, and Stylelint checks.just lintruns ESLint only.just test unitruns Shell-free unit tests with the Node test runner.just test coverageruns unit tests with coverage.just shexlipackages the extension and runs the extensions.gnome.org static analyzer.
Pure logic belongs in tests/unit/. GNOME Shell, St, and Clutter integration belongs in
tests/shell/.
Run one feature test on the host with:
just test shell tests/shell/desktop/trayIconsRun all Shell tests with just test shell, or use the preferred Toolbox environment:
just toolbox create
just toolbox testThe Toolbox uses the public, versioned GNOME image from
ghcr.io/luminusos/aurora-shell-ci. Set AURORA_TOOLBOX_IMAGE to test a local replacement and
AURORA_TOOLBOX_NAME when maintaining multiple development toolboxes. Vagrantfile remains
available for manual testing against other GNOME environments.
Containerfile defines the Fedora/GNOME environment shared by CI and Toolbox. Its image tag is
derived from the first shell-version in metadata.json and a hash of the container inputs. CI
publishes a missing amd64 and arm64 image before running validation jobs.
To target a new GNOME generation, update metadata.json, the GNOME type dependencies, and
FEDORA_VERSION in Containerfile. The content change produces a new image tag automatically.
Every pull request runs four checks from .github/workflows/ci.yml:
- Validation with
just validate. - Unit and regression tests.
- Package inspection with
just package check. - Headless GNOME Shell integration tests.
The isolated integration runtime owns its private XDG_RUNTIME_DIR, system D-Bus, and logind mock;
Toolbox does not replace the host services.
Run just shexli to scan the production ZIP. The command uses an installed shexli, or falls back
to uvx --from shexli shexli when available. Review every finding and document accepted warnings
in GNOME Extensions review notes.