Tags: jlcrochet/RazorSharp
Tags
Harden Roslyn client and reduce allocations - Clear pending requests dict on Roslyn process exit to prevent stale entries from accumulating - Guard against null method name from Roslyn messages - Log JSON parse failures in LspMessageParser instead of silently dropping them - Use ListPool<int> in BuildLineStartIndex to reduce GC pressure on incremental text changes - Remove redundant per-change lock in document replay (outer loop already checks open state) - Add LSP method constants for workspace/configuration and client register/unregister capability - Add 256MB growth ceiling to ArrayPoolBufferWriter
Harden dependency and notification flows - Stage dependency downloads and swap them atomically on success. - Propagate cancellation out of dependency ensure operations. - Track HTML projection open state across restarts and recover safely. - Build HTML server launch commands per platform and script type. - Harden fix-all command argument validation and null handling. - Make regular queue drop-oldest behavior match telemetry counters. - Add regression tests for staging, cancellation, restarts, and drops.
Refactor server flows and fix reliability issues - Extract Roslyn notification/request/command dispatchers from RazorLanguageServer. - Split watched-files handling into parser, analyzer, handler, and pipeline services. - Add workspace reload/open/target and file-watcher coordination components. - Fix nested code action selection and URI comparer consistency for replay/open tracking. - Harden HTML client stderr/restart lifecycle behavior. - Optimize Roslyn send path and source-generated validation caching. - Update CLI help text for dependency download behavior. - Add targeted tests for all extracted services and regressions.
Harden LSP notification, sync, and indexing - prevent didOpen/didChange replay races and close-during-replay leaks - allow background dependency download to restart after completion/failure - harden nested code-action parsing and add disposed guards in LspMessageParser - discover .slnf/.slnx in workspace search with deterministic extension preference - route critical Roslyn notifications (diagnostics/init complete) through a priority channel to avoid backpressure drops - move source-generated full index refresh to background execution with atomic index replacement - add regression tests for replay ordering, priority routing, stale index refresh behavior, parser disposal, and solution discovery
Fix 304 fall-through, ListPool leak - GetLatestRoslynVersionAsync: return Failed instead of falling through to EnsureSuccessStatusCode() when 304 received with no cached version - HandleDiagnosticAsync: wrap ListPool usage in try/finally to prevent leak if Task.WhenAll throws (matches ExpandAndResolveCodeActionsAsync) - HandleNestedCodeActionAsync: dedent misaligned if-block by 4 spaces
Various improvements and fixes - Make LSP resync loop non-recursive and bound ListPool size - Add shared case-sensitivity utility and per-workspace comparers - Harden dependency zip extraction and Roslyn send error handling - Reduce URI query allocations and add telemetry warning thresholds - Add/extend tests for new behaviors
PreviousNext