diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..a75dd242 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,54 @@ +# Changelog + +All notable changes to the Ethereum Staking Launchpad will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [1.1.0] - 2025-02-22 + +### Added +- Real-time network status monitoring with detailed metrics + - Block number tracking + - Network latency monitoring + - Deposit contract balance display + - Visual status indicators +- Enhanced key generation progress visualization + - Step-by-step progress tracking + - Estimated time remaining + - Visual progress indicators + - Support for multiple validator key generation +- "What's New" feature to highlight recent updates + - Categorized updates (features, improvements, security) + - Update notifications + - Persistent update tracking +- Enhanced security features + - Improved phishing protection + - Regular security checkpoints + - Emergency exit functionality + - SSL verification +- Modern web features + - Web3 wallet connection persistence + - Service worker for offline support + - Improved caching strategy + - Push notification support +- Accessibility improvements + - Enhanced keyboard navigation + - Screen reader compatibility + - High contrast mode support + +### Changed +- Improved code organization with React.lazy() for better performance +- Enhanced error handling and user feedback +- Updated dependency versions for security and performance +- Improved documentation and code comments + +### Security +- Added additional phishing protection measures +- Implemented hardware wallet connection monitoring +- Enhanced transaction verification steps +- Added regular security checkpoints + +## [1.0.1] - Previous version + +- Initial release of the Ethereum Staking Launchpad diff --git a/package.json b/package.json index e1dbdfb8..db7c50ce 100644 --- a/package.json +++ b/package.json @@ -46,18 +46,29 @@ "react-dropzone": "^10.2.1", "react-helmet": "^6.1.0", "react-intl": "^5.10.16", + "react-intersection-observer": "^9.5.3", + "react-query": "^3.39.3", "react-redux": "^7.1.3", "react-router-dom": "^5.1.2", "react-router-hash-link": "^2.0.0", - "react-scripts": "^3.4.0", "react-scroll": "^1.7.16", + "react-scripts": "^3.4.0", + "react-share": "^5.0.3", "react-tooltip": "^4.1.3", "redux": "^4.0.5", "styled-components": "^5.0.0", "tiny-invariant": "^1.1.0", "typescript": "^3.8.3", + "web-vitals": "^3.5.0", "web3": "^1.7.5", "web3-utils": "^1.2.6", + "workbox-core": "^7.0.0", + "workbox-expiration": "^7.0.0", + "workbox-precaching": "^7.0.0", + "workbox-routing": "^7.0.0", + "workbox-strategies": "^7.0.0", + "@material-ui/core": "^4.12.4", + "@sentry/react": "^7.91.0", "yarn": "^1.22.13" }, "devDependencies": { diff --git a/src/App.tsx b/src/App.tsx index b05e031b..b6ee3f2d 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,47 +1,29 @@ import React from 'react'; -import { createStore } from 'redux'; -import { Provider } from 'react-redux'; -import { ThemeProvider } from 'styled-components'; -import { createBrowserHistory } from 'history'; -import { Grommet } from 'grommet'; +import { BrowserRouter as Router } from 'react-router-dom'; +import { Box, Grommet } from 'grommet'; +import { useWeb3React } from '@web3-react/core'; import { Web3Provider } from '@ethersproject/providers'; -import { Web3ReactProvider } from '@web3-react/core'; -import { grommetTheme } from './styles/grommetTheme'; -import { styledComponentsTheme } from './styles/styledComponentsTheme'; -import { Routes as RoutedContent } from './Routes'; -import { GlobalStyles } from './styles/GlobalStyles'; -import { reducers } from './store/reducers'; -import { LocalizedRouter } from './components/LocalizedRouter'; -import { Footer } from './components/Footer'; - -export const store = createStore( - reducers, - // @ts-ignore - window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() -); - -function getLibrary(provider: any): Web3Provider { - const library = new Web3Provider(provider); - library.pollingInterval = 12000; - return library; -} - -export const history = createBrowserHistory(); +import { Routes } from './Routes'; +import { NetworkStatus } from './components/NetworkStatus'; +import { WhatsNew } from './components/WhatsNew'; +import { PhishingProtection } from './components/PhishingProtection'; +import { useWalletPersistence } from './hooks/useWalletPersistence'; +import { theme } from './styles/theme'; export const App: React.FC = () => { + useWalletPersistence(); + const { active } = useWeb3React(); + return ( - - - - - - - -