|
42 | 42 | # and merged with no nix build on the PR. |
43 | 43 | - electron/native/pipewire-capture/** |
44 | 44 | - electron/native/whisper-stt/** |
45 | | - # buildPhase is `npx vite build` alone, and installPhase copies |
46 | | - # public/wallpapers unguarded. |
| 45 | + # buildPhase is `npx vite build` alone, and public/ reaches the package |
| 46 | + # only through the copy Vite makes of it in dist/. |
47 | 47 | - vite.config.ts |
48 | | - - public/wallpapers/** |
49 | 48 | # Including itself, or a PR that only edits this file gets no validation of |
50 | 49 | # the change it is making -- the same rule nix-check.yml already follows. |
51 | 50 | - .github/workflows/nix-build.yml |
@@ -176,6 +175,22 @@ jobs: |
176 | 175 | echo "closure: $(nix path-info --closure-size --human-readable ./result | tail -1)" |
177 | 176 | ls -la result/bin/ |
178 | 177 |
|
| 178 | + # The renderer loads wallpapers, cursors and fonts from <app>/public/, and |
| 179 | + # a tree missing there degrades the editor without failing anything: the |
| 180 | + # cursor style picker rendered empty (#1085). Every entry of the source |
| 181 | + # public/ must be there. |
| 182 | + - name: Check the renderer's public assets |
| 183 | + run: | |
| 184 | + set -euo pipefail |
| 185 | + missing=0 |
| 186 | + for entry in public/*; do |
| 187 | + if [ ! -e "result/lib/openscreen/$entry" ]; then |
| 188 | + echo "::error::$entry is missing from the package" |
| 189 | + missing=$((missing + 1)) |
| 190 | + fi |
| 191 | + done |
| 192 | + [ "$missing" -eq 0 ] |
| 193 | +
|
179 | 194 | # The native components are resolved at runtime behind existence checks, so |
180 | 195 | # a wrapper pointing at a path that is not there degrades the app instead of |
181 | 196 | # failing it -- silently, which is the failure mode this whole workflow was |
|
0 commit comments