Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@

version: 2
updates:
# Maintain dependencies for npm
- package-ecosystem: "npm"
# Maintain dependencies for pnpm
- package-ecosystem: "pnpm"
Comment on lines +8 to +9
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🌐 Web query:

GitHub Dependabot pnpm support package ecosystem

💡 Result:

Dependabot treats pnpm as part of the npm package ecosystem. So in .github/dependabot.yml you should use:

updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"

Dependabot will detect pnpm usage from files like pnpm-lock.yaml (and workspace setup) while still using the npm ecosystem key. pnpm support: version updates work for pnpm v7–v10, while security updates are supported for pnpm v7–v8 only. [1][2]

Also, Dependabot added GA support for pnpm workspace catalogs (monorepo catalogs in pnpm-workspace.yaml) on February 4, 2025. [3]

Sources: [1] [2] [3]


Change package-ecosystem back to "npm"pnpm is not a supported ecosystem value in Dependabot. Instead, use "npm" and Dependabot will automatically detect pnpm from pnpm-lock.yaml. Note: pnpm version updates are supported for v7–v10, while security updates are supported for v7–v8 only.

🤖 Prompt for AI Agents
In @.github/dependabot.yml around lines 8 - 9, The dependabot configuration uses
package-ecosystem: "pnpm" which is unsupported; update the package-ecosystem key
in .github/dependabot.yml from "pnpm" to "npm" so Dependabot detects pnpm via
pnpm-lock.yaml automatically and continues to manage pnpm dependencies and
updates.

directory: "/"
open-pull-requests-limit: 20
schedule:
Expand Down
24 changes: 11 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -165,23 +165,21 @@ jobs:
uses: actions/checkout@v4
- name: Copy .env
run: php -r "copy('.env.example', '.env');"
- name: Get npm cache directory
id: npm-cache-dir
shell: bash
run: echo "dir=$(npm config get cache)" >> ${GITHUB_OUTPUT}
- uses: actions/cache@v4
id: npm-cache # use this to check for `cache-hit` ==> if: steps.npm-cache.outputs.cache-hit != 'true'
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
path: ${{ steps.npm-cache-dir.outputs.dir }}
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
version: 10
- name: Use Node.js 24
uses: actions/setup-node@v4
with:
node-version: 24
cache: "pnpm"
- name: Install dependencies
run: npm ci
run: pnpm install
- name: Check code formatting
run: npm run prettier
run: pnpm run prettier
- name: Linting
run: npm run lint
run: pnpm run lint
docker-build:
name: Docker Build
runs-on: ubuntu-latest
Expand Down
16 changes: 10 additions & 6 deletions .github/workflows/deploy-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,23 @@ jobs:
steps:
# Setup
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
node-version: 20
cache: npm
cache-dependency-path: ./docs/package-lock.json
version: 10
- name: Use Node.js 24
uses: actions/setup-node@v4
with:
node-version: 24
cache: "pnpm"
- name: Install dependencies
run: npm ci
run: pnpm install

# Build static docs
- name: Build all versions
run: ./build.sh
- name: Build website
run: npm run docusaurus build
run: pnpm run docusaurus build
- name: upload build artifact
uses: actions/upload-pages-artifact@v3
with:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/node_modules
/.pnpm-store/
/public/hot
/public/storage
/storage/*.key
Expand Down
10 changes: 5 additions & 5 deletions docker/app/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ RUN apk --no-cache add \
supervisor \
nginx \
mysql-client postgresql-client \
nodejs npm
nodejs pnpm

# Add PHP extensions
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
Expand Down Expand Up @@ -96,12 +96,12 @@ RUN su-exec www-data git config --global --add safe.directory /var/www/html

# Build frontend
RUN if [ "$VITE_COVERAGE" != "true" ] ; then \
su-exec www-data npm install --omit=dev && \
su-exec www-data npm run build; \
su-exec www-data pnpm install -P && \
su-exec www-data pnpm run build; \
else \
echo "Build frontend for coverage (instrumented and with sourcemap)" && \
su-exec www-data npm install && \
su-exec www-data npm run build -- --config vite.config.coverage.js; \
su-exec www-data pnpm install && \
su-exec www-data pnpm run build -- --config vite.config.coverage.js; \
fi

# Run and optimize composer for production
Expand Down
2 changes: 1 addition & 1 deletion docker/app/pilos-cli
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ change_permissions() {
case $ACTION in

frontend:build)
su-exec www-data npm run build
su-exec www-data pnpm run build
;;

playback-player:build)
Expand Down
4 changes: 2 additions & 2 deletions docker/app/playback-player/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ if unzip -q -d "$temporaryDirectory" "$downloadFileName"; then
echo "Entering directory $folderName failed"
exit 2
fi
npm install
npm run build
pnpm install
pnpm run build
Comment on lines +34 to +35
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

fd "Dockerfile" docker/ --exec cat -n {}

Repository: THM-Health/PILOS

Length of output: 4584


🏁 Script executed:

cat -n docker/app/playback-player/build.sh

Repository: THM-Health/PILOS

Length of output: 1565


🏁 Script executed:

cat -n docker/app/pilos-cli

Repository: THM-Health/PILOS

Length of output: 2504


🌐 Web query:

bbb-playback GitHub bigbluebutton package.json pnpm support

💡 Result:

bigbluebutton/bbb-playback is set up as an npm project (the README instructs npm install, and the repo ships a package-lock.json). [1] [2]

Because it does not ship a pnpm-lock.yaml and documents npm, pnpm isn’t officially supported/configured out-of-the-box—you can likely make it work, but you’d be doing it as an unsupported workflow (you’d need to generate/maintain pnpm’s lockfile yourself and ensure CI/deploy uses pnpm consistently). [1] [2] (pnpm itself is a separate package manager with its own lockfile, pnpm-lock.yaml.) [3]


Consider respecting the bbb-playback project's npm-based dependency management.

The external bbb-playback project is configured for npm (ships package-lock.json and documents npm install in its README), not pnpm. Running pnpm install on it will work but represents an unsupported workflow—pnpm will use its own dependency resolution instead of respecting the upstream lockfile, and you'll need to manage pnpm's pnpm-lock.yaml separately. Either run pnpm import to properly migrate the lockfile, or use npm to keep consistency with the upstream project's configured package manager.

🤖 Prompt for AI Agents
In `@docker/app/playback-player/build.sh` around lines 34 - 35, The build script
currently uses pnpm (lines containing "pnpm install" and "pnpm run build")
against the upstream bbb-playback project which provides an npm lockfile; change
the script to respect the project's npm-based dependency management by either
running "npm install" and "npm run build" instead of pnpm commands, or if you
must use pnpm, run "pnpm import" first to convert the package-lock.json into a
pnpm lockfile and then run "pnpm install" before the build; update the commands
in build.sh accordingly so the repository's package manager and lockfile are
handled consistently.


# clear old public folder
echo "Clearing old player..."
Expand Down
30 changes: 7 additions & 23 deletions docker/sail/bin/sail
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,10 @@ function display_help {
echo " ${GREEN}sail node ...${NC} Run a Node command"
echo " ${GREEN}sail node --version${NC}"
echo
echo "${YELLOW}NPM Commands:${NC}"
echo " ${GREEN}sail npm ...${NC} Run a npm command"
echo " ${GREEN}sail npx${NC} Run a npx command"
echo " ${GREEN}sail npm run prod${NC}"
echo
echo "${YELLOW}Yarn Commands:${NC}"
echo " ${GREEN}sail yarn ...${NC} Run a Yarn command"
echo " ${GREEN}sail yarn run prod${NC}"
echo "${YELLOW}PNPM Commands:${NC}"
echo " ${GREEN}sail pnpm ...${NC} Run a pnpm command"
echo " ${GREEN}sail pnpx${NC} Run a pnpx command"
echo " ${GREEN}sail pnpm run prod${NC}"
Comment on lines +63 to +66
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

sail pnpx is advertised but has no command handler — it will silently fall through to docker-compose.

Line 65 documents sail pnpx, but the dispatch section (lines 350-360) only handles "npx", not "pnpx". Running sail pnpx will pass the arguments unhandled to docker-compose and fail.

Either add a pnpx dispatch block or update the help text to match what's actually handled.

Option A: Add a pnpx handler (mirrors the npx block)
+# Proxy PNPX commands to the "pnpx" binary on the application container...
+elif [ "$1" == "pnpx" ]; then
+    shift 1
+
+    if [ "$EXEC" == "yes" ]; then
+        ARGS+=(exec -u "$APP_USER")
+        [ ! -t 0 ] && ARGS+=(-T)
+        ARGS+=("$APP_SERVICE" pnpx)
+    else
+        sail_is_not_running
+    fi
+
 # Proxy NPX commands to the "npx" binary on the application container...
 elif [ "$1" == "npx" ]; then
Option B: Update help text to reflect existing handlers
     echo "${YELLOW}PNPM Commands:${NC}"
     echo "  ${GREEN}sail pnpm ...${NC}        Run a pnpm command"
-    echo "  ${GREEN}sail pnpx${NC}            Run a pnpx command"
+    echo "  ${GREEN}sail npx${NC}             Run a npx command"
     echo "  ${GREEN}sail pnpm run prod${NC}"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
echo "${YELLOW}PNPM Commands:${NC}"
echo " ${GREEN}sail pnpm ...${NC} Run a pnpm command"
echo " ${GREEN}sail pnpx${NC} Run a pnpx command"
echo " ${GREEN}sail pnpm run prod${NC}"
echo "${YELLOW}PNPM Commands:${NC}"
echo " ${GREEN}sail pnpm ...${NC} Run a pnpm command"
echo " ${GREEN}sail npx${NC} Run a npx command"
echo " ${GREEN}sail pnpm run prod${NC}"
🤖 Prompt for AI Agents
In `@docker/sail/bin/sail` around lines 63 - 66, Help text advertises "sail pnpx"
but the dispatch only handles "npx" so running "sail pnpx" falls through; add a
"pnpx" case in the command dispatch (the same section that contains the "npx"
handler around the 350-360 area) that mirrors the existing npx handling (or
simply treat "pnpx" as an alias to the npx block) so the advertised command is
actually handled, and ensure the echo help lines remain accurate if you instead
choose to remove the pnpx help entry.

echo
echo "${YELLOW}Database Commands:${NC}"
echo " ${GREEN}sail mariadb${NC} Start a MySQL CLI session within the 'db' container"
Expand Down Expand Up @@ -339,14 +335,14 @@ elif [ "$1" == "node" ]; then
sail_is_not_running
fi

# Proxy NPM commands to the "npm" binary on the application container...
elif [ "$1" == "npm" ]; then
# Proxy PNPM commands to the "pnpm" binary on the application container...
elif [ "$1" == "pnpm" ]; then
shift 1

if [ "$EXEC" == "yes" ]; then
ARGS+=(exec -u "$APP_USER")
[ ! -t 0 ] && ARGS+=(-T)
ARGS+=("$APP_SERVICE" npm)
ARGS+=("$APP_SERVICE" pnpm)
else
sail_is_not_running
fi
Expand All @@ -363,18 +359,6 @@ elif [ "$1" == "npx" ]; then
sail_is_not_running
fi

# Proxy Yarn commands to the "yarn" binary on the application container...
elif [ "$1" == "yarn" ]; then
shift 1

if [ "$EXEC" == "yes" ]; then
ARGS+=(exec -u "$APP_USER")
[ ! -t 0 ] && ARGS+=(-T)
ARGS+=("$APP_SERVICE" yarn)
else
sail_is_not_running
fi

# Initiate a MySQL CLI terminal session within the "db" container...
elif [ "$1" == "mariadb" ]; then
shift 1
Expand Down
4 changes: 2 additions & 2 deletions docs/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ for tag in "${TAGS[@]}"; do
cp -r temp_versioned_docs/docs/docs .
cp -r temp_versioned_docs/docs/sidebars.js .

npm run docusaurus docs:version "${version}"
pnpm run docusaurus docs:version "${version}"
else
echo "Warning: branch/tag ${version} does not contain a docusaurus.config.js!"
fi
Expand All @@ -70,7 +70,7 @@ for branch in "${BRANCHES[@]}"; do
cp -r temp_versioned_docs/docs/docs .
cp -r temp_versioned_docs/docs/sidebars.js .

npm run docusaurus docs:version "${version}"
pnpm run docusaurus docs:version "${version}"
else
echo "Warning: branch ${branch} does not contain a docusaurus.config.js!"
fi
Expand Down
6 changes: 3 additions & 3 deletions docs/docs/development/02-getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ The docker container will detect the certificate and key on the next start and u

```bash
./sail composer install
./sail npm install
./sail pnpm install
```

## Adjust config
Expand Down Expand Up @@ -266,13 +266,13 @@ The production container automatically runs the `pilos-cli frontend:build` comma
In the development environment you can build the frontend with the following command:

```bash
./sail npm run build
./sail pnpm run build
```

However, for development it is recommended to use the development server for hot reloading:

```bash
./sail npm run dev
./sail pnpm run dev
```

For the development you can use any editor of your choice but please do not check in any configuration files for your editor. In this case you may want to
Expand Down
4 changes: 2 additions & 2 deletions docs/docs/development/05-code-style.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ The backend uses the php framework Laravel and therefore it follows the
implemented code you can run the command `sail composer run fix-cs`.

The frontend style gets checked by prettier and the code is linted using eslint.
The style can be fixed by running the command `sail npm run prettier:fix`.
Lint fixes can a applied by running the command `sail npm run lint:fix`.
The style can be fixed by running the command `sail pnpm run prettier:fix`.
Lint fixes can a applied by running the command `sail pnpm run lint:fix`.
For best practices checkout the [vue style guide](https://vuejs.org/v2/style-guide/).

Additionally, to the style guides the following things should apply to the changes:
Expand Down
4 changes: 2 additions & 2 deletions docs/docs/development/06-documentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ To run the documentation locally, follow these steps:
1. **Install Dependencies:**

```bash
./sail npm run docs:install
./sail pnpm run docs:install
```

2. **Start the Development Server:**
```bash
./sail npm run docs:dev
./sail pnpm run docs:dev
```
20 changes: 10 additions & 10 deletions docs/docs/development/07-testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,23 +70,23 @@ Please make sure your OS is supported and all required packages are installed.
If the system requirements are met, you can install Cypress on your local machine:

```bash
npx cypress install
pnpm cypress install
```

### Running Cypress Tests

First you need to have the frontend either running compiled (`./sail npm run build`) or in development mode (`./sail npm run dev`).
First you need to have the frontend either running compiled (`./sail pnpm run build`) or in development mode (`./sail pnpm run dev`).

You can then run the tests in the interactive mode with:

```bash
npm run cypress:open
pnpm run cypress:open
```

Or you can run the tests headless with:

```bash
npm run cypress:run
pnpm run cypress:run
```

### Coverage
Expand All @@ -95,19 +95,19 @@ To generate a code coverage report, the frontend must first be instrumented so t
This command can be used to build the frontend with coverage instrumentation:

```bash
./sail npm run build -- --config vite.config.coverage.js
./sail pnpm run build -- --config vite.config.coverage.js
```

After that you can run the tests with the coverage report:

```bash
npm run cypress:run
pnpm run cypress:run
```

To generate a code coverage report in HTML format you can use the following command:

```bash
./sail npm run create-coverage-report
./sail pnpm run create-coverage-report
```

## System Testing with Cypress
Expand All @@ -127,13 +127,13 @@ Before running the tests make sure you have correctly installed cypress as descr
You can then run the tests in the interactive mode with:

```bash
npm run cypress:open -- -P ./tests/System
pnpm run cypress:open -- -P ./tests/System
```

Or you can run the tests headless with:

```bash
npm run cypress:run -- -P ./tests/System
pnpm run cypress:run -- -P ./tests/System
```

## Visual Regression Testing with Happo.io
Expand Down Expand Up @@ -169,7 +169,7 @@ Although visual regression tests run exclusively in the GitHub Action runner, yo
Before running the tests make sure you have correctly installed cypress as described in the [Installing cypress](#installing-cypress) section.

```bash
npm run cypress:open -- -P ./tests/Visual --config experimentalInteractiveRunEvents=true
pnpm run cypress:open -- -P ./tests/Visual --config experimentalInteractiveRunEvents=true
```

This setup allows you to ensure your tests are functioning correctly before committing changes.
Loading
Loading