appflowy
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The flagged pattern involves installing files into system directories, which is standard for AUR packages; the build uses a local Flutter clone and project-owned sources, with no evidence of privilege escalation or self-modification at runtime.
1 higher static finding superseded - not the current verdict (shown for transparency)
privileged_install
The package grants elevated privileges or installs an update path outside pacman: a /etc/sudoers.d rule (often passwordless), a setuid/setgid binary, or a self-update script/service that can fetch and run future code with no checksum verification. The initial install may be verified, but the ongoing privilege + update surface is a real supply-chain / privilege-escalation risk.
-
PKGBUILD:62
rustup toolchain install --no-self-update
PKGBUILD
1 offending line(s) highlighted# Maintainer: Sergey Kanafyev <sergeykanafyev@gmail.com>
# Automation: https://github.com/its-me/aur.appflowy
pkgname=appflowy
pkgver=0.13.0
pkgrel=1
pkgdesc="Open-source alternative to Notion – you own your data and customizations"
arch=('x86_64')
url="https://appflowy.com"
license=('AGPL-3.0-or-later')
conflicts=('appflowy-bin' 'appflowy-git')
depends=(
'glib2>=2.80'
'gst-plugins-base-libs'
'gtk3'
'hicolor-icon-theme'
'libkeybinder3'
'libnotify'
'rocksdb'
)
_flutter_ver=3.27.4
makedepends=(
'clang'
'cmake'
'git'
'ninja'
'pkg-config'
'sqlite'
'openssl'
'unzip'
'protobuf'
'rsync'
'rustup'
'cargo-make'
)
optdepends=(
'kdialog: file picker on KDE Plasma'
'zenity: file picker on GNOME/GTK'
)
options=('!lto' '!debug' '!buildflags')
source=(
"${pkgname}-${pkgver}.tar.gz::https://github.com/AppFlowy-IO/AppFlowy/archive/refs/tags/${pkgver}.tar.gz"
"flutter::git+https://github.com/flutter/flutter.git#tag=${_flutter_ver}"
"appflowy.desktop"
)
sha256sums=(
'f0e84458b9d5fb9f478ada38c69c1d4da4c9e400a138dfb6c857a1036f7ef2b8'
'SKIP'
'55c02d13249b333088ee452e76c8f36254e510651023549dc7e35efca02ca821'
)
prepare() {
export PATH="${srcdir}/flutter/bin:${PATH}"
cd "AppFlowy-${pkgver}/frontend"
# Upstream sets the real version at release time; the tag still carries a stale one
sed -i "s/^APPFLOWY_VERSION = .*/APPFLOWY_VERSION = \"${pkgver}\"/" Makefile.toml
sed -i "s/^version: .*/version: ${pkgver}/" appflowy_flutter/pubspec.yaml
# Install the Rust toolchain declared in rust-toolchain.toml (channel = "1.85")
rustup toolchain install --no-self-update
rustup target add ${CARCH}-unknown-linux-gnu
# Pre-fetch Rust crate dependencies
cargo fetch --manifest-path=rust-lib/Cargo.toml
# Fetch Flutter package dependencies
cd appflowy_flutter
flutter pub get
# Run code generation explicitly so it runs visibly and before cargo-make
cd ..
./scripts/code_generation/generate.sh --skip-pub-get
}
build() {
export PATH="${srcdir}/flutter/bin:${HOME}/.pub-cache/bin:${PATH}"
export CC=clang
export CXX=clang++
export ROCKSDB_LIB_DIR=/usr/lib
# hotkey_manager plugin has uninitialized variables that clang promotes to errors
export CXXFLAGS="-Wno-error=sometimes-uninitialized"
cd "AppFlowy-${pkgver}/frontend"
cargo make --profile production-linux-${CARCH} appflowy
}
package() {
cd "AppFlowy-${pkgver}/frontend"
# APPFLOWY_VERSION in Makefile.toml determines the product subdirectory name
local _appver
_appver=$(sed -n 's/^APPFLOWY_VERSION = "\(.*\)"/\1/p' Makefile.toml)
local _product="appflowy_flutter/product/${_appver}/linux/Release/AppFlowy"
# Install AppFlowy bundle
install -dm755 "${pkgdir}/usr/lib/AppFlowy"
cp -r "${_product}/." "${pkgdir}/usr/lib/AppFlowy/"
chmod 755 "${pkgdir}/usr/lib/AppFlowy/AppFlowy"
# Symlink into PATH
install -dm755 "${pkgdir}/usr/bin"
ln -s "/usr/lib/AppFlowy/AppFlowy" "${pkgdir}/usr/bin/appflowy"
# Desktop entry
install -Dm644 "${srcdir}/appflowy.desktop" \
"${pkgdir}/usr/share/applications/appflowy.desktop"
# Icons
install -Dm644 "appflowy_flutter/linux/packaging/assets/logo.png" \
"${pkgdir}/usr/share/icons/hicolor/256x256/apps/appflowy.png"
install -Dm644 "appflowy_flutter/assets/images/flowy_logo.svg" \
"${pkgdir}/usr/share/icons/hicolor/scalable/apps/appflowy.svg"
install -Dm644 "../LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
Changes since previous scan
--- PKGBUILD @ 2026-07-24 00:02+++ PKGBUILD @ 2026-08-03 00:08@@ -2,7 +2,7 @@ # Automation: https://github.com/its-me/aur.appflowy pkgname=appflowy-pkgver=0.12.5+pkgver=0.13.0 pkgrel=1 pkgdesc="Open-source alternative to Notion – you own your data and customizations" arch=('x86_64')@@ -44,7 +44,7 @@ "appflowy.desktop" ) sha256sums=(- 'c51e995d2c84ac71b5d6c1cb15583280567ffac9a52b2fc57823e766bbc71353'+ 'f0e84458b9d5fb9f478ada38c69c1d4da4c9e400a138dfb6c857a1036f7ef2b8' 'SKIP' '55c02d13249b333088ee452e76c8f36254e510651023549dc7e35efca02ca821' )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 17:28:09 | MEDIUM | 1 |
| 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 |