Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
04decbe
doc: 添加拦截器配置说明
May 16, 2025
8a72228
尝试ipv6支持
May 22, 2025
a19a738
支持ipv6查询
Jun 13, 2025
6d18a3b
支持IP预设使用CNAME,同时修正了来源显示错误的问题
Jun 13, 2025
076795d
Merge branch 'master' into master
Jun 14, 2025
97e106d
update
Jun 14, 2025
c613c33
- feat: 新增流量监控与日志开关,完善 overwall 服务器选择并修复打包问题"
Aug 15, 2026
3fee815
- feat(mitmproxy): 新增请求重试、按域名TLS版本与CF路由黑白名单
Aug 16, 2026
7a80dd1
feat(gui): 新增 GitHub 状态监控
Aug 18, 2026
abba345
修复测试
Aug 18, 2026
396c3ca
Merge branch 'master' into 0816-update
8odream Aug 18, 2026
d516288
fix(ci): pin pnpm to 9.13.2 for electron-builder compatibility
Copilot Aug 18, 2026
fac5d7a
fix(ci): restore pnpm version to match lockfile
Copilot Aug 18, 2026
645912a
fix(ci): 移除 cross-spawn 覆盖以修复 Windows 打包失败
Copilot Aug 18, 2026
3050ff2
Update package.json
8odream Aug 18, 2026
2f0ec96
update
Aug 18, 2026
1ad575e
update
Aug 18, 2026
c6b8ad4
update
Aug 18, 2026
3534dc0
update
Aug 18, 2026
12f7705
update
Aug 18, 2026
a5c47ca
update
Aug 18, 2026
4a5610b
Merge pull request #2 from 8odream/0816-update
8odream Aug 19, 2026
c9a4476
update
Aug 19, 2026
2312d90
Merge pull request #3 from 8odream/0816-update
8odream Aug 19, 2026
3cb966d
update
Aug 19, 2026
a10e0aa
Merge pull request #4 from 8odream/0816-update
8odream Aug 19, 2026
5e18126
修复dns回传问题
Aug 19, 2026
d965f0d
Merge pull request #5 from 8odream/0816-update
8odream Aug 19, 2026
1f70b07
Potential fix for pull request finding
cute-omega Aug 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 1 addition & 26 deletions .github/workflows/build-and-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -248,14 +248,12 @@ jobs:
mv DevSidecar-${{ steps.package-info.outputs.version }}-x86_64.AppImage DevSidecar-${{ steps.package-info.outputs.version }}-linux-x86_64.AppImage;
mv DevSidecar-${{ steps.package-info.outputs.version }}-x64.tar.gz DevSidecar-${{ steps.package-info.outputs.version }}-linux-x86_64.tar.gz;
mv DevSidecar-${{ steps.package-info.outputs.version }}-x86_64.rpm DevSidecar-${{ steps.package-info.outputs.version }}-linux-x86_64.rpm;
mv DevSidecar-${{ steps.package-info.outputs.version }}-x64.pkg.tar.xz DevSidecar-${{ steps.package-info.outputs.version }}-linux-x86_64.pkg.tar.xz;
# mv DevSidecar-${{ steps.package-info.outputs.version }}-x86_64.flatpak DevSidecar-${{ steps.package-info.outputs.version }}-linux-x86_64.flatpak;
#-------------------------------------------------------------------------------------------------------------------------
mv DevSidecar-${{ steps.package-info.outputs.version }}-arm64.deb DevSidecar-${{ steps.package-info.outputs.version }}-linux-arm64.deb;
mv DevSidecar-${{ steps.package-info.outputs.version }}-arm64.AppImage DevSidecar-${{ steps.package-info.outputs.version }}-linux-arm64.AppImage;
mv DevSidecar-${{ steps.package-info.outputs.version }}-arm64.tar.gz DevSidecar-${{ steps.package-info.outputs.version }}-linux-arm64.tar.gz;
mv DevSidecar-${{ steps.package-info.outputs.version }}-aarch64.rpm DevSidecar-${{ steps.package-info.outputs.version }}-linux-arm64.rpm;
mv DevSidecar-${{ steps.package-info.outputs.version }}-arm64.pkg.tar.xz DevSidecar-${{ steps.package-info.outputs.version }}-linux-arm64.pkg.tar.xz;
# arm64 flatpak is on Linux ARM64 runner
#-------------------------------------------------------------------------------------------------------------------------
mv DevSidecar-${{ steps.package-info.outputs.version }}-armv7l.deb DevSidecar-${{ steps.package-info.outputs.version }}-linux-armv7l.deb;
Expand Down Expand Up @@ -332,13 +330,7 @@ jobs:
path: packages/gui/dist_electron/DevSidecar-${{ steps.package-info.outputs.version }}-linux-x86_64.rpm
name: "DevSidecar-${{ steps.package-info.outputs.version }}-linux-x86_64.rpm"
if-no-files-found: error
- name: "Upload DevSidecar-${{ steps.package-info.outputs.version }}-linux-x86_64.pkg.tar.xz"
uses: actions/upload-artifact@v4.4.0
if: ${{ matrix.os == 'ubuntu' }}
with:
path: packages/gui/dist_electron/DevSidecar-${{ steps.package-info.outputs.version }}-linux-x86_64.pkg.tar.xz
name: "DevSidecar-${{ steps.package-info.outputs.version }}-linux-x86_64.pkg.tar.xz"
if-no-files-found: error

# - name: "Upload DevSidecar-${{ steps.package-info.outputs.version }}-linux-x86_64.flatpak"
# uses: actions/upload-artifact@v4.4.0
# if: ${{ matrix.os == 'ubuntu' }}
Expand Down Expand Up @@ -376,13 +368,6 @@ jobs:
path: packages/gui/dist_electron/DevSidecar-${{ steps.package-info.outputs.version }}-linux-arm64.rpm
name: "DevSidecar-${{ steps.package-info.outputs.version }}-linux-arm64.rpm"
if-no-files-found: error
- name: "Upload DevSidecar-${{ steps.package-info.outputs.version }}-linux-arm64.pkg.tar.xz"
uses: actions/upload-artifact@v4.4.0
if: ${{ matrix.os == 'ubuntu' }}
with:
path: packages/gui/dist_electron/DevSidecar-${{ steps.package-info.outputs.version }}-linux-arm64.pkg.tar.xz
name: "DevSidecar-${{ steps.package-info.outputs.version }}-linux-arm64.pkg.tar.xz"
if-no-files-found: error

# -------------------------------------------------------------------------------------------------------------------------
- name: "Upload DevSidecar-${{ steps.package-info.outputs.version }}-linux-armv7l.deb"
Expand Down Expand Up @@ -622,11 +607,6 @@ jobs:
with:
name: "DevSidecar-${{ steps.package-info.outputs.version }}-linux-x86_64.rpm"
path: release
- name: "Download DevSidecar-${{ steps.package-info.outputs.version }}-linux-x86_64.pkg.tar.xz"
uses: actions/download-artifact@v4.1.8
with:
name: "DevSidecar-${{ steps.package-info.outputs.version }}-linux-x86_64.pkg.tar.xz"
path: release
#- name: "Download DevSidecar-${{ steps.package-info.outputs.version }}-linux-x86_64.flatpak"
# uses: actions/download-artifact@v4.1.8
# with:
Expand All @@ -653,11 +633,6 @@ jobs:
with:
name: "DevSidecar-${{ steps.package-info.outputs.version }}-linux-arm64.rpm"
path: release
- name: "Download DevSidecar-${{ steps.package-info.outputs.version }}-linux-arm64.pkg.tar.xz"
uses: actions/download-artifact@v4.1.8
with:
name: "DevSidecar-${{ steps.package-info.outputs.version }}-linux-arm64.pkg.tar.xz"
path: release
# -------------------------------------------------------------------------------------------------------------------------
- name: "Download DevSidecar-${{ steps.package-info.outputs.version }}-linux-armv7l.deb"
uses: actions/download-artifact@v4.1.8
Expand Down
144 changes: 144 additions & 0 deletions _script/dev.ps1

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
#Requires -Version 5.1
<#
dev-sidecar 开发环境统一启动/检查脚本

用法(在仓库根目录或任意目录执行):
pwsh -File _script\dev.ps1 -Action start # 启动开发环境并等待端口就绪
pwsh -File _script\dev.ps1 -Action check # 检查端口监听状态
pwsh -File _script\dev.ps1 -Action stop # 停止开发环境(按端口结束进程)
pwsh -File _script\dev.ps1 -Action restart # 停止后重新启动

可选参数:
-Port 8081 # 前端 dev server 端口,默认 8081
-Foreground # start 时在前台运行,日志直接输出到当前终端(Ctrl+C 停止)
-SkipKill # start/restart 时不先结束已占用端口的进程
#>
param(
[ValidateSet('start', 'check', 'stop', 'restart')]
[string]$Action = 'start',

[int]$Port = 8081,

[switch]$Foreground,

[switch]$SkipKill
)

$ErrorActionPreference = 'SilentlyContinue'

$repoRoot = Split-Path -Parent $PSScriptRoot
$guiDir = Join-Path $repoRoot 'packages\gui'
$electronDev = Join-Path $PSScriptRoot 'electron-dev.mjs'
$proxyHttpPort = 31180
$proxyHttpsPort = 31181
$ports = @($Port, $proxyHttpPort, $proxyHttpsPort)

function Get-Listeners([int[]]$TargetPorts) {
Get-NetTCPConnection -State Listen -ErrorAction SilentlyContinue |
Where-Object { $TargetPorts -contains $_.LocalPort }
}

function Show-Status([string]$Title) {
Write-Host "== $Title =="
$listeners = @(Get-Listeners $ports)
if ($listeners.Count -gt 0) {
$listeners | Sort-Object LocalPort | ForEach-Object {
$procName = (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).ProcessName
Write-Host (" {0}:{1,-6} PID {2,-7} {3}" -f $_.LocalAddress, $_.LocalPort, $_.OwningProcess, $procName)
}
} else {
Write-Host ' no listeners'
}
Write-Host ''
}

function Stop-DevSidecar([int[]]$TargetPorts) {
Write-Host '== stopping dev-sidecar =='
$listeners = @(Get-Listeners $TargetPorts)
$procIds = @($listeners | Select-Object -ExpandProperty OwningProcess -Unique)
if ($procIds.Count -eq 0) {
Write-Host ' no listeners'
} else {
foreach ($procId in $procIds) {
Stop-Process -Id $procId -Force -ErrorAction SilentlyContinue
Write-Host " killed PID $procId"
}
}
Start-Sleep -Milliseconds 600
Write-Host ''
}

function Wait-Ports([int[]]$TargetPorts, [int]$TimeoutSec = 120) {
$deadline = (Get-Date).AddSeconds($TimeoutSec)
$ready = @{}

while ((Get-Date) -lt $deadline) {
$listeners = @(Get-Listeners $TargetPorts)
foreach ($p in $TargetPorts) {
if ($listeners.LocalPort -contains $p) {
$ready[$p] = $true
}
}

if ($ready.Count -ge $TargetPorts.Count) {
break
}

Start-Sleep -Seconds 1
}

if ($ready.Count -lt $TargetPorts.Count) {
$missing = @($TargetPorts | Where-Object { -not $ready.ContainsKey($_) })
Write-Host "等待端口超时,未就绪端口: $($missing -join ', ')"
} else {
Write-Host "端口已全部就绪: $($TargetPorts -join ', ')"
}
}

function Start-DevSidecar([int]$DevPort) {
$node = (Get-Command node -ErrorAction Stop).Source

if ($Foreground) {
Write-Host "== starting dev-sidecar in foreground (Ctrl+C to stop) =="
Push-Location $guiDir
try {
& $node $electronDev '--port' "$DevPort"
} finally {
Pop-Location
}
return
}

Write-Host "== starting dev-sidecar =="
$proc = Start-Process -FilePath $node -ArgumentList @($electronDev, '--port', "$DevPort") -WorkingDirectory $guiDir -WindowStyle Hidden -PassThru
Write-Host " launcher PID: $($proc.Id)"
Wait-Ports $ports
Show-Status 'port status after start'
}

switch ($Action) {
'check' {
Show-Status "port status (dev: $Port, http proxy: $proxyHttpPort, https proxy: $proxyHttpsPort)"
break
}

'stop' {
Stop-DevSidecar $ports
Show-Status 'port status after stop'
break
}

'start' {
if (-not $SkipKill) {
Stop-DevSidecar $ports
}
Start-DevSidecar $Port
break
}

'restart' {
Stop-DevSidecar $ports
Start-DevSidecar $Port
break
}
}
14 changes: 12 additions & 2 deletions _script/electron-dev.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,17 @@ import { setTimeout as delay } from 'node:timers/promises'
const guiDir = process.cwd()
const require = createRequire(import.meta.url)

const devServerUrl = 'http://localhost:8080'
function resolveDevServer () {
const argv = process.argv.slice(2)
const portIndex = argv.indexOf('--port')
const port = portIndex >= 0 ? Number.parseInt(argv[portIndex + 1], 10) : 8080
if (!Number.isInteger(port) || port <= 0 || port > 65535) {
throw new Error(`无效的端口号: ${argv[portIndex + 1]}`)
}
return { port, url: `http://localhost:${port}` }
}

const { port: devServerPort, url: devServerUrl } = resolveDevServer()
const state = {
closing: false,
devServer: null,
Expand Down Expand Up @@ -86,7 +96,7 @@ async function main () {
const vueCliServiceBin = resolveVueCliServiceBin()
const electronBin = resolveElectronBin()

state.devServer = spawnCommand(process.execPath, [vueCliServiceBin, 'serve', '--port', '8080'])
state.devServer = spawnCommand(process.execPath, [vueCliServiceBin, 'serve', '--port', String(devServerPort)])
state.devServer.on('exit', (code, signal) => {
if (!state.closing) {
void shutdown(code ?? (signal ? 1 : 0))
Expand Down
Loading
Loading