Skip to content

Next#325

Open
ArmanNik wants to merge 1578 commits intomainfrom
next
Open

Next#325
ArmanNik wants to merge 1578 commits intomainfrom
next

Conversation

@ArmanNik
Copy link
Contributor

@ArmanNik ArmanNik commented May 19, 2025

What does this PR do?

(Provide a description of what this PR does.)

Test Plan

(Write your test plan here. If you changed any code, please provide us with clear instructions on how you verified your changes work.)

Related PRs and Issues

(If this PR is related to any other PR or resolves any issue or related to any issue link all related PR and issues here.)

Have you read the Contributing Guidelines on issues?

(Write your answer here.)

Summary by CodeRabbit

  • Chores

    • Added Docker ignore, npm config, and Prettier; updated gitignore and removed Stylelint.
    • Removed the Kitchensink demo and its static pages/assets.
  • CI

    • Added a publish workflow for packages.
    • CI updated to Node 20, switched to pnpm, and expanded pull-request triggers.
  • Tests

    • Replaced the build job with a test job; lint now fails pipeline and static analysis step added; test execution steps are present but commented out.

✏️ Tip: You can customize this high-level summary in your review settings.

@changeset-bot
Copy link

changeset-bot bot commented May 19, 2025

⚠️ No Changeset found

Latest commit: 81d2f6b

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

💥 An error occurred when fetching the changed packages and changesets in this PR
Some errors occurred when validating the changesets config:
The package or glob expression "@appwrite.io/pink" specified in the `linked` option does not match any package in the project. You may have misspelled the package name or provided an invalid glob expression. Note that glob expressions must be defined according to https://www.npmjs.com/package/micromatch.
The package or glob expression "@appwrite.io/pink-icons" specified in the `linked` option does not match any package in the project. You may have misspelled the package name or provided an invalid glob expression. Note that glob expressions must be defined according to https://www.npmjs.com/package/micromatch.
The package or glob expression "@appwrite.io/kitchensink" is specified in the `ignore` option but it is not found in the project. You may have misspelled the package name or provided an invalid glob expression. Note that glob expressions must be defined according to https://www.npmjs.com/package/micromatch.
The package or glob expression "@appwrite.io/fonts" is specified in the `ignore` option but it is not found in the project. You may have misspelled the package name or provided an invalid glob expression. Note that glob expressions must be defined according to https://www.npmjs.com/package/micromatch.
The package or glob expression "@appwrite.io/pink-design" is specified in the `ignore` option but it is not found in the project. You may have misspelled the package name or provided an invalid glob expression. Note that glob expressions must be defined according to https://www.npmjs.com/package/micromatch.

@pkg-pr-new
Copy link

pkg-pr-new bot commented May 19, 2025

Open in StackBlitz

npm i https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@325
npm i https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@325

commit: d9ba720

@appwrite appwrite deleted a comment from github-actions bot May 22, 2025
@appwrite appwrite deleted a comment from github-actions bot May 27, 2025
@appwrite appwrite deleted a comment from github-actions bot May 27, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Jun 2, 2025

🚀 Previews available on pkg.vc!

📦 @appwrite.io/pink-svelte

Install @appwrite.io/pink-svelte with:

pnpm install https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@81d2f6b

Alternatively, you may specify a branch name or pull request number:

pnpm install https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte~next
pnpm install https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte!325

📦 @appwrite.io/pink-icons-svelte

Install @appwrite.io/pink-icons-svelte with:

pnpm install https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@81d2f6b

Alternatively, you may specify a branch name or pull request number:

pnpm install https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte~next
pnpm install https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte!325

@coderabbitai
Copy link

coderabbitai bot commented Sep 1, 2025

Walkthrough

This PR removes the entire Kitchensink subproject (HTML templates, partials, CSS, JS, Vite config, and package.json). It updates CI to Node.js 20 and migrates workflows to pnpm, adds a new publish workflow (.github/workflows/pkg-vc.yml) that publishes two packages, and broadens PR triggers. Repository configs added/changed: .dockerignore, .npmrc, .prettierrc, .gitignore; .stylelintrc.json was deleted. Numerous static Kitchensink assets and the kitchensink package manifest were deleted.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'Next' is vague and generic, providing no meaningful information about the substantive changes in the pull request, which involve significant restructuring (deletion of 50+ kitchensink HTML files, configuration updates, workflow changes, and package manager migration). Revise the title to clearly describe the primary change, such as 'Remove kitchensink demo app and modernize project configuration' or similar, to convey the main objectives of this substantial changeset.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Nitpick comments (13)
.prettierrc (1)

2-6: Consider aligning Prettier rules with ecosystem defaults and adding EOL policy.

  • trailingComma "none" deviates from Prettier default "es5" and may increase diffs. Optional: switch to "es5".
  • Add "endOfLine": "lf" (or "auto") to avoid cross-OS churn.

Apply:

 {
     "useTabs": false,
     "tabWidth": 4,
     "singleQuote": true,
-    "trailingComma": "none",
-    "printWidth": 100
+    "trailingComma": "es5",
+    "printWidth": 100,
+    "endOfLine": "lf"
 }
.dockerignore (1)

1-2: Tighten Docker build context and add missing newline.

  • Add common junk/CI dirs to reduce context size.
  • Ensure file ends with a newline.
 node_modules/
 !dist
+.git
+.github
+.vscode
+.idea
+.DS_Store
+.turbo
+.vercel
+.pnpm-store
+coverage
+*.log
+
.gitignore (1)

1-10: Optional: ignore env files and lock down local artifacts.

Add common env patterns to avoid accidental secrets commits.

 node_modules/
 dist
 .DS_Store
 icons-dist/
 *.local
 .turbo
 .vercel
 .idea
 .zed
 .vscode
+*.env
+.env
+.env.*
.npmrc (1)

1-4: Remove npm-only flag; add package manager pinning and engines.

  • legacy-peer-deps is npm-specific and ignored by pnpm; keeping it is confusing.
  • Consider pinning pnpm via package.json "packageManager" and declaring "engines".
 engine-strict=true
 auto-install-peers=true
-legacy-peer-deps=true
 node-linker=hoisted

Follow-ups:

  • In package.json add: "packageManager": "pnpm@", "engines": { "node": ">=20" }.
.github/workflows/pkg-vc.yml (5)

6-8: Right-size permissions.

Drop pull-requests: write; grant only what’s needed. If the publish action doesn’t need repo writes, keep contents: read; otherwise bump just that scope.

 permissions:
-    pull-requests: write
-    contents: read
+  contents: read

10-13: Add concurrency to avoid duplicate publishes.

Prevents multiple runs for same ref from racing.

 jobs:
     publish:
+        concurrency:
+            group: pkg-vc-${{ github.ref }}
+            cancel-in-progress: false
         runs-on: ubuntu-latest

21-23: Pin pnpm version for reproducibility.

Explicit version avoids implicit upgrades breaking the build.

-            - name: Install pnpm
-              uses: pnpm/action-setup@v4
+            - name: Install pnpm
+              uses: pnpm/action-setup@v4
               # optionally pin pnpm:
+              with:
+                  version: 9

26-33: Step name vs directory mismatch; verify target package path.

Name says pink-svelte, path is ./v2/pink-sb. Fix the name or the directory.

-            - name: Publish @appwrite.io/pink-svelte
+            - name: Publish @appwrite.io/pink-sb
               uses: pkg-vc/publish-action@main
               with:
                   organization: appwrite
-                  directory: ./v2/pink-sb
+                  directory: ./v2/pink-sb
                   secret: ${{ secrets.TRY_MODULE_SECRET }}
                   github-token: ${{ secrets.GITHUB_TOKEN }}

26-39: Optional robustness: set CI env and verify secrets presence.

Fail fast with a clear message if secrets are missing.

         steps:
+            - name: Set CI
+              run: echo "CI=true" >> $GITHUB_ENV
+            - name: Verify secrets
+              if: ${{ env.TRY_MODULE_SECRET == '' }}
+              run: |
+                echo "TRY_MODULE_SECRET is not set." >&2
+                exit 1
.github/workflows/tests.yml (4)

30-36: Harden artifact upload and avoid false failures when report is absent.

             - uses: actions/upload-artifact@v4
               if: ${{ !cancelled() }}
               with:
                   name: genauigkeit-report
-                  path: |
-                      v2/pink-sb/.genauigkeit/report/index.html
+                  path: |
+                      v2/pink-sb/.genauigkeit/report/**
+                  if-no-files-found: warn
                   retention-days: 30

Please confirm the path exists after the test run. If this report is conditional, the warn behavior prevents red CI.


10-12: Add a job timeout to fail fast on hung servers.

     test:
         runs-on: ubuntu-latest
+        timeout-minutes: 30

3-7: Minimize token permissions and cancel superseded runs.

 on:
     push:
         branches: [main]
     pull_request:
         branches: ["**"]
+
+permissions:
+  contents: read
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true

18-21: Pin pnpm to exact version from package.json
Use the exact version declared in package.json (9.15.4) and disable the action’s auto-install for deterministic builds.

- name: Install pnpm
  uses: pnpm/action-setup@v4
+ name: Install pnpm
+ uses: pnpm/action-setup@v4
+ with:
+   version: 9.15.4
+   run_install: false
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between bfc9ba1 and 52e6f45.

⛔ Files ignored due to path filters (240)
  • apps/kitchensink/images/appwrite-footer-dark.svg is excluded by !**/*.svg
  • apps/kitchensink/images/appwrite-footer-light.svg is excluded by !**/*.svg
  • apps/kitchensink/images/appwrite-gray-light.svg is excluded by !**/*.svg
  • apps/kitchensink/images/appwrite-nav.svg is excluded by !**/*.svg
  • apps/kitchensink/images/appwrite-white.svg is excluded by !**/*.svg
  • apps/kitchensink/images/appwrite.svg is excluded by !**/*.svg
  • apps/kitchensink/images/empty-state/empty-state-illust-dark.svg is excluded by !**/*.svg
  • apps/kitchensink/images/empty-state/empty-state-illust-light.svg is excluded by !**/*.svg
  • apps/kitchensink/images/empty-state/empty-state-illust-magn-dark.svg is excluded by !**/*.svg
  • apps/kitchensink/images/empty-state/empty-state-illust-magn-light.svg is excluded by !**/*.svg
  • apps/kitchensink/images/getting-started/getting-started-dark.svg is excluded by !**/*.svg
  • apps/kitchensink/images/getting-started/getting-started-light.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/amazon.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/android.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/angular.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/apple.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/auth0.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/behance.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/bitBucket.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/bitly.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/box.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/chrome.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/css3.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/dart.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/deno.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/discord.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/docker.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/dribbble.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/dropbox.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/facebook.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/figma.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/flutter.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/git.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/github.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/gitlab.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/google.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/html5.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/instagram.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/ios.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/java.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/js.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/kotlin.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/linkedin.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/linux.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/medium.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/microsoft.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/ms_yammer.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/node_js.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/notion.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/okta.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/paypal.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/php.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/pinterest.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/python.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/react.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/reddit.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/ruby.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/salesforce.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/skype.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/slack.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/spotify.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/stripe.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/swift.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/telegram.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/tiktok.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/tradeshift.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/tumbler.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/twitch.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/twitter.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/unity.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/vimeo.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/vk.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/vs_code.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/vue.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/whatsapp.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/wordpress.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/yahoo.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/yandex.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/ycombinator.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/youtube.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/color/zoom.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/amazon.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/android.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/angular.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/apple.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/auth0.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/behance.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/bitBucket.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/bitly.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/box.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/css3.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/dart.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/deno.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/discord.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/docker.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/dribbble.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/dropbox.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/facebook.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/figma.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/flutter.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/git-branch.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/git-commit.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/git.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/github.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/gitlab.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/google.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/html5.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/instagram.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/ios.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/java.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/js.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/kotlin.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/linkedin.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/linux.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/medium.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/microsoft.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/ms_yammer.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/node_js.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/notion.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/okta.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/paypal.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/php.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/pinterest.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/python.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/react.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/reddit.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/ruby.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/salesforce.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/skype.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/slack.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/spotify.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/stripe.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/swift.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/telegram.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/tiktok.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/tradeshift.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/tumbir.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/twitch.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/twitter.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/unity.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/vimeo.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/vk.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/vs_code.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/vue.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/whatsapp.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/wordpress.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/yahoo.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/yandex.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/ycombinator.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/youtube.svg is excluded by !**/*.svg
  • apps/kitchensink/images/icons/grayscale/zoom.svg is excluded by !**/*.svg
  • apps/kitchensink/images/login/login-dark-mode.svg is excluded by !**/*.svg
  • apps/kitchensink/images/login/login-light-mode.svg is excluded by !**/*.svg
  • apps/kitchensink/images/mode/dark-mode.svg is excluded by !**/*.svg
  • apps/kitchensink/images/mode/light-mode.svg is excluded by !**/*.svg
  • apps/kitchensink/images/mode/system-mode.svg is excluded by !**/*.svg
  • apps/kitchensink/images/top-banner/bg-mint-desktop.png is excluded by !**/*.png
  • apps/kitchensink/images/top-banner/bg-mint-desktop.svg is excluded by !**/*.svg
  • apps/kitchensink/images/top-banner/bg-mint-desktop2.png is excluded by !**/*.png
  • apps/kitchensink/images/top-banner/bg-mint-mobile.png is excluded by !**/*.png
  • apps/kitchensink/images/top-banner/bg-pink-desktop.png is excluded by !**/*.png
  • apps/kitchensink/images/top-banner/bg-pink-desktop.svg is excluded by !**/*.svg
  • apps/kitchensink/images/top-banner/bg-pink-desktop2.png is excluded by !**/*.png
  • apps/kitchensink/images/top-banner/bg-pink-mobile.png is excluded by !**/*.png
  • apps/kitchensink/images/upgrade/upgrade-dark.png is excluded by !**/*.png
  • apps/kitchensink/images/upgrade/upgrade-light.png is excluded by !**/*.png
  • apps/kitchensink/images/wizard/demo.svg is excluded by !**/*.svg
  • apps/pink/public/appwrite.svg is excluded by !**/*.svg
  • apps/pink/public/articles/announcement.png is excluded by !**/*.png
  • apps/pink/public/articles/css-layers.png is excluded by !**/*.png
  • apps/pink/public/articles/getting-started.png is excluded by !**/*.png
  • apps/pink/public/comparison/dark/alerts-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/alerts-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/avatar-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/avatar-do-2.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/avatar-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/avatar-dont-2.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/border-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/border-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/button-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/button-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/checkbox-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/checkbox-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/drop-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/drop-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/elevation-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/elevation-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/elevation-usage-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/icons-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/icons-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/icons-usage-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/modal-usage-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/pagination-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/pagination-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/radio-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/radio-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/switch-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/switch-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/tabs-usage-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/tabs-usage-2.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/tags-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/tags-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/typography-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/typography-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/dark/typography-usage-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/alerts-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/alerts-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/avatar-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/avatar-do-2.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/avatar-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/avatar-dont-2.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/border-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/border-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/button-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/button-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/checkbox-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/checkbox-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/drop-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/drop-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/elevation-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/elevation-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/elevation-usage-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/icons-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/icons-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/icons-usage-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/modal-usage-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/pagination-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/pagination-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/radio-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/radio-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/switch-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/switch-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/tabs-usage-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/tabs-usage-2.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/tags-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/tags-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/typography-do-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/typography-dont-1.svg is excluded by !**/*.svg
  • apps/pink/public/comparison/light/typography-usage-1.svg is excluded by !**/*.svg
  • apps/pink/public/empty-dark.svg is excluded by !**/*.svg
📒 Files selected for processing (53)
  • .dockerignore (1 hunks)
  • .github/workflows/pkg-vc.yml (1 hunks)
  • .github/workflows/tests.yml (1 hunks)
  • .gitignore (1 hunks)
  • .npmrc (1 hunks)
  • .prettierrc (1 hunks)
  • .stylelintrc.json (0 hunks)
  • apps/kitchensink/.gitignore (0 hunks)
  • apps/kitchensink/README.md (0 hunks)
  • apps/kitchensink/auth.html (0 hunks)
  • apps/kitchensink/auth2.html (0 hunks)
  • apps/kitchensink/billCollapseDemo.html (0 hunks)
  • apps/kitchensink/bucket.html (0 hunks)
  • apps/kitchensink/bucketSettings.html (0 hunks)
  • apps/kitchensink/buckets.html (0 hunks)
  • apps/kitchensink/collection.html (0 hunks)
  • apps/kitchensink/cover-frame-2.html (0 hunks)
  • apps/kitchensink/cover-frame-light-mode-2.html (0 hunks)
  • apps/kitchensink/cover-frame-light-mode.html (0 hunks)
  • apps/kitchensink/cover-frame.html (0 hunks)
  • apps/kitchensink/create-org-modal.html (0 hunks)
  • apps/kitchensink/dashboard.html (0 hunks)
  • apps/kitchensink/dashboard2.html (0 hunks)
  • apps/kitchensink/empty-state-cards.html (0 hunks)
  • apps/kitchensink/error-console-page.html (0 hunks)
  • apps/kitchensink/error-not-found-modal.html (0 hunks)
  • apps/kitchensink/filters.html (0 hunks)
  • apps/kitchensink/full-screen-modal.html (0 hunks)
  • apps/kitchensink/functions.html (0 hunks)
  • apps/kitchensink/getting-started.html (0 hunks)
  • apps/kitchensink/index.html (0 hunks)
  • apps/kitchensink/layout-1-2.html (0 hunks)
  • apps/kitchensink/login-1.html (0 hunks)
  • apps/kitchensink/login-2.html (0 hunks)
  • apps/kitchensink/login.html (0 hunks)
  • apps/kitchensink/main.css (0 hunks)
  • apps/kitchensink/main.js (0 hunks)
  • apps/kitchensink/modal-demo.html (0 hunks)
  • apps/kitchensink/no-side.html (0 hunks)
  • apps/kitchensink/package.json (0 hunks)
  • apps/kitchensink/partials/sideNav.hbs (0 hunks)
  • apps/kitchensink/partials/topNav.hbs (0 hunks)
  • apps/kitchensink/startups-program.html (0 hunks)
  • apps/kitchensink/teamActivity.html (0 hunks)
  • apps/kitchensink/top-banner.html (0 hunks)
  • apps/kitchensink/user.html (0 hunks)
  • apps/kitchensink/userSecurity.html (0 hunks)
  • apps/kitchensink/users.html (0 hunks)
  • apps/kitchensink/vite.config.js (0 hunks)
  • apps/kitchensink/wizard-1-1.html (0 hunks)
  • apps/kitchensink/wizard-form.html (0 hunks)
  • apps/kitchensink/wizard-with-modal-empty.html (0 hunks)
  • apps/kitchensink/wizard-with-modal.html (0 hunks)
💤 Files with no reviewable changes (47)
  • apps/kitchensink/error-console-page.html
  • apps/kitchensink/collection.html
  • apps/kitchensink/dashboard2.html
  • apps/kitchensink/full-screen-modal.html
  • apps/kitchensink/layout-1-2.html
  • apps/kitchensink/wizard-with-modal-empty.html
  • apps/kitchensink/bucketSettings.html
  • apps/kitchensink/dashboard.html
  • apps/kitchensink/error-not-found-modal.html
  • apps/kitchensink/wizard-form.html
  • apps/kitchensink/login-2.html
  • apps/kitchensink/README.md
  • apps/kitchensink/modal-demo.html
  • apps/kitchensink/wizard-with-modal.html
  • apps/kitchensink/no-side.html
  • apps/kitchensink/cover-frame-2.html
  • apps/kitchensink/filters.html
  • apps/kitchensink/buckets.html
  • apps/kitchensink/users.html
  • apps/kitchensink/user.html
  • apps/kitchensink/top-banner.html
  • apps/kitchensink/billCollapseDemo.html
  • apps/kitchensink/empty-state-cards.html
  • apps/kitchensink/auth.html
  • .stylelintrc.json
  • apps/kitchensink/partials/sideNav.hbs
  • apps/kitchensink/main.js
  • apps/kitchensink/cover-frame.html
  • apps/kitchensink/auth2.html
  • apps/kitchensink/bucket.html
  • apps/kitchensink/cover-frame-light-mode.html
  • apps/kitchensink/vite.config.js
  • apps/kitchensink/login.html
  • apps/kitchensink/package.json
  • apps/kitchensink/index.html
  • apps/kitchensink/userSecurity.html
  • apps/kitchensink/functions.html
  • apps/kitchensink/getting-started.html
  • apps/kitchensink/teamActivity.html
  • apps/kitchensink/create-org-modal.html
  • apps/kitchensink/wizard-1-1.html
  • apps/kitchensink/main.css
  • apps/kitchensink/login-1.html
  • apps/kitchensink/.gitignore
  • apps/kitchensink/cover-frame-light-mode-2.html
  • apps/kitchensink/startups-program.html
  • apps/kitchensink/partials/topNav.hbs
🧰 Additional context used
🪛 actionlint (1.7.7)
.github/workflows/pkg-vc.yml

17-17: the runner of "actions/setup-node@v2" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

.github/workflows/tests.yml

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

(action)


15-15: the runner of "actions/setup-node@v2" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🔇 Additional comments (1)
.github/workflows/tests.yml (1)

21-25: LGTM on pnpm + Node 20 migration and making lint fail the build.

Comment on lines +3 to +5
on:
pull_request:

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

⚠️ Potential issue

Do not publish on pull_request. Restrict to main/tags (prevents accidental releases).

Publishing on PRs risks unmerged or fork code attempting to publish. Trigger on push to main/tags and allow manual runs.

-on:
-    pull_request:
+on:
+  push:
+    branches: [main]
+    tags: ['v*']
+  workflow_dispatch:
📝 Committable suggestion

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

Suggested change
on:
pull_request:
on:
push:
branches: [main]
tags: ['v*']
workflow_dispatch:
🤖 Prompt for AI Agents
.github/workflows/pkg-vc.yml lines 3-5: the workflow is currently triggered on
pull_request which can cause accidental publishes from unmerged or forked PRs;
remove the pull_request trigger and instead configure the workflow to run on
push to main and on tag pushes (e.g., tags matching your release pattern) and
add workflow_dispatch for manual runs so releases occur only from main/tags or
when manually invoked.

Comment on lines +16 to +19
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: 20
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Upgrade setup-node to v4 and enable pnpm cache.

actionlint flags v2 as too old; caching speeds CI.

-            - name: Use Node.js
-              uses: actions/setup-node@v2
-              with:
-                  node-version: 20
+            - name: Use Node.js
+              uses: actions/setup-node@v4
+              with:
+                  node-version: '20'
+                  cache: 'pnpm'
📝 Committable suggestion

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

Suggested change
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: 20
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
🧰 Tools
🪛 actionlint (1.7.7)

17-17: the runner of "actions/setup-node@v2" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🤖 Prompt for AI Agents
.github/workflows/pkg-vc.yml around lines 16 to 19: update the GitHub Action to
use actions/setup-node@v4 and enable pnpm caching; replace uses:
actions/setup-node@v2 with actions/setup-node@v4 and add the with: cache: 'pnpm'
(keeping node-version: 20) so the workflow uses the newer action and speeds CI
by caching pnpm dependencies.

Comment on lines +26 to +39
- name: Publish @appwrite.io/pink-svelte
uses: pkg-vc/publish-action@main
with:
organization: appwrite
directory: ./v2/pink-sb
secret: ${{ secrets.TRY_MODULE_SECRET }}
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Publish @appwrite.io/pink-icons-svelte
uses: pkg-vc/publish-action@main
with:
organization: appwrite
directory: ./v2/pink-icons
secret: ${{ secrets.TRY_MODULE_SECRET }}
github-token: ${{ secrets.GITHUB_TOKEN }}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Guard publish steps or job against PR events.

If you keep PR triggers for dry-runs, ensure secrets aren’t required. Otherwise gate the job.

-    publish:
+    publish:
+        if: github.event_name != 'pull_request'
         runs-on: ubuntu-latest
📝 Committable suggestion

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

Suggested change
- name: Publish @appwrite.io/pink-svelte
uses: pkg-vc/publish-action@main
with:
organization: appwrite
directory: ./v2/pink-sb
secret: ${{ secrets.TRY_MODULE_SECRET }}
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Publish @appwrite.io/pink-icons-svelte
uses: pkg-vc/publish-action@main
with:
organization: appwrite
directory: ./v2/pink-icons
secret: ${{ secrets.TRY_MODULE_SECRET }}
github-token: ${{ secrets.GITHUB_TOKEN }}
publish:
if: github.event_name != 'pull_request'
runs-on: ubuntu-latest
steps:
- name: Publish @appwrite.io/pink-svelte
uses: pkg-vc/publish-action@main
with:
organization: appwrite
directory: ./v2/pink-sb
secret: ${{ secrets.TRY_MODULE_SECRET }}
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Publish @appwrite.io/pink-icons-svelte
uses: pkg-vc/publish-action@main
with:
organization: appwrite
directory: ./v2/pink-icons
secret: ${{ secrets.TRY_MODULE_SECRET }}
github-token: ${{ secrets.GITHUB_TOKEN }}
🤖 Prompt for AI Agents
.github/workflows/pkg-vc.yml lines 26-39: the publish steps currently use
repository secrets and will fail or leak secrets when run on pull_request
events; guard the job or steps to avoid running when github.event_name ==
'pull_request' (or only run on push to protected branches) or alternatively
conditionally pass secrets so they are only used when not a PR (e.g., add an if
condition at the job or step level to skip publishing on pull_request and ensure
secrets are never referenced for PR runs).

Comment on lines +13 to +17
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: 20
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Upgrade core actions to v4 (v2 is EOL on modern runners).

checkout@v2 and setup-node@v2 will fail on current GitHub-hosted runners. Move to v4 and enable pnpm cache.

-            - uses: actions/checkout@v2
+            - uses: actions/checkout@v4
             - name: Use Node.js
-              uses: actions/setup-node@v2
+              uses: actions/setup-node@v4
               with:
                   node-version: 20
+                  cache: 'pnpm'
+                  cache-dependency-path: pnpm-lock.yaml
📝 Committable suggestion

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

Suggested change
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: 20
- uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
cache-dependency-path: pnpm-lock.yaml
🧰 Tools
🪛 actionlint (1.7.7)

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

(action)


15-15: the runner of "actions/setup-node@v2" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🤖 Prompt for AI Agents
.github/workflows/tests.yml around lines 13 to 17: the workflow is using
actions/checkout@v2 and actions/setup-node@v2 which are EOL; update them to
actions/checkout@v4 and actions/setup-node@v4 (keeping node-version: 20) and
enable pnpm caching by adding the setup-node cache configuration (e.g., cache:
"pnpm" and appropriate cache-dependency-path pointing at pnpm-lock.yaml or
workspace lockfile) so the job runs on modern GitHub runners and benefits from
pnpm cache.

Comment on lines 26 to 29
- name: Run tests
run: |
pnpm dev &
pnpm run test
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Wait for dev server to be ready to avoid flaky tests.

Start server, wait on a health URL, then run tests and clean up.

-            - name: Run tests
-              run: |
-                  pnpm dev &
-                  pnpm run test
+            - name: Run tests
+              run: |
+                  pnpm dev & SERVER_PID=$!
+                  npx wait-on http://localhost:5173
+                  pnpm run test
+                  kill $SERVER_PID

If the URL/port differs, replace it accordingly.

📝 Committable suggestion

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

Suggested change
- name: Run tests
run: |
pnpm dev &
pnpm run test
- name: Run tests
run: |
pnpm dev & SERVER_PID=$!
npx wait-on http://localhost:5173
pnpm run test
kill $SERVER_PID
🤖 Prompt for AI Agents
In .github/workflows/tests.yml around lines 26 to 29, the workflow starts the
dev server and immediately runs tests which can cause flakes; modify the step to
start the server in the background while capturing its PID, poll a health URL
(e.g., http://localhost:3000/health) with a timeout and exponential/backoff
retry until it returns a successful status, then run the test command, and
finally kill the background server using the captured PID in a cleanup/finally
style to ensure it is stopped; replace the health URL/port if your app exposes a
different endpoint.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants