Skip to content

Commit 25ab41e

Browse files
authored
feat: polish dock behavior and extension review readiness (#81)
* feat: polish dock behavior and extension review readiness Introduce configurable dock motion profiles with isolated animation state, press feedback, and integration coverage for catalog and transform behavior. Keep Picture-in-Picture windows above normal windows and visible across workspaces while excluding them from dock smart reveal, including the cross-monitor focus case where PiP previously caused the dock to reappear. Expand Capture Tools with movable annotations, deterministic toolbar placement, and stronger unit and Shell integration coverage. Separate production and development extension entry points, modularize Just recipes, verify package contents, and keep developer-only tooling out of the production archive. Harden lifecycle cleanup across Shell modules, document accepted EGO analyzer findings, align metadata and documentation, and add policy checks for GNOME Extensions review readiness. Validated with type checking, linting, formatting, Shexli, 184 unit tests, 22 GNOME Shell integration tests, and production/development package inspections. * ci: publish development archives in releases Attach both the production extension archive and the separate DevTool-enabled development archive to stable releases and manually dispatched release candidates. Apply the same two-asset policy to nightly pre-releases so QA and contributors can download the development build directly from every published release type. Document the purpose of each asset and keep the production archive as the recommended package for regular installations. Validated workflow YAML syntax, Prettier formatting, and staged diff integrity. The local QA acceptance document is intentionally excluded from this commit. * test: wait for dock hot area rearm Replace fixed DevTool dock animation delays with condition-based polling so the integration test follows the actual Shell state under forced animations. Wait until the selected dock is hidden, its reveal state is cleared, and its hot area is reactive before triggering the simulated edge action. Also wait for show and reveal transitions instead of assuming fixed completion times. This removes the CI race where the pending rearm timer treated the DevTool trigger as a duplicate and then cleared hotAreaActive after the assertion started. Validated with just validate, the host DevTool integration test, and the Toolbox DevTool integration test; both integration runs passed.
1 parent 68971ba commit 25ab41e

81 files changed

Lines changed: 3545 additions & 761 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ jobs:
108108
run: just deps
109109

110110
- name: Run unit tests
111-
run: just unit-test
111+
run: just test unit
112112

113113
build:
114114
name: Build
@@ -127,14 +127,16 @@ jobs:
127127
- name: Install dependencies
128128
run: just deps
129129

130-
- name: Build extension package
131-
run: just package
130+
- name: Build and inspect extension packages
131+
run: just package check
132132

133-
- name: Upload extension zip
133+
- name: Upload extension zips
134134
uses: actions/upload-artifact@v7
135135
with:
136136
name: extension-zip
137-
path: dist/target/aurora-shell@luminusos.github.io.shell-extension.zip
137+
path: |
138+
dist/target/aurora-shell@luminusos.github.io.shell-extension.zip
139+
dist/target/aurora-shell@luminusos.github.io.development.shell-extension.zip
138140
retention-days: 1
139141

140142
integration-tests:
@@ -190,3 +192,6 @@ jobs:
190192
"$XDG_SESSION_ID" seat0 "$(id -u)" "$(id -un)" true
191193
bash scripts/run-shell-tests.sh \
192194
dist/target/aurora-shell@luminusos.github.io.shell-extension.zip
195+
AURORA_DEVTOOLS=1 bash scripts/run-shell-tests.sh \
196+
dist/target/aurora-shell@luminusos.github.io.development.shell-extension.zip \
197+
tests/shell/auroraDevTool.js

.github/workflows/pre-release.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,9 @@ jobs:
116116
tag_name: ${{ needs.nightly-state.outputs.tag_name }}
117117
target_commitish: ${{ needs.nightly-state.outputs.head_sha }}
118118
name: ${{ needs.nightly-state.outputs.release_name }}
119-
files: dist/target/aurora-shell@luminusos.github.io.shell-extension.zip
119+
files: |
120+
dist/target/aurora-shell@luminusos.github.io.shell-extension.zip
121+
dist/target/aurora-shell@luminusos.github.io.development.shell-extension.zip
120122
generate_release_notes: true
121123
previous_tag: ${{ steps.stable_release.outputs.tag }}
122124
prerelease: true

.github/workflows/release.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,9 @@ jobs:
8989
tag_name: ${{ needs.state.outputs.tag_name }}
9090
target_commitish: ${{ needs.state.outputs.head_sha }}
9191
name: ${{ needs.state.outputs.tag_name }}
92-
files: dist/target/aurora-shell@luminusos.github.io.shell-extension.zip
92+
files: |
93+
dist/target/aurora-shell@luminusos.github.io.shell-extension.zip
94+
dist/target/aurora-shell@luminusos.github.io.development.shell-extension.zip
9395
generate_release_notes: true
9496
prerelease: ${{ github.event_name == 'workflow_dispatch' }}
9597

.just/package.just

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
uuid := "aurora-shell@luminusos.github.io"
2+
3+
# Build the production ZIP.
4+
default: production
5+
6+
# Build the production ZIP.
7+
production: _build _production
8+
9+
# Build the DevTool-enabled ZIP.
10+
development: _build _development
11+
12+
# Build and inspect both ZIPs.
13+
[no-cd]
14+
check: _build _production _development
15+
yarn tsx scripts/check-packages.ts
16+
17+
[no-cd]
18+
_build:
19+
just build
20+
21+
[no-cd]
22+
_production:
23+
#!/usr/bin/env bash
24+
set -e
25+
mkdir -p dist/target
26+
cd dist
27+
28+
extra_sources=()
29+
while IFS= read -r source; do
30+
case "$source" in
31+
dev|extension.dev.js|extension.js|metadata.json|schemas|target) continue ;;
32+
esac
33+
extra_sources+=("--extra-source=$source")
34+
done < <(find . -mindepth 1 -maxdepth 1 -printf '%P\n' | sort)
35+
36+
gnome-extensions pack . \
37+
--force \
38+
--out-dir=target \
39+
"${extra_sources[@]}" \
40+
--schema=schemas/org.gnome.shell.extensions.aurora-shell.gschema.xml
41+
42+
echo "Production package ready."
43+
44+
[no-cd]
45+
_development:
46+
#!/usr/bin/env bash
47+
set -e
48+
work="$(mktemp -d)"
49+
stage="$work/stage"
50+
target="$work/target"
51+
trap 'rm -rf "$work"' EXIT
52+
53+
mkdir -p "$stage" "$target" dist/target
54+
cp -a dist/. "$stage/"
55+
rm -rf "$stage/target"
56+
cp "$stage/extension.dev.js" "$stage/extension.js"
57+
cp "$stage/dev/stylesheet.css" "$stage/stylesheet.css"
58+
cp "$stage/dev/stylesheet-light.css" "$stage/stylesheet-light.css"
59+
cp "$stage/dev/stylesheet-dark.css" "$stage/stylesheet-dark.css"
60+
61+
extra_sources=()
62+
while IFS= read -r source; do
63+
case "$source" in
64+
extension.dev.js|extension.js|metadata.json|schemas|target) continue ;;
65+
esac
66+
extra_sources+=("--extra-source=$source")
67+
done < <(find "$stage" -mindepth 1 -maxdepth 1 -printf '%P\n' | sort)
68+
69+
gnome-extensions pack "$stage" \
70+
--force \
71+
--out-dir="$target" \
72+
"${extra_sources[@]}" \
73+
--schema="$stage/schemas/org.gnome.shell.extensions.aurora-shell.gschema.xml"
74+
mv \
75+
"$target/{{ uuid }}.shell-extension.zip" \
76+
"dist/target/{{ uuid }}.development.shell-extension.zip"
77+
78+
echo "Development package ready."

.just/test.just

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
uuid := "aurora-shell@luminusos.github.io"
2+
production_zip := "dist/target/" + uuid + ".shell-extension.zip"
3+
development_zip := "dist/target/" + uuid + ".development.shell-extension.zip"
4+
5+
# List the available test commands.
6+
default:
7+
@just --list test
8+
9+
# Run unit tests.
10+
[no-cd]
11+
unit:
12+
yarn test:unit
13+
14+
# Run unit tests with coverage.
15+
[no-cd]
16+
coverage:
17+
yarn test:unit:coverage
18+
19+
# Run one GNOME Shell integration test.
20+
[no-cd]
21+
shell script:
22+
just package production
23+
bash scripts/run-shell-tests.sh {{ production_zip }} {{ script }}
24+
25+
# Run every production GNOME Shell integration test.
26+
[no-cd]
27+
all:
28+
just package production
29+
bash scripts/run-shell-tests.sh {{ production_zip }}
30+
31+
# Run the DevTool integration test.
32+
[no-cd]
33+
dev:
34+
just package development
35+
AURORA_DEVTOOLS=1 bash scripts/run-shell-tests.sh \
36+
{{ development_zip }} \
37+
tests/shell/auroraDevTool.js

.just/toolbox.just

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
toolbox_name := env_var_or_default("AURORA_TOOLBOX_NAME", "aurora-shell-devel")
2+
uuid := "aurora-shell@luminusos.github.io"
3+
production_zip := "dist/target/" + uuid + ".shell-extension.zip"
4+
development_zip := "dist/target/" + uuid + ".development.shell-extension.zip"
5+
6+
# List the available toolbox commands.
7+
default:
8+
@just --list toolbox
9+
10+
# Create the Fedora development toolbox.
11+
[no-cd]
12+
create:
13+
#!/usr/bin/env bash
14+
set -e
15+
if [ -n "${AURORA_TOOLBOX_IMAGE:-}" ]; then
16+
image="$AURORA_TOOLBOX_IMAGE"
17+
else
18+
image="$(bash scripts/ci-image-name.sh)"
19+
podman build -f Containerfile -t "$image" .
20+
fi
21+
22+
echo "Creating toolbox '{{ toolbox_name }}' from '$image'..."
23+
toolbox create --image "$image" {{ toolbox_name }}
24+
25+
# Launch GNOME Shell inside the toolbox.
26+
[no-cd]
27+
run:
28+
bash scripts/run-gnome-shell.sh {{ toolbox_name }}
29+
30+
# Remove the development toolbox.
31+
[no-cd]
32+
remove:
33+
toolbox rm --force {{ toolbox_name }}
34+
@echo "Removed toolbox '{{ toolbox_name }}'."
35+
36+
# Run a test inside the toolbox: `test <script>`, `test all`, or `test dev`.
37+
[no-cd]
38+
test target:
39+
#!/usr/bin/env bash
40+
set -e
41+
project="$(pwd -P)"
42+
43+
case "{{ target }}" in
44+
all)
45+
just package production
46+
toolbox --container {{ toolbox_name }} run \
47+
bash "$project/scripts/run-shell-tests.sh" \
48+
"$project/{{ production_zip }}"
49+
;;
50+
dev)
51+
just package development
52+
toolbox --container {{ toolbox_name }} run \
53+
env AURORA_DEVTOOLS=1 \
54+
bash "$project/scripts/run-shell-tests.sh" \
55+
"$project/{{ development_zip }}" \
56+
"$project/tests/shell/auroraDevTool.js"
57+
;;
58+
*)
59+
just package production
60+
toolbox --container {{ toolbox_name }} run \
61+
bash "$project/scripts/run-shell-tests.sh" \
62+
"$project/{{ production_zip }}" \
63+
"$project/{{ target }}"
64+
;;
65+
esac

.just/translation.just

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# List the available translation commands.
2+
default:
3+
@just --list translation
4+
5+
# Regenerate the POT template.
6+
[no-cd]
7+
pot:
8+
#!/usr/bin/env bash
9+
set -e
10+
just build
11+
mapfile -t javascript_files < <(find dist -name '*.js' | sort)
12+
13+
xgettext \
14+
--from-code=UTF-8 \
15+
--language=JavaScript \
16+
--keyword=_ \
17+
--keyword=ngettext:1,2 \
18+
--keyword=pgettext:1c,2 \
19+
--package-name=aurora-shell \
20+
--msgid-bugs-address=https://github.com/luminusOS/aurora-shell/issues \
21+
--output=dist/aurora-shell@luminusos.github.io.pot \
22+
"${javascript_files[@]}"
23+
24+
echo "POT template regenerated."
25+
26+
# Merge the current POT template into every PO catalog.
27+
[no-cd]
28+
update: pot
29+
#!/usr/bin/env bash
30+
set -e
31+
for catalog in data/po/*.po; do
32+
echo "Merging $catalog..."
33+
msgmerge \
34+
--update \
35+
--backup=none \
36+
"$catalog" \
37+
dist/aurora-shell@luminusos.github.io.pot
38+
done
39+
40+
echo "Translation catalogs updated."
41+
42+
# Compile every PO catalog into dist.
43+
[no-cd]
44+
compile:
45+
#!/usr/bin/env bash
46+
set -e
47+
domain="aurora-shell@luminusos.github.io"
48+
49+
for catalog in data/po/*.po; do
50+
[ -f "$catalog" ] || continue
51+
language="$(basename "$catalog" .po)"
52+
output="dist/locale/$language/LC_MESSAGES/$domain.mo"
53+
mkdir -p "$(dirname "$output")"
54+
msgfmt --output-file="$output" "$catalog"
55+
echo "Compiled $catalog -> $output"
56+
done

.just/vagrant.just

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name := "aurora-shell-devel"
2+
3+
# List the available Vagrant commands.
4+
default:
5+
@just --list vagrant
6+
7+
# Boot and provision the development VM.
8+
[no-cd]
9+
create:
10+
@echo "Booting and provisioning Vagrant VM '{{ name }}'..."
11+
vagrant up
12+
13+
# Launch GNOME Shell inside the VM.
14+
[no-cd]
15+
run:
16+
bash scripts/run-vagrant-gnome-shell.sh
17+
18+
# Open an SSH session in the VM.
19+
[no-cd]
20+
ssh:
21+
vagrant ssh
22+
23+
# Destroy the development VM.
24+
[no-cd]
25+
remove:
26+
vagrant destroy -f
27+
@echo "Removed Vagrant VM '{{ name }}'."

0 commit comments

Comments
 (0)