fix(portable): 微信扫码重定向/Telegram botToken/Windows 启动端口 (v2.1.11)
- 微信扫码卡死: config-server 跟随 IDC scaned_but_redirect 把后续轮询切到 redirect_host,刷新二维码时重置 pollBaseUrl(扫码后不再卡住等不到 confirmed)。新增测试。 - Telegram 渠道改用 botToken(顶层 telegram 只认 botToken,旧 token 别名被静默忽略 → 连不上)。 - Windows-Start: 先起 config-server 再探测 gateway 端口,从 runtime.json 读实际 configServerPort 并按该端口开 Config Center / 传给 wait-gateway(18788 被占也能开)。 - wait-gateway.bat: 用 ping 代替 timeout /t(避开 PATH 上 GNU coreutils timeout 冲突),接受 CONFIG_PORT 参数。 - Windows-Menu: IF 块内 echo 的 () 转义为 ^(^),修 v2.1.10 闪退回归。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -107,7 +107,8 @@ for /f "usebackq tokens=1,* delims==" %%a in (`""%NODE_BIN%" "%UCLAW_DIR%lib\res
|
||||
)
|
||||
if defined NO_PROXY (
|
||||
set "no_proxy=%NO_PROXY%"
|
||||
echo Direct-connect (NO_PROXY): %NO_PROXY%
|
||||
REM Note: no unescaped parens in echo inside this IF block - cmd treats ) as block-end.
|
||||
echo Direct-connect via NO_PROXY: %NO_PROXY%
|
||||
)
|
||||
|
||||
REM Async update check (non-blocking, 5s timeout, silent failure)
|
||||
@@ -134,7 +135,30 @@ if exist "%WECHAT_PLUGIN_SRC%\openclaw.plugin.json" (
|
||||
)
|
||||
)
|
||||
|
||||
REM Find available port
|
||||
REM Start Config Server in background
|
||||
echo Starting Config Center on port 18788...
|
||||
set "CONFIG_SERVER=%UCLAW_DIR%config-server"
|
||||
set "RUNTIME_JSON=%STATE_DIR%\runtime.json"
|
||||
del "%RUNTIME_JSON%" >nul 2>&1
|
||||
start /B "" "%NODE_BIN%" "%CONFIG_SERVER%\server.js" >nul 2>&1
|
||||
|
||||
REM Wait for Config Server with polling instead of a fixed delay.
|
||||
REM It writes runtime.json with the actual fallback port when ready.
|
||||
set /a CFG_TRIES=0
|
||||
:wait_config
|
||||
if exist "%RUNTIME_JSON%" goto :config_ready
|
||||
set /a CFG_TRIES+=1
|
||||
if %CFG_TRIES% geq 20 goto :config_ready
|
||||
ping -n 1 -w 300 127.0.0.1 >nul 2>&1
|
||||
goto :wait_config
|
||||
:config_ready
|
||||
set "CONFIG_PORT=18788"
|
||||
if exist "%RUNTIME_JSON%" (
|
||||
for /f "usebackq tokens=*" %%p in (`powershell -NoProfile -Command "try { (Get-Content -Raw '%RUNTIME_JSON%' | ConvertFrom-Json).configServerPort } catch {}" 2^>nul`) do set "CONFIG_PORT=%%p"
|
||||
)
|
||||
echo Config Center port: %CONFIG_PORT%
|
||||
|
||||
REM Find available gateway port after Config Center has bound its port.
|
||||
set PORT=18789
|
||||
:check_port
|
||||
netstat -an | findstr ":%PORT% " | findstr "LISTENING" >nul 2>&1
|
||||
@@ -152,24 +176,6 @@ if %errorlevel%==0 (
|
||||
echo Starting OpenClaw on port %PORT%...
|
||||
echo.
|
||||
|
||||
REM Start Config Server in background
|
||||
echo Starting Config Center on port 18788...
|
||||
set "CONFIG_SERVER=%UCLAW_DIR%config-server"
|
||||
start /B "" "%NODE_BIN%" "%CONFIG_SERVER%\server.js" >nul 2>&1
|
||||
|
||||
REM Wait for Config Server with polling instead of a fixed delay.
|
||||
REM It is usually ready in under one second. Poll about every 0.3 seconds,
|
||||
REM up to about 6 seconds, then continue anyway.
|
||||
set /a CFG_TRIES=0
|
||||
:wait_config
|
||||
netstat -an | findstr ":18788 " | findstr "LISTENING" >nul 2>&1
|
||||
if %errorlevel%==0 goto :config_ready
|
||||
set /a CFG_TRIES+=1
|
||||
if %CFG_TRIES% geq 20 goto :config_ready
|
||||
ping -n 1 -w 300 127.0.0.1 >nul 2>&1
|
||||
goto :wait_config
|
||||
:config_ready
|
||||
|
||||
REM Do not open Dashboard before the gateway is ready.
|
||||
REM Slow USB drives may need tens of seconds to stage bundled deps.
|
||||
REM Open the local startup page now, and always open Config Center too.
|
||||
@@ -182,11 +188,11 @@ set "LOADING_URL=file:///%LOADING_PATH:\=/%?port=%PORT%&token=uclaw"
|
||||
start "" "%LOADING_URL%"
|
||||
|
||||
echo Opening Config Center...
|
||||
start "" http://127.0.0.1:18788/
|
||||
start "" http://127.0.0.1:%CONFIG_PORT%/
|
||||
|
||||
REM Fallback watcher: if the startup page cannot poll from file URLs,
|
||||
REM keep polling and reopen Config Center after the gateway is ready.
|
||||
start /B "" cmd /c ""%UCLAW_DIR%lib\wait-gateway.bat" %PORT%"
|
||||
start /B "" cmd /c ""%UCLAW_DIR%lib\wait-gateway.bat" %PORT% %CONFIG_PORT%"
|
||||
|
||||
REM Prewarm gateway in the background after it becomes ready.
|
||||
start /B "" "%NODE_BIN%" "%UCLAW_DIR%lib\prewarm.mjs" %PORT% uclaw >nul 2>&1
|
||||
|
||||
Reference in New Issue
Block a user