Skip to content
Open

Main #22

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1162 commits
Select commit Hold shift + click to select a range
3539587
docs: update HYBRID-ARCHITECTURE-MIGRATION-PLAN - 100% complete
0xheycat Jan 4, 2026
74bbe12
feat: codebase cleanup - archive 35 unused routes
0xheycat Jan 5, 2026
228c1be
docs: correct cleanup metrics after verification
0xheycat Jan 5, 2026
751de8c
fix: restore archived routes with active runtime dependencies
0xheycat Jan 5, 2026
adfce5c
feat: systematic page-by-page codebase scan complete + restore leader…
0xheycat Jan 5, 2026
c3ee200
feat: create missing NFT upload-metadata endpoint + verify all routes…
0xheycat Jan 5, 2026
1b06338
refactor: archive unused home page components (3 files)
0xheycat Jan 5, 2026
b8d7878
refactor: archive unused dashboard components and lib (6 files)
0xheycat Jan 5, 2026
34c004c
refactor: archive unused profile lib (1 file)
0xheycat Jan 5, 2026
a5ef1db
refactor: archive unused guild component (1 file)
0xheycat Jan 5, 2026
faf238b
refactor: archive unused quest libs (2 files)
0xheycat Jan 5, 2026
aa803fa
cleanup: Archive 2 unused leaderboard lib files
0xheycat Jan 5, 2026
43e1081
cleanup: Archive 47 unused API routes
0xheycat Jan 5, 2026
696b375
fix: Update Node.js engine to stable 22.x version
0xheycat Jan 5, 2026
4f075bb
fix: Restore archived leaderboard files and update Next.js 16 config
0xheycat Jan 5, 2026
b16e88b
security: Add overrides for React server-dom CVE vulnerabilities
0xheycat Jan 5, 2026
6ef22f4
fix: Force webpack build to avoid Turbopack CSS parsing errors
0xheycat Jan 6, 2026
772ea8c
fix: Add missing lib/cache/compression.ts to git
0xheycat Jan 6, 2026
f55dd42
fix: Prevent Node.js util/zlib from bundling client-side
0xheycat Jan 6, 2026
0119320
fix: Separate client/server cache imports to fix build errors
0xheycat Jan 6, 2026
82aa135
fix: Resolve all TypeScript errors using existing infrastructure
0xheycat Jan 6, 2026
3055f65
fix: Handle Redis unavailability gracefully in admin cache-stats
0xheycat Jan 6, 2026
9c17402
fix: Add .dockerignore to reduce Docker image from 1.1GB
0xheycat Jan 6, 2026
06b4311
fix: Remove README.md exception from .dockerignore
0xheycat Jan 6, 2026
d1e194b
fix: Force exclude planning/ (7.4GB) and .next/ (2GB) from Docker image
0xheycat Jan 6, 2026
1c3fc5a
fix: Add .nixpacksignore to force file exclusions in Nixpacks
0xheycat Jan 6, 2026
3136276
fix: Add export-ignore to prevent large folders in git archives
0xheycat Jan 6, 2026
3c262d0
fix: Add Dockerfile with explicit file copying to bypass ignore file …
0xheycat Jan 6, 2026
2e1183b
fix: Remove non-existent modules/ and contracts/ from Dockerfile
0xheycat Jan 6, 2026
2dfae9f
fix: Remove gmeow-indexer from Dockerfile (separate service, not need…
0xheycat Jan 6, 2026
5b42f05
fix: Add scripts/ folder to Dockerfile
0xheycat Jan 6, 2026
85a20cd
fix: Skip environment validation during Next.js build phase
0xheycat Jan 6, 2026
e4b99fd
fix: Add build-time environment placeholders for Docker builds
0xheycat Jan 6, 2026
60962e2
fix: Replace deprecated serverComponentsExternalPackages with webpack…
0xheycat Jan 6, 2026
e85df86
fix: Add util polyfill to fix util.deprecate error in @reown/appkit
0xheycat Jan 6, 2026
4838260
fix: Use require.resolve('util') for correct webpack alias
0xheycat Jan 6, 2026
f75fa00
fix: Move util polyfill to fallback config for proper webpack resolution
0xheycat Jan 6, 2026
5583dea
fix: Create custom util shim to fix util.deprecate TypeError
0xheycat Jan 6, 2026
7c60363
chore: Add automated local testing script
0xheycat Jan 6, 2026
611dc32
feat: Restore /api/health endpoint from archive
0xheycat Jan 6, 2026
bcfe77e
test: Comprehensive local testing with proper port cleanup
0xheycat Jan 6, 2026
3525039
fix: Convert util shim from ES modules to CommonJS
0xheycat Jan 6, 2026
12cbe02
fix: Use .cjs extension for util shim to force CommonJS in ES module …
0xheycat Jan 7, 2026
ab44210
chore: Trigger Railway rebuild to deploy util.cjs fix
0xheycat Jan 7, 2026
dace648
Add Railway config to use Dockerfile builder
0xheycat Jan 7, 2026
0647ef2
fix: Dockerfile runner stage - copy node_modules and use next start i…
0xheycat Jan 7, 2026
9d10b0c
fix: Make util.deprecate defensive to handle non-function arguments +…
0xheycat Jan 7, 2026
16a0d04
fix: Use util npm package instead of custom shim for @reown/appkit co…
0xheycat Jan 7, 2026
4f79d59
fix: Remove trailing slash from util alias
0xheycat Jan 7, 2026
559fd8a
Force complete rebuild - Railway edge cache issue
0xheycat Jan 7, 2026
fc19012
Remove Railway configuration and switch to Vercel
0xheycat Jan 7, 2026
ae41c31
Fix vercel.json - remove invalid functions pattern
0xheycat Jan 7, 2026
947073d
Fix vercel.json build command - remove --prod flag that breaks build
0xheycat Jan 7, 2026
f632044
Simplify vercel.json - use defaults
0xheycat Jan 7, 2026
ed0b003
Add packageManager field to force pnpm usage on Vercel
0xheycat Jan 7, 2026
756e29d
Add barrel exports to fix Vercel module resolution
0xheycat Jan 7, 2026
3b73d94
Fix module imports: use barrel exports for contexts, contracts, and u…
0xheycat Jan 7, 2026
973f257
Fix .vercelignore: remove lib/ ignore that was blocking application code
0xheycat Jan 7, 2026
d3e1b0f
Fix build: remove broken cache module references, move unused admin c…
0xheycat Jan 7, 2026
939a3bf
Restore cache functionality: restore utils.ts cache exports, cache-st…
0xheycat Jan 7, 2026
2154b42
Fix gitignore and add missing cache exports (build tested successfully)
0xheycat Jan 7, 2026
033947c
Fix .vercelignore: change cache/ to /cache/ to prevent blocking lib/c…
0xheycat Jan 7, 2026
6bd7f6d
Disable Turbopack to fix util.deprecate error - webpack alias not sup…
0xheycat Jan 7, 2026
13ebb58
Fix Redis connection to use REDIS_URL for Upstash and mark leaderboar…
0xheycat Jan 7, 2026
da7e653
Force util polyfill with ProvidePlugin and require.resolve for @reown…
0xheycat Jan 7, 2026
d6c1c50
Add 'use server' directives to prevent Node.js cache files from clien…
0xheycat Jan 7, 2026
936e509
Fix server-only cache modules: use webpack aliases instead of 'use se…
0xheycat Jan 7, 2026
0d58f49
fix: prevent server-only compression.ts bundling to client
0xheycat Jan 7, 2026
4445ffa
fix: replace localhost:4350 with production Subsquid cloud URL
0xheycat Jan 8, 2026
f6a2ae5
fix: remove localhost fallback from subsquid client - require cloud URL
0xheycat Jan 8, 2026
b0ad6a5
fix: resolve Vercel build errors and Redis shutdown issues
0xheycat Jan 8, 2026
39b8956
fix: add runtime exports to onchain-stats API route
0xheycat Jan 8, 2026
7539862
feat: add missing API routes to git tracking
0xheycat Jan 8, 2026
564cee1
chore: remove test dependencies and clean install
0xheycat Jan 8, 2026
684be39
fix: add nodejs runtime to user API routes and remove DOMPurify
0xheycat Jan 8, 2026
ad9e9c8
fix: remove final localhost fallback in subsquid integrations client
0xheycat Jan 8, 2026
8230cbe
fix: convert Subsquid timestamp queries from DateTime to BigInt
0xheycat Jan 8, 2026
ce0de9b
docs: add production fix summary for Jan 8 2026
0xheycat Jan 8, 2026
96fd68e
fix: lazy-load Subsquid and Redis clients to prevent build-time errors
0xheycat Jan 8, 2026
05cc5f0
fix: make Upstash Redis optional for build phase
0xheycat Jan 8, 2026
bbf6e19
fix: make all runtime secrets optional for build phase
0xheycat Jan 8, 2026
5151c06
fix: replace totalXP with totalScore from ScoringModule
0xheycat Jan 8, 2026
264c748
docs: update audit with resolution status
0xheycat Jan 8, 2026
0eac51a
fix(subsquid): correct DateTime/BigInt parameter types in analytics q…
0xheycat Jan 8, 2026
5a6ab34
fix(production): resolve guild page errors and restore referral analy…
0xheycat Jan 8, 2026
8377729
docs: add Session 2 fixes to production error audit
0xheycat Jan 8, 2026
328a155
fix(guild): restore required Supabase metadata and add onClick handler
0xheycat Jan 8, 2026
0d3dd7b
docs: add Session 3 fixes (guild clickability + Supabase)
0xheycat Jan 8, 2026
32e6a4b
feat(guild): redesign Create Guild button with modern professional UI
0xheycat Jan 8, 2026
8f9002a
docs: add Session 4 UI/UX improvements (Create Guild button)
0xheycat Jan 8, 2026
3d88644
fix(guild): replace client-side Supabase with API route for guild met…
0xheycat Jan 8, 2026
5b640b1
docs: add Session 5 Supabase client-side fix documentation
0xheycat Jan 8, 2026
f7981ad
fix(auth): replace client-side Supabase with API routes for wallet sync
0xheycat Jan 8, 2026
cf26d54
docs: add Session 6 AuthProvider wallet sync fix documentation
0xheycat Jan 8, 2026
be4b598
fix: resolve 17 TypeScript errors in wallet API and leaderboard
0xheycat Jan 8, 2026
79b475b
docs: add Session 7 TypeScript errors fix documentation
0xheycat Jan 8, 2026
d094d82
fix: update wallet API to use Next.js 16 async params pattern
0xheycat Jan 8, 2026
1024539
docs: add Session 8 API testing and Subsquid schema audit
0xheycat Jan 8, 2026
6ced2bc
fix: query Subsquid directly for guild stats (guild_events table empty)
0xheycat Jan 8, 2026
7e20dc8
docs: add Session 9 guild schema fix summary
0xheycat Jan 8, 2026
8ec9d7b
fix: use existing getGuildStats function with treasuryPoints schema
0xheycat Jan 8, 2026
1fd1e5c
docs: Session 9 production verification complete ✅
0xheycat Jan 8, 2026
8182e9e
fix: dashboard GraphQL query schema errors
0xheycat Jan 8, 2026
155b25e
docs: Session 10 dashboard GraphQL fixes complete
0xheycat Jan 8, 2026
dfae786
docs: Session 10 production verification complete ✅
0xheycat Jan 8, 2026
44e270e
fix: resolve GraphQL timeouts + add notification read API
0xheycat Jan 8, 2026
3758701
fix: badge images webp->png + query badge_templates for real metadata
0xheycat Jan 8, 2026
7941e97
fix: use Subsquid on-chain guild names as source of truth
0xheycat Jan 8, 2026
1424f3d
fix: restore 4 missing guild API endpoints (is-member, metadata, even…
0xheycat Jan 8, 2026
520949a
docs: session 11 part 3 - missing guild endpoints resolution
0xheycat Jan 8, 2026
5f5b9df
fix: restore all missing guild endpoints + fix metadata API 500 error
0xheycat Jan 8, 2026
01186b9
docs: session 11 part 4 - complete guild API restoration
0xheycat Jan 8, 2026
f748cc8
fix: add defensive error handling to guild metadata API
0xheycat Jan 8, 2026
646ee5d
fix: guild detail API - change .single() to .maybeSingle() for guild_…
0xheycat Jan 8, 2026
47b78fc
fix: guild metadata API - correct GraphQL variable name and response …
0xheycat Jan 8, 2026
eabb261
fix: force Vercel rebuild for analytics endpoint
0xheycat Jan 8, 2026
20b0354
fix: analytics API - change .single() to .maybeSingle() for guild_met…
0xheycat Jan 8, 2026
df2fe60
fix: pass isOwner prop to GuildSettings to show settings for guild owner
0xheycat Jan 9, 2026
238c61e
fix: get user role directly from is-member API instead of members API
0xheycat Jan 9, 2026
0b937cc
fix: Query Subsquid GraphQL directly for guild members (Supabase tabl…
0xheycat Jan 9, 2026
8e7135f
fix: Use fetch instead of Apollo Client for Subsquid GraphQL (fixes h…
0xheycat Jan 9, 2026
33e7ef2
fix: Hybrid Subsquid+Supabase - on-chain scoring (level/rank/multipli…
0xheycat Jan 9, 2026
c62ac1c
fix: ALL scoring data from Subsquid on-chain (viralPoints, guildPoint…
0xheycat Jan 9, 2026
f1cd07f
fix: Use Apollo Client infrastructure (caching, rate limiting) instea…
0xheycat Jan 9, 2026
a807a24
fix: Guild detail API now uses Subsquid on-chain data (drops Supabase…
0xheycat Jan 9, 2026
02618d3
fix: Guild detail API now returns pointsContributed instead of points…
0xheycat Jan 9, 2026
ba2d08f
fix: Guild analytics now uses Subsquid on-chain data instead of empty…
0xheycat Jan 9, 2026
bce8133
fix: Correct GraphQL query for GuildEvent (user is String, not object)
0xheycat Jan 9, 2026
f5b3beb
fix: Move wallet cache to ProfileDropdown and fetch streak/points fro…
0xheycat Jan 9, 2026
7481fd7
fix: Add id field to Apollo Client query (required for cache normaliz…
0xheycat Jan 9, 2026
643afe5
feat: Add claim request form for all guild members
0xheycat Jan 9, 2026
f1c7e4f
fix: Show deposit/claim forms always, disable when not member + add d…
0xheycat Jan 9, 2026
9903309
fix: Show treasury button to all connected wallets, not just admins
0xheycat Jan 9, 2026
5d9556b
feat: Remove debug info, restrict treasury to members only
0xheycat Jan 9, 2026
32f127d
feat: Add professional TreasuryInfo component with benefits and workf…
0xheycat Jan 9, 2026
f3662ac
feat: Add guild activity logging and seed script
0xheycat Jan 9, 2026
7ea5b23
fix: Guild activity feed now reads on-chain events from Subsquid
0xheycat Jan 9, 2026
64bc18b
fix: TypeScript errors - import logGuildEvent, fix CheckCircle icon, …
0xheycat Jan 9, 2026
168b897
fix: Leave guild now actually writes to blockchain - critical bug fix
0xheycat Jan 9, 2026
d9f97a9
fix: Re-check membership from blockchain after leave guild transaction
0xheycat Jan 9, 2026
254deac
Fix member list not refreshing after leave guild
0xheycat Jan 9, 2026
5f67609
Add optimistic member filtering after leave guild
0xheycat Jan 9, 2026
f4d615b
Update ProfileDropdown colors to match NotificationBell styling
0xheycat Jan 9, 2026
52faf65
Update navigation: replace Home with Guild, add Referral
0xheycat Jan 9, 2026
6b6e1a2
Add Guild API audit report and fix plan
0xheycat Jan 9, 2026
742cdf9
Fix 1: Remove redundant 'name' field from guild_metadata queries
0xheycat Jan 9, 2026
4bc9638
Fix 2: Remove guild_stats_cache queries - use Subsquid data
0xheycat Jan 9, 2026
96f20dc
Fix 3: Remove guild_analytics_cache - use Subsquid as single source o…
0xheycat Jan 9, 2026
20fde49
Database cleanup: Drop deprecated guild tables and update API routes
0xheycat Jan 9, 2026
0ba6fdb
Add database cleanup completion documentation
0xheycat Jan 9, 2026
392dd2c
Fix: Clean up all references to dropped cache tables
0xheycat Jan 9, 2026
4930a02
Fix: Update types to match database schema after dropping guild cache…
0xheycat Jan 10, 2026
bc5e5d7
Fix: Guild members showing stale data when member leaves
0xheycat Jan 10, 2026
6e5edf4
Critical Fix: Filter out members who left using guild_events
0xheycat Jan 10, 2026
caf8119
Fix: Use Guild.totalMembers (on-chain truth) to filter stale members
0xheycat Jan 10, 2026
c111c48
Fix: Migrate XP overlay to on-chain ScoringModule metrics
0xheycat Jan 10, 2026
4dd38b3
feat: migrate XP overlays to on-chain ScoringModule data
0xheycat Jan 10, 2026
3c53535
feat: implement referral acceptance flow with validation and UI
0xheycat Jan 10, 2026
2a0901a
fix: correct averageTimeToConvert type mismatch in analytics
0xheycat Jan 10, 2026
c96da9b
fix: force Number() conversion for analytics metrics
0xheycat Jan 10, 2026
e91e3a7
fix: ensure analytics API returns explicit number types
0xheycat Jan 10, 2026
3320e5a
fix: replace mock analytics with real Subsquid referral data
0xheycat Jan 10, 2026
0ec7be9
fix: replace OnChainHub hardcoded colors with Tailwind dark mode classes
0xheycat Jan 10, 2026
1245d01
fix: replace OnchainHub undefined CSS classes with Tailwind dark mode
0xheycat Jan 10, 2026
792e4f7
fix: replace OnchainStatsV2 hardcoded colors with Tailwind dark mode …
0xheycat Jan 10, 2026
6075671
fix: replace OnchainStatsV3 hardcoded colors with Tailwind dark mode …
0xheycat Jan 10, 2026
f989f9a
fix: replace purple/indigo colors with neutral gray palette
0xheycat Jan 10, 2026
7b6cf4e
fix: replace dashboard colored gradients with neutral gray theme
0xheycat Jan 10, 2026
30190aa
fix: ensure consistent gray color palette across all dashboard compon…
0xheycat Jan 11, 2026
0d60ab3
feat: add comprehensive Farcaster frames sharing integration
0xheycat Jan 11, 2026
51719eb
docs: add frames visual guide with UI/UX specifications
0xheycat Jan 11, 2026
46bbf0d
feat: complete leaderboard frame integration
0xheycat Jan 11, 2026
55e0890
feat: leaderboard hybrid architecture - Supabase + Subsquid
0xheycat Jan 11, 2026
d2a73b9
docs: add leaderboard production summary
0xheycat Jan 11, 2026
fd0217d
feat(leaderboard): integrate with cached Neynar profile service
0xheycat Jan 11, 2026
3f6d499
docs(leaderboard): add complete integration summary
0xheycat Jan 11, 2026
1988fe4
feat(leaderboard): integrate multi-wallet FID lookup from user_profiles
0xheycat Jan 11, 2026
ab140ce
fix: resolve 14 TypeScript errors across codebase
0xheycat Jan 11, 2026
e2d0d2f
fix(leaderboard): resolve FID enrichment - match wallet_address AND v…
0xheycat Jan 11, 2026
c57ba44
feat(leaderboard): add Neynar profile enrichment for @username and pfp
0xheycat Jan 11, 2026
c117bf6
fix(leaderboard): remove double division on levelPercent - already de…
0xheycat Jan 11, 2026
4590992
fix(leaderboard): add rank_change field with default value 0 to preve…
0xheycat Jan 11, 2026
23bba6b
chore: trigger rebuild for rank_change deployment
0xheycat Jan 11, 2026
df7f6ca
fix(leaderboard): implement category-based sorting for all 9 tabs
0xheycat Jan 11, 2026
fcffe69
docs(leaderboard): add comprehensive category enhancement roadmap
0xheycat Jan 11, 2026
2c34a2a
feat(oracle): implement viral XP deposit pipeline
0xheycat Jan 11, 2026
9a55201
docs: add implementation summary to leaderboard fix documentation
0xheycat Jan 11, 2026
b572e55
feat(oracle): viral XP pipeline LIVE and tested ✅
0xheycat Jan 11, 2026
080b56b
docs: update viral XP status - oracle tested, indexer blocker found, …
0xheycat Jan 11, 2026
e056899
fix(indexer): read score components from contract state in StatsUpdat…
0xheycat Jan 11, 2026
ce30719
docs: indexer fix implementation complete - added contract state read…
0xheycat Jan 11, 2026
b5f482c
docs: add comprehensive indexer redeploy verification steps
0xheycat Jan 11, 2026
a4e2c3a
fix(indexer): decode eth_call results before converting to BigInt
0xheycat Jan 11, 2026
403ad66
feat: Add automated oracle deposits via GitHub Actions
0xheycat Jan 12, 2026
a87cfad
fix: use --no-frozen-lockfile for GitHub Actions
0xheycat Jan 12, 2026
c3419a0
fix: add Supabase env vars to oracle workflows
0xheycat Jan 12, 2026
8eb3530
feat(oracle): add guild bonus and test oracle scripts
0xheycat Jan 12, 2026
036e543
feat(oracle): add referral bonus pipeline
0xheycat Jan 12, 2026
bedf6fe
docs: clarify streak and badge prestige calculation approaches
0xheycat Jan 12, 2026
33f7977
docs: complete oracle automation system documentation
0xheycat Jan 12, 2026
6d3718d
feat: complete oracle audit tables and type definitions
0xheycat Jan 12, 2026
c31dd7e
test: verify all 3 oracle pipelines working
0xheycat Jan 12, 2026
232cd4c
fix: resolve 40 TypeScript errors and verify all 9 leaderboard catego…
0xheycat Jan 12, 2026
fb553d4
docs: clarify category sorting behavior - identical data produces sam…
0xheycat Jan 12, 2026
59e95ca
fix: make all 9 category tabs accessible on desktop with flex-wrap
0xheycat Jan 13, 2026
1ae80ea
feat: professional treasury claim system for guild leaders
0xheycat Jan 13, 2026
2bf5edc
fix: add missing rank-tier API endpoint
0xheycat Jan 13, 2026
34b682d
docs: add rank-tier API endpoint fix to leaderboard documentation
0xheycat Jan 13, 2026
64ed0c5
test: production leaderboard testing results & live activation (Jan 23)
0xheycat Jan 23, 2026
ccaadf5
fix: github actions cron failures - update pnpm v2→v4, fix env vars, …
0xheycat Jan 23, 2026
dd03f81
feat: add miniapp auto-connect debug page and wallet fixes for Farcas…
0xheycat Jan 24, 2026
57878a1
fix: add mobile Farcaster miniapp detection fallback (no-referrer case)
0xheycat Jan 24, 2026
71043f5
fix: add mobile WebView detection (bypass iframe check for Farcaster …
0xheycat Jan 24, 2026
0191fd8
debug: improve wallet connection logging and debug page with real-tim…
0xheycat Jan 24, 2026
54b56c7
fix: force-include Farcaster connector when miniapp detected and add …
0xheycat Jan 24, 2026
20c22af
debug: add temporary debug link on homepage and enhanced connector lo…
0xheycat Jan 24, 2026
77daab4
fix: add Farcaster SDK direct fallback for connection when wagmi conn…
0xheycat Jan 24, 2026
b2fcd4d
fix: improve ConnectWallet logging and add SDK fallback for Farcaster
0xheycat Jan 24, 2026
12199d6
refactor: extract Farcaster auto-connect to dedicated hook with bette…
0xheycat Jan 24, 2026
ae3cd72
fix: use farcasterMiniApp() directly when connector not in list
0xheycat Jan 24, 2026
0e01c78
fix: restore neynar webhook route for bot auto-reply functionality
0xheycat Jan 24, 2026
66f74a0
docs: add quick webhook setup guide for bot auto-reply
0xheycat Jan 24, 2026
d5119dc
fix: improve progression charts error handling and retry logic
0xheycat Jan 24, 2026
53aca26
fix: mobile UX improvements and bot intent detection
0xheycat Jan 24, 2026
72f05d5
Fix: Convert frame routes to direct handler calls for Farcaster OG ta…
0xheycat Jan 24, 2026
9a48ef0
docs: Add frame OG rendering fix summary
0xheycat Jan 24, 2026
ded39fb
Fix: Convert referral frame route to direct handler and add frame sha…
0xheycat Jan 24, 2026
c2d00d9
docs: Add comprehensive referral frame sharing fix summary
0xheycat Jan 24, 2026
ce76980
UI: Redesign FAQ section with modern professional styling
0xheycat Jan 24, 2026
0e735e4
docs: Add comprehensive FAQ section redesign documentation
0xheycat Jan 24, 2026
4b6e045
fix: frame routes now render OG images correctly for all endpoints
0xheycat Jan 24, 2026
6064fe0
fix: comparison modal mobile layout issues
0xheycat Jan 24, 2026
1f4f1cf
fix: add missing og:url meta tag to all frame routes
0xheycat Jan 24, 2026
d7eeb46
Fix frame JSON version: 'next' → '1' per Farcaster vNext spec
0xheycat Jan 24, 2026
309fb44
Resolve wallet address by FID before fetching hybrid stats in frame h…
0xheycat Jan 29, 2026
d1f36ec
Fix frame routes to resolve wallet address by FID (stats, badge endpo…
0xheycat Jan 29, 2026
fc31772
docs: add frame fixes completion report - all frames now showing real…
0xheycat Jan 29, 2026
78fc657
refactor: organize documentation - move 120 files from root to /docs …
0xheycat Jan 30, 2026
993ce96
♻️ chore: remove test files, logs, and unnecessary documentation for …
0xheycat Mar 27, 2026
23cbfd1
fix: resolve stylelint-a11y peer dependency and enforce pnpm for Verc…
0xheycat Mar 27, 2026
674308c
chore: add Vercel environment variables from all environments
0xheycat Mar 27, 2026
fed299f
security: remove private environment files from git tracking
0xheycat Mar 27, 2026
7b88b1e
feat: pair development with Alice Developer
0xheycat Mar 27, 2026
cb7aa8b
feat: pair development with Bob Coder
0xheycat Mar 27, 2026
42f2c9e
feat: pair development with Carol Engineer
0xheycat Mar 27, 2026
982c76a
Add talentapp project verification meta tag to homepage
0xheycat May 25, 2026
992adbf
security: fix critical auth bypass, CORS, and smart contract vulnerab…
0xheycat May 26, 2026
0d56e3b
fix: resolve progression charts and activity loading errors on dashboard
0xheycat May 26, 2026
8b21062
feat: add Supabase SSR client setup
0xheycat May 26, 2026
b12fd88
fix: resolve critical UX issues across guild pages
0xheycat May 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
69 changes: 69 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# Dependencies (will be installed during build)
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# Build artifacts (generated during deployment)
.next/
out/
dist/
build/
.vercel/

# Development files
.git/
.gitignore
.env*.local
.vscode/
.idea/
*.swp
*.swo
*~

# Testing
coverage/
.nyc_output/
*.log

# Archives and cleanup
_archive/
backstop_data/
playwright-report/
test-results/

# Documentation and planning (HUGE - 7.4GB!)
*.md
planning/
docs-archive/

# Cache directories
.cache/
cache/
.turbo/

# OS files
.DS_Store
Thumbs.db

# Large static assets not needed
planning/template
*.zip
*.fig
*.mmdb
*.sketch

# Contract artifacts
lib/openzeppelin-contracts/.git

# Railway and deployment
.railway
railway-set-env.sh
deploy-modules.sh

# Local environment
.env.local
.env.development.local
.env.test.local
.env.production.local
255 changes: 255 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,255 @@
# ============================================================================
# Gmeowbased Environment Configuration
# ============================================================================
# Copy this file to .env.local and fill in your values
# NEVER commit .env.local to version control

# ============================================================================
# Required: Application URLs
# ============================================================================
NEXT_PUBLIC_BASE_URL=http://localhost:3000
NEXT_PUBLIC_FRAME_ORIGIN=http://localhost:3000
MAIN_URL=http://localhost:3000

# ============================================================================
# Required: Supabase Configuration
# ============================================================================
# Get these from: https://app.supabase.com/project/_/settings/api
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SECRET_TOKEN=your-secret-token

# Supabase Storage Buckets (must exist in dashboard)
SUPABASE_BADGE_BUCKET=badges
# Note: Also create 'avatars' and 'covers' buckets for profile uploads

# Supabase Database Configuration
SUPABASE_LEADERBOARD_TABLE=leaderboard
SUPABASE_LEADERBOARD_VIEW_CURRENT=leaderboard_current
SUPABASE_BADGE_TEMPLATE_TABLE=badge_templates
SUPABASE_LEADERBOARD_SEASON_KEY=season_1
SUPABASE_MAX_RETRIES=3
SUPABASE_TIMEOUT_MS=5000

# Supabase Database Columns
SUPABASE_LEADERBOARD_RANK_COLUMN=rank
SUPABASE_LEADERBOARD_GLOBAL_COLUMN=global_score
SUPABASE_LEADERBOARD_CHAIN_COLUMN=chain_score
SUPABASE_LEADERBOARD_SEASON_COLUMN=season_score
SUPABASE_LEADERBOARD_UPDATED_COLUMN=updated_at

# ============================================================================
# Required: Neynar API (Farcaster)
# ============================================================================
# Get API key from: https://neynar.com
NEXT_PUBLIC_NEYNAR_API_KEY=your-neynar-api-key
NEYNAR_API_KEY=your-neynar-api-key
NEXT_PUBLIC_NEYNAR_CLIENT_ID=your-client-id
NEYNAR_WEBHOOK_SECRET=your-webhook-secret
NEXT_PUBLIC_NEYNAR_WEBHOOK_SECRET=your-webhook-secret

# Neynar Account Configuration
NEYNAR_BOT_FID=your-bot-fid
NEYNAR_OWNER_FID=your-owner-fid
NEYNAR_HEYCAT_FID=your-heycat-fid
HEY_CAT_FID=your-heycat-fid
NEYNAR_BOT_SIGNER_UUID=your-signer-uuid
NEYNAR_SIGNER_UUID=your-signer-uuid
NEYNAR_SERVER_WALLET_ID=your-wallet-id

# Neynar API Endpoints
NEXT_PUBLIC_NEYNAR_GLOBAL_API=https://api.neynar.com/v2
NEYNAR_GLOBAL_API=https://api.neynar.com/v2
NEYNAR_WEBHOOK_SECRET_VIRAL=your-viral-webhook-secret

# ============================================================================
# Required: Upstash (Redis Caching & Rate Limiting)
# ============================================================================
# Get from: https://console.upstash.com
# Redis - For caching Neynar API responses
UPSTASH_REDIS_REST_URL=https://your-redis.upstash.io
UPSTASH_REDIS_REST_TOKEN=your-redis-token
REDIS_URL=redis://default:your-redis-token@your-redis.upstash.io:6379

# Redis KV - For rate limiting
KV_REST_API_URL=https://your-kv.upstash.io
KV_REST_API_TOKEN=your-kv-token

# Upstash Vector (optional)
UPSTASH_VECTOR_REST_URL=https://your-vector.upstash.io
UPSTASH_VECTOR_REST_TOKEN=your-vector-token

# ============================================================================
# Required: Blockchain Configuration
# ============================================================================
# Base Chain (Primary)
NEXT_PUBLIC_RPC_BASE=https://mainnet.base.org
RPC_BASE=https://mainnet.base.org

# Contract Addresses
NEXT_PUBLIC_GM_BASE_CORE=0x...
NEXT_PUBLIC_GM_BASE_GUILD=0x...
NEXT_PUBLIC_GM_BASE_NFT=0x...
NEXT_PUBLIC_GM_BASE_PROXY=0x...
NEXT_PUBLIC_BADGE_CONTRACT_BASE=0x...

# Chain Start Blocks (for event indexing)
CHAIN_START_BLOCK_BASE=1234567
CHAIN_START_BLOCK_ARBITRUM=1234567
CHAIN_START_BLOCK_OP=1234567
CHAIN_START_BLOCK_CELO=1234567
CHAIN_START_BLOCK_INK=1234567
CHAIN_START_BLOCK_UNICHAIN=1234567

# Additional Chain RPCs
NEXT_PUBLIC_RPC_OP=https://mainnet.optimism.io
NEXT_PUBLIC_RPC_CELO=https://forno.celo.org
NEXT_PUBLIC_RPC_INK=https://rpc-gel-sepolia.inkonchain.com
NEXT_PUBLIC_RPC_UNICHAIN=https://sepolia.unichain.org
RPC_OP=https://mainnet.optimism.io
RPC_CELO=https://forno.celo.org
RPC_INK=https://rpc-gel-sepolia.inkonchain.com
RPC_UNICHAIN=https://sepolia.unichain.org

# Oracle Configuration
ORACLE_PRIVATE_KEY=0x...

# ============================================================================
# Required: Admin & Authentication
# ============================================================================
ADMIN_JWT_SECRET=your-jwt-secret-min-32-chars
ADMIN_TOTP_SECRET=your-totp-secret
ADMIN_ACCESS_CODE=your-admin-code

# Maintenance Mode
MAINTENANCE_ENABLED=false
MAINTENANCE_PASSWORD=your-maintenance-password
MAINTENANCE_TOKEN=your-maintenance-token

# ============================================================================
# Optional: External APIs
# ============================================================================
# Coinbase Developer Platform
COINBASE-API_KEY_ID=your-coinbase-key-id
COINBASE_API_SECRET=your-coinbase-secret
NEXT_PUBLIC_ONCHAINKIT_API_KEY=your-onchainkit-key
ONCHAINKIT_API_KEY=your-onchainkit-key
NEXT_PUBLIC_ONCHAINKIT_APP_NAME=Gmeowbased
NEXT_PUBLIC_ONCHAINKIT_LOGO=https://...

# WalletConnect
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your-walletconnect-id

# Alchemy
ALCHEMY_API_KEY=your-alchemy-key

# Block Explorers
ETHERSCAN_API_KEY=your-etherscan-key
NEXT_PUBLIC_BASESCAN_API_KEY=your-basescan-key

# DeBank
DEBANK_API_KEY=your-debank-key

# Talent Protocol
NEXT_PUBLIC_TALENT_API_KEY=your-talent-key
TALENT_API_KEY=your-talent-key

# ============================================================================
# Optional: Task Queues & Webhooks
# ============================================================================
# Upstash QStash (for scheduled tasks)
QSTASH_TOKEN=your-qstash-token
QSTASH_CURRENT_SIGNING_KEY=your-signing-key
QSTASH_NEXT_SIGNING_KEY=your-next-signing-key
QSTASH_URL=https://qstash.upstash.io

# Webhook Secrets
WEBHOOK_SECRET=your-webhook-secret
BADGE_MINT_WEBHOOK_URL=https://your-app.com/api/webhook/badge-mint
GMEOW_BADGE_ADVENTURE_SECRET=your-adventure-secret
CRON_SECRET=your-cron-secret

# ============================================================================
# Optional: Badge Minting Configuration
# ============================================================================
MINT_BATCH_SIZE=10
MINT_INTERVAL_MS=5000
MINT_MAX_RETRIES=3

# ============================================================================
# Optional: Agent Configuration
# ============================================================================
NEXT_PUBLIC_AGENT_EVENTS_INITIAL_LIMIT=50
NEXT_PUBLIC_AGENT_EVENTS_DELTA_LIMIT=10
NEXT_PUBLIC_AGENT_EVENTS_POLL_MS=30000

# ============================================================================
# Optional: UI Assets
# ============================================================================
SITE_BG_URL=https://...
SITE_FONT_URL=https://...
OG_BG_IMG_DEFAULT=https://...
OG_BG_IMG_BRONZE=https://...
OG_BG_IMG_GOLD=https://...
OG_BG_IMG_PLATINUM=https://...

# ============================================================================
# Optional: Admin Configuration
# ============================================================================
NEXT_PUBLIC_GM_ADMIN_ADDRESSES=0x...,0x...

# ============================================================================
# PostgreSQL (if using external Postgres instead of Supabase)
# ============================================================================
PGUSER=postgres
PGPASSWORD=your-password
PGDATABASE=gmeowbased

# ============================================================================
# Development Notes
# ============================================================================
# 1. Supabase Storage Buckets Required:
# - avatars (for profile avatars)
# - covers (for profile cover images)
# - badges (for badge images)
# Create these in Supabase Dashboard > Storage
#
# 2. Storage Policies:
# Buckets should allow:
# - Public read access
# - Authenticated upload/update
#
# 3. Redis Caching:
# Optional but recommended for production
# App gracefully degrades without Redis
#
# 4. Rate Limiting:
# Requires Upstash KV (KV_REST_API_URL/TOKEN)
# Without it, rate limiting is disabled
#
# 5. Neynar API:
# Required for Farcaster integration
# Free tier available at https://neynar.com

# ============================================================================
# Optional: Redis Caching (Phase 7 Priority 2)
# ============================================================================
# Local Development: Use Docker Compose redis service
# Production: Use managed Redis (Upstash, Redis Cloud, ElastiCache)
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=0

# Admin API key for cache management
ADMIN_API_KEY=your-admin-api-key-here

# ============================================================================
# Cron Jobs (Vercel)
# ============================================================================
# Secret token for authenticating cron job requests
# Generate with: openssl rand -base64 32
CRON_SECRET=your-cron-secret-here
17 changes: 17 additions & 0 deletions .env.local.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Coinbase Developer Platform
NEXT_PUBLIC_ONCHAINKIT_API_KEY=your_onchainkit_api_key_here

# WalletConnect Project ID (get from https://cloud.walletconnect.com)
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your_walletconnect_project_id_here

# RPC URLs (optional - defaults provided)
NEXT_PUBLIC_RPC_BASE=https://mainnet.base.org
NEXT_PUBLIC_RPC_OPTIMISM=https://opt-mainnet.g.alchemy.com/v2/demo
NEXT_PUBLIC_RPC_CELO=https://forno.celo.org

# Neynar API Key (for Farcaster data)
NEXT_PUBLIC_NEYNAR_API_KEY=your_neynar_api_key_here

# Database (Supabase)
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url_here
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key_here
9 changes: 5 additions & 4 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
next-env.d.ts
Planing/**
planning/templates/gmeow2/**
planning/templates/gmeow3/**
node_modules
.next
planning/
*.config.js
*.config.ts
18 changes: 16 additions & 2 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
{
"extends": [
"next/core-web-vitals",
"next/typescript"
"next/typescript",
"plugin:tailwindcss/recommended"
],
"plugins": ["tailwindcss"],
"ignorePatterns": [
"__tests__/**/*",
"*.test.ts",
"*.test.tsx",
"*.spec.ts",
"*.spec.tsx",
"e2e/**/*",
"coverage/**/*"
],
"rules": {
"@typescript-eslint/no-explicit-any": "off",
Expand All @@ -16,6 +27,9 @@
"@typescript-eslint/prefer-readonly": "off",
"prefer-const": "warn",
"react-hooks/exhaustive-deps": "warn",
"react/jsx-no-comment-textnodes": "off"
"react/jsx-no-comment-textnodes": "off",
"tailwindcss/classnames-order": "warn",
"tailwindcss/no-custom-classname": "off",
"tailwindcss/no-contradicting-classname": "off"
}
}
9 changes: 9 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Tell git to exclude these paths from archives
planning/ export-ignore
_archive/ export-ignore
.next/ export-ignore
backstop_data/ export-ignore
test-results/ export-ignore
playwright-report/ export-ignore
*.md export-ignore
*.log export-ignore
Loading
Loading