Character studio archive#281
Open
MolochDaGod wants to merge 4 commits into
Open
Conversation
…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.
Pull request overview
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:
- Introduces a Grudge backend API client and wires SSO auth + character loading into
AccountContext. - Adds a new top brand bar UI and Hydra-themed global styling.
- Updates deployment/build configuration (Vercel + GitHub Action) and refreshes public manifests/metadata.
Reviewed 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.
| </div> | ||
| <div id="root" style="overflow: hidden"></div> | ||
|
|
||
| <link rel="stylesheet" href="public/style.css" /> |
Comment on lines
+55
to
+65
| 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(); | ||
| } |
Comment on lines
+31
to
+32
| // Clean URL | ||
| window.history.replaceState({}, '', window.location.pathname) |
Comment on lines
+37
to
+47
| 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]) |
Comment on lines
+271
to
273
| #root[data-brandbar="true"] { | ||
| padding-top: var(--brand-bar-h); | ||
| } |
Comment on lines
+65
to
+67
| { "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" } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.