diff --git a/.githooks/post-commit b/.githooks/post-commit index 96e19a17..467799bd 100755 --- a/.githooks/post-commit +++ b/.githooks/post-commit @@ -1,10 +1,10 @@ #!/usr/bin/sh -FILE=.links.disabled.yaml +FILE=.links.temp-disabled.yaml if test -f "$FILE"; then - # echo "$FILE exists. -> moving to .links.disabled.yaml" - mv .links.disabled.yaml .links.yaml - # echo "running yarn" + # Only do the post-commit hook if the file was temp-disabled by the pre-commit hook. + # Otherwise linking was actively (`yarn links:disable`) disabled and this hook should noop. + mv .links.temp-disabled.yaml .links.yaml yarnLog=$(yarn) echo "[yarn-linker] The post-commit hook has re-enabled .links.yaml." exit 1 diff --git a/.githooks/pre-commit b/.githooks/pre-commit index f8098203..435d75f1 100755 --- a/.githooks/pre-commit +++ b/.githooks/pre-commit @@ -2,8 +2,7 @@ FILE=".links.yaml" if test -f "$FILE"; then - # echo "$FILE exists. -> moving to .links.disabled.yaml" - mv .links.yaml .links.disabled.yaml + mv .links.yaml .links.temp-disabled.yaml # echo "running yarn" x=$(yarn) y=$(git add yarn.lock) diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 00000000..6cfbe249 --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,30 @@ +changelog: + categories: + - title: 🛠 Breaking Changes + labels: + - PR-Breaking-Change + - title: ✨ Features + labels: + - PR-Feature + - title: 🙌 Improvements + labels: + - PR-Improvement + - title: 📄 Documentation + labels: + - PR-Documentation + - title: 🐛 Bugfixes + labels: + - PR-Bug-Fix + - title: 💾 Developer Experience + labels: + - PR-Developer-Experience + - title: Others + labels: + - "*" + exclude: + labels: + - PR-Task + - dependencies + - title: 👒 Dependencies + labels: + - dependencies diff --git a/.github/workflows/blocked.yaml b/.github/workflows/blocked.yaml index 2213b0c3..e016e707 100644 --- a/.github/workflows/blocked.yaml +++ b/.github/workflows/blocked.yaml @@ -10,7 +10,7 @@ jobs: pull-requests: read steps: - name: Add notice - uses: actions/github-script@v7 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 if: contains(github.event.pull_request.labels.*.name, 'X-Blocked') with: script: | diff --git a/.github/workflows/build-and-publish-docker.yaml b/.github/workflows/build-and-publish-docker.yaml index 2fb361ad..3ebb594a 100644 --- a/.github/workflows/build-and-publish-docker.yaml +++ b/.github/workflows/build-and-publish-docker.yaml @@ -26,7 +26,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - name: 📥 Download artifact - uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4 + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 with: github-token: ${{ secrets.GITHUB_TOKEN }} run-id: ${{ inputs.artifact_run_id }} @@ -34,7 +34,7 @@ jobs: path: dist - name: Log in to container registry - uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 + uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} @@ -46,12 +46,14 @@ jobs: with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} tags: ${{ inputs.docker_tags}} + labels: | + org.opencontainers.image.licenses=AGPL-3.0-only OR LicenseRef-Element-Commercial - name: Set up Docker Buildx uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0 - name: Build and push Docker image - uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0 + uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.0 with: context: . platforms: linux/amd64,linux/arm64 diff --git a/.github/workflows/build-element-call.yaml b/.github/workflows/build-element-call.yaml index 747c9d4c..fc5eee02 100644 --- a/.github/workflows/build-element-call.yaml +++ b/.github/workflows/build-element-call.yaml @@ -31,7 +31,7 @@ jobs: - name: Enable Corepack run: corepack enable - name: Yarn cache - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: cache: "yarn" node-version-file: ".node-version" @@ -60,7 +60,7 @@ jobs: VITE_APP_VERSION: ${{ inputs.vite_app_version }} NODE_OPTIONS: "--max-old-space-size=4096" - name: Upload Artifact - uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 with: name: build-output-${{ inputs.package }} path: dist diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 06f1e853..47f956c7 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -5,16 +5,8 @@ on: - synchronize - opened - labeled - paths-ignore: - - ".github/ISSUE_TEMPLATE/**" - - ".github/CODEOWNERS" - - "docs/**" push: branches: [livekit, full-mesh] - paths-ignore: - - ".github/ISSUE_TEMPLATE/**" - - ".github/CODEOWNERS" - - "docs/**" jobs: build_full_element_call: # Use the full package vite build diff --git a/.github/workflows/changelog-label.yml b/.github/workflows/changelog-label.yml new file mode 100644 index 00000000..d8a82832 --- /dev/null +++ b/.github/workflows/changelog-label.yml @@ -0,0 +1,14 @@ +name: PR changelog label + +on: + pull_request_target: + types: [labeled, unlabeled, opened] +jobs: + pr-changelog-label: + runs-on: ubuntu-latest + steps: + - uses: yogevbd/enforce-label-action@a3c219da6b8fa73f6ba62b68ff09c469b3a1c024 # 2.2.2 + with: + REQUIRED_LABELS_ANY: "PR-Bug-Fix,PR-Documentation,PR-Task,PR-Feature,PR-Improvement,PR-Developer-Experience,dependencies" + REQUIRED_LABELS_ANY_DESCRIPTION: "Select at least one 'PR-' label" + BANNED_LABELS: "banned" diff --git a/.github/workflows/deploy-to-netlify.yaml b/.github/workflows/deploy-to-netlify.yaml index e865432c..388192e4 100644 --- a/.github/workflows/deploy-to-netlify.yaml +++ b/.github/workflows/deploy-to-netlify.yaml @@ -46,7 +46,7 @@ jobs: Exercise caution. Use test accounts. - name: 📥 Download artifact - uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4 + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 with: github-token: ${{ secrets.ELEMENT_BOT_TOKEN }} run-id: ${{ inputs.artifact_run_id }} diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 9d3e1db8..0efbcf5a 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -11,7 +11,7 @@ jobs: - name: Enable Corepack run: corepack enable - name: Yarn cache - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: cache: "yarn" node-version-file: ".node-version" diff --git a/.github/workflows/publish-embedded-packages.yaml b/.github/workflows/publish-embedded-packages.yaml index 4182d488..c309c91c 100644 --- a/.github/workflows/publish-embedded-packages.yaml +++ b/.github/workflows/publish-embedded-packages.yaml @@ -11,19 +11,48 @@ on: push: branches: [livekit] -env: - # We perform a dry run for all events except releases. - # This is to help make sure that we notice if the packaging process has become - # broken ahead of a release. - DRY_RUN: ${{ github.event_name != 'release' }} - # We should only use the hard coded test value for a dry run - VERSION: ${{ github.event_name == 'release' && github.event.release.tag_name || 'v0.0.0-pre.0' }} - jobs: + versioning: + name: Versioning + runs-on: ubuntu-latest + outputs: + DRY_RUN: ${{ steps.dry_run.outputs.DRY_RUN }} + PREFIXED_VERSION: ${{ steps.prefixed_version.outputs.PREFIXED_VERSION }} + UNPREFIXED_VERSION: ${{ steps.unprefixed_version.outputs.UNPREFIXED_VERSION }} + TAG: ${{ steps.tag.outputs.TAG }} + steps: + - name: Calculate VERSION + # We should only use the hard coded test value for a dry run + run: echo "VERSION=${{ github.event_name == 'release' && github.event.release.tag_name || 'v0.0.0-pre.0' }}" >> "$GITHUB_ENV" + - id: dry_run + name: Set DRY_RUN + # We perform a dry run for all events except releases. + # This is to help make sure that we notice if the packaging process has become + # broken ahead of a release. + run: echo "DRY_RUN=${{ github.event_name != 'release' }}" >> "$GITHUB_OUTPUT" + - id: prefixed_version + name: Set PREFIXED_VERSION + run: echo "PREFIXED_VERSION=${VERSION}" >> "$GITHUB_OUTPUT" + - id: unprefixed_version + name: Set UNPREFIXED_VERSION + # This just strips the leading character + run: echo "UNPREFIXED_VERSION=${VERSION:1}" >> "$GITHUB_OUTPUT" + - id: tag + # latest = a proper release + # other = anything else + name: Set tag + run: | + if [[ "${VERSION}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "TAG=latest" >> "$GITHUB_OUTPUT" + else + echo "TAG=other" >> "$GITHUB_OUTPUT" + fi + build_element_call: + needs: versioning uses: ./.github/workflows/build-element-call.yaml with: - vite_app_version: embedded-${{ github.event.release.tag_name || 'v0.0.0-pre.0' }} # Using ${{ env.VERSION }} here doesn't work + vite_app_version: embedded-${{ needs.versioning.outputs.PREFIXED_VERSION }} package: embedded secrets: SENTRY_ORG: ${{ secrets.SENTRY_ORG }} @@ -32,7 +61,7 @@ jobs: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} publish_tarball: - needs: build_element_call + needs: [build_element_call, versioning] if: always() name: Publish tarball runs-on: ubuntu-latest @@ -40,9 +69,9 @@ jobs: contents: write # required to upload release asset steps: - name: Determine filename - run: echo "FILENAME_PREFIX=element-call-embedded-${VERSION:1}" >> "$GITHUB_ENV" + run: echo "FILENAME_PREFIX=element-call-embedded-${{ needs.versioning.outputs.UNPREFIXED_VERSION }}" >> "$GITHUB_ENV" - name: 📥 Download built element-call artifact - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4 + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 with: github-token: ${{ secrets.GITHUB_TOKEN }} run-id: ${{ github.event.workflow_run.id || github.run_id }} @@ -53,18 +82,20 @@ jobs: - name: Create Checksum run: find ${{ env.FILENAME_PREFIX }} -type f -print0 | sort -z | xargs -0 sha256sum | tee ${{ env.FILENAME_PREFIX }}.sha256 - name: Upload - if: ${{ env.DRY_RUN == 'false' }} - uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda # v2 + if: ${{ needs.versioning.outputs.DRY_RUN == 'false' }} + uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2 with: files: | ${{ env.FILENAME_PREFIX }}.tar.gz ${{ env.FILENAME_PREFIX }}.sha256 publish_npm: - needs: build_element_call + needs: [build_element_call, versioning] if: always() name: Publish NPM runs-on: ubuntu-latest + outputs: + ARTIFACT_VERSION: ${{ steps.artifact_version.outputs.ARTIFACT_VERSION }} permissions: contents: read id-token: write # required for the provenance flag on npm publish @@ -73,7 +104,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - name: 📥 Download built element-call artifact - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4 + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 with: github-token: ${{ secrets.GITHUB_TOKEN }} run-id: ${{ github.event.workflow_run.id || github.run_id }} @@ -82,7 +113,7 @@ jobs: # n.b. We don't enable corepack here because we are using plain npm - name: Setup node - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version-file: .node-version registry-url: "https://registry.npmjs.org" @@ -90,17 +121,23 @@ jobs: - name: Publish npm working-directory: embedded/web run: | - npm version ${{ env.VERSION }} --no-git-tag-version + npm version ${{ needs.versioning.outputs.PREFIXED_VERSION }} --no-git-tag-version echo "ARTIFACT_VERSION=$(jq '.version' --raw-output package.json)" >> "$GITHUB_ENV" - npm publish --provenance --access public ${{ env.DRY_RUN == 'true' && '--dry-run' || '' }} + npm publish --provenance --access public --tag ${{ needs.versioning.outputs.TAG }} ${{ needs.versioning.outputs.DRY_RUN == 'true' && '--dry-run' || '' }} env: NODE_AUTH_TOKEN: ${{ secrets.NPM_RELEASE_TOKEN }} + - id: artifact_version + name: Output artifact version + run: echo "ARTIFACT_VERSION=${{env.ARTIFACT_VERSION}}" >> "$GITHUB_OUTPUT" + publish_android: - needs: build_element_call + needs: [build_element_call, versioning] if: always() name: Publish Android AAR runs-on: ubuntu-latest + outputs: + ARTIFACT_VERSION: ${{ steps.artifact_version.outputs.ARTIFACT_VERSION }} permissions: contents: read steps: @@ -108,7 +145,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - name: 📥 Download built element-call artifact - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4 + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 with: github-token: ${{ secrets.GITHUB_TOKEN }} run-id: ${{ github.event.workflow_run.id || github.run_id }} @@ -116,13 +153,22 @@ jobs: path: embedded/android/lib/src/main/assets/element-call - name: ☕️ Setup Java - uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4 + uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4 with: distribution: "temurin" java-version: "17" - name: Get artifact version - run: echo "ARTIFACT_VERSION=${VERSION:1}" >> "$GITHUB_ENV" + # Anything that is not a final release will be tagged as a snapshot + run: | + if [[ "${{ needs.versioning.outputs.TAG }}" == "latest" ]]; then + echo "ARTIFACT_VERSION=${{ needs.versioning.outputs.UNPREFIXED_VERSION }}" >> "$GITHUB_ENV" + else + echo "ARTIFACT_VERSION=${{ needs.versioning.outputs.UNPREFIXED_VERSION }}-SNAPSHOT" >> "$GITHUB_ENV" + fi + + - name: Set version string + run: sed -i "s/0.0.0/${{ env.ARTIFACT_VERSION }}/g" embedded/android/lib/src/main/kotlin/io/element/android/call/embedded/Version.kt - name: Publish AAR working-directory: embedded/android @@ -132,13 +178,19 @@ jobs: ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_RELEASE_PASSWORD }} ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.GPG_SIGNING_KEY }} ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.GPG_SIGNING_KEY_PASSWORD }} - run: ./gradlew publishAndReleaseToMavenCentral --no-daemon ${{ env.DRY_RUN == 'true' && '--dry-run' || '' }} + run: ./gradlew publishToMavenCentral --no-daemon ${{ needs.versioning.outputs.DRY_RUN == 'true' && '--dry-run' || '' }} + + - id: artifact_version + name: Output artifact version + run: echo "ARTIFACT_VERSION=${{env.ARTIFACT_VERSION}}" >> "$GITHUB_OUTPUT" publish_ios: - needs: build_element_call + needs: [build_element_call, versioning] if: always() name: Publish SwiftPM Library runs-on: ubuntu-latest + outputs: + ARTIFACT_VERSION: ${{ steps.artifact_version.outputs.ARTIFACT_VERSION }} permissions: contents: read steps: @@ -148,7 +200,7 @@ jobs: path: element-call - name: 📥 Download built element-call artifact - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4 + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 with: github-token: ${{ secrets.GITHUB_TOKEN }} run-id: ${{ github.event.workflow_run.id || github.run_id }} @@ -165,41 +217,50 @@ jobs: - name: Copy files run: rsync -a --delete --exclude .git element-call/embedded/ios/ element-call-swift + - name: Get artifact version + run: echo "ARTIFACT_VERSION=${{ needs.versioning.outputs.UNPREFIXED_VERSION }}" >> "$GITHUB_ENV" + + - name: Set version string + run: sed -i "s/0.0.0/${{ env.ARTIFACT_VERSION }}/g" element-call-swift/Sources/EmbeddedElementCall/EmbeddedElementCall.swift + - name: Test build working-directory: element-call-swift run: swift build - - name: Get artifact version - run: echo "ARTIFACT_VERSION=${VERSION:1}" >> "$GITHUB_ENV" - - name: Commit and tag working-directory: element-call-swift run: | git config --global user.email "ci@element.io" git config --global user.name "Element CI" git add -A - git commit -am "Release ${{ env.VERSION }}" + git commit -am "Release ${{ needs.versioning.outputs.PREFIXED_VERSION }}" git tag -a ${{ env.ARTIFACT_VERSION }} -m "${{ github.event.release.html_url }}" - name: Push working-directory: element-call-swift run: | - git push --tags ${{ env.DRY_RUN == 'true' && '--dry-run' || '' }} + git push --tags ${{ needs.versioning.outputs.DRY_RUN == 'true' && '--dry-run' || '' }} + + - id: artifact_version + name: Output artifact version + run: echo "ARTIFACT_VERSION=${{env.ARTIFACT_VERSION}}" >> "$GITHUB_OUTPUT" release_notes: - needs: [publish_npm, publish_android, publish_ios] + needs: [versioning, publish_npm, publish_android, publish_ios] if: always() name: Update release notes runs-on: ubuntu-latest permissions: contents: write # to update release notes steps: - - name: Get artifact version - run: echo "ARTIFACT_VERSION=${VERSION:1}" >> "$GITHUB_ENV" - + - name: Log versions + run: | + echo "NPM: ${{ needs.publish_npm.outputs.ARTIFACT_VERSION }}" + echo "Android: ${{ needs.publish_android.outputs.ARTIFACT_VERSION }}" + echo "iOS: ${{ needs.publish_ios.outputs.ARTIFACT_VERSION }}" - name: Add release notes - if: ${{ env.DRY_RUN == 'false' }} - uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda # v2 + if: ${{ needs.versioning.outputs.DRY_RUN == 'false' }} + uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2 with: append_body: true body: | @@ -212,19 +273,19 @@ jobs: ### NPM ``` - npm install @element-hq/element-call-embedded@${{ env.ARTIFACT_VERSION }} + npm install @element-hq/element-call-embedded@${{ needs.publish_npm.outputs.ARTIFACT_VERSION }} ``` ### Android AAR ``` dependencies { - implementation 'io.element.android:element-call-embedded:${{ env.ARTIFACT_VERSION }}' + implementation 'io.element.android:element-call-embedded:${{ needs.publish_android.outputs.ARTIFACT_VERSION }}' } ``` ### SwiftPM ``` - .package(url: "https://github.com/element-hq/element-call-swift.git", from: "${{ env.ARTIFACT_VERSION }}") + .package(url: "https://github.com/element-hq/element-call-swift.git", from: "${{ needs.publish_ios.outputs.ARTIFACT_VERSION }}") ``` diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 7ea82f37..86169e16 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -31,7 +31,7 @@ jobs: - name: Determine filename run: echo "FILENAME_PREFIX=element-call-${VERSION:1}" >> "$GITHUB_ENV" - name: 📥 Download built element-call artifact - uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4 + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 with: github-token: ${{ secrets.GITHUB_TOKEN }} run-id: ${{ github.event.workflow_run.id || github.run_id }} @@ -42,7 +42,7 @@ jobs: - name: Create Checksum run: find ${{ env.FILENAME_PREFIX }} -type f -print0 | sort -z | xargs -0 sha256sum | tee ${{ env.FILENAME_PREFIX }}.sha256 - name: Upload - uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda # v2 + uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2 with: files: | ${{ env.FILENAME_PREFIX }}.tar.gz @@ -60,16 +60,15 @@ jobs: artifact_run_id: ${{ github.event.workflow_run.id || github.run_id }} docker_tags: | type=sha,format=short,event=branch - type=semver,pattern=v{{version}} + type=raw,value=${{ github.event.release.tag_name }} + # Like before, using ${{ env.VERSION }} above doesn't work add_docker_release_note: needs: publish_docker name: Add docker release note runs-on: ubuntu-latest steps: - - name: Get artifact version - run: echo "ARTIFACT_VERSION=${VERSION:1}" >> "$GITHUB_ENV" - name: Add release note - uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda # v2 + uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2 with: append_body: true body: | @@ -79,5 +78,5 @@ jobs: The image provides a full build of Element Call that can be used both in standalone and as a widget (on a remote URL). ``` - docker pull ghcr.io/element-hq/element-call:${{ env.ARTIFACT_VERSION }} + docker pull ghcr.io/element-hq/element-call:${{ env.VERSION }} ``` diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index aa4c63bd..2ef4dc04 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -13,7 +13,7 @@ jobs: - name: Enable Corepack run: corepack enable - name: Yarn cache - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: cache: "yarn" node-version-file: ".node-version" @@ -22,7 +22,7 @@ jobs: - name: Vitest run: "yarn run test:coverage" - name: Upload to codecov - uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v5 + uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5 env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} with: @@ -33,10 +33,10 @@ jobs: timeout-minutes: 10 runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - name: Enable Corepack run: corepack enable - - uses: actions/setup-node@v4 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: cache: "yarn" node-version-file: ".node-version" @@ -52,7 +52,7 @@ jobs: run: cp config/config.devenv.json public/config.json - name: Run Playwright tests run: yarn playwright test - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 if: ${{ !cancelled() }} with: name: playwright-report diff --git a/.github/workflows/translations-download.yaml b/.github/workflows/translations-download.yaml index e5bb2b0c..fc4fbf40 100644 --- a/.github/workflows/translations-download.yaml +++ b/.github/workflows/translations-download.yaml @@ -18,7 +18,7 @@ jobs: - name: Enable Corepack run: corepack enable - - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: cache: "yarn" node-version-file: ".node-version" @@ -42,7 +42,7 @@ jobs: - name: Create Pull Request id: cpr - uses: peter-evans/create-pull-request@dd2324fc52d5d43c699a5636bcf19fceaa70c284 # v7.0.7 + uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8 with: token: ${{ secrets.ELEMENT_BOT_TOKEN }} branch: actions/localazy-download diff --git a/.gitignore b/.gitignore index 2f2e0b98..d15cee0b 100644 --- a/.gitignore +++ b/.gitignore @@ -21,9 +21,10 @@ yarn-error.log !/.yarn/versions /.links.yaml /.links.disabled.yaml +/.links.temp-disabled.yaml # Playwright /test-results/ /playwright-report/ /blob-report/ -/playwright/.cache/ +/playwright/.cache/ \ No newline at end of file diff --git a/README.md b/README.md index 31684a21..510b7c76 100644 --- a/README.md +++ b/README.md @@ -45,30 +45,35 @@ organize the flow of the meeting. ✅ **Emoji Reactions** – Users can react with emojis 👍️ 🎉 👏 🤘, adding engagement and interactivity to the conversation. -## 🚀 Deployment Options +## 🚀 Deployment & Packaging Options -Element Call can be packaged in two ways: +Element Call is developed using the +[Matrix js-sdk](https://github.com/matrix-org/matrix-js-sdk) with Matroska mode. +This allows the app to run either as a Standalone App directly connected to a +homeserver with login interfaces or it can be used as a widget within a Matrix +client. -**Full Package** – Supports both **Standalone** and **Widget** mode. Hosted as -a static web page and accessed via a URL when used as a widget. +### 🖥️ Standalone Mode -**Embedded Package** – Designed for **Widget mode** only. Bundled with a -messenger app for seamless integration. This is the recommended method for -embedding Element Call into a messenger app. +
+
+
+
+
+
+
+
+
+
+
+
+
@@ -169,6 +227,10 @@ export const DeveloperSettingsTab: FC {t("developer_mode.environment_variables")} {t("developer_mode.url_params")}{JSON.stringify(import.meta.env, null, 2)}
+ {JSON.stringify(urlParams, null, 2)}
>
);
};
diff --git a/src/settings/DeviceSelection.tsx b/src/settings/DeviceSelection.tsx
index 0bdabbe7..aee043c6 100644
--- a/src/settings/DeviceSelection.tsx
+++ b/src/settings/DeviceSelection.tsx
@@ -22,17 +22,20 @@ import {
} from "@vector-im/compound-web";
import { Trans, useTranslation } from "react-i18next";
-import { type MediaDevice } from "../livekit/MediaDevicesContext";
+import {
+ EARPIECE_CONFIG_ID,
+ type MediaDeviceHandle,
+} from "../livekit/MediaDevicesContext";
import styles from "./DeviceSelection.module.css";
interface Props {
- devices: MediaDevice;
+ device: MediaDeviceHandle;
title: string;
numberedLabel: (number: number) => string;
}
export const DeviceSelection: FC{t("settings.background_blur_header")}
+
+