Git Product home page Git Product logo

bloom's Introduction

Bloom

Discord

Bloom test CI Apache 2.0 license

AboutInstallationContributingJoining the Discussion


About

Bloom is a beautifully designed, user-centric wallet. Explore the best of Web3 in a safe, curated environment.

Installation

There are a few options to install Bloom:

Contributing

Help out the Bloom project by filing a bug report or opening a pull request. Checkout the contribution guidelines before making a code contribution.

Joining the Discussion

If you have any questions for the developers or ideas you want to discuss, join the #general channel on our Discord.

bloom's People

Contributors

amadeu2 avatar begonaalvarezd avatar crowdin-bot avatar cvarley100 avatar dependabot[bot] avatar evavirseda avatar fossabot avatar github-actions[bot] avatar iotasyncbot avatar jeeanribeiro avatar kraftjs avatar laumair avatar lucasfernog avatar marknerdi avatar marknerdi996 avatar maxwellmattryan avatar melatron avatar monospacedmagic avatar nicole-obrien avatar nothingismagick avatar obany avatar omahs avatar paul-boegelsack avatar r-c-k avatar rajivshah3 avatar sorasho avatar swittkop avatar thoralf-m avatar tobivaria avatar tuditi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

bloom's Issues

️🛠 - Rename NewTransactionDetails to ITransactionData

Description

To kick off the transaction builder patter, we will rename NewTransactionDetails -> ITransactionData

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Force update in case of critical vulnerability

Description

On the event of a security vulnerability in Bloom, we need to alert users to update.
The user shouldn't be able to log in until he updates the patched version.

This was done in Trinity with a blacklist (S3 Bucket). Some more info can be found here:

Version listing: https://github.com/iotaledger/trinity-wallet/blob/develop/src/shared/libs/versions.json
Trinity force update: https://github.com/iotaledger/trinity-wallet/blob/639c9f81eb7a1287cfbdf85af6cd7feeb7408e0f/src/desktop/src/ui/Index.js#L253

Threat Model

A critical vulnerability is exposed. A user has to update his wallet, otherwise he risks losing his funds. A malicious actor has no access to the S3 server and cannot execute a DOS attack on the S3 server.

Security Requirements

  • Only Bloom Labs can post to S3 Server
  • Observed trafic doesn't give information about user's version
  • Non-blacklisted version cannot be tricked into thinking it's blacklisted (no false positives)
  • Blacklisted version cannot be tricked into thinking it's not blacklisted (no false negatives)

Implementation

The implementation consists of the following tasks: get version list,
make a decision whether or not to block Bloom, show an alert if update is needed and provide a mechanism to update it to the latest version.

1. Get version list

Upon start-up Bloom has to make a decision based upon a version blacklist stored remotely to show an alert and disable login. The remote blacklist (JSON example) can be maintained on an Amazon S3 Storage server.

Dev Tasks:

  • Store version list on S3 (est. 0.5 day)
  • Fetch remote blacklist (est. 0.2 day)
  • Get current version (est. 0.1 day)

Q: Should the version list be signed by Bloom labs? If yes, we have to check signature.

2. Block

Login functionality has to be blocked, otherwise the user could be exposed to vulnerabilities.

Dev Tasks:

  • Compare if blacklisted (est. 0.1 day)
  • Disable login (est. 0.5 day)

3. Show alert

If login is blocked an alert has to be created with a cancel button and an update to latest version button. Potentially, we might need to add an option to reopen the model if the user clicks on cancel.

UI Task:

  • Create an alert modal (est. 1 day)
  • Create a user flow/requirements for case user clicks cancel (est. 1 day)

Dev Task:

  • Create an alert modal (est. 0.5 day)
  • Create a user flow/requirements for case user clicks cancel (est. 0.3 day)

4. Update Bloom

This step does not require anything new in particular, since we already have the function in place to update Bloom. Potentially, we might need to adapt something UI-wise.

Dev Tasks:

  • Check if UI needs updating (est. 0.2 day)
  • Test everything (est. 1 day)

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Update Sentry initialization configuration

Description

Old parameters are being passed to the initialization and it needs to be updated.

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Add `Collection` tab to `GalleryView`

Description

On the NFT gallery view, we need a second tab for Collections

Requirements

  • Add second tab to gallery view

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Update splash screen animation

Description

The animation asset needs to be updated and replaced for the new brand.

Requirements

  • Update and replace existing splash screen animation with logo + text (animated)

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Integrate function for unwrapping base / IRC30 tokens

Description

We don't have support at the moment to send native tokens from L2 to L1. They should be unwrapped seamlessly to the user.

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Use builder pattern in SelectRecipientView

Description

Use the builder pattern in the SelectRecipientView. This includes removing as much of the business logic as possible from the Svelte component.

Blocked by: #6

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Fix Ledger device and profile mismatch

Description

It is possible to use a different Ledger device with a profile that wasn't created with that same device... so we need a way to check that the profile is being used with the correct Ledger device.

Notes:

  • We need to detect a mismatched device / mnemonic before we can know the connection status, since we can only know if there is a device mismatch if the user has the correct app open.
  • Generating an address and checking against persisted data will work, but requires user to have the Shimmer or Ethereum app open.

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Cleanup existing workflows

Description

Some workflows are now no longer relevant to keep around.

Requirements

  • Remove any v1-related workflows
  • Rename workflows / jobs accordingly and consistently
  • Update naming within workflows

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Resize images before storing

Description

After we downloaded the image, instead of storing the original file, we want to compress image into a thumbnail with reduced quality and store this one.

Requirements

  • Resize downloaded image
  • Store resized image as original
  • Remove old original image

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Update about window

Description

This separate application window contains outdated information and assets that should be updated accordingly.

Requirements

  • Update naming as needed
  • Update icons / assets as needed
  • Update copyright text
  • Change to lowercase U

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Redesign `SelectProfileView`

Description

This view needs to be updated with the redesign

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Implement manual download for NFT media

Description

If a NFT does not match the specified settings, it doesnt get downloaded. But the user should be able to manually trigger a download for an NFT

Requirements

  • Add a “Download” button to the NFT details menu
  • Start download/resize pipeline

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Hide/unhide NFTs in Collectibles gallery

Description

In the NFT details view, add a button to the menu to hide/unhide this NFT.
Hidden NFTs shouldnt be displayed in the gallery, related activities should still be shown.

Requirements

  • Impement hide/unhide button in NFT details view
  • Hide NFTs in gallery

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Use builder pattern in InputTokenAmountView

Description

Use the builder pattern in the InputTokenAmountView. This includes removing as much of the business logic as possible from the Svelte component.

Blocked by: #6

Requirements

No response

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Update taskbar application icons

Description

The alpha, beta, and prod icons need to be updated for the new brand.

Requirements

  • Update the icons:
    • Alpha
    • Beta
    • Prod
  • Adjust the code as needed

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Implement a L2 Transaction Summary Component

Description

Once L2 send flow is working, we need to show relevant L2 details to the users.

E.g.:

  • Gas Price
  • Gas Limit
  • ...

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Add Filter to Collectibles Gallery

Description

Add a filter button to the Collectibles Gallery. The opened modal should contain a filter to Show hidden Nfts.
After applying the filter in the popup, the list of collectibles should be updated

Requirements

  • Add Filter button + modal to collectibles
  • Implement Show hidden filter

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Integrate L2 (same chain) transfers with Ledger

Description

Hook up the function to transfer assets with the send flow.

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Update loading screen animation

Description

The loading screen animation needs to be replaced with an updated version.

Requirements

  • Update and replace the existing loading screen animation asset; just logo but animated

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Create the TransactionBuilder classes as per tech spec

Description

Kick off the transaction builder pattern by creating the TransactionBuilder classes. Look in the tech spec document for more information: https://www.notion.so/bloom-labs/a4587117fbb64b48a964e3cadddd3efa?v=e09ac4f315b44c1b82c0a34a4b1317ad&p=fcd64e226c6d41dd8aa1e35fb3792b90&pm=s

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Move UX config options out of the NewTransactionDetails interface

Description

The NewTransactionDetails interface contains UX config options. They should be extracted to the new ITransactionOptions interface.

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Create function to withdraw from L1.5 to L1

Description

This will be crucial for mitigating situations where a user's funds move on from L1 but don't reach L2 and are "stuck" on L1.5 (just needs some extra calls to the ISCP chain).

How to get funds stuck on L1.5:

  • Excess gas always gets "stuck" on this address

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Allow minting nft with raw json

Description

On the MintNFT form, we should allow to enter a raw json string instead of our inputs.
Add a second tab or switch button to switch between the inputs and the json input.

Requirements

  • Allow minting nft with raw json

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Show correct EVM address for Stronghold profiles

Description

Because Stronghold contains a user's private key(s), we need it to derive EVM addresses.

This requires the new wallet.rs API method to be released in @iota/wallet rc.35+

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Remove unnecessary folders

Description

There are folders that are irrelevant to keep around and thus can be removed.

Requirements

  • Remove .vscode folder (update .gitignore file(s) as necessary)
  • Remove specs folder

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Add Search to `Collection` tab

Description

Same as on the NFT tab, we need a search input to search through the collections.

Requirements

  • Add Search Input on Collections Tab
  • Search for collectionId or collectionName
  • Add search logic to only show collections which match the search value

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Implement fiat support for TokenAmountInput component

Description

This will allow the user to select a token amount via fiat values.

  • Add icon that switches fiat - shimmer value
  • Make sure that if no fiat value -> no switch icon
  • If currency is 3 or more characters put it into right bottom otherwise left top.

Requirements

No response

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Show ShimmerEVM Network Badge

Description

Show ShimmerEVM Test Network badge for assets with chain ID 1071

Tracked in FF: iotaledger/firefly#6962

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Cleanup package folders

Description

The package folders are not exactly that clean at the moment; they lack structure and organization, which would help make them more readable and maintainable.

Requirements

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Update Retype docs and configuration

Description

We need to re-purpose the handbook into a documentation page.

Requirements

  • Update Retype configuration
    • Change app name and versions
    • Change logos
    • Change URLs
  • Remove unneeded docs' markdown files
  • Leave deep links documentation

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Support for L2 Activities

Description

We are missing L2 activities for the following actions:

  • Send token on L2
  • Withdraw token from L1.5
  • Unwrap token from L2 -> L1
  • Smart Contract Interaction

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Copy existing code into new repository

Description

We will be copying all of the existing code into the new repository.

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Create function for transferring ERC20 tokens

Description

This involves sending ERC20 tokens on their respective L2.

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Update locale files

Description

The old locale is quite outdated now.

Requirements

  • Replace instances of "Firefly" with "Bloom"
  • Cleanup the locale file if possible

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Integrate function for transferring ERC20 tokens

Description

With the function to transfer ERC20 tokens created, it can be integrated within an actual send flow.

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Create function for unwrapping base / IRC30 tokens

Description

Implement function to unwrap native tokens and base coin from the core contracts using Ledger. This interacts with the withdraw() function similarly to transferAllowanceTo.

Reference: https://wiki.iota.org/shimmer/smart-contracts/guide/core_concepts/core_contracts/accounts#withdraw

Requirements

  • Unwrap base tokens
  • Unwrap IRC30 tokens
  • Organize interfaces and types
    • Use existing ones where possible

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Pass raw hex to the Ledger process

Description

At the moment, we're passing around Ethereum objects to the ledger process. Ideally, we should just pass in a hex string that gets signed. Once the signature and the original hex string is returned we can assemble the Transaction to be sent on the renderer process.

This requires a bit more experimentation, since the following error is thrown whenever we want to serialize it:

Error: Incompatible EIP155-based V 1071 and chain id 1071

A solution might be found here:

Additionally, it might be quicker to experiment with the following script to find a solution:

https://github.com/Tuditi/eth-ledger-app/blob/main/scripts/sign.ts

Requirements

  • Add pre-signing logic
  • Add post-signing logic
  • Move TX_OPTIONS to own file for constant

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Fix overlay components closing when opening deep links

Description

If the user clicks a deep link when the side drawer is open, a popup will appear while the side drawer stays in the view. This is undesired UX behavior, however we can't fix it for the following reasons:

  • closeDrawer (as intended) is inside the desktop package
  • The platform API for desktop is defined in ElectronApi.js, meaning we can't use TypeScript (otherwise we could simply use closeDrawer/closePopup)

🚫 Blocked until we either migrate the desktop JS code to TS or devise another solution (initially we just extended the window['__ELECTRON__'] object, but with it being in TS while most of the other implementation is in a separate JS file it feels a bit hacky).

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Integrate function to withdraw from L1.5 to L1

Description

Once the functionality has been added, it needs to be integrated with the UI so the user can make a withdraw should their funds get stuck.

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Delete files after specified period if it is not owned anymore

Description

If a NFT is not owned anymore, at some point we want to delete the related files.
In the settings, we need a way to input the amount of days for how long the user wants to keep the nfts after not owning them.

Requirements

  • Add Setting section for media expiry time
  • Add Days input (dropdown with (0,1,7,30,never) or number input?)
  • On login check not owned nfts for their not owned time and remove them

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Add `Collection` details view

Description

If the user clicks on a collection item, the user gets directed to the collection details view, which (for now) looks like the NFT gallery, but only containing NFTs from the selected collection

Requirements

  • Create Collection Details View as NFT list

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Update `package.json` files

Description

These files need to be updated for the rebrand.

Requirements

  • Update main file
  • Update desktop file
  • Update mobile file
  • Update shared file
  • Update versions to 1.0.0
  • Update names to Bloom
  • Update descriptions as necessary
  • Update URLs (e.g. repository links)

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Add setting for allowed file types

Description

Currently we try to download all images, videos (and audio in the future).
The users should be able to specify which types they want and don’t want. We need a setting where the user can select those types.

Requirements

  • Add Setting section for allowed file types
  • Add checkboxes for “Image”, “Video” and “Audio”
  • Use allowed file types in pre-download validation

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Use builder pattern in SelectAssetView

Description

Use the builder pattern in the SelectAssetView. This includes removing as much of the business logic as possible from the Svelte component.

Blocked by: #6

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Make the asset tile consistent with the Transaction Summary

Description

We could improve consistency by showing the same TokenAmountTile when clicking on asset as in the TransactionSummary.

image

could be changed to:
image

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

️🛠 - Use builder pattern in TransactionSummaryView

Description

Use the builder pattern in the TransactionSummaryView. This includes removing as much of the business logic as possible from the Svelte component.

Blocked by: #6

Requirements

TBD

Checklist

  • I have linked the correct milestone and/or project(s)
  • I have added the appropriate labels
  • I have assigned this task to the correct people

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.