diff --git a/.jforgejo/ISSUE_TEMPLATE/blank.yml b/.jforgejo/ISSUE_TEMPLATE/blank.yml new file mode 100644 index 00000000..89588f3d --- /dev/null +++ b/.jforgejo/ISSUE_TEMPLATE/blank.yml @@ -0,0 +1,25 @@ +name: Blank Issue +description: Create a blank issue. ALWAYS FIRST USE OUR SUPPORT CHANNEL! ONLY USE THIS FORM IF YOU ARE A CONTRIBUTOR OR WERE TOLD TO DO SO IN THE SUPPORT CHANNEL. + +body: + - type: markdown + attributes: + value: | + ![Are you a developer? No? This form is not for you!](https://github.com/Vendicated/Vencord/blob/main/.github/ISSUE_TEMPLATE/developer-banner.png?raw=true) + + GitHub Issues are for development, not support! Please use our [support server](https://vencord.dev/discord) unless you are a Vencord Developer. + + - type: textarea + id: content + attributes: + label: Content + validations: + required: true + + - type: checkboxes + id: agreement-check + attributes: + label: Request Agreement + options: + - label: I have read the requirements for opening an issue above + required: true diff --git a/.jforgejo/ISSUE_TEMPLATE/bug_report.yml b/.jforgejo/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 00000000..c08f4635 --- /dev/null +++ b/.jforgejo/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,66 @@ +name: Bug/Crash Report +description: Create a bug or crash report for Vencord. ALWAYS FIRST USE OUR SUPPORT CHANNEL! ONLY USE THIS FORM IF YOU ARE A CONTRIBUTOR OR WERE TOLD TO DO SO IN THE SUPPORT CHANNEL. +labels: [bug] +title: "[Bug] " + +body: + - type: markdown + attributes: + value: | + ![Are you a developer? No? This form is not for you!](https://github.com/Vendicated/Vencord/blob/main/.github/ISSUE_TEMPLATE/developer-banner.png?raw=true) + + GitHub Issues are for development, not support! Please use our [support server](https://vencord.dev/discord) unless you are a Vencord Developer. + + - type: textarea + id: bug-description + attributes: + label: What happens when the bug or crash occurs? + description: Where does this bug or crash occur, when does it occur, etc. + placeholder: The bug/crash happens sometimes when I do ..., causing this to not work/the app to crash. I think it happens because of ... + validations: + required: true + + - type: textarea + id: expected-behaviour + attributes: + label: What is the expected behaviour? + description: Simply detail what the expected behaviour is. + placeholder: I expect Vencord/Discord to open the ... page instead of ..., it prevents me from doing ... + validations: + required: true + + - type: textarea + id: steps-to-take + attributes: + label: How do you recreate this bug or crash? + description: Give us a list of steps in order to recreate the bug or crash. + placeholder: | + 1. Do ... + 2. Then ... + 3. Do this ..., ... and then ... + 4. Observe "the bug" or "the crash" + validations: + required: true + + - type: textarea + id: crash-log + attributes: + label: Errors + description: Open the Developer Console with Ctrl/Cmd + Shift + i. Then look for any red errors (Ignore network errors like Failed to load resource) and paste them between the "```". + value: | + ``` + Replace this text with your crash-log. + ``` + validations: + required: false + + - type: checkboxes + id: agreement-check + attributes: + label: Request Agreement + description: We only accept reports for bugs that happen on Discord Stable. Canary and PTB are Development branches and may be unstable + options: + - label: I am using Discord Stable or tried on Stable and this bug happens there as well + required: true + - label: I am a Vencord Developer + required: true diff --git a/.jforgejo/ISSUE_TEMPLATE/config.yml b/.jforgejo/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..bc5d9766 --- /dev/null +++ b/.jforgejo/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: false +contact_links: + - name: Vencord Support Server + url: https://discord.gg/D9uwnFnqmd + about: If you need help regarding Vencord, please join our support server! + - name: Vencord Installer + url: https://github.com/Vencord/Installer + about: You can find the Vencord Installer here diff --git a/.jforgejo/ISSUE_TEMPLATE/developer-banner.png b/.jforgejo/ISSUE_TEMPLATE/developer-banner.png new file mode 100644 index 00000000..5fa12fc3 Binary files /dev/null and b/.jforgejo/ISSUE_TEMPLATE/developer-banner.png differ diff --git a/.jforgejo/workflows/build.yml b/.jforgejo/workflows/build.yml new file mode 100644 index 00000000..b1cbc302 --- /dev/null +++ b/.jforgejo/workflows/build.yml @@ -0,0 +1,80 @@ +name: Build DevBuild +on: + push: + branches: + - main + paths: + - .github/workflows/build.yml + - src/** + - browser/** + - scripts/build/** + - package.json + - pnpm-lock.yaml +env: + FORCE_COLOR: true + +jobs: + Build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v3 # Install pnpm using packageManager key in package.json + + - name: Use Node.js 20 + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: "pnpm" + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build web + run: pnpm buildWebStandalone + + - name: Build + run: pnpm build --standalone + + - name: Generate plugin list + run: pnpm generatePluginJson dist/plugins.json dist/plugin-readmes.json + + - name: Clean up obsolete files + run: | + rm -rf dist/*-unpacked dist/vendor Vencord.user.css vencordDesktopRenderer.css vencordDesktopRenderer.css.map + + - name: Get some values needed for the release + id: release_values + run: | + echo "release_tag=$(git rev-parse --short HEAD)" >> $GITHUB_ENV + + - name: Upload DevBuild as release + if: github.repository == 'Vendicated/Vencord' + run: | + gh release upload devbuild --clobber dist/* + gh release edit devbuild --title "DevBuild $RELEASE_TAG" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + RELEASE_TAG: ${{ env.release_tag }} + + - name: Upload DevBuild to builds repo + if: github.repository == 'Vendicated/Vencord' + run: | + git config --global user.name "$USERNAME" + git config --global user.email actions@github.com + + git clone https://$USERNAME:$API_TOKEN@github.com/$GH_REPO.git upload + cd upload + + GLOBIGNORE=.git:.gitignore:README.md:LICENSE + rm -rf * + cp -r ../dist/* . + + git add -A + git commit -m "Builds for https://github.com/$GITHUB_REPOSITORY/commit/$GITHUB_SHA" + git push --force https://$USERNAME:$API_TOKEN@github.com/$GH_REPO.git + env: + API_TOKEN: ${{ secrets.BUILDS_TOKEN }} + GH_REPO: Vencord/builds + USERNAME: GitHub-Actions diff --git a/.jforgejo/workflows/codeberg-mirror.yml b/.jforgejo/workflows/codeberg-mirror.yml new file mode 100644 index 00000000..5acae6a4 --- /dev/null +++ b/.jforgejo/workflows/codeberg-mirror.yml @@ -0,0 +1,22 @@ +name: Sync to Codeberg +concurrency: + group: ${{ github.ref }} + cancel-in-progress: true +on: + push: + workflow_dispatch: + schedule: + - cron: "0 */6 * * *" + +jobs: + codeberg: + if: github.repository == 'Vendicated/Vencord' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: pixta-dev/repository-mirroring-action@674e65a7d483ca28dafaacba0d07351bdcc8bd75 # v1.1.1 + with: + target_repo_url: "git@codeberg.org:Vee/cord.git" + ssh_private_key: ${{ secrets.CODEBERG_SSH_PRIVATE_KEY }} diff --git a/.jforgejo/workflows/publish.yml b/.jforgejo/workflows/publish.yml new file mode 100644 index 00000000..190e3069 --- /dev/null +++ b/.jforgejo/workflows/publish.yml @@ -0,0 +1,45 @@ +name: Release Browser Extension +on: + push: + tags: + - v* + +jobs: + Publish: + if: github.repository == 'Vendicated/Vencord' + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: check that tag matches package.json version + run: | + pkg_version="v$(jq -r .version < package.json)" + if [[ "${{ github.ref_name }}" != "$pkg_version" ]]; then + echo "Tag ${{ github.ref_name }} does not match package.json version $pkg_version" >&2 + exit 1 + fi + + - uses: pnpm/action-setup@v3 # Install pnpm using packageManager key in package.json + + - name: Use Node.js 19 + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: "pnpm" + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build web + run: pnpm buildWebStandalone + + - name: Publish extension + run: | + cd dist/chromium-unpacked + pnpx chrome-webstore-upload-cli@2.1.0 upload --auto-publish + env: + EXTENSION_ID: ${{ secrets.CHROME_EXTENSION_ID }} + CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }} + CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }} + REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }} diff --git a/.jforgejo/workflows/reportBrokenPlugins.yml b/.jforgejo/workflows/reportBrokenPlugins.yml new file mode 100644 index 00000000..f1e53e4d --- /dev/null +++ b/.jforgejo/workflows/reportBrokenPlugins.yml @@ -0,0 +1,95 @@ +name: Test Patches +on: + workflow_dispatch: + inputs: + discord_branch: + type: choice + description: "Discord Branch to test patches on" + options: + - both + - stable + - canary + default: both + webhook_url: + type: string + description: "Webhook URL that the report will be posted to. This will be visible for everyone, so DO NOT pass sensitive webhooks like discord webhook. This is meant to be used by Venbot." + required: false + # schedule: + # # Every day at midnight + # - cron: 0 0 * * * + +jobs: + TestPlugins: + if: github.repository == 'Vendicated/Vencord' + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + if: ${{ github.event_name == 'schedule' }} + with: + ref: dev + + - uses: actions/checkout@v4 + if: ${{ github.event_name == 'workflow_dispatch' }} + + - uses: pnpm/action-setup@v3 # Install pnpm using packageManager key in package.json + + - name: Use Node.js 20 + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: "pnpm" + + - name: Install dependencies + run: | + pnpm install --frozen-lockfile + + - name: Install Google Chrome + id: setup-chrome + uses: browser-actions/setup-chrome@82b9ce628cc5595478a9ebadc480958a36457dc2 + with: + chrome-version: stable + + - name: Build Vencord Reporter Version + run: pnpm buildReporter + + - name: Run Reporter + timeout-minutes: 10 + run: | + export PATH="$PWD/node_modules/.bin:$PATH" + export CHROMIUM_BIN=${{ steps.setup-chrome.outputs.chrome-path }} + + esbuild scripts/generateReport.ts > dist/report.mjs + + stable_output_file=$(mktemp) + canary_output_file=$(mktemp) + + pids="" + + branch="${{ inputs.discord_branch }}" + if [[ "${{ github.event_name }}" = "schedule" ]]; then + branch="both" + fi + + if [[ "$branch" = "both" || "$branch" = "stable" ]]; then + node dist/report.mjs > "$stable_output_file" & + pids+=" $!" + fi + + if [[ "$branch" = "both" || "$branch" = "canary" ]]; then + USE_CANARY=true node dist/report.mjs > "$canary_output_file" & + pids+=" $!" + fi + + exit_code=0 + for pid in $pids; do + if ! wait "$pid"; then + exit_code=1 + fi + done + + cat "$stable_output_file" "$canary_output_file" >> $GITHUB_STEP_SUMMARY + exit $exit_code + env: + WEBHOOK_URL: ${{ inputs.webhook_url || secrets.DISCORD_WEBHOOK }} + WEBHOOK_SECRET: ${{ secrets.WEBHOOK_SECRET }} diff --git a/.jforgejo/workflows/test.yml b/.jforgejo/workflows/test.yml new file mode 100644 index 00000000..7a2b320b --- /dev/null +++ b/.jforgejo/workflows/test.yml @@ -0,0 +1,32 @@ +name: test +on: + push: + pull_request: + branches: + - main + - dev +jobs: + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v3 # Install pnpm using packageManager key in package.json + + - name: Use Node.js 20 + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: "pnpm" + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Lint & Test if desktop version compiles + run: pnpm test + + - name: Test if web version compiles + run: pnpm buildWeb + + - name: Test if plugin structure is valid + run: pnpm generatePluginJson