circle-chain-desktop-git
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (anthropic/claude-4.6-sonnet-20260217) reviewed the full PKGBUILD and judged it LOW (confidence 82%): The flagged `npx ts-node ./.erb/scripts/clean.js dist` call executes a local script (`clean.js`) from the cloned git repository using `ts-node`, which is installed as a local devDependency via `npm install`. This is not fetching or executing a remote package at build time — `npx` here resolves `ts-node` from the local `node_modules/.bin/` directory (installed in the preceding `npm install` step), and the script itself is part of the upstream source tree. The source is a git clone from the official GitHub repository. The npm registry mirror fallback for CN users uses npmmirror.com, which is a well-known Chinese npm mirror. The overall pattern (nvm for node version management, electron-builder with system electron, local .npmrc configuration) is a common AUR pattern for Electron apps. No binaries are fetched from unofficial hosts, no obfuscation is present, and no code is executed from outside the cloned source tree or installed npm packages. The main concern is the usual npm supply-chain risk inherent to any Node.js build, which is a general ecosystem risk rather than a specific PKGBUILD-level threat.
1 higher static finding superseded - not the current verdict (shown for transparency)
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:76
NODE_ENV=production npx ts-node ./.erb/scripts/clean.js dist
PKGBUILD
1 offending line(s) highlighted# Maintainer: zxp19821005 <zxp19821005 at 163 dot com>
pkgname=circle-chain-desktop-git
_pkgname=Circlechain
pkgver=1.1.2.r12.g42b933a
_electronversion=20
_nodeversion=16
pkgrel=1
pkgdesc="A blockchain project which is the same as bitcoin, but it has more types than bitcoin which only has coins.Circlechain has coin, identity and ownership 3 types asset.(Use system-wide electron)"
arch=('any')
url="https://github.com/lidh04/circle-chain-desktop"
license=('MIT')
conflicts=("${pkgname%-git}")
provides=("${pkgname%-git}=${pkgver%.r*}")
depends=(
"electron${_electronversion}"
)
makedepends=(
'gendesk'
'npm'
'nvm'
'git'
'curl'
)
source=(
"${pkgname%-git}.git::git+${url}"
"${pkgname%-git}.sh"
)
sha256sums=('SKIP'
'291f50480f5a61bc9c68db7d44cd0412071128706baa868a9cb854f8779a1980')
pkgver() {
cd "${srcdir}/${pkgname%-git}.git"
set -o pipefail
git describe --long --tags --abbrev=7 | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/v//g' ||
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short=7 HEAD)"
}
_ensure_local_nvm() {
local NVM_DIR="${srcdir}/.nvm"
source /usr/share/nvm/init-nvm.sh || [[ $? != 1 ]]
nvm install "${_nodeversion}"
nvm use "${_nodeversion}"
}
prepare() {
sed -e "
s/@electronversion@/${_electronversion}/g
s/@appname@/${pkgname%-git}/g
s/@runname@/app.asar/g
s/@cfgdirname@/${pkgname%-git}/g
s/@options@/env ELECTRON_OZONE_PLATFORM_HINT=auto/g
" -i "${srcdir}/${pkgname%-git}.sh"
_ensure_local_nvm
gendesk -q -f -n --pkgname="${pkgname%-git}" --pkgdesc="${pkgdesc}" --categories="Utility" --name="${_pkgname}" --exec="${pkgname%-git} %U"
cd "${srcdir}/${pkgname%-git}.git"
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
export SYSTEM_ELECTRON_VERSION="$(electron${_electronversion} -v | sed 's/v//g')"
HOME="${srcdir}/.electron-gyp"
{
echo -e '\n'
#echo 'build_from_source=true'
echo "cache=${srcdir}/.npm_cache"
} >> .npmrc
if [[ "$(curl -s ipinfo.io/country)" == *"CN"* ]]; then
{
echo 'registry=https://registry.npmmirror.com'
echo 'electron_mirror=https://registry.npmmirror.com/-/binary/electron/'
echo 'electron_builder_binaries_mirror=https://registry.npmmirror.com/-/binary/electron-builder-binaries/'
} >> .npmrc
find ./ -type f -name "package-lock.json" -exec sed -i "s/registry.npmjs.org/registry.npmmirror.com/g" {} +
fi
find src -type f -exec sed -i "s/process.resourcesPath/\'\/usr\/lib\/${pkgname%-git}\'/g" {} +
sed -i "s/\"electron\": \"[^\"]*\"/\"electron\": \"${SYSTEM_ELECTRON_VERSION}\"/g;228,262d" package.json
NODE_ENV=development npm install
}
build() {
cd "${srcdir}/${pkgname%-git}.git"
electronDist="/usr/lib/electron${_electronversion}"
NODE_ENV=production npx ts-node ./.erb/scripts/clean.js dist
NODE_ENV=production npm run build
NODE_ENV=production npm exec -c "electron-builder --linux dir -c.electronDist=${electronDist}"
}
package() {
install -Dm755 "${srcdir}/${pkgname%-git}.sh" "${pkgdir}/usr/bin/${pkgname%-git}"
install -Dm644 "${srcdir}/${pkgname%-git}.git/release/build/linux-"*/resources/app.asar -t "${pkgdir}/usr/lib/${pkgname%-git}"
cp -Pr --no-preserve=ownership "${srcdir}/${pkgname%-git}.git/release/build/linux-"*/resources/{app.asar.unpacked,assets} "${pkgdir}/usr/lib/${pkgname%-git}"
install -Dm644 "${srcdir}/${pkgname%-git}.desktop" -t "${pkgdir}/usr/share/applications"
icon_sizes=(16x16 24x24 32x32 48x48 64x64 96x96 128x128 256x256 512x512 1024x1024)
for _icons in "${icon_sizes[@]}";do
install -Dm644 "${srcdir}/${pkgname%-git}.git/assets/icons/${_icons}.png" \
"${pkgdir}/usr/share/icons/hicolor/${_icons}/apps/${pkgname%-git}.png"
done
install -Dm644 "${srcdir}/${pkgname%-git}.git/LICENSE" -t "${pkgdir}/usr/share/licenses/${pkgname}"
}
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 |