@@ -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' ) ;
0 commit comments