mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-03-13 06:39:03 +00:00
Merge branch 'master' into document-nav-spacing
This commit is contained in:
commit
4f45c02127
20 changed files with 300 additions and 220 deletions
|
|
@ -3,8 +3,7 @@ title: Command-line Options
|
|||
description: A list of commands for Geth
|
||||
---
|
||||
|
||||
Geth is primarily controlled using the command line. Geth is started using the `geth` command. Geth is stopped by pressing `ctrl-c`. There are then many combinations of commands that configure precisely how geth will run. These commands are displayed below. The same information can be
|
||||
obtained at any time from your Geth instance by running:
|
||||
Geth is primarily controlled using the command line. Geth is started using the `geth` command. Geth is stopped by pressing `ctrl-c`. There are then many combinations of commands that configure precisely how geth will run. These commands are displayed below. The same information can be obtained at any time from your Geth instance by running:
|
||||
|
||||
```sh
|
||||
geth --help
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import { FC } from 'react';
|
|||
export const Breadcrumbs: FC = () => {
|
||||
const router = useRouter();
|
||||
|
||||
let pathSplit = router.asPath.split('/');
|
||||
let pathSplit = router.asPath.split('#')[0].split('/');
|
||||
pathSplit = pathSplit.splice(1, pathSplit.length);
|
||||
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -9,8 +9,9 @@ import {
|
|||
Stack,
|
||||
Text
|
||||
} from '@chakra-ui/react';
|
||||
import { AddIcon, MinusIcon } from '@chakra-ui/icons';
|
||||
import { AddIcon, MinusIcon } from '../svgs/'
|
||||
import NextLink from 'next/link';
|
||||
import { useRouter } from 'next/router';
|
||||
|
||||
import { LinksList } from './';
|
||||
|
||||
|
|
@ -20,62 +21,83 @@ interface Props {
|
|||
navLinks: NavLink[];
|
||||
}
|
||||
|
||||
export const DocsLinks: FC<Props> = ({ navLinks }) => (
|
||||
<Stack border='2px' borderColor='primary'>
|
||||
{navLinks.map(({ id, to, items }, idx) => {
|
||||
return (
|
||||
<Accordion key={id} allowToggle mt='0 !important' defaultIndex={[0]}>
|
||||
<AccordionItem border='none'>
|
||||
{({ isExpanded }) => (
|
||||
<>
|
||||
<AccordionButton
|
||||
borderBottom={navLinks.length - 1 === idx ? 'none' : '2px'}
|
||||
p={0}
|
||||
borderColor='primary'
|
||||
justifyContent='space-between'
|
||||
placeContent='flex-end'
|
||||
bg='button-bg'
|
||||
>
|
||||
<Stack
|
||||
p={4}
|
||||
borderRight={items ? '2px' : 'none'}
|
||||
export const DocsLinks: FC<Props> = ({ navLinks }) => {
|
||||
const router = useRouter();
|
||||
const { slug } = router.query;
|
||||
return (
|
||||
<Stack border='2px' borderColor='primary'>
|
||||
{navLinks.map(({ id, to, items }, idx) => {
|
||||
const split = to?.split('/')
|
||||
const isActive = slug && split && split[split.length - 1] === slug[slug.length - 1];
|
||||
return (
|
||||
<Accordion key={id} allowToggle mt='0 !important' defaultIndex={[0]}>
|
||||
<AccordionItem border='none'>
|
||||
{({ isExpanded }) => (
|
||||
<>
|
||||
<AccordionButton
|
||||
borderBottom={navLinks.length - 1 === idx ? 'none' : '2px'}
|
||||
p={0}
|
||||
borderColor='primary'
|
||||
w='100%'
|
||||
bg='bg'
|
||||
justifyContent='space-between'
|
||||
placeContent='flex-end'
|
||||
bg='button-bg'
|
||||
data-group
|
||||
>
|
||||
{to ? (
|
||||
<NextLink href={to} passHref>
|
||||
<Link>
|
||||
<Text textStyle='docs-nav-dropdown'>{id}</Text>
|
||||
</Link>
|
||||
</NextLink>
|
||||
) : (
|
||||
<Text textStyle='docs-nav-dropdown'>{id}</Text>
|
||||
)}
|
||||
</Stack>
|
||||
|
||||
{items && (
|
||||
<Stack minW='61px'>
|
||||
<Center>
|
||||
{isExpanded ? (
|
||||
<MinusIcon w='20px' h='20px' color='primary' />
|
||||
) : (
|
||||
<AddIcon w='20px' h='20px' color='primary' />
|
||||
)}
|
||||
</Center>
|
||||
<Stack
|
||||
p={4}
|
||||
borderRight={items ? '2px' : 'none'}
|
||||
borderColor='primary'
|
||||
w='100%'
|
||||
bg='bg'
|
||||
_groupHover={{ background: 'primary', color: 'bg', textDecoration: 'none' }}
|
||||
>
|
||||
{to ? (
|
||||
<NextLink href={to} passHref>
|
||||
<Link textDecoration='none !important'>
|
||||
<Text
|
||||
textStyle='docs-nav-dropdown'
|
||||
color={isActive ? 'primary' : 'unset'}
|
||||
_before={{
|
||||
content: '"■"',
|
||||
verticalAlign: '-1.25px',
|
||||
marginInlineEnd: 2,
|
||||
fontSize: 'lg',
|
||||
display: isActive ? 'unset' : 'none',
|
||||
}}
|
||||
_groupHover={{ color: 'bg' }}
|
||||
>
|
||||
{id}
|
||||
</Text>
|
||||
</Link>
|
||||
</NextLink>
|
||||
) : (
|
||||
<Text textStyle='docs-nav-dropdown'>{id}</Text>
|
||||
)}
|
||||
</Stack>
|
||||
|
||||
{items && (
|
||||
<Stack minW='61px'>
|
||||
<Center>
|
||||
{isExpanded ? (
|
||||
<MinusIcon w='24px' h='24px' color='primary' />
|
||||
) : (
|
||||
<AddIcon w='24px' h='24px' color='primary' />
|
||||
)}
|
||||
</Center>
|
||||
</Stack>
|
||||
)}
|
||||
</AccordionButton>
|
||||
{items && (
|
||||
<AccordionPanel borderBottom='2px solid' borderColor='primary' px={0} py={4}>
|
||||
<LinksList links={items} />
|
||||
</AccordionPanel>
|
||||
)}
|
||||
</AccordionButton>
|
||||
{items && (
|
||||
<AccordionPanel borderBottom='2px solid' borderColor='primary' px={0} py={4}>
|
||||
<LinksList links={items} />
|
||||
</AccordionPanel>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
</AccordionItem>
|
||||
</Accordion>
|
||||
);
|
||||
})}
|
||||
</Stack>
|
||||
);
|
||||
</>
|
||||
)}
|
||||
</AccordionItem>
|
||||
</Accordion>
|
||||
);
|
||||
})}
|
||||
</Stack>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,11 +28,28 @@ export const DocumentNav: FC<Props> = ({ content }) => {
|
|||
{parsedHeadings.map((heading, idx) => {
|
||||
return (
|
||||
<NextLink key={`${idx} ${heading?.title}`} href={`#${heading?.headingId}`}>
|
||||
<Link m={0}>
|
||||
<Link m={0} textDecoration='none !important'>
|
||||
<Text
|
||||
color={activeHash === heading?.headingId ? 'body' : 'primary'}
|
||||
textStyle='document-nav-link'
|
||||
mb={3.5}
|
||||
_hover={{
|
||||
background: 'primary',
|
||||
boxShadow: '0 0 0 6px var(--chakra-colors-primary)',
|
||||
color: 'bg',
|
||||
}}
|
||||
_focus={{
|
||||
background: 'primary',
|
||||
boxShadow: '0 0 0 6px var(--chakra-colors-primary) !important',
|
||||
color: 'bg',
|
||||
outline: '2px solid var(--chakra-colors-secondary) !important',
|
||||
outlineOffset: '4px',
|
||||
}}
|
||||
_active={{
|
||||
background: 'secondary',
|
||||
boxShadow: '0 0 0 6px var(--chakra-colors-secondary)',
|
||||
color: 'bg',
|
||||
}}
|
||||
>
|
||||
{heading?.title}
|
||||
</Text>
|
||||
|
|
|
|||
|
|
@ -1,35 +0,0 @@
|
|||
import { FC } from 'react';
|
||||
import { Link, Stack, Text } from '@chakra-ui/react';
|
||||
import NextLink from 'next/link';
|
||||
|
||||
import { NavLink } from '../../../types';
|
||||
|
||||
interface LinksListProps {
|
||||
links: NavLink[];
|
||||
}
|
||||
|
||||
export const LinksList: FC<LinksListProps> = ({ links }) => (
|
||||
<Stack px={4}>
|
||||
{links.map(({ id, to, items }) => {
|
||||
return to ? (
|
||||
<Stack key={id}>
|
||||
<NextLink href={to} passHref key={id}>
|
||||
<Link>
|
||||
<Text textStyle='docs-nav-links' color={items ? 'primary' : 'body'}>
|
||||
{id}
|
||||
</Text>
|
||||
</Link>
|
||||
</NextLink>
|
||||
{items && <LinksList links={items} />}
|
||||
</Stack>
|
||||
) : (
|
||||
<Stack key={id}>
|
||||
<Text textStyle='docs-nav-links' color={items ? 'primary' : 'body'}>
|
||||
{id}
|
||||
</Text>
|
||||
{items && <LinksList links={items} />}
|
||||
</Stack>
|
||||
);
|
||||
})}
|
||||
</Stack>
|
||||
);
|
||||
57
src/components/UI/docs/LinksList.tsx
Normal file
57
src/components/UI/docs/LinksList.tsx
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
import { FC } from 'react';
|
||||
import { Link, Stack, Text } from '@chakra-ui/react';
|
||||
import NextLink from 'next/link';
|
||||
import { useRouter } from 'next/router';
|
||||
|
||||
import { NavLink } from '../../../types';
|
||||
|
||||
interface LinksListProps {
|
||||
links: NavLink[];
|
||||
}
|
||||
|
||||
export const LinksList: FC<LinksListProps> = ({ links }) => {
|
||||
const router = useRouter();
|
||||
const { slug } = router.query;
|
||||
return (
|
||||
<Stack px={4}>
|
||||
{links.map(({ id, to, items }) => {
|
||||
const split = to?.split('/')
|
||||
const isActive = slug && split && split[split.length - 1] === slug[slug.length - 1];
|
||||
return to ? (
|
||||
<Stack key={id} pb={items ? 6 : 0} _hover={{ background: 'primary', color: 'bg' }} data-group>
|
||||
<NextLink href={to} passHref key={id}>
|
||||
<Link textDecoration='none !important'>
|
||||
<Text
|
||||
textStyle='docs-nav-links'
|
||||
color={items || isActive ? 'primary' : 'body'}
|
||||
_before={{
|
||||
content: '"■"',
|
||||
verticalAlign: '-1.25px',
|
||||
marginInlineEnd: 2,
|
||||
fontSize: 'lg',
|
||||
display: isActive ? 'unset' : 'none',
|
||||
}}
|
||||
_groupHover={{
|
||||
color: 'bg',
|
||||
boxShadow: '0 0 0 var(--chakra-space-2) var(--chakra-colors-primary)',
|
||||
|
||||
}}
|
||||
>
|
||||
{id}
|
||||
</Text>
|
||||
</Link>
|
||||
</NextLink>
|
||||
{items && <LinksList links={items} />}
|
||||
</Stack>
|
||||
) : (
|
||||
<Stack key={id} pb={6}>
|
||||
<Text textStyle='docs-nav-links' color={items ? 'primary' : 'body'}>
|
||||
{id}
|
||||
</Text>
|
||||
{items && <LinksList links={items} />}
|
||||
</Stack>
|
||||
);
|
||||
})}
|
||||
</Stack>
|
||||
);
|
||||
};
|
||||
|
|
@ -101,7 +101,7 @@ const MDComponents = {
|
|||
},
|
||||
// tables
|
||||
table: ({ children }: any) => (
|
||||
<Flex maxW='min(100%, 100vw)' overflowX='auto'>
|
||||
<Flex overflowX='auto'>
|
||||
<Table
|
||||
variant='striped'
|
||||
colorScheme='greenAlpha'
|
||||
|
|
@ -143,7 +143,7 @@ const MDComponents = {
|
|||
);
|
||||
},
|
||||
li: ({ children }: any) => {
|
||||
return <ListItem color='primary'>{children}</ListItem>;
|
||||
return <ListItem>{children}</ListItem>;
|
||||
},
|
||||
note: ({ children }: any) => {
|
||||
return <Note>{children}</Note>;
|
||||
|
|
|
|||
|
|
@ -3,6 +3,6 @@ export * from './Code';
|
|||
export * from './DocsLinks';
|
||||
export * from './DocsNav';
|
||||
export * from './DocumentNav';
|
||||
export * from './LinkList';
|
||||
export * from './LinksList';
|
||||
export * from './Note';
|
||||
export { default } from './MDComponents';
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@ export const DownloadsTable: FC<Props> = ({
|
|||
androidData.length
|
||||
];
|
||||
|
||||
const LAST_2_LINUX_RELEASES = amountOfReleasesToShow + 12;
|
||||
|
||||
return (
|
||||
<Stack sx={{ mt: '0 !important' }} borderBottom='2px solid' borderColor='primary'>
|
||||
<Tabs variant='unstyled' onChange={idx => setTotalReleases(totalReleases[idx])}>
|
||||
|
|
@ -61,7 +63,7 @@ export const DownloadsTable: FC<Props> = ({
|
|||
<TabPanel p={0}>
|
||||
<DataTable
|
||||
columnHeaders={DOWNLOADS_TABLE_TAB_COLUMN_HEADERS}
|
||||
data={linuxData.slice(0, amountOfReleasesToShow)}
|
||||
data={linuxData.slice(0, LAST_2_LINUX_RELEASES)}
|
||||
/>
|
||||
</TabPanel>
|
||||
<TabPanel p={0}>
|
||||
|
|
|
|||
21
src/components/UI/svgs/AddIcon.tsx
Normal file
21
src/components/UI/svgs/AddIcon.tsx
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
import { IconProps } from '@chakra-ui/react';
|
||||
import { createIcon } from '@chakra-ui/icons';
|
||||
|
||||
const [w, h] = [24, 24];
|
||||
|
||||
const Icon = createIcon({
|
||||
displayName: 'AddIcon',
|
||||
viewBox: `0 0 ${w} ${h}`,
|
||||
path: (
|
||||
<svg width={w} height={h} fill='none' xmlns='http://www.w3.org/2000/svg'>
|
||||
<g fill="currentColor">
|
||||
<rect height="2" width="20" x="2" y="11"></rect>
|
||||
<rect height="20" width="2" x="11" y="2"></rect>
|
||||
</g>
|
||||
</svg>
|
||||
)
|
||||
});
|
||||
|
||||
export const AddIcon: React.FC<IconProps> = props => (
|
||||
<Icon h={h} w={w} color='primary' {...props} />
|
||||
);
|
||||
20
src/components/UI/svgs/MinusIcon.tsx
Normal file
20
src/components/UI/svgs/MinusIcon.tsx
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
import { IconProps } from '@chakra-ui/react';
|
||||
import { createIcon } from '@chakra-ui/icons';
|
||||
|
||||
const [w, h] = [24, 24];
|
||||
|
||||
const Icon = createIcon({
|
||||
displayName: 'MinusIcon',
|
||||
viewBox: `0 0 ${w} ${h}`,
|
||||
path: (
|
||||
<svg width={w} height={h} fill='none' xmlns='http://www.w3.org/2000/svg'>
|
||||
<g fill="currentColor">
|
||||
<rect height="2" width="20" x="2" y="11"></rect>
|
||||
</g>
|
||||
</svg>
|
||||
)
|
||||
});
|
||||
|
||||
export const MinusIcon: React.FC<IconProps> = props => (
|
||||
<Icon h={h} w={w} color='primary' {...props} />
|
||||
);
|
||||
|
|
@ -1,5 +1,7 @@
|
|||
export * from './AddIcon';
|
||||
export * from './GlyphHome';
|
||||
export * from './GopherDownloads';
|
||||
export * from './GopherHomeFront';
|
||||
export * from './GopherHomeLinks';
|
||||
export * from './GopherHomeNodes';
|
||||
export * from './MinusIcon';
|
||||
|
|
|
|||
|
|
@ -12,6 +12,12 @@ import {
|
|||
|
||||
import { DiscordIcon, GitHubIcon, TwitterIcon } from '../UI/icons';
|
||||
|
||||
const hoverStyles = {
|
||||
textDecoration: 'none',
|
||||
bg: 'primary',
|
||||
color: 'bg !important'
|
||||
};
|
||||
|
||||
export const Footer: FC = () => {
|
||||
return (
|
||||
<Flex mt={4} direction={{ base: 'column', lg: 'row' }}>
|
||||
|
|
@ -32,11 +38,7 @@ export const Footer: FC = () => {
|
|||
<Center
|
||||
flex={1}
|
||||
color='primary'
|
||||
_hover={{
|
||||
textDecoration: 'none',
|
||||
bg: 'primary',
|
||||
color: 'bg !important'
|
||||
}}
|
||||
_hover={hoverStyles}
|
||||
borderRight='2px solid'
|
||||
borderColor='primary'
|
||||
p={4}
|
||||
|
|
@ -51,11 +53,7 @@ export const Footer: FC = () => {
|
|||
<Center
|
||||
flex={1}
|
||||
color='primary'
|
||||
_hover={{
|
||||
textDecoration: 'none',
|
||||
bg: 'primary',
|
||||
color: 'bg !important'
|
||||
}}
|
||||
_hover={hoverStyles}
|
||||
borderRight={{
|
||||
base: 'none',
|
||||
md: '2px solid'
|
||||
|
|
@ -81,9 +79,7 @@ export const Footer: FC = () => {
|
|||
lg: 'none'
|
||||
}}
|
||||
borderColor='primary !important'
|
||||
_hover={{
|
||||
bg: 'primary'
|
||||
}}
|
||||
_hover={hoverStyles}
|
||||
p={4}
|
||||
>
|
||||
<NextLink href={GETH_TWITTER_URL} passHref>
|
||||
|
|
@ -96,9 +92,7 @@ export const Footer: FC = () => {
|
|||
<Center
|
||||
data-group
|
||||
flex={1}
|
||||
_hover={{
|
||||
bg: 'primary'
|
||||
}}
|
||||
_hover={hoverStyles}
|
||||
borderWidth='2px'
|
||||
borderStyle='none solid'
|
||||
borderColor='primary'
|
||||
|
|
@ -114,9 +108,7 @@ export const Footer: FC = () => {
|
|||
<Center
|
||||
data-group
|
||||
flex={1}
|
||||
_hover={{
|
||||
bg: 'primary'
|
||||
}}
|
||||
_hover={hoverStyles}
|
||||
p={4}
|
||||
>
|
||||
<NextLink href={GETH_REPO_URL} passHref>
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ export const GETH_DISCORD_URL = 'https://discord.com/invite/nthXNEv';
|
|||
export const GO_URL = 'https://go.dev/';
|
||||
|
||||
// Downloads
|
||||
export const DEFAULT_BUILD_AMOUNT_TO_SHOW = 10;
|
||||
export const DEFAULT_BUILD_AMOUNT_TO_SHOW = 12;
|
||||
export const DOWNLOAD_HEADER_BUTTONS: {
|
||||
[index: string]: {
|
||||
name: string;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
- id: Getting started
|
||||
to: /docs/getting-started
|
||||
items:
|
||||
- id: Introduction
|
||||
to: /docs/getting-started
|
||||
- id: Hardware requirements
|
||||
to: /docs/getting-started/hardware-requirements
|
||||
- id: Installing Geth
|
||||
|
|
@ -8,8 +9,9 @@
|
|||
- id: Consensus clients
|
||||
to: /docs/getting-started/consensus-clients
|
||||
- id: Fundamentals
|
||||
to: /docs/fundamentals
|
||||
items:
|
||||
- id: Introduction
|
||||
to: /docs/fundamentals
|
||||
- id: Node architecture
|
||||
to: /docs/fundamentals/node-architecture
|
||||
- id: Command-line options
|
||||
|
|
@ -35,8 +37,9 @@
|
|||
- id: Interacting with Geth
|
||||
items:
|
||||
- id: JSON-RPC Server
|
||||
to: /docs/interacting-with-geth/rpc
|
||||
items:
|
||||
- id: Introduction
|
||||
to: /docs/interacting-with-geth/rpc
|
||||
- id: Batch requests
|
||||
to: /docs/interacting-with-geth/rpc/batch
|
||||
- id: GraphQL server
|
||||
|
|
@ -70,8 +73,9 @@
|
|||
- id: 'JavaScript Console 2: Contracts'
|
||||
to: /docs/interacting-with-geth/javascript-console-contracts
|
||||
- id: Developers
|
||||
to: /docs/developers
|
||||
items:
|
||||
- id: Introduction
|
||||
to: /docs/developers
|
||||
- id: Dapp developers
|
||||
items:
|
||||
- id: Go API
|
||||
|
|
@ -83,8 +87,9 @@
|
|||
- id: Geth for Mobile
|
||||
to: /docs/developers/dapp-developer/mobile
|
||||
- id: EVM tracing
|
||||
to: /docs/developers/evm-tracing
|
||||
items:
|
||||
- id: Introduction
|
||||
to: /docs/developers/evm-tracing
|
||||
- id: Basic traces
|
||||
to: /docs/developers/evm-tracing/basic-traces
|
||||
- id: Built-in tracers
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ export const getStaticProps: GetStaticProps = async context => {
|
|||
content,
|
||||
navLinks,
|
||||
lastModified: getParsedDate(lastModified.mtime, {
|
||||
month: 'numeric',
|
||||
month: 'long',
|
||||
day: 'numeric',
|
||||
year: 'numeric'
|
||||
})
|
||||
|
|
@ -111,12 +111,12 @@ const DocPage: NextPage<Props> = ({ frontmatter, content, navLinks, lastModified
|
|||
{frontmatter.title}
|
||||
</Heading>
|
||||
<Text as='span' mt='0 !important'>
|
||||
last edited {lastModified}
|
||||
Last edited on {lastModified}
|
||||
</Text>
|
||||
</Stack>
|
||||
|
||||
<Flex width='100%' placeContent='space-between'>
|
||||
<Stack maxW='768px' sx={{ "*:first-child": { marginTop: '0 !important' } }}>
|
||||
<Flex width='100%' placeContent='space-between' gap={8}>
|
||||
<Stack maxW='min(100%, 768px)' sx={{ "*:first-of-type": { marginTop: '0 !important' } }}>
|
||||
<ReactMarkdown
|
||||
remarkPlugins={[gfm]}
|
||||
rehypePlugins={[rehypeRaw]}
|
||||
|
|
@ -126,7 +126,7 @@ const DocPage: NextPage<Props> = ({ frontmatter, content, navLinks, lastModified
|
|||
</ReactMarkdown>
|
||||
</Stack>
|
||||
|
||||
<Stack display={{ base: 'none', xl: 'block' }} w={48}>
|
||||
<Stack display={{ base: 'none', xl: 'block' }} w="clamp(var(--chakra-sizes-40), 12.5%, var(--chakra-sizes-56))">
|
||||
<DocumentNav content={content} />
|
||||
</Stack>
|
||||
</Flex>
|
||||
|
|
|
|||
|
|
@ -287,11 +287,11 @@ const DownloadsPage: NextPage<Props> = ({ data }) => {
|
|||
const [totalDevBuilds, setTotalDevBuilds] = useState(ALL_LINUX_DEV_BUILDS.length);
|
||||
|
||||
const showMoreStableReleases = () => {
|
||||
setAmountStableReleases(amountStableReleases + 10);
|
||||
setAmountStableReleases(amountStableReleases + 12);
|
||||
};
|
||||
|
||||
const showMoreDevBuilds = () => {
|
||||
setAmountDevBuilds(amountDevBuilds + 10);
|
||||
setAmountDevBuilds(amountDevBuilds + 12);
|
||||
};
|
||||
|
||||
return (
|
||||
|
|
@ -374,25 +374,14 @@ const DownloadsPage: NextPage<Props> = ({ data }) => {
|
|||
<Flex
|
||||
sx={{ mt: '0 !important' }}
|
||||
flexDirection={{ base: 'column', md: 'row' }}
|
||||
justifyContent='space-between'
|
||||
justifyContent='flex-end'
|
||||
alignItems='center'
|
||||
>
|
||||
<Stack p={4} display={{ base: 'none', md: 'block' }} mx='auto'>
|
||||
<Text textStyle='hero-text-small'>
|
||||
{totalStableReleases > 0
|
||||
? `Showing ${Math.min(
|
||||
amountStableReleases,
|
||||
totalStableReleases
|
||||
)} latest releases of
|
||||
a total ${totalStableReleases} releases`
|
||||
: `No releases`}
|
||||
</Text>
|
||||
</Stack>
|
||||
|
||||
{totalStableReleases > amountStableReleases && (
|
||||
<Stack
|
||||
sx={{ mt: '0 !important' }}
|
||||
borderLeft={{ base: 'none', md: '2px solid #11866f' }}
|
||||
borderLeft={{ base: 'none', md: '2px solid var(--chakra-colors-primary)' }}
|
||||
w={{ base: '100%', md: 'auto' }}
|
||||
>
|
||||
<Link
|
||||
as='button'
|
||||
|
|
@ -440,22 +429,14 @@ const DownloadsPage: NextPage<Props> = ({ data }) => {
|
|||
<Flex
|
||||
sx={{ mt: '0 !important' }}
|
||||
flexDirection={{ base: 'column', md: 'row' }}
|
||||
justifyContent='space-between'
|
||||
justifyContent='flex-end'
|
||||
alignItems='center'
|
||||
>
|
||||
<Stack p={4} display={{ base: 'none', md: 'block' }} mx='auto'>
|
||||
<Text textStyle='hero-text-small'>
|
||||
{totalDevBuilds > 0
|
||||
? `Showing ${Math.min(amountDevBuilds, totalDevBuilds)} latest releases of
|
||||
a total ${totalDevBuilds} releases`
|
||||
: `No releases`}
|
||||
</Text>
|
||||
</Stack>
|
||||
|
||||
{totalDevBuilds > amountDevBuilds && (
|
||||
<Stack
|
||||
sx={{ mt: '0 !important' }}
|
||||
borderLeft={{ base: 'none', md: '2px solid #11866f' }}
|
||||
borderLeft={{ base: 'none', md: '2px solid var(--chakra-colors-primary)' }}
|
||||
w={{ base: '100%', md: 'auto' }}
|
||||
>
|
||||
<Link as='button' variant='button-link-secondary' onClick={showMoreDevBuilds}>
|
||||
<Text
|
||||
|
|
|
|||
|
|
@ -15,13 +15,13 @@ export const Link = {
|
|||
light: {
|
||||
textDecoration: 'underline',
|
||||
color: 'primary',
|
||||
_hover: { color: 'body', textDecorationColor: 'body' },
|
||||
_hover: { color: 'body', textDecorationColor: 'secondary' },
|
||||
_focus: {
|
||||
color: 'primary',
|
||||
boxShadow: '0 0 0 1px var(--chakra-colors-primary)',
|
||||
boxShadow: '0 0 0 1px var(--chakra-colors-primary) !important',
|
||||
textDecoration: 'none'
|
||||
},
|
||||
_pressed: {
|
||||
_active: {
|
||||
color: 'secondary',
|
||||
textDecorationColor: 'secondary'
|
||||
}
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ export const textStyles = {
|
|||
fontWeight: 700,
|
||||
textTransform: 'uppercase',
|
||||
textAlign: 'center',
|
||||
fontSize: 'sm'
|
||||
fontSize: { base: 'xs', sm: 'sm' }
|
||||
},
|
||||
'docs-nav-dropdown': {
|
||||
fontFamily: 'heading',
|
||||
|
|
|
|||
117
url-list.csv
117
url-list.csv
|
|
@ -1,60 +1,57 @@
|
|||
OLD Geth website URLS,Equivalent NEW website URLs,Relative path to markdown file,Notes
|
||||
https://geth.ethereum.org/,https://geth.ethereum.org,src/pages/homepage,will be react page
|
||||
https://geth.ethereum.org/downloads/,https://geth.ethereum.org/downloads,src/pages/downloads,will be react page
|
||||
https://geth.ethereum.org/docs/,https://geth.ethereum.org/docs,src/pages/docs/index.md,n/a
|
||||
https://geth.ethereum.org/docs/getting-started,https://geth.ethereum.org/docs/getting_started/getting-started,src/pages/docs/getting_started/getting_started.md,n/a
|
||||
https://geth.ethereum.org/docs/getting-started/geth-and-clef,https://geth.ethereum.org/docs/getting_started_with_clef,src/pages/docs/getting_started/getting-started-with-clef.md,n/a
|
||||
https://geth.ethereum.org/docs/getting-started/dev-mode,https://geth.ethereum.org/docs/developers/geth-developers/dev-mode,src/pages/docs/developers/geth-developer/dev-mode.md,n/a
|
||||
https://geth.ethereum.org/docs/install-and-build/installing-geth,https://geth.ethereum.org/docs/getting_started/install-geth,src/pages/docs/getting_started/backup-restore.md,n/a
|
||||
https://geth.ethereum.org/docs/install-and-build/backup-restore,https://geth.ethereum.org/docs/getting_started/backup-restore,src/pages/docs/getting_started/installing-geth.md,n/a
|
||||
https://geth.ethereum.org/docs/install-and-build/cross-compile,page removed,page removed,n/a
|
||||
https://geth.ethereum.org/docs/interface/command-line-options,https://geth.ethereum.org/fundamentals/command-line-options,src/pages/docs/fundamentals/command-line-options.md,n/a
|
||||
https://geth.ethereum.org/docs/interface/pruning,https://geth.ethereum.org/docs/fundamentals/pruning,src/pages/docs/fundamentals/pruning.md,n/a
|
||||
https://geth.ethereum.org/docs/interface/merge,page removed,page removed,n/a
|
||||
https://geth.ethereum.org/docs/interface/consensus-clients,https://geth.ethereum.org/docs/getting_started/consensus-client,src/pages/docs/getting_started/consensus-clients.md,n/a
|
||||
https://geth.ethereum.org/docs/interface/peer-to-peer,https://geth.ethereum.org/docs/fundamentals/peer-to-peer,src/pages/docs/fundamentals/peer-to-peer.md,n/a
|
||||
https://geth.ethereum.org/docs/interface/les,https://geth.ethereum.org/docs/fundamentals/les,src/pages/docs/fundamentals/les.md,n/a
|
||||
https://geth.ethereum.org/docs/interface/managing-your-accounts,https://geth.ethereum.org/docs/fundamentals/account-management,src/pages/docs/fundamentals/account-management.md,n/a
|
||||
https://geth.ethereum.org/docs/faq,https://geth.ethereum.org/docs/faq,src/pages/docs/faq.md,n/a
|
||||
https://geth.ethereum.org/docs/interface/javascript-console,https://geth.ethereum.org/docs/interacting-with-geth/javascript-console,src/pages/docs/interacting-with-geth/javascript-console.md,n/a
|
||||
https://geth.ethereum.org/docs/interface/private-network,https://geth.ethereum.org/docs/developers/geth-developer/private-network,src/pages/docs/developers/geth-developer/private-network.md,n/a
|
||||
https://geth.ethereum.org/docs/interface/mining,page removed,page removed,n/a
|
||||
https://geth.ethereum.org/docs/interface/metrics,https://geth.ethereum.org/docs/monitoring/metrics,src/pages/docs/monitoring/metrics.md,n/a
|
||||
https://geth.ethereum.org/docs/dapp/native,https://geth.ethereum.org/docs/developers/dapp-developer/native,src/pages/docs/developers/dapp-developer/native.md,n/a
|
||||
https://geth.ethereum.org/docs/dapp/tracing,https://geth.ethereum.org/docs/developers/dapp-developer/tracing,src/pages/docs/developers/dapp-developer/tracing.md,n/a
|
||||
https://geth.ethereum.org/docs/dapp/custom-tracer,https://geth.ethereum.org/docs/developers/dapp-developer/custom-tracer,src/pages/docs/developers/dapp-developer/custom-tracer.md,n/a
|
||||
https://geth.ethereum.org/docs/dapp/builtin-tracers,https://geth.ethereum.org/docs/developers/dapp-developer/built-in-tracer,src/pages/docs/developers/dapp-developer/built-in-tracers.md,n/a
|
||||
https://geth.ethereum.org/docs/dapp/native-accounts,https://geth.ethereum.org/docs/developers/dapp-developer/native-accounts,src/pages/docs/developers/dapp-developer/native-accounts.md,n/a
|
||||
https://geth.ethereum.org/docs/dapp/native-bindings,https://geth.ethereum.org/docs/developers/dapp-developer/native-bindings,src/pages/docs/developers/dapp-developer/native-bindings.md,n/a
|
||||
https://geth.ethereum.org/docs/dapp/mobile,https://geth.ethereum.org/docs/developers/dapp-developer/mobile,src/pages/docs/developers/dapp-developer/mobile.md,n/a
|
||||
https://geth.ethereum.org/docs/dapp/mobile-accounts,page removed,page removed,n/a
|
||||
https://geth.ethereum.org/docs/rpc/server,https://geth.ethereum.org/docs/interacting-with-geth/rpc/server,src/pages/docs/interacting-with-geth/rpc/server.md,n/a
|
||||
https://geth.ethereum.org/docs/rpc/pubsub,https://geth.ethereum.org/docs/interacting-with-geth/rpc/pubsub,src/pages/docs/interacting-with-geth/rpc/pubsub.md,n/a
|
||||
https://geth.ethereum.org/docs/rpc/batch,https://geth.ethereum.org/docs//interacting-with-geth/rpc/batch,src/pages/docs/interacting-with-geth/rpc/batch.md,n/a
|
||||
https://geth.ethereum.org/docs/rpc/graphql,https://geth.ethereum.org/docs/interacting_with_geth/rpc/graphql,src/pages/docs/interacting-with-geth/rpc/graphql.md,n/a
|
||||
https://geth.ethereum.org/docs/rpc/ns-admin,https://geth.ethereum.org/docs/interacting_with_geth/rpc/ns-admin,src/pages/docs/interacting-with-geth/rpc/ns-admin.md,n/a
|
||||
https://geth.ethereum.org/docs/rpc/ns-clique,https://geth.ethereum.org/docs/interacting_with_geth/rpc/ns-clique,src/pages/docs/interacting-with-geth/rpc/ns-clique.md,n/a
|
||||
https://geth.ethereum.org/docs/rpc/ns-debug,https://geth.ethereum.org/docs/interacting_with_geth/rpc/ns-debug,src/pages/docs/interacting-with-geth/rpc/ns-debug.md,n/a
|
||||
https://geth.ethereum.org/docs/rpc/ns-eth,https://geth.ethereum.org/docs/interacting_with_geth/rpc/ns-eth,src/pages/docs/interacting-with-geth/rpc/ns-eth.md,n/a
|
||||
https://geth.ethereum.org/docs/rpc/ns-les,https://geth.ethereum.org/docs/interacting_with_geth/rpc/ns-les,src/pages/docs/interacting-with-geth/rpc/ns-les.md,n/a
|
||||
https://geth.ethereum.org/docs/rpc/ns-miner,https://geth.ethereum.org/docs/interacting_with_geth/rpc/ns-miner,src/pages/docs/interacting-with-geth/rpc/ns-miner.md,n/a
|
||||
https://geth.ethereum.org/docs/rpc/ns-net,https://geth.ethereum.org/docs/interacting_with_geth/rpc/ns-net,src/pages/docs/interacting-with-geth/rpc/ns-net.md,n/a
|
||||
https://geth.ethereum.org/docs/rpc/ns-personal,https://geth.ethereum.org/docs/interacting_with_geth/rpc/ns-personal,src/pages/docs/interacting-with-geth/rpc/ns-personalmd,n/a
|
||||
https://geth.ethereum.org/docs/rpc/ns-txpool,https://geth.ethereum.org/docs/interacting_with_geth/rpc/ns-txpool,src/pages/docs/interacting-with-geth/rpc/ns-txpool.md,n/a
|
||||
https://geth.ethereum.org/docs/rpc/objects,https://geth.ethereum.org/docs/interacting_with_geth/rpc/objects,src/pages/docs/interacting-with-geth/rpc/objects.md,n/a
|
||||
https://geth.ethereum.org/docs/developers/dev-guide,https://geth.ethereum.org/docs/developers/geth-developer/dev-guide,src/pages/docs/developers/geth-developer/devguide.md,n/a
|
||||
https://geth.ethereum.org/docs/developers/code-review-guidelines,https://geth.ethereum.org/docs/developers/geth-developer/code-review-guidelines,src/pages/docs/developers/geth-developer/code-review-guidelines.md,n/a
|
||||
https://geth.ethereum.org/docs/developers/issue-handling-workflow,https://geth.ethereum.org/docs/developers/geth-developer/code-review-guidelines,src/pages/docs/developers/geth-developer/issue-handling-workflow.md,n/a
|
||||
https://geth.ethereum.org/docs/developers/dns-discovery-setup,https://geth.ethereum.org/doce/developers/geth-developer/dns-discovery-setup,src/pages/docs/developers/geth-developer/dns-discovery-workflow.md,n/a
|
||||
https://geth.ethereum.org/docs/clef/introduction,https://geth.ethereum.org/docs/tools/clef/introduction,src/pages/docs/tools/clef/introduction.md,n/a
|
||||
https://geth.ethereum.org/docs/clef/tutorial,https://geth.ethereum.org/docs/tools/clef/tutorial,src/pages/docs/tools/clef/tutorial.md,n/a
|
||||
https://geth.ethereum.org/docs/clef/cliquesigning,https://geth.ethereum.org/docs/tools/clef/clique-signing,src/pages/docs/tools/clef/clique-signing.md,n/a
|
||||
https://geth.ethereum.org/docs/clef/rules,https://geth.ethereum.org/docs/tools/clef/rules,src/pages/docs/tools/clef/rules.md,n/a
|
||||
https://geth.ethereum.org/docs/clef/setup,https://geth.ethereum.org/docs/tools/clef/setup,src/pages/docs/tools/clef/setup.md,n/a
|
||||
https://geth.ethereum.org/docs/clef/apis,https://geth.ethereum.org/docs/tools/clef/apis,src/pages/docs/tools/clef/apis.md,n/a
|
||||
https://geth.ethereum.org/docs/clef/datatypes,https://geth.ethereum.org/docs/tools/clef/datatypes,src/pages/docs/tools/clef/datatypes.md,n/a
|
||||
https://geth.ethereum.org/docs/interface/sync-modes,https://geth.ethereum.org/docs/interface/sync-modes,src/pages/docs/fundamentals/sync-modes.md,n/a
|
||||
https://geth.ethereum.org/docs/interface/hardware,https://geth.ethereum.org/docs/interface/getting_started/hardware-requirements.md,,
|
||||
https://github.com/ethereum/go-ethereum/tree/gh-pages/docs/_vulnerabilities/vulnerabilities.json,https://github.com/ethereum/go-ethereum/tree/gh-pages/docs/_vulnerabilities/vulnerabilities.json,src/pages/docs/vulnerabilities/vulnerabilities.json,must be served at original URL
|
||||
https://github.com/ethereum/go-ethereum/tree/gh-pages/docs/_vulnerabilities/vulnerabilities.json.minisig,https://github.com/ethereum/go-ethereum/tree/gh-pages/docs/_vulnerabilities/vulnerabilities.json.minisig,src/pages/docs/vulnerabilities/vulnerabilities.json.minisig,must be served at original URL
|
||||
https://github.com/ethereum/go-ethereum/tree/gh-pages/docs/_vulnerabilities/vulnerabilities.md,https://geth.ethereum.org/docs/developers/geth-developers/discloures,src/pages/docs/developers/geth-developers/disclosures,moved to /docs and renamed
|
||||
OLD Geth website URLS,Equivalent NEW website URLs,,Notes
|
||||
https://geth.ethereum.org/,https://geth.ethereum.org,,will be react page
|
||||
https://geth.ethereum.org/downloads/,https://geth.ethereum.org/downloads,,will be react page
|
||||
https://geth.ethereum.org/docs/,https://geth.ethereum.org/docs,,n/a
|
||||
https://geth.ethereum.org/docs/getting-started,https://geth.ethereum.org/docs/getting-started/backup-restore,,n/a
|
||||
https://geth.ethereum.org/docs/getting-started/dev-mode,https://geth.ethereum.org/docs/developers/geth-developer/dev-mode,,n/a
|
||||
https://geth.ethereum.org/docs/install-and-build/installing-geth,https://geth.ethereum.org/docs/getting-started/install-geth,,n/a
|
||||
https://geth.ethereum.org/docs/install-and-build/backup-restore,https://geth.ethereum.org/docs/getting-started/backup-restore,,n/a
|
||||
https://geth.ethereum.org/docs/interface/command-line-options,https://geth.ethereum.org/docs/fundamentals/command-line-options,,n/a
|
||||
https://geth.ethereum.org/docs/interface/pruning,https://geth.ethereum.org/docs/fundamentals/pruning,,n/a
|
||||
https://geth.ethereum.org/docs/interface/consensus-clients,https://geth.ethereum.org/docs/getting-started/consensus-client,,n/a
|
||||
https://geth.ethereum.org/docs/interface/peer-to-peer,https://geth.ethereum.org/docs/fundamentals/peer-to-peer,,n/a
|
||||
https://geth.ethereum.org/docs/interface/les,https://geth.ethereum.org/docs/fundamentals/les,,n/a
|
||||
https://geth.ethereum.org/docs/interface/managing-your-accounts,https://geth.ethereum.org/docs/fundamentals/account-management,,n/a
|
||||
https://geth.ethereum.org/docs/faq,https://geth.ethereum.org/docs/faq,,n/a
|
||||
https://geth.ethereum.org/docs/interface/javascript-console,https://geth.ethereum.org/docs/interacting-with-geth/javascript-console,,n/a
|
||||
https://geth.ethereum.org/docs/interface/private-network,https://geth.ethereum.org/docs/developers/geth-developer/private-network,,n/a
|
||||
https://geth.ethereum.org/docs/interface/mining,https://geth.ethereum.org/docs/fundamentals/mining,,n/a
|
||||
https://geth.ethereum.org/docs/interface/metrics,https://geth.ethereum.org/docs/monitoring/metrics,,n/a
|
||||
https://geth.ethereum.org/docs/dapp/native,https://geth.ethereum.org/docs/developers/dapp-developer/native,,n/a
|
||||
https://geth.ethereum.org/docs/dapp/tracing,https://geth.ethereum.org/docs/developers/evm-tracing,,n/a
|
||||
https://geth.ethereum.org/docs/dapp/custom-tracer,https://geth.ethereum.org/docs/developers/evm-tracing/custom-tracer,,n/a
|
||||
https://geth.ethereum.org/docs/dapp/builtin-tracers,https://geth.ethereum.org/docs/developers/evm-tracing/built-in-tracers,,n/a
|
||||
https://geth.ethereum.org/docs/dapp/native-accounts,https://geth.ethereum.org/docs/docs/developers/dapp-developer/native-accounts,,n/a
|
||||
https://geth.ethereum.org/docs/dapp/native-bindings,https://geth.ethereum.org/docs/developers/dapp-developer/native-bindings,,n/a
|
||||
https://geth.ethereum.org/docs/dapp/mobile,https://geth.ethereum.org/docs/developers/dapp-developer/mobile,,n/a
|
||||
https://geth.ethereum.org/docs/dapp/mobile-accounts,https://geth.ethereum.org/docs/developers/dapp-developer/mobile,,n/a
|
||||
https://geth.ethereum.org/docs/rpc/server,https://geth.ethereum.org/docs/interacting-with-geth/rpc,,n/a
|
||||
https://geth.ethereum.org/docs/rpc/pubsub,https://geth.ethereum.org/docs/interacting-with-geth/rpc/pubsub,,n/a
|
||||
https://geth.ethereum.org/docs/rpc/batch,https://geth.ethereum.org/docs/interacting-with-geth/rpc/batch,,n/a
|
||||
https://geth.ethereum.org/docs/rpc/graphql,https://geth.ethereum.org/docs/interacting-with-geth/rpc/graphql,,n/a
|
||||
https://geth.ethereum.org/docs/rpc/ns-admin,https://geth.ethereum.org/docs/interacting-with-geth/rpc/ns-admin,,n/a
|
||||
https://geth.ethereum.org/docs/rpc/ns-clique,https://geth.ethereum.org/docs/interacting-with-geth/rpc/ns-clique,,n/a
|
||||
https://geth.ethereum.org/docs/rpc/ns-debug,https://geth.ethereum.org/docs/interacting-with-geth/rpc/ns-debug,,n/a
|
||||
https://geth.ethereum.org/docs/rpc/ns-eth,https://geth.ethereum.org/docs/interacting-with-geth/rpc/ns-eth,,n/a
|
||||
https://geth.ethereum.org/docs/rpc/ns-les,https://geth.ethereum.org/docs/interacting-with-geth/rpc/ns-les,,n/a
|
||||
https://geth.ethereum.org/docs/rpc/ns-miner,https://geth.ethereum.org/docs/interacting-with-geth/rpc/ns-miner,,n/a
|
||||
https://geth.ethereum.org/docs/rpc/ns-net,https://geth.ethereum.org/docs/interacting-with-geth/rpc/ns-net,,n/a
|
||||
https://geth.ethereum.org/docs/rpc/ns-personal,https://geth.ethereum.org/docs/interacting-with-geth/rpc/ns-personal,,n/a
|
||||
https://geth.ethereum.org/docs/rpc/ns-txpool,https://geth.ethereum.org/docs/interacting-with-geth/rpc/ns-txpool,,n/a
|
||||
https://geth.ethereum.org/docs/rpc/objects,https://geth.ethereum.org/docs/interacting-with-geth/rpc/objects,,n/a
|
||||
https://geth.ethereum.org/docs/developers/dev-guide,https://geth.ethereum.org/docs/developers/geth-developer/dev-guide,,n/a
|
||||
https://geth.ethereum.org/docs/developers/code-review-guidelines,https://geth.ethereum.org/docs/developers/geth-developer/code-review-guidelines,,n/a
|
||||
https://geth.ethereum.org/docs/developers/issue-handling-workflow,https://geth.ethereum.org/docs/developers/geth-developer/issue-handling-workflow,,n/a
|
||||
https://geth.ethereum.org/docs/developers/dns-discovery-setup,https://geth.ethereum.org/doce/developers/geth-developer/dns-discovery-setup,,n/a
|
||||
https://geth.ethereum.org/docs/clef/introduction,https://geth.ethereum.org/docs/tools/clef/introduction,,n/a
|
||||
https://geth.ethereum.org/docs/clef/tutorial,https://geth.ethereum.org/docs/tools/clef/tutorial,,n/a
|
||||
https://geth.ethereum.org/docs/clef/cliquesigning,https://geth.ethereum.org/docs/tools/clef/clique-signing,,n/a
|
||||
https://geth.ethereum.org/docs/clef/rules,https://geth.ethereum.org/docs/tools/clef/rules,,n/a
|
||||
https://geth.ethereum.org/docs/clef/setup,https://geth.ethereum.org/docs/tools/clef/setup,,n/a
|
||||
https://geth.ethereum.org/docs/clef/apis,https://geth.ethereum.org/docs/tools/clef/apis,,n/a
|
||||
https://geth.ethereum.org/docs/clef/datatypes,https://geth.ethereum.org/docs/tools/clef/datatypes,,n/a
|
||||
https://geth.ethereum.org/docs/interface/sync-modes,https://geth.ethereum.org/docs/fundamentals/sync-modes,,n/a
|
||||
https://geth.ethereum.org/docs/interface/hardware,https://geth.ethereum.org/docs/getting-started/hardware-requirements,,
|
||||
https://github.com/ethereum/go-ethereum/tree/gh-pages/docs/_vulnerabilities/vulnerabilities.json,https://github.com/ethereum/go-ethereum/tree/gh-pages/docs/_vulnerabilities/vulnerabilities.json,,must be served at original URL
|
||||
https://github.com/ethereum/go-ethereum/tree/gh-pages/docs/_vulnerabilities/vulnerabilities.json.minisig,https://github.com/ethereum/go-ethereum/tree/gh-pages/docs/_vulnerabilities/vulnerabilities.json.minisig,,must be served at original URL
|
||||
https://github.com/ethereum/go-ethereum/tree/gh-pages/docs/_vulnerabilities/vulnerabilities.md,https://geth.ethereum.org/docs/developers/geth-developer/disclosures,,moved to /docs and renamed
|
||||
|
|
|
|||
|
Loading…
Reference in a new issue