diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 638274d2d..000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,34 +0,0 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates - -version: 2 -updates: - # Maintain dependencies for npm - - package-ecosystem: "npm" - directory: "/" - open-pull-requests-limit: 20 - schedule: - interval: "weekly" - day: "monday" - time: "06:00" - timezone: "Europe/Berlin" - groups: - tiptap: - patterns: - - "@tiptap*" - primevue: - patterns: - - "primevue*" - - "@primevue*" - - # Maintain dependencies for Composer - - package-ecosystem: "composer" - directory: "/" - open-pull-requests-limit: 20 - schedule: - interval: "weekly" - day: "monday" - time: "06:00" - timezone: "Europe/Berlin" diff --git a/.github/workflows/ci-docker.yml b/.github/workflows/ci-docker.yml index 4a9d749fb..383590cc7 100644 --- a/.github/workflows/ci-docker.yml +++ b/.github/workflows/ci-docker.yml @@ -2,12 +2,8 @@ name: CI Docker build on: workflow_dispatch: - release: - types: [published] - push: - branches: - - develop - - "[0-9].x" + pull_request: + jobs: build-and-push-image: runs-on: ubuntu-latest @@ -22,26 +18,12 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - - name: Login to Docker Hub + - name: Log in to the Container registry uses: docker/login-action@v3 with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@v5 - with: - images: pilos/pilos - flavor: | - latest=auto - prefix= - suffix= - tags: | - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{major}} - type=ref,event=branch,prefix=dev- + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} - name: Set version to tag name if: ${{ github.event_name == 'release' }} @@ -51,13 +33,16 @@ jobs: if: ${{ github.event_name != 'release' }} run: echo "${GITHUB_SHA}" | cut -c1-7 > version + - name: downcase REPO + run: | + echo "IMAGE_NAME=`echo ${{github.repository}} | tr '[:upper:]' '[:lower:]'`" >>${GITHUB_ENV} + - name: Build and push Docker image uses: docker/build-push-action@v6 with: file: docker/app/Dockerfile context: . push: true - tags: ${{ steps.meta.outputs.tags }} + tags: "ghcr.io/${{ env.IMAGE_NAME }}:${{github.head_ref}}" labels: ${{ steps.meta.outputs.labels }} - cache-from: type=registry,ref=pilos/pilos:buildcache - cache-to: type=registry,ref=pilos/pilos:buildcache,mode=max + diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 156a36f27..000000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,446 +0,0 @@ -name: CI - -on: - push: - branches: - - develop - - "[0-9].x" - pull_request: - -env: - PHP_VERSION: 8.4 - CYPRESS_PROJECT_ID: w8t3fx - -jobs: - backend: - name: Backend - runs-on: ubuntu-latest - - services: - redis: - image: redis - options: >- - --health-cmd "redis-cli ping" - --health-interval 10s - --health-timeout 5s - --health-retries 5 - ports: - - 6379 - postgres: - image: postgres - env: - POSTGRES_USER: user - POSTGRES_PASSWORD: password - POSTGRES_DB: test - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - ports: - - 5432 - - mariadb: - image: mariadb:11 - ports: - - 3306 - env: - MYSQL_USER: user - MYSQL_PASSWORD: password - MYSQL_DATABASE: test - MYSQL_ROOT_PASSWORD: password - options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=5s --health-timeout=2s --health-retries=3 - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 2 - - name: Verify MariaDB connection - env: - PORT: ${{ job.services.mariadb.ports[3306] }} - run: | - while ! mysqladmin ping -h"127.0.0.1" -P"$PORT" --silent; do - sleep 1 - done - - name: Verify Postgres connection - env: - PORT: ${{ job.services.postgres.ports[5432] }} - run: | - while ! pg_isready -h"127.0.0.1" -p"$PORT" > /dev/null 2> /dev/null; do - sleep 1 - done - - name: Install packages - run: | - sudo apt-get update - sudo apt-get install pv mariadb-client - - name: Setup PHP, with composer and extensions - uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php - with: - php-version: ${{ env.PHP_VERSION }} - extensions: bcmath, ctype, fileinfo, json, mbstring, dom, ldap, pdo, tokenizer, xml, mysql, sqlite, imagick, exif, intl - coverage: pcov - - name: Copy .env - run: php -r "copy('.env.ci', '.env');" - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - uses: actions/cache@v4 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - name: Install php dependencies - run: | - composer self-update - composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist - - name: Generate key - run: php artisan key:generate - - name: Directory Permissions - run: chmod -R 777 storage bootstrap/cache - - name: Migrate Database - env: - DB_HOST: 127.0.0.1 - DB_PORT: ${{ job.services.mariadb.ports[3306] }} - DB_DATABASE: test - DB_USERNAME: root - DB_PASSWORD: password - run: php artisan migrate --no-interaction -vvv --force - - name: Execute code style check via Laravel Pint - run: vendor/bin/pint --test -v - - name: Execute tests (Unit and Feature tests) via PHPUnit - if: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork }} - env: - DB_HOST: 127.0.0.1 - DB_PORT: ${{ job.services.mariadb.ports[3306] }} - DB_DATABASE: test - DB_USERNAME: root - DB_PASSWORD: password - REDIS_HOST: 127.0.0.1 - REDIS_PORT: ${{ job.services.redis.ports[6379] }} - LOG_CHANNEL: stack - run: php artisan test --parallel --testsuite=Unit,Feature --coverage-clover=coverage.xml - - name: Execute tests (Unit, Feature and Integration tests) via PHPUnit - if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.head.repo.fork }} - env: - DB_HOST: 127.0.0.1 - DB_PORT: ${{ job.services.mariadb.ports[3306] }} - DB_DATABASE: test - DB_USERNAME: root - DB_PASSWORD: password - REDIS_HOST: 127.0.0.1 - REDIS_PORT: ${{ job.services.redis.ports[6379] }} - LOG_CHANNEL: stack - BBB_TEST_SERVER_HOST: ${{ secrets.BBB_TEST_SERVER_HOST }} - BBB_TEST_SERVER_SECRET: ${{ secrets.BBB_TEST_SERVER_SECRET }} - - run: php artisan test --parallel --testsuite=Unit,Feature --coverage-clover=coverage.xml - - - name: Execute tests (Unit and Feature tests) via PHPUnit using Postgres - env: - DB_CONNECTION: pgsql - DB_HOST: 127.0.0.1 - DB_PORT: ${{ job.services.postgres.ports[5432] }} - DB_DATABASE: test - DB_USERNAME: user - DB_PASSWORD: password - REDIS_HOST: 127.0.0.1 - REDIS_PORT: ${{ job.services.redis.ports[6379] }} - LOG_CHANNEL: stack - run: php artisan test --parallel --testsuite=Unit,Feature - - name: Upload coverage - uses: codecov/codecov-action@v5 - with: - fail_ci_if_error: true - - name: Upload laravel logs - uses: actions/upload-artifact@v4 - if: failure() - with: - name: laravel.log - path: storage/logs/laravel.log - frontend-code-style-check: - name: Frontend Code Style Check - runs-on: ubuntu-latest - steps: - - name: Checkout - 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' - with: - path: ${{ steps.npm-cache-dir.outputs.dir }} - key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-node- - - name: Install dependencies - run: npm ci - - name: Check code formatting - run: npm run prettier - - name: Linting - run: npm run lint - docker-build: - name: Docker Build - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Build and export - uses: docker/build-push-action@v6 - with: - file: docker/app/Dockerfile - context: . - load: true - tags: pilos:latest - cache-from: type=gha - cache-to: type=gha,mode=max - outputs: type=docker,dest=/tmp/pilos-image.tar - build-args: | - VITE_COVERAGE=true - - name: Upload artifact - uses: actions/upload-artifact@v4 - with: - name: pilos-image - path: /tmp/pilos-image.tar - - generate-frontend-matrix: - name: Generate Frontend Matrix - runs-on: ubuntu-latest - outputs: - record: ${{ steps.generate-matrix.outputs.record }} - tag: ${{ steps.generate-matrix.outputs.tag }} - matrix: ${{ steps.generate-matrix.outputs.matrix }} - frontend_group: ${{ steps.generate-matrix.outputs.frontend_group }} - visual_group: ${{ steps.generate-matrix.outputs.visual_group }} - system_group: ${{ steps.generate-matrix.outputs.system_group }} - steps: - - name: Generate matrix - id: generate-matrix - run: | - if [ ${{ (github.actor == 'dependabot[bot]' || github.event_name == 'push') && runner.debug != '1' }} = true ]; then - record=false - tag='' - frontend_group='' - visual_group='' - system_group='' - matrix='{ "containers": [1] }' - else - record=true - tag=${{ github.event_name }} - frontend_group="Frontend tests" - visual_group="Visual tests" - system_group="System tests" - matrix='{ "containers": [1,2,3,4,5] }' - fi - echo "record=$record" >> "$GITHUB_OUTPUT" - echo "tag=$tag" >> "$GITHUB_OUTPUT" - echo "frontend_group=$frontend_group" >> "$GITHUB_OUTPUT" - echo "visual_group=$visual_group" >> "$GITHUB_OUTPUT" - echo "system_group=$system_group" >> "$GITHUB_OUTPUT" - echo "matrix=$matrix" >> "$GITHUB_OUTPUT" - frontend-tests: - name: Frontend Tests - runs-on: ubuntu-latest - needs: - - docker-build - - generate-frontend-matrix - strategy: - # don't fail the entire matrix on failure - fail-fast: false - matrix: ${{ fromJson(needs.generate-frontend-matrix.outputs.matrix) }} - - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Download artifact - uses: actions/download-artifact@v4 - with: - name: pilos-image - path: /tmp - - name: Load image - run: | - docker load --input /tmp/pilos-image.tar - - - name: Copy .env - run: docker run --rm pilos:latest cat ./.env.ci > .env - - - name: Generate key - run: | - docker run --rm \ - --mount type=bind,source=${{ github.workspace }}/.env,target=/var/www/html/.env \ - --entrypoint /bin/bash \ - pilos:latest \ - -c "chown www-data:www-data .env && pilos-cli key:generate" - - - name: Adjust .env - run: | - sed -i 's/CONTAINER_IMAGE=.*/CONTAINER_IMAGE=pilos:latest/g' .env - sed -i 's|APP_URL=.*|APP_URL=http://localhost:9080|g' .env - sed -i 's|BBB_TEST_SERVER_HOST=.*|BBB_TEST_SERVER_HOST=${{ secrets.BBB_TEST_SERVER_HOST }}|g' .env - sed -i 's|BBB_TEST_SERVER_SECRET=.*|BBB_TEST_SERVER_SECRET=${{ secrets.BBB_TEST_SERVER_SECRET }}|g' .env - - - name: Start app - run: docker compose -f compose.test.yml -f compose.test.ci.yml up -d - - name: Cypress run frontend tests - uses: cypress-io/github-action@v6 - with: - wait-on: "http://localhost:9080" # Waits for above - group: ${{ needs.generate-frontend-matrix.outputs.frontend_group }} - parallel: ${{ needs.generate-frontend-matrix.outputs.record }} - record: ${{ needs.generate-frontend-matrix.outputs.record }} - tag: ${{ needs.generate-frontend-matrix.outputs.tag }} - env: - CYPRESS_PROJECT_ID: ${{ env.CYPRESS_PROJECT_ID }} - CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }} - COMMIT_INFO_SHA: ${{ github.event.pull_request.head.sha }} - APP_URL: "http://localhost:9080" - TZ: "America/New_York" - ELECTRON_EXTRA_LAUNCH_ARGS: "--lang=en" - - name: Upload screenshots - uses: actions/upload-artifact@v4 - if: always() - with: - name: cypress-screenshots - path: tests/Frontend/screenshots - - name: Upload coverage - uses: codecov/codecov-action@v5 - with: - fail_ci_if_error: true - directory: coverage - visual-tests: - name: Visual Tests - runs-on: ubuntu-latest - needs: - - docker-build - - generate-frontend-matrix - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Fetch develop branch - if: github.ref != 'refs/heads/develop' - run: git fetch origin develop:develop - - name: Download artifact - uses: actions/download-artifact@v4 - with: - name: pilos-image - path: /tmp - - name: Load image - run: | - docker load --input /tmp/pilos-image.tar - - name: Copy .env - run: docker run --rm pilos:latest cat ./.env.ci > .env - - name: Generate key - run: | - docker run --rm \ - --mount type=bind,source=${{ github.workspace }}/.env,target=/var/www/html/.env \ - --entrypoint /bin/bash \ - pilos:latest \ - -c "chown www-data:www-data .env && pilos-cli key:generate" - - - name: Adjust .env - run: | - sed -i 's/CONTAINER_IMAGE=.*/CONTAINER_IMAGE=pilos:latest/g' .env - sed -i 's|APP_URL=.*|APP_URL=http://localhost:9080|g' .env - sed -i 's|BBB_TEST_SERVER_HOST=.*|BBB_TEST_SERVER_HOST=${{ secrets.BBB_TEST_SERVER_HOST }}|g' .env - sed -i 's|BBB_TEST_SERVER_SECRET=.*|BBB_TEST_SERVER_SECRET=${{ secrets.BBB_TEST_SERVER_SECRET }}|g' .env - - - name: Start app - run: docker compose -f compose.test.yml -f compose.test.ci.yml up -d - - - name: Run cypress - uses: cypress-io/github-action@v6 - with: - command-prefix: happo-e2e -- npx - group: ${{ needs.generate-frontend-matrix.outputs.visual_group }} - record: ${{ needs.generate-frontend-matrix.outputs.record }} - tag: ${{ needs.generate-frontend-matrix.outputs.tag }} - project: ./tests/Visual - env: - NODE_OPTIONS: "--experimental-require-module" - HAPPO_API_KEY: ${{ secrets.HAPPO_API_KEY }} - HAPPO_API_SECRET: ${{ secrets.HAPPO_API_SECRET }} - HAPPO_DELETE_OLD_COMMENTS: true - BASE_BRANCH: origin/develop - CYPRESS_PROJECT_ID: ${{ env.CYPRESS_PROJECT_ID }} - CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }} - COMMIT_INFO_SHA: ${{ github.event.pull_request.head.sha }} - APP_URL: "http://localhost:9080" - TZ: "America/New_York" - ELECTRON_EXTRA_LAUNCH_ARGS: "--lang=en" - system-tests: - name: System Tests - runs-on: ubuntu-latest - needs: - - docker-build - - generate-frontend-matrix - if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.head.repo.fork }} - - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Download artifact - uses: actions/download-artifact@v4 - with: - name: pilos-image - path: /tmp - - name: Load image - run: | - docker load --input /tmp/pilos-image.tar - docker image ls -a - - - name: Copy .env - run: docker run --rm pilos:latest cat ./.env.ci > .env - - - name: Generate key - run: | - docker run --rm \ - --mount type=bind,source=${{ github.workspace }}/.env,target=/var/www/html/.env \ - --entrypoint /bin/bash \ - pilos:latest \ - -c "chown www-data:www-data .env && pilos-cli key:generate" - - - name: Adjust .env - run: | - sed -i 's/CONTAINER_IMAGE=.*/CONTAINER_IMAGE=pilos:latest/g' .env - sed -i 's|APP_URL=.*|APP_URL=http://localhost:9080|g' .env - sed -i 's|BBB_TEST_SERVER_HOST=.*|BBB_TEST_SERVER_HOST=${{ secrets.BBB_TEST_SERVER_HOST }}|g' .env - sed -i 's|BBB_TEST_SERVER_SECRET=.*|BBB_TEST_SERVER_SECRET=${{ secrets.BBB_TEST_SERVER_SECRET }}|g' .env - - - name: Start app - run: docker compose -f compose.test.yml -f compose.test.ci.yml up -d - - - name: Cypress run system tests - uses: cypress-io/github-action@v6 - with: - wait-on: "http://localhost:9080" # Waits for above - group: ${{ needs.generate-frontend-matrix.outputs.system_group }} - record: ${{ needs.generate-frontend-matrix.outputs.record }} - tag: ${{ needs.generate-frontend-matrix.outputs.tag }} - project: ./tests/System - env: - CYPRESS_PROJECT_ID: ${{ env.CYPRESS_PROJECT_ID }} - CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }} - COMMIT_INFO_SHA: ${{ github.event.pull_request.head.sha }} - APP_URL: "http://localhost:9080" - TZ: "America/New_York" - ELECTRON_EXTRA_LAUNCH_ARGS: "--lang=en" - - name: Upload screenshots - uses: actions/upload-artifact@v4 - if: always() - with: - name: cypress-screenshots - path: tests/System/screenshots diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml deleted file mode 100644 index 91aef3398..000000000 --- a/.github/workflows/deploy-docs.yml +++ /dev/null @@ -1,60 +0,0 @@ -name: Build and Deploy Docs - -on: - workflow_dispatch: - push: - branches: - - "develop" - paths: - - "docs/**" - -# Do not build the docs concurrently -concurrency: - group: docs - cancel-in-progress: true - -jobs: - build: - name: Build docs - runs-on: ubuntu-latest - defaults: - run: - working-directory: ./docs - steps: - # Setup - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: npm - cache-dependency-path: ./docs/package-lock.json - - name: Install dependencies - run: npm ci - - # Build static docs - - name: Build all versions - run: ./build.sh - - name: Build website - run: npm run docusaurus build - - name: upload build artifact - uses: actions/upload-pages-artifact@v3 - with: - path: ./docs/build - - deploy: - name: Deploy docs to gh-pages - needs: build - - permissions: - pages: write - id-token: write - - environment: - name: Documentation - url: ${{ steps.deployment.outputs.page_url }} - - runs-on: ubuntu-latest - steps: - - name: deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/.github/workflows/publiccode-yml-validation.yml b/.github/workflows/publiccode-yml-validation.yml deleted file mode 100644 index 3485fd2db..000000000 --- a/.github/workflows/publiccode-yml-validation.yml +++ /dev/null @@ -1,12 +0,0 @@ -name: publiccode.yml validation - -on: [pull_request, push] - -jobs: - publiccode_yml_validation: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: italia/publiccode-parser-action@v1 - with: - publiccode: "publiccode.yml" diff --git a/.github/workflows/pull-locales.yml b/.github/workflows/pull-locales.yml deleted file mode 100644 index 382e5ada1..000000000 --- a/.github/workflows/pull-locales.yml +++ /dev/null @@ -1,98 +0,0 @@ -name: Pull locales from POEditor - -on: - workflow_dispatch: - inputs: - poeditor_project_id: - required: true - description: "POEditor Project ID" - type: number - schedule: - - cron: "0 * * * *" - -env: - PHP_VERSION: 8.4 - -jobs: - pull-locales: - name: Pull locales from POEditor - runs-on: ubuntu-latest - - services: - mariadb: - image: mariadb:11 - ports: - - 3306 - env: - MYSQL_USER: user - MYSQL_PASSWORD: password - MYSQL_DATABASE: test - MYSQL_ROOT_PASSWORD: password - options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=5s --health-timeout=2s --health-retries=3 - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 2 - - name: Verify MariaDB connection - env: - PORT: ${{ job.services.mariadb.ports[3306] }} - run: | - while ! mysqladmin ping -h"127.0.0.1" -P"$PORT" --silent; do - sleep 1 - done - - name: Setup PHP, with composer and extensions - uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php - with: - php-version: ${{ env.PHP_VERSION }} - extensions: bcmath, ctype, fileinfo, json, mbstring, dom, ldap, pdo, tokenizer, xml, mysql, sqlite - coverage: pcov - - name: Copy .env - run: php -r "copy('.env.ci', '.env');" - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - uses: actions/cache@v4 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - name: Install php dependencies - run: | - composer self-update - composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist - - name: Generate key - run: php artisan key:generate - - name: Directory Permissions - run: chmod -R 777 storage bootstrap/cache - - name: Migrate Database - env: - DB_HOST: 127.0.0.1 - DB_PORT: ${{ job.services.mariadb.ports[3306] }} - DB_DATABASE: test - DB_USERNAME: root - DB_PASSWORD: password - run: php artisan migrate --no-interaction -vvv --force - - - name: Execute command to pull locales from POEditor - env: - DB_HOST: 127.0.0.1 - DB_PORT: ${{ job.services.mariadb.ports[3306] }} - DB_DATABASE: test - DB_USERNAME: root - DB_PASSWORD: password - POEDITOR_TOKEN: ${{ secrets.POEDITOR_TOKEN }} - POEDITOR_PROJECT: ${{ github.event.inputs.poeditor_project_id || secrets.POEDITOR_PROJECT}} - run: php artisan locales:import - - - name: Create Pull Request - uses: peter-evans/create-pull-request@v5 - with: - commit-message: Update locales - add-paths: "lang/**/*.php" - branch: update-locales - title: Update locales using POEditor - body: This PR was automatically created using the most recent translations from POEditor. diff --git a/.github/workflows/update-bbb-recording-player.yml b/.github/workflows/update-bbb-recording-player.yml deleted file mode 100644 index 18e67b88e..000000000 --- a/.github/workflows/update-bbb-recording-player.yml +++ /dev/null @@ -1,62 +0,0 @@ -name: BBB Recording Player Updates - -on: - schedule: - - cron: "0 0 * * *" # Run every day at midnight - -jobs: - check-for-updates: - name: Check for BBB Recording Player Updates - runs-on: ubuntu-latest - - steps: - - name: Get the latest BBB Recording Player release - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - curl -s --request GET \ - --url "https://api.github.com/repos/bigbluebutton/bbb-playback/releases/latest" \ - --header "Authorization: Bearer $GH_TOKEN" \ - > player-release.json - - name: Extract the latest BBB Recording Player version - run: echo "LATEST_PLAYER_VERSION=$(jq -r '.tag_name' player-release.json | sed 's/^v//')" >> $GITHUB_ENV - - name: Extract release notes - run: | - RELEASE_NOTES=$(jq -r '.body' player-release.json) - echo "RELEASE_NOTES<> $GITHUB_ENV - echo "$RELEASE_NOTES" >> $GITHUB_ENV - echo "EOF" >> $GITHUB_ENV - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 2 - - name: Extract the current BBB Recording Player version from Docker file - run: echo "CURRENT_PLAYER_VERSION=$(sed -n 's/ARG PLAYBACK_PLAYER_VERSION=//p' docker/app/Dockerfile)" >> $GITHUB_ENV - - name: Compare the versions - run: echo "NEEDS_UPDATE=$(dpkg --compare-versions ${{ env.LATEST_PLAYER_VERSION }} gt ${{ env.CURRENT_PLAYER_VERSION }} && echo true || echo false)" >> $GITHUB_ENV - - name: Update the BBB Player version - if: ${{ env.NEEDS_UPDATE == 'true' }} - run: | - sed -i "s/ARG PLAYBACK_PLAYER_VERSION=.*/ARG PLAYBACK_PLAYER_VERSION=${LATEST_PLAYER_VERSION}/" docker/app/Dockerfile - - name: Create PR with the update - if: ${{ env.NEEDS_UPDATE == 'true' }} - uses: peter-evans/create-pull-request@v7 - with: - token: ${{ secrets.GITHUB_TOKEN }} - add-paths: "docker/app/Dockerfile" - commit-message: "Update BBB Recording Player to version ${{ env.LATEST_PLAYER_VERSION }}" - title: "Bump BBB Recording Player from ${{ env.CURRENT_PLAYER_VERSION }} to ${{ env.LATEST_PLAYER_VERSION }}" - labels: "dependencies" - body: | - Bumps BBB Recording Player from ${{ env.CURRENT_PLAYER_VERSION }} to ${{ env.LATEST_PLAYER_VERSION }} - -
- Release notes -

Sourced from bigbluebutton/bbb-playback's releases.

- - ${{ env.RELEASE_NOTES }} -
- - ## Automated Update - This PR was automatically generated by the BBB Recording Player update workflow. - branch: "update-bbb-recording-player-${{ env.LATEST_PLAYER_VERSION }}" diff --git a/.github/workflows/upload-locales.yml b/.github/workflows/upload-locales.yml deleted file mode 100644 index ff15bd4dc..000000000 --- a/.github/workflows/upload-locales.yml +++ /dev/null @@ -1,90 +0,0 @@ -name: Upload locales to POEditor - -on: - workflow_dispatch: - inputs: - poeditor_project_id: - required: true - description: "POEditor Project ID" - type: number - push: - branches: - - "develop" - -env: - PHP_VERSION: 8.4 - -jobs: - pull-locales: - name: Upload locales to POEditor - runs-on: ubuntu-latest - - services: - mariadb: - image: mariadb:11 - ports: - - 3306 - env: - MYSQL_USER: user - MYSQL_PASSWORD: password - MYSQL_DATABASE: test - MYSQL_ROOT_PASSWORD: password - options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=5s --health-timeout=2s --health-retries=3 - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 2 - - name: Verify MariaDB connection - env: - PORT: ${{ job.services.mariadb.ports[3306] }} - run: | - while ! mysqladmin ping -h"127.0.0.1" -P"$PORT" --silent; do - sleep 1 - done - - name: Setup PHP, with composer and extensions - uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php - with: - php-version: ${{ env.PHP_VERSION }} - extensions: bcmath, ctype, fileinfo, json, mbstring, dom, ldap, pdo, tokenizer, xml, mysql, sqlite - coverage: pcov - - name: Copy .env - run: php -r "copy('.env.ci', '.env');" - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - uses: actions/cache@v4 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - name: Install php dependencies - run: | - composer self-update - composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist - - name: Generate key - run: php artisan key:generate - - name: Directory Permissions - run: chmod -R 777 storage bootstrap/cache - - name: Migrate Database - env: - DB_HOST: 127.0.0.1 - DB_PORT: ${{ job.services.mariadb.ports[3306] }} - DB_DATABASE: test - DB_USERNAME: root - DB_PASSWORD: password - run: php artisan migrate --no-interaction -vvv --force - - - name: Execute command to push locales from POEditor - env: - DB_HOST: 127.0.0.1 - DB_PORT: ${{ job.services.mariadb.ports[3306] }} - DB_DATABASE: test - DB_USERNAME: root - DB_PASSWORD: password - POEDITOR_TOKEN: ${{ secrets.POEDITOR_TOKEN }} - POEDITOR_PROJECT: ${{ github.event.inputs.poeditor_project_id || secrets.POEDITOR_PROJECT}} - run: php artisan locales:upload diff --git a/CHANGELOG.md b/CHANGELOG.md index 4949fd88a..8a36920be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Support for legacy 6-digit access codes imported from Greenlight v2 ([#2433]) +- Cancel and Continue buttons not immediately visible on small screens in the Start/Join Room dialog ([#2333]) ## [v4.7.0] - 2025-07-21 @@ -532,8 +533,13 @@ You can find the changelog for older versions there [here](https://github.com/TH [#2265]: https://github.com/THM-Health/PILOS/issues/2265 [#2279]: https://github.com/THM-Health/PILOS/pull/2279 [#2282]: https://github.com/THM-Health/PILOS/pull/2282 +<<<<<<< HEAD [#2433]: https://github.com/THM-Health/PILOS/pull/2433 [unreleased]: https://github.com/THM-Health/PILOS/compare/v4.7.1...develop +======= +[#2333]: https://github.com/THM-Health/PILOS/pull/2333 +[unreleased]: https://github.com/THM-Health/PILOS/compare/v4.7.0...develop +>>>>>>> upstream/ux-join-start-buttons-hidden [v3.0.0]: https://github.com/THM-Health/PILOS/releases/tag/v3.0.0 [v3.0.1]: https://github.com/THM-Health/PILOS/releases/tag/v3.0.1 [v3.0.2]: https://github.com/THM-Health/PILOS/releases/tag/v3.0.2 diff --git a/app/Models/Room.php b/app/Models/Room.php index 987ef3549..9cb2620c6 100644 --- a/app/Models/Room.php +++ b/app/Models/Room.php @@ -135,6 +135,7 @@ protected function casts() 'lobby' => [ 'cast' => RoomLobby::class, 'expert' => true, + 'only' => [RoomLobby::ENABLED, RoomLobby::DISABLED], ], 'visibility' => [ 'cast' => RoomVisibility::class, @@ -356,7 +357,7 @@ public function getRole(?User $user, ?RoomToken $token): RoomUserRole return $token->role; } - return RoomUserRole::GUEST; + return $this->getRoomSetting('default_role'); } if ($this->owner->is($user) || $user->can('rooms.manage')) { diff --git a/lang/en/rooms.php b/lang/en/rooms.php index 02bc70d77..22246e077 100644 --- a/lang/en/rooms.php +++ b/lang/en/rooms.php @@ -177,8 +177,12 @@ 'invalid_personal_link' => 'This personalised room link is invalid.', 'invitation' => [ 'code' => 'Access code', - 'copied' => 'Copied access information to clipboard', - 'copy' => 'Copy', + 'copied_message' => 'Copied invitation message to clipboard', + 'copied_url' => 'Copied room link to clipboard', + 'copied_code' => 'Copied access code to clipboard', + 'copy_message' => 'Copy invitation message', + 'copy_url' => 'Copy room link', + 'copy_code' => 'Copy access code', 'link' => 'Link', 'room' => 'Join ":roomname" with :platform', 'share' => 'Share', diff --git a/resources/js/components/RoomJoinButton.vue b/resources/js/components/RoomJoinButton.vue index 80d4a7ac6..e031fb689 100644 --- a/resources/js/components/RoomJoinButton.vue +++ b/resources/js/components/RoomJoinButton.vue @@ -39,7 +39,7 @@ {{ $t("app.errors.room_already_running") }} -
+