| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
…eation, R2 CDN assets - manifest.json: replaced M3 demo with 6 Grudge races (Human, Barbarian, Elf, Dwarf, Orc, Undead) + 4 classes + R2 CDN animations - grudgeAPI.js: full Grudge backend client (character CRUD, auto-equip unarmed + harvesting tool, cNFT auto-mint, account inventory, asset ownership checking) - AccountContext.jsx: Grudge SSO via id.grudge-studio.com (replaces MetaMask-only wallet auth), JWT token handling, character list loading, SSO callback URL parsing - .env: configured for api/auth/assets.grudge-studio.com Co-Authored-By: Oz <oz-agent@warp.dev>
Co-Authored-By: Oz <oz-agent@warp.dev>
- Rename: @m3-org/characterstudio → @grudge-studio/gcs, v1.0.0 - index.html: full GCS meta (OG/Twitter), Space Grotesk + Inter fonts, theme-color, canonical URL at character.grudge-studio.com - public/style.css: Hydra brand system — CSS vars (#16b195 teal, #3e62c0 blue, gradient titlebar), Hydra-gradient scrollbars, Space Grotesk display font, brand bar + account button classes - BrandBar.jsx: Hydra SVG mark, GCS wordmark with teal↔blue gradient text, login/logout button wired to AccountContext (SSO via id.grudge-studio.com → api.grudge-studio.com) - App.jsx: mount BrandBar, remove old plain generalTitle div - vercel.json: security headers (COEP, COOP, X-Frame, Referrer), immutable cache for /assets/**, SPA rewrite - .env.example: document all VITE_ vars including GRUDGE_API, AUTH_GATEWAY, ASSET_CDN for grudge-studio.com deployment Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
wire the backend to the creation
There was a problem hiding this comment.
Note
Copilot was unable to run its full agentic suite in this review.
Adds Grudge Studio / HYDRA branding and integrates Grudge SSO + backend APIs, alongside deployment/config updates for hosting on Vercel.
Changes:
Copilot reviewed 12 out of 12 changed files in this pull request and generated 10 comments.
Show a summary per file| File | Description |
|---|---|
| vercel.json | Configures Vercel build/output, SPA rewrites, and security/caching headers. |
| src/services/grudgeAPI.js | Adds Grudge Studio API client (auth, characters, minting, inventory, health). |
| src/context/AccountContext.jsx | Implements SSO callback handling and loads characters after auth. |
| src/components/BrandBar.jsx | New HYDRA/GCS brand bar UI with sign-in/out controls. |
| src/App.jsx | Renders the new BrandBar in the app shell. |
| public/style.css | Adds HYDRA/GCS theme tokens and brand bar styles. |
| public/manifest.json | Replaces sample character assets with Grudge races/classes/animations. |
| package.json | Updates package metadata for GCS and removes GH Pages deploy scripts. |
| index.html | Updates SEO/meta tags, favicon, and font loading. |
| .github/workflows/webpack.yml | Adds CI workflow (currently webpack-based). |
| .env.example | Documents Grudge API/auth/CDN environment variables. |
| .env | Updates default env values for Grudge deployment. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Sorry, something went wrong.
| </div> | ||
| <div id="root" style="overflow: hidden"></div> | ||
|
|
||
| <link rel="stylesheet" href="public/style.css" /> |
| async function apiFetch(path, options = {}) { | ||
| const res = await fetch(`${API_BASE}${path}`, { | ||
| ...options, | ||
| headers: { ...authHeaders(), ...(options.headers || {}) }, | ||
| }); | ||
| if (!res.ok) { | ||
| const body = await res.json().catch(() => ({ error: res.statusText })); | ||
| throw new Error(body?.error || `API ${res.status}: ${path}`); | ||
| } | ||
| return res.json(); | ||
| } |
| // Clean URL | ||
| window.history.replaceState({}, '', window.location.pathname) |
| useEffect(() => { | ||
| if (connected) { | ||
| getCharacters().then(chars => { | ||
| setCharacters(chars) | ||
| if (chars.length > 0 && !activeCharacterId) { | ||
| setActiveCharacterId(chars[0].id) | ||
| localStorage.setItem('grudge_active_character', chars[0].id) | ||
| } | ||
| }) | ||
| } | ||
| }, [connected]) |
| #root[data-brandbar="true"] { | ||
| padding-top: var(--brand-bar-h); | ||
| } |
| { "name": "Idle", "description": "Standing idle", "location": "https://assets.grudge-studio.com/models/animations/sword-shield/sword and shield idle.glb" }, | ||
| { "name": "Walk", "description": "Walking forward", "location": "https://assets.grudge-studio.com/models/animations/sword-shield/sword and shield run.glb" }, | ||
| { "name": "Attack", "description": "Basic attack", "location": "https://assets.grudge-studio.com/models/animations/sword-shield/sword and shield attack.glb" } |
| Back | FazBrowse Home | New Git URL |
No description provided.