Commit Graph
1275 Commits
Author SHA1 Message Date
Liang Jiaqing 90051bebe5 feat(desktop): GA token quick-access via subscription portal
- Add pq-ga-token button (shown when portal available)

- Bridge GET/POST /subscription-portal -> agentmain.start_subscription_portal

- i18n zh/en; bump app.js/i18n cache versions

- llmcore: maxlen_multiplier factor 0.85->0.75
desktop-portable-v0.1.8
2026-07-21 10:21:45 +08:00
Liang Jiaqing b8741e2a7f feat(stapp): open subscription portal when no token, prompt restart
- No key: call start_subscription_portal if present, warn to restart app, stop
- Sidebar Get Token button via getattr probe; simplify auto-action enable
- Tighten sidebar hr CSS; drop auto_start button
2026-07-21 10:21:45 +08:00
Solaris-star 51f769295b fix: make long-prompt temp files unique under concurrency (#693)
Use pid+nanos for user_prompt temp filename to avoid same-second collisions under concurrent --func / run_subagents.

Fixes #665
2026-07-20 21:54:37 +08:00
LJQ a8ed40d786 Merge pull request #695 from wjl2023/docs/update-wechat-group-qr
docs: update WeChat group QR to group 22
2026-07-20 21:50:19 +08:00
wjl2023 2247635432 docs: update WeChat group QR code to group 22
Replace the README community QR with the current WeChat experience group image (wechat_group22.jpg) following the existing numbering convention.
2026-07-20 16:39:19 +08:00
Jiaqing Liang 5257decc8c chore: update gitignore, memory templates, ga retry logic, llmcore beta parts 2026-07-20 15:38:01 +08:00
LJQ 63683327f7 Merge pull request #691 from dd3xp/main
fix(desktop): restore permissive empty-turn handling
2026-07-17 21:54:18 +08:00
dd3xp 7849eb2179 release desktop portable v0.1.8 2026-07-17 03:20:54 -04:00
dd3xp 1d350c33f4 revert desktop strict empty-turn handling 2026-07-17 03:02:28 -04:00
dd3xp 8ad1cb6719 release desktop portable v0.1.7 2026-07-16 02:40:25 -04:00
Liang Jiaqing 804155475a revert(ga): restore pre-c921bad empty-response check in do_no_tool
c921bad tightened blank-turn detection by stripping <thinking>/<summary>
and treating meta-only replies as empty. That is too aggressive for the
main agent loop (summary-only / thinking-only turns get forced retries).
Keep desktop_bridge behavior; only revert ga.py core path.
2026-07-15 18:20:06 +08:00
Liang Jiaqing fc65330395 Refine execution principles and conductor API wording 2026-07-15 18:15:08 +08:00
LJQ 1e89c3eece Merge pull request #671 from dd3xp/main
Merge desktop fork updates into upstream main
2026-07-14 21:33:44 +08:00
Kailigithub f3e400b431 fix(tmwebdriver): wrap prints in safe_print to survive stdout revoke (#673)
When OS revokes master stdout, bare print() raises BrokenPipeError and aborts WS handle before tab registration, causing stale web_scan data and extension reconnect loops. Mirror ga.py safe_print across TMWebDriver log sites.

Closes #672
2026-07-14 20:11:55 +08:00
dd3xp ebcac49215 release desktop portable v0.1.6 2026-07-14 00:54:32 -04:00
dd3xp 71c08d1943 Merge upstream main into desktop main 2026-07-14 00:47:12 -04:00
dd3xp ad2e7a79b3 improve settings feature descriptions 2026-07-14 00:31:10 -04:00
dd3xp c921bad773 fix desktop empty turn handling 2026-07-13 23:50:14 -04:00
Shen HaoandShen Hao 172889fcb0 fix(slash_cmds): /update pins git commands to the repo root (#681)
The agent's default cwd is the temp/ subdirectory, where git resolves
'-- <file>' pathspecs relative to cwd. Fed the root-relative paths that
'git diff --name-only' prints, 'git checkout upstream/main -- <file>'
fails with "pathspec did not match", breaking the working-tree
reconcile steps of /update. The prompt now tells the agent to run every
git command from the repo root (_ROOT), in both EN and ZH.

Co-authored-by: Shen Hao <shenhao-stu@users.noreply.github.com>
2026-07-13 19:28:03 +08:00
Jiaqing Liang 78a5964068 chore: stop tracking local model instruction files
Ignore assets/glm52_instruction.txt and assets/gpt55_instruction.txt
so local customizations stay out of the repo.
2026-07-13 17:00:59 +08:00
Jiaqing Liang db964659f3 feat: add trim_keep_prefix to keep leading messages on hard trim
Hard-delete path can preserve the first K history messages, insert a "..." gap, and strip dangling tool_use at the cut. Default 0 keeps previous behavior.
2026-07-13 16:03:40 +08:00
Jiaqing Liang c8f6ad4430 docs(project_mode): clarify cwd is ./temp to avoid nested temp/ paths 2026-07-13 15:11:43 +08:00
Liang Jiaqing 3d614d4893 refactor: make MixinSession a routed session facade 2026-07-13 11:30:13 +08:00
Liang Jiaqing 3b5fdfb190 feat: scale tool-output limits with context_win
Add maxlen_multiplier derived from context_win (capped 3x); drives per-tool
truncation caps and history compression interval. WebScan uses half-increment
growth to avoid saturating its 35000 base. Docs updated for the new coupling.
2026-07-13 09:55:52 +08:00
Liang Jiaqing e6bbc91631 rename verify_sop -> deliverable_audit_sop (避免名字过宽导致主agent小任务误触发验证审计SOP); ga.py: file_patch/file_write 保持原文件换行符, 修复LF文件被污染成CRLF; _arg 类型强转修复字符串false等 2026-07-12 15:09:34 +08:00
Liang Jiaqing 6aa5882889 Fix Python compatibility and tune checkpoint intervals 2026-07-11 22:05:05 +08:00
LJQ 9941022b0b Merge pull request #679 from shenhao-stu/fix/update-prompt-overlay-merge
fix(slash_cmds): merge additive-overlay files (e.g. .gitignore) on /update
desktop-portable-v0.1.5
2026-07-11 10:20:34 +08:00
Shen Hao 995785e669 fix(slash_cmds): merge additive-overlay files on /update, simplify prompt
The /update prompt reconciles the working tree "upstream-first" file by
file. That silently drops fork-local additions to files BOTH sides edit —
most painfully .gitignore, whose local ignore rules vanish, so a fork's
private dirs resurface as untracked noise (and can get committed by
accident).

Treat files carrying a `Fork-only local overlay` marker (e.g. .gitignore)
as a MERGE: take upstream as the base, then re-append everything under the
marker verbatim, and verify the marker survived. Along the way, tighten
both the EN and ZH prompts (75 -> 58 lines) without dropping any operative
step.
2026-07-11 01:39:54 +08:00
Liang Jiaqing 247cb23f14 Allow max OpenAI reasoning effort 2026-07-10 22:27:19 +08:00
nianyucatfish 8e30ae1057 fix(tui-v2): detach tool subprocess stdin (#678) 2026-07-10 22:25:54 +08:00
nianyucatfish eabfaa7d90 fix(continue): hide archived orphan worldlines (#677) 2026-07-10 22:25:11 +08:00
yanghang 66d23f0894 Merge remote-tracking branch 'upstream/main' into merge-upstream-main-20260710 2026-07-10 18:56:03 +08:00
yanghang 4c9125ae46 fix(desktop): load conductor IM plugins from external core 2026-07-10 18:35:36 +08:00
yanghang 8a040a377e chore(desktop): drop local shell design note 2026-07-10 17:43:09 +08:00
yanghang de22c5c3ec fix(desktop): accept external core without desktop bridge 2026-07-10 17:39:39 +08:00
Liang Jiaqing ee5a474e5a fix: isolate project mode per agent instance 2026-07-10 17:31:52 +08:00
Liang Jiaqing 502be0a76d fix: persist UI history and retain recent L4 sessions 2026-07-10 14:56:36 +08:00
Liang Jiaqing 5ead238e08 Improve session controls and compact LLM logs 2026-07-10 11:40:22 +08:00
yiqi-017andClaude Opus 4.8 4593863baa feat(desktop): thin-shell over external core via GA_ROOT (方案三)
Run the bundle's own bridge + frontend but drive an external GenericAgent
核 injected via GA_ROOT, instead of swapping to the external bridge or
copying files into 本体. New UI + external核/data, no mutation, logs
naturally unified with the核's other frontends.

- desktop_bridge.py: find_default_ga_root() honors --ga-root / GA_ROOT
  (validated), else derives as before; conductor now spawned from the
  BUNDLE (APP_DIR/conductor.py) with GA_ROOT in env; scheduler stays核-side
- conductor.py: ROOT prefers GA_ROOT env, else own-path derivation
- lib.rs: override no longer changes project_dir (always bundle bridge);
  sanitize_bundle_env injects GA_ROOT; takeover compares effective ga_root;
  set_ga_source drops file-copy sync and instead runs a contract probe
  before committing; removed copy_dir_all/sync_desktop_files
- ga_contract_probe.py (new): subprocess, introspect-only (no GenericAgent
  instantiation) symbol/signature check of the核's bridge/conductor/
  cost_tracker contract; doubles as a dependency check
- GA桌面壳-参考方案.md: plan + feasibility review + probe checklist

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 09:53:21 +08:00
yiqi-017 2d08c28ebb Merge origin/main into main 2026-07-09 22:49:05 +08:00
yiqi-017andClaude Opus 4.8 8743b3f8f4 Merge branch 'yiqi_source_sync' into main
On connect-to-source, push the shell's own (new) desktop files into the
本体 (backing up its originals) before restarting the bridge, so it
serves the new frontend + bridge while keeping the 本体 agent/data.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-09 22:45:43 +08:00
Liang Jiaqing 67e262d357 Handle Claude refusal without retry 2026-07-09 13:45:43 +08:00
dd3xp 5e9d577fca docs: mention Windows Defender loopback issue 2026-07-08 00:47:24 -04:00
yiqi-017andClaude Opus 4.8 84dbfd007f feat(desktop): sync shell desktop files into 本体 on connect
When connecting to a separate GA source (design A), the bridge and the
served frontend come from that 本体 — so an older 本体 showed an old
desktop UI. set_ga_source now pushes this shell's own (new) desktop
files into the 本体 before restarting the bridge, so it serves the new
UI + bridge while keeping the 本体 agent/data.

- copy_dir_all + sync_desktop_files: back up 本体 originals into
  temp/desktop_sync_backup_<ts>/, then copy the shell version over
- synced set: frontends/desktop/static/, desktop_bridge.py,
  plan_state.py, cost_tracker.py (NOT src-tauri / build artifacts)
- skipped when the source is the shell's own code location (dev tree)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 00:55:09 +08:00
dd3xp d2806edf1d Merge origin/main into main 2026-07-07 10:37:48 -04:00
7200d0e811 chore: update WeChat group QR code (#670)
Replace the existing GenericAgent experience group QR image with the latest version while keeping the same filename and README reference intact.

Co-authored-by: Shen Hao <shenhao-stu@users.noreply.github.com>
Co-authored-by: GenericAgent <bot@gaagent.ai>
2026-07-07 20:56:59 +08:00
yanghang 3c6d8871d7 fix(desktop): statically link MSVC CRT into the Windows exe
GenericAgent.exe linked the Universal CRT dynamically, so on stripped/older
Windows images the shell itself could fail to load before the (already
UCRT-bundled) embedded python ever ran. Enable +crt-static via a
target-scoped .cargo/config.toml — macOS/Linux builds never read the
x86_64-pc-windows-msvc section. Verified locally: built exe imports no
api-ms-win-crt-*/vcruntime140/ucrtbase (kernel32 control present).
2026-07-07 20:00:53 +08:00
yanghang 5ee58fb991 fix(desktop): capture installer stderr/stdout tail in prepare errors
run_offline_prepare discarded the script's stderr (Stdio::null) and only
parsed stdout for progress markers, so a failed install surfaced nothing
but 'prepare exited with status Some(N)'. Pipe stderr (drained on a helper
thread to avoid pipe-buffer deadlock), keep the last 40 lines of each
stream, and append them to the error shown in the setup window and written
to prepare_error.log — the actual pip failure is now visible.
2026-07-07 19:47:29 +08:00
yanghang 972a4e0e51 Merge fix/desktop-i18n-prepare-error-ucrt into main
- restore corrupted zh i18n (loading/setup blocks)
- surface first-run prepare errors in the setup window + prepare_error.log
- bundle app-local UCRT in the Windows portable package
- restore memory/import rpc case lost in merge 8bb91aa
2026-07-07 19:29:06 +08:00
yanghang 9f04537a1b chore(desktop): bump app.js cache version for memory/import rpc fix 2026-07-07 19:00:52 +08:00