Installation
@@ -1730,14 +1851,18 @@ export function Install(): ReactNode {
Prerequisites
-
- Python 3.8 or later, with
python3 available in PATH
+ Python 3.8 or later, with python3{' '}
+ available in PATH
-
The
opentrons Python package:{' '}
pip install opentrons
-
- For OT-2 use
pip install opentrons==9.0.0{' '}
+ For OT-2 use{' '}
+
+ pip install opentrons==9.0.0
+ {' '}
(opentrons 9.1.0+ dropped OT-2 support)
@@ -1746,9 +1871,16 @@ export function Install(): ReactNode {
Method A: Command Palette
- - Open the Command Palette (Cmd+Shift+P / Ctrl+Shift+P)
- - Select
Extensions: Install from VSIX...
- - Choose the downloaded
.vsix file
+ -
+ Open the Command Palette (Cmd+Shift+P /{' '}
+ Ctrl+Shift+P)
+
+ -
+ Select
Extensions: Install from VSIX...
+
+ -
+ Choose the downloaded
.vsix file
+
@@ -1871,6 +2003,7 @@ git commit -m "feat: add installation section with prerequisites and methods"
### Task 8: Footer section
**Files:**
+
- Create: `src/components/Footer/Footer.tsx`
- Create: `src/components/Footer/Footer.module.css`
- Test: `src/components/Footer/Footer.test.tsx`
@@ -1878,6 +2011,7 @@ git commit -m "feat: add installation section with prerequisites and methods"
- Modify: `src/App.tsx` (render Footer after main)
**Interfaces:**
+
- Consumes: `externalLinks` / `activeLinks` from `src/config/links.ts` (Task 3).
- Produces: `export function Footer(): ReactNode`.
@@ -1899,7 +2033,9 @@ describe('activeLinks', () => {
{ label: 'GitHub', url: 'https://github.com/example/repo' },
{ label: 'Docs', url: '' },
]
- expect(activeLinks(links)).toEqual([{ label: 'GitHub', url: 'https://github.com/example/repo' }])
+ expect(activeLinks(links)).toEqual([
+ { label: 'GitHub', url: 'https://github.com/example/repo' },
+ ])
})
})
```
@@ -1921,12 +2057,16 @@ import { Footer } from './Footer'
describe('Footer', () => {
it('shows the license line', () => {
render(
)
- expect(screen.getByText('MIT License © 2026 Koji Kanao')).toBeInTheDocument()
+ expect(
+ screen.getByText('MIT License © 2026 Koji Kanao'),
+ ).toBeInTheDocument()
})
it('hides GitHub while the repository URL is empty', () => {
render(
)
- expect(screen.queryByRole('link', { name: 'GitHub' })).not.toBeInTheDocument()
+ expect(
+ screen.queryByRole('link', { name: 'GitHub' }),
+ ).not.toBeInTheDocument()
})
})
```
@@ -1955,7 +2095,12 @@ export function Footer(): ReactNode {
{links.length > 0 ? (