Repository navigation
sync: taiji 定制版同步最新基线 8d810b99e(LegionCard 样式统一 + 群聊 P0 修复) - #2262
Closed
1688mengdie wants to merge 4042 commits into
Closed
1688mengdie wants to merge 4042 commits into
1688mengdie wants to merge 4042 commits into
Conversation
Owner
|
代码量过于庞大,建议适当拆分 |
Author
|
近期会彻底重构,需要一个基线做完整节点,然后分功能拆 |
…de deserialization)
实证清单: 1. types.rs:595-597 添加 pub todos: Option<serde_json::Value>(serde default) 2. types.rs:1262 构造点修复(todos: None) 3. save_dialog_turn/load_session_turns 自动序列化/反序列化 todos 4. vitest 四场景全绿(182 tests passed,mock 对齐真实后端) 5. cargo check/clippy 通过(7 预存 warning,无新增) 6. fmt --check 本次改动合规 禁假实现/声称失实,逐行核实。
实证清单: 1. FlowChatStore.ts:9367-9383 getTodos 改为取 latest non-empty turn's todos 2. 禁 concat 所有 turn,确保删除后不残留、多轮替换取最新 3. vitest 新增 2 个 getTodos 聚合用例(删除不残留/多轮取最新) 4. 总计 184 tests passed(含既有 178) Fix root cause 3: getTodos aggregates all turn todos → takes latest valid turn only
1688mengdie
force-pushed
the
custom/taiji-unofficial
branch
from
August 21, 2026 07:43
f9f70be to
a7d3a18
Compare
…y-config-persistence fix(config): persist review team concurrency config fields
Run tasklist with /NH for each image separately instead of shelling through cmd.exe with /FI chains, which misdetected compiler activity on some Windows hosts.
…ding Blur focused startup window controls before hiding the overlay, set inert during the exit animation so it cannot reclaim focus, and keep the splash screen exposed to assistive technology while it is visible.
Treat zero-sized WebView2 viewport geometry as a temporary suspension instead of a real resize, preventing follow-output, virtualization, and scroll handlers from rewriting the reader's position while the window is minimized. Restore the anchored reading position after valid geometry returns without crediting host recovery movement as user scrolling. Add focused regression coverage for invalid viewport rectangles, anchor recovery, measurement compensation, and follow-output behavior. Keep low-frequency minimize/restore diagnostics behind the existing flow_chat_diagnostics switch.
The dropdown anchored on the selector container's left edge, so a wide model list overflowed the window's right side. The popover helper gains an alignment option; the model selector anchors on the trigger button and aligns right edges, with the viewport clamp still guarding narrow windows.
Replace per-frame Turn pinning with a one-shot physical-bottom reveal. - Cap the input footer and tail spacer at 75% of the viewport - Let streamed output consume reserved blank at a fixed scroll offset - Enter normal tail following when content reaches the viewport bottom - Preserve deferred reveal, user takeover, and collapse behavior - Update focused tests and viewport documentation
Keep auto-managed completed file cards on the compact preview from the first completed render through collapse unmount. This prevents transient expanded diff height from advancing the tail-follow target and moving earlier chat content upward. Preserve the full diff preview for manually expanded cards and cover both completion and collapse transitions in tests.
Keep TodoWrite cards collapsed while tasks stream or change status. Preserve expansion only after an explicit user toggle and cover the behavior with focused interaction tests.
Keep the output frame and footer mounted across streaming and automatic collapse transitions so the card height remains stable. - Preserve parameter-receiving and no-output states - Keep xterm rendering lazy while avoiding layout jumps - Keep completed auto-collapse on the compact output preview - Align the footer with the expanded card bottom edge - Add focused regression coverage for lifecycle transitions
Display the first task in the collapsed TodoWrite header when every task is pending, while preserving the in-progress task priority. Add focused coverage for the all-pending state.
Treat streaming thinking and text rounds as provisional until they expose a hard boundary. This keeps a later collapsible tool in the existing explore group without collapsing and reopening the live tail. Derive automatic collapse from the critical-boundary state instead of persisting it as explicit user intent, so provisional rounds can safely rejoin the group. Add coverage for thinking-only, streaming narrative, and AgentWait transitions.
- Collapse explore groups by default and preserve explicit user state - Keep active rounds as standalone model-round items - Merge collapsible rounds only after terminal status - Update height estimation and grouping tests
Keep the resolved reasoning projection and its catalog binding together with the model draft when applying reasoning preset changes. Reuse the matching projection for summaries, subsequent edits, and save validation so models.dev defaults are not rejected as unknown presets. Extend the reasoning panel test to cover applying an updated models.dev projection.
Keep inactive scene viewports mounted with stable geometry while hiding them from interaction. Remember session-scoped history presentation, viewport intent, and semantic scroll snapshots so scene and session switches can restore the previous reading position instead of reopening at the tail. Add focused viewport-boundary tests, diagnostics, and verification notes.
Preserve reading positions across session switches by preventing provisional mount snapshots and automatic tail placement from taking over while a saved viewport is being restored. - Anchor snapshots to exact virtual-item identity with a Turn fallback - Require restored geometry to remain stable across painted frames - Publish the final snapshot only after restoration completes - Add focused regression coverage and update viewport documentation
…ng#2406 review team concurrency config persistence)
`fix(flowchat): stabilize ExecCommand card collapse layout` made the card render `data-bf-state="active"` and `data-bf-state="completed"`, but the owning Appearance descriptor never declared either state, so `pnpm run appearance:contract-audit` rejected both reads at `ExecProcessToolCardView.tsx:473`. Declare the two states alongside the `cancelled`, `waiting` and `error` entries they sit next to. Backported from the `cf35b901b` portion that applies here; that commit's agent-registry and ChatInput expectations track `1.0.0-explore`-only behaviour and stay out. Co-Authored-By: Claude <noreply@anthropic.com>
三重断链根治 + CodeBuddy 思考档位支持: 1. 数据源:RemoteModelInfo 增加 supports_reasoning 字段,map_model_entries 保留 CodeBuddy 的 supportsReasoning(全仓审计所有构造点补 None) 2. 前端:syncSelectedModelDrafts 按 supports_reasoning=true 为模型 draft 设置 reasoning 默认 default_preset=on;offering 模型透传 supports_reasoning 3. 后端兜底+档位:adapter 识别 copilot.tencent.com,生成 on/off toggle + high/max effort 档位 preset;compile_chat_reasoning_action 对 CodeBuddy 注入 enable_thinking + reasoning_effort(CodeBuddy 思考为档位可调) 验证:cargo check/clippy/fmt 全绿,ai-adapters 245 tests,前端 type-check + 3893 vitest 全绿
Previously, POSIX-prefixed Windows drive paths (e.g. /C:/foo/main.py) could resolve as drive-relative paths and write files under the process working directory. Missing-marker fallbacks also led agents to resend payloads unnecessarily. Update Write handling to: - Normalize malformed Windows drive paths while preserving remote POSIX path semantics - Report corrected paths and provide platform-specific examples - Direct agents to move preserved fallback files instead of resubmitting content - Cover path normalization and fallback guidance with focused tests
Expose stable MCP invocation parameters in a nested details section so users can inspect requests without crowding the default card view. - Keep parameter details collapsed by default and reset them when the parent card closes - Allow failed and result-less calls to expose available input - Auto-expand each MCP App once while preserving later user collapse - Add focused coverage for input parsing and expansion behavior
Keep the WriteStdin card display limited to the provided chars when append_enter is enabled, while preserving its execution semantics. Add regression coverage for the displayed and copied input text.
- Detect CodeBuddy model by provider/base_url in save_new_model - Call list_models() to fetch dynamic catalog when adding CodeBuddy - Register all dynamic models to runtime_ai_models - Fallback to single model if dynamic fetch fails
- After successful CodeBuddy PAT login, call list_models() to get dynamic catalog - Register all dynamic models to runtime_ai_models - Fallback gracefully if dynamic fetch fails or returns empty
This reverts commit c2a3f50.
This reverts commit 269596d.
Evidence: app.log:264 parse codebuddy /v3/config response -> empty model list. Parsing contract is data.models.data (V3ConfigData/V3ModelsData) but the CLI side uses data.data.models. Capture the live shape (truncated 800 chars, no credentials) before changing the parser, per the 0830 no-sample-no-fix rule. Not a fix: evidence-gathering only.
Root cause: app.log:264 'parse codebuddy /v3/config response' -> empty list. The parser only accepted data.models.data, but the gateway also serves data.data.models, so a valid authenticated response failed to deserialize and fell through to an empty catalog. - V3ConfigData accepts models.data and data.models; documented shape wins - model_entries() resolves either shape, unauthenticated -> empty (no error) - parse failures keep a truncated credential-free body sample for diagnosis - tests: legacy shape, shape precedence, unauthenticated resolution Verified: cargo check + 25 codebuddy unit tests pass (EXITCODE=0).
Evidence: app.log:298 real response is {data:{agents:[{models:[hy4-preview,...]}]}}.
The gateway serves model IDs as a string array, not CodeBuddyModelEntry objects.
- V3ConfigData accepts models.data (CodeBuddyModelEntry[]) and agents[].models (String[])
- model_entries() prefers documented shape, falls back to string ID conversion
- parse failures keep a truncated credential-free body sample for diagnosis
- tests: agents.models shape, shape precedence, unauthenticated resolution
Verified: cargo test → 5 parse_v3_config tests pass
… KB)
Knowledge base ground truth (CW3-SEC-0828/执行-CB-MODELS-FULL-0830.md:45):
CLI reads ed?.data?.data ?? {} -> ep.models (top-level array), so the live
/v3/config shape is data.data.models = String[].
- V3ConfigData accepts models.data (CodeBuddyModelEntry[]) and data.models (String[])
- model_entries() prefers documented shape, falls back to string ID conversion
- tests: live shape, precedence, unauthenticated resolution
Verified: cargo test -> 25 codebuddy tests pass (EXITCODE=0).
The gateway has changed the model-list shape over time: documented data.models.data (object entries), data.data.models (string IDs), and data.agents[].models (string IDs, observed live 2026-09-01). Fixed struct deserialization kept failing whenever the shape drifted, silently emptying the catalog. Replace struct-based parsing with lenient serde_json::Value extraction that accepts every known shape, deduplicates IDs, and prefers object entries for fidelity. Unknown/absent shapes resolve to an empty list instead of an error. Network-dependent tests (no_enterprise_id_dynamic_failure_returns_empty_list, enterprise_id_missing_logs_warning) assumed the gateway is unreachable; on a network-enabled machine the live gateway now responds with real models, so they are marked #[ignore] with the parse-level empty-list path covered by unit tests instead. Tests: 25 pass / 0 fail / 2 ignored (network-dependent).
…cial # Conflicts: # src/crates/execution/tool-contracts/src/lib.rs
…te path CI repo-hygiene rejects machine-specific absolute paths (C:/Users/...); the qoder-wasm-extract default bundle path was the only violation. Resolve the global install via npm root -g (ComSpec on Windows) with QODER_BUNDLE / --bundle overrides, and fail with a clear message when the package is not installed. Verified: node --check, real extraction run, check-repo-hygiene passed.
…-0187) Cargo Deny advisories fail on lopdf 0.41.0 (stack overflow via deeply nested PDF objects, fixed in 0.42.0). Mirrors upstream PR GCWing#2588: cargo update -p pdf-inspector. Verified: cargo deny check advisories ok, cargo check -p tool-runtime ok.
…ates Upstream main moved session_control_tool behind tools-git and stopped enabling local git from agent-runtime (core-boundaries CI contract). Custom code kept unconditional references, breaking the agent-runtime build. - agent-runtime: drop both local git feature hacks (services-core worktree is reachable via tools-git at product level, matching upstream) - session_control_tool: gate git/worktree deps behind feature=git; keep session auth helpers (R-26 orphan/authorization gates) unconditional so security checks stay on in all builds - session_message_tool / coordinator: gate worktree paths behind git; authorization calls remain unconditional - materialization: SessionControl registration behind tools-git (upstream) - coordinator: emit standalone pub use DialogTriggerSource (contract) Verified: check-core-boundaries passed, cargo check agent-runtime and agent-runtime+git+tools-git (0e0w), cargo test -p bitfun-core --lib 165 pass.
…form cfg contracts Upstream PR2262 CI run 33515144543 failed 8 jobs; root causes fixed: - Cargo Deny licenses: bitfun-agent-workflows missing license field (C-9) - theme audit: GCWing#2534 in a comment was parsed as a 4-digit hex color (App UI scope baseline 0); reword the PR reference - session_manager: idle_eviction test fn missing #[test] (dead_code under RUSTFLAGS=-D warnings in the bitfun-core lib test profile) - desktop non-Windows builds: window_state_support chain and app_data_dir only referenced by cfg(windows) callers; gate them with cfg(any(target_os = "windows", test)) mirroring webview_recovery.rs - agent_registry_contracts: specs[18] -> specs[19] after group/Legion insertion (CodeReview moved to index 19; ReviewFixer at 18 is hidden from agentic parents) - exec_cli_contracts: retry-count assertions aligned with the upstream retry-category contract (403/TTFT terminal, transport drops retried): http_403 10->1, combined provider+patch 10->1, disconnect_then_403 10->2, malformed_sse reworked into a disconnect-then-immediate mock (stream_json_transient_503_retries_then_completes -> renamed stream_json_reconnect_retries_then_completes) and expects 2 requests - rustfmt: fix pre-existing merge-fallout formatting in coordinator.rs, group_room_tools.rs, session_message_tool.rs, tool-contracts lib.rs Verified locally (RUSTFLAGS=-D warnings): - cargo check -p bitfun-desktop --lib / -p bitfun-core: 0e0w - cargo test -p bitfun-core --lib: 165 passed - cargo test -p bitfun-desktop --lib: 294 passed - cargo test -p bitfun-agent-runtime --test agent_definition_contracts: 93 passed - cargo test -p bitfun-cli --test cli_command_contracts exec_cli_contracts: 16 passed - cargo fmt --check: clean; theme:color-audit: no baseline failures; tsc --noEmit: 0 error
…, and ports CI run 33594675251 (head a28b44e) failed 6 jobs; root causes fixed: - Frontend lint (--max-warnings=0): - ToolsScene: route get_all_tools_info through api.invoke (ApiClient) instead of a dynamic @tauri-apps/api/core import - AssistantDefaultsPage: add userSelectableTools to the effect deps - NodePalette/WorkflowDiagram: split pure model exports (option enumeration, DAG layout) into NodePalette.model.ts / WorkflowDiagram.model.ts so component files only export components (react-refresh/only-export-components); tests import the model modules - core lib (product-full): ProductFull assembly plan now carries the custom Legion/group agents in CODE_AGENT_IDS so the profile registry preserves the complete builtin catalog - core lib (product-full): readonly tool manifest expectation includes TodoWrite (registered readonly by the product runtime) - sdk-host tests: AgentSessionSummary initializer gains the new parent_session_id/status/display_state/is_daemon fields (E0063) - cli dispatch: queued_job_spawn_claim recovery poll now retries briefly because BSD flock can release the descriptor lock asynchronously right after close (flaked on macos-15 between identical product code runs) Verified locally (RUSTFLAGS=-D warnings): - eslint . --max-warnings=0: clean; tsc --noEmit: 0 error - vitest NodePalette/WorkflowDiagram: 12 passed - cargo test -p bitfun-sdk-host -p bitfun-sdk-host-app: all ok - cargo test -p bitfun-cli --bin bitfun: 685 passed - cargo test -p bitfun-core -p bitfun-desktop --lib: 2703+294 passed; sole local failure (btw_session baseline probe) is confined to this machine's C:\ vs E:\C_Link path aliasing and passes on CI runners - cargo fmt --check: clean
Preserve repository ownership failures as a stable error code across review platform commands and reuse the shared trust classifier. Translate that code into localized, actionable copy in the review panel and route user-initiated retries through the existing trust recovery flow. Add backend and frontend coverage for trust classification and localized error handling.
Translate dialog-turn start failures in the Review action bar while preserving specific backend reasons. Allow multiline error details to wrap without truncation and cover formatting, localization, component wiring, and layout behavior.
Resolve explicit file and directory scopes against the active local or remote workspace before starting Review. Return localized missing-target feedback and cover desktop path routing, target resolution, service handling, and API forwarding with regression tests.
Run web UI tests had never executed in prior PR runs (earlier steps failed first); this run surfaced 11 latent failures in two files, plus one lint directive misplacement. All predate this branch's fixes (verified against the parent commit via worktree): - AssistantDefaultsPage: keep the refill effect off the userSelectableTools dep (a dep entry refetches the catalog it just loaded and loops) and pin the intent with an eslint-disable directive on the deps line; move the tool-catalog stub from @tauri-apps/api/core (no longer reached — commands route through the ApiClient adapter) to api.invoke at the ApiClient boundary - AgentsScene: the standalone create-legion entry button was folded into saved-preset cards (LegionCard onOpenDetails), leaving the entry-click prologue dead; render CreateLegionPage directly with AgentsScene's scene-root wrapper and keep guarding the page contracts (save enabled, radiogroup semantics, aria-live, DAG canvas, scene-root, back label) - AgentsScene: legions gallery zone testid follows the production rename agents-legions-zone -> agents-workflow-zone Verified locally: vitest run = 529 files / 3991 tests passed; eslint . --max-warnings=0 clean; tsc --noEmit clean
The test hardcoded "expires_at": "2026-09-01T00:00:00+00:00" and asserted the parsed expiry is still in the future (ms > now_ms()); the date went stale on 2026-09-02, turning the assertion into a permanent failure on the subscription-auth step (ubuntu Rust Build Check). Generate both response expiries (30d / 60d ahead) from the current clock instead. Verified: cargo test -p bitfun-ai-adapters --features subscription-auth --lib subscription_auth = 102 passed / 0 failed (CI saw 101+1F); cargo fmt --check clean
fix(review): localize repository and launch failures
Resolves the only conflict in ReviewPlatformPanel.tsx: upstream added `userInitiated: true` to two loadSnapshot calls while the customization had replaced the literal "Refresh" / "Retry" labels with i18n keys. Keeps both sides — i18n keys (web-ui-source CJK budget is 0) plus the upstream userInitiated flag (gitTrustService suppresses quiet-window prompts unless the call is user initiated). Verified locally: eslint --max-warnings=0 = 0, tsc --noEmit = 0, i18n:audit (BITFUN_I18N_CONTRACT_TEST_PROFILE=ci) = 0 warning.
Owner
|
Thank you for your contribution. The If your changes are still needed, please reapply them on a fresh branch based on the new We apologize for the disruption and appreciate your understanding. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
同步内容
taiji 定制版(custom/taiji-unofficial)同步最新基线 \8d810b99e\(相对上次合并基线 aa98261 前进,含上游合流 9b05dd0)。
本 PR 新增关键提交
验证