@@ -89,7 +89,8 @@ async function startTunnel(port, options = {}) {
8989 if ( ! found ) {
9090 log . error ( '❌ devtunnel CLI is not installed.' ) ;
9191 log . error ( '' ) ;
92- log . error ( ' The --tunnel flag requires the Azure Dev Tunnels CLI.' ) ;
92+ log . error ( ' TermBeam uses tunnels by default for remote access.' ) ;
93+ log . error ( ' Install the Azure Dev Tunnels CLI, or use --no-tunnel for LAN-only mode.' ) ;
9394 log . error ( '' ) ;
9495 log . error ( ' Install it:' ) ;
9596 log . error ( ' Windows: winget install Microsoft.devtunnel' ) ;
@@ -120,19 +121,24 @@ async function startTunnel(port, options = {}) {
120121 } catch { }
121122
122123 if ( ! loggedIn ) {
123- log . info ( 'devtunnel not logged in, launching login...' ) ;
124- log . info ( 'A browser window will open for authentication.' ) ;
124+ log . info ( 'devtunnel not logged in, launching browser login (30s timeout)...' ) ;
125125 try {
126- execFileSync ( devtunnelCmd , [ 'user' , 'login' ] , { stdio : 'inherit' } ) ;
127- } catch ( loginErr ) {
128- log . error ( '' ) ;
129- log . error ( ' DevTunnel login failed. To use tunnels, run:' ) ;
130- log . error ( ' devtunnel user login' ) ;
131- log . error ( '' ) ;
132- log . error ( ' Or start without a tunnel:' ) ;
133- log . error ( ' termbeam --no-tunnel' ) ;
134- log . error ( '' ) ;
135- return null ;
126+ execFileSync ( devtunnelCmd , [ 'user' , 'login' ] , { stdio : 'inherit' , timeout : 30000 } ) ;
127+ } catch {
128+ log . info ( 'Browser login failed or unavailable, falling back to device code flow...' ) ;
129+ log . info ( 'A code will be displayed — open the URL on any device to authenticate.' ) ;
130+ try {
131+ execFileSync ( devtunnelCmd , [ 'user' , 'login' , '-d' ] , { stdio : 'inherit' } ) ;
132+ } catch ( loginErr ) {
133+ log . error ( '' ) ;
134+ log . error ( ' DevTunnel login failed. To use tunnels, run:' ) ;
135+ log . error ( ' devtunnel user login' ) ;
136+ log . error ( '' ) ;
137+ log . error ( ' Or start without a tunnel:' ) ;
138+ log . error ( ' termbeam --no-tunnel' ) ;
139+ log . error ( '' ) ;
140+ return null ;
141+ }
136142 }
137143 }
138144
@@ -257,4 +263,4 @@ function cleanupTunnel() {
257263 }
258264}
259265
260- module . exports = { startTunnel, cleanupTunnel } ;
266+ module . exports = { startTunnel, cleanupTunnel, findDevtunnel } ;
0 commit comments