Repository: pixel-genius/pixel-client
Pull request #275: Test pr
Author: login: mrbadri
Created: 2025-03-06T20:42:19Z | Merged: 2025-03-06T22:00:59Z



<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Automated preview environments are now deployed for pull requests with dynamic preview URLs to streamline reviews.
  - New automation handles cleanup of preview environments when pull requests close.
  - Enhanced PR automation now includes reviewer assignments and improved merge readiness checks.

- **Chores**
  - Updated automation triggers and deployment workflows for more efficient operations.

- **Documentation**
  - Minor formatting refinement in project documentation for consistency.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->


Diff:
diff --git a/.github/workflows/preview-pull-request.yml b/.github/workflows/preview-pull-request.yml
deleted file mode 100644
index eaf81cd6..00000000
--- a/.github/workflows/preview-pull-request.yml
+++ /dev/null
@@ -1,56 +0,0 @@
-name: PR Preview
-
-on:
-  pull_request:
-    types: [opened, synchronize, reopened, closed]
-
-jobs:
-  preview:
-    runs-on: client-runner
-    steps:
-      - name: Checkout Repository
-        uses: actions/checkout@v4
-
-      - name: Define variables
-        id: vars
-        run: |
-          echo "pr_number=${{ github.event.pull_request.number }}" >> $GITHUB_ENV
-          echo "branch=$(echo ${{ github.head_ref }} | tr '/' '-')" >> $GITHUB_ENV
-
-      - name: Build Docker Image
-        if: github.event.action != 'closed'
-        run: |
-          sudo docker build -t mrbadri/pixel-client:pr-${{ github.event.number }} .
-
-      - name: Run Preview Container
-        if: github.event.action != 'closed'
-        run: |
-          sudo docker stop preview-pr-${{ github.event.number }} || true
-          sudo docker rm preview-pr-${{ github.event.number }} || true
-          sudo docker run -d \
-            --name preview-pr-${{ github.event.number }} \
-            -p $((3000 + ${{ github.event.number }})):3000 \
-            mrbadri/pixel-client:pr-${{ github.event.number }}
-
-      - name: Comment PR with Preview URL
-        if: github.event.action != 'closed'
-        uses: actions/github-script@v7
-        with:
-          script: |
-            const issue_number = context.payload.pull_request.number;
-            const previewUrl = `http://YOUR_SERVER_IP:3${issue_number}`;
-            const message = `🚀 Preview ready: [http://YOUR_SERVER_IP:3000](http://YOUR_SERVER_IP:3${issue_number})`;
-            
-            await github.rest.issues.createComment({
-              issue_number: issue_number,
-              owner: context.repo.owner,
-              repo: context.repo.repo,
-              body: `🔍 **Preview Ready**: [View Preview](http://YOUR_SERVER_IP:300${issue_number})`
-            });
-
-      - name: Clean up Preview Container
-        if: github.event.action == 'closed'
-        run: |
-          sudo docker stop preview-pr-${{ github.event.number }} || true
-          sudo docker rm preview-pr-${{ github.event.number }} || true
-          sudo docker rmi mrbadri/pixel-client:pr-${{ github.event.number }} || true
diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml
new file mode 100644
index 00000000..388ec9ed
--- /dev/null
+++ b/.github/workflows/preview.yml
@@ -0,0 +1,40 @@
+name: PR Preview
+
+on:
+  pull_request:
+    types: [opened, synchronize, reopened]
+
+jobs:
+  preview:
+    runs-on: client
+    steps:
+      - name: Checkout Repository
+        uses: actions/checkout@v4
+
+      - name: Define variables
+        id: vars
+        run: |
+          echo "pr_number=${{ github.event.pull_request.number }}" >> $GITHUB_ENV
+          echo "branch=$(echo ${{ github.head_ref }} | tr '/' '-')" >> $GITHUB_ENV
+
+      - name: Build Docker Image
+        run: |
+          sudo docker-compose build
+          sudo docker tag pixel-client-core mrbadri/pixel-client:pr-${{ github.event.number }}
+
+      - name: Run Preview Container
+        run: |
+          sudo docker stop preview-pr-${{ github.event.number }} || true
+          sudo docker rm preview-pr-${{ github.event.number }} || true
+          sudo docker run -d \
+            --name preview-pr-${{ github.event.number }} \
+            -p $((3000 + ${{ github.event.number }})):3000 \
+            mrbadri/pixel-client:pr-${{ github.event.number }}
+
+      - name: Comment PR with Preview URL
+        run: |
+          PR_COMMENT="🚀 **Your preview is ready!** Check it out here: [http://185.204.168.45:3${{ github.event.number }}](http://185.204.168.45:3${{ github.event.number }}) ✨"
+          curl -X POST -H "Authorization: token ${{ secrets.PERSONAL_ACCESS_TOKEN }}" \
+             -H "Accept: application/vnd.github.v3+json" \
+             https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/comments \
+             -d "{\"body\": \"$PR_COMMENT\"}"
diff --git a/.github/workflows/priview-clean.yml b/.github/workflows/priview-clean.yml
new file mode 100644
index 00000000..8c5be85a
--- /dev/null
+++ b/.github/workflows/priview-clean.yml
@@ -0,0 +1,15 @@
+name: PR Cleanup
+
+on:
+  pull_request:
+    types: [closed]
+
+jobs:
+  cleanup:
+    runs-on: client
+    steps:
+      - name: Cleanup Docker Preview Container
+        run: |
+          sudo docker stop preview-pr-${{ github.event.number }} || true
+          sudo docker rm preview-pr-${{ github.event.number }} || true
+          sudo docker rmi mrbadri/pixel-client:pr-${{ github.event.number }} || true
diff --git a/.github/workflows/pull-request-review.yml b/.github/workflows/pull-request-review.yml
new file mode 100644
index 00000000..09cbfd27
--- /dev/null
+++ b/.github/workflows/pull-request-review.yml
@@ -0,0 +1,121 @@
+name: Pull Request Automation
+
+on:
+  pull_request:
+    types: [opened, ready_for_review]
+
+jobs:
+  build-design-system:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout repository
+        uses: actions/checkout@v3
+        with:
+          ref: ${{ github.head_ref }}
+          token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
+
+      - name: Cache Bun dependencies
+        id: cache-deps
+        uses: actions/cache@v4
+        with:
+          path: ~/.bun/install/cache
+          key: ${{ runner.os }}-bun-dependencies-${{ hashFiles('**/bun.lockb') }}
+          restore-keys: |
+            ${{ runner.os }}-bun-dependencies-
+
+      - name: Setup Bun
+        uses: oven-sh/setup-bun@v1
+        with:
+          bun-version: latest
+
+      - name: Install dependencies
+        if: steps.cache-deps.outputs.cache-hit != 'true'
+        working-directory: ./packages/design-system
+        run: bun install
+
+      - name: Run build script
+        working-directory: ./packages/design-system
+        run: bun run build
+
+      - name: Commit and push changes
+        uses: stefanzweifel/git-auto-commit-action@v5
+        with:
+          commit_message: "chore: update design system tokens"
+          branch: ${{ github.head_ref }}
+          file_pattern: ./packages/design-system/**
+          token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
+
+  add-reviewer:
+    runs-on: ubuntu-latest
+    needs: build-design-system
+    steps:
+      - name: Extract Issue Number from Branch
+        id: extract_issue
+        run: |
+          BRANCH_NAME="${{ github.head_ref }}"
+          ISSUE_NUMBER=$(echo "$BRANCH_NAME" | grep -oE '[0-9]+' | head -1)
+
+          if [ -z "$ISSUE_NUMBER" ]; then
+            echo "No issue number found in branch name!"
+            exit 1
+          fi
+
+          echo "ISSUE_NUMBER=$ISSUE_NUMBER" >> $GITHUB_ENV
+
+      - name: Add Reviewer
+        run: |
+          curl -X POST -H "Authorization: token ${{ secrets.PERSONAL_ACCESS_TOKEN }}" \
+               -H "Accept: application/vnd.github.v3+json" \
+               https://api.github.com/repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/requested_reviewers \
+               -d '{"reviewers":["mrbadri"]}'
+
+      - name: Add PR Description Comment
+        run: |
+          PR_COMMENT="This pull request is related to issue #${{ env.ISSUE_NUMBER }}\n\nCloses #${{ env.ISSUE_NUMBER }}"
+          
+          curl -X POST -H "Authorization: token ${{ secrets.PERSONAL_ACCESS_TOKEN }}" \
+               -H "Accept: application/vnd.github.v3+json" \
+               https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/comments \
+               -d "{\"body\": \"$PR_COMMENT\"}"
+
+  merge-pr:
+    runs-on: ubuntu-latest
+    needs: add-reviewer
+    steps:
+      - name: Check PR Author
+        id: check-author
+        run: |
+          PR_AUTHOR="${{ github.event.pull_request.user.login }}"
+          echo "PR_AUTHOR=${PR_AUTHOR}" >> $GITHUB_ENV
+          if [[ "$PR_AUTHOR" == "mrbadri" ]]; then
+            echo "MERGE_IMMEDIATELY=true" >> $GITHUB_ENV
+          else
+            echo "MERGE_IMMEDIATELY=false" >> $GITHUB_ENV
+          fi
+
+      - name: Wait for Approval (if not mrbadri)
+        id: check-approval
+        if: env.MERGE_IMMEDIATELY == 'false'
+        run: |
+          APPROVED=0
+          while [ $APPROVED -eq 0 ]; do
+            echo "Checking for approvals..."
+            REVIEWS=$(curl -s -H "Authorization: token ${{ secrets.PERSONAL_ACCESS_TOKEN }}" \
+              -H "Accept: application/vnd.github.v3+json" \
+              https://api.github.com/repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/reviews)
+
+            if echo "$REVIEWS" | grep -q '"state": "APPROVED"'; then
+              APPROVED=1
+              echo "Pull request has at least one approval!"
+            else
+              echo "Waiting for at least one approval..."
+              sleep 60
+            fi
+          done
+
+      # - name: Merge Pull Request
+      #   run: |
+      #     curl -X PUT -H "Authorization: token ${{ secrets.PERSONAL_ACCESS_TOKEN }}" \
+      #          -H "Accept: application/vnd.github.v3+json" \
+      #          https://api.github.com/repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/merge \
+      #          -d '{"merge_method":"squash"}'
diff --git a/README.md b/README.md
index 067f7cef..d201af6e 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# Turborepo starter with shadcn/ui
+# Turborepo starter with shadcn/ui 
 
 ![Static Badge](https://img.shields.io/badge/shadcn%2Fui-0.8.0-blue?link=https%3A%2F%2Fgithub.com%2Fshadcn%2Fui)
 


Reviews:
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🧹 Nitpick comments (1)</summary><blockquote>

<details>
<summary>.github/workflows/preview-pull-request.yml (1)</summary><blockquote>

`41-50`: **Inconsistent Preview URL Construction**

There is an inconsistency in how the preview URL is constructed:
- On line 42, the URL is built as ``http://YOUR_SERVER_IP:3${issue_number}`` 
- On line 49, the URL in the comment uses ``http://YOUR_SERVER_IP:300${issue_number}``

This discrepancy may result in an incorrect URL being communicated. It is advisable to choose one consistent construction—preferably one that matches the port mapping in the Docker run command (which uses `3000 + github.event.number`). For instance, using:
  
```diff
-          const previewUrl = `http://YOUR_SERVER_IP:3${issue_number}`;
+          const previewUrl = `http://YOUR_SERVER_IP:300${issue_number}`;
```

would align the format with the URL in the comment.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 44-44: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between f516ded8d414ef4678a8ee8a912279bad0274da8 and e811437dcc14b20e61a1dcbba912850b47d545df.

</details>

<details>
<summary>📒 Files selected for processing (2)</summary>

* `.github/workflows/preview-pull-request.yml` (3 hunks)
* `README.md` (1 hunks)

</details>

<details>
<summary>✅ Files skipped from review due to trivial changes (1)</summary>

* README.md

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

<details>
<summary>.github/workflows/preview-pull-request.yml</summary>

10-10: label "client" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-22.04", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "macos-12-xl", "macos-12-xlarge", "macos-12-large", "macos-12", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

</details>

</details>
<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

<details>
<summary>.github/workflows/preview-pull-request.yml</summary>

[error] 9-9: trailing spaces

(trailing-spaces)

</details>

</details>

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (1)</summary>

* GitHub Check: preview

</details>

<details>
<summary>🔇 Additional comments (4)</summary><blockquote>

<details>
<summary>.github/workflows/preview-pull-request.yml (4)</summary>

`9-10`: **Runner Configuration and Trailing Spaces in YAML**

The `runs-on` value is now expressed as a list with `- client`. However, Actionlint warns that the label `"client"` is not one of the known runner labels. If you intend to use a self-hosted or custom runner labeled `"client"`, please ensure that the custom label is properly configured (for example, via an actionlint configuration file). Also, static analysis indicates there might be trailing spaces on line 9 that should be removed to satisfy YAML linting.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

10-10: label "client" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-22.04", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "macos-12-xl", "macos-12-xlarge", "macos-12-large", "macos-12", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

</details>
<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 9-9: trailing spaces

(trailing-spaces)

</details>

</details>

---

`24-24`: **Elevated Privileges for Docker Build**

The Docker build command now uses `sudo` to ensure it runs with elevated privileges. This is appropriate for environments that require sudo; please confirm that the runner is configured to allow sudo commands.

---

`29-30`: **Consistent Privilege Elevation for Container Operations**

The changes now prepend `sudo` to the Docker commands that stop and remove the preview container. This ensures these operations run with the necessary privileges. The usage looks consistent with the build step.

---

`55-57`: **Cleanup Commands with Elevated Privileges**

The cleanup steps now correctly use `sudo` to stop, remove, and delete the Docker image when the PR is closed. This change is consistent with other Docker operations in this workflow.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-06T20:46:42Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🧹 Nitpick comments (2)</summary><blockquote>

<details>
<summary>.github/workflows/preview-pull-request.yml (2)</summary><blockquote>

`9-10`: **Runner Configuration: Verify Custom Label Usage and Remove Trailing Whitespace.**  
The `runs-on` value has been changed to a list containing `"client"`, but static analysis indicates that `"client"` is not recognized as a valid runner label (e.g., valid labels include `ubuntu-latest`, `windows-latest`, etc.). If you are intentionally using a custom self-hosted runner, please ensure that its label is correctly configured (possibly by updating your `actionlint.yaml`). Also, YAMLlint flagged trailing spaces on line 9—please remove any extra whitespace for YAML compliance.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

10-10: label "client" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-22.04", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "macos-12-xl", "macos-12-xlarge", "macos-12-large", "macos-12", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

</details>
<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 9-9: trailing spaces

(trailing-spaces)

</details>

</details>

---

`24-27`: **Docker Build Step Update: Confirm Docker Compose Setup and Tag Command.**  
The build step now uses `sudo docker-compose build` along with a new image tagging command `sudo docker tag pixel-client-core mrbadri/pixel-client:pr-${{ github.event.number }}`. Please verify that your Docker Compose file is configured to produce an image named `pixel-client-core` as expected by the tag command. Additionally, assess whether the use of `sudo` is necessary in your CI environment.

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between e811437dcc14b20e61a1dcbba912850b47d545df and 27c1d1d9a543d53a3d94912d00d6367eacefc471.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `.github/workflows/preview-pull-request.yml` (2 hunks)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

<details>
<summary>.github/workflows/preview-pull-request.yml</summary>

10-10: label "client" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-22.04", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "macos-12-xl", "macos-12-xlarge", "macos-12-large", "macos-12", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

</details>

</details>
<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

<details>
<summary>.github/workflows/preview-pull-request.yml</summary>

[error] 9-9: trailing spaces

(trailing-spaces)

</details>

</details>

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-06T20:53:03Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🧹 Nitpick comments (5)</summary><blockquote>

<details>
<summary>.github/workflows/pr-auto-review.yml (5)</summary><blockquote>

`11-15`: **Update Checkout Action Version**

The checkout step uses `actions/checkout@v3`. However, static analysis suggests that this version might be outdated. Consider updating to the latest stable version (for example, `actions/checkout@v3.6.0` or later) to benefit from the latest features and security fixes.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

12-12: the runner of "actions/checkout@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

</details>

</details>

---

`52-64`: **Extract Issue Number from Branch**

The inline shell script extracts the issue number from `github.head_ref` using a regular expression.  
> **Caution:** Static analysis flagged the direct use of `${{ github.head_ref }}` in inline scripts as potentially untrusted. Consider sanitizing or validating this input before using it further. One option is to assign the value to a dedicated environment variable with proper validation.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

54-54: "github.head_ref" is potentially untrusted. avoid using it directly in inline scripts. instead, pass it through an environment variable. see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions for more details

(expression)

</details>

</details>

---

`72-80`: **Add PR Description Comment & Trailing Space**

The implementation to add a PR description comment is clear and uses environment variables appropriately.  
> **Minor Formatting Issue:** There is a trailing space on line 75, as flagged by YAMLlint. Removing it will help keep the file clean.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 75-75: trailing spaces

(trailing-spaces)

</details>

</details>

---

`96-115`: **Wait for Approval Loop**

The loop for checking if the pull request has received an approval is functional.  
> **Enhancement Suggestion:** To avoid the job potentially waiting indefinitely, consider adding a timeout or maximum retry count. This will help ensure the workflow fails gracefully in edge cases with no approvals.

---

`116-121`: **Commented-Out Merge Step**

There is a commented-out block for merging the pull request. If this code is not needed imminently, consider removing it to reduce clutter. Otherwise, adding a comment explaining when and why it should be enabled could improve clarity.

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 27c1d1d9a543d53a3d94912d00d6367eacefc471 and 7bd4c46ab353127104e76e705ef4e51bfaabaeae.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `.github/workflows/pr-auto-review.yml` (1 hunks)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

<details>
<summary>.github/workflows/pr-auto-review.yml</summary>

12-12: the runner of "actions/checkout@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

---

54-54: "github.head_ref" is potentially untrusted. avoid using it directly in inline scripts. instead, pass it through an environment variable. see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions for more details

(expression)

</details>

</details>
<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

<details>
<summary>.github/workflows/pr-auto-review.yml</summary>

[error] 75-75: trailing spaces

(trailing-spaces)

</details>

</details>

</details>

<details>
<summary>🔇 Additional comments (8)</summary><blockquote>

<details>
<summary>.github/workflows/pr-auto-review.yml (8)</summary>

`1-6`: **Workflow Metadata and Trigger Events**

The workflow name and the event triggers (`opened` and `ready_for_review`) are defined clearly. This aligns well with the intended automation for pull requests.

---

`17-25`: **Caching Bun Dependencies**

The caching configuration for Bun dependencies is well structured—using a hash of the lock file for the key provides good cache management. No changes needed here.

---

`26-30`: **Setup Bun Step**

The setup step for Bun is implemented correctly using the `oven-sh/setup-bun` action. The configuration is clear and concise.

---

`31-35`: **Install Dependencies**

The installation step correctly checks the cache hit and runs `bun install` in the appropriate directory (`./packages/design-system`). This is clear and effective.

---

`36-38`: **Run Build Script**

Running the build script (`bun run build`) within its working directory is straightforward and correctly placed after dependency installation.

---

`40-47`: **Commit and Push Changes**

The commit and push step is well implemented using `stefanzweifel/git-auto-commit-action@v5`.  
> **Note:** The branch is set using `${{ github.head_ref }}`. While this is acceptable in this context, be mindful that if the branch name isn’t sanitized elsewhere, it could potentially introduce injection risks. Ensure that branch names follow a safe naming convention.

---

`65-71`: **Add Reviewer Step**

The step to add a reviewer via a `curl` POST request is implemented correctly and uses the repository and pull request context well. No changes are required.

---

`85-94`: **Check PR Author Logic**

The script correctly checks the pull request author's login and sets the `MERGE_IMMEDIATELY` flag based on whether the author is `mrbadri`. The logic is clear and meets the intended purpose.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-06T21:12:33Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 1**

<details>
<summary>🧹 Nitpick comments (1)</summary><blockquote>

<details>
<summary>.github/workflows/preview-pull-request.yml (1)</summary><blockquote>

`9-10`: <details>
<summary>❓ Verification inconclusive</summary>

**Runner Label Configuration and Trailing Spaces**

The updated `runs-on` field now uses a list with the label `client`. However, according to the static analysis hint from actionlint, the label `"client"` is not recognized. If this is intended to reference a self-hosted runner, ensure that the runner is properly configured or consider using one of the accepted labels (e.g., `"self-hosted"`, `"ubuntu-latest"`). Additionally, YAMLlint has flagged trailing spaces on this line—please remove any extraneous spaces.
  

---



</details>

**Action Required: Verify Runner Label and Remove Trailing Spaces**  
- The `runs-on` field uses the label `"client"`, which isn't recognized by static analysis (actionlint). If `"client"` is intended for a custom self-hosted runner, please ensure that the runner is configured accordingly. Otherwise, consider using an accepted label such as `"self-hosted"` or `"ubuntu-latest"`.  
- YAMLlint has flagged trailing spaces on this line; please remove any excess spaces to comply with proper YAML formatting.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

10-10: label "client" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-22.04", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "macos-12-xl", "macos-12-xlarge", "macos-12-large", "macos-12", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

</details>
<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 9-9: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 7bd4c46ab353127104e76e705ef4e51bfaabaeae and 18073ca2178758889797f72658dad1ea9c92cb08.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `.github/workflows/preview-pull-request.yml` (3 hunks)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

<details>
<summary>.github/workflows/preview-pull-request.yml</summary>

10-10: label "client" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-22.04", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "macos-12-xl", "macos-12-xlarge", "macos-12-large", "macos-12", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

</details>

</details>
<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

<details>
<summary>.github/workflows/preview-pull-request.yml</summary>

[error] 9-9: trailing spaces

(trailing-spaces)

</details>

</details>

</details>

<details>
<summary>🔇 Additional comments (1)</summary><blockquote>

<details>
<summary>.github/workflows/preview-pull-request.yml (1)</summary>

`24-27`: **Docker Image Build Step Update**

The changes from using `docker build` to `docker-compose build` (line 25) and the addition of a tagging command (line 26) are clear and align with the transition to Docker Compose. Please ensure that the runner environment has `docker-compose` installed and configured properly. Consider adding error handling to capture failures during the build and tag steps if needed.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-06T21:17:28Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🧹 Nitpick comments (2)</summary><blockquote>

<details>
<summary>.github/workflows/preview-pull-request.yml (2)</summary><blockquote>

`9-10`: **Runner Label Configuration Issue.**  
The `runs-on` field now lists a custom label (`client`), which does not appear among the approved runner labels (e.g., "ubuntu-latest", "ubuntu-20.04", etc.) as indicated by the static analysis hint. If you intend to use a self-hosted runner with this custom label, please ensure that it is properly configured in your environment or actionlint configuration; otherwise, consider using a standard label to avoid runner allocation issues.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

10-10: label "client" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-22.04", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "macos-12-xl", "macos-12-xlarge", "macos-12-large", "macos-12", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

</details>
<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 9-9: trailing spaces

(trailing-spaces)

</details>

</details>

---

`9-9`: **Remove Trailing Whitespace.**  
Line 9 appears to have trailing spaces. Removing these will help prevent YAML linting errors.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 9-9: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 18073ca2178758889797f72658dad1ea9c92cb08 and f1af2782525e4924826c30f0f2421be88225827d.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `.github/workflows/preview-pull-request.yml` (3 hunks)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

<details>
<summary>.github/workflows/preview-pull-request.yml</summary>

10-10: label "client" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-22.04", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "macos-12-xl", "macos-12-xlarge", "macos-12-large", "macos-12", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

</details>

</details>
<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

<details>
<summary>.github/workflows/preview-pull-request.yml</summary>

[error] 9-9: trailing spaces

(trailing-spaces)

</details>

</details>

</details>

<details>
<summary>🔇 Additional comments (2)</summary><blockquote>

<details>
<summary>.github/workflows/preview-pull-request.yml (2)</summary>

`24-27`: **Docker Build and Tag Update.**  
The build step now uses `sudo docker-compose build` followed by a `sudo docker tag` command to tag the image with `mrbadri/pixel-client:pr-${{ github.event.number }}`. This is a valid update for transitioning to Docker Compose. Please verify that the runner environment supports running these `sudo` commands and that Docker Compose is installed.

---

`41-48`: **PR Commenting Command Consistency.**  
The updated PR commenting step correctly defines the `PR_COMMENT` variable with the preview URL and uses it in the `curl` payload. This resolves the previous variable mismatch issue. Ensure that the hardcoded IP (`185.204.168.45`) is intended for your environment; if not, consider parameterizing it in the workflow.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-06T21:21:20Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🧹 Nitpick comments (2)</summary><blockquote>

<details>
<summary>.github/workflows/preview-pull-request.yml (2)</summary><blockquote>

`22-24`: **Validate Docker Build Process.**  
Switching from `docker build` to `docker-compose build` is a solid update. A couple of points to consider:  
- Ensure that the image built by Docker Compose is indeed named `pixel-client-core` as expected.  
- Verify that the runner environment has Docker Compose installed and that using `sudo` is appropriate given your runner’s configuration—this might be redundant or cause permission issues in some environments.

---

`34-41`: **PR Comment Construction and Hardcoded Values.**  
The step that constructs the PR comment now defines the variable `PR_COMMENT` and correctly uses it in the `curl` payload. The URL is generated via string concatenation with `"3${{ github.event.number }}"`, which aligns with your port mapping. However, note that the IP address is hardcoded. Please verify that this hardcoded value remains valid across environments or consider parameterizing it in the future if needed.

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between f1af2782525e4924826c30f0f2421be88225827d and b24011501bf668ea48975a81440ce9c951c30e0b.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `.github/workflows/preview-pull-request.yml` (3 hunks)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

<details>
<summary>.github/workflows/preview-pull-request.yml</summary>

9-9: label "client" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-22.04", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "macos-12-xl", "macos-12-xlarge", "macos-12-large", "macos-12", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

</details>

</details>

</details>

<details>
<summary>🔇 Additional comments (2)</summary><blockquote>

<details>
<summary>.github/workflows/preview-pull-request.yml (2)</summary>

`5-6`: **Verify PR Event Trigger Configuration.**  
The workflow now triggers on the `opened`, `synchronize`, and `reopened` events. Please confirm that the removal of the `closed` event is intentional—especially if you previously relied on that trigger for any cleanup or post-closure processes.

---

`9-9`: **Runner Label Verification Needed.**  
The `runs-on: client` setting uses a custom label. According to our static analysis, the label `"client"` isn’t among the standard labels. If you intend to use a self-hosted runner with a custom label, please ensure that `"client"` is correctly configured in the `actionlint.yaml` file. Otherwise, consider updating it to one of the standard labels (for example, `"self-hosted"`) to avoid runner assignment issues.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

9-9: label "client" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-22.04", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "macos-12-xl", "macos-12-xlarge", "macos-12-large", "macos-12", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

</details>

</details>

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-06T21:35:57Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 4**

<details>
<summary>🧹 Nitpick comments (4)</summary><blockquote>

<details>
<summary>.github/workflows/pull-request/review.yml (3)</summary><blockquote>

`14-15`: **Security Improvement: Sanitize "github.head_ref" Usage**

Multiple steps directly use `github.head_ref` (in the checkout configuration and the branch extraction script). For better security, consider assigning this value to an environment variable and sanitizing it before use.



Also applies to: 55-56

---

`75-75`: **Remove Trailing Whitespace**

Trailing whitespace detected on this line. Please remove the extra spaces to maintain clean formatting.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 75-75: trailing spaces

(trailing-spaces)

</details>

</details>

---

`116-121`: **Cleanup Commented Code**

The merge pull request step is commented out. If this code is no longer required, consider removing it to reduce clutter. Alternatively, add an explanatory comment to clarify its purpose.

</blockquote></details>
<details>
<summary>.github/workflows/pull-request/preview.yml (1)</summary><blockquote>

`18-18`: **Security Note: Avoid Direct Use of github.head_ref**

Using `github.head_ref` directly in the inline script (for defining the branch variable) may introduce security risks. Consider sanitizing the value or passing it through a pre-defined environment variable.

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between b24011501bf668ea48975a81440ce9c951c30e0b and ec8fd59cfea9b40a00c8b6ce8f6510027d48b16d.

</details>

<details>
<summary>📒 Files selected for processing (3)</summary>

* `.github/workflows/pull-request/preview.yml` (1 hunks)
* `.github/workflows/pull-request/priview-clean.yml` (1 hunks)
* `.github/workflows/pull-request/review.yml` (1 hunks)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

<details>
<summary>.github/workflows/pull-request/priview-clean.yml</summary>

9-9: label "client" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-22.04", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "macos-12-xl", "macos-12-xlarge", "macos-12-large", "macos-12", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

</details>
<details>
<summary>.github/workflows/pull-request/preview.yml</summary>

9-9: label "client" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-22.04", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "macos-12-xl", "macos-12-xlarge", "macos-12-large", "macos-12", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

---

16-16: "github.head_ref" is potentially untrusted. avoid using it directly in inline scripts. instead, pass it through an environment variable. see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions for more details

(expression)

</details>
<details>
<summary>.github/workflows/pull-request/review.yml</summary>

12-12: the runner of "actions/checkout@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

---

54-54: "github.head_ref" is potentially untrusted. avoid using it directly in inline scripts. instead, pass it through an environment variable. see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions for more details

(expression)

</details>

</details>
<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

<details>
<summary>.github/workflows/pull-request/review.yml</summary>

[error] 75-75: trailing spaces

(trailing-spaces)

</details>

</details>

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-06T21:59:37Z

Review comments:
diff_hunk: @@ -34,19 +38,15 @@ jobs:
 
       - name: Comment PR with Preview URL
         if: github.event.action != 'closed'
-        uses: actions/github-script@v7
-        with:
-          script: |
-            const issue_number = context.payload.pull_request.number;
-            const previewUrl = `http://YOUR_SERVER_IP:3${issue_number}`;
-            const message = `🚀 Preview ready: [http://YOUR_SERVER_IP:3000](http://YOUR_SERVER_IP:3${issue_number})`;
-            
-            await github.rest.issues.createComment({
-              issue_number: issue_number,
-              owner: context.repo.owner,
-              repo: context.repo.repo,
-              body: `🔍 **Preview Ready**: [View Preview](http://YOUR_SERVER_IP:300${issue_number})`
-            });
+        run: |
+          PR_COMMENT="🚀 Preview ready: [http://185.204.168.45:3${{ github.event.number }}](http://185.204.168.45:3${{ github.event.number }})"
+
+          curl -X POST \
+            -H "Authorization: token ${{ secrets.PERSONAL_ACCESS_TOKEN }}" \
+            -H "Accept: application/vnd.github.v3+json" \
+            -d "{\"body\": \"${PR_PREVIEW}\"}" \
+            "https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.number }}/comments"
path: .github/workflows/preview-pull-request.yml
user: login: coderabbitai[bot]
body: _⚠️ Potential issue_

**Variable Mismatch in PR Commenting Step**

In this step, a variable `PR_COMMENT` is defined on line 42 with the preview URL, but the payload sent via `curl` on line 47 uses `${PR_PREVIEW}`. This appears to be a mismatch that will result in an empty comment or an unexpected value. Please update the variable name in the payload to `${PR_COMMENT}` to ensure consistency.

Suggested fix:
```diff
-          -d "{\"body\": \"${PR_PREVIEW}\"}" \
+          -d "{\"body\": \"${PR_COMMENT}\"}" \
```


<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **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.

`````suggestion
        run: |
          PR_COMMENT="🚀 Preview ready: [http://185.204.168.45:3${{ github.event.number }}](http://185.204.168.45:3${{ github.event.number }})"

          curl -X POST \
            -H "Authorization: token ${{ secrets.PERSONAL_ACCESS_TOKEN }}" \
            -H "Accept: application/vnd.github.v3+json" \
-          -d "{\"body\": \"${PR_PREVIEW}\"}" \
+          -d "{\"body\": \"${PR_COMMENT}\"}" \
            "https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.number }}/comments"
`````

</details>

<!-- suggestion_end -->

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-03-06T21:17:28Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,15 @@
+name: PR Cleanup
+
+on:
+  pull_request:
+    types: [closed]
+
+jobs:
+  cleanup:
+    runs-on: client
path: .github/workflows/pull-request/priview-clean.yml
user: login: coderabbitai[bot]
body: _⚠️ Potential issue_

**Invalid Runner Label: "client" is not recognized**

The runner label "client" is not one of the supported GitHub Actions runner labels (e.g., "ubuntu-latest", "windows-latest", etc.). If you intend to use a custom self‐hosted runner labeled “client”, please update your actionlint configuration; otherwise, update this label accordingly.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

9-9: label "client" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-22.04", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "macos-12-xl", "macos-12-xlarge", "macos-12-large", "macos-12", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-03-06T21:59:36Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,121 @@
+name: Pull Request Automation
+
+on:
+  pull_request:
+    types: [opened, ready_for_review]
+
+jobs:
+  build-design-system:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout repository
+        uses: actions/checkout@v3
path: .github/workflows/pull-request/review.yml
user: login: coderabbitai[bot]
body: _🛠️ Refactor suggestion_

**Upgrade Checkout Action Version**

The checkout step currently uses `actions/checkout@v3`. It is recommended to upgrade to `actions/checkout@v4` for improved performance, security, and future compatibility.


```diff
-      - name: Checkout repository
-        uses: actions/checkout@v3
+      - name: Checkout repository
+        uses: actions/checkout@v4
```


<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **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.

`````suggestion
      - name: Checkout repository
        uses: actions/checkout@v4
`````

</details>

<!-- suggestion_end -->

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

12-12: the runner of "actions/checkout@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-03-06T21:59:36Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,40 @@
+name: PR Preview
+
+on:
+  pull_request:
+    types: [opened, synchronize, reopened]
+
+jobs:
+  preview:
+    runs-on: client
path: .github/workflows/pull-request/preview.yml
user: login: coderabbitai[bot]
body: _⚠️ Potential issue_

**Invalid Runner Label: "client" is not recognized**

The runner label "client" used here is not among the supported labels. Please update it to a supported label (for example, "ubuntu-latest") or ensure that "client" is properly configured as a custom self-hosted label.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

9-9: label "client" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-22.04", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "macos-12-xl", "macos-12-xlarge", "macos-12-large", "macos-12", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-03-06T21:59:36Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,40 @@
+name: PR Preview
+
+on:
+  pull_request:
+    types: [opened, synchronize, reopened]
+
+jobs:
+  preview:
+    runs-on: client
+    steps:
+      - name: Checkout Repository
+        uses: actions/checkout@v4
+
+      - name: Define variables
+        id: vars
+        run: |
+          echo "pr_number=${{ github.event.pull_request.number }}" >> $GITHUB_ENV
+          echo "branch=$(echo ${{ github.head_ref }} | tr '/' '-')" >> $GITHUB_ENV
+
+      - name: Build Docker Image
+        run: |
+          sudo docker-compose build
+          sudo docker tag pixel-client-core mrbadri/pixel-client:pr-${{ github.event.number }}
+
+      - name: Run Preview Container
+        run: |
+          sudo docker stop preview-pr-${{ github.event.number }} || true
+          sudo docker rm preview-pr-${{ github.event.number }} || true
+          sudo docker run -d \
+            --name preview-pr-${{ github.event.number }} \
+            -p $((3000 + ${{ github.event.number }})):3000 \
+            mrbadri/pixel-client:pr-${{ github.event.number }}
+
+      - name: Comment PR with Preview URL
+        run: |
+          PR_COMMENT="🚀 **Your preview is ready!** Check it out here: [http://185.204.168.45:3${{ github.event.number }}](http://185.204.168.45:3${{ github.event.number }}) ✨"
path: .github/workflows/pull-request/preview.yml
user: login: coderabbitai[bot]
body: _🛠️ Refactor suggestion_

_⚠️ Potential issue_

**Bug: Incorrect Port Calculation in Preview URL**

The preview URL is constructed by concatenating `"3${{ github.event.number }}"`, which may not correctly compute the intended port based on the arithmetic (i.e. 3000 + PR number). For instance, if the pull request number is 10, this would yield port 310 rather than 3010. Consider replacing the string concatenation with an arithmetic expression such as:
  
```diff
-          PR_COMMENT="🚀 **Your preview is ready!** Check it out here: [http://185.204.168.45:3${{ github.event.number }}](http://185.204.168.45:3${{ github.event.number }}) ✨"
+          PR_COMMENT="🚀 **Your preview is ready!** Check it out here: [http://185.204.168.45:$((3000 + ${{ github.event.number }}))](http://185.204.168.45:$((3000 + ${{ github.event.number }}))) ✨"
```

This ensures that the host port is correctly calculated.





<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **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.

`````suggestion
          PR_COMMENT="🚀 **Your preview is ready!** Check it out here: [http://185.204.168.45:$((3000 + ${{ github.event.number }}))](http://185.204.168.45:$((3000 + ${{ github.event.number }}))) ✨"
`````

</details>

<!-- suggestion_end -->

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-03-06T21:59:36Z
author_association: CONTRIBUTOR

PR comments:
user: login: coderabbitai[bot]
created_at: 2025-03-06T20:42:27Z
body: <!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- This is an auto-generated comment: failure by coderabbit.ai -->

> [!CAUTION]
> ## Review failed
> 
> The pull request is closed.

<!-- end of auto-generated comment: failure by coderabbit.ai -->
<!-- walkthrough_start -->

## Walkthrough
This pull request updates an existing GitHub Actions workflow and introduces three new workflows. The preview workflow has been modified to change trigger events, update the runner label, use Docker Compose for image building with tagging, and post pull request comments via curl. A minor change was made in the README header. In addition, new workflows have been added to deploy preview environments on pull request events, clean up containers when pull requests close, and automate pull request reviews by building design assets, adding reviewers, and implementing an approval check loop.

## Changes

| File(s) | Summary |
|---------|---------|
| `.github/workflows/preview-pull-request.yml` | Updated trigger events (removed `closed`), changed `runs-on` from `client-runner` to `client`, switched from `docker build` to `docker-compose build` with image tagging, replaced `actions/github-script` comment with a direct `curl` call, and removed container cleanup step. |
| `README.md` | Modified the header line by adding an extra trailing space. |
| `.github/workflows/preview.yml`, `.github/workflows/priview-clean.yml` | Added new workflows: one to deploy a preview container on pull request events and another to clean up containers when the pull request is closed. |
| `.github/workflows/pull-request-review.yml` | Introduced a new workflow for pull request automation that includes building the design system, adding a reviewer, posting issue-linked comments, and a conditional merge flow with an approval-check loop. |

## Sequence Diagram(s)

```mermaid
sequenceDiagram
    participant PR as "Pull Request Event"
    participant Runner as "GitHub Runner"
    participant Docker as "Docker Engine"
    participant GitHub as "GitHub API"

    PR->>Runner: Trigger (opened, synchronized, reopened)
    Runner->>Runner: Checkout repository & set variables
    Runner->>Docker: Build image via docker-compose and tag it
    Docker-->>Runner: Image built and tagged
    Runner->>Runner: Run preview container with mapped port
    Runner->>GitHub: Post comment with preview URL via curl
```

```mermaid
sequenceDiagram
    participant PR as "Pull Request Closed Event"
    participant Runner as "GitHub Runner"
    participant Docker as "Docker Engine"

    PR->>Runner: Trigger cleanup job on PR closure
    Runner->>Docker: Stop and remove the preview container (errors handled gracefully)
```

```mermaid
sequenceDiagram
    participant PR as "Pull Request Event"
    participant Runner as "GitHub Runner"
    participant API as "GitHub API"

    PR->>Runner: Trigger PR review workflow
    Runner->>Runner: Build design system (checkout, install, build)
    Runner->>API: Commit and push design token changes
    Runner->>Runner: Extract issue number and add reviewer
    Runner->>API: Post comment linking PR to issue
    Runner->>Runner: Check PR author and enter approval loop
    Runner->>API: Poll for approval (every minute)
```

## Poem
> I'm a rabbit in the code burrow deep,  
> Hopping through workflows while others sleep.  
> Docker images build with a swift, leaping pace,  
> PR previews and reviews now run in the race.  
> I nibble on bugs, in these changes so neat,  
> Celebrating updates with every hop and beat!  
> 🥕🐇

<!-- walkthrough_end -->
<!-- internal state start -->


<!-- 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 -->

<!-- internal state end -->

---

<details>
<summary>📜 Recent review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between ec8fd59cfea9b40a00c8b6ce8f6510027d48b16d and 13ccc3eab1ff7c5abc66546fc56610f024e123ad.

</details>

<details>
<summary>📒 Files selected for processing (3)</summary>

* `.github/workflows/preview.yml` (1 hunks)
* `.github/workflows/priview-clean.yml` (1 hunks)
* `.github/workflows/pull-request-review.yml` (1 hunks)

</details>

</details>
<!-- tips_start -->

---



<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=pixel-genius/pixel-client&utm_content=275):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Generate unit testing code for this file.`
  - `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
  - `@coderabbitai generate unit testing code for this file.`
  -	`@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
  - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and generate unit testing code.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

### CodeRabbit Commands (Invoked using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### CodeRabbit Configuration File (`.coderabbit.yaml`)

- You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository.
- Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json`

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->
author_association: CONTRIBUTOR
user: login: mrbadri
created_at: 2025-03-06T21:21:01Z
body: 🚀 Preview ready: [http://185.204.168.45:3275](http://185.204.168.45:3275)
author_association: CONTRIBUTOR
user: login: mrbadri
created_at: 2025-03-06T21:26:21Z
body: 🚀 Preview ready: [http://185.204.168.45:3275](http://185.204.168.45:3275)
author_association: CONTRIBUTOR
user: login: mrbadri
created_at: 2025-03-06T21:34:41Z
body: 🚀 **Your preview is ready!** Check it out here: [http://185.204.168.45:3275](http://185.204.168.45:3275) ✨
author_association: CONTRIBUTOR
user: login: mrbadri
created_at: 2025-03-06T21:38:06Z
body: 🚀 **Your preview is ready!** Check it out here: [http://185.204.168.45:3275](http://185.204.168.45:3275) ✨
author_association: CONTRIBUTOR
user: login: mrbadri
created_at: 2025-03-06T21:59:19Z
body: 🚀 **Your preview is ready!** Check it out here: [http://185.204.168.45:3275](http://185.204.168.45:3275) ✨
author_association: CONTRIBUTOR