27 lines
1.5 KiB
Bash
Executable File
27 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
repo_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
body="$repo_dir/config/dot/quickshell/modules/overview/OverviewBody.qml"
|
|
thumbnail="$repo_dir/config/dot/quickshell/modules/overview/WindowThumbnail.qml"
|
|
workspace="$repo_dir/config/dot/quickshell/modules/overview/WorkspaceCard.qml"
|
|
|
|
fail() {
|
|
printf 'overview-window-actions contract: %s\n' "$1" >&2
|
|
exit 1
|
|
}
|
|
|
|
rg -q 'function addressOf\(toplevel: var\): string' "$body" || fail 'address normalization boundary is missing'
|
|
rg -q 'function closeToplevel\(toplevel: var\): void' "$body" || fail 'address-scoped close boundary is missing'
|
|
rg -q 'function moveToplevel\(toplevel: var, workspaceName: string\): void' "$body" || fail 'address-scoped move boundary is missing'
|
|
rg -q 'function restoreToplevel\(toplevel: var\): void' "$body" || fail 'scratchpad restore boundary is missing'
|
|
rg -q 'hl\.dsp\.window\.close\(\{ window = ' "$body" || fail 'close does not use the modern exact-window dispatcher'
|
|
rg -q 'hl\.dsp\.window\.move\(\{ workspace = ' "$body" || fail 'move does not use the modern exact-window dispatcher'
|
|
rg -q 'signal closeRequested' "$thumbnail" || fail 'thumbnail has no close intent'
|
|
rg -q 'Drag\.active:' "$thumbnail" || fail 'thumbnail has no drag source'
|
|
rg -q 'DropArea \{' "$workspace" || fail 'workspace card has no drop target'
|
|
qs ipc show | rg -q '^target overview-actions$' || fail 'live action contract surface is missing'
|
|
|
|
printf 'overview-window-actions contract: PASS\n'
|