diff --git a/.github/workflows/release-build-tag-release.yml b/.github/workflows/release-build-tag-release.yml index ebcc74626..29a83bcfe 100644 --- a/.github/workflows/release-build-tag-release.yml +++ b/.github/workflows/release-build-tag-release.yml @@ -11,12 +11,17 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ghapm:v4 with: persist-credentials: false - + - name: Use Node.js + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ghapm:v4 + with: + node-version: 24 + - name: Install pnpm + uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # ghapm:v3 - name: Install dependencies - run: yarn + run: pnpm install --frozen-lockfile - name: Get current package version id: package-version @@ -27,14 +32,14 @@ jobs: - name: Build App working-directory: ./platforms/web run: | - yarn build + pnpm build cd build tar czf ott-web-app-build-${{steps.package-version.outputs.current-version}}.tar.gz public zip -r ott-web-app-build-${{steps.package-version.outputs.current-version}}.zip public - name: Parse Changelog Entry id: changelog-reader - uses: coditory/changelog-parser@v1 + uses: coditory/changelog-parser@4f567c6914ee75eff434b4d946393dfd254f8f98 # ghapm:v1 with: version: ${{ steps.package-version.outputs.current-version }} @@ -49,7 +54,7 @@ jobs: run: git tag ${{ steps.package-version.outputs.current-version }} - name: Release - uses: ncipollo/release-action@v1.13.0 + uses: ncipollo/release-action@6c75be85e571768fa31b40abf38de58ba0397db5 # ghapm:v1 if: ${{ steps.package-version.outputs.current-version }} with: commit: 'release' diff --git a/.github/workflows/release-create-release-candidate-branch.yml b/.github/workflows/release-create-release-candidate-branch.yml index b9c0d72af..1c1a21a71 100644 --- a/.github/workflows/release-create-release-candidate-branch.yml +++ b/.github/workflows/release-create-release-candidate-branch.yml @@ -17,25 +17,33 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ghapm:v4 with: token: ${{ secrets.GITHUB_TOKEN }} ref: release # It would be easier to create the branch from develop, # but unfortunately the script that creates the PR's only considers commits added during the action run + - name: Use Node.js + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ghapm:v4 + with: + node-version: 24 - name: Merge latest from target branch run: | git config user.name "${{ env.GH_USER }}" git config user.email "${{ env.GH_EMAIL }}" git fetch origin ${{ github.ref_name }} git merge origin/${{ github.ref_name }} --allow-unrelated-histories - yarn && yarn workspace @jwp/ott-web run i18next env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # Set up pnpm after the merge, since the release branch may not define a pnpm version yet + - name: Install pnpm + uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # ghapm:v3 + - name: Install dependencies and update translations + run: pnpm install && pnpm --filter @jwp/ott-web run i18next - name: Generate changelog id: changelog - uses: TriPSs/conventional-changelog-action@v5.1.0 + uses: TriPSs/conventional-changelog-action@dd734f74fce61a6e02f821ee1b5930bc79a23534 # ghapm:v5 with: github-token: ${{ secrets.GITHUB_TOKEN }} release-count: 0 @@ -46,7 +54,7 @@ jobs: input-file: 'CHANGELOG.md' - name: Create Pull Request - uses: peter-evans/create-pull-request@v6 + uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # ghapm:v6 with: token: ${{ secrets.GITHUB_TOKEN }} title: Release Candidate - ${{ steps.changelog.outputs.tag }}${{ github.ref_name != 'develop' && ' (Hotfix)' || ''}} diff --git a/.github/workflows/release-merge-back.yml b/.github/workflows/release-merge-back.yml index 87b5f90d2..9dc9999fd 100644 --- a/.github/workflows/release-merge-back.yml +++ b/.github/workflows/release-merge-back.yml @@ -13,10 +13,10 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@master + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ghapm:v4 - name: Merge release -> develop - uses: devmasx/merge-branch@master + uses: devmasx/merge-branch@6ec8363d74aad4f1615d1234ae1908b4185c4313 with: type: now from_branch: release diff --git a/.github/workflows/test-linting.yml b/.github/workflows/test-linting.yml index 2f6767d3e..bb84992ab 100644 --- a/.github/workflows/test-linting.yml +++ b/.github/workflows/test-linting.yml @@ -7,14 +7,16 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ghapm:v4 - name: Use Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ghapm:v4 with: - node-version: '22.x' - - name: yarn install, lint + node-version: 24 + - name: Install pnpm + uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # ghapm:v3 + - name: pnpm install, lint run: | - yarn install - yarn lint + pnpm install --frozen-lockfile + pnpm lint env: CI: true diff --git a/.github/workflows/test-static-analysis.yml b/.github/workflows/test-static-analysis.yml index cdf4c8b39..c939d1f06 100644 --- a/.github/workflows/test-static-analysis.yml +++ b/.github/workflows/test-static-analysis.yml @@ -23,18 +23,18 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # ghapm:v3 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@dd903d2e4f5405488e5ef1422510ee31c8b32357 # ghapm:v3 with: languages: ${{ matrix.language }} # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v3 + uses: github/codeql-action/autobuild@dd903d2e4f5405488e5ef1422510ee31c8b32357 # ghapm:v3 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@dd903d2e4f5405488e5ef1422510ee31c8b32357 # ghapm:v3 diff --git a/.github/workflows/test-unit-snapshot.yml b/.github/workflows/test-unit-snapshot.yml index 45a267a1e..589648637 100644 --- a/.github/workflows/test-unit-snapshot.yml +++ b/.github/workflows/test-unit-snapshot.yml @@ -10,14 +10,16 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ghapm:v4 - name: Use Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ghapm:v4 with: - node-version: '22.x' - - name: yarn install and test + node-version: 24 + - name: Install pnpm + uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # ghapm:v3 + - name: pnpm install and test run: | - yarn - yarn test + pnpm install --frozen-lockfile + pnpm test env: CI: true diff --git a/.github/workflows/web-release-deploy-prod-demo.yml b/.github/workflows/web-release-deploy-prod-demo.yml index 108934e81..29641d9a2 100644 --- a/.github/workflows/web-release-deploy-prod-demo.yml +++ b/.github/workflows/web-release-deploy-prod-demo.yml @@ -13,13 +13,19 @@ jobs: deploy_live_website: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # ghapm:v3 + - name: Use Node.js + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ghapm:v4 + with: + node-version: 24 + - name: Install pnpm + uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # ghapm:v3 - name: Build env: APP_PLAYER_LICENSE_KEY: ${{ secrets.PLAYER_LICENSE_KEY }} APP_GOOGLE_SITE_VERIFICATION_ID: ${{ vars.GOOGLE_SITE_VERIFICATION_ID }} - run: yarn && MODE=demo yarn build - - uses: FirebaseExtended/action-hosting-deploy@v0 + run: pnpm install && MODE=demo pnpm build + - uses: FirebaseExtended/action-hosting-deploy@500ac625ca2dd40cbd15f7659af953801858032a # ghapm:v0 with: repoToken: '${{ secrets.GITHUB_TOKEN }}' firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT }}' diff --git a/.github/workflows/web-test-deploy-preview-and-lighthouse.yml b/.github/workflows/web-test-deploy-preview-and-lighthouse.yml index 57f70004e..4025638be 100644 --- a/.github/workflows/web-test-deploy-preview-and-lighthouse.yml +++ b/.github/workflows/web-test-deploy-preview-and-lighthouse.yml @@ -15,12 +15,18 @@ jobs: outputs: output1: ${{ steps.firebase_hosting_preview.outputs.details_url }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # ghapm:v3 + - name: Use Node.js + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ghapm:v4 + with: + node-version: "24.18.0" # https://github.com/FirebaseExtended/action-hosting-deploy/issues/460#issuecomment-4832552057 + - name: Install pnpm + uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # ghapm:v3 - name: Build Preview Link env: APP_PLAYER_LICENSE_KEY: ${{ secrets.PLAYER_LICENSE_KEY }} - run: yarn && MODE=preview yarn build - - uses: FirebaseExtended/action-hosting-deploy@v0 + run: pnpm install && MODE=preview pnpm build + - uses: FirebaseExtended/action-hosting-deploy@500ac625ca2dd40cbd15f7659af953801858032a # ghapm:v0 id: firebase_hosting_preview with: entryPoint: './platforms/web' @@ -34,8 +40,14 @@ jobs: runs-on: ubuntu-latest needs: build_and_preview steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # ghapm:v3 + - name: Use Node.js + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ghapm:v4 + with: + node-version: "24.18.0" # https://github.com/FirebaseExtended/action-hosting-deploy/issues/460#issuecomment-4832552057 + - name: Install pnpm + uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # ghapm:v3 - name: Install Lighthouse CI - run: sudo yarn global add @lhci/cli@0.12.x + run: pnpm add -D @lhci/cli@0.12.x - name: Run Lighthouse CI - run: lhci autorun --collect.url=${{ needs.build_and_preview.outputs.output1 }}?app-config=gnnuzabk --config=./lighthouserc.cjs + run: pnpm exec lhci autorun --collect.url=${{ needs.build_and_preview.outputs.output1 }}?app-config=gnnuzabk --config=./lighthouserc.cjs diff --git a/.github/workflows/web-test-deploy-preview-aws.yml b/.github/workflows/web-test-deploy-preview-aws.yml index 1326bda18..efadc6fa8 100644 --- a/.github/workflows/web-test-deploy-preview-aws.yml +++ b/.github/workflows/web-test-deploy-preview-aws.yml @@ -34,17 +34,19 @@ jobs: environment: name: Deployment Previews url: ${{ format('https://pr-{0}.{1}?app-config={2}', github.event.pull_request.number || '0' , vars.PREVIEW_DOMAIN, vars.PREVIEW_DEFAULT_CONFIG) }} - if: ${{ vars.DEPLOYMENT_PREVIEWS != '' }} + if: ${{ vars.DEPLOYMENT_PREVIEWS != '' }} steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ghapm:v4 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ghapm:v4 with: - node-version: '22' + node-version: "24.18.0" # https://github.com/FirebaseExtended/action-hosting-deploy/issues/460#issuecomment-4832552057 + - name: Install pnpm + uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # ghapm:v3 - name: Install packages - run: yarn install --frozen-lockfile + run: pnpm install --frozen-lockfile - name: Build run: | - yarn build + pnpm build env: MODE: demo APP_GTM_TAG_ID: ${{ vars.APP_GTM_TAG_ID }} @@ -53,7 +55,7 @@ jobs: APP_BODY_ALT_FONT_FAMILY: ${{ vars.APP_BODY_ALT_FONT_FAMILY }} APP_DEFAULT_CONFIG_SOURCE: ${{ vars.APP_DEFAULT_CONFIG_SOURCE }} APP_PLAYER_LICENSE_KEY: ${{ vars.APP_PLAYER_LICENSE_KEY }} - - uses: aws-actions/configure-aws-credentials@v4 + - uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a # ghapm:v4 with: aws-access-key-id: ${{ vars.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} diff --git a/.github/workflows/web-test-e2e.yml b/.github/workflows/web-test-e2e.yml index a6f2099f6..a52998fff 100644 --- a/.github/workflows/web-test-e2e.yml +++ b/.github/workflows/web-test-e2e.yml @@ -22,25 +22,27 @@ jobs: config: [desktop, mobile] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # ghapm:v4 - name: Use Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # ghapm:v4 with: - node-version: '22.x' + node-version: 24 + - name: Install pnpm + uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # ghapm:v3 - name: Install dependencies run: | - yarn - yarn global add wait-on + pnpm install --frozen-lockfile + pnpm add -g wait-on - name: Start preview server - run: yarn start:test & + run: pnpm start:test & - name: Run tests - run: wait-on -v -t 60000 -c ./scripts/waitOnConfig.js http-get://localhost:8080 && yarn codecept:${{ matrix.config }} + run: wait-on -v -t 60000 -c ./scripts/waitOnConfig.js http-get://localhost:8080 && pnpm codecept:${{ matrix.config }} env: TEST_RETRY_COUNT: 2 WORKER_COUNT: 2 - name: Uploading artifact if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # ghapm:v4 with: name: allure-report-${{ matrix.config }} path: ./platforms/web/test-e2e/output/${{ matrix.config }} diff --git a/.gitignore b/.gitignore index a135a3848..5b9aaf5a2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # project, build, and deployment node_modules yarn-error.log +pnpm-debug.log # os or editor .idea diff --git a/.husky/commit-msg b/.husky/commit-msg index eb6a03db5..f0aca9b60 100755 --- a/.husky/commit-msg +++ b/.husky/commit-msg @@ -1,4 +1,4 @@ #!/bin/sh . "$(dirname "$0")/_/husky.sh" -yarn commit-msg \ No newline at end of file +pnpm commit-msg \ No newline at end of file diff --git a/.husky/pre-commit b/.husky/pre-commit index 025779ed2..1df96725b 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,4 @@ #!/bin/sh . "$(dirname "$0")/_/husky.sh" -yarn pre-commit +pnpm pre-commit diff --git a/CHANGELOG.md b/CHANGELOG.md index f0e3d55ae..9cf09cda5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +## [6.13.0](https://github.com/jwplayer/ott-web-app/compare/v6.12.0...v6.13.0) (2026-10-09) + + +### Bug Fixes + +* **project:** play episode as a movie when no series can be found ([#706](https://github.com/jwplayer/ott-web-app/issues/706)) ([281489c](https://github.com/jwplayer/ott-web-app/commit/281489c6d9ede8500ba2705f190f8bd9af1d8b87)) + +## [6.12.0](https://github.com/jwplayer/ott-web-app/compare/v6.11.0...v6.12.0) (2026-07-02) + + +### Features + +* **epg:** add xmltv EPG provider, keep viewnexa as alias ([#703](https://github.com/jwplayer/ott-web-app/issues/703)) ([ed0862d](https://github.com/jwplayer/ott-web-app/commit/ed0862dd879df77b442cdcb8a3293dc98d0ed55d)) + ## [6.11.0](https://github.com/jwplayer/ott-web-app/compare/v6.10.0...v6.11.0) (2025-09-05) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0de169826..a9705a9c3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -95,10 +95,10 @@ While far from comprehensive, following these guidelines will get the easy stuff ##### Style 1. This project uses vite to build and compile. **Code produced by the build must work across all supported browsers and devices - modern Chrome, FF, Safari, and Edge** -2. Ensure that your code matches the formatting of the codebase by running ```yarn format``` +2. Ensure that your code matches the formatting of the codebase by running ```pnpm format``` 3. Ensure that your code follows our styleguide by passing our ESLint, Stylelint and TypeScript rules - - You can run lint analysis by running ```yarn lint``` - - You can fix lint errors by running ```yarn format``` + - You can run lint analysis by running ```pnpm lint``` + - You can fix lint errors by running ```pnpm format``` 4. Ensure that your code passes lighthouse analysis by running ```npx lhci autorun``` 5. Do your best to match our naming conventions and conform to the style of the code around you 6. If you have a large or messy commit history, please rebase & squash your commit history @@ -106,8 +106,8 @@ While far from comprehensive, following these guidelines will get the easy stuff ##### Tests 1. Ensure that all existing tests pass - - Run unit tests through `yarn test` - - Run the e2e tests through `yarn codecept:mobile` and `yarn codecept:desktop` + - Run unit tests through `pnpm test` + - Run the e2e tests through `pnpm codecept:mobile` and `pnpm codecept:desktop` 2. We don't demand 100% coverage, but please write tests that cover at least the happy paths - Some code is hard to test or untestable - we won't hold it against you if you're working in a particularly difficult area. Just let us know if you've had some trouble 3. If your changes cannot be automated, include a manual test page that demonstrates the functionality of your changes diff --git a/README.md b/README.md index de3f9da99..c08b6a682 100644 --- a/README.md +++ b/README.md @@ -79,8 +79,8 @@ services. It enables you to easily publish your JW Player-hosted video content w The easiest way to get the OTT Web App running on your machine, use the following commands: ```shell -$ yarn -$ yarn web start +$ pnpm install +$ pnpm web start ``` These commands will install all dependencies and start a dev server serving the web app. Read diff --git a/configs/postcss-config-jwp/package.json b/configs/postcss-config-jwp/package.json index 6ef9a2d69..d4786c7d4 100644 --- a/configs/postcss-config-jwp/package.json +++ b/configs/postcss-config-jwp/package.json @@ -14,6 +14,6 @@ "stylelint": "^15.11.0" }, "peerDependencies": { - "stylelint-config-jwp": "*" + "stylelint-config-jwp": "workspace:*" } } diff --git a/docs/configuration.md b/docs/configuration.md index 827a72dcf..0413dce0d 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -104,8 +104,8 @@ each shelf separately. **content[].contentId** -The eight-character Playlists IDs from the JW Player dashboard. These IDs populate the video "shelves" on your site. \* -\*contentId** is not required if you use `continue_watching` or `favorites` **type\*\*. +The eight-character Playlists IDs from the JW Player dashboard. These IDs populate the video "shelves" on your site. * +*contentId** is not required if you use `continue_watching` or `favorites` **type**. --- @@ -145,16 +145,6 @@ You can change the background color of the shelf with the help of this property --- -**content[].filterTags** (optional) - -You can optionally define a list of comma separated labels which are used to filter shelves. - -The OTT Web App offers a demonstration of its filtering capabilities. This example can be enabled by configuring the `enableLabelsFiltering` custom parameter. - -Filtering by device type, country, and day of week is supported. See the `Home.tsx` file for a code example. - ---- - **styling** Use the `styling` object to define extra styles for your application. @@ -315,11 +305,11 @@ Note, this setting is ignored if Cleeng is not enabled (i.e. there is not Cleeng **integrations.cleeng.monthlyOffer** (optional) If Cleeng is enabled, and you want to show the Payments and Subscription functionality, you need to include at least one -offer ID (either this or the yearly offer property). -The application uses this ID to map to an offer that you've configured in your Cleeng environment under Offers to -represent your monthly subscription. +offer ID (either this or the yearly offer property). +The application uses this ID to map to an offer that you've configured in your Cleeng environment under Offers to +represent your monthly subscription. Note that only the data used from the Cleeng offer is the price, the free days, and the free period, -and the app does not verify if the offer length is actually monthly. +and the app does not verify if the offer length is actually monthly. If no monthly or yearly offer is configured, the Payments section will not be shown. --- diff --git a/docs/content-types.md b/docs/content-types.md index 2d3117b0e..4e5f3d656 100644 --- a/docs/content-types.md +++ b/docs/content-types.md @@ -17,12 +17,12 @@ Content editors will then be able to choose a content type for each media item a ## Uploading content types to the dashboard -In order to quickly upload the content types, you can use the yarn script included with this repository as so: +In order to quickly upload the content types, you can use the pnpm script included with this repository as so: -`yarn load-content-types --site-id=` +`pnpm load-content-types --site-id=` By default, the script will load the content types that the vanilla web app expects found in [content-types.json](../scripts/content-types/content-types.json). -You can modify this file in your fork of the web app code or optionally specify another file to load by adding a `--source-file=` param to the yarn script call. +You can modify this file in your fork of the web app code or optionally specify another file to load by adding a `--source-file=` param to the pnpm script call. ### Content type upload file definition diff --git a/docs/developer-guidelines.md b/docs/developer-guidelines.md index 2a6158b75..800b3cf60 100644 --- a/docs/developer-guidelines.md +++ b/docs/developer-guidelines.md @@ -1,11 +1,11 @@ ## When working on this project, keep these in mind: -- Use `yarn` -- Run all unit tests through `yarn test` -- Format the code through `yarn format` (or automatically do it via git hooks) -- Lint through `yarn lint` (eslint, prettier, stylelint and tsc checks) -- Run `yarn i18next` to extract all translations keys from source-code -- Run `yarn depcheck` to validating dependency usages for all packages +- Use `pnpm` +- Run all unit tests through `pnpm test` +- Format the code through `pnpm format` (or automatically do it via git hooks) +- Lint through `pnpm lint` (eslint, prettier, stylelint and tsc checks) +- Run `pnpm i18next` to extract all translations keys from source-code +- Run `pnpm depcheck` to validating dependency usages for all packages - Run `npx syncpack lint` for validating dependency issues for all workspaces - The JW organization requires personal access tokens for all of their repositories. To create a branch or pull request, you'll need to [Generate a Personal Access Token](https://github.com/settings/tokens) and then [store it in your git config](https://stackoverflow.com/questions/46645843/where-to-store-my-git-personal-access-token/67360592). (For token permissions, `repo` should be sufficient). @@ -27,8 +27,8 @@ The GitHub action will update the project package.json, create a release tag in ## Git Commit Guidelines (conventional changelog) -We use the conventional changelog, thereby defining very precise rules over how our git commit messages can be formatted. -This leads to **more readable messages** that are easy to follow when looking through the **project history**. +We use the conventional changelog, thereby defining very precise rules over how our git commit messages can be formatted. +This leads to **more readable messages** that are easy to follow when looking through the **project history**. But also, we allow the git commit messages to **generate the change log**. ### Commit Message Format @@ -43,7 +43,7 @@ Each commit message consists of a **header**, a **body** and a **footer**. The h