From 14da1aa9f7fe0edcd087c0df3c8c5a68e05d55af Mon Sep 17 00:00:00 2001 From: Jason Long Date: Mon, 18 May 2026 13:44:26 -0500 Subject: [PATCH 1/6] first commit --- README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..1a291bb --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# magmod.app From e532642a6583b113325ff887197739f6c4300620 Mon Sep 17 00:00:00 2001 From: Jason Long Date: Mon, 18 May 2026 13:47:56 -0500 Subject: [PATCH 2/6] Add Node.js CI workflow for testing and building This workflow installs Node.js dependencies, builds the code, and runs tests across multiple Node.js versions. --- .github/workflows/node.js.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/node.js.yml diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml new file mode 100644 index 0000000..2284b93 --- /dev/null +++ b/.github/workflows/node.js.yml @@ -0,0 +1,31 @@ +# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs + +name: Node.js CI + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build: + + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [18.x, 20.x, 22.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + + steps: + - uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + - run: npm ci + - run: npm run build --if-present + - run: npm test From 1a75efb3ad3301d9c6a4a29f6afea8a9b1b8c574 Mon Sep 17 00:00:00 2001 From: Jason Long Date: Mon, 18 May 2026 14:52:05 -0500 Subject: [PATCH 3/6] Setup GitHub Pages automation for magmod.app --- .bin/pm | 1 + download.json | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 .bin/pm create mode 100644 download.json diff --git a/.bin/pm b/.bin/pm new file mode 100644 index 0000000..69b4684 --- /dev/null +++ b/.bin/pm @@ -0,0 +1 @@ +cmds/pm/pm - platform/frameworks/base - Git at Google
blob: 81838386c055e35958b7b7ff6d9a2e934f05daca [file]
# Script to start "pm" on the device, which has a very rudimentary
# shell.
#
base=/system
export CLASSPATH=$base/framework/pm.jar
exec app_process $base/bin com.android.commands.pm.Pm "$@"
\ No newline at end of file diff --git a/download.json b/download.json new file mode 100644 index 0000000..b64ec5c --- /dev/null +++ b/download.json @@ -0,0 +1,30 @@ +)]}' +{ + "id": "49c721f0fda7379d1c0d09fb8c669fd150580efb", + "entries": [ + { + "mode": 33188, + "type": "blob", + "id": "4868555b340bd417b4a8d28d6b92590572aa11b9", + "name": "Android.mk" + }, + { + "mode": 33188, + "type": "blob", + "id": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + "name": "MODULE_LICENSE_APACHE2" + }, + { + "mode": 33188, + "type": "blob", + "id": "c5b1efa7aac764ae6d8da63476a2d5cec02a6a5d", + "name": "NOTICE" + }, + { + "mode": 33188, + "type": "blob", + "id": "48d5d4aed7a711b61bcc3eaae1597354fc9e7804", + "name": "cmd.cpp" + } + ] +} From 26eaed37f9355095d05c5b5d708b5c603c8a7b29 Mon Sep 17 00:00:00 2001 From: Jason Long Date: Mon, 18 May 2026 15:23:49 -0500 Subject: [PATCH 4/6] Setup GitHub Pages with CI/CD automation --- .github/workflows/deploy-pages.yml | 115 ++++++ .github/workflows/workspace.yml | 40 ++ README_GITHUB_PAGES.md | 19 + package-lock.json | 618 ++++++++++++++++++++++++++++- package.json | 11 +- plugin.zip | Bin 24600 -> 24637 bytes scripts/deploy-gh-pages.js | 146 +++++++ scripts/setup-gh-pages.js | 82 ++++ 8 files changed, 1025 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/deploy-pages.yml create mode 100644 .github/workflows/workspace.yml create mode 100644 README_GITHUB_PAGES.md create mode 100644 scripts/deploy-gh-pages.js create mode 100644 scripts/setup-gh-pages.js diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml new file mode 100644 index 0000000..96c7f4e --- /dev/null +++ b/.github/workflows/deploy-pages.yml @@ -0,0 +1,115 @@ +name: Deploy to GitHub Pages + +on: + push: + branches: + - main + pull_request: + branches: + - main + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: true + +jobs: + build: + name: Build + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '18' + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: Build project + run: npm run build + + - name: Create dist directory if missing + run: mkdir -p dist + + - name: Create index.html + if: hashFiles('dist/index.html') == '' + run: | + cat > dist/index.html << 'EOF' + + + + + + MagMod App + + + +
+

๐Ÿš€ MagMod App

+

Acode Plugin Template for Development

+

GitHub Pages Deployed โœ“

+ +
+ + + EOF + + - name: Upload artifact + uses: actions/upload-pages-artifact@v2 + with: + path: 'dist' + + deploy: + name: Deploy + needs: build + runs-on: ubuntu-latest + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 diff --git a/.github/workflows/workspace.yml b/.github/workflows/workspace.yml new file mode 100644 index 0000000..5ab9dfc --- /dev/null +++ b/.github/workflows/workspace.yml @@ -0,0 +1,40 @@ +# Workspace CI workflow - Independent workspace testing and builds +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs + +name: Workspace CI + +on: + push: + branches: [ "main", "feature/workspace-setup" ] + pull_request: + branches: [ "main", "feature/workspace-setup" ] + +jobs: + workspace: + + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [18.x, 20.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + + steps: + - uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + - name: Install dependencies + run: npm ci + - name: Run linting + run: npm run lint --if-present + - name: Build workspace + run: npm run build --if-present + - name: Run workspace tests + run: npm test + - name: Generate coverage reports + run: npm run coverage --if-present + - name: Setup workspace environment + run: npm run setup --if-present diff --git a/README_GITHUB_PAGES.md b/README_GITHUB_PAGES.md new file mode 100644 index 0000000..e506729 --- /dev/null +++ b/README_GITHUB_PAGES.md @@ -0,0 +1,19 @@ +# GitHub Pages Setup for MagMod App + +**Repository:** https://github.com/longjason529/magmod.app + +## Quick Start + +### Option 1: Automated Setup (Recommended) + +```bash +# Make the setup script executable +chmod +x scripts/setup-gh-pages.sh + +# Run the setup +./scripts/setup-gh-pages.sh + +# Commit and push +git add . +git commit -m "Setup GitHub Pages automation" +git push origin main diff --git a/package-lock.json b/package-lock.json index 8bd54e2..741b2f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "acode-plugin", + "name": "magmod.app", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "acode-plugin", + "name": "magmod.app", "version": "1.0.0", "license": "MIT", "dependencies": { @@ -14,6 +14,7 @@ }, "devDependencies": { "esbuild": "^0.25.8", + "gh-pages": "^6.3.0", "jszip": "^3.10.1" } }, @@ -459,12 +460,97 @@ "node": ">=18" } }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/acode-plugin-types": { "version": "1.11.7-patch.2", "resolved": "https://registry.npmjs.org/acode-plugin-types/-/acode-plugin-types-1.11.7-patch.2.tgz", "integrity": "sha512-7cwZJqH4FtHZoV/ElZBgC/BaYqjZmr5zShbzNrbcKstzxwzFij9q4lf4QjP4Km+0oSj2e6bEF+WESK4XgsUGwA==", "license": "MIT" }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true, + "license": "MIT" + }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -472,6 +558,26 @@ "dev": true, "license": "MIT" }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/email-addresses": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz", + "integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==", + "dev": true, + "license": "MIT" + }, "node_modules/esbuild": { "version": "0.25.8", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", @@ -514,12 +620,211 @@ "@esbuild/win32-x64": "0.25.8" } }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-extra": { + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.5.tgz", + "integrity": "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/gh-pages": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-6.3.0.tgz", + "integrity": "sha512-Ot5lU6jK0Eb+sszG8pciXdjMXdBJ5wODvgjR+imihTqsUWF2K6dJ9HST55lgqcs8wWcw6o6wAsUzfcYRhJPXbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^3.2.4", + "commander": "^13.0.0", + "email-addresses": "^5.0.0", + "filenamify": "^4.3.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "^11.1.1", + "globby": "^11.1.0" + }, + "bin": { + "gh-pages": "bin/gh-pages.js", + "gh-pages-clean": "bin/gh-pages-clean.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, "node_modules/html-tag-js": { "version": "2.4.15", "resolved": "https://registry.npmjs.org/html-tag-js/-/html-tag-js-2.4.15.tgz", "integrity": "sha512-ll1CsDRYPQiUYv8DPUUnDy6k9CTwc7jMObXr7BYV6iuLm7ZUZ4ZSo5CjaU7qh1qL7S4TGaGT+JKqYXksa8dWrg==", "license": "MIT" }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", @@ -534,6 +839,39 @@ "dev": true, "license": "ISC" }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -541,6 +879,19 @@ "dev": true, "license": "MIT" }, + "node_modules/jsonfile": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/jszip": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", @@ -564,6 +915,98 @@ "immediate": "~3.0.5" } }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -571,6 +1014,52 @@ "dev": true, "license": "(MIT AND Zlib)" }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -578,6 +1067,27 @@ "dev": true, "license": "MIT" }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", @@ -594,6 +1104,41 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -601,6 +1146,16 @@ "dev": true, "license": "MIT" }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -608,6 +1163,16 @@ "dev": true, "license": "MIT" }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -618,6 +1183,55 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", diff --git a/package.json b/package.json index 081be18..16cb624 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { - "name": "acode-plugin", + "name": "magmod.app", "version": "1.0.0", "description": "Template for Acode plugin", "main": "src/main.js", - "repository": "https://github.com/Acode-Foundation/acode-plugin.git", - "author": "Acode Foundation", + "repository": "https://github.com/longjason529/magmod.app.git", + "author": "Jason Long", "license": "MIT", "dependencies": { "acode-plugin-types": "^1.11.7-patch.2", @@ -12,11 +12,14 @@ }, "devDependencies": { "esbuild": "^0.25.8", + "gh-pages": "^6.3.0", "jszip": "^3.10.1" }, "scripts": { "dev": "node esbuild.config.mjs --serve", - "build": "node esbuild.config.mjs" + "build": "node esbuild.config.mjs", + "deploy": "npm run build && gh-pages -d dist", + "deploy:ci": "node scripts/deploy-gh-pages.js" }, "browserslist": "cover 100%,not android < 5" } diff --git a/plugin.zip b/plugin.zip index 395c97d0d5a2a26a8fc4d40571ad05fd52e22b6d..7ac1d7928f66dd1967a06acc2e3e68a17c1308e0 100644 GIT binary patch delta 360 zcmbPnfN}2uM!o=VW)?064h9AW-vyguHu9Z~U;!~U-;ao66evh7%FQe;&dkp%R=rx6GW>(4rixL>)NSs$_C{oCRyKPKi$95& z286RG|BW-^1vwk;tjRXLV^F} seeu%vAaju|XNO6H>8UXc47rJ!d3ssJ0p6@^ATd@T6a|KhP&|kS01&@pNdN!< delta 309 zcmdmcfN{nFM!o=VW)?064h9B>NkM$k8~M&guz(nw??=QjP7aE4k_+%==a}dz6yM6o zzyQLi8a8i^TE+<0F*!EI38Hmzj4tEk`>_*b6LqSS6O%Ji-7<4hLyK~(N_5~{tK!K$ zaTctJI>kCAlTXIk%3N1c`eVt&zyQJl-i%Bl3(DfIuKhY#!E5w zPhJx*5eZT-+49gQ9-v=f7|4VI%NPcR + + + + + MagMod App + + + +
+

๐Ÿš€ MagMod App

+

Acode Plugin Template for Development

+

GitHub Pages Deployed โœ“

+
+ +`; + + fs.writeFileSync('./dist/index.html', indexHtml); + log('โœ“ Default index.html created', 'green'); + } + + // Step 4: Initialize gh-pages if needed + try { + execSync('npm list gh-pages', { stdio: 'ignore' }); + } catch (e) { + log('Installing gh-pages package...', 'yellow'); + executeCommand('npm install --save-dev gh-pages', 'Installing gh-pages'); + } + + // Step 5: Deploy using gh-pages + log('\nDeploying to GitHub Pages...', 'yellow'); + + const deployCommand = `npx gh-pages -d dist -m "Automated deployment: $(date '+%Y-%m-%d %H:%M:%S')"`; + + if (executeCommand(deployCommand, 'Deploying to gh-pages branch')) { + log('\nโœ“ Successfully deployed to GitHub Pages!', 'green'); + log('Your site will be available at: https://longjason529.github.io/magmod.app', 'blue'); + } else { + log('Deployment failed. Check your GitHub credentials and repository settings.', 'red'); + process.exit(1); + } + + log('\nโœ“ Deployment complete!\n', 'green'); +} + +main().catch((error) => { + log(`\nโœ— Fatal error: ${error.message}`, 'red'); + process.exit(1); +}); diff --git a/scripts/setup-gh-pages.js b/scripts/setup-gh-pages.js new file mode 100644 index 0000000..50dd965 --- /dev/null +++ b/scripts/setup-gh-pages.js @@ -0,0 +1,82 @@ +#!/bin/bash + +set -e + +echo "๐Ÿš€ Setting up GitHub Pages for MagMod App" +echo "" +echo "Repository: https://github.com/longjason529/magmod.app" +echo "" + +# Colors +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +RED='\033[0;31m' +BLUE='\033[0;34m' +NC='\033[0m' + +# Step 1: Check if in git repo +if [ ! -d .git ]; then + echo -e "${RED}โœ— Not a git repository${NC}" + exit 1 +fi + +echo -e "${BLUE}โ†’ Checking repository setup${NC}" + +# Step 2: Create scripts directory +mkdir -p scripts +echo -e "${GREEN}โœ“ Scripts directory ready${NC}" + +# Step 3: Create workflow directory +mkdir -p .github/workflows +echo -e "${GREEN}โœ“ Workflow directory ready${NC}" + +# Step 4: Check package.json exists +if [ ! -f package.json ]; then + echo -e "${RED}โœ— package.json not found${NC}" + exit 1 +fi +echo -e "${GREEN}โœ“ package.json found${NC}" + +# Step 5: Install dependencies +echo "" +echo -e "${BLUE}โ†’ Installing dependencies${NC}" +npm install +echo -e "${GREEN}โœ“ Dependencies installed${NC}" + +# Step 6: Install gh-pages +echo "" +echo -e "${BLUE}โ†’ Installing gh-pages${NC}" +npm install --save-dev gh-pages +echo -e "${GREEN}โœ“ gh-pages installed${NC}" + +# Step 7: Create dist directory +mkdir -p dist +echo -e "${GREEN}โœ“ Dist directory created${NC}" + +# Step 8: Make deploy script executable +if [ -f scripts/deploy-gh-pages.js ]; then + chmod +x scripts/deploy-gh-pages.js + echo -e "${GREEN}โœ“ Deploy script made executable${NC}" +fi + +echo "" +echo -e "${BLUE}โ†’ GitHub Pages Setup Complete!${NC}" +echo "" +echo -e "${YELLOW}Next steps:${NC}" +echo "1. Push these changes to your repository:" +echo " git add ." +echo " git commit -m 'Setup GitHub Pages automation'" +echo " git push origin main" +echo "" +echo "2. Enable GitHub Pages in repository settings:" +echo " - Go to https://github.com/longjason529/magmod.app/settings/pages" +echo " - Source: GitHub Actions" +echo "" +echo "3. Deploy manually (optional):" +echo " npm run deploy" +echo "" +echo "4. Or let GitHub Actions handle it automatically on push!" +echo "" +echo -e "${BLUE}Your site will be available at:${NC}" +echo "https://longjason529.github.io/magmod.app" +echo "" From c45569f0f298a01c9267aa84476b5623df42aa5b Mon Sep 17 00:00:00 2001 From: Jason Long Date: Mon, 18 May 2026 15:27:39 -0500 Subject: [PATCH 5/6] Setup GitHub Pages automation with gh-pages integration --- plugin.zip | Bin 24637 -> 24637 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/plugin.zip b/plugin.zip index 7ac1d7928f66dd1967a06acc2e3e68a17c1308e0..08a5170cd0b51e0c0b278cc94e6a515a530dfc23 100644 GIT binary patch delta 88 zcmdmcfN}2uMxFp~W)?064h9B>UyC;KoR47owP^F*h)awhdSlcI5Is3M#s$P(7*opx b;wr?OfT*x|a}d=ZZwjK0#ajTWNeQ+9N1-M} delta 88 zcmdmcfN}2uMxFp~W)?064h9AW-vt|a&POo$F4%lG;u0f>-Wat4L{E;6aRG4`#?&%_ bxC-$mASx{097OfUn}Vog@fJX8Qi3f2M@=7Y From 88ee8305277bdf813764f743a3f459a407c4743f Mon Sep 17 00:00:00 2001 From: Jason Long Date: Mon, 18 May 2026 15:38:17 -0500 Subject: [PATCH 6/6] Resolve merge conflicts --- scripts/setup-gh-pages.sh | 68 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 scripts/setup-gh-pages.sh diff --git a/scripts/setup-gh-pages.sh b/scripts/setup-gh-pages.sh new file mode 100644 index 0000000..c6dbb8c --- /dev/null +++ b/scripts/setup-gh-pages.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +set -e + +echo "รฐลธลกโ‚ฌ Setting up GitHub Pages for MagMod App" +echo "" +echo "Repository: https://github.com/longjason529/magmod.app" +echo "" + +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +RED='\033[0;31m' +BLUE='\033[0;34m' +NC='\033[0m' + +if [ ! -d .git ]; then + echo -e "${RED}รขล“โ€” Not a git repository${NC}" + exit 1 +fi + +echo -e "${BLUE}รขโ€ โ€™ Checking repository setup${NC}" + +mkdir -p scripts +echo -e "${GREEN}รขล“โ€œ Scripts directory ready${NC}" + +mkdir -p .github/workflows +echo -e "${GREEN}รขล“โ€œ Workflow directory ready${NC}" + +if [ ! -f package.json ]; then + echo -e "${RED}รขล“โ€” package.json not found${NC}" + exit 1 +fi +echo -e "${GREEN}รขล“โ€œ package.json found${NC}" + +echo "" +echo -e "${BLUE}รขโ€ โ€™ Installing dependencies${NC}" +npm install +echo -e "${GREEN}รขล“โ€œ Dependencies installed${NC}" + +echo "" +echo -e "${BLUE}รขโ€ โ€™ Installing gh-pages${NC}" +npm install --save-dev gh-pages +echo -e "${GREEN}รขล“โ€œ gh-pages installed${NC}" + +mkdir -p dist +echo -e "${GREEN}รขล“โ€œ Dist directory created${NC}" + +if [ -f scripts/deploy-gh-pages.js ]; then + chmod +x scripts/deploy-gh-pages.js + echo -e "${GREEN}รขล“โ€œ Deploy script made executable${NC}" +fi + +echo "" +echo -e "${BLUE}รขโ€ โ€™ GitHub Pages Setup Complete!${NC}" +echo "" +echo -e "${YELLOW}Next steps:${NC}" +echo "1. Commit and push:" +echo " git add ." +echo " git commit -m 'Setup GitHub Pages automation'" +echo " git push origin main" +echo "" +echo "2. Enable in repository settings:" +echo " https://github.com/longjason529/magmod.app/settings/pages" +echo " Source: GitHub Actions" +echo "" +echo "3. Your site will be available at:" +echo " https://longjason529.github.io/magmod.app" +echo ""