stably-orca

MEDIUM
maintainer bhyoo 0 votes scanned 2026-09-15 07:19:15.107868
View on AUR
Why flagged

Runs `npm/yarn/pnpm install <package>` for a package not in source=(), pulling unpinned, unreviewed code at build time. Severity downgraded: the package declares/looks like a Node.js consumer, where build-time installs are expected.

Triggered rules

Medium npm/yarn/pnpm install of an undeclared external package npm_install_external

Runs `npm/yarn/pnpm install <package>` for a package not in source=(), pulling unpinned, unreviewed code at build time. Severity downgraded: the package declares/looks like a Node.js consumer, where build-time installs are expected.

  • PKGBUILD:139 // Why after the prune: `pnpm install:release` widens the CPU set for cross-builds,

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: Byeonghoon Yoo <bhyoo@bhyoo.com>
2
3pkgname=stably-orca
4pkgver=1.4.203
5pkgrel=1
6pkgdesc='Stably AI Orca agentic coding IDE and headless runtime (built from source)'
7arch=('x86_64' 'aarch64')
8url='https://github.com/stablyai/orca'
9license=('MIT')
10depends=(
11 'alsa-lib'
12 'at-spi2-core'
13 'dbus'
14 'electron43'
15 'gcc-libs'
16 'gdk-pixbuf2'
17 'glibc'
18 'gtk3'
19 'hicolor-icon-theme'
20 'libdrm'
21 'libnotify'
22 'libsecret'
23 'libxcomposite'
24 'libxdamage'
25 'libxfixes'
26 'libxkbcommon'
27 'libxrandr'
28 'libxss'
29 'libxtst'
30 'mesa'
31 'nss'
32 'python'
33 'python-gobject'
34 'systemd-libs'
35 'zlib'
36)
37optdepends=(
38 'kwin: optional KWin virtual Wayland compositor service'
39 'wl-clipboard: Wayland clipboard support for computer-use'
40 'xclip: X11 clipboard support for computer-use'
41 'xsel: alternative X11 clipboard support for computer-use'
42 'xdotool: X11 hotkey and window activation support for computer-use'
43 'xorg-server-xvfb: automatic virtual X display when no DISPLAY is provided'
44 'xorg-xauth: Xwayland authentication for the KWin virtual display service'
45 'xorg-xdpyinfo: external X display readiness validation'
46 'xorg-xwayland: Xwayland support for the KWin virtual display service'
47)
48makedepends=(
49 'nodejs-lts-krypton'
50 'python-setuptools'
51)
52provides=("orca-ide=$pkgver")
53conflicts=('stably-orca-bin' 'stably-orca-git' 'orca-ide' 'orca-ide-bin')
54options=('!strip' '!debug')
55install=stably-orca.install
56
57_pnpmver=12.0.0
58_electronmajor=43
59source=(
60 "$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz"
61 "pnpm-$_pnpmver.tgz::https://registry.npmjs.org/pnpm/-/pnpm-$_pnpmver.tgz"
62 'stably-orca.sh'
63 'orca-ide.sh'
64 'stably-orca.desktop'
65 'stably-orca-serve@.service'
66 'stably-orca-serve-systemd'
67 'stably-orca-kwin-virtual@.service'
68 'stably-orca-kwin-display'
69 'stably-orca-serve.env.example'
70 'stably-orca-serve-kwin.conf.example'
71)
72source_x86_64=(
73 "pnpm-exe-linux-x64-$_pnpmver.tgz::https://registry.npmjs.org/@pnpm/exe.linux-x64/-/exe.linux-x64-$_pnpmver.tgz"
74)
75source_aarch64=(
76 "pnpm-exe-linux-arm64-$_pnpmver.tgz::https://registry.npmjs.org/@pnpm/exe.linux-arm64/-/exe.linux-arm64-$_pnpmver.tgz"
77)
78sha256sums=('4b775bf6f5bb85e0ef9abc37f2d01ea6a516a1502c2a973362827047dd968c1d'
79 '5ef12ab545a211627c23f05eb589a051e6c207a3f2c3382add8f0573400b871d'
80 'd76ba8a9856aa7181a41bccb1bb7a09b10cc990b0a6d680c328af75eb185c90d'
81 '0d8e816f7dd5d46b9da40748ac7a0d709adfd7f09d79ffe71327b60c5c5abbb7'
82 '77a10524dc1b971fecd99a5be47b13f93021b0882495ed32a37d12a2f7fed835'
83 '0d262438d6ca1de562db33ba8373ccc08298f3fdfa18209864d4189bddfaf742'
84 'd423881ade5704432cbe9afea626438991a1dcda3dda3ed18811e1b3fd721e1e'
85 '3b1943f5b65997ce52196f055b3c10b30dd5e81ae934a91bff096d42c7fcc425'
86 'aba5146aed46aa61abf4000285460f088698f618991d81ef9730d408173cc253'
87 'c97fe80d1e55c274207f62c6b388ae4573627028624ae73bcabd0eabcc7d76e5'
88 'eacec99a44af83ed452e367f343e69042a21f8d9750f15a6447b7de2991146a0')
89sha256sums_x86_64=('d0c64efab39d560ef3ae4dc8be5dd08951e5409ed2d53cb6b8317b7713c26333')
90sha256sums_aarch64=('e227252e352b8023fd1151fbe36eeb934a26eef2e0c327b8d1a1aad7b4bfbd90')
91noextract=(
92 "pnpm-$_pnpmver.tgz"
93 "pnpm-exe-linux-x64-$_pnpmver.tgz"
94 "pnpm-exe-linux-arm64-$_pnpmver.tgz"
95)
96
97prepare() {
98 local pnpm_platform
99 case $CARCH in
100 x86_64) pnpm_platform=linux-x64 ;;
101 aarch64) pnpm_platform=linux-arm64 ;;
102 *)
103 printf 'ERROR: unsupported pnpm platform for architecture %s\n' "$CARCH" >&2
104 return 1
105 ;;
106 esac
107
108 rm -rf "$srcdir/pnpm"
109 install -d "$srcdir/pnpm"
110 bsdtar -xf "$srcdir/pnpm-$_pnpmver.tgz" --strip-components 1 -C "$srcdir/pnpm"
111
112 local pnpm_exe="$srcdir/pnpm/node_modules/@pnpm/exe.$pnpm_platform"
113 install -d "$pnpm_exe"
114 bsdtar -xf "$srcdir/pnpm-exe-$pnpm_platform-$_pnpmver.tgz" \
115 --strip-components 1 -C "$pnpm_exe"
116 node "$srcdir/pnpm/install.js"
117
118 local pnpm_version
119 pnpm_version=$("$srcdir/pnpm/pnpm" --version)
120 if [[ $pnpm_version != "$_pnpmver" ]]; then
121 printf 'ERROR: expected pnpm %s, found %s\n' \
122 "$_pnpmver" "$pnpm_version" >&2
123 return 1
124 fi
125
126 cd "$srcdir/orca-$pkgver"
127 python - <<'PY'
128from pathlib import Path
129
130path = Path("config/electron-builder.config.cjs")
131data = path.read_text()
132import_line = (
133 "const { verifyLinuxGlibcFloor } = "
134 "require('./scripts/verify-linux-glibc-floor.cjs')\n"
135)
136check_block = """ // Why: a Linux runner-image glibc bump silently shipped a node-pty pty.node
137 // requiring GLIBC_2.34, crashing the app on startup on Ubuntu 20.04 (#9902).
138 // Fail packaging if any bundled native binary exceeds the supported floor.
139 // Why after the prune: `pnpm install:release` widens the CPU set for cross-builds,
140 // so an arm64 slice can still carry the x64 @parcel/watcher until
141 // prunePackagedRuntimeNodeModules drops it.
142 if (context.electronPlatformName === 'linux') {
143 // Why the arch is passed: symbol-version checks pass happily on a wrong-architecture binary,
144 // so a cross-built slice could ship the host's pty.node and only fail at runtime.
145 verifyLinuxGlibcFloor(context.appOutDir, {
146 targetArch: { 1: 'x64', 3: 'arm64' }[context.arch]
147 })
148 }
149"""
150if data.count(import_line) != 1 or data.count(check_block) != 1:
151 raise SystemExit("upstream glibc-floor check changed")
152path.write_text(data.replace(import_line, "").replace(check_block, ""))
153PY
154}
155
156build() {
157 cd "$srcdir/orca-$pkgver"
158
159 local electron_dist="/usr/lib/electron$_electronmajor"
160 local electron_version
161 electron_version=$(<"$electron_dist/version")
162 electron_version=${electron_version#v}
163 if [[ $electron_version != "$_electronmajor".* ]]; then
164 printf 'ERROR: electron%s provides unexpected version %s\n' \
165 "$_electronmajor" "$electron_version" >&2
166 return 1
167 fi
168
169 local pnpm=("$srcdir/pnpm/pnpm")
170
171 export HOME="$srcdir/.home"
172 export XDG_CACHE_HOME="$srcdir/.cache"
173 export XDG_DATA_HOME="$srcdir/.local/share"
174 export PNPM_HOME="$srcdir/.pnpm-home"
175 export npm_config_cache="$srcdir/.npm"
176 export npm_config_manage_package_manager_versions=false
177 export npm_config_store_dir="$srcdir/.pnpm-store"
178 export ELECTRON_BUILDER_CACHE="$srcdir/.cache/electron-builder"
179 export ELECTRON_OVERRIDE_DIST_PATH="$electron_dist"
180 export ELECTRON_SKIP_BINARY_DOWNLOAD=1
181 export ORCA_FORCE_NATIVE_REBUILD=1
182 export HUSKY=0
183
184 install -d "$HOME" "$XDG_CACHE_HOME" "$XDG_DATA_HOME" "$PNPM_HOME" \
185 "$npm_config_cache" "$npm_config_store_dir" "$ELECTRON_BUILDER_CACHE"
186
187 "${pnpm[@]}" install --frozen-lockfile --ignore-scripts
188
189 rm -rf node_modules/electron/dist
190 ln -s "$electron_dist" node_modules/electron/dist
191 printf 'electron' >node_modules/electron/path.txt
192 node - "$electron_version" <<'JS'
193const fs = require('node:fs')
194const path = 'node_modules/electron/package.json'
195const pkg = JSON.parse(fs.readFileSync(path, 'utf8'))
196pkg.version = process.argv[2]
197fs.writeFileSync(path, `${JSON.stringify(pkg, null, 2)}\n`)
198JS
199
200 "${pnpm[@]}" rebuild esbuild @parcel/watcher
201 "${pnpm[@]}" run postinstall
202 local target
203 for target in build:relay build:cli build:electron-vite build:web; do
204 "${pnpm[@]}" run "$target"
205 done
206 "${pnpm[@]}" run ensure:electron-runtime
207
208 # System Electron resolves process.resourcesPath to /usr/lib/electron43/resources.
209 # Orca's packaged assets live under /usr/lib/stably-orca instead.
210 python - <<'PY'
211from pathlib import Path
212import re
213import subprocess
214
215pattern = re.compile(r"(?<![\w$.])process\.resourcesPath\b")
216replacement = "'/usr/lib/stably-orca'"
217changed_files = []
218changed_references = 0
219for path in Path("out").rglob("*.js"):
220 data = path.read_text()
221 updated, count = pattern.subn(replacement, data)
222 if count:
223 path.write_text(updated)
224 changed_files.append(path)
225 changed_references += count
226if not changed_files:
227 raise SystemExit("compiled output has no process.resourcesPath references")
228for path in changed_files:
229 subprocess.run(["node", "--check", str(path)], check=True)
230print(
231 f"patched {changed_references} process.resourcesPath references "
232 f"across {len(changed_files)} files"
233)
234PY
235
236 "${pnpm[@]}" exec electron-builder \
237 --config config/electron-builder.config.cjs \
238 --linux dir \
239 --publish never \
240 --config.electronDist="$electron_dist" \
241 --config.electronVersion="$electron_version"
242}
243
244package() {
245 cd "$srcdir/orca-$pkgver"
246
247 local unpacked=(dist/linux*-unpacked)
248 if [[ ${#unpacked[@]} -ne 1 || ! -d ${unpacked[0]} ]]; then
249 printf 'ERROR: expected one electron-builder unpacked Linux directory\n' >&2
250 return 1
251 fi
252
253 local resources="${unpacked[0]}/resources"
254 install -d "$pkgdir/usr/lib/$pkgname"
255 cp -a "$resources/." "$pkgdir/usr/lib/$pkgname/"
256 chmod -R go-w "$pkgdir/usr/lib/$pkgname"
257
258 # Pacman owns upgrades for this package. Without the generated AppImage
259 # manifest, release checks may run but electron-updater cannot self-apply.
260 rm -f "$pkgdir/usr/lib/$pkgname/app-update.yml"
261 # serve-sim carries macOS helper binaries and authoring sources even in its
262 # Linux npm package. They are unreachable on Linux and confuse ELF analysis.
263 local serve_sim="$pkgdir/usr/lib/$pkgname/node_modules/serve-sim"
264 rm -rf "$serve_sim/Sources"
265 rm -f \
266 "$serve_sim/bin/serve-sim-bin" \
267 "$serve_sim/dist/simcam/libSimCameraInjector.dylib" \
268 "$serve_sim/dist/simcam/serve-sim-camera-helper"
269 # Keep node-pty's loadable addon, but discard node-gyp/Forge build state,
270 # duplicate objects, dependency files and foreign Windows helper payloads.
271 local node_modules="$pkgdir/usr/lib/$pkgname/node_modules"
272 local node_pty="$node_modules/node-pty"
273 rm -f \
274 "$node_pty/build/Makefile" \
275 "$node_pty/build/binding.Makefile" \
276 "$node_pty/build/pty.target.mk" \
277 "$node_pty/build/config.gypi" \
278 "$node_pty/build/Release/.forge-meta" \
279 "$node_pty/build/Release/node-addon-api@"*/node_modules/node-addon-api/node_addon_api_except.stamp.d \
280 "$node_pty/node-addon-api@"*/node_modules/node-addon-api/node_addon_api_except.stamp \
281 "$node_modules/ssh2/util/pagent.exe"
282 rm -rf \
283 "$node_pty/build/Release/.deps" \
284 "$node_pty/build/Release/obj.target"
285
286 # Pruning platform-specific npm payloads leaves empty package directories.
287 find "$node_modules" -depth -type d -empty -delete
288
289 local pty_addon="$node_pty/build/Release/pty.node"
290 [[ -s "$pty_addon" ]] || {
291 printf 'ERROR: packaged node-pty addon is missing or empty\n' >&2
292 return 1
293 }
294
295 local node_pty_build_extras=()
296 mapfile -d '' node_pty_build_extras < <(
297 find "$node_pty/build" -mindepth 1 \
298 ! -path "$node_pty/build/Release" \
299 ! -path "$pty_addon" \
300 -print0
301 )
302 if [[ ${#node_pty_build_extras[@]} -ne 0 ]]; then
303 printf 'ERROR: packaged node-pty build tree contains unexpected entries:\n' >&2
304 printf ' %s\n' "${node_pty_build_extras[@]}" >&2
305 return 1
306 fi
307
308 local node_pty_metadata=()
309 mapfile -d '' node_pty_metadata < <(
310 find "$node_pty" \
311 \( -name 'Makefile' \
312 -o -name 'binding.Makefile' \
313 -o -name '*.target.mk' \
314 -o -name 'config.gypi' \
315 -o -name '.forge-meta' \
316 -o -name '*.stamp' \
317 -o -name '*.stamp.d' \
318 -o -name '.deps' \
319 -o -name 'obj.target' \) \
320 -print0
321 )
322 if [[ ${#node_pty_metadata[@]} -ne 0 ]]; then
323 printf 'ERROR: packaged node-pty retains build metadata:\n' >&2
324 printf ' %s\n' "${node_pty_metadata[@]}" >&2
325 return 1
326 fi
327
328 local node_pty_zero_files=()
329 mapfile -d '' node_pty_zero_files < <(
330 find "$node_pty" -type f -empty -print0
331 )
332 if [[ ${#node_pty_zero_files[@]} -ne 0 ]]; then
333 printf 'ERROR: packaged node-pty contains zero-length files:\n' >&2
334 printf ' %s\n' "${node_pty_zero_files[@]}" >&2
335 return 1
336 fi
337 [[ -x "$pkgdir/usr/lib/$pkgname/bin/orca-ide" ]] || {
338 printf 'ERROR: packaged Orca CLI shim is missing\n' >&2
339 return 1
340 }
341 [[ -f "$pkgdir/usr/lib/$pkgname/computer-use-linux/runtime.py" ]] || {
342 printf 'ERROR: packaged Linux computer-use runtime is missing\n' >&2
343 return 1
344 }
345
346 # Upstream sherpa-onnx binaries may contain architecture-specific absolute
347 # CI paths in RPATH/RUNPATH. Keep only $ORIGIN-relative components without
348 # changing the ELF string-table size; an already-clean path is a no-op.
349 local sherpa
350 local sherpa_bins=()
351 mapfile -d '' sherpa_bins < <(
352 find "$pkgdir/usr/lib/$pkgname" -type f -name 'sherpa-onnx.node' -print0
353 )
354 if [[ ${#sherpa_bins[@]} -eq 0 ]]; then
355 printf 'ERROR: packaged sherpa-onnx native module is missing\n' >&2
356 return 1
357 fi
358 for sherpa in "${sherpa_bins[@]}"; do
359 python - "$sherpa" <<'PY'
360from pathlib import Path
361import os
362import re
363import subprocess
364import sys
365
366path = Path(sys.argv[1])
367result = subprocess.run(
368 ["readelf", "-d", path],
369 check=True,
370 capture_output=True,
371 text=True,
372 env={**os.environ, "LC_ALL": "C"},
373)
374matches = re.findall(
375 r"Library (?:rpath|runpath): \[(.*?)\]",
376 result.stdout,
377 flags=re.IGNORECASE,
378)
379if len(matches) != 1:
380 raise SystemExit(
381 f"expected one sherpa-onnx RPATH/RUNPATH, found {len(matches)}: {path}"
382 )
383
384current = matches[0]
385components = current.split(":")
386kept = [
387 component
388 for component in components
389 if component == "$ORIGIN" or component.startswith("$ORIGIN/")
390]
391if not kept:
392 raise SystemExit(f"sherpa-onnx path has no $ORIGIN component: {path}: {current}")
393
394cleaned = ":".join(kept)
395if current != cleaned:
396 data = path.read_bytes()
397 needle = current.encode() + b"\0"
398 if data.count(needle) != 1:
399 raise SystemExit(
400 f"expected one sherpa-onnx path string, found {data.count(needle)}: {path}"
401 )
402 replacement = cleaned.encode() + b"\0" * (len(needle) - len(cleaned))
403 path.write_bytes(data.replace(needle, replacement, 1))
404PY
405 done
406
407 install -Dm755 "$srcdir/stably-orca.sh" "$pkgdir/usr/bin/stably-orca"
408 install -Dm755 "$srcdir/orca-ide.sh" "$pkgdir/usr/bin/orca-ide"
409 install -Dm755 "$srcdir/stably-orca-serve-systemd" \
410 "$pkgdir/usr/lib/$pkgname/stably-orca-serve-systemd"
411 install -Dm755 "$srcdir/stably-orca-kwin-display" \
412 "$pkgdir/usr/lib/$pkgname/stably-orca-kwin-display"
413 install -Dm644 "$srcdir/stably-orca-serve@.service" \
414 "$pkgdir/usr/lib/systemd/user/stably-orca-serve@.service"
415 install -Dm644 "$srcdir/stably-orca-kwin-virtual@.service" \
416 "$pkgdir/usr/lib/systemd/user/stably-orca-kwin-virtual@.service"
417 install -Dm644 "$srcdir/stably-orca-serve.env.example" \
418 "$pkgdir/usr/share/doc/$pkgname/stably-orca-serve.env.example"
419 install -Dm644 "$srcdir/stably-orca-serve-kwin.conf.example" \
420 "$pkgdir/usr/share/doc/$pkgname/stably-orca-serve-kwin.conf.example"
421 install -Dm644 "$srcdir/stably-orca.desktop" \
422 "$pkgdir/usr/share/applications/stably-orca.desktop"
423 python - resources/build/icon.png resources/icon.png <<'PY'
424from pathlib import Path
425import sys
426
427def check_png(path_str, expected_dims):
428 path = Path(path_str)
429 data = path.read_bytes()[:24]
430 if data[:8] != b"\x89PNG\r\n\x1a\n" or data[12:16] != b"IHDR":
431 raise SystemExit(f"Orca icon is not a valid PNG: {path}")
432 dimensions = (
433 int.from_bytes(data[16:20], "big"),
434 int.from_bytes(data[20:24], "big"),
435 )
436 if dimensions != expected_dims:
437 raise SystemExit(f"expected {expected_dims} Orca icon, found {dimensions}: {path}")
438
439check_png(sys.argv[1], (1024, 1024))
440check_png(sys.argv[2], (256, 256))
441PY
442 install -Dm644 resources/icon.png \
443 "$pkgdir/usr/share/icons/hicolor/256x256/apps/stably-orca.png"
444 install -Dm644 resources/build/icon.png \
445 "$pkgdir/usr/share/icons/hicolor/1024x1024/apps/stably-orca.png"
446 install -Dm644 resources/icon.png \
447 "$pkgdir/usr/share/pixmaps/stably-orca.png"
448 install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
449
450 local empty_dirs=()
451 mapfile -d '' empty_dirs < <(find "$pkgdir" -type d -empty -print0)
452 if [[ ${#empty_dirs[@]} -ne 0 ]]; then
453 printf 'ERROR: packaged tree contains empty directories:\n' >&2
454 printf ' %s\n' "${empty_dirs[@]}" >&2
455 return 1
456 fi
457}
458

Changes since previous scan

--- PKGBUILD @ 2026-09-14 05:16
+++ PKGBUILD @ 2026-09-15 07:19
@@ -1,7 +1,7 @@
# Maintainer: Byeonghoon Yoo <bhyoo@bhyoo.com>
pkgname=stably-orca
-pkgver=1.4.200
+pkgver=1.4.203
pkgrel=1
pkgdesc='Stably AI Orca agentic coding IDE and headless runtime (built from source)'
arch=('x86_64' 'aarch64')
@@ -75,7 +75,7 @@
source_aarch64=(
"pnpm-exe-linux-arm64-$_pnpmver.tgz::https://registry.npmjs.org/@pnpm/exe.linux-arm64/-/exe.linux-arm64-$_pnpmver.tgz"
)
-sha256sums=('212be0869ba03b3eb63a46fcce88bf84880c24ebffbf268ef92d8985a547c3ce'
+sha256sums=('4b775bf6f5bb85e0ef9abc37f2d01ea6a516a1502c2a973362827047dd968c1d'
'5ef12ab545a211627c23f05eb589a051e6c207a3f2c3382add8f0573400b871d'
'd76ba8a9856aa7181a41bccb1bb7a09b10cc990b0a6d680c328af75eb185c90d'
'0d8e816f7dd5d46b9da40748ac7a0d709adfd7f09d79ffe71327b60c5c5abbb7'
@@ -136,9 +136,9 @@
check_block = """ // Why: a Linux runner-image glibc bump silently shipped a node-pty pty.node
// requiring GLIBC_2.34, crashing the app on startup on Ubuntu 20.04 (#9902).
// Fail packaging if any bundled native binary exceeds the supported floor.
- // Why after the prune: cross-builds intentionally install every optional
- // native variant, so an arm64 slice still carries the x64 @parcel/watcher
- // until prunePackagedRuntimeNodeModules drops it.
+ // Why after the prune: `pnpm install:release` widens the CPU set for cross-builds,
+ // so an arm64 slice can still carry the x64 @parcel/watcher until
+ // prunePackagedRuntimeNodeModules drops it.
if (context.electronPlatformName === 'linux') {
// Why the arch is passed: symbol-version checks pass happily on a wrong-architecture binary,
// so a cross-built slice could ship the host's pty.node and only fail at runtime.

Scan history

Scanned at (UTC)SeverityRules
2026-09-15 07:19:15 Medium 1
2026-09-14 05:16:15 Clean 0
2026-09-11 09:22:22 Clean 0
2026-09-09 21:20:09 Clean 0
2026-09-08 15:17:32 Clean 0
2026-09-04 07:57:01 Clean 0
2026-09-04 05:56:41 Clean 0
2026-09-03 05:52:26 Clean 0
2026-09-01 07:47:32 Clean 0
2026-08-31 13:45:31 Clean 0
2026-08-31 01:44:31 Clean 0
2026-08-27 05:31:50 Clean 0
2026-08-22 13:17:31 Clean 0
2026-08-21 11:15:01 Clean 0
2026-08-21 03:13:51 Clean 0
2026-08-19 11:41:55 Clean 0
2026-08-17 07:35:18 Clean 0
2026-08-15 07:30:18 Clean 0
2026-08-13 19:26:43 Clean 0
2026-08-12 05:22:53 Clean 0

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion