Skip to content

Deliver verified standalone editor support (#1390) - #1982

Merged
nickna merged 16 commits into
mainfrom
codex/standalone-editor-core
Oct 9, 2026
Merged

nickna merged 16 commits into
mainfrom
codex/standalone-editor-core

Conversation

@nickna

@nickna nickna commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

SharpTS's full language-server mode lacked ordinary editing features and reused mutable or insufficiently validated analysis. This implements epic #1390 as a bounded standalone workflow: immutable checked snapshots, source-class definitions/references, semantic hover, lexical/member completion, call/constructor signatures, and versioned single-file ECMAScript-private rename. Existing lexical behavior and interop precedence remain intact.

Standalone clients explicitly use full --diagnostics all. The shipping VS Code extension keeps interop-only --diagnostics sharpts-only; feature mode remains initialization-bound while diagnostics can change live. One pinned external Prettier owns formatting. Unknown/stale/recovered facts cannot authorize edits; structural/public/TypeScript-private member rename, nested private domains, inlay hints, semantic tokens and folding remain outside this delivery.

Validation:

  • Final Release core selection: 25,210 passed, 3 existing skips, 0 failures. Focused feature suites and relevant TypeScript/Test262 selections passed during their issue commits.
  • Lexer and nested-parser cancellation tests prove exact token/cursor behavior deterministically; request-level tests retain cancellation, staleness and peer-survival coverage. The focused cancellation and parser suites passed 11/11 and 884/884.
  • Eight aggregate protocol/formatter/package suites passed locally, including the actual isolated installed tool shim in both modes. A new required Ubuntu/Windows editor-contract matrix preserves logs on failure.
  • Actual shipping VSIX with built-in TypeScript/Prettier, native Neovim/Helix standalone editing, and Neovim two-server ownership passed against the final server binary. Compact version/hash evidence and replay commands are tracked.
  • Code quality, workflow policy, NuGet release checks, GUI conformance (134 tests), and isolated packaged SDK consumer checks passed.

Measured limits: equivalent existing multi-project warm requests improved 86–87% with zero checks; cold latency increased 26–37% and cold allocations 15%. Repeated large custom CLR-reference validation remains expensive. The reports retain these regressions and their investigation. The eight-entry/64 MiB cache budget estimates completed graphs, not total process memory. Timings do not gate CI.

See release notes, editor contract, local verification index, and workflow measurements. The final-head CI matrix and GUI packaging/native checks passed, including both editor-contract hosts. A runner-only follow-up resolves the first pinned Node application when multiple PATH matches exist; the exact version check remains enforced. A final documentation-only follow-up links actual-client evidence to committed compact reports; both workflows also passed on that exact head. Each child implementation was verified and committed separately; the superseded inlay/token/folding tickets were closed as not planned with rationale retained.

Closes #1390
Closes #1391
Closes #1392
Closes #1393
Closes #1394
Closes #1398
Closes #1975
Closes #1976
Closes #1977
Closes #1978
Closes #1979
Closes #1980
Closes #1981

@coderabbitai

coderabbitai Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 243 files, which is 143 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration
  • Configuration used: Repository YAML (base), Organization UI (inherited)
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: fe414550-8a68-415e-a0c9-9ec605acbc2e
📥 Commits

Reviewing files that changed from the base of the PR and between cdd83be and 666e197.

⛔ Files ignored due to path filters (2)
  • tools/editor-interop/package-lock.json is excluded by !**/package-lock.json
  • tools/formatter-interop/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (243)
  • .github/workflows/ci.yml
  • ARCHITECTURE.md
  • STATUS.md
  • benchmarks/editor-analysis/EditorAnalysis.csproj
  • benchmarks/editor-analysis/Program.cs
  • benchmarks/editor-analysis/README.md
  • benchmarks/editor-analysis/results-2026-10-07.json
  • benchmarks/editor-analysis/run.ps1
  • benchmarks/editor-semantics/EditorSemantics.csproj
  • benchmarks/editor-semantics/Program.cs
  • benchmarks/editor-semantics/README.md
  • benchmarks/editor-semantics/results-2026-10-07.json
  • benchmarks/editor-semantics/run.ps1
  • benchmarks/editor-syntax/EditorSyntax.csproj
  • benchmarks/editor-syntax/Program.cs
  • benchmarks/editor-syntax/README.md
  • benchmarks/editor-syntax/results-2026-10-07.json
  • benchmarks/editor-syntax/run.ps1
  • benchmarks/editor-workflow/EditorWorkflow.csproj
  • benchmarks/editor-workflow/Program.cs
  • benchmarks/editor-workflow/README.md
  • benchmarks/editor-workflow/results-windows-arm64.json
  • benchmarks/editor-workflow/run.ps1
  • benchmarks/editor-workflow/stdio.mjs
  • benchmarks/editor-workflow/summarize.mjs
  • benchmarks/member-provenance/MemberProvenance.csproj
  • benchmarks/member-provenance/Program.cs
  • benchmarks/member-provenance/README.md
  • benchmarks/member-provenance/results-2026-10-07.json
  • benchmarks/member-provenance/run.ps1
  • benchmarks/member-references/MemberReferences.csproj
  • benchmarks/member-references/Program.cs
  • benchmarks/member-references/README.md
  • benchmarks/member-references/results-2026-10-07.json
  • benchmarks/member-references/run.ps1
  • docs/README.md
  • docs/editor-member-provenance.md
  • docs/editor-release-notes.md
  • docs/editor-semantic-queries.md
  • docs/editor-syntax-coverage.md
  • docs/formatting.md
  • docs/language-server.md
  • scripts/editor-smoke/helix-editing/README.md
  • scripts/editor-smoke/helix-editing/last-verified.json
  • scripts/editor-smoke/helix-editing/prepare.mjs
  • scripts/editor-smoke/helix-editing/trace.mjs
  • scripts/editor-smoke/helix-editing/verify.mjs
  • scripts/editor-smoke/helix/README.md
  • scripts/editor-smoke/helix/prepare.mjs
  • scripts/editor-smoke/helix/verify.mjs
  • scripts/editor-smoke/last-verified.json
  • scripts/editor-smoke/neovim-editing/README.md
  • scripts/editor-smoke/neovim-editing/last-verified.json
  • scripts/editor-smoke/neovim-editing/run.mjs
  • scripts/editor-smoke/neovim-editing/test.lua
  • scripts/editor-smoke/neovim/README.md
  • scripts/editor-smoke/neovim/run.mjs
  • scripts/editor-smoke/neovim/test.lua
  • scripts/editor-smoke/vscode-shipping/README.md
  • scripts/editor-smoke/vscode-shipping/extension.cjs
  • scripts/editor-smoke/vscode-shipping/last-verified.json
  • scripts/editor-smoke/vscode-shipping/package.json
  • scripts/editor-smoke/vscode-shipping/prepare.mjs
  • scripts/editor-smoke/vscode-shipping/run.mjs
  • scripts/editor-smoke/vscode-shipping/test.cjs
  • scripts/editor-smoke/vscode/README.md
  • scripts/editor-smoke/vscode/extension.cjs
  • scripts/editor-smoke/vscode/package.json
  • scripts/editor-smoke/vscode/run.mjs
  • scripts/editor-smoke/vscode/test.cjs
  • scripts/lib/lsp-stdio.mjs
  • scripts/test-analysis-snapshots.mjs
  • scripts/test-editor-contract.ps1
  • scripts/test-formatter-interop.mjs
  • scripts/test-formatter-interop.ps1
  • scripts/test-github-workflows.ps1
  • scripts/test-member-references.mjs
  • scripts/test-packaged-lsp.mjs
  • scripts/test-private-rename.mjs
  • scripts/test-semantic-completion.mjs
  • scripts/test-semantic-hover.mjs
  • scripts/test-semantic-signatures.mjs
  • src/SharpTS.LanguageServer/Documentation/XmlDocLoader.cs
  • src/SharpTS.LanguageServer/Handlers/AnalysisWorkspaceHandlers.cs
  • src/SharpTS.LanguageServer/Handlers/CompletionHandler.cs
  • src/SharpTS.LanguageServer/Handlers/DefinitionHandler.cs
  • src/SharpTS.LanguageServer/Handlers/HoverHandler.cs
  • src/SharpTS.LanguageServer/Handlers/ReferencesHandler.cs
  • src/SharpTS.LanguageServer/Handlers/RenameHandler.cs
  • src/SharpTS.LanguageServer/Handlers/SignatureHelpHandler.cs
  • src/SharpTS.LanguageServer/Handlers/TextDocumentSyncHandler.cs
  • src/SharpTS.LanguageServer/Program.cs
  • src/SharpTS.LanguageServer/Project/AnalysisMetadataProvider.cs
  • src/SharpTS.LanguageServer/Project/CsprojParser.cs
  • src/SharpTS.LanguageServer/Services/AnalysisSnapshot.cs
  • src/SharpTS.LanguageServer/Services/DecoratorService.cs
  • src/SharpTS.LanguageServer/Services/DefinitionService.cs
  • src/SharpTS.LanguageServer/Services/DiagnosticsCoordinator.cs
  • src/SharpTS.LanguageServer/Services/DiagnosticsService.cs
  • src/SharpTS.LanguageServer/Services/EditorRequestGuard.cs
  • src/SharpTS.LanguageServer/Services/EditorTokenFacts.cs
  • src/SharpTS.LanguageServer/Services/GuiContractService.cs
  • src/SharpTS.LanguageServer/Services/MemberHoverService.cs
  • src/SharpTS.LanguageServer/Services/NavigationModelBuilder.cs
  • src/SharpTS.LanguageServer/Services/NavigationProjectCatalog.cs
  • src/SharpTS.LanguageServer/Services/NavigationWorkspaceContext.cs
  • src/SharpTS.LanguageServer/Services/ObservedCompilerInputs.cs
  • src/SharpTS.LanguageServer/Services/PrivateRenameService.cs
  • src/SharpTS.LanguageServer/Services/ReferenceService.Members.cs
  • src/SharpTS.LanguageServer/Services/ReferenceService.cs
  • src/SharpTS.LanguageServer/Services/RenameService.cs
  • src/SharpTS.LanguageServer/Services/SemanticAnalysisService.Cursor.cs
  • src/SharpTS.LanguageServer/Services/SemanticAnalysisService.EditorSyntax.cs
  • src/SharpTS.LanguageServer/Services/SemanticAnalysisService.cs
  • src/SharpTS.LanguageServer/Services/SemanticCompletionService.cs
  • src/SharpTS.LanguageServer/Services/SemanticHoverService.cs
  • src/SharpTS.LanguageServer/Services/SemanticSignatureHelpService.cs
  • src/SharpTS.LanguageServer/SharpTSLanguageServer.cs
  • src/SharpTS/Compilation/AssemblyReferenceLoader.cs
  • src/SharpTS/Compilation/ReloadingAssemblyReferenceLoader.cs
  • src/SharpTS/Configuration/FileDiscovery.cs
  • src/SharpTS/Configuration/TsConfigDeclarationResolver.cs
  • src/SharpTS/Configuration/TsConfigFileMatcher.cs
  • src/SharpTS/Configuration/TsConfigLoader.cs
  • src/SharpTS/IO/ICompilerFileSystem.cs
  • src/SharpTS/Modules/CommonJsDetector.cs
  • src/SharpTS/Modules/ModuleResolver.cs
  • src/SharpTS/Modules/ParsedModule.cs
  • src/SharpTS/Parsing/EditorSyntaxIndex.cs
  • src/SharpTS/Parsing/EditorSyntaxReachability.cs
  • src/SharpTS/Parsing/Lexer.cs
  • src/SharpTS/Parsing/Parser.Classes.cs
  • src/SharpTS/Parsing/Parser.Declarations.cs
  • src/SharpTS/Parsing/Parser.EditorExpressions.cs
  • src/SharpTS/Parsing/Parser.Expressions.cs
  • src/SharpTS/Parsing/Parser.Functions.cs
  • src/SharpTS/Parsing/Parser.Jsx.cs
  • src/SharpTS/Parsing/Parser.Modules.cs
  • src/SharpTS/Parsing/Parser.Namespaces.cs
  • src/SharpTS/Parsing/Parser.Parameters.cs
  • src/SharpTS/Parsing/Parser.Spans.cs
  • src/SharpTS/Parsing/Parser.Statements.cs
  • src/SharpTS/Parsing/Parser.Types.cs
  • src/SharpTS/Parsing/Parser.cs
  • src/SharpTS/Parsing/SourceDocument.cs
  • src/SharpTS/Parsing/SpanTable.cs
  • src/SharpTS/References/DotNetReferences.cs
  • src/SharpTS/References/NuGetRestorer.cs
  • src/SharpTS/References/ProjectAssetsReader.cs
  • src/SharpTS/References/SharpTsManifestLoader.cs
  • src/SharpTS/TypeSystem/BindingIndex.cs
  • src/SharpTS/TypeSystem/EditorSemanticFacts.cs
  • src/SharpTS/TypeSystem/EditorSemanticIndex.cs
  • src/SharpTS/TypeSystem/EditorTypeRenderer.cs
  • src/SharpTS/TypeSystem/MemberIndex.cs
  • src/SharpTS/TypeSystem/MemberPrivateRenameDomain.cs
  • src/SharpTS/TypeSystem/TypeChecker.Calls.cs
  • src/SharpTS/TypeSystem/TypeChecker.EditorDeclarations.cs
  • src/SharpTS/TypeSystem/TypeChecker.EditorInvocations.cs
  • src/SharpTS/TypeSystem/TypeChecker.EditorMembers.cs
  • src/SharpTS/TypeSystem/TypeChecker.EditorSemantics.cs
  • src/SharpTS/TypeSystem/TypeChecker.Expressions.cs
  • src/SharpTS/TypeSystem/TypeChecker.Generics.Substitution.cs
  • src/SharpTS/TypeSystem/TypeChecker.Generics.cs
  • src/SharpTS/TypeSystem/TypeChecker.MemberDeclarations.cs
  • src/SharpTS/TypeSystem/TypeChecker.MemberOccurrences.cs
  • src/SharpTS/TypeSystem/TypeChecker.Namespaces.cs
  • src/SharpTS/TypeSystem/TypeChecker.PrivateIn.cs
  • src/SharpTS/TypeSystem/TypeChecker.Properties.Helpers.cs
  • src/SharpTS/TypeSystem/TypeChecker.Properties.New.cs
  • src/SharpTS/TypeSystem/TypeChecker.Properties.cs
  • src/SharpTS/TypeSystem/TypeChecker.Statements.AliasValidation.cs
  • src/SharpTS/TypeSystem/TypeChecker.Statements.Classes.Stages.cs
  • src/SharpTS/TypeSystem/TypeChecker.Statements.Classes.cs
  • src/SharpTS/TypeSystem/TypeChecker.Statements.ControlFlow.cs
  • src/SharpTS/TypeSystem/TypeChecker.Statements.Functions.cs
  • src/SharpTS/TypeSystem/TypeChecker.Statements.Interfaces.cs
  • src/SharpTS/TypeSystem/TypeChecker.Statements.Modules.cs
  • src/SharpTS/TypeSystem/TypeChecker.Statements.cs
  • src/SharpTS/TypeSystem/TypeChecker.TypeNodes.cs
  • src/SharpTS/TypeSystem/TypeChecker.TypeParsing.cs
  • src/SharpTS/TypeSystem/TypeChecker.cs
  • src/SharpTS/TypeSystem/TypeEnvironment.cs
  • tests/SharpTS.Tests/LanguageServer/AnalysisHandlerTests.cs
  • tests/SharpTS.Tests/LanguageServer/AnalysisSnapshotTests.cs
  • tests/SharpTS.Tests/LanguageServer/CursorSemanticAnalysisTests.cs
  • tests/SharpTS.Tests/LanguageServer/EditorSemanticAnalysisTests.cs
  • tests/SharpTS.Tests/LanguageServer/EditorSyntaxAnalysisTests.cs
  • tests/SharpTS.Tests/LanguageServer/MemberAnalysisTests.cs
  • tests/SharpTS.Tests/LanguageServer/MemberDefinitionHandlerTests.cs
  • tests/SharpTS.Tests/LanguageServer/MemberDefinitionServiceTests.cs
  • tests/SharpTS.Tests/LanguageServer/MemberDefinitionSnapshotTests.cs
  • tests/SharpTS.Tests/LanguageServer/MemberReferenceHandlerTests.cs
  • tests/SharpTS.Tests/LanguageServer/MemberReferenceServiceTests.cs
  • tests/SharpTS.Tests/LanguageServer/MetadataSnapshotTests.cs
  • tests/SharpTS.Tests/LanguageServer/PrivateRenameHandlerTests.cs
  • tests/SharpTS.Tests/LanguageServer/RenameServiceTests.cs
  • tests/SharpTS.Tests/LanguageServer/SemanticAnalysisServiceTests.cs
  • tests/SharpTS.Tests/LanguageServer/SemanticCompletionHandlerTests.cs
  • tests/SharpTS.Tests/LanguageServer/SemanticCompletionServiceTests.cs
  • tests/SharpTS.Tests/LanguageServer/SemanticHoverHandlerTests.cs
  • tests/SharpTS.Tests/LanguageServer/SemanticHoverServiceTests.cs
  • tests/SharpTS.Tests/LanguageServer/SemanticSignatureHelpHandlerTests.cs
  • tests/SharpTS.Tests/LanguageServer/SemanticSignatureHelpServiceTests.cs
  • tests/SharpTS.Tests/LanguageServer/SharedDiagnosticsTests.cs
  • tests/SharpTS.Tests/Modules/CompilerFileSystemTests.cs
  • tests/SharpTS.Tests/Modules/EditorParseTargetResolverTests.cs
  • tests/SharpTS.Tests/ParserTests/CursorRecoveryBoundaryTests.cs
  • tests/SharpTS.Tests/ParserTests/EditorDeclarationSyntaxTests.cs
  • tests/SharpTS.Tests/ParserTests/EditorExpressionRecoveryTests.cs
  • tests/SharpTS.Tests/ParserTests/EditorExpressionTests.cs
  • tests/SharpTS.Tests/ParserTests/ParsingCancellationTests.cs
  • tests/SharpTS.Tests/ParsingTests/EditorSyntaxIndexTests.cs
  • tests/SharpTS.Tests/TypeCheckerTests/EditorHoverMetadataTests.cs
  • tests/SharpTS.Tests/TypeCheckerTests/EditorInvocationEligibilityTests.cs
  • tests/SharpTS.Tests/TypeCheckerTests/EditorInvocationQueryTests.cs
  • tests/SharpTS.Tests/TypeCheckerTests/EditorNamespaceReceiverTests.cs
  • tests/SharpTS.Tests/TypeCheckerTests/EditorReceiverQueryTests.cs
  • tests/SharpTS.Tests/TypeCheckerTests/EditorSemanticIndexTests.cs
  • tests/SharpTS.Tests/TypeCheckerTests/EditorSemanticScopeTests.cs
  • tests/SharpTS.Tests/TypeCheckerTests/EditorTypeRendererTests.cs
  • tests/SharpTS.Tests/TypeCheckerTests/FrozenBindingIndexTests.cs
  • tests/SharpTS.Tests/TypeCheckerTests/MemberIndexTests.cs
  • tests/SharpTS.Tests/TypeCheckerTests/PrivateRenameDomainTests.cs
  • tests/SharpTS.Tests/TypeCheckerTests/SourceMemberDeclarationTests.cs
  • tests/SharpTS.Tests/TypeCheckerTests/SourceMemberOccurrenceTests.cs
  • tests/fixtures/FormatterInterop/.gitattributes
  • tests/fixtures/FormatterInterop/.prettierrc.json
  • tests/fixtures/FormatterInterop/InteropProbe.cs
  • tests/fixtures/FormatterInterop/Program.cs
  • tests/fixtures/FormatterInterop/README.md
  • tests/fixtures/FormatterInterop/SharpTS.FormatterInteropEvidence.csproj
  • tests/fixtures/FormatterInterop/cases/declarations.d.ts
  • tests/fixtures/FormatterInterop/cases/dotnet-imports.ts
  • tests/fixtures/FormatterInterop/cases/dotnettype-legacy.ts
  • tests/fixtures/FormatterInterop/cases/jsx.tsx
  • tests/fixtures/FormatterInterop/cases/legacy-decorators.ts
  • tests/fixtures/FormatterInterop/cases/runtime-private.ts
  • tests/fixtures/FormatterInterop/cases/stage3-decorators.ts
  • tests/fixtures/FormatterInterop/cases/syntax-private.ts
  • tests/fixtures/FormatterInterop/fixtures.json
  • tools/editor-interop/package.json
  • tools/formatter-interop/package.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@nickna
nickna merged commit f10a2d4 into main Oct 9, 2026
31 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment