open-design-git
maintainer motherofmilk
· 0 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The npx command is used to run a specific, version-pinned version of pnpm (10.33.2) to install dependencies and build an AppImage from the project's own source; this is a standard build practice and does not execute arbitrary remote code.
Triggered rules
LOW
AI review downgraded a static finding
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-07-25) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The npx command is used to run a specific, version-pinned version of pnpm (10.33.2) to install dependencies and build an AppImage from the project's own source; this is a standard build practice and does not execute arbitrary remote code.
1 higher static finding superseded - not the current verdict (shown for transparency)
MEDIUM
npx/bunx/deno executes a remote package
remote_code_tool
`npx`/`bunx`/`pnpm dlx`/`deno run <url>` downloads AND runs a remote package at build time — the moral equivalent of piping a download into a shell. Severity downgraded: Node.js consumer context.
-
PKGBUILD:37
_pnpm() { npx --yes pnpm@10.33.2 "$@"; }
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: motherofmilk <iulian.dita@gmail.com>
2
3
pkgname=open-design-git
4
pkgver=0.5.0.r356.g2bb029cb
5
pkgrel=1
6
pkgdesc='VCS build of Open Design installed from an extracted Linux AppImage AppDir'
7
arch=('x86_64')
8
url='https://github.com/nexu-io/open-design'
9
license=('Apache-2.0')
10
depends=('alsa-lib' 'gtk3' 'libnotify' 'libxss' 'libxtst' 'nss' 'xdg-utils')
11
makedepends=('git' 'npm' 'python' 'make' 'gcc')
12
provides=('open-design')
13
conflicts=('open-design' 'open-design-bin')
14
options=('!strip')
15
source=("${pkgname}::git+https://github.com/nexu-io/open-design.git#branch=main" 'open-design' 'open-design.desktop')
16
sha256sums=('SKIP'
17
'8c076f4471bc20f457effb61c847ae1e80eb7861638a5b78f65613179ff39311'
18
'0245ea0484c1bb89b74093abc3c77ce421e793dd06c5a8e36c203971bfd7f919')
19
20
prepare() {
21
cd "${srcdir}/${pkgname}"
22
git clean -fdx
23
}
24
25
pkgver() {
26
cd "${srcdir}/${pkgname}"
27
local _version _rev _commit
28
_version="$(sed -n 's/^ "version": "\([^"]*\)",$/\1/p' package.json | head -n1)"
29
_rev="$(git rev-list --count HEAD)"
30
_commit="$(git rev-parse --short HEAD)"
31
printf '%s.r%s.g%s' "${_version}" "${_rev}" "${_commit}"
32
}
33
34
build() {
35
cd "${srcdir}/${pkgname}"
36
37
_pnpm() { npx --yes pnpm@10.33.2 "$@"; }
38
39
_pnpm install --frozen-lockfile
40
# Build upstream's Linux AppImage locally; the released Linux artifact is not published yet.
41
_pnpm tools-pack linux build --to appimage --namespace aur --portable --dir "${srcdir}/tools-pack"
42
}
43
44
package() {
45
cd "${srcdir}/${pkgname}"
46
local _appimage _extract_dir
47
_appimage="$(find "${srcdir}/tools-pack/out/linux/namespaces/aur/builder" -maxdepth 1 -type f -name '*.AppImage' -print -quit)"
48
if [[ -z "${_appimage}" ]]; then
49
echo "no AppImage found under ${srcdir}/tools-pack/out/linux/namespaces/aur/builder" >&2
50
return 1
51
fi
52
53
_extract_dir="${srcdir}/open-design-appdir"
54
rm -rf "${_extract_dir}"
55
mkdir -p "${_extract_dir}"
56
(cd "${_extract_dir}" && "${_appimage}" --appimage-extract > /dev/null)
57
58
mkdir -p "${pkgdir}/opt/open-design/appdir"
59
cp -a "${_extract_dir}/squashfs-root/." "${pkgdir}/opt/open-design/appdir/"
60
chmod -R u+rwX,go+rX "${pkgdir}/opt/open-design/appdir"
61
install -Dm755 "${srcdir}/open-design" "${pkgdir}/usr/bin/open-design"
62
install -Dm644 "${srcdir}/open-design.desktop" "${pkgdir}/usr/share/applications/open-design.desktop"
63
install -Dm644 tools/pack/resources/linux/icon.png "${pkgdir}/usr/share/icons/hicolor/512x512/apps/open-design.png"
64
install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
65
}
66
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | LOW | 2 |
| 2026-08-02 00:16:08 | LOW | 2 |
| 2026-08-01 00:11:18 | LOW | 2 |
| 2026-07-31 00:14:10 | LOW | 2 |
| 2026-07-30 00:17:23 | LOW | 2 |
| 2026-07-29 00:25:53 | LOW | 2 |
| 2026-07-28 00:07:28 | LOW | 2 |
| 2026-07-27 00:24:32 | LOW | 2 |
| 2026-07-26 00:07:32 | LOW | 2 |
| 2026-07-25 00:13:44 | LOW | 2 |
| 2026-07-24 00:02:28 | LOW | 2 |
| 2026-07-23 00:14:47 | LOW | 2 |
| 2026-07-22 00:29:32 | LOW | 2 |
| 2026-07-21 00:24:15 | LOW | 2 |
| 2026-07-20 00:19:49 | LOW | 2 |
| 2026-07-19 00:17:08 | LOW | 2 |
| 2026-07-18 00:14:48 | LOW | 2 |
| 2026-07-17 00:06:16 | LOW | 2 |
| 2026-07-16 00:05:41 | LOW | 2 |
| 2026-07-15 00:09:25 | LOW | 2 |