nounsdao / nouns-monorepo Goto Github PK
View Code? Open in Web Editor NEWLicense: GNU General Public License v3.0
License: GNU General Public License v3.0
Current colors in nouns.wtf v2 do not pass lighthouse accessibly test in all cases. We should fix this before we launch the v2 site.
@nomiclabs/hardhat-waffle
package is imported twice in packages/nouns-contracts/hardhat.config.ts
Key details are missing from the bidding experience:
Add an optional text field to the vote modal that enables Nouners to include a reason for the given vote. This reason should be surfaced via the Discord bot in the New Proposal Vote
notification.
Implementation Details:
castVoteWithReason
function must be used, rather than castVote
.reason: String
must be added to the subgraph's Vote
entity.reason
property value should be consumed by the formatNewGovernanceVoteText
function to expose the reason to Discord.We've forked a bunch of other projects so let's make sure we adhere to their licensing and make that clear in our comments.
Build a Uniswap-esque Governance UI into nouns-webapp
.
The initial implementation will:
/vote
There are two issues with the Brave proposal:
cc @bcjgit
Navigating to https://nouns.wtf/noun/0 does not show the Noun's activity.
Add component to display DAO treasury balance and member count.
Current text:
Only NOUN votes that were self delegated or delegated to another address before block [block_number] are eligible for voting.
Desired text:
Only Nouns in your wallet or delegated to you before [formatted_date_time] can vote
Cloned the repo in Ubuntu 20.04.2 (which is a WSL2 linux instance) and proceedd with the Yarn (install) ...
make: Entering directory '/home/comtechnet/nouns/node_modules/node-hid/build'
CC(target) Release/obj.target/hidapi-linux-hidraw/hidapi/linux/hid.o
AR(target) Release/obj.target/hidapi-linux-hidraw.a
COPY Release/hidapi-linux-hidraw.a
CXX(target) Release/obj.target/HID-hidraw/src/HID.o
../src/HID.cc:71:5: warning: dynamic exception specifications are deprecated in C++11 [-Wdeprecated]
71 | throw(JSException);
| ^~~~~
../src/HID.cc:74:5: warning: dynamic exception specifications are deprecated in C++11 [-Wdeprecated]
74 | throw(JSException);
| ^~~~~
../src/HID.cc:156:3: warning: dynamic exception specifications are deprecated in C++11 [-Wdeprecated]
156 | throw(JSException)
| ^~~~~
../src/HID.cc:167:3: warning: dynamic exception specifications are deprecated in C++11 [-Wdeprecated]
167 | throw(JSException)
| ^~~~~
IS THIS SUPPORTED or expected? If NOT - just close the issue and I'll move on - Thanks!
Add a 10k gas pad to the createBid gas estimate to prevent ‘Out of gas’ errors when a user bids around the same time that an auction extension occurs.
Add metadata so OpenSea displays a great name, description, and image for Nouns. (See: https://docs.opensea.io/docs/contract-level-metadata). We can also make Nouns DAO the beneficiary of any secondary sales
The token Etherscan link on Noun profiles should go to https://etherscan.io/token/0x9C8fF314C9Bc7F6e59A9d9225Fb22946427eDC03?a=${tokenId}, rather than https://etherscan.io/address/0x9C8fF314C9Bc7F6e59A9d9225Fb22946427eDC03/${tokenId}
A user noted on Discord that to maintain backwards compatibility we should ensure that /auction/:id
links automatically redirect to /noun/:id
. Currently, they go to the 404 page.
Generating nouns based on traits when selecting background, body, accessory, head, or glasses does not work
When you choose a trait, it should reflect when generating nouns
Bidding activity is a key part of the bidding experience. Currently, no bidding history is available in the auction UI.
Currently, if you're the lead bidder, you can create a new bid which doesn't seem like an optimal strategy. We should probably warn users if they are about to bid while they're the leader. They'd still be able to click through the warning but just in case.
Failed to compile.
/nouns-monorepo/packages/nouns-webapp/src/components/Bid/index.tsx
TypeScript error in /nouns-monorepo/packages/nouns-webapp/src/components/Bid/index.tsx(73,5):
Argument of type 'NounsAuctionHouse' is not assignable to parameter of type 'Contract'.
Types of property '_deployedPromise' are incompatible.
Type 'Promise<import("/nouns-monorepo/node_modules/@ethersproject/contracts/lib/index").Contract>' is not assignable to type 'Promise<import("/nouns-monorepo/node_modules/@usedapp/core/node_modules/@ethersproject/contracts/lib/index").Contract>'.
Type 'import("/nouns-monorepo/node_modules/@ethersproject/contracts/lib/index").Contract' is not assignable to type 'import("/nouns-monorepo/node_modules/@usedapp/core/node_modules/@ethersproject/contracts/lib/index").Contract'.
Types of property '_runningEvents' are incompatible.
Type '{ [eventTag: string]: RunningEvent; }' is not assignable to type '{ [eventTag: string]: RunningEvent; }'. Two different types with this name exist, but they are unrelated.
'string' index signatures are incompatible.
Type 'RunningEvent' is not assignable to type 'RunningEvent'. Two different types with this name exist, but they are unrelated.
Types have separate declarations of a private property '_listeners'. TS2345
71 |
72 | const { send: placeBid, state: placeBidState } = useContractFunction(
> 73 | nounsAuctionHouseContract,
| ^
74 | AuctionHouseContractFunction.createBid,
75 | );
76 | const { send: settleAuction, state: settleAuctionState } = useContractFunction(
node: v16.13.0
As a user I want to be able to link to nouns.wtf/noun/:id
and have the specified Noun be shown.
Add functionality to allow users to browse through previous auctions and see:
When there are less than 8 auctions completed the HistoryCollection doesn't work correctly. This ticket involves adjusting the component so that it renders the recent components but fills in any additional with "fake Nouns".
Optionally: A/B test with art to see if they want the phantom noun instead
Immediately after auction settlement a user found that it took a page reload for the noun profile of the most recently auctioned noun to show correct winner / bid history / activity info.
Add 1px divider in border color on mobile above the treasury description (unless we choose to nix it) — where there is a yellow highlight
A smaller font size (or using PT Root UI) on the USD value to create hierarchy (where the ETH value is the “parent”) — where there is a green highlight
A period and traditional 1 or 2char space delimiter where there is the proposal numbering on cards, to read and look more natural (a la traditional
Upon auction settlement, /nouns/<just_completed_auction_id>
is not automatically rolling over to /noun/<newly_created_auction_id>
for some users
Fetch the ABI of the implementation contract, rather than proxy contract, if a verified proxy contract address is entered into the Proposal transaction modal.
Often times when I refresh the webapp, it shows this. I can't seem to find any reference to it in the code. Any ideas?
packages/nouns-webapp/src/components/NavBarTreasury/index.tsx
Smell here: effectively duplicate code translating a NavBarButtonStyle to classes with packages/nouns-webapp/src/components/NavBarButton/index.tsx. Should be addressable with a single helper and a common module.
Doesn't need to block promotion but should be addressed later.
packages/nouns-webapp/src/components/NavWallet/index.tsx
Smell here: effectively duplicate code translating a NavBarButtonStyle to classes with packages/nouns-webapp/src/components/NavBarButton/index.tsx. Should be addressable with a single helper and a common module. Doesn't need to block promotion but should be addressed later.
Add governance updates to @nounsbot_. "Noun 6 has voted in favor of proposal 1 [url]"
The treasury balance in the nav bar currently only displays ETH held, but as of this date ~10% of the treasury is held in stETH.
Since stETH has a constant conversion to ETH, it might be good enough to convert stETH shares balance into ETH and combine that with the ETH balance to display a combined view of the treasury. The stETH shares balance includes validator fees so is an accurate representation of the ETH exposure of the DAO.
If additional assets are held by the treasury we can update our approach as needed.
We may need some library or helper functions to perform localization.
https://discord.com/channels/849745721544146955/849745721544146959/865686032715743232
This ticket is to investigate how we should implement that and present to the rest of the devs for implementation feedback and art for feedback about maintenance.
@samczsun on Discord:
you can delegate to the zero address here, causing the votes to be burned and resulting in a self-dos because you won't be able to transfer your noun anymore. could happen if someone assumed that this behaved like comp delegate in the sense that to undelegate from someone, just set to zero
There are many little things we can do to improve nouns.wtf from an SEO best practices point of view. Examples:
Use react-content-loader
to smooth out the loading experience with loading placeholder components.
Display the voting direction of every Noun that has voted for a proposal on the voting page.
A user pinged us in the Discord mentioning that the arrows on the mobile auction page were too small to effectively page between Nouns. @cryptoseneca confirmed that the buttons are "a little small" on iPhone 12.
This has been an often requested feature. One example from discord:
https://discord.com/channels/849745721544146955/877215225093451776/942417178387419136
32 reports that frame (using connect as metamask option) + brave:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.