Skip to content

feat: support v3.0.0 contracts with updatable proposals#962

Merged
dan13ram merged 54 commits into
stagingfrom
feat/updatable-proposals
Jul 21, 2026
Merged

feat: support v3.0.0 contracts with updatable proposals#962
dan13ram merged 54 commits into
stagingfrom
feat/updatable-proposals

Conversation

@dan13ram

@dan13ram dan13ram commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator

Upgrade flow looks like this:

  1. Show upgrade is available
image
  1. Upgrade button opens Modal for choosing updatable time period
image
  1. Upgrade proposal is created

example: https://testnet-nouns-builder-ksk59jy0y-nouns-builder.vercel.app/dao/sepolia/0xb26f4c39d5e31cf58a51136ac62d29e45a3eb01d/vote/3?tab=details

@vercel

vercel Bot commented Jun 3, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
testnet-nouns-builder Ready Ready Preview Jul 21, 2026 11:38am
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
nouns-builder Ignored Ignored Jul 21, 2026 11:38am

Request Review

@coderabbitai

coderabbitai Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 261 files, which is 161 over the limit of 100.

To get a review, narrow the scope:
• coderabbit review --committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: bcef6e56-fe81-4643-be5f-f77f465436e2

📥 Commits

Reviewing files that changed from the base of the PR and between 58e0311 and 588e5d5.

⛔ Files ignored due to path filters (2)
  • packages/sdk/src/subgraph/sdk.generated.ts is excluded by !**/*.generated.*
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (262)
  • apps/subgraph/abis/Governor.json
  • apps/subgraph/config/base-sepolia.json
  • apps/subgraph/config/ethereum-sepolia.json
  • apps/subgraph/config/optimism-sepolia.json
  • apps/subgraph/config/zora-sepolia.json
  • apps/subgraph/schema.graphql
  • apps/subgraph/scripts/deploy-all.sh
  • apps/subgraph/src/eas.ts
  • apps/subgraph/src/governor.ts
  • apps/subgraph/src/manager.ts
  • apps/subgraph/src/utils/eas.ts
  • apps/subgraph/src/utils/proposalMetadata.ts
  • apps/subgraph/subgraph.yaml.mustache
  • apps/subgraph/tests/auctionBidComment.test.ts
  • apps/subgraph/tests/candidateSponsorSignature.test.ts
  • apps/subgraph/tests/daoMetadata.test.ts
  • apps/subgraph/tests/eas.test.ts
  • apps/subgraph/tests/easCandidateDecoder.test.ts
  • apps/subgraph/tests/governor.test.ts
  • apps/subgraph/tests/proposalMetadata.test.ts
  • apps/web/next.config.js
  • apps/web/package.json
  • apps/web/src/layouts/BaseLayout/BaseLayout.tsx
  • apps/web/src/modules/dashboard/DaoAuctionCard.tsx
  • apps/web/src/modules/dashboard/DaoSelectorModal.tsx
  • apps/web/src/pages/_app.tsx
  • apps/web/src/pages/api/ai/generateTxSummary.ts
  • apps/web/src/pages/api/decode.ts
  • apps/web/src/pages/bridge.tsx
  • apps/web/src/pages/coin/[network]/[coinAddress].tsx
  • apps/web/src/pages/dao/[network]/[token]/[tokenId].tsx
  • apps/web/src/pages/dao/[network]/[token]/candidate/[candidateId].tsx
  • apps/web/src/pages/dao/[network]/[token]/candidate/create.tsx
  • apps/web/src/pages/dao/[network]/[token]/index.tsx
  • apps/web/src/pages/dao/[network]/[token]/proposal/create.tsx
  • apps/web/src/pages/dao/[network]/[token]/proposal/review.tsx
  • apps/web/src/pages/dao/[network]/[token]/vote/[id].tsx
  • apps/web/src/pages/drop/[network]/[dropAddress].tsx
  • apps/web/src/utils/api/error.ts
  • packages/candidate-ui/package.json
  • packages/candidate-ui/src/components/CandidateCommentCard.tsx
  • packages/candidate-ui/src/components/CandidateCommentForm.css.ts
  • packages/candidate-ui/src/components/CandidateCommentForm.tsx
  • packages/candidate-ui/src/components/CandidateDetailsSection.tsx
  • packages/candidate-ui/src/components/CandidateDiscussionSection.tsx
  • packages/candidate-ui/src/components/CandidateDraftForm.tsx
  • packages/candidate-ui/src/components/CandidateEditedBanner/CandidateEditedBanner.tsx
  • packages/candidate-ui/src/components/CandidateEditedBanner/index.ts
  • packages/candidate-ui/src/components/CandidateList.css.ts
  • packages/candidate-ui/src/components/CandidateList.tsx
  • packages/candidate-ui/src/components/CandidatePromoteButton.tsx
  • packages/candidate-ui/src/components/CandidatePromoteCard/CandidatePromoteCard.css.ts
  • packages/candidate-ui/src/components/CandidatePromoteCard/CandidatePromoteCard.tsx
  • packages/candidate-ui/src/components/CandidatePromoteCard/index.ts
  • packages/candidate-ui/src/components/CandidateSignalBreakdown.tsx
  • packages/candidate-ui/src/components/CandidateSignatureButton.tsx
  • packages/candidate-ui/src/components/CandidateSigners/CandidateSigners.test.ts
  • packages/candidate-ui/src/components/CandidateSigners/CandidateSigners.tsx
  • packages/candidate-ui/src/components/CandidateSigners/index.ts
  • packages/candidate-ui/src/components/CandidateStatus/CandidateStatus.helper.ts
  • packages/candidate-ui/src/components/CandidateStatus/CandidateStatus.tsx
  • packages/candidate-ui/src/components/CandidateStatus/index.ts
  • packages/candidate-ui/src/components/CandidateSubmitForm.tsx
  • packages/candidate-ui/src/components/CandidateUpdatingBanner/CandidateUpdatingBanner.tsx
  • packages/candidate-ui/src/components/CandidateUpdatingBanner/index.ts
  • packages/candidate-ui/src/index.ts
  • packages/candidate-ui/src/utils/buildCandidateDescription.test.ts
  • packages/candidate-ui/src/utils/buildCandidateDescription.ts
  • packages/candidate-ui/src/utils/candidateProposal.ts
  • packages/candidate-ui/tsconfig.json
  • packages/candidate-ui/tsup.config.ts
  • packages/constants/src/addresses.ts
  • packages/constants/src/alchemy.ts
  • packages/constants/src/chains.ts
  • packages/constants/src/eas.ts
  • packages/constants/src/etherscan.ts
  • packages/constants/src/rpc.ts
  • packages/constants/src/safe.ts
  • packages/constants/src/subgraph.ts
  • packages/constants/src/swrKeys.ts
  • packages/constants/src/versions.ts
  • packages/create-dao-ui/src/components/AuctionSettingsForm/AuctionSettingsForm.schema.ts
  • packages/create-dao-ui/src/components/AuctionSettingsForm/AuctionSettingsForm.tsx
  • packages/create-dao-ui/src/components/AuctionSettingsForm/fastDaoTimings.ts
  • packages/create-dao-ui/src/components/ReviewAndDeploy/ReviewAndDeploy.tsx
  • packages/create-dao-ui/src/stores/useFormStore.ts
  • packages/create-proposal-ui/src/components/CreateProposalHeading/CreateProposalHeading.tsx
  • packages/create-proposal-ui/src/components/MobileProposalActionBar/MobileProposalActionBar.tsx
  • packages/create-proposal-ui/src/components/ProposalStageIndicator/ProposalStageIndicator.tsx
  • packages/create-proposal-ui/src/components/Queue/Queue.tsx
  • packages/create-proposal-ui/src/components/ReviewProposalForm/ReviewProposalForm.tsx
  • packages/create-proposal-ui/src/components/ReviewProposalForm/fields.test.ts
  • packages/create-proposal-ui/src/components/ReviewProposalForm/fields.ts
  • packages/create-proposal-ui/src/components/TransactionForm/AddArtwork/AddArtwork.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/AirdropTokens/AirdropTokens.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/ContentCoin/ContentCoin.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/CreatorCoin/CreatorCoin.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/CrossChainMigration/Step2_ReviewConfig.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/CustomTransaction/CustomTransaction.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/Droposal/Droposal.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/FixRendererBase/FixRendererBase.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/Migration/BridgeTreasuryForm.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/Migration/MigrateDAOForm.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/Migration/PauseAuctionsForm.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/MilestonePayments/MilestonePayments.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/MintGovernanceTokens/MintGovernanceTokens.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/NominateEscrowDelegate/NominateEscrowDelegate.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/PauseAuctions/PauseAuctions.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/PinTreasuryAsset/PinTreasuryAsset.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/ReplaceArtwork/ReplaceArtwork.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/ResumeAuctions/ResumeAuctions.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/SendNft/SendNft.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/SendTokens/SendTokens.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/StreamTokens/StreamTokens.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/TransactionForm.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/Upgrade/UpgradeRequired.tsx
  • packages/create-proposal-ui/src/components/TransactionForm/WalletConnect/WalletConnect.tsx
  • packages/create-proposal-ui/src/components/TransactionStageColumn/TransactionStageColumn.tsx
  • packages/create-proposal-ui/src/components/TransactionStageColumn/index.ts
  • packages/create-proposal-ui/src/components/TwoColumnLayout.css.ts
  • packages/create-proposal-ui/src/components/TwoColumnLayout.tsx
  • packages/create-proposal-ui/src/components/UpdateDeadlinePassedModal/UpdateDeadlinePassedModal.tsx
  • packages/create-proposal-ui/src/components/UpdateDeadlinePassedModal/index.ts
  • packages/create-proposal-ui/src/components/UpdatingProposalBanner/UpdatingProposalBanner.tsx
  • packages/create-proposal-ui/src/components/UpdatingProposalBanner/index.ts
  • packages/create-proposal-ui/src/components/index.ts
  • packages/create-proposal-ui/src/components/shared/TransactionComposer.tsx
  • packages/create-proposal-ui/src/components/shared/index.ts
  • packages/create-proposal-ui/src/hooks/useCrossChainMigration.tsx
  • packages/create-proposal-ui/src/hooks/useDeployDAO.tsx
  • packages/create-proposal-ui/src/hooks/useFetchDAOConfigForMigration.tsx
  • packages/create-proposal-ui/src/utils/tenderlySimulation.ts
  • packages/create-proposal-ui/src/utils/validateMigration.ts
  • packages/dao-ui/package.json
  • packages/dao-ui/src/components/Activity/Activity.tsx
  • packages/dao-ui/src/components/AdminForm/AdminForm.schema.ts
  • packages/dao-ui/src/components/AdminForm/AdminForm.tsx
  • packages/dao-ui/src/components/AdminForm/utils.tsx
  • packages/dao-ui/src/components/Candidates/Candidates.tsx
  • packages/dao-ui/src/components/Candidates/index.ts
  • packages/dao-ui/src/components/SmartContracts/SmartContracts.tsx
  • packages/dao-ui/src/components/Upgrade/ConfigureUpdatablePeriodModal.tsx
  • packages/dao-ui/src/components/Upgrade/Upgrade.tsx
  • packages/dao-ui/src/components/Upgrade/versions/2.0.0.md
  • packages/dao-ui/src/components/Upgrade/versions/3.0.0.md
  • packages/dao-ui/src/components/Upgrade/versions/index.ts
  • packages/dao-ui/src/components/index.ts
  • packages/dao-ui/tsup.config.ts
  • packages/feed-ui/src/FeedFiltersModal.tsx
  • packages/feed-ui/src/FeedItemChain.tsx
  • packages/hooks/src/index.ts
  • packages/hooks/src/useAvailableUpgrade.ts
  • packages/hooks/src/useContractVersion.ts
  • packages/hooks/src/useProposal.ts
  • packages/hooks/src/useProposalState.ts
  • packages/hooks/src/useProposalTimeline.ts
  • packages/hooks/src/useProposalVersionHistory.ts
  • packages/proposal-ui/package.json
  • packages/proposal-ui/src/components/BundledDecodedTransactions/BundledDecodedTransactions.tsx
  • packages/proposal-ui/src/components/BundledDecodedTransactions/index.ts
  • packages/proposal-ui/src/components/OverwriteDraftModal/OverwriteDraftModal.tsx
  • packages/proposal-ui/src/components/OverwriteDraftModal/index.ts
  • packages/proposal-ui/src/components/PropDates/PropDateForm.tsx
  • packages/proposal-ui/src/components/ProposalActions/CancelButton.tsx
  • packages/proposal-ui/src/components/ProposalActions/ProposalActions.css.ts
  • packages/proposal-ui/src/components/ProposalActions/ProposalActions.tsx
  • packages/proposal-ui/src/components/ProposalActions/VoteStatus/Updatable.tsx
  • packages/proposal-ui/src/components/ProposalActions/VoteStatus/VoteStatus.tsx
  • packages/proposal-ui/src/components/ProposalDescription/ProposalContent.tsx
  • packages/proposal-ui/src/components/ProposalDescription/ProposalDescription.tsx
  • packages/proposal-ui/src/components/ProposalEditedBanner/ProposalEditedBanner.css.ts
  • packages/proposal-ui/src/components/ProposalEditedBanner/ProposalEditedBanner.tsx
  • packages/proposal-ui/src/components/ProposalEditedBanner/index.ts
  • packages/proposal-ui/src/components/ProposalHistoryModal/ProposalHistoryModal.tsx
  • packages/proposal-ui/src/components/ProposalHistoryModal/index.ts
  • packages/proposal-ui/src/components/ProposalReplacementBanner/ProposalReplacementBanner.css.ts
  • packages/proposal-ui/src/components/ProposalReplacementBanner/ProposalReplacementBanner.tsx
  • packages/proposal-ui/src/components/ProposalReplacementBanner/index.ts
  • packages/proposal-ui/src/components/ProposalSigners/ProposalSigners.css.ts
  • packages/proposal-ui/src/components/ProposalSigners/ProposalSigners.tsx
  • packages/proposal-ui/src/components/ProposalSigners/index.ts
  • packages/proposal-ui/src/components/ProposalStatus/ProposalStatus.helper.ts
  • packages/proposal-ui/src/components/ProposalStatus/ProposalStatus.tsx
  • packages/proposal-ui/src/components/ProposalVersionDiffModal/DiffBadge.tsx
  • packages/proposal-ui/src/components/ProposalVersionDiffModal/ProposalVersionDiffModal.css.ts
  • packages/proposal-ui/src/components/ProposalVersionDiffModal/ProposalVersionDiffModal.tsx
  • packages/proposal-ui/src/components/ProposalVersionDiffModal/TransactionDiff.css.ts
  • packages/proposal-ui/src/components/ProposalVersionDiffModal/TransactionDiff.tsx
  • packages/proposal-ui/src/components/ProposalVersionDiffModal/index.ts
  • packages/proposal-ui/src/components/UpdateProposalButton/UpdateProposalButton.tsx
  • packages/proposal-ui/src/components/UpdateProposalButton/index.ts
  • packages/proposal-ui/src/components/index.ts
  • packages/proposal-ui/src/utils/compareTransactions.ts
  • packages/proposal-ui/src/utils/parseProposalTransactions.ts
  • packages/proposal-ui/src/utils/textDiff.ts
  • packages/sdk/codegen.yml
  • packages/sdk/package.json
  • packages/sdk/src/contract/abis/Governor.ts
  • packages/sdk/src/contract/abis/ManagerV3.ts
  • packages/sdk/src/contract/abis/index.ts
  • packages/sdk/src/contract/helpers/hashProposal.ts
  • packages/sdk/src/contract/helpers/index.ts
  • packages/sdk/src/contract/helpers/setUpdatablePeriod.ts
  • packages/sdk/src/contract/index.ts
  • packages/sdk/src/eas/attestCandidate.ts
  • packages/sdk/src/eas/attestCandidateComment.ts
  • packages/sdk/src/eas/attestCandidateSignature.ts
  • packages/sdk/src/eas/attestCommentWithSignature.ts
  • packages/sdk/src/eas/index.ts
  • packages/sdk/src/eas/multiAttest.ts
  • packages/sdk/src/index.ts
  • packages/sdk/src/signatures/index.ts
  • packages/sdk/src/signatures/proposalSignatures.ts
  • packages/sdk/src/signatures/updateSignatures.ts
  • packages/sdk/src/signatures/voteSignatures.ts
  • packages/sdk/src/subgraph/fragments/Proposal.graphql
  • packages/sdk/src/subgraph/fragments/candidateGroup.graphql
  • packages/sdk/src/subgraph/index.ts
  • packages/sdk/src/subgraph/queries/candidateComments.graphql
  • packages/sdk/src/subgraph/queries/candidateGroup.graphql
  • packages/sdk/src/subgraph/queries/candidateGroups.graphql
  • packages/sdk/src/subgraph/queries/candidateSponsorSignatures.graphql
  • packages/sdk/src/subgraph/queries/candidateVersion.graphql
  • packages/sdk/src/subgraph/queries/proposalVersions.graphql
  • packages/sdk/src/subgraph/requests/candidateCommentsQuery.ts
  • packages/sdk/src/subgraph/requests/candidateGroupQuery.ts
  • packages/sdk/src/subgraph/requests/candidateGroupsQuery.ts
  • packages/sdk/src/subgraph/requests/candidateSponsorSignaturesQuery.ts
  • packages/sdk/src/subgraph/requests/feedQuery.ts
  • packages/sdk/src/subgraph/requests/getUserCandidateSignal.ts
  • packages/sdk/src/subgraph/requests/proposalQuery.ts
  • packages/sdk/src/subgraph/requests/proposalVersionsQuery.ts
  • packages/sdk/src/subgraph/requests/proposalsQuery.ts
  • packages/sdk/tsup.config.ts
  • packages/stores/src/createCandidateStore.ts
  • packages/stores/src/createProposalStore.ts
  • packages/stores/src/hooks/index.ts
  • packages/stores/src/hooks/useCandidateStore.ts
  • packages/stores/src/hooks/useProposalStore.ts
  • packages/stores/src/index.ts
  • packages/stores/src/providers/CandidateStoreProvider.tsx
  • packages/stores/src/providers/ProposalStoreProvider.tsx
  • packages/stores/src/providers/index.ts
  • packages/stores/tsup.config.ts
  • packages/types/src/chain.ts
  • packages/types/src/proposalMetadata.ts
  • packages/types/src/proposalState.ts
  • packages/ui/src/ContractButton/ContractButton.tsx
  • packages/ui/src/DecodedTransactions/index.ts
  • packages/ui/src/DropdownSelect/DropdownSelect.tsx
  • packages/ui/src/WalletIdentity/WalletIdentity.tsx
  • packages/utils/src/basename.ts
  • packages/utils/src/chains.ts
  • packages/utils/src/ens.ts
  • packages/utils/src/errors.ts
  • packages/utils/src/escrow.ts
  • packages/utils/src/index.ts
  • packages/utils/src/proposalMetadata.test.ts
  • packages/utils/src/proposalMetadata.ts
  • packages/utils/src/proposalState.ts
  • packages/utils/src/sablier/constants.ts
  • packages/zord/src/icons.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Review on demand using usage pricing
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/updatable-proposals

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@dan13ram
dan13ram force-pushed the feat/updatable-proposals branch from ff76f31 to e632ef5 Compare June 11, 2026 16:23
@dan13ram
dan13ram force-pushed the feat/updatable-proposals branch from 79c770b to ec8061e Compare June 17, 2026 10:21
@b3nedictvs b3nedictvs moved this to 🏗️ In Progress in Resident Cycle Jun 17, 2026
@dan13ram
dan13ram force-pushed the feat/updatable-proposals branch from 9552823 to 82a998a Compare June 18, 2026 16:46
@dan13ram
dan13ram force-pushed the feat/updatable-proposals branch from 8538ea3 to a6ba545 Compare June 22, 2026 04:57
@dan13ram
dan13ram force-pushed the feat/updatable-proposals branch from a6ba545 to 53123d0 Compare June 22, 2026 06:18
@dan13ram
dan13ram merged commit 10fe446 into staging Jul 21, 2026
3 of 4 checks passed
@dan13ram
dan13ram deleted the feat/updatable-proposals branch July 21, 2026 11:32
@github-project-automation github-project-automation Bot moved this from 🔎 In Review to ✅ Done in Resident Cycle Jul 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: ✅ Done

Development

Successfully merging this pull request may close these issues.

2 participants