Skip to content

v0.3.30

Choose a tag to compare

@alex09x alex09x released this 15 Oct 05:34
· 4 commits to main since this release
ec18be9

Fixed

  • Pull & Remote File Read Interleaved LSP Notification Handling (crates/prod-code-mcp):
    Updated pull_remote_files (sync/pull.rs) and read_remote_file (remote_fs/mod.rs) to ignore asynchronous WireMessage::LspPayload (window/logMessage) and WireMessage::Pong frames with fixed timeout_at deadlines while awaiting HandshakeResponse and ReadFileResponse, preventing prod-code pull from aborting with unexpected message reading file (#1078).
  • External Toolchain Source Path & Remote Mirror Resolution (crates/prod-code-mcp):
    Fixed resolve_file_path (tools/compile_gate.rs) to preserve existing absolute external paths (such as Rust toolchain library sources under .rustup/toolchains/.../library/core/src/error.rs) and map remote workspace mirror paths via workspace_relative_path, while updating resolve_symbol (tools/symbols/resolve.rs) to match relative path hints and award the checkout ranking bonus to remote mirror paths (#1079).
  • Concurrent Placement Discovery & Resilient MCP Server Startup (crates/prod-code-mcp, crates/prod-code-client):
    Updated discover_nodes_with_paths (cluster/discover.rs) to stop after the first responsive seed's cluster_view and probe unverified remembered placements concurrently via join_all, matched "closed the connection" in is_retryable_connection_error (server/failover.rs), and allowed Commands::Mcp (client/src/main.rs) to fall back to the first configured seed on transient startup discovery failures (#1080).
  • Deep Nested Swift Subproject Routing & Declaration Discovery (crates/prod-code-mcp):
    Raised MAX_SEARCH_DEPTH from 6 to 10 in nested_projects.rs, routed nested subproject queries through route_for_path in execute_lsp_query (tools/compile_gate.rs) and across_projects.rs, separated the declarations_in query deadline from the initial Swift sync deadline, and added Swift extension and typealias keywords to declared_at (#1081).
  • Sticky Build-Node Sessions & Disk-Authoritative Placement Cache (crates/prod-code-mcp):
    Updated handle_cluster_rebalance_tick (server/rebalance.rs) to keep active MCP sessions pinned to their current node while status.host.pressure().is_none() and the node fits the workspace, delayed the initial rebalance timer tick by 30 seconds (server/transport.rs), recorded remember_placement on ExecExit (exec/runner.rs), and made load_placement (cluster/placement.rs) read disk-authoritative state so external placement rewrites and removals take effect immediately (#1082).
  • Nested Git Worktree Exclusion & Component Reference Discovery (crates/prod-code-mcp):
    Excluded nested git worktree directories (child directories containing .git, such as .prod/worktrees/*) from source_files, workspace/symbol, and add_locations; added tools/references/lexical.rs and extended caller_migration/mask.rs to resolve relative and multi-line imports, preserve template string interpolations (${...}), Python f-strings (f"...{...}..."), Vue directive expressions (v-*, :, @, #), and JS/TS regex literals (/pattern/flags), while filtering shadowed bindings, comments, and unverified text matches (#1071).
  • Single-File Outline Readiness & Worktree Base Placement Keys (crates/prod-code-protocol, crates/prod-code-mcp):
    Removed "textDocument/documentSymbol" from needs_index (readiness/types.rs) so single-file outlines do not block on workspace-wide indexing, and normalized engine-specific placement keys in session/pool.rs and session/connection.rs to ws_identity.base.as_deref().unwrap_or(&ws_identity.name) (#1083).
  • Same-Type Rust Inherent Method Moves (crates/prod-code-mcp):
    Added move_inherent_method (move_item/item.rs, move_item/execute.rs) to move a Rust inherent method into an existing, verified same-owner impl block in another module of the same crate while promoting private visibility to pub(crate) and validating caller files (#1084).
  • Rust code_change_signature Fallback Rewrites & Typed-Local Coercion Safety (crates/prod-code-mcp):
    Added rewrite_file_calls and apply_fallback_rewrites (signature/rewrite.rs, called from signature/change.rs) with signature/util.rs helpers to rewrite call sites directly from analyzer reference positions when SSR cannot parse a default expression or omits associated-function calls (#1085, #1086), and recorded typed_locals in signature/types.rs, signature/call_sites.rs, and signature/effects/hazards.rs so local bindings whose explicit reference type matches a removed parameter type are classified safely (#1089).
  • Pinned pull Handshake Redirects & pull/exec CLI Routing (crates/prod-code-mcp, crates/prod-code-gateway, crates/prod-code-client):
    Set redirects: false in pull_remote_files (sync/pull.rs) and skipped check_cluster_redirects for client_name == "prod-code-pull" (crates/prod-code-gateway/src/session/handshake.rs), and excluded Commands::Pull and Commands::Exec arguments from command_path_tokens (crates/prod-code-client/src/cli/candidate.rs) so pull and exec route to the workspace's primary placement without language-hint overrides (#1087, #1088).
  • Proven Pure-Borrow Re-Acquisition in Rust code_extract_function (crates/prod-code-mcp):
    Added reacquire_conflicting_borrows and conflicting_borrow_captures (extract_function/borrows.rs, extract_function/tokens.rs), wired into extract_function/execute.rs and extract_function/duplicates/validate.rs, to re-acquire proven pure field borrows (&<param>.<field> and verified standard Option::as_ref() projections) inside extracted helpers when the binding is not used after the selection, or report E0502 when it remains live (#1090).
  • Swift Subclass override Symbol Supplementation (crates/prod-code-mcp):
    Updated declarations_in and files_naming (tools/symbols/across_projects.rs) to scan a bounded set of relevant .swift files and supplement workspace/symbol results with documentSymbol declarations omitted by sourcekit-lsp (#1091).
  • External-Checkout code_search Routing (crates/prod-code-mcp):
    Updated handle_search (tools/analysis_handlers.rs) to validate explicit path arguments, detect canonical paths outside workspace_root via other_checkout, and route searches to the external repository's root and placement (#1092).
  • Go code_safe_delete Non-Go Artifact & Bundle Symlink Filtering (crates/prod-code-mcp):
    Updated refuse_linked_sources (safe_delete_go/directives.rs) to skip build/framework artifact directories (.build, *.framework, *.xcframework) and only refuse directory symlinks whose targets contain .go files (#1094).
  • Manifest-Scoped Nested Engine Detection for Package Subdirectories (crates/prod-code-mcp):
    Added manifest_engine_at (sync/engine/detect.rs) and updated engine_project and expected_engine (sync/engine/project.rs), engine_for_path (cluster/routing.rs), and representative_source_file (tools/symbols/nested_projects.rs) so package subdirectories containing embedded auxiliary files (schema.sql, .proto, .sh, Dockerfile) alongside primary language sources remain with their enclosing project's engine while preserving Vue/Svelte component detection (#1097).
  • Serialized Workspace Sync & Manifest-First Batch Ordering (crates/prod-code-mcp, crates/prod-code-gateway):
    Added per-(workspace, node) client serialization via workspace_sync_lock (sync/cache.rs, sync/push.rs) and per-request gateway serialization via server_workspace_sync_lock (crates/prod-code-gateway/src/sync/apply.rs, sync/sync_fs.rs), sorted project manifests (go.mod, Cargo.toml, Package.swift, pyproject.toml, package.json, etc.) ahead of other files in sync_batches (sync/entry.rs), avoided creating .prod-code-last-used prematurely during apply_sync_probe on fresh unseeded workspaces with missing files, and required a full-manifest upload before accepting workspace_was_fresh in push_sync_round (#1098).