Gloridust and Claude Opus 4.8
eabedde26b
feat(v1.2.0): 改为「微信 + Chromium 浏览器」,Telegram/自定义暂缓
...
Telegram 仅 x86_64,暂不做(代码留休眠)。聚焦多架构通用的 Chromium:
- Dockerfile apt 装 chromium(Debian Bookworm,amd64/arm64 均有;本地 arm64 实测装成、
chromium --version 正常,镜像 +~0.5GB)。Chromium 随镜像就绪,autostart 直接以
--no-sandbox 软件渲染拉起,无需「下载安装」。
- 新建实例选择器:微信(默认) + 浏览器(Chromium) 可用;自定义标「即将支持」禁用;去掉 Telegram。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-14 17:46:09 +08:00
Gloridust and Claude Opus 4.8
b7fd778ab1
feat(v1.2.0): 多应用平台——创建实例时选 微信/Telegram(+Chromium/自定义占位)
...
镜像层(向后兼容,微信路径零改动):
- app-defs.sh:按 appType 给出 APP_BIN/APP_LAUNCH/APP_NAME(缺省回退微信)。
- app-ctl.sh:通用安装/状态分发;wechat 委托回 wechat-ctl.sh;telegram 下载官方 portable tar.xz。
- autostart:读 /config/.woc-app 选择启动哪个应用,读不到回退微信(老实例零改动)。
- 02-woc-app 钩子:把容器环境 WOC_APP_TYPE 落到 /config/.woc-app(缺则不写→回退微信)。
- Dockerfile:加 xz-utils(telegram 解压)+ COPY 新脚本。
后端:envList 透传 WOC_APP_TYPE(+自定义启动命令);triggerWechat/wechatStatus 改走
app-ctl.sh <appType>(微信行为不变);创建实例路由接受 appType。
前端:新建实例对话框加「应用类型」选择器(微信默认 / Telegram;Chromium、自定义标记"即将支持"禁用)。
本轮 Telegram(x86_64) 端到端可用;Chromium(待 apt 烤镜像) 与 自定义(待上传流) 下一轮。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-14 17:38:15 +08:00
Gloridust and Claude Opus 4.8
13ec0bdf8f
fix(desktop): 输入模式切换改为整页重载,修卡死 + 切换不生效
...
切换模式时原先 bump vncNonce 在页内重挂 iframe,会让新旧两条 VNC ws 短暂并存,
概率性把实例 Xvnc 卡死(需重启容器恢复、面板重启无效),且新连接常读不到新 enable_ime
(仍是英文)。改为 window.location.reload():先卸载旧页彻底关旧 ws,再以新模式干净重连,
正是用户实测唯一可靠的方式。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-14 17:08:00 +08:00
Gloridust and Claude Opus 4.8
dfaa64ad39
fix(desktop): 修无感输入两处 bug(切换不生效 + "你好y呀"丢字)
...
1) 切到无感后当前会话仍是旧 enable_ime → 表现"还是打英文,要换页才行"。
setMode 现同步写 enable_ime 并 bump vncNonce 重挂 iframe,让 noVNC 立即按新模式重连。
2) "你好[空格]呀"打出"你好y呀":有序队列在中文转发期间会把下一个词的拼音首字母(y)当字面字符抢走。
改为队列活跃时只接管【数字】(原"混数字丢字"的祸首) + 回车/退格;字母绝不接管,交给输入法合成。
附带消除了之前"每个键都走 xdotool"导致的卡顿(字母回到原生合成快路径)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-14 16:48:59 +08:00
Gloridust and Claude Opus 4.8
8ab5375ded
feat(desktop): 输入法双模式切换(无感 / 转发)+ 深度修复无感丢字
...
nav 栏可切「无感输入」(直接在微信里打中文)/「转发输入」(底部输入条,默认),偏好持久化。
无感:enable_ime=true,compositionend 捕获中文经 xdotool 转发;并用有序队列把"转发未完成期间"
的后续可见字符 + 回车/退格串行送出,彻底消除"中文走异步、数字走 keysym 抢跑"的"你好123→23"丢字;
队列空闲不干预,英文/数字仍走原生 keysym 零延迟。新增 /api/instances/:id/key(xdotool 单键)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-14 15:15:05 +08:00
Gloridust and Claude Opus 4.8
0ccbaa3a35
feat(admin): 实例「管理」菜单改为悬浮图层展开
...
绝对定位悬浮层(从按钮下方浮出),不再撑高卡片/顶走下方内容;展开时卡片 overflow:visible
+ z-index:5(盖住下方/同列卡片,仍低于弹窗);加点击外部 / 点击菜单项自动关闭。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-14 15:15:05 +08:00
Gloridust and Claude Opus 4.8
494313b6c3
fix(panel): 修复 VolumeManager 漏闭合的 .vol-sec 标签致构建失败
...
a42006e 把第 1259 行的 </div> 误回退成 </>,与 <div className="vol-sec"> 不匹配,
导致 vite/esbuild 构建报 "Unexpected closing fragment tag" → main 上 panel 镜像构建失败
(v1.1.10 标签镜像本身是好的,从 1c34777 构建)。改回 </div>。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-13 23:02:38 +08:00
Gloridust
a42006e6f2
Update Admin.tsx
2026-06-13 22:12:51 +08:00
Gloridust and Claude Opus 4.8
1c34777353
feat(panel): 管理员数据卷管理(整卷备份/恢复 + 文件浏览器)
...
管理页 → 实例「管理」→ 数据卷(仅 admin)。解决大量用户"把 PC 微信数据迁移上 docker"的诉求。
- 整卷备份:流式打包 /config 为 .tar.gz 下载(大文件不入内存);恢复:上传覆盖回 /config。
machine-id 存在卷内随包迁移 → 跨 woc 实例恢复可保留聊天记录。
- 文件浏览器:浏览/上传/上传并解压(.tar/.tar.gz)/下载/改名/移动/删除;PC 数据打包上传解压后重启实例。
- 全程在运行中的实例上操作(exec + docker cp,运行容器才可 exec);恢复为全量覆盖,强提示并建议重启。
- 安全:仅 admin;路径严格限制在 /config、禁止 .. 穿越;上传落地为 abc 属主。
- docker.ts 抽出 extractSingleFileFromTar 复用(PAX 头跳过),新增 list/mkdir/move/delete/upload/
extract/download/backup(stream)/restore;index.ts 加 9 个 /volume 管理路由;前端 VolumeManager 弹窗
+ 线性 SVG 图标(替代渲染不一致的 emoji);新增 doc/数据卷管理.md。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-13 22:01:41 +08:00
Gloridust and Claude Opus 4.8
54ed841a68
feat(admin/ci): 管理页折叠菜单 + 空状态/主页优化 + Telegram 命令机器人
...
管理页 UI/UX
- 实例卡片操作改为「管理」分类折叠菜单(默认收起,点开按 运维/设置/危险 分组的
文字操作),替代之前难辨认的图标排;删除单独成组、红色,降低误点
- 修复展开一张卡片时同行其它卡片被 grid 拉等高(inst-grid align-items:start)
- 管理页空状态(无实例/无子账号)改为图标+标题+说明+引导按钮
- 主页实例卡片加副行(状态·微信版本)、悬停上浮高亮
Telegram 命令机器人(轮询版,纯 GitHub Actions,无服务器)
- .github/workflows/telegram-bot.yml + scripts/telegram-bot.mjs
- 私聊/群组命令:/help /releases /release <tag> /issues /issue <编号>
- cron 每 5 分钟 getUpdates,处理后用 offset 向 Telegram 确认,无需持久化存储
- 受 vars.TELEGRAM_BOT_ENABLED 开关;命令非实时(cron 限制),文档已说明
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-13 00:29:02 +08:00
Gloridust and Claude Opus 4.8
38846b6429
feat: 中文输入条 + 文件下载/另存修复 + 卡连接自愈 + CF/MAC/音频
...
中文输入(彻底改造,弃用脆弱的 VNC IME 拦截)
- 关闭 KasmVNC enable_ime:VNC 直接打字回归纯 keysym,英文/数字正常、不再损坏
- 新增底部「中文输入条」:面板真实 textarea 原生输入法 → POST /type → 容器内 xclip+xdotool
粘贴进微信,可靠且与浏览器/输入法无关。flex 列布局(nav/画面/输入条三者并列不遮挡),
牛奶布艺主题配色,可一键收起。
稳定性 / 自愈
- watchdog 新增响应性探测:实例 I/O/服务 stall(进程在、显示在线但读不出 VNC 文件、永远"正在
连接桌面")时,连续 2 次无响应即自动重启自愈
- 前端 12s 未加载出来 → 「桌面无响应」+ 重新连接/重启,不再无限转圈
- PWA 新 SW 接管即自动重载一次,更新一刷即生效(修"改了仍看旧界面")
文件
- 下载:正确解析 tar、跳过 PAX 扩展头(中文名文件曾因此大小错误/损坏)
- 另存:每次启动确保 /config/Desktop 归 abc,修微信另存"保存失败"
安全 / 伪装
- Host 白名单支持 *.example.com 通配 + X-Forwarded-Host(修 CF 反代域名仍被拒)
- 设备伪装新增真实网卡 MAC(厂商 OUI,替代容器本地管理位 MAC)
音频:扬声器自动连接(首个手势激活)、焦点离开自动断、麦克风(HTTPS)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-12 23:33:46 +08:00
Gloridust and Claude Opus 4.8
8fd147bccc
fix(P0): unique persistent machine-id per instance + manual reset
...
All instances shared the image-baked machine-id (a67bf09f...), so Tencent
saw every WechatOnCloud account worldwide as one "device" — a textbook
device-farm signal triggering risk control and the forced-logout loop
reported across old and new versions.
- docker/woc-identity.sh: new /custom-cont-init.d/00-woc-identity hook —
generates a unique machine-id on first start, persists it in the data
volume (survives restart/upgrade/recreate), writes /etc/machine-id +
/var/lib/dbus/machine-id, removes /.dockerenv. Existing instances get a
fresh unique id on first upgraded start (volume lacks the file).
- regenInstanceMachineId + POST /api/admin/instances/:id/regen-machine-id:
roll a brand-new device id and restart, for accounts re-flagged by risk
control. Gated on the hook being present (old image → instructs upgrade).
- Admin 实例卡片「安全」弹窗新增「重置设备 ID 并重启」。
Verified: two fresh containers get distinct machine-ids; id persists across
restart; regen (rm persisted file + restart) yields a new persistent id.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-06 01:41:45 +08:00
Gloridust
ba8fe96486
feat: delet old docker
2026-06-04 17:42:06 +08:00
Gloridust
d99c3b8bf6
fix ram
2026-06-04 17:33:00 +08:00
huglemon
6df7d8c7cf
fix: add CJK IME paste fallback
2026-06-03 00:08:47 +08:00
Gloridust
b2521a8627
fix:new docker no found
2026-06-02 20:03:57 +08:00
Gloridust
4f582f2c5e
fix Chinese input & copyboard & log
2026-06-02 19:46:28 +08:00
Gloridust
49b785ff9f
fix autostart
2026-06-01 19:42:35 +08:00
Gloridust
1555e60072
update ui and fix vnc v1.1.0
2026-06-01 17:31:57 +08:00
Gloridust and Claude Opus 4.8
eddc35ecae
feat: 超管密码离线找回 + 改密/重置二次确认 + GHCR 手动构建文档
...
- 密码找回:accounts.json 给用户加 "resetPassword": true(兼容 reset_password),
重启面板即把其密码重置为 PANEL_ADMIN_PASSWORD(默认 wechat)、解禁并清除标记
- 改密/重置密码弹窗新增「再次输入新密码」二次确认:两次不一致则拦截,
避免浏览器自动填充/手误把密码静默设成非预期值导致锁死
- README:补充方式 B(本机 buildx 手动多架构构建推送 GHCR)+ Release 的 latest 注意事项
+ 「重置超管密码(离线找回)」操作步骤
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-05-31 13:29:54 +08:00
Gloridust
f0e3f978d0
update admin UI
2026-05-31 13:07:48 +08:00
Gloridust and Claude Opus 4.8
17ba168764
feat: 音视频/文件传输 + 产品 UX 改进 + 镜像源可切换
...
媒体链路(生产 HTTPS 下可用,含降级)
- 音频(听):PulseAudio + KasmVNC 工具条,开箱即用
- 麦克风(说):virtmic 管道源已就绪,运行时需 HTTPS(非 HTTPS 前端提示)
- 摄像头(视频):docker.ts 条件化 v4l2 设备直通 + 加 video 组;无设备/无 HTTPS 时优雅降级,音频麦克风不受影响
- WOC_VIDEO_DEVICES 显式指定或经 /host-dev 自动探测
文件传输(原生拖拽)
- 面板侧拖拽上传 + 下载:dockerode putArchive/getArchive 到实例 ~/Desktop(持久卷)
- 纯 JS 单文件 tar 编解码(免依赖),文本/二进制均无损;全程走面板鉴权与权限校验
安全 & UX
- 默认密码告警条 + mustChangePassword 追踪(兼容旧账号文件迁移)
- 会话过期(401) 自动跳登录;桌面连接 loading 态
- 停止/未创建实例一键启动(新增 /api/admin/instances/:id/start)
- 统一牛奶布艺弹窗 + Toast,替换 Admin 原生 alert/confirm/prompt
- 密码可见切换;实例重命名;退出二次确认;空状态改用品牌终端图标
其它
- gen-icons 生成终端风格图标(此前仅空白绿块,影响 Docker/CI 产物)
- 镜像源可切换 WOC_IMAGE_PREFIX(国内反代/ACR);品牌名「云微」
- 文档:.env.example / docker-compose 增加音视频(v4l2loopback/HTTPS)、镜像源、视频设备说明
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-05-31 10:56:33 +08:00
Gloridust and Claude Opus 4.7
484d625d69
品牌更名为「云微」并替换为终端风格图标
...
- 面板/PWA/iOS/fnOS 显示名统一改为「云微」(英文项目名 WechatOnCloud 保留)
- favicon 改为绿底 macOS 终端风格(>_ 提示符),重新编译 180/192/512 PNG
- 登录页 logo 复用同款终端图标
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-29 22:43:07 +08:00
Gloridust
5c5e9c8540
update
2026-05-29 22:00:23 +08:00