Skip to content

Commit 0ee0f38

Browse files
author
Faxbot Agent
committed
fix(admin/docs): default docs_base to docs.faxbot.net/latest and update in-UI doc links; normalize setup links to /setup/*; security/inbound/storage/mcp to canonical pages
1 parent 6ce6844 commit 0ee0f38

File tree

7 files changed

+74
-74
lines changed

7 files changed

+74
-74
lines changed

api/admin_ui/src/components/Diagnostics.tsx

Lines changed: 54 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -113,60 +113,60 @@ function Diagnostics({ client, onNavigate, docsBase }: DiagnosticsProps) {
113113
// Internal provided anchors (fallback during docs rollout)
114114
const providedAnchors: Record<string, string> = {
115115
// phaxio
116-
'phaxio-baa': 'https://dmontgomery40.github.io/Faxbot/backends/phaxiosetup.html#phaxio-baa',
117-
'phaxio-disable-storage': 'https://dmontgomery40.github.io/Faxbot/backends/phaxio-setup.html#phaxio-disable-storage',
118-
'phaxio-hmac-signature': 'https://dmontgomery40.github.io/Faxbot/backends/phaxio-setup.html#phaxio-hmac-signature',
119-
'phaxio-callback': 'https://dmontgomery40.github.io/Faxbot/backends/phaxiosetup.html#phaxio-callback',
120-
'phaxio-token-pdf': 'https://dmontgomery40.github.io/Faxbot/backends/phaxiosetup.html#phaxio-token-pdf',
121-
'phaxio-inbound-setup': 'https://dmontgomery40.github.io/Faxbot/backends/phaxio-setup.html#phaxio-inbound-setup',
116+
'phaxio-baa': 'https://docs.faxbot.net/latest/setup/phaxio/',
117+
'phaxio-disable-storage': 'https://docs.faxbot.net/latest/setup/phaxio/',
118+
'phaxio-hmac-signature': 'https://docs.faxbot.net/latest/setup/phaxio/',
119+
'phaxio-callback': 'https://docs.faxbot.net/latest/setup/phaxio/',
120+
'phaxio-token-pdf': 'https://docs.faxbot.net/latest/setup/phaxio/',
121+
'phaxio-inbound-setup': 'https://docs.faxbot.net/latest/setup/phaxio/',
122122
// sinch
123-
'sinch-credentials': 'https://dmontgomery40.github.io/Faxbot/backends/sinchsetup.html#sinch-credentials',
124-
'sinch-base-url': 'https://dmontgomery40.github.io/Faxbot/backends/sinchsetup.html#sinch-base-url',
125-
'sinch-status-updates': 'https://dmontgomery40.github.io/Faxbot/backends/sinch-setup.html#sinch-status-updates',
126-
'sinch-inbound-webhook': 'https://dmontgomery40.github.io/Faxbot/backends/sinch-setup.html#sinch-inbound-webhook',
123+
'sinch-credentials': 'https://docs.faxbot.net/latest/setup/sinch/',
124+
'sinch-base-url': 'https://docs.faxbot.net/latest/setup/sinch/',
125+
'sinch-status-updates': 'https://docs.faxbot.net/latest/setup/sinch/',
126+
'sinch-inbound-webhook': 'https://docs.faxbot.net/latest/setup/sinch/',
127127
// sip
128-
'sip-ami-setup': 'https://dmontgomery40.github.io/Faxbot/backends/sipsetup.html#sip-ami-setup',
129-
'sip-ami-security': 'https://dmontgomery40.github.io/Faxbot/backends/sipsetup.html#sip-ami-security',
130-
'sip-t38-config': 'https://dmontgomery40.github.io/Faxbot/backends/sipsetup.html#sip-t38-config',
131-
'sip-originate': 'https://dmontgomery40.github.io/Faxbot/backends/sipsetup.html#sip-originate',
132-
'sip-inbound-secret': 'https://dmontgomery40.github.io/Faxbot/backends/sipsetup.html#sip-inbound-secret',
128+
'sip-ami-setup': 'https://docs.faxbot.net/latest/setup/sip-asterisk/',
129+
'sip-ami-security': 'https://docs.faxbot.net/latest/setup/sip-asterisk/',
130+
'sip-t38-config': 'https://docs.faxbot.net/latest/setup/sip-asterisk/',
131+
'sip-originate': 'https://docs.faxbot.net/latest/setup/sip-asterisk/',
132+
'sip-inbound-secret': 'https://docs.faxbot.net/latest/setup/sip-asterisk/',
133133
// signalwire
134-
'signalwire-credentials': 'https://dmontgomery40.github.io/Faxbot/backends/signalwire-setup.html#signalwire-credentials',
135-
'signalwire-callback': 'https://dmontgomery40.github.io/Faxbot/backends/signalwire-setup.html#signalwire-callback',
136-
'signalwire-from': 'https://dmontgomery40.github.io/Faxbot/backends/signalwire-setup.html#signalwire-from',
137-
'signalwire-limitations': 'https://dmontgomery40.github.io/Faxbot/backends/signalwire-setup.html#signalwire-limitations',
134+
'signalwire-credentials': 'https://docs.faxbot.net/latest/setup/signalwire/',
135+
'signalwire-callback': 'https://docs.faxbot.net/latest/setup/signalwire/',
136+
'signalwire-from': 'https://docs.faxbot.net/latest/setup/signalwire/',
137+
'signalwire-limitations': 'https://docs.faxbot.net/latest/setup/signalwire/',
138138
// freeswitch
139-
'freeswitch-setup': 'https://dmontgomery40.github.io/Faxbot/backends/freeswitch-setup.html#freeswitch-setup',
140-
'freeswitch-gateway': 'https://dmontgomery40.github.io/Faxbot/backends/freeswitch-setup.html#freeswitch-gateway',
141-
'freeswitch-t38': 'https://dmontgomery40.github.io/Faxbot/backends/freeswitch-setup.html#freeswitch-t38',
142-
'freeswitch-limitations': 'https://dmontgomery40.github.io/Faxbot/backends/freeswitch-setup.html#freeswitch-limitations',
139+
'freeswitch-setup': 'https://docs.faxbot.net/latest/setup/freeswitch/',
140+
'freeswitch-gateway': 'https://docs.faxbot.net/latest/setup/freeswitch/',
141+
'freeswitch-t38': 'https://docs.faxbot.net/latest/setup/freeswitch/',
142+
'freeswitch-limitations': 'https://docs.faxbot.net/latest/setup/freeswitch/',
143143
// documo
144-
'documo-setup': 'https://dmontgomery40.github.io/Faxbot/backends/documosetup.html#documo-setup',
145-
'documo-sandbox': 'https://dmontgomery40.github.io/Faxbot/backends/documosetup.html#documo-sandbox',
146-
'documo-limitations': 'https://dmontgomery40.github.io/Faxbot/backends/documosetup.html#documo-limitations',
144+
'documo-setup': 'https://docs.faxbot.net/latest/setup/documo/',
145+
'documo-sandbox': 'https://docs.faxbot.net/latest/setup/documo/',
146+
'documo-limitations': 'https://docs.faxbot.net/latest/setup/documo/',
147147
// inbound
148-
'inbound-enable': 'https://dmontgomery40.github.io/Faxbot/inbound.html#inbound-enable',
149-
'inbound-retention': 'https://dmontgomery40.github.io/Faxbot/inbound.html#inbound-retention',
150-
'inbound-token-ttl': 'https://dmontgomery40.github.io/Faxbot/inbound.html#inbound-token-ttl',
151-
'inbound-rate-limits': 'https://dmontgomery40.github.io/Faxbot/inbound.html#inbound-rate-limits',
152-
'inbound-access': 'https://dmontgomery40.github.io/Faxbot/inbound.html#inbound-access',
153-
'inbound-webhook-test': 'https://dmontgomery40.github.io/Faxbot/inbound.html#inbound-webhook-test',
148+
'inbound-enable': 'https://docs.faxbot.net/latest/inbound/',
149+
'inbound-retention': 'https://docs.faxbot.net/latest/inbound/',
150+
'inbound-token-ttl': 'https://docs.faxbot.net/latest/inbound/',
151+
'inbound-rate-limits': 'https://docs.faxbot.net/latest/inbound/',
152+
'inbound-access': 'https://docs.faxbot.net/latest/inbound/',
153+
'inbound-webhook-test': 'https://docs.faxbot.net/latest/inbound/',
154154
// security
155-
'security-require-api-key': 'https://dmontgomery40.github.io/Faxbot/security.html#security-require-api-key',
156-
'security-enforce-https': 'https://dmontgomery40.github.io/Faxbot/security.html#security-enforce-https',
157-
'security-audit-logging': 'https://dmontgomery40.github.io/Faxbot/security.html#security-audit-logging',
158-
'security-hipaa': 'https://dmontgomery40.github.io/Faxbot/security.html#security-hipaa',
159-
'security-persisted-env': 'https://dmontgomery40.github.io/Faxbot/security.html#security-persisted-env',
155+
'security-require-api-key': 'https://docs.faxbot.net/latest/security/',
156+
'security-enforce-https': 'https://docs.faxbot.net/latest/security/',
157+
'security-audit-logging': 'https://docs.faxbot.net/latest/security/',
158+
'security-hipaa': 'https://docs.faxbot.net/latest/HIPAA_REQUIREMENTS/',
159+
'security-persisted-env': 'https://docs.faxbot.net/latest/security/',
160160
// storage
161-
'storage-local-vs-s3': 'https://dmontgomery40.github.io/Faxbot/storage.html#storage-local-vs-s3',
162-
'storage-s3-kms': 'https://dmontgomery40.github.io/Faxbot/storage.html#storage-s3-kms',
163-
'storage-s3-endpoint': 'https://dmontgomery40.github.io/Faxbot/storage.html#storage-s3-endpoint',
164-
'storage-phi': 'https://dmontgomery40.github.io/Faxbot/storage.html#storagephi',
165-
'storage-file-retention': 'https://dmontgomery40.github.io/Faxbot/storage.html#storage-file-retention',
161+
'storage-local-vs-s3': 'https://docs.faxbot.net/latest/operations/',
162+
'storage-s3-kms': 'https://docs.faxbot.net/latest/operations/',
163+
'storage-s3-endpoint': 'https://docs.faxbot.net/latest/operations/',
164+
'storage-phi': 'https://docs.faxbot.net/latest/operations/',
165+
'storage-file-retention': 'https://docs.faxbot.net/latest/operations/',
166166
// mcp
167-
'mcp-overview': 'https://dmontgomery40.github.io/Faxbot/ai-integration/mcpintegration.html#mcp-overview',
168-
'mcp-http': 'https://dmontgomery40.github.io/Faxbot/ai-integration/mcpintegration.html#mcp-http',
169-
'mcp-sse-auth': 'https://dmontgomery40.github.io/Faxbot/ai-integration/mcpintegration.html#mcp-sse-auth',
167+
'mcp-overview': 'https://docs.faxbot.net/latest/mcp/',
168+
'mcp-http': 'https://docs.faxbot.net/latest/mcp/',
169+
'mcp-sse-auth': 'https://docs.faxbot.net/latest/security/oauth-setup/',
170170
'mcp-rate-limits': 'https://developers.sinch.com/docs/voice/api-reference/#error-codes',
171171
'mcp-error-handling': 'https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#event_stream_errors',
172172
};
@@ -182,7 +182,7 @@ function Diagnostics({ client, onNavigate, docsBase }: DiagnosticsProps) {
182182
useEffect(() => {
183183
const loadAnchors = async () => {
184184
try {
185-
const base = docsBase || 'https://dmontgomery40.github.io/Faxbot';
185+
const base = docsBase || 'https://docs.faxbot.net/latest';
186186
const topics: string[] = [ 'security', 'diagnostics', 'inbound', 'storage', 'plugins', 'mcp', 'scripts', 'setup', 'send', 'jobs', 'tunnels', 'keys', 'logs', 'sip', 'signalwire', 'freeswitch', 'documo' ];
187187
const provs = [active?.outbound, active?.inbound].filter(Boolean) as string[];
188188
for (const p of provs) { if (!topics.includes(p)) topics.push(p); }
@@ -335,41 +335,41 @@ function Diagnostics({ client, onNavigate, docsBase }: DiagnosticsProps) {
335335
docs.push({ text: 'FAX_DATA_DIR stores temporary files and fax artifacts.' });
336336
docs.push({ text: 'Default: /faxdata in container, ./faxdata locally' });
337337
docs.push({ text: 'Must be writable by the application process.' });
338-
docs.push({ text: 'Deployment Guide', href: `${docsBase || 'https://dmontgomery40.github.io/Faxbot'}/deployment/` });
338+
docs.push({ text: 'Deployment Guide', href: `${docsBase || 'https://docs.faxbot.net/latest'}/deployment/` });
339339
}
340340
else if (key === 'database_connected') {
341341
docs.push({ text: 'Database stores job records and API keys.' });
342342
docs.push({ text: 'Default: SQLite at ./faxbot.db' });
343343
docs.push({ text: 'Production: Use PostgreSQL with DATABASE_URL' });
344-
docs.push({ text: 'Database Setup', href: `${docsBase || 'https://dmontgomery40.github.io/Faxbot'}/deployment/#database-configuration` });
344+
docs.push({ text: 'Database Setup', href: `${docsBase || 'https://docs.faxbot.net/latest'}/deployment/` });
345345
}
346346
}
347347

348348
if (t.includes('phaxio')) {
349-
docs.push({ text: 'Phaxio Setup Guide', href: `${docsBase || 'https://dmontgomery40.github.io/Faxbot'}/backends/phaxio-setup.html` });
349+
docs.push({ text: 'Phaxio Setup Guide', href: `${docsBase || 'https://docs.faxbot.net/latest'}/setup/phaxio/` });
350350
docs.push({ text: 'Phaxio Console', href: 'https://console.phaxio.com' });
351351
const add = (topic: string, text: string) => { const href = anchors[topic] || thirdParty[topic]; if (href) docs.push({ text, href }); };
352352
add('phaxio-webhook-hmac', 'Verify Phaxio inbound HMAC signatures');
353353
add('phaxio-status-callback-url', 'Set status callback URL (HTTPS required)');
354354
}
355355

356356
if (t.includes('sip')) {
357-
docs.push({ text: 'SIP/Asterisk Setup', href: `${docsBase || 'https://dmontgomery40.github.io/Faxbot'}/backends/sip-setup.html` });
357+
docs.push({ text: 'SIP/Asterisk Setup', href: `${docsBase || 'https://docs.faxbot.net/latest'}/setup/sip-asterisk/` });
358358
if (key === 'ami_password_not_default') {
359359
docs.push({ text: 'Change AMI password in both Asterisk manager.conf and ASTERISK_AMI_PASSWORD env var.' });
360360
}
361361
}
362362

363363
if (t.includes('security')) {
364-
docs.push({ text: 'Security Guide', href: `${docsBase || 'https://dmontgomery40.github.io/Faxbot'}/security/` });
364+
docs.push({ text: 'Security Guide', href: `${docsBase || 'https://docs.faxbot.net/latest'}/security/` });
365365
const addSec = (topic: string, text: string) => { const href = anchors[topic] || thirdParty[topic]; if (href) docs.push({ text, href }); };
366366
addSec('enforce-https-phi', 'Enforce HTTPS for PHI (ENFORCE_PUBLIC_HTTPS)');
367367
addSec('require-api-key-production', 'Require API keys (REQUIRE_API_KEY)');
368368
addSec('audit-logging-hipaa', 'Enable audit logging');
369369
}
370370

371371
if (t.includes('sinch')) {
372-
docs.push({ text: 'Faxbot: Sinch Setup', href: `${docsBase || 'https://dmontgomery40.github.io/Faxbot'}/backends/sinch-setup.html` });
372+
docs.push({ text: 'Faxbot: Sinch Setup', href: `${docsBase || 'https://docs.faxbot.net/latest'}/setup/sinch/` });
373373
docs.push({ text: 'Sinch Fax API', href: 'https://developers.sinch.com/docs/fax/api-reference/' });
374374
docs.push({ text: 'OAuth 2.0 for Fax API', href: 'https://developers.sinch.com/docs/fax/api-reference/authentication/oauth/' });
375375
docs.push({ text: 'Sinch Customer Dashboard (Access Keys – Build)', href: 'https://dashboard.sinch.com/settings/access-keys' });
@@ -385,7 +385,7 @@ function Diagnostics({ client, onNavigate, docsBase }: DiagnosticsProps) {
385385
}
386386

387387
if (t.includes('inbound')) {
388-
docs.push({ text: 'Inbound Overview', href: `${docsBase || 'https://dmontgomery40.github.io/Faxbot'}/inbound/` });
388+
docs.push({ text: 'Inbound Overview', href: `${docsBase || 'https://docs.faxbot.net/latest'}/inbound/` });
389389
const addI = (topic: string, text: string) => { const href = anchors[topic] || thirdParty[topic]; if (href) docs.push({ text, href }); };
390390
addI('inbound-enable', 'Enable inbound receiving');
391391
addI('inbound-retention', 'Retention days');
@@ -395,7 +395,7 @@ function Diagnostics({ client, onNavigate, docsBase }: DiagnosticsProps) {
395395
}
396396

397397
if (t.includes('storage')) {
398-
docs.push({ text: 'Storage Guide', href: `${docsBase || 'https://dmontgomery40.github.io/Faxbot'}/storage/` });
398+
docs.push({ text: 'Storage Guide', href: `${docsBase || 'https://docs.faxbot.net/latest'}/operations/` });
399399
const addSt = (topic: string, text: string) => { const href = anchors[topic] || thirdParty[topic]; if (href) docs.push({ text, href }); };
400400
addSt('storage-local-vs-s3', 'Local vs S3');
401401
addSt('storage-s3-kms', 'S3 KMS encryption');

api/admin_ui/src/components/Inbound.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,16 @@ function Inbound({ client, docsBase }: InboundProps) {
6767
const [faxToDelete, setFaxToDelete] = useState<string | null>(null);
6868
const [deleting, setDeleting] = useState(false);
6969
// Precise help anchors (lightweight resolver for inbound failures)
70-
const base = docsBase || 'https://dmontgomery40.github.io/Faxbot';
70+
const base = docsBase || 'https://docs.faxbot.net/latest';
7171
const anchors: Record<string,string> = {
7272
// Our docs pages
7373
'inbound-overview': `${base}/inbound/`,
74-
'phaxio-inbound-setup': `${base}/backends/phaxio-setup.html#phaxio-inbound-setup`,
75-
'phaxio-webhook-hmac': `${base}/backends/phaxio-setup.html#phaxio-hmac-signature`,
76-
'sinch-inbound-webhook': `${base}/backends/sinch-setup.html#sinch-inbound-webhook`,
77-
'sinch-inbound-basic-auth': `${base}/backends/sinch-setup.html#sinch-inbound-basic-auth`,
78-
'sip-ami-setup': `${base}/backends/sipsetup.html#sip-ami-setup`,
79-
'sip-ami-security': `${base}/backends/sipsetup.html#sip-ami-security`,
74+
'phaxio-inbound-setup': `${base}/setup/phaxio/`,
75+
'phaxio-webhook-hmac': `${base}/setup/phaxio/`,
76+
'sinch-inbound-webhook': `${base}/setup/sinch/`,
77+
'sinch-inbound-basic-auth': `${base}/setup/sinch/`,
78+
'sip-ami-setup': `${base}/setup/sip-asterisk/`,
79+
'sip-ami-security': `${base}/setup/sip-asterisk/`,
8080
};
8181

8282
const theme = useTheme();
@@ -381,7 +381,7 @@ function Inbound({ client, docsBase }: InboundProps) {
381381
You are not authorized to view inbound faxes. Use an API key with inbound:list and inbound:read.
382382
<Box sx={{ mt: 1, display: 'flex', gap: 1, flexWrap: 'wrap' }}>
383383
<Button size="small" variant="outlined" onClick={() => window.dispatchEvent(new CustomEvent('faxbot:navigate', { detail: 'settings/keys' }))}>Open API Keys</Button>
384-
<Button size="small" href={(docsBase || 'https://dmontgomery40.github.io/Faxbot') + '/admin-console/api-keys/'} target="_blank" rel="noreferrer">Learn more</Button>
384+
<Button size="small" href={(docsBase || 'https://docs.faxbot.net/latest') + '/admin-console/api-keys/'} target="_blank" rel="noreferrer">Learn more</Button>
385385
</Box>
386386
</Alert>
387387
)}
@@ -603,7 +603,7 @@ same => n,System(curl -s -X POST -H "Content-Type: application/json" -H "X-Inter
603603
</Button>
604604
<Button
605605
size="small"
606-
href={`${docsBase || 'https://dmontgomery40.github.io/Faxbot'}/backends/sip-setup.html#inbound-receiving-quickstart-wip`}
606+
href={`${docsBase || 'https://docs.faxbot.net/latest'}/setup/sip-asterisk/`}
607607
target="_blank"
608608
rel="noreferrer"
609609
fullWidth={isSmallMobile}

api/admin_ui/src/components/ScriptsTests.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ const ScriptsTests: React.FC<Props> = ({ client, docsBase, readOnly = false, can
168168

169169
const theme = useTheme();
170170

171-
const docsUrl = useMemo(() => `${docsBase || 'https://dmontgomery40.github.io/Faxbot'}/development/scripts-and-tests.html`, [docsBase]);
171+
const docsUrl = useMemo(() => `${docsBase || 'https://docs.faxbot.net/latest'}/tools/scripts-and-tests/`, [docsBase]);
172172

173173
const pushAuth = (line: string) => setAuthLines((prev) => [...prev, line]);
174174
const clearAuth = () => setAuthLines([]);

api/admin_ui/src/components/Settings.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ function Settings({ client, readOnly = false }: SettingsProps) {
5353
const [restartHint, setRestartHint] = useState<boolean>(false);
5454
const [allowRestart, setAllowRestart] = useState<boolean>(false);
5555
const [persistedEnabled, setPersistedEnabled] = useState<boolean>(false);
56-
const [docsBase, setDocsBase] = useState<string>('https://dmontgomery40.github.io/Faxbot');
56+
const [docsBase, setDocsBase] = useState<string>('https://docs.faxbot.net/latest');
5757
const [migrationBanner, setMigrationBanner] = useState<boolean>(false);
5858
const [importingEnv, setImportingEnv] = useState<boolean>(false);
5959
const [importResult, setImportResult] = useState<{discovered:number; prefixes:string[]} | null>(null);
@@ -547,7 +547,7 @@ function Settings({ client, readOnly = false }: SettingsProps) {
547547
<Chip
548548
label="Faxbot: Phaxio Setup"
549549
component="a"
550-
href={`${docsBase}/backends/phaxio-setup.html`}
550+
href={`${docsBase}/setup/phaxio/`}
551551
target="_blank"
552552
rel="noreferrer"
553553
clickable
@@ -602,7 +602,7 @@ function Settings({ client, readOnly = false }: SettingsProps) {
602602
<Chip
603603
label="Faxbot: Sinch Setup"
604604
component="a"
605-
href={`${docsBase}/backends/sinch-setup.html`}
605+
href={`${docsBase}/setup/sinch/`}
606606
target="_blank"
607607
rel="noreferrer"
608608
clickable

0 commit comments

Comments
 (0)