Skip to content

Releases: Aswellle/RemoteBridge

1.3.8

Choose a tag to compare

@github-actions github-actions released this 19 Aug 07:07

RemoteBridge v1.3.8 发行版

发布日期:2026-08-19
桌面端:v1.3.8 | 服务端:v1.0.0 | Web:v1.0.0


桌面端 UI/UX 全面升级(apps/desktop/src/renderer/)

  • 无障碍(a11y)增强:为文件列表、对话框、面包屑添加 ARIA live region、role="dialog"aria-modalaria-labelledby 语义属性;对话框支持 Escape 关闭、点击外部关闭、焦点锁定(focus lock),满足 WCAG 2.1 AA 标准(App.tsxMessages.tsxSettings.tsxcomponents/FileList.tsxcomponents/Breadcrumb.tsx
  • 对比度修复mutable-foreground 色值在暗色/亮色模式下均调整至 ≥4.5:1 对比度,符合 WCAG AA 要求(globals.css
  • 动效与主题令牌:新增 CSS 变量滚动条、prefers-reduced-motion 全局尊重、selection 颜色、--transition-standard 等动效令牌;状态指示灯改用语义化 CSS 变量(--status-online / --status-offline / --status-connecting),与 Tailwind 主题令牌对齐(globals.csstheme.ts

桌面端系统字体栈替换(apps/desktop/src/、packages/shared/src/ui-fonts.ts)

  • 移除 Google Fonts 依赖:将 next/font/google 的 Inter 字体替换为跨平台系统字体栈(SF Pro → Segoe UI → Roboto → Noto Sans CJK → PingFang SC / Microsoft YaHei → emoji),零网络依赖,原生渲染,首屏加载更快且无 FOIT/FOUT(web/src/app/layout.tsxweb/tailwind.config.tsdesktop/tailwind.config.tsglobals.css

桌面端内置本地中继服务器(apps/desktop/src/main/local-relay.ts)

  • 修复设置页修改配置后本地中继未重启:修改本地中继端口或自动启动选项后,自动停止旧进程并以新配置重启,避免配置与实际运行状态不一致(local-relay.tsSettings.tsx

生产环境 Docker / 服务端加固(多文件)

  • Relay Server 开启 trustProxy: true:修复部署在 Caddy 反向代理之后时,@fastify/rate-limit 按代理 IP 而非真实客户端 IP 计数的问题,限流重新按真实客户端 IP 生效(apps/server/src/index.ts
  • 新增 1 MB 请求体大小上限bodyLimit: 1_048_576,防止恶意大请求耗尽服务端内存(apps/server/src/index.ts
  • 两个 Dockerfile 新增非 root 运行用户:server 镜像创建 uid 1001 relayuser,web 镜像创建 uid 1001 nextjs,容器被攻破时攻击者权限降至最小(apps/server/Dockerfileapps/web/Dockerfile
  • Web 容器新增 HEALTHCHECKnode -e 内联检查 / 路由返回码 <500,30s 间隔、5s 超时、20s 启动宽限期、3 次重试(apps/web/Dockerfile
  • depends_on 改用 condition: service_healthy:Caddy 仅在 server 和 web 的 HEALTHCHECK 通过后接受流量,避免启动期间 502(docker-compose.yml
  • 所有容器添加资源上限与日志轮转:server ≤1 CPU / 512 MB、web ≤0.5 CPU / 256 MB;日志 max-size: 10m / max-file: 3~5,防止磁盘耗尽(docker-compose.yml
  • 所有容器添加 no-new-privileges 安全选项:阻止容器内进程通过 SUID 二进制提权(docker-compose.yml
  • Caddyfile 补全安全响应头:HSTS(max-age=31536000; includeSubDomains; preload)、X-Content-Type-Options: nosniffX-Frame-Options: DENYReferrer-Policy: strict-origin-when-cross-originPermissions-Policy 关闭摄像头/麦克风/地理位置等、-Server 隐藏 Caddy 版本信息(Caddyfile
  • Next.js 响应头同步补全Content-Security-PolicyX-Content-Type-OptionsX-Frame-OptionsReferrer-PolicyPermissions-Policy 双层防御(apps/web/next.config.mjs

安全修复与代码质量(多文件)

  • 路径校验 case-sensitive 修复:Windows 路径大小写不敏感匹配逻辑错误,现在统一按平台语义处理(packages/shared/src/security.ts
  • 符号链接逃逸防护:共享目录内符号链接指向允许目录外时,realpathSync 解析后校验,防止目录穿越(packages/shared/src/security.ts
  • RATE_LIMIT_CONFIG NaN 守卫:环境变量缺失或非数字时回退默认值,避免 NaN 导致限流失效(packages/shared/src/security.ts
  • 文件隧道帧长度校验file-tunnel-codec.ts 解码时验证帧长度字段,防止恶意/损坏帧导致缓冲区越界
  • Host JWT 从 URL 移至 Authorization 头:桌面端连接 WebSocket 时不再在 URL 中携带 token,改为 Authorization: Bearer 头,避免 token 泄露到日志/历史记录(apps/desktop/src/main/ws-client/client.ts
  • 移除 dlopen ABI 回退electron-binding.ts 不再尝试按 Node.js ABI 版本回退加载,直接使用 Electron 预编译二进制,避免加载错误版本导致崩溃
  • 上传分块边界校验CMD_UPLOAD_FILE_CHUNK 处理时验证分块偏移与大小,防止越界写入
  • 僵尸 WebSocket 清理:桌面端断线时彻底清理 WebSocket 实例与事件监听器,防止内存泄漏
  • streamDownload AbortController:下载流支持 AbortController 主动中止,避免组件卸载后仍继续下载
  • 隧道编解码器校验file-tunnel-codec.ts 编码/解码时验证版本与 flags 字段,拒绝不兼容帧

CI / DevOps

  • 修复 HOST_TOKEN_ROTATION_THRESHOLD_DAYS 缺失packages/shared/src/security.tsJWT_CONFIG 新增 HOST_TOKEN_ROTATION_THRESHOLD_DAYS: 30,桌面端 token-rotator 现在正确触发 30 天轮换阈值
  • shared 包 fs 懒加载packages/shared/src/fs 改为 getNodeFs() 懒加载 + webpack fs: false 回退,修复 shared 包在浏览器端打包时 fs 模块报错(next.config.mjs
  • 生产部署指南全面重写生产环境部署与使用指南.md 版本号、rate limit 变量、端口覆盖逻辑、桌面端本地中继、自动更新、安装包获取方式、数据保留策略等全面核实更新

下载

平台 文件
Windows (x64) RemoteBridge-Setup-1.3.8.exe
macOS (Apple Silicon) RemoteBridge-1.3.8-arm64.dmg
Linux (x64) RemoteBridge-1.3.8.AppImage

1.3.0

Choose a tag to compare

@github-actions github-actions released this 27 Jun 15:40
v1.3.0

fix(release): add @node-rs/bcrypt to bundle-relay external + copy to …

1.2.0

Choose a tag to compare

@github-actions github-actions released this 26 Jun 15:49
chore(release): bump to v1.2.0, update README and release CI

- Bump desktop version to 1.2.0 (adds local relay GUI feature)
- README: add local relay GUI, file upload, httpOnly cookie entries
- release.yml: build relay server + bundle before electron-builder

1.1.9

Choose a tag to compare

@github-actions github-actions released this 22 Jun 13:28
feat(desktop): add custom application icon, bump to 1.1.9

Replace the default Electron icon with a custom RemoteBridge icon
(icon.ico for Windows NSIS installer, icon.png for Linux AppImage).
The previous builds used Electron's generic icon since resources/
was empty.

1.1.8

Choose a tag to compare

@github-actions github-actions released this 21 Jun 16:12
v1.1.8

chore(release): bump version to 1.1.8, update CHANGELOG (02a-S11)

1.1.7

Choose a tag to compare

@github-actions github-actions released this 21 Jun 15:00

改进

  • 移除顶部菜单栏apps/desktop/src/main/index.ts

    Electron 框架默认附带的 File / Edit / View / Window / Help 菜单栏已全部移除,界面更加简洁。文本编辑快捷键(Ctrl+X/C/V/Z/A)由操作系统和 Chromium 层原生支持,无需菜单项即可使用;窗口最小化/关闭操作由标题栏按钮保留。

  • 开发模式 DevTools 快捷键保留apps/desktop/src/main/window.ts

    菜单栏移除后,开发调试入口不丢失——开发模式下 F12 和 Ctrl+Shift+I 仍可切换 DevTools,通过 before-input-event 钩子实现,不依赖菜单。

  • 设置页新增「关于」区块apps/desktop/src/renderer/pages/Settings.tsx

    原 Help 菜单的版本信息功能迁移至设置页面底部「关于」区块,展示应用版本号、Electron 版本、Node.js 版本、Chromium 版本、操作系统版本及主机名,信息通过 IPC 从主进程实时读取。

  • 生产环境 Docker / 服务端加固(多文件)

    • Relay Server 开启 trustProxy: true,修复部署在 Caddy 之后时限流按真实客户端 IP 计数失效的问题;新增 1 MB 请求体大小上限。
    • 两个 Dockerfile(server / web)均新增非 root 运行用户(uid 1001),减小容器权限风险。
    • Web 容器新增 HEALTHCHECKdocker-compose.ymldepends_on 改用 condition: service_healthy,确保 Caddy 在服务真正就绪后再接受流量。
    • 所有容器添加资源上限、日志轮转(max-size/max-file)和 no-new-privileges 安全选项。
    • Caddyfile 补全 HSTS、X-Content-Type-Options、X-Frame-Options、Referrer-Policy、Permissions-Policy 安全头并隐藏服务器版本信息;Next.js 响应头同步补全,形成双层防御。

下载

平台 文件
Windows (x64) RemoteBridge-Setup-1.1.7.exe
macOS (Apple Silicon) RemoteBridge-1.1.7-arm64.dmg
Linux (x64) RemoteBridge-1.1.7.AppImage

1.1.6

Choose a tag to compare

@github-actions github-actions released this 21 Jun 09:04

修复 / 改进

  • 安全审计日志:事件类型徽章各具独立颜色packages/shared/src/security-log-ui.ts

    之前 ACCESS_DOWNLOADACCESS_PREVIEWACCESS 三种事件共用同一种蓝色,在大量日志中难以快速区分。现将全部 8 种事件类型分配独立的颜色对,并同时适配浅色与深色主题:红色(认证失败)、橙色(路径访问被阻止)、黄色(会话吊销)、灰色(PIN 码过期)、绿色(会话创建)、蓝色(文件下载)、紫色(文件预览)、青色(文件访问)。

  • 桌面端消息中心:发件方气泡时间戳不可读apps/desktop/src/renderer/pages/Messages.tsx

    桌面端发出的消息气泡背景为主题蓝(bg-primary),时间戳却使用 text-primary/70,在深蓝底色上几乎不可见。已修正为 text-white/60,与气泡文字颜色保持一致,确保时间戳清晰可读。

  • 桌面端客户端管理:按钮对比度与语义apps/desktop/src/renderer/pages/Clients.tsx

    「客户端列表」/「活动日志」标签按钮和「刷新」按钮的悬停态与静止态背景色相同,缺乏视觉反馈,已统一改为 hover:bg-muted。「信任」按钮由半透明绿(bg-success/20)改为实心绿(bg-success text-white);「吊销」按钮由半透明红(bg-destructive/20)改为实心红(bg-destructive text-white),两者均达到足够的文字对比度。

  • 聊天输入框上方分隔线已移除apps/desktop/src/renderer/pages/Messages.tsxapps/web/src/app/dashboard/messages/page.tsx

    消息列表与输入框之间原有一条细边框线(border-t border-border),在视觉上产生不必要的割裂感。已在 Web 端与桌面端两处同步移除,界面过渡更加简洁自然。

  • Web 设置页面布局左对齐apps/web/src/app/dashboard/settings/page.tsx

    设置页面内容区原使用 mx-auto 居中,与左侧导航侧边栏之间存在较大空白间距。已移除 mx-auto,内容区改为左对齐,视觉上更贴近侧边栏,空间利用更紧凑。

下载

平台 文件
Windows (x64) RemoteBridge-Setup-1.1.6.exe
macOS (Apple Silicon) RemoteBridge-1.1.6-arm64.dmg
Linux (x64) RemoteBridge-1.1.6.AppImage

1.1.5

Choose a tag to compare

@github-actions github-actions released this 21 Jun 07:27

新功能

  • 共享目录实时同步packages/shared/src/ws-types.tsapps/desktop/src/main/ipc/dirs.tsapps/server/src/ws/handler.tsapps/web/src/hooks/useWebSocket.ts

    桌面端在添加共享目录、移除目录、修改访问权限或修改目录别名后,会立即向 Relay 推送 HOST_DIRS_UPDATED 消息;Relay 将其广播给该主机的所有在线 Web 客户端。Web 端收到后若当前正处于共享目录根列表视图,则自动重新拉取最新目录列表,无需手动刷新页面即可看到变更生效。

  • 共享目录访问权限标识apps/web/src/components/FileList.tsx

    文件浏览页的共享目录根列表新增"权限"列,每个目录右侧显示权限徽章:绿色「可下载」(download 权限)或灰色「只读」(readonly 权限)。桌面端调整权限后,徽章随 HOST_DIRS_UPDATED 机制实时更新。

  • 初始连接页面重新设计apps/web/src/app/page.tsx

    初始页面改为左右两栏布局:左侧固定面板展示最多 8 条历史连接设备的卡片(设备名称、操作系统、上次连接时间),右侧为 PIN 码输入表单。无需滚动即可看到所有历史设备,点击设备卡片提示用户在对应桌面端重新生成连接码。

修复

  • 刷新页面时出现深色→浅色主题闪烁apps/web/src/app/layout.tsxapps/web/src/lib/theme.ts

    根布局 <head> 中新增同步内联脚本,在 React 水合前读取 localStorage.theme 并立即写入 <html>class,消除因 JavaScript 延迟执行导致的主题闪烁。同时将默认主题从"深色"改为"浅色",首次访问统一呈现浅色主题。

下载

平台 文件
Windows (x64) RemoteBridge-Setup-1.1.5.exe
macOS (Apple Silicon) RemoteBridge-1.1.5-arm64.dmg
Linux (x64) RemoteBridge-1.1.5.AppImage

1.1.4

Choose a tag to compare

@github-actions github-actions released this 21 Jun 05:08

修复

  • PDF 预览模态框过小,无法完整显示页面内容apps/web/src/components/previews/FilePreview.tsx

    点击预览 PDF 文件时,内容渲染在 max-w-5xl max-h-[90vh] 的固定尺寸模态框 iframe 内,宽高受限导致多列排版的 PDF 页面大量内容被截断,缩放/翻页等操作也受模态框边界制约,体验极差。

    修复:FilePreview 现在检测到 effectiveCategory === 'pdf' 且预览 URL 就绪后,直接调用 window.open(previewUrl, '_blank', 'noopener') 在新标签页打开,并同时关闭模态框。用户进入 Chrome 内置全屏 PDF 阅读器,具备完整的缩放、翻页、打印等原生操作控件,不再受模态尺寸约束。

  • 预览 .txt 文件报"加载失败:TypeError: Failed to fetch"apps/web/src/hooks/usePreview.tsapps/web/src/components/previews/TextViewer.tsx

    React 18 StrictMode(next dev 模式下默认启用)对 Effect 执行双重触发:首次挂载 → 执行清理(调用 clearPreview()URL.revokeObjectURL())→ 二次挂载。这导致 blob URL 在 TextVieweruseEffect 尚未执行 fetch(url) 之前已被吊销,fetch 抛出"TypeError: Failed to fetch",文本内容始终无法渲染。

    修复:usePreview 针对文本类文件不再创建 blob URL——改为在 .then() 回调中立即读取 blob.arrayBuffer(),将结果以 rawBytes: Uint8Array 存入 React state。TextViewer 接收 rawBytes prop,在组件内同步进行 BOM 检测(UTF-8 BOM EF BB BF / UTF-16 LE BOM FF FE / UTF-16 BE BOM FE FF)与解码,无需任何二次网络请求,从根本上消除了 blob URL 被提前吊销的竞态问题。编码选择器(UTF-8 / GBK / UTF-16)、行号显示及字体缩放等功能完整保留。图片和 PDF 文件不受影响,仍使用 blob URL 路径。

下载

平台 文件
Windows (x64) RemoteBridge-Setup-1.1.4.exe
macOS (Apple Silicon) RemoteBridge-1.1.4-arm64.dmg
Linux (x64) RemoteBridge-1.1.4.AppImage

1.1.3

Choose a tag to compare

@github-actions github-actions released this 21 Jun 04:09
v1.1.3

fix(web): fix PDF Chrome sandbox block and add txt encoding detection…