Skip to content

Custom LSP server starts and quiesces but never delivers diagnostics on edit or inspect #305

Description

@acramsay

What happened?

I registered rumdl 0.2.64 (Markdown linter with a built-in LSP) under lsp.servers and turned on lsp.diagnostics_on_edit:

{
  "format_on_edit": true,
  "lsp": {
    "diagnostics_on_edit": true,
    "servers": {
      "rumdl": {
        "extensions": ["md"],
        "binary": "rumdl",
        "args": ["server"],
        "root_markers": [".git", ".rumdl.toml"]
      }
    }
  }
}

Observations on 0.55.1, OpenCode 1.18.27, linux x64:

  1. aft_inspect reports lsp_start (producer: rumdl) and lsp_quiescence (producer: rumdl), so the binary spawns the server. But it reports zero diagnostics for .md files that rumdl check flags with 14 issues.
  2. Every edit of a .md file reports LSP server(s) did not respond in time: rumdl. Bash and yaml built-ins respond normally in the same sessions.
  3. The server itself is healthy. A minimal stdio client against rumdl server gets initialize in 7ms and full publishDiagnostics 5ms after didOpen, against the same file in the same repo.
  4. Nothing mentioning rumdl appears in aft-plugin.log or the bridge log, so the failure is silent.

My read: the post-edit wait in crates/aft/src/lsp/manager.rs never sends textDocument/didOpen to ServerKind::Custom clients, or drops their publishDiagnostics on the freshness check. Built-ins work end to end, so the custom kind is where the path diverges. Happy to test a fix or gather more data (a wrapper binary logging the protocol would show whether didOpen ever goes out).

Expected: custom servers participate in post-edit diagnostics the same way built-ins do.

Diagnostics

AFT CLI and binary 0.55.1, OpenCode host 1.18.27, plugin registered, version 0.55.1, config at ~/.config/cortexkit/aft.jsonc, storage and LSP cache healthy per doctor. Full doctor output available on request.

Plugin version

0.55.1

AFT binary version

0.55.1

Platform

linux x64

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions