storyboarder
The external download is a transparent PNG image from Wikimedia Commons used as a static asset, not executable code, and the build process otherwise uses the official source tarball and standard npm commands for a legitimate project build.
Triggered rules
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 external download is a transparent PNG image from Wikimedia Commons used as a static asset, not executable code, and the build process otherwise uses the official source tarball and standard npm commands for a legitimate project build.
1 higher static finding superseded - not the current verdict (shown for transparency)
external_download_not_in_source
curl/wget fetches a URL on a non-allowlisted host that is not part of source=(), so it is not checksum-verified by makepkg.
-
PKGBUILD:18
curl https://upload.wikimedia.org/wikipedia/commons/8/8c/Transparent.png > "${srcdir}"/storyboarder-${pkgver}/src/img/watermark.png
PKGBUILD
1 offending line(s) highlighted#Maintainer: Bazza <bazza@riseup.net>
pkgname=('storyboarder')
pkgver=3.0.0
pkgrel=1
pkgdesc="The best way to visualize your story. It makes it easy to visualize a story as fast you can draw stick figures."
provides=("storyboarder")
depends=('zlib' 'hicolor-icon-theme' )
makedepends=('nvm' 'nodejs')
url='https://wonderunit.com/storyboarder/'
arch=('x86_64')
source=("https://github.com/wonderunit/storyboarder/archive/refs/tags/v${pkgver}.zip")
md5sums=('e4d21697c9f90adf7344a87917aa3a6f')
license=()
options=(!strip)
prepare(){
curl https://upload.wikimedia.org/wikipedia/commons/8/8c/Transparent.png > "${srcdir}"/storyboarder-${pkgver}/src/img/watermark.png
cd "${srcdir}/storyboarder-${pkgver}"
source /usr/share/nvm/init-nvm.sh
nvm install 14.16.0
npm install
npm run build
npm run dist:linux
echo "[Desktop Entry]
Name=Storyboader
Exec=/opt/storyboarder/storyboarder
Icon=storyboarder
Type=Application
Terminal=false
StartupNotify=true
Categories=Graphics;" > "${srcdir}"/storyboarder-${pkgver}/storyboarder.desktop
}
package(){
# opt dir
mkdir -p "${pkgdir}"/usr/bin/
echo -e '#!/bin/sh\n/opt/storyboarder/storyboarder' > "${pkgdir}"/usr/bin/storyboarder
chmod 755 "${pkgdir}"/usr/bin/storyboarder
mkdir -p "${pkgdir}"/opt/storyboarder/
# linux unpacked
cp -ar "${srcdir}"/storyboarder-${pkgver}/dist/linux-unpacked/* "${pkgdir}"/opt/storyboarder/
# Desktop
install -Dm644 "${srcdir}"/storyboarder-${pkgver}/storyboarder.desktop "${pkgdir}"/usr/share/applications/storyboarder.desktop
# Icon
install -Dm644 "${srcdir}"/storyboarder-${pkgver}/src/img/logoicon.png "${pkgdir}"/usr/share/pixmaps/storyboarder.png
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-01 00:21:48 | Low | 2 |
| 2026-10-31 00:07:41 | Low | 2 |
| 2026-10-30 00:29:30 | Low | 2 |
| 2026-10-29 00:13:55 | Low | 2 |
| 2026-10-28 00:06:54 | Low | 2 |
| 2026-10-27 00:23:28 | Low | 2 |
| 2026-10-26 00:12:40 | Low | 2 |
| 2026-10-25 00:20:48 | Low | 2 |
| 2026-10-24 00:14:55 | Low | 2 |
| 2026-10-23 00:02:19 | Low | 2 |
| 2026-10-22 00:13:10 | Low | 2 |
| 2026-10-21 00:12:50 | Low | 2 |
| 2026-10-20 00:10:31 | Low | 2 |
| 2026-10-19 00:03:55 | Low | 2 |
| 2026-10-18 00:06:55 | Low | 2 |
| 2026-10-17 00:21:55 | Low | 2 |
| 2026-10-16 00:12:47 | Low | 2 |
| 2026-10-15 00:28:05 | Low | 2 |
| 2026-10-14 00:06:47 | Low | 2 |
| 2026-10-13 00:23:45 | Low | 2 |