Development
June 16, 2026 ยท View on GitHub
Common development tasks are available via make:
| Command | Description |
|---|---|
make build | Build the TypeScript sources |
make typecheck | Type-check without emitting |
make install | Build and install the extension |
make enable | Enable the extension |
make disable | Disable the extension |
make lint | Run ESLint |
make lint-fix | Run ESLint with auto-fix |
make log | Follow the GNOME Shell log |
make pot | Regenerate the translation template |
make merge-po | Regenerate .pot and merge into all .po files |
Run make help to see all available targets.
Release
Pushing a v* tag triggers the build.yml
workflow, which builds the zip and publishes a GitHub Release with it attached.
-
Bump
version:inmeson.build(a plain integer, incremented by 1 โ GNOME uses it to detect updates), commit, and merge. -
Tag the release commit and push:
git tag -a v1.0.0 -m "Release 1.0.0" git push origin v1.0.0
To re-cut, delete the tag (and its Release) first:
git tag -d v1.0.0 # local
git push origin :refs/tags/v1.0.0 # remote
Install the published zip with:
gnome-extensions install hanabi-extension@jeffshee.github.io.shell-extension.zip
License Headers
License headers in src/ are managed with licensure. Configuration is in .licensure.yml.
To check that all files have correct headers:
licensure --project --check
To apply or update headers in-place:
licensure --project --in-place