Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
238 commits
Select commit Hold shift + click to select a range
4661eab
fix(web-ui): tighten compact tool card headers for file ops
G-CWing May 8, 2026
610894f
fix(i18n): sync missing/extra keys across en-US, zh-CN, zh-TW locales
limityan May 7, 2026
935a9a4
feat(desktop,core): remote workspace tool context and snapshot/stream…
bobleer May 8, 2026
2b8d197
Merge pull request #603 from GCWing/fix/flow-chat-compact-tool-dense-…
GCWing May 8, 2026
e3a6c33
refactor(web-ui): apply dense-command on CompactToolCard wrapper
G-CWing May 8, 2026
252ad87
Merge pull request #604 from GCWing/fix/flow-chat-compact-tool-dense-…
GCWing May 8, 2026
783f38a
fix(deepseek-thinking): preserve empty reasoning blocks during replay
wsp1911 May 8, 2026
7510e64
feat(ai): support DeepSeek reasoning effort in OpenAI and Anthropic f…
wsp1911 May 8, 2026
175bb7c
Merge pull request #605 from wsp1911/main
GCWing May 8, 2026
651530b
fix(claw): add back placeholders in the claw mode system prompt
wsp1911 May 8, 2026
f80b2a9
fix: correct remote SSH command completion handling
wsp1911 May 8, 2026
7df0934
fix: suppress windows helper command popups
wgqqqqq May 8, 2026
53420c2
fix: restore remote connect command import on unix
wgqqqqq May 8, 2026
ace5bd2
refactor: use process wrapper for remote connect gateway detection
wgqqqqq May 8, 2026
63a7d54
feat(agentic,web-ui): user steering with pending queue and agent runt…
bobleer May 8, 2026
a0fffdb
Merge pull request #609 from wgqqqqq/workspace-search-flashgrep-multi…
GCWing May 8, 2026
33d565b
Merge pull request #608 from wsp1911/main
GCWing May 8, 2026
b36e7a1
feat(core, desktop): remote workspace identity for tools and subagent…
bobleer May 8, 2026
e1ec7bb
feat(web-ui): appearance settings tab, nav layout, chat input styles
G-CWing May 8, 2026
9ee1608
Merge pull request #612 from GCWing/gcwing/dev
GCWing May 8, 2026
530534c
fix(core, web-ui): session finishing sync, explicit skills, companion…
bobleer May 8, 2026
aef2177
fix flashgrep lifecycle cleanup
wgqqqqq May 8, 2026
3df9c9c
fix macos close lifecycle
wgqqqqq May 9, 2026
5799290
chore(core): bump builtin miniapp bundle versions (#616)
bobleer May 9, 2026
6274204
Merge pull request #615 from wgqqqqq/codex/fix-flashgrep-raii-lifecycle
GCWing May 9, 2026
a8b7ddd
chore(core, desktop, web-ui): remove Mermaid interactive editor
G-CWing May 9, 2026
5034c97
Merge pull request #617 from GCWing/chore/remove-mermaid-interactive-…
GCWing May 9, 2026
8f30e04
fix(web-ui, desktop): nav footer browser/insights; log::info in deskt…
G-CWing May 9, 2026
3070a69
Merge pull request #618 from GCWing/fix/nav-footer-browser-insights-menu
GCWing May 9, 2026
fca790b
feat(deep-research): add Pro mode 6-phase pipeline and ResearchSpecia…
nonoqing May 8, 2026
f254736
refactor(skills): isolate builtin skills in managed .system directory
wsp1911 May 9, 2026
402b830
feat(skills): refactor mode skill policy and resolution
wsp1911 May 9, 2026
597d3cd
feat(agentic,ai-adapters,web-ui): harden streaming tool arguments and…
bobleer May 9, 2026
7226e65
Merge pull request #620 from wsp1911/main
GCWing May 9, 2026
9f66dff
feat(web-ui): RAF-coalesce app state; polish flow-chat tool cards
G-CWing May 9, 2026
4fea605
feat(auto-update): add auto-update
kev1n77 Mar 27, 2026
1af3c4e
Fix companion activity ordering and permission prompts (#623)
bobleer May 9, 2026
6208e51
Merge pull request #622 from GCWing/fix/nav-footer-browser-insights-menu
GCWing May 9, 2026
54982e8
Merge pull request #624 from kev1n77/dev/auto-update
GCWing May 9, 2026
14b189a
Merge pull request #613 from nonoqing/yuyiqing/dev
GCWing May 9, 2026
6b7102a
fix(deep-review): simplify recovery actions
limityan May 9, 2026
78fb353
fix(deep-review): improve interrupted review recovery
limityan May 9, 2026
aeb9c32
fix(ai): preserve tool argument replay stability to avoid prompt cach…
wsp1911 May 9, 2026
0798de4
chore: bump version to 0.2.6
wgqqqqq May 9, 2026
25fb9d4
Merge pull request #626 from wgqqqqq/chore/bump-version-0.2.6
wgqqqqq May 9, 2026
d3499cb
fix(web-ui): poll cursor position for companion pet hover (#628)
bobleer May 9, 2026
bc9b21c
feat(web-ui): unify tool card status slot and processing indicator
G-CWing May 9, 2026
84b7b71
Merge pull request #627 from wsp1911/main
GCWing May 9, 2026
67b7b66
Merge pull request #629 from GCWing/fix/nav-footer-browser-insights-menu
GCWing May 9, 2026
76e9f85
feat(web-ui): refine TodoWrite card and widen compact header action type
G-CWing May 9, 2026
37294b4
Merge pull request #630 from GCWing/fix/nav-footer-browser-insights-menu
GCWing May 9, 2026
ab53746
feat(usage): add session usage report core
limityan May 10, 2026
4f643e4
feat(usage): add desktop usage report UI
limityan May 10, 2026
3063096
fix(desktop): avoid startup probes and trim bundles
limityan May 10, 2026
3e8dd95
docs(usage): document session usage boundaries
limityan May 10, 2026
e1574a7
feat: enhance browser control, screenshot, and tool system (#632)
bobleer May 10, 2026
f8b1742
Fix agent runtime concurrency and cancellation handling (#633)
bobleer May 10, 2026
792385d
fix: subagent timeout disable button not working due to serde format …
bobleer May 10, 2026
b43c0bc
fix(web-ui): handle failed dialog completion in flow chat and notific…
bobleer May 10, 2026
f89cef0
feat(web-ui): flow chat polish, workspace strip, quick actions settings
G-CWing May 10, 2026
a0b5042
Merge pull request #637 from GCWing/gcwing/dev
GCWing May 10, 2026
afb7001
feat(core): add AI experience quick actions to config types
G-CWing May 10, 2026
3888933
Merge pull request #638 from GCWing/gcwing/dev
GCWing May 10, 2026
a392c8c
fix(desktop): repair main window close on non-macOS and Windows proce…
G-CWing May 11, 2026
3093dab
fix(desktop): use log::info for macOS-only app_click logging
G-CWing May 11, 2026
0b26644
Merge pull request #639 from GCWing/gcwing/dev
GCWing May 11, 2026
47ae937
fix: support acp permission options
wgqqqqq May 11, 2026
815b671
fix: move acp permission helper out of component file
wgqqqqq May 11, 2026
65cc1f1
feat(installer): add install detection and uninstaller launch support
kev1n77 May 11, 2026
78a0e9d
fix(browser-control): accurate tab count, real browser detection, hid…
bobleer May 11, 2026
a5b2820
Merge pull request #642 from kev1n77/dev/auto-update
GCWing May 11, 2026
2aeeeaa
Merge pull request #641 from wgqqqqq/codex/acp-permission-options
GCWing May 11, 2026
80cd279
feat(ai-adapters,agentic): recover Write tool args truncated by max_t…
nonoqing May 11, 2026
0e0ab96
fix(flow-chat): prevent bottom spacer inflation (#644)
bobleer May 11, 2026
50205af
fix(flow-chat): align bottom scroll position (#647)
bobleer May 11, 2026
a17a653
fix(flow-chat): stop follow output jitter (#648)
bobleer May 11, 2026
5833db0
refactor: remove AI rules and memory modules
wsp1911 May 11, 2026
f0bb3bf
Merge pull request #643 from nonoqing/yuyiqing/dev
GCWing May 11, 2026
c2d4458
feat(desktop,web-ui,installer): Tokyo Night theme, tray, and settings…
G-CWing May 11, 2026
2be7806
Merge pull request #649 from GCWing/gcwing/dev
GCWing May 11, 2026
309c907
feat(web-ui): align Skills scene UI with Sparo layout
G-CWing May 11, 2026
f82fa72
Merge pull request #650 from GCWing/feat/skills-scene-ui-align-sparo
GCWing May 11, 2026
b3f6b84
fix: support remote flashgrep workspace search
wgqqqqq May 9, 2026
edec0f9
fix: route remote content search through workspace search
wgqqqqq May 9, 2026
f0a1b1a
refactor: unify flashgrep local and remote protocol
wgqqqqq May 9, 2026
2fddcc5
Update bundled flashgrep to v0.2.2
wgqqqqq May 10, 2026
2e026d9
Fix remote flashgrep binary refresh
wgqqqqq May 11, 2026
f939f25
chore: bump bundled flashgrep to v0.2.3
wgqqqqq May 11, 2026
b34b924
chore: bump bundled flashgrep to v0.2.4
wgqqqqq May 11, 2026
80d819f
Update bundled flashgrep search integration
wgqqqqq May 11, 2026
8c7a366
fix(agentic): make truncated Write recovery actionable end-to-end
nonoqing May 11, 2026
ffa8cc5
Merge pull request #653 from nonoqing/yuyiqing/dev
nonoqing May 11, 2026
9331162
fix markdown editor live refresh
wgqqqqq May 11, 2026
111c798
feat(usage): persist runtime report facts
limityan May 11, 2026
794839a
feat(usage): add report details and diff actions
limityan May 11, 2026
79304aa
feat(i18n): localize quick action labels
limityan May 11, 2026
d7f8826
refactor(core): establish P1 decomposition guardrails
limityan May 10, 2026
0866860
refactor(core): extract stream processing and runtime ports
limityan May 10, 2026
1c82a4e
refactor(core): tighten runtime port contracts
limityan May 10, 2026
ce18d43
fix(web-ui): harden session usage panel accessibility
limityan May 10, 2026
bf5c87e
feat(skills): add suite mode tab reset and grouped visibility controls
wsp1911 May 11, 2026
89ce51e
Merge pull request #652 from wgqqqqq/workspace-search-flashgrep-multi…
GCWing May 11, 2026
586ecb2
Merge pull request #654 from wgqqqqq/codex/live-markdown-editor-refresh
GCWing May 11, 2026
4e6a25d
Merge pull request #656 from wsp1911/main
GCWing May 11, 2026
8df7aa5
bump version to 0.2.7
wgqqqqq May 11, 2026
c141aee
fix(web-ui): open Write/Edit cards with resolved file paths
kev1n77 May 11, 2026
d109190
feat(deep-review): enforce adaptive review runtime
limityan May 10, 2026
a16bd34
feat(deep-review): add adaptive review orchestration UI
limityan May 9, 2026
4b57e8a
feat(deep-review): add capacity controls and cost plan
limityan May 9, 2026
179f3c0
feat(deep-review): add adaptive review runtime
limityan May 11, 2026
f77eefe
feat(web-ui): add adaptive deep review orchestration
limityan May 11, 2026
93b01fb
feat(usage): complete session usage report P1
limityan May 11, 2026
1dc8a92
refactor(core): harden runtime boundary contracts
limityan May 11, 2026
b76a3d0
refactor(core): form P2 owner crates
limityan May 11, 2026
847a1ce
feat(deep-review): add scoped evidence runtime
limityan May 11, 2026
623d72f
feat(web-ui): surface scoped deep review reports
limityan May 11, 2026
e4bb103
Merge pull request #658 from kev1n77/fmy/bugfix
GCWing May 11, 2026
937795a
feat(agent): generate Write tool body via plaintext follow-up
bobleer May 11, 2026
a5c619b
fix(web-ui): pet tap opens main window; persist in-progress turns onl…
G-CWing May 11, 2026
752c6be
Merge pull request #665 from GCWing/gcwing/dev
GCWing May 11, 2026
ff066af
Merge pull request #664 from bobleer/feat/write-tool-plaintext-genera…
GCWing May 11, 2026
a73f9f2
feat(deep-review): harden queue runtime controls
limityan May 11, 2026
4339208
feat(web-ui): refine deep review action workflows
limityan May 11, 2026
b71cb81
docs(deep-review): localize contributor guidance
limityan May 11, 2026
a327305
refactor(mcp): align tool naming with metadata-driven server resolution
wsp1911 May 11, 2026
a216ccd
refactor(dynamic-tools): align MCP tool metadata with dynamic provide…
wsp1911 May 12, 2026
a1834c6
fix(web-ui): stabilize review and ACP settings flows
limityan May 12, 2026
df3bd0d
fix(web-ui): clarify deep review queue waits
limityan May 12, 2026
144b9b0
fix: align MCP tool metadata fields and remove unused tool APIs
wsp1911 May 12, 2026
dc1b3f5
feat(agentic,web-ui): task tool UI, explore region, and session event…
G-CWing May 12, 2026
931d91a
fix(core): add ToolItemData subagent model fields in session_usage tests
G-CWing May 12, 2026
c6103ea
Merge pull request #672 from GCWing/gcwing/dev
GCWing May 12, 2026
a93635b
Sync local fixes: stream dedup, search remote/fallback, session rollb…
bobleer May 12, 2026
1e27ce9
feat(cli): update cli
kev1n77 May 12, 2026
07015b7
Merge pull request #677 from kev1n77/fmy/cli
GCWing May 12, 2026
df57917
fix(deep-review): clarify partial reviewer labels
limityan May 12, 2026
a07b17a
feat(acp): support remote built-in clients
wgqqqqq May 12, 2026
ee5be43
fix(flow-chat): restore ACP session state and permissions
wgqqqqq May 12, 2026
00ee9ee
fix(flow-chat): disable ACP queue steering
wgqqqqq May 12, 2026
c51b21c
fix: timeout stuck ACP client startup
wgqqqqq May 12, 2026
2e0e2dd
feat(agentic): add mode-scoped subagent visibility
wsp1911 May 12, 2026
faa32c1
fix(web): satisfy ssh remote hook deps
wgqqqqq May 12, 2026
e1f692c
refactor(core): move service integrations to owner crate
limityan May 12, 2026
5e4e6e3
test(core): enforce decomposition boundaries
limityan May 12, 2026
81c69aa
docs(core): update decomposition guardrails
limityan May 12, 2026
595de10
fix(agent): harden Anthropic streaming, retries, and execution paths …
bobleer May 12, 2026
a939a8e
Merge pull request #679 from wgqqqqq/codex/remote-acp-workspace-support
GCWing May 12, 2026
421e2d6
fix(core): stabilize task and skill prompt item ordering
wsp1911 May 12, 2026
87950db
fix(cli): Refine CLI migration and scope sessions to current project
kev1n77 May 12, 2026
b4817df
chore(cli): remove redundant preset themes
kev1n77 May 12, 2026
860a843
refactor(remote-ssh): move workspace identity helpers
limityan May 12, 2026
ee5d59c
refactor(mcp): extract pure contracts and harden registry
limityan May 12, 2026
39afcc6
Merge pull request #683 from kev1n77/fmy/cli
GCWing May 12, 2026
e2de3a0
chore(search): isolate flashgrep logs and bump bundle v0.2.7
wgqqqqq May 12, 2026
9a45437
Merge pull request #657 from wgqqqqq/codex/bump-version-0.2.7
wgqqqqq May 12, 2026
df35f6f
fix(cli): initialize terminal service during startup
kev1n77 May 12, 2026
f808b84
fix(cli): fix user question and model name display
kev1n77 May 12, 2026
e921f71
fix(desktop): agent companion pet resize safety and Windows UX (#687)
bobleer May 12, 2026
769de8d
Merge pull request #686 from kev1n77/fmy/cli
GCWing May 12, 2026
190a4ac
refactor(mcp): move auth config helpers to integrations
limityan May 12, 2026
7a192ea
refactor(mcp): move config helpers to integrations
limityan May 12, 2026
11e504d
fix(deep-review): stabilize recovery and capacity waits
limityan May 12, 2026
6672056
refactor(mcp): move remote protocol helpers to integrations
limityan May 12, 2026
e491491
fix(agentic): guard Write against overwrite, allow loop recovery, and…
bobleer May 13, 2026
05e768d
fix(web-ui): harden streamed params and pet activity
limityan May 13, 2026
79cc6ab
refactor(core): harden decomposition boundaries
limityan May 13, 2026
cb8bb98
fix(deep-review): refine review action bar UX
limityan May 12, 2026
03d6eba
Merge pull request #685 from wgqqqqq/codex/flashgrep-log-isolation
wgqqqqq May 13, 2026
12079c6
refactor(services): move integration runtime helpers
limityan May 13, 2026
742105f
fix(desktop): suppress context menu on agent companion pet, reorder A…
bobleer May 13, 2026
31690bb
fix(core): add logs for stuck subagent task completion
wsp1911 May 13, 2026
d238cb6
feat(logging): add sensitive diagnostic log preference
limityan May 13, 2026
4ec1383
refactor(mcp): move adapter runtime helpers to integrations
limityan May 13, 2026
b401d86
refactor(mcp): move runtime ownership to integrations
limityan May 13, 2026
3ba76c1
docs(architecture): add product surface contract guardrails
limityan May 13, 2026
d6445c0
fix(remote): route Git commands through SSH for remote workspaces
kev1n77 May 13, 2026
a12857e
Merge pull request #696 from kev1n77/fmy/bugfix
GCWing May 13, 2026
9a92325
feat(logging): add backend diagnostic log redactor
limityan May 13, 2026
954a4ee
refactor(remote-connect): add product surface contracts
limityan May 13, 2026
0428240
feat(deep-review): improve adaptive review launch flow
limityan May 13, 2026
6244895
fix(config): tolerate null mode config entries
wgqqqqq May 13, 2026
83b5bcf
test(config): fix null mode config regression import
wgqqqqq May 13, 2026
1e002ac
fix(deep-review): improve completion surface routing
limityan May 13, 2026
e64197a
refactor(core): move tool contracts into agent-tools
limityan May 13, 2026
b853282
refactor(core): move tool registry into agent-tools
limityan May 13, 2026
4f3ff36
fix(flow-chat): keep file change counts session-scoped
limityan May 13, 2026
fa3deb2
feat(ssh): stable connection IDs and session hydration after port cha…
bobleer May 13, 2026
c7b177d
Merge pull request #706 from wgqqqqq/codex/fix-mode-config-null-startup
GCWing May 13, 2026
e5e715d
feat: add on-demand tool spec discovery
wsp1911 May 13, 2026
0b51233
fix(web-ui): shortcut digit lookup, overrides, editor canvas inherita…
bobleer May 14, 2026
6a192a9
refactor(product-domains): externalize guarded domain helpers
limityan May 14, 2026
2613f8b
ci: avoid caching cargo bin in Rust checks
limityan May 14, 2026
647f1cd
feat(desktop): add system fullscreen mode
limityan May 14, 2026
8fba7e4
fix(lsp): skip didOpen when server is stopped
limityan May 14, 2026
8493c7b
fix(web-ui): new session workspace and session AI/pet config layout (…
bobleer May 14, 2026
c2f0703
feat(deep-research): consolidate to pure 6-phase pipeline with citati…
nonoqing May 14, 2026
fa89e21
Merge pull request #718 from nonoqing/yuyiqing/dev
nonoqing May 14, 2026
dc3ec69
fix acp tool diff fallback
wgqqqqq May 14, 2026
2c9357e
Fix search result rendering and context handling
wgqqqqq May 14, 2026
22c9b1c
fix remote workspace compatibility guards (#719)
bobleer May 14, 2026
64f7a28
feat(agents): support per-mode subagent availability management
wsp1911 May 14, 2026
82059f5
feat(config): default agent companion pet to panda preset (#721)
bobleer May 14, 2026
2a66824
Merge pull request #715 from wgqqqqq/codex/acp-tool-diff-fallback
GCWing May 14, 2026
2302e72
fix acp startup timeout
wgqqqqq May 14, 2026
7af6fd6
Merge pull request #722 from wgqqqqq/codex/acp-startup-timeout
GCWing May 14, 2026
604f74e
feat(update): download daily app updates in background
kev1n77 May 13, 2026
2e77ce3
chore(boundaries): guard latest-main runtime anchors
limityan May 14, 2026
6345a4d
fix file tool reliability (#724)
bobleer May 15, 2026
cc5dbbc
refactor(core): close services product owner boundaries
limityan May 15, 2026
f812fee
test(core): add semantic regression baselines
limityan May 15, 2026
34a4689
refactor(runtime): add remote runtime port baselines
limityan May 15, 2026
bc78dd9
bundle linux flashgrep in windows builds
wgqqqqq May 15, 2026
906077c
refactor(remote-connect): move tracker state to integrations
limityan May 15, 2026
03fb59e
Merge pull request #723 from kev1n77/dev/auto-update
GCWing May 15, 2026
5d70a3a
feat(cli): expose ACP server and external agent controls
kev1n77 May 14, 2026
e537727
test(remote-connect): add runtime migration snapshots
limityan May 15, 2026
9146fb3
fix(web-ui): drop noisy session model auto-migration toasts (#733)
bobleer May 15, 2026
dcaa5f4
Merge pull request #728 from wgqqqqq/codex/windows-bundle-linux-flash…
GCWing May 15, 2026
e2e83b5
fix(acp): prevent ACP write turns from hanging
kev1n77 May 14, 2026
24b76d0
refactor(remote-connect): move runtime policy helpers
limityan May 15, 2026
67ce587
fix(flow-chat): prevent card toggle while selecting text
kev1n77 May 15, 2026
ffeef5f
Merge pull request #737 from kev1n77/fmy/bugfix
GCWing May 15, 2026
2fc8aef
Merge pull request #731 from kev1n77/fmy/cli
GCWing May 15, 2026
aa3a739
feat(miniapp): add customization draft sandbox
limityan May 15, 2026
160080e
feat(miniapp): add customization chat workflow
limityan May 15, 2026
cd00af5
refactor(remote-connect): move wire poll contracts
limityan May 15, 2026
d58eb95
refactor(product-domains): move pure product parsing policies
limityan May 15, 2026
862738f
refactor(remote-connect): move tracker registry ownership
limityan May 15, 2026
d821c14
feat(miniapp): add built-in PR review inbox
limityan May 15, 2026
be287e1
fix(miniapp): refine PR review inbox behavior
limityan May 15, 2026
42722f3
locale: fix Nursery->Assistant, Office Session->Cowork Session
harryfan1985 May 15, 2026
43c4351
chore(web): add bundle analysis guardrails
limityan May 16, 2026
413c515
perf(web): narrow startup optional runtimes
limityan May 16, 2026
d615378
Merge pull request #745 from harryfan1985/main
GCWing May 16, 2026
c2cf004
Optimize agent loop prompts and tool guidance (#747)
bobleer May 16, 2026
8eb0ce4
Refine agent loop guidance (#748)
bobleer May 16, 2026
959ffcb
feat(web-ui): IME-safe Escape, explore grouping, DeepSeek reasoning U…
bobleer May 16, 2026
c726dfd
Merge remote-tracking branch 'upstream/main' into rebase
SWangHash May 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,8 @@ jobs:

- uses: swatinem/rust-cache@v2
with:
shared-key: "ci-check-${{ runner.os }}"
shared-key: "ci-check-v2-${{ runner.os }}-no-cargo-bin-v1"
cache-bin: false

- name: Check compilation
run: cargo check --workspace --exclude bitfun-cli
Expand Down
84 changes: 82 additions & 2 deletions .github/workflows/desktop-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,11 @@ jobs:
needs: prepare
env:
NODE_OPTIONS: --max-old-space-size=6144
BITFUN_ENABLE_UPDATER_ARTIFACTS: ${{ needs.prepare.outputs.upload_to_release }}
TAURI_UPDATER_ENDPOINT: https://github.com/GCWing/BitFun/releases/latest/download/latest.json
TAURI_UPDATER_PUBKEY: ${{ secrets.TAURI_UPDATER_PUBKEY }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}

strategy:
fail-fast: false
Expand All @@ -105,7 +110,16 @@ jobs:
- os: windows-latest
name: windows-x64
target: x86_64-pc-windows-msvc
build_command: pnpm run installer:build
build_command: |
$ErrorActionPreference = 'Stop'
pnpm run desktop:build:nsis --target x86_64-pc-windows-msvc --verbose
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
$desktopExe = "target/x86_64-pc-windows-msvc/release/bitfun-desktop.exe"
if (-not (Test-Path $desktopExe)) {
throw "Desktop executable was not found after NSIS build: $desktopExe"
}
pnpm run installer:build:only
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }

steps:
- name: Checkout
Expand All @@ -118,6 +132,29 @@ jobs:
shell: pwsh
run: ./scripts/ci/setup-openssl-windows.ps1

- name: Install NSIS (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
$ErrorActionPreference = 'Stop'
choco install nsis -y --no-progress
$nsisRoot = "${env:ProgramFiles(x86)}\NSIS"
$nsisBin = "${env:ProgramFiles(x86)}\NSIS\Bin"
if (Test-Path $nsisRoot) {
Add-Content $env:GITHUB_PATH $nsisRoot
}
if (Test-Path $nsisBin) {
Add-Content $env:GITHUB_PATH $nsisBin
}

- name: Verify NSIS (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
$ErrorActionPreference = 'Stop'
where.exe makensis
makensis /VERSION

- name: Install Linux system dependencies (Tauri bundler)
if: runner.os == 'Linux'
shell: bash
Expand Down Expand Up @@ -170,7 +207,8 @@ jobs:
- name: Cache Rust build
uses: swatinem/rust-cache@v2
with:
shared-key: "package-${{ matrix.platform.name }}"
shared-key: "package-v2-${{ matrix.platform.name }}"
cache-bin: false

- name: Install dependencies
run: pnpm install --frozen-lockfile
Expand Down Expand Up @@ -198,8 +236,13 @@ jobs:
needs: [prepare, package]
if: needs.prepare.outputs.upload_to_release == 'true'
runs-on: ubuntu-latest
env:
REQUIRED_UPDATER_PLATFORMS: windows-x86_64,darwin-x86_64,darwin-aarch64,linux-x86_64,linux-aarch64

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Download bundled artifacts
uses: actions/download-artifact@v4
with:
Expand All @@ -212,14 +255,51 @@ jobs:
echo "Release assets:"
find release-assets -type f | sort

- name: Collect updater assets
run: |
node scripts/collect-tauri-updater-assets.mjs \
--assets-dir release-assets \
--version "${{ needs.prepare.outputs.version }}" \
--out-dir release-updater-assets \
--required-platforms "${REQUIRED_UPDATER_PLATFORMS}"

- name: Generate updater manifest
run: |
node scripts/generate-tauri-latest-json.mjs \
--assets-dir release-updater-assets \
--version "${{ needs.prepare.outputs.version }}" \
--tag "${{ needs.prepare.outputs.release_tag }}" \
--repo "GCWing/BitFun" \
--out release-updater-assets/latest.json \
--required-platforms "${REQUIRED_UPDATER_PLATFORMS}"

- name: Verify updater manifest
run: |
node scripts/verify-tauri-latest-json.mjs \
--manifest release-updater-assets/latest.json \
--version "${{ needs.prepare.outputs.version }}" \
--required-platforms "${REQUIRED_UPDATER_PLATFORMS}"

- name: Upload to release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.prepare.outputs.release_tag }}
files: |
release-updater-assets/*
release-assets/**/*.AppImage
release-assets/**/*.deb
release-assets/**/*.dmg
release-assets/**/*.rpm
release-assets/**/*bitfun-installer.exe
fail_on_unmatched_files: true

- name: Verify published updater manifest
run: |
curl -fsSL --retry 5 --retry-delay 3 \
"https://github.com/GCWing/BitFun/releases/download/${{ needs.prepare.outputs.release_tag }}/latest.json" \
-o latest.published.json
node scripts/verify-tauri-latest-json.mjs \
--manifest latest.published.json \
--version "${{ needs.prepare.outputs.version }}" \
--required-platforms "${REQUIRED_UPDATER_PLATFORMS}" \
--check-urls true
3 changes: 2 additions & 1 deletion .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,8 @@ jobs:
- name: Cache Rust build
uses: swatinem/rust-cache@v2
with:
shared-key: "nightly-${{ matrix.platform.name }}"
shared-key: "nightly-v2-${{ matrix.platform.name }}"
cache-bin: false

- name: Install dependencies
run: pnpm install --frozen-lockfile
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ apps/desktop/gen/
src/apps/desktop/gen/
src-tauri/gen/

# Updater signing private key (never commit; pubkey is in tauri.conf.json)
src/apps/desktop/.tauri/*.key

# Editor directories and files
.vscode/*
!.vscode/extensions.json
Expand Down
36 changes: 35 additions & 1 deletion AGENTS-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ BitFun 是一个由 Rust workspace 与共享 React 前端组成的项目。
| 模块 | 路径 | Agent 文档 |
|---|---|---|
| Core(产品逻辑) | `src/crates/core` | [AGENTS.md](src/crates/core/AGENTS.md) |
| 已拆出的 core 支撑 crate | `src/crates/{core-types,agent-stream,runtime-ports,terminal,tool-runtime}` | (使用 core 指南) |
| Core owner crate | `src/crates/{services-core,services-integrations,agent-tools,tool-packs}` | (使用 core 指南 + 拆解护栏) |
| 产品领域 crate | `src/crates/product-domains` | [AGENTS.md](src/crates/product-domains/AGENTS.md) |
| Transport 适配层 | `src/crates/transport` | (使用 core 指南) |
| API layer | `src/crates/api-layer` | (使用 core 指南) |
| AI adapters | `src/crates/ai-adapters` | [AGENTS.md](src/crates/ai-adapters/AGENTS.md) |
Expand Down Expand Up @@ -94,8 +97,38 @@ await api.invoke('your_command', { request: { ... } });
- 桌面端专属集成应放在 `src/apps/desktop`,再通过 transport / API layer 回流到共享逻辑。
- 在共享 core 中避免使用 `tauri::AppHandle` 等宿主 API;优先使用 `bitfun_events::EventEmitter` 等共享抽象。

### 远程兼容

- 新增功能时,从一开始就要考虑远程工作区和远程控制同步适配。只支持本地的行为很容易让远程场景功能缺失。
- 如果某个功能无法合理支持远程工作区,必须做能力屏蔽,或展示明确的不支持提示,不能让它以通用错误的形式失败。

### Agent loop 行为

- 不要把硬编码限制或模式判断作为处理 agent loop 循环问题的第一反应,例如仅按字符串或次数阻止重复工具调用。
- 过多硬编码会把 agent loop 变成脆弱的 workflow。应先定位根因:工具行为、模型交互、会话上下文封装、prompt/tool schema 设计,或状态同步问题。

## 架构

### Core 拆解护栏

任何 `bitfun-core` 拆解、feature 边界、依赖边界或 Rust 构建提速重构,
都必须先阅读
[`docs/architecture/core-decomposition.md`](docs/architecture/core-decomposition.md)。
该文档定义产品行为不变量、crate 归属目标、禁止依赖方向、feature 安全规则和里程碑验证门禁。

### Tool 归属护栏

- `src/crates/agent-tools` 拥有轻量 tool contract,以及 generic registry / dynamic-provider container。
- `src/crates/core/src/agentic/tools` 当前负责产品工具组装、`dyn Tool` 适配、snapshot decoration、tool exposure / manifest resolution,以及按需工具说明发现(`GetToolSpec`)。
- `ToolUseContext` 与具体工具实现继续留在 core,直到有已评审的 port/provider 设计和等价测试。
- Tool 迁移必须保持 expanded/collapsed exposure、prompt 可见 manifest、`ToolUseContext.unlocked_collapsed_tools`,以及 desktop/MCP/ACP tool catalog 行为等价。

### DeepReview 护栏

Deep Review / 代码审核团队横跨 core runtime 与 Web UI。target resolution 与
manifest construction 保持在前端;policy validation、queue/retry state 和
report enrichment 保持在 shared core。

### 后端链路

大多数功能建议按这个顺序追踪:
Expand Down Expand Up @@ -133,7 +166,7 @@ SessionManager → Session → DialogTurn → ModelRound
| `core`、`transport`、`api-layer` 或共享服务中的 Rust 逻辑 | `cargo check --workspace && cargo test --workspace` |
| 桌面端集成、Tauri API、browser/computer-use 或桌面专属行为 | `cargo check -p bitfun-desktop && cargo test -p bitfun-desktop` |
| 被桌面端 smoke/functional 流覆盖的行为 | `cargo build -p bitfun-desktop` 后运行最接近的 E2E spec,或 `pnpm run e2e:test:l0` |
| `src/crates/ai-adapters` | 运行上面相关 Rust 检查,**并且**运行 `src/crates/core/tests` 中的 stream integration tests |
| `src/crates/ai-adapters` | 运行上面相关 Rust 检查,**并且**运行 `cargo test -p bitfun-agent-stream` 验证 stream contract |
| 安装器应用 | `pnpm run installer:build` |

## 先看哪里
Expand All @@ -142,6 +175,7 @@ SessionManager → Session → DialogTurn → ModelRound
|---|---|
| Agent mode | `src/crates/core/src/agentic/agents/`、`src/crates/core/src/agentic/agents/prompts/`、`src/web-ui/src/locales/*/scenes/agents.json` |
| Deep Review / 代码审核团队 | `src/crates/core/src/agentic/deep_review_policy.rs`、`src/crates/core/src/agentic/agents/deep_review_agent.rs`、`src/crates/core/src/agentic/tools/implementations/{task_tool.rs,code_review_tool.rs}`、`src/web-ui/src/shared/services/reviewTeamService.ts`、`src/web-ui/src/flow_chat/services/DeepReviewService.ts`、`src/web-ui/src/app/scenes/agents/components/ReviewTeamPage.tsx` |
| 会话用量报告(`/usage`) | `src/crates/core/src/service/session_usage/`、`src/web-ui/src/flow_chat/components/usage/`、`src/web-ui/src/locales/*/flow-chat.json` |
| Tool | `src/crates/core/src/agentic/tools/implementations/`、`src/crates/core/src/agentic/tools/registry.rs` |
| MCP / LSP / remote | `src/crates/core/src/service/mcp/`、`src/crates/core/src/service/lsp/`、`src/crates/core/src/service/remote_connect/`、`src/crates/core/src/service/remote_ssh/` |
| 桌面端 API | `src/apps/desktop/src/api/`、`src/crates/api-layer/src/`、`src/crates/transport/src/adapters/tauri.rs` |
Expand Down
83 changes: 81 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ Repository rule: **keep product logic platform-agnostic, then expose it through
| Module | Path | Agent doc |
|---|---|---|
| Core (product logic) | `src/crates/core` | [AGENTS.md](src/crates/core/AGENTS.md) |
| Extracted core support | `src/crates/{core-types,agent-stream,runtime-ports,terminal,tool-runtime}` | (use core guide) |
| Core owner crates | `src/crates/{services-core,services-integrations,agent-tools,tool-packs}` | (use core guide + decomposition guardrails) |
| Product domains | `src/crates/product-domains` | [AGENTS.md](src/crates/product-domains/AGENTS.md) |
| Transport adapters | `src/crates/transport` | (use core guide) |
| API layer | `src/crates/api-layer` | (use core guide) |
| AI adapters | `src/crates/ai-adapters` | [AGENTS.md](src/crates/ai-adapters/AGENTS.md) |
Expand Down Expand Up @@ -94,8 +97,83 @@ await api.invoke('your_command', { request: { ... } });
- Desktop-only integrations belong in `src/apps/desktop`, then flow back through transport/API layers.
- In shared core, avoid host-specific APIs such as `tauri::AppHandle`; use shared abstractions such as `bitfun_events::EventEmitter`.

### Remote compatibility

- When adding features, consider remote workspace and remote control synchronization support from the start. Local-only behavior can silently leave remote scenarios incomplete.
- If a feature cannot reasonably support remote workspaces, gate it or show a clear unsupported-state message instead of letting it fail with a generic error.

### Agent loop behavior

- Do not add hard-coded limits or pattern checks to the agent loop as a first response to looping behavior, such as blocking repeated tool calls by string or count alone.
- Excessive hard-coding turns the agent loop into a brittle workflow engine. Investigate the root cause first: tool behavior, model interaction, session context packaging, prompt/tool schema design, or state synchronization issues.

## Architecture

### Core decomposition guardrails

For any `bitfun-core` decomposition, feature-boundary, dependency-boundary, or
Rust build-speed refactor, read
[`docs/architecture/core-decomposition.md`](docs/architecture/core-decomposition.md)
before editing. The guardrail document defines product-behavior invariants,
crate ownership targets, forbidden dependency directions, feature safety rules,
and milestone verification gates.

### Tool ownership guardrails

- `src/crates/agent-tools` owns lightweight tool contracts and the generic
registry / dynamic-provider container.
- `src/crates/core/src/agentic/tools` owns product tool assembly, `dyn Tool`
adaptation, snapshot decoration, tool exposure / manifest resolution, and
on-demand tool spec discovery (`GetToolSpec`) for now.
- Keep `ToolUseContext` and concrete tool implementations in core until a
reviewed port/provider design and equivalence tests exist.
- Tool migrations must preserve expanded/collapsed exposure, prompt-visible
manifests, `ToolUseContext.unlocked_collapsed_tools`, and desktop/MCP/ACP
tool catalog behavior.

### Latest-main runtime anchors

- Agent registry migration must preserve mode-scoped subagent availability,
hidden/custom/review grouping, and desktop subagent API semantics.
- DeepResearch report finalization currently relies on the core citation
renumber hook; do not move it without preserving `report.md`,
`citations.md`, `display_map.json`, and rejected-citation handling.
- Workspace/search refactors must preserve remote workspace startup guards,
remote flashgrep fallback, and search preview/context mapping.
- ACP timeout handling and Web operation-diff fallback are product-surface
behavior; share facts through contracts, not UI/protocol implementation.

### Services/product owner closure

- Remote-SSH path, session identity, mirror path, and unresolved-session layout
helpers belong in `bitfun-services-integrations`; core may inject
`PathManager` and hold SSH manager / remote FS / terminal assembly.
- MiniApp storage shape belongs in `bitfun-product-domains`; core storage
keeps filesystem IO, worker runtime, `PathManager`, and port adapters until a
reviewed runtime migration exists.
- Remote-connect port baselines live in `bitfun-runtime-ports` and
`bitfun-services-integrations`; tracker state and tracker event reduction
belong in `bitfun-services-integrations`. Remote command/response wire DTOs,
remote model catalog DTOs, poll-response assembly helpers, and model-catalog
poll delta policy also belong there. Pure remote image-context
fallback/preference, restore-target, cancel-decision, and remote file-transfer
size/chunk/name helpers also belong in `bitfun-services-integrations`, while
core still owns the adapter back to `ImageContextData`, dispatcher assembly,
session restore execution, file IO/path resolution, terminal pre-warm, and
product execution routing. Further remote runtime owner migration must
preserve the existing migration snapshots for command/response shape,
restore, active-turn polling, cancel decisions, image context
fallback/preference, tracker fanout, file transfer, and RemoteRelay/Bot queue
policy.
`AgentSubmissionPort` still rejects generic attachments until
image/multimodal equivalence tests and a runtime migration plan are reviewed.

### DeepReview guardrails

Deep Review / Code Review Team work spans the core runtime and web UI. Keep
target resolution and manifest construction on the frontend; keep policy
validation, queue/retry state, and report enrichment in shared core.

### Backend flow

Trace most features in this order:
Expand Down Expand Up @@ -133,15 +211,16 @@ Session data is stored under `.bitfun/sessions/{session_id}/`.
| Shared Rust logic in `core`, `transport`, `api-layer`, or services | `cargo check --workspace && cargo test --workspace` |
| Desktop integration, Tauri APIs, browser/computer-use, or desktop-only behavior | `cargo check -p bitfun-desktop && cargo test -p bitfun-desktop` |
| Behavior covered by desktop smoke/functional flows | `cargo build -p bitfun-desktop` then the nearest E2E spec or `pnpm run e2e:test:l0` |
| `src/crates/ai-adapters` | Relevant Rust checks above **and** stream integration tests in `src/crates/core/tests` |
| `src/crates/ai-adapters` | Relevant Rust checks above **and** `cargo test -p bitfun-agent-stream` for stream contracts |
| Installer app | `pnpm run installer:build` |

## Where to look first

| Feature | Key paths |
|---|---|
| Agent modes | `src/crates/core/src/agentic/agents/`, `src/crates/core/src/agentic/agents/prompts/`, `src/web-ui/src/locales/*/scenes/agents.json` |
| Deep Review / Code Review Team | `src/crates/core/src/agentic/deep_review_policy.rs`, `src/crates/core/src/agentic/agents/deep_review_agent.rs`, `src/crates/core/src/agentic/tools/implementations/{task_tool.rs,code_review_tool.rs}`, `src/web-ui/src/shared/services/reviewTeamService.ts`, `src/web-ui/src/flow_chat/services/DeepReviewService.ts`, `src/web-ui/src/app/scenes/agents/components/ReviewTeamPage.tsx` |
| Deep Review / Code Review Team | `src/crates/core/src/agentic/deep_review/`, `src/crates/core/src/agentic/deep_review_policy.rs`, `src/crates/core/src/agentic/agents/deep_review_agent.rs`, `src/crates/core/src/agentic/tools/implementations/{task_tool.rs,code_review_tool.rs}`, `src/web-ui/src/shared/services/review-team/`, `src/web-ui/src/flow_chat/deep-review/`, `src/web-ui/src/app/scenes/agents/components/ReviewTeamPage.tsx` |
| Session usage report (`/usage`) | `src/crates/core/src/service/session_usage/`, `src/web-ui/src/flow_chat/components/usage/`, `src/web-ui/src/locales/*/flow-chat.json` |
| Tools | `src/crates/core/src/agentic/tools/implementations/`, `src/crates/core/src/agentic/tools/registry.rs` |
| MCP / LSP / remote | `src/crates/core/src/service/mcp/`, `src/crates/core/src/service/lsp/`, `src/crates/core/src/service/remote_connect/`, `src/crates/core/src/service/remote_ssh/` |
| Desktop APIs | `src/apps/desktop/src/api/`, `src/crates/api-layer/src/`, `src/crates/transport/src/adapters/tauri.rs` |
Expand Down
4 changes: 2 additions & 2 deletions BitFun-Installer/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion BitFun-Installer/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "bitfun-installer",
"version": "0.2.5",
"version": "0.2.7",
"private": true,
"type": "module",
"description": "BitFun Custom Installer - Modern branded installation experience",
Expand Down
Loading
Loading