Skip to content

Character studio archive#281

Open
MolochDaGod wants to merge 4 commits into
M3-org:mainfrom
MolochDaGod:character-studio-archive
Open

Character studio archive#281
MolochDaGod wants to merge 4 commits into
M3-org:mainfrom
MolochDaGod:character-studio-archive

Conversation

@MolochDaGod

Copy link
Copy Markdown

No description provided.

MolochDaGod and others added 4 commits June 11, 2026 04:35
…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
Copilot AI review requested due to automatic review settings June 15, 2026 11:34

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.

Comment thread index.html
</div>
<div id="root" style="overflow: hidden"></div>

<link rel="stylesheet" href="public/style.css" />
Comment thread src/services/grudgeAPI.js
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 thread public/style.css
Comment on lines +271 to 273
#root[data-brandbar="true"] {
padding-top: var(--brand-bar-h);
}
Comment thread public/manifest.json
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" }
Comment thread public/manifest.json
Comment thread .github/workflows/webpack.yml
Comment thread .github/workflows/webpack.yml
Comment thread vercel.json
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.

2 participants