diff --git a/README.md b/README.md index b984f5d..c4e8491 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ cd frontend && npm install && npm run build && cd .. uv run uvicorn app.main:app --host 0.0.0.0 --port 8000 ``` -Access the app at http://localhost:8000. +Access the app at http://localhost:8000. Once the backend is running, the interactive API docs are available at http://localhost:8000/docs. Source checkouts expect a normal frontend build in `frontend/dist`. diff --git a/README_ADVANCED.md b/README_ADVANCED.md index c18a913..0755b2e 100644 --- a/README_ADVANCED.md +++ b/README_ADVANCED.md @@ -1,5 +1,7 @@ # Advanced Setup And Troubleshooting +Once the backend is running, FastAPI serves interactive API docs at `/docs` on the same host and port as the web UI. For a default local launch, that is http://localhost:8000/docs. + ## Remediation & Advanced Environment Variables These are intended for diagnosing or working around radios that behave oddly, or enabling advanced functionality. diff --git a/frontend/src/components/settings/SettingsFanoutSection.tsx b/frontend/src/components/settings/SettingsFanoutSection.tsx index adc4a05..0251464 100644 --- a/frontend/src/components/settings/SettingsFanoutSection.tsx +++ b/frontend/src/components/settings/SettingsFanoutSection.tsx @@ -8,7 +8,7 @@ import { Suspense, type ReactNode, } from 'react'; -import { BookOpen, ChevronDown, Info } from 'lucide-react'; +import { ChevronDown, Info } from 'lucide-react'; import { Input } from '../ui/input'; import { Label } from '../ui/label'; import { Button } from '../ui/button'; @@ -3316,12 +3316,6 @@ export function SettingsFanoutSection({ - { }); describe('SettingsFanoutSection', () => { - it('shows an API docs link beside the add integration button', async () => { - renderSection(); - - await waitFor(() => { - expect(screen.getByRole('button', { name: 'Add Integration' })).toBeInTheDocument(); - }); - const apiDocsLink = screen.getByRole('link', { name: 'API Docs' }); - - expect(apiDocsLink).toHaveAttribute('href', './docs'); - expect(apiDocsLink).toHaveAttribute('target', '_blank'); - }); - it('shows add integration dialog with all integration types', async () => { renderSection(); const dialog = await openCreateIntegrationDialog();