Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
20d9c5b
Add automerge workflow for pull requests
royalaid Jun 17, 2025
02c6037
Add automerge label to PR workflow
royalaid Jun 18, 2025
46362b2
fix autolabel permissions
royalaid Jun 18, 2025
67696ce
Add new workflow to label validated pull requests
royalaid Jun 18, 2025
1611e0a
Improve PR number fetching in label validation workflow
royalaid Jun 20, 2025
985c6cf
Refactor automerge workflow to trigger on successful completion of la…
royalaid Jun 20, 2025
245c92e
Update automerge workflow condition and enhance output messaging
royalaid Jun 20, 2025
43ec0dc
Swap automerge workflow to fetch PR number by commit SHA
royalaid Jun 21, 2025
5bb5305
Refactor automerge workflow to trigger on labeled pull requests
royalaid Jun 21, 2025
5ff0c52
Switch up automerge workflow to support check suite events and improv…
royalaid Jun 21, 2025
74111a9
Enhance automerge workflow to remove 'automerge' label on new commits…
royalaid Jun 21, 2025
4009beb
update automerge workflow
royalaid Jun 21, 2025
a37853c
rework automerge to wait for checks
royalaid Jun 21, 2025
7906b59
Refactor automerge workflow to trigger on successful workflow runs an…
royalaid Jun 21, 2025
21d107c
Refactor automerge and validation workflows for improved handling of …
royalaid Jun 21, 2025
abd0be6
Merge branch 'qidaoprotocol:main' into main
royalaid Jun 25, 2025
a3ac79e
Fix Snapshot submission formatting
royalaid Jun 23, 2025
f02d04d
wip Implementation for decentralized QIP workflow on Base
royalaid Jul 16, 2025
d820660
wip refactor to using vite
royalaid Jul 19, 2025
31a164f
fix qips not rendering, remove unneeded gatsby
royalaid Jul 19, 2025
94e5687
fixes typography issues
royalaid Jul 19, 2025
906a361
chore: remove QIPGovernance and add pause to QIPRegistry; update test…
royalaid Aug 12, 2025
9e1e1fe
chore: bump solc to 0.8.30, set evm_version shanghai; add lib to libs
royalaid Aug 12, 2025
e29546b
forge install: openzeppelin-contracts
royalaid Aug 12, 2025
dfb6051
chore(soldeer): manage OZ v5 and forge-std via Soldeer; remove git su…
royalaid Aug 12, 2025
6cc9c9e
chore: update QIPRegistry to use AccessControl and Pausable; modify d…
royalaid Aug 12, 2025
12913e8
chore: integrate Mai API for IPFS uploads, refactor IPFS service sele…
royalaid Aug 21, 2025
4e56486
chore: update environment configuration for Vite, add production depl…
royalaid Aug 22, 2025
20accec
chore: enhance IPFS upload functionality with optional group ID, upda…
royalaid Aug 22, 2025
729c9d5
chore: update IPFS service configuration, enhance QIP handling with n…
royalaid Aug 22, 2025
7196a15
chore: update TypeScript configuration, add batch migration script fo…
royalaid Aug 22, 2025
1ba92b4
chore: remove original migration script and impersonation deployment …
royalaid Aug 23, 2025
4bcb9a5
chore: update environment configuration for Snapshot integration, ref…
royalaid Aug 23, 2025
1fdf1cb
chore: remove forge-std submodule dependency
royalaid Aug 23, 2025
5407cab
chore: update local settings configuration to include additional Bash…
royalaid Aug 23, 2025
2c0595c
chore: add StatusUpdateComponent and StatusDiscrepancyIndicator for e…
royalaid Aug 23, 2025
a400594
chore: add forge-std submodule for enhanced testing capabilities
royalaid Aug 23, 2025
cb521dd
chore: update local settings configuration to include additional Bash…
royalaid Aug 23, 2025
fcab382
chore: enhance SnapshotSubmitter component with conditional validatio…
royalaid Aug 23, 2025
5b406ec
chore: enhance deployment and migration scripts with contract verific…
royalaid Aug 23, 2025
cb78a28
chore: update foundry configuration to disable optimizer, enable FFI,…
royalaid Aug 23, 2025
9227f46
chore: add nextQIPNumber function to QIPRegistry ABI, enhance useQIPD…
royalaid Aug 23, 2025
e751d16
chore: add @tanstack/react-query-devtools for enhanced debugging, ref…
royalaid Aug 23, 2025
0a21864
chore: improve prefetching logic in ProposalListItem, enhance error h…
royalaid Aug 23, 2025
d29fc75
chore: update GitHub Actions workflow for deployment by adding requir…
royalaid Aug 23, 2025
ca0a3c8
chore: refactor IPFS data handling in seed-ipfs-test-data script, enh…
royalaid Aug 23, 2025
a9c8e0e
chore: update .gitignore to include new build artifacts, add date-fns…
royalaid Aug 24, 2025
6a6e4f6
chore: update GitHub Actions workflow to build without base path for …
royalaid Aug 24, 2025
0a9a3bb
chore: add environment specification for GitHub Pages deployment in w…
royalaid Aug 24, 2025
7626c87
chore: disable QR modal in walletConnect configuration for Web3Provider
royalaid Aug 27, 2025
d687a0a
chore: add Mai API configuration for QIP fetching in environment file…
royalaid Sep 2, 2025
275caf0
chore: add Mai API URL configuration to GitHub Actions workflow for i…
royalaid Sep 2, 2025
24dfebc
chore: remove forge-std submodule and its configuration from the repo…
royalaid Sep 3, 2025
61d5a05
Merge branch 'main' into main
royalaid Sep 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions .claude/settings.local.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{
"permissions": {
"allow": [
"Bash(forge install:*)",
"Bash(./scripts/startAnvil.sh:*)",
"Bash(cp:*)",
"Bash(source .env)",
"Bash(forge script:*)",
"Bash(cast call:*)",
"Bash(cast code:*)",
"Bash(pkill:*)",
"Bash(find:*)",
"Bash(bun run:*)",
"Bash(chmod:*)",
"Bash(cat:*)",
"Bash(grep:*)",
"Bash(bun add:*)",
"WebFetch(domain:docs.pinata.cloud)",
"Bash(ipfs config:*)",
"Bash(curl:*)",
"Bash(forge clean:*)",
"Bash(forge build:*)",
"Bash(cast sig:*)",
"Bash(./scripts/start-local-dev.sh:*)",
"WebFetch(domain:github.com)",
"WebFetch(domain:snapshot.mirror.xyz)",
"Bash(lsof:*)",
"Bash(mkdir:*)",
"Bash(bun install:*)",
"Bash(rg:*)",
"Bash(timeout:*)",
"WebFetch(domain:ai-docs.pinata.cloud)",
"WebSearch",
"Bash(git submodule:*)",
"Bash(npx tsc:*)"
],
"deny": []
},
"outputStyle": "Explanatory"
}
60 changes: 60 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# ============================================
# DEVELOPMENT ENVIRONMENT TEMPLATE
# ============================================
# Copy this file to .env for local development
# For production, use .env.production.example

# ============================================
# PRIMARY CONFIGURATION (VITE)
# ============================================

# Blockchain Configuration
VITE_QIP_REGISTRY_ADDRESS=0xf5D5CdccEe171F02293337b7F3eda4D45B85B233
VITE_BASE_RPC_URL=http://localhost:8545
VITE_USE_TESTNET=false
VITE_WALLETCONNECT_PROJECT_ID=dummy-project-id

# IPFS Configuration (Mai API is primary method)
VITE_USE_MAI_API=true
VITE_IPFS_API_URL=http://localhost:3001/v2/ipfs-upload

# Mai API Configuration for QIP fetching
VITE_MAI_API_URL=https://staging-api.mai.finance

# Development Mode
VITE_LOCAL_MODE=true
VITE_USE_LOCAL_FILES=true

# Snapshot Configuration
VITE_SNAPSHOT_SPACE=qidao.eth

# ============================================
# FALLBACK IPFS PROVIDERS
# ============================================

# Local IPFS Node (optional)
VITE_USE_LOCAL_IPFS=false
VITE_LOCAL_IPFS_API=http://localhost:5001
VITE_LOCAL_IPFS_GATEWAY=http://localhost:8080

# Gateway for reading IPFS content
VITE_PINATA_GATEWAY=https://gateway.pinata.cloud

# Pinata group ID for organizing uploads (optional)
# Leave empty to not use groups
VITE_PINATA_GROUP_ID=

# ============================================
# DEPLOYMENT & SCRIPTS
# ============================================

# Development only - Use keystore for production!
# PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80

# Development only - Use keystore for production!
# PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80

# Store Basescan API key in ~/.foundry/foundry.toml:
# [etherscan]
# base = { key = "your_api_key_here" }

106 changes: 106 additions & 0 deletions .env.production.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
# ============================================
# PRODUCTION ENVIRONMENT CONFIGURATION
# ============================================
# Copy this file to .env.production and fill in your values
# NEVER commit .env.production to version control!

# ============================================
# DEPLOYMENT CONFIGURATION
# ============================================

# Deployment Methods (in order of security):
# 1. Keystore (RECOMMENDED): Use ./scripts/setup-keystore.sh to configure
# 2. Hardware Wallet: Use --ledger flag during deployment
# 3. Private Key (NOT RECOMMENDED): Only for testing, never commit!

# Optional: Hardware wallet address (if using Ledger)
LEDGER_ACCOUNT=

# Initial admin address (defaults to deployer if not set)
INITIAL_ADMIN=

# DEPRECATED - Use keystore or Foundry config instead
# PRIVATE_KEY=
# BASESCAN_API_KEY should be in ~/.foundry/foundry.toml

# ============================================
# NETWORK CONFIGURATION
# ============================================

# Base Mainnet RPC URL
# Free options:
# - https://mainnet.base.org
# - https://base.llamarpc.com
# Paid/Premium:
# - Alchemy: https://base-mainnet.g.alchemy.com/v2/YOUR_KEY
# - Infura: https://base-mainnet.infura.io/v3/YOUR_KEY
BASE_RPC_URL=https://mainnet.base.org

# ============================================
# CONTRACT ADDRESSES (Updated after deployment)
# ============================================

# QIP Registry contract address (will be set after deployment)
# Expected: 0x74a1EAA17Ce5418D24BE637C7d61f3732d4b0a27 (for deployer 0x93798Ef7e3A621d7C4EfF22eDA50B931fE57a3cF)
VITE_QIP_REGISTRY_ADDRESS=


# ============================================
# FRONTEND CONFIGURATION
# ============================================

# Base Network Configuration
VITE_BASE_RPC_URL=https://mainnet.base.org
VITE_USE_TESTNET=false
VITE_USE_LOCAL_FILES=false
VITE_LOCAL_MODE=false

# WalletConnect Project ID (required for production)
# Get from: https://cloud.walletconnect.com/
VITE_WALLETCONNECT_PROJECT_ID=

# Snapshot Space Configuration
# The Snapshot space to submit proposals to (e.g., qidao.eth)
VITE_SNAPSHOT_SPACE=qidao.eth

# ============================================
# IPFS CONFIGURATION
# ============================================

# Mai API Configuration (primary IPFS method)
VITE_USE_MAI_API=true
VITE_IPFS_API_URL=https://your-mai-api-endpoint.com/v2/ipfs-upload

# Mai API Configuration for QIP fetching
# The API provides 24x performance improvement (1 second vs 24.5 seconds)
# The API caches QIP data and serves it much faster than direct blockchain queries
VITE_MAI_API_URL=https://staging-api.mai.finance

# Fallback IPFS options (optional)
VITE_USE_LOCAL_IPFS=false
VITE_LOCAL_IPFS_API=
VITE_LOCAL_IPFS_GATEWAY=

# Gateway for reading IPFS content
VITE_PINATA_GATEWAY=https://gateway.pinata.cloud

# Pinata group ID for organizing QIP uploads (optional)
# Create a group at https://app.pinata.cloud/ipfs/groups
VITE_PINATA_GROUP_ID=


# ============================================
# GITHUB ACTIONS SECRETS
# ============================================
# After deployment, set these as GitHub Secrets:
# - QIP_REGISTRY_ADDRESS: The deployed contract address
# - BASE_RPC_URL: Your Base RPC endpoint
# - WALLETCONNECT_PROJECT_ID: Your WalletConnect project ID
# - PINATA_GATEWAY: Your Pinata gateway (if using)

# ============================================
# FOUNDRY CONFIGURATION
# ============================================
# Store Basescan API key in ~/.foundry/foundry.toml:
# [etherscan]
# base = { key = "your_api_key_here" }
59 changes: 0 additions & 59 deletions .github/workflows/PR-build.yml

This file was deleted.

36 changes: 0 additions & 36 deletions .github/workflows/author-validation.yml

This file was deleted.

Loading
Loading