dxgovernance / davi-monorepo Goto Github PK
View Code? Open in Web Editor NEWHome Page: https://davi-monorepo-davi.vercel.app
Home Page: https://davi-monorepo-davi.vercel.app
Description
Tab option I am currently on should be underlined
Steps to Reproduce
Expected behavior
Tab option I am currently on is underlined
Actual behavior
Tab option I am currently on isn't underlined
Device Information
OS: MacOs
Browser GoogleChrome, Brave
Device: MacOS Monterey v12.4
Target hook to move: src/Modules/Guilds/Hooks/useGuildConfig
Guide: src/store/readme.md
To be complete the migration should:
Description
Information button is missing
Wrong Member icon
Steps to Reproduce
Device Information
OS: MacOs
Browser GoogleChrome, Brave
Device: MacOS Monterey v12.4
Description
A clear and concise description of what the bug is.
Steps to Reproduce
Steps to reproduce the behavior:
Expected behavior
Should add an action
Device Information
Description
Hyperlinks should open a new tab, not make you leave DAVI.
The hyperlink should open a new tab, not make you leave DAVI.
hyperlink: https://gnosisscan.io/tx/0x4f65a7871e29594ed70a08e45a5ac1dfe55534da3a41c9d00d87fa15235f6d3b
With DXdao contracts, nicknamed "Gov 1.5" due to it being only one large change away from "Gov 2.0" we have a more complex system.
The same as in DXdao currently this architecture has schemes. Schemes are like sub parts of a DAO with their own permissions and funds.
Before making a proposal a user has to select which scheme they want to use and we need to make this a smooth experience.
We have a list of schemes and each scheme has the following data:
My thoughts on this design is that it should be a page before the current proposal creation page right now.
Then the user will see two windows, one to select the scheme from a list and the next pane to show the details of what the scheme can do and it's funds.
Then once they press next they go to the usual creation page.
We also need to consider how we will show which scheme a proposal is using once it has been made.
Target hook to move: src/Modules/Guilds/Hooks/useVotingResults
Guide: src/store/readme.md
To be complete the migration should:
Steps to Reproduce
Steps to reproduce the behavior:
Expected behavior
Shouldn't get white screen
Device Information
Target hook to move: src/Modules/Guilds/Hooks/useActiveProposals
Guide: src/store/readme.md
To be complete the migration should:
In alchemy for DXdao on mainnet there is an agreement (https://ipfs.io/ipfs/QmRQhXUKKfUCgsAf5jre18T3bz5921fSfvnZCB5rR8mCKj) for using the dao platform.
Most people are completely unaware of this and as a result it is likely not enforcable. However what it aims to do is not a bad idea.
After speaking with Tammy we should likely have a similar agreement with arbitration terms, however this will need to be more obvious than with alchemy's implementation.
A few options:
Since we already have modal popups for most actions we can simply ensure that we have some text "By confirming this action you agree to the terms and conditions (link)". I think this is the best option as it also allows us to add more agreements for specific actions should they need anything different.
For proposals a form of this agreement should also be stored on chain.
Description
How to see any details about the proposal happening or not?
Steps to Reproduce
Steps to reproduce the behavior:
https://app.projectdavi.eth.limo/#/homestead/0x585E9f7A44161E0692fc6e4A7Cb4d72f33dF982F/proposal/0x3bf06f8d391f38d5936068e92d61cdad4753ddcbdaa8e83e96552f8a62c400ed
Expected behavior
Expecting some link out to Etherscan for the proposal.
As a part of PR DXgovernance/DAVI#293 we added an SVG image as the logo in the header for the closed beta and demo but since it was rushed did not properly support it with designs or for mobile.
We should fix the CSS to make the behaviour consistent across all devices.
Might also be worth getting the figma updated also.
User Story
As a power user I want to be able to set my own RPC for each chain
Alternative Solutions
Access from account modal, need to add the new advanced settings button which opens a new modal.
We should then give an input to override the default RPC using a link provided by the user. We should check the availability of this link using a simple query before allowing the user to save. This option should then be saved specifically to the user's browser or local storage so it persists.
An additional feature we can add here is the ability to override the app's decision to use the default data fetching option. In the case of guilds this should be a toggle between automatic and fallback (RPC only) where the user can choose to move from the default automatic logic to only using fallback data fetching.
This choice should also be stored locally in browser.
Description
Buttons are too close to header line
Steps to Reproduce
Device Information
OS: MacOs
Browser GoogleChrome, Brave
Device: MacOS Monterey v12.4
User Story
As a user of DAVI I would like to see the balances of the guild in native currency and tokens in the main guild page or have a section for it.
The guild https://qa.projectdavi.eth.limo/#/gnosis/0xFBcd845E5A4c9e2Cd91b2BB20a92062964C2C391 has 1 xdai and I have no way of knowing it.
With pulen.eth for example returns an avatar URL which does not resolve so we should fallback in this case to the default icon
User Story
As a voter trying to decide how to vote I want to see who has already voted on a proposal and with how much power.
Simplest version would be a modal but perhaps we can find a way to see most high impact votes at a glance?
Additional context
Can only be implemented in subgraph supported DAVI
We dont gain any benefit from ENS's standard and instead can more easily access the ipfs data since it is just stored as a string anyways
Description
Infinite loop present in 'Pool pair to set fee on' field in Swapr fee action modal
Steps to Reproduce
Expected behavior
Infinite loop should not be present in the 'Pool pair to set fee on' field
Device Information
OS: MacOs
Browser: GoogleChrome, Brave
Device: MacOS Monterey v12.4
We can just manually keep a list of erc20 vesting factories.
Each factory that is deployed is specific to an ERC20 token and an owner of the deployed vesting contracts, meaning they can cancel them.
We just need to listen for the VestingCreated
event from each factory and then track the vesting contract itself.
The main way we will query for the data is requesting all vesting contracts for an address.
Inside the contract TokenVesting contract itself we will listen to the TokensReleased
and TokenVestingRevoked
events.
Should be a very simple subgraph inside of the monorepo
Recently Chris brought up an example of a governance / defi platform that uses a kind of flowchart to visualisation their contracts and how they interact for better transparency around how they operate.
Since it's all open source we can take a look into how they do it.
https://github.com/InverseFinance/inverse-web/tree/main/pages/transparency
https://github.com/InverseFinance/inverse-web/blob/main/components/common/Dataviz/FlowChart.tsx
https://www.npmjs.com/package/react-flow-renderer
For now we can do a page showing just the core DXvote governance contracts with some explanations of how they operate.
We can see if @pimato is perhaps able to make a quick design for our implementation in figma but it should follow the general style and components from guilds.
The new page can come under /transparency URL. It will need to also have additional variables for each chain.
The entities and connections should be stored in a json config file.
To begin with the below diagram shows the governance contracts and what they interact with.
There should be an optional field for treasury on each contract that is a boolean flag. We will use this to determine if token amounts should be pulled for this contract. The treasury amounts will be displayed at the right side of the screen by default.
It would be good also to have a description section in the config for each contract that details how it works that will be displayed on the right side of the screen when clicked on. More details can be provided later about what exactly should be in this description field, likely it will be markdown.
All of our governance systems use the same permissions contract meaning that we can easily make a UI for all DAOs in DAVI.
Permissions consist of:
The assets tab shows what assets the DAO can approve and transfer around (e.g: DAO x can transfer 1000 DAI per proposal and infinite DXD per proposal but has no other permissions set so cannot transfer USDC at all).
Generic calls shows all contracts and their functions which can be called.
This UI will likely work best as a table as we need to show multiple rows of permissions for a DAO. Likely it doesn't need to be anything incredibly intuitive as it is already a power user screen.
Description
Text should be in frame of the button
Steps to Reproduce
Expected behavior
Text should be in frame of the button
Actual behavior
Text isn't in frame of the button
Device Information
OS: MacOs
Browser GoogleChrome, Brave
Device: MacOS Monterey v12.4
Additional context
Only actual behavior
Description
Address Icon button is different from Figma design.
Steps to Reproduce
Expected behavior
User can see only avatar
Actual behavior
User can see avatar and part of address
Device Information
OS: MacOs
Browser GoogleChrome, Brave
Device: MacOS Monterey v12.4
Target hook to move: src/Modules/Guilds/Hooks/useProposalCalls
Guide: src/store/readme.md
To be complete the migration should:
Target hook to move: src/Modules/Guilds/Hooks/useGuildToken
Guide: src/store/readme.md
To be complete the migration should:
Description
Low priority ATM, all checked filters can be unchecked by click (or 'Reset' button) after that all filter should be re-applied and all Proposals should be visible.
Thing is I've noticed this behavior is can be applied to different filter on local
and on Goerli
networks, it's like every time different filter is not working as expected after the uncheck.
Cases:
localhost
Steps to Reproduce
Steps to reproduce the behavior:
Expected behavior
Unchecking the filter should results in showing previous results, in this case all Proposals
Screenrecord
https://user-images.githubusercontent.com/37701286/187862141-5c98d36f-49b0-4962-9025-7703f2790552.mp4
Device Information
OS: MacOs
Browser: GoogleChrome, Brave
Device: MacOS Monterey v12.4
Additional context
Noticed this as well, when "Ens Update Content" filter is checked it breaks into new row, text length, and it kinda looks weird.
Description
When adding an action on vesting contracts two actions are being added. Same problem when visualizing actions on a proposal already created
Steps to Reproduce
Steps to reproduce the behavior:
Expected behavior
Only one action should be added
Screenshots
Two actions are being added:
Device Information
Description
A clear and concise description of what the bug is.
Steps to Reproduce
Expected behavior
Filters should be united under one button
Actual behavior
Filters are not united under one button and run away from the screen
Device Information
OS: MacOs
Browser GoogleChrome, Brave
Device: MacOS Monterey v12.4
User Story
As a user of DAVI that participates in multiple discussions, I would like to see who reacted and responded in discussions I participated.
I guess a notification system would have to be implemented for this, sounds complex. But an easier solution, for the time being, would be to have a page where I can see a history of everything that happened in the forum and filter by discussions I created or participated.
Description
ENS Update Content filter goes to next row when checked
Steps to Reproduce
Expected behavior
Selected filter should remain in single row
Device Information
OS: MacOs
Browser: GoogleChrome, Brave
Device: MacOS Monterey v12.4
Description
Everytime I spinUp the localhost env anda try to e.g. join the Guild my transactions gets rejected on Metamask, after I reset my account on Metamask I am able to confirm the transaction.
Steps to Reproduce
"1. SpinUp Localhost env
2. Open localhost:3000
3. Check if Landing Page is loaded
4. Check if all Guilds are displayed at Landing Page
5. Go to SWPRGuild Page
6. Click on Join button
7. Enter amount of SWPR in Balance field
8. Click Approve SWPR Spending
9. Click to Confirm transaction on MetaMask
10. Check if Lock [amount] SWPR tokens transaction appears under recent transactions
Expected behavior
Should be able to make transactions i.e. join Guild without having to reset my account on metamask everytime
Screenrecord
https://user-images.githubusercontent.com/37701286/177830416-6f92fb8c-04a2-4599-926e-6157629ef559.mp4
Device Information
OS: MacOs
Browser GoogleChrome, Brave
Device: MacOS Monterey v12.4
Additional context
Is this perhaps something regarding localhost env and configuration?
Description
The Orbis session doesn't check if the current address is the same as the logged-in address.
If you log in (start a ceramic session) with an address and switch wallets afterward, you'll make every comment under the first address.
Also, there's no way to log out from the UI (the behavior is coded but not implemented anywhere)
Steps to Reproduce
Steps to reproduce the behavior:
Expected behavior
The Orbis user (address) should switch when switching wallets.
With DXdao contracts, nicknamed "Gov 1.5" due to it being only one large change away from "Gov 2.0" we have a more complex system.
The same as in DXdao currently this architecture has holographic consensus. This is what allows proposals to boost and execute faster and without 50% votes.
The logic of this system is that it incentivises attention to proposals with a high monetary value assigned to them. Essentially people staking on a proposal are making a bet that the proposal will either pass or fail.
We have designs in the figma for a first iteration of this interface. Since this is an entirely new feature for Gov 1.5 and not in guilds we need to add it as a feature to the store module for 1.5 and handle that logic when choosing what to render.
This also means we need new optional hooks in our interface which need implemented for this issue (names just from top of head, rename them):
https://www.figma.com/file/Z2yCtX1NLhdJYYoBiXkdMg/DAVI-v1?node-id=39%3A9061&t=u57B1yj9ksOl2R8g-1
Most of this logic will be in relation to the voting machine for each scheme as that is where holographic consensus logic lives (I think)
We can handle the more complex state of holographic consensus separately and show it as an additional pill for now.
In the confirm prediction modal we should see the speedometer change dynamically depending on what .
When the user first chooses for or against we should set the amount to stake to the total needed to change the current state (e.g staking on For would suggest the min amount of DXD to change to pending boost state).
The logic for working out pending boost state as well as the stake required to change states is very important and a little complex (dependant on amount of currently boosted proposals and more) refer to the contracts closely and we should test it well.
There is a library linked below we could use for the speedometer, take a look and we can use it if it seems good. If not we can always make our own, just that the animations would be nice to have with the package.
Target hook to move: src/Modules/Guilds/Hooks/usePermissions
Guide: src/store/readme.md
To be complete the migration should:
WAGMI uses homestead for some reason, we would rather have mainnet in our urls
Description
When user click on Address Icon button and want to change account then can see that missing Disconnect button and Back to Account text next to Back button
Steps to Reproduce
Actual behaviour:
Missing disconnect button
Missing Back to Account text next to Back button
Device Information
OS: MacOs
Browser GoogleChrome, Brave
Device: MacOS Monterey v12.4
Currently we pull contracts from rich contract list but we need to cross check this against the permissions registry being used to show permissioned rich contracts at the very top, followed by the rest of the contracts with permissions set and then finally any rich contracts not in permissions (shouldn't be many unless a forked permission registry)
Description
On Landing page, env just spined up, open Wallet modal, sometimes icons do not appear for couple of seconds
Steps to Reproduce
Expected behavior
All icons should appear right away
Device Information
OS: MacOs
Browser: GoogleChrome, Brave
Device: MacOS Monterey v12.4
Additional context
Similar situation on Wallet modal with Gnosis network icon
Target hook to move: src/Modules/Guilds/Hooks/useIsProposalCreationAllowed
Guide: src/store/readme.md
To be complete the migration should:
We should be linking to the monorepo issue creation, not old DAVI repo (would be great if there was a way to repopulate tags also)
Description
Switch "Vote Results" to "SWPR" > seems like some "0" have been added and they pushed the flag out of the box (second screenshot)
Steps to Reproduce
Expected behavior
Should just get the value in SWPR equal to percentage value
Device Information
OS: MacOs
Browser: GoogleChrome, Brave
Device: MacOS Monterey v12.4
Additional context
Noticed this on most recent Proposals on Goerli network
We want to support the subgraph without the UI knowing that we are using the subgraph.
We can have a global state for whether we can or should use the subgraph and then should have a data fetching proxy which decides how to fetch the data for us.
From the subgraph or contract reads.
Currently, the action builder is the most core and complex piece of UI we have.
It allows users to select anything they want to do on ethereum without technical knowledge. The UX has not been refined since its inception so is ripe for ideas and improvement.
We also are aiming to refactor and make a v2 early 2023 so perfect timing.
Description
In search bar text holder we have text "Search proposal, discussion, ENS, address" but can only search for Proposals, perhaps we can change the text in the search bar do correspond the search bar capabilities.
Steps to Reproduce
Expected behavior
Should be able to search for all items included in search bar text holder
Device Information
OS: MacOs
Browser: GoogleChrome, Brave
Device: MacOS Monterey v12.4
Target hook to move: src/Modules/Guilds/Hooks/useGuildMembers
Guide: src/store/readme.md
To be complete the migration should:
Our landing page is awesome but as soon as users click into the application they are greeted with dull, minimal design which is quite the contrast from the landing page.
A more distinct style similar to the landing page would be amazing and perhaps we can first tackle to most simple elements and colours first.
User Story
As a proposer I want to be able to call factory generated contracts without adding listings for each individual contract.
Alternative Solutions
Instead of specifying an address we will set the address to a specific value e.g. 0x99999999999
We then need an optional new hashed bytecode value in the rich contract schema that is read in these situations.
When creating a proposal with the specific address (0x99999999999) we know this is a factory contract and so will ask the user first in a modal to specify the address of the contract and we will set this as the to
value. Here we can also verify the supplied address by comparing hashed bytecodes.
Then the user would simply get the usual param form for that contract.
Then in addition to finding trying to match addresses when decoding we should also check against hashed bytecode for a match.
This isn't the best solution because it requires some manual work from the user to find the contract address but we can improve this in future.
User Story
As a member of a small guild I want to be able to see the other members of a guild and their voting power. Likely should be visible from the main guild screen's member count in a modal.
Additional context
This can only be implemented on the subgraph supported DAVI
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.