40 Commits

Author SHA1 Message Date
abraxas914 dd99c5c3ac refactor(desktop): streamline release qualification tooling 2026-08-24 01:07:43 +08:00
abraxas914 bbc410b47b ci(desktop): add Desktop 2.0 quality gates 2026-08-23 18:15:52 +08:00
abraxas914 6cc27a78c8 build(desktop): publish compiled React Desktop 2.0 distribution
Co-authored-by: yiqi-017 <22300246009@m.fudan.edu.cn>
2026-08-23 17:18:25 +08:00
dd3xp 3a30cda63c release desktop portable v0.1.6 2026-07-14 00:54:32 -04:00
yanghang 4799271943 fix(desktop): restore corrupted zh i18n, surface prepare errors, bundle UCRT
- i18n.js: the zh block (loading.*/setup.*) shipped with every Chinese
  character mangled into literal '?' (a non-UTF-8 save when the file was
  first added in 1bcb41d). Restore all 22 keys from the intact en block.
- Surface first-run prepare failures instead of silently opening the setup
  window: store the error, expose it via get_prepare_error, show it in
  fallback.html, and write runtime/prepare_error.log.
- Windows CI: deploy app-local UCRT (api-ms-win-crt-*.dll + ucrtbase.dll
  from the SDK redist) next to the embedded python so python.exe loads on
  images lacking an in-box Universal CRT. Pure SDK source, hard-fail if absent.
2026-07-07 15:28:30 +08:00
yanghang 60dcf52e86 ci(desktop): bump upload-artifact v5 -> v7 (node24)
upload-artifact@v5 still targets node20; v6+ moved to node24. v7 is the
latest. This clears the last remaining Node.js 20 deprecation warning.
2026-06-26 20:39:43 +08:00
yanghang dc71a110ee ci(desktop): bump checkout/setup-node/upload-artifact to v5
Clears the Node.js 20 deprecation warnings on the desktop packaging
workflow. No download-artifact in use, so upload-artifact v5 has no
version-mismatch counterpart; release path uses gh CLI.
2026-06-26 20:34:34 +08:00
yanghang c471036839 refactor(desktop): move desktop_release/ → frontends/desktop/packaging/
Co-locate desktop packaging scripts with the Tauri app, declutter repo
root. Drop legacy manual-install flow (install.bat/start_windows.bat/
README_WINDOWS.md) and unused apps/ placeholder tree. Update CI workflow
paths and TODO references accordingly.
2026-06-26 20:12:46 +08:00
yanghang 29d9c2d46a chore(release): omit macOS internal checksum asset 2026-06-22 18:51:50 +08:00
yanghang c4f24fca3b chore(release): use English filenames in packages 2026-06-22 18:32:56 +08:00
yanghang 878c959dfb chore(release): add macOS DMG helper and install guide 2026-06-22 18:31:08 +08:00
yanghang 0283af64e6 chore(release): publish macOS DMG only and update install notes 2026-06-22 18:17:48 +08:00
yanghang a1e44957e4 feat(desktop): standard macOS DMG and themed confirm dialogs 2026-06-22 17:23:33 +08:00
yanghang a258c75bcc fix(desktop): replace native dialogs and add mac dmg artifact 2026-06-22 16:35:44 +08:00
yanghang c2b5f39633 fix(ci): release notes 改用 --notes-file,绕开 macOS runner(bash 3.2)命令替换+引号 bug
$(cat <<'EOF' ... platform's ... EOF) 在 bash 3.2 会把撇号当未闭合引号报
'unexpected EOF'(Win/Linux 的 bash5 无此问题),导致 macOS publish 步骤失败、
release 缺 mac 包。改成写临时文件 + gh release ... --notes-file,彻底规避。
2026-06-22 03:42:51 +08:00
yanghang 9353116bc0 fix(desktop): Linux 快捷方式带图标 — .desktop Icon 指向包内 GenericAgent.png
- lib.rs: Linux ensure_desktop_shortcut 的 Icon= 改为包内 GenericAgent.png
  (Icon 需真实图片文件,原来指 AppImage 路径不显示图标),缺失时回退
  主题图标 application-x-executable
- CI: 将 src-tauri/icons/icon.png 作为 GenericAgent.png 打进 Linux 包顶层
2026-06-22 02:34:18 +08:00
yanghang eff7c83b8b feat(desktop): Linux/mac 桌面快捷方式 + 便携卸载器(对齐 Windows)
- lib.rs: ensure_desktop_shortcut 增加 Linux(写 .desktop 到 ~/Desktop 与
  ~/.local/share/applications)与 macOS(Desktop 软链 .app)实现;
  shortcut_should_ask/decide/maybe_setup_shortcut 放开到非 Windows
- 新增 desktop_release/scripts/linux/uninstall.sh 与 macos/uninstall.command:
  停 bundle 自有进程 → 删本 bundle 的快捷方式 → 删设置 → 清 WebKit/WKWebView
  数据 → 删 bundle 目录(作用域限定本 bundle,不动其他安装)
- CI: 将卸载脚本打入 Linux/mac 便携包顶层
- 已在 Ubuntu 24.04 真机验证: cargo build 通过、uninstall.sh 隔离测试通过
2026-06-22 02:00:14 +08:00
yiqi-017 15c59dd1e7 feat(desktop): add portable uninstaller for Windows
Ship uninstall.bat (top-level, double-click entry) + uninstall_windows.ps1
(worker under runtime/) in the Windows portable bundle. The uninstaller:
- gracefully stops the bridge, then force-kills bundle-owned processes on
  ports 14168/8900 (filtered by exe path so other bundles are untouched)
- removes the desktop shortcut only when it targets this bundle
- removes ~/.ga_desktop_settings.json
- schedules deletion of the bundle folder after exit (detached cmd)

Wire both scripts into the release-package workflow.
2026-06-21 22:48:26 +08:00
yanghang 5cb19fedcc ci: race-safe unified release (retry create until it exists before upload) 2026-06-19 04:14:28 +08:00
yanghang 34296b754e feat(desktop): relocatable portable — install deps into embedded python (no venv, no editable -e), prepared-marker; bilingual release notes 2026-06-19 04:05:02 +08:00
yanghang 0a250aa9ba ci(linux): avoid SIGPIPE write error when listing tarball contents under pipefail 2026-06-19 03:37:35 +08:00
yanghang 54d02806ad ci: consolidate desktop release into one workflow (portable-only, unified naming + bilingual txt, tag-triggered unified release) 2026-06-19 03:23:16 +08:00
yiqi-017 5af3d4497e ci(macos): bundle bilingual install guides (zh + en) with xattr workaround 2026-06-19 02:32:52 +08:00
yiqi-017 87bc3bd14a feat(conductor): follow desktop-selected model live + build on test_yiqi
Conductor and its subagents always used the first model (llm_no=0)
because GenericAgent() defaults to index 0 and conductor never switched.
Read ui.llmNo from ~/.ga_desktop_settings.json and apply it before each
conductor task (live follow) and on every subagent spawn, so the
conductor uses whatever model the user picked in the desktop UI.

Also enable the three desktop package workflows on the test_yiqi branch
and add frontends/conductor.py to their path filters so conductor
changes trigger a build.
2026-06-19 00:26:11 +08:00
yiqi-017 0c4b602b1b ci(macos): fix 'app is damaged' — preserve signature, add unquarantine launcher
cp -R broke the symlinks and ad-hoc code signature inside GenericAgent.app,
which makes Apple Silicon report the bundle as damaged. Copy with ditto and
re-apply an ad-hoc signature so it verifies. Also ship a 'Start
GenericAgent.command' that runs xattr -cr to clear the download quarantine
flag before launching, so users avoid the damaged/Gatekeeper prompt without
touching a terminal. README and SHA256SUMS updated accordingly.
2026-06-18 19:02:57 +08:00
yiqi-017 143a0ac3ea ci(macos): authenticate python-build-standalone API call to avoid 403 rate limit
The assemble step queried api.github.com/releases/latest anonymously,
which is capped at 60 requests/hour/IP on shared runners and failed with
HTTP 403 rate limit exceeded. Pass GITHUB_TOKEN via GH_TOKEN env and add
an Authorization header so the call uses the 1000/hour authenticated limit.
2026-06-18 18:53:16 +08:00
yiqi-017 69ba144c90 ci(macos): drop npm cache and use npm install to match win/linux
The mac workflow enabled cache: npm with cache-dependency-path pointing
at package-lock.json, but that file is gitignored and never committed, so
setup-node failed with 'unable to cache dependencies' and npm ci would
also fail without a lockfile. Align with the win/linux workflows which use
plain npm install and no cache.
2026-06-18 18:48:23 +08:00
apple f399e62d0c fix: add macOS portable runtime packaging 2026-06-18 18:33:03 +08:00
yanghang 549c8b2d0e ci: remove old linux-test-build workflow (superseded by linux-desktop-release-package) 2026-06-18 18:29:03 +08:00
yanghang ed29d93095 ci: remove old windows-test-release workflow (superseded by windows-desktop-release-package) 2026-06-18 18:26:23 +08:00
yanghang 9ba5f47a60 ci+ui: Windows portable assembly workflow; drop loading sub-text
- 新增 windows-desktop-release-package.yml: CI 构建+组装 Windows 自包含便携包
  (exe + runtime/{python,wheels,install_windows.ps1,app}),对标 Linux workflow
- loading.html: 去掉进度条下方'首次启动正在准备运行环境,仅此一次'小字
2026-06-18 17:44:42 +08:00
yanghang 9ee6a0e1a4 fix(ci): match URL-encoded python-build-standalone download url (+ -> %2B) 2026-06-18 16:50:25 +08:00
yanghang 07d34d5fbe feat(desktop): self-contained portable bundle (Windows + Linux)
- lib.rs: 跨平台首次自准备——检测自包含包(runtime/)无 venv 时,后台离线
  建 venv+装依赖再起 bridge;加载窗显示进度条;Linux 用 $APPIMAGE 定位 runtime/
- loading.html: 加 window.gaProgress 进度条 + 状态文字
- install_windows.ps1 / install_linux.sh: 加 --wheel-dir 离线 + --extra-packages
  (conductor 依赖) + GAPROGRESS 进度标记;镜像源;Linux 离线模式跳过 AppImage/图标
- install.bat: 回填 release 版(自动定位项目根 + 错误处理)
- linux workflow: 组装完整自包含便携包(内置 python + 离线 wheels + 源码 + AppImage)
2026-06-18 16:42:56 +08:00
yanghang 1676fcdba5 test linux desktop release package workflow 2026-06-17 18:53:44 +08:00
yanghang 1a81b43a96 Make desktop test workflows manual only 2026-06-17 02:54:38 +08:00
yanghang d82b0d3d3a Trigger Linux test build on test branch 2026-06-17 02:10:52 +08:00
yanghang dfdb1203bd Add Linux desktop test build workflow 2026-06-17 02:09:54 +08:00
yanghang 26394b6601 Publish Windows portable desktop executable 2026-06-16 23:54:16 +08:00
yanghang ee6dc6de8a Fix Windows workflow npm install without lockfile 2026-06-16 23:44:36 +08:00
yanghang 2fb357bc38 Add Windows desktop test release workflow 2026-06-16 23:37:45 +08:00