{
  "repository": "OpenHands/OpenHands",
  "snapshot": "2026-10-11T04:24:19Z",
  "observed_at": "2026-10-11T04:29:46Z",
  "openIssues": {
    "repository": "OpenHands/OpenHands",
    "checked_at": "2026-10-11T04:24:19Z",
    "issue_authors": [
      "enyst",
      "smolpaws"
    ],
    "pr_authors_excluded": [
      "enyst",
      "smolpaws"
    ],
    "scope": "Open issues, compared against open and closed PRs in this repository",
    "criterion": "No corresponding implementation PR identified. Incidental documentation, QA, bug-filing, and explicitly unrelated PR references are excluded. Partial implementing PRs count as corresponding PRs.",
    "counts": {
      "enyst": 46,
      "smolpaws": 5,
      "total": 51
    },
    "method": "Enumerated all 67 currently open issues authored by enyst (55) or smolpaws (12), excluding pull requests from the repository issue collections. Re-enumerated all 588 enyst PRs and 25 smolpaws PRs through complete GitHub Search pages with incomplete_results=false. Reviewed exact issue-reference contexts, including all own PRs created or updated since the prior check; implementation/partial implementation counts, incidental QA/docs/bug-filing does not. All 51 surviving prior eligible rows remain eligible. Three new issues are excluded because own implementing PRs exist. Enumerated all 457 current open repository PRs plus 200 recently updated closed PRs, refreshed all 63 previously known other-author PR references, and inspected timelines for the four eligible issues updated since the prior check.",
    "limitations": "Issue and PR collections are live API observations gathered shortly after the stated snapshot anchor, not a historical point-in-time database. A PR without an issue reference may be missed; titles/bodies and selected discussions were searched, but every unreferenced implementation and every older closed PR were not re-audited. GitHub timeline absence alone was not treated as proof. Correspondence, including a partial or closed-unmerged PR, is distinct from a verified fix or currently active work.",
    "issues": [
      {
        "number": 18263,
        "author": "smolpaws",
        "title": "[Bug]: Automation draft test runs stay Pending after completion",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/18263",
        "created_at": "2026-10-10T07:46:38Z",
        "updated_at": "2026-10-10T23:24:07Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/18264"
        ]
      },
      {
        "number": 18161,
        "author": "enyst",
        "title": "[Bug]: Slack MCP credential probe reports any failed tool call (e.g. \"fetch failed\") as \"Credential check failed\"",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/18161",
        "created_at": "2026-10-08T13:47:46Z",
        "updated_at": "2026-10-08T13:51:11Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/18162"
        ]
      },
      {
        "number": 18160,
        "author": "enyst",
        "title": "[Bug]: Recovery gate (stored backend answers 503) shows two generic \"An error occurred\" toasts from the free-models hydrator",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/18160",
        "created_at": "2026-10-08T13:47:46Z",
        "updated_at": "2026-10-09T01:17:16Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/18162"
        ]
      },
      {
        "number": 18123,
        "author": "enyst",
        "title": "[Bug]: Mock-LLM cross-connect test: the sidebar cmd-click sometimes opens no tab, and the test hangs for 6 minutes (2 of 9 main runs)",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/18123",
        "created_at": "2026-10-07T10:53:41Z",
        "updated_at": "2026-10-07T10:56:34Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 18063,
        "author": "enyst",
        "title": "[Bug]: Composer \"More input actions\" Model submenu runs off the right and bottom edges at narrow widths (third profile and LLM Profiles link can't be clicked or tapped)",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/18063",
        "created_at": "2026-10-06T06:51:11Z",
        "updated_at": "2026-10-09T00:04:02Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/18237",
          "https://github.com/OpenHands/OpenHands/pull/18174",
          "https://github.com/OpenHands/OpenHands/pull/17961"
        ]
      },
      {
        "number": 18062,
        "author": "enyst",
        "title": "[Bug]: Automations: a deleted automation stays on the dashboard, home page and detail page after Run now fails with \"Automation not found\"",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/18062",
        "created_at": "2026-10-06T06:51:10Z",
        "updated_at": "2026-10-09T00:14:10Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/17961"
        ]
      },
      {
        "number": 17959,
        "author": "enyst",
        "title": "[Bug]: Automation templates: a search with no matches shows a blank page, and cards say \"1 MCPs to connect\" for optional integrations",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17959",
        "created_at": "2026-10-05T02:05:18Z",
        "updated_at": "2026-10-08T23:17:27Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/17961"
        ]
      },
      {
        "number": 17955,
        "author": "enyst",
        "title": "[Bug]: Add LLM Profile shows the agent's current LLM options (such as temperature) but saves the new profile without them",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17955",
        "created_at": "2026-10-05T02:04:48Z",
        "updated_at": "2026-10-09T00:06:24Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/18017",
          "https://github.com/OpenHands/OpenHands/pull/17961"
        ]
      },
      {
        "number": 17953,
        "author": "enyst",
        "title": "[Bug]: Backends and Cloud sign-in: Escape closes the whole Manage backends stack, raw 404 toast on shared pages, stray about:blank pop-ups",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17953",
        "created_at": "2026-10-05T02:04:03Z",
        "updated_at": "2026-10-09T01:12:38Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/17961"
        ]
      },
      {
        "number": 17949,
        "author": "enyst",
        "title": "[Bug]: Launcher: --allow-lan-session-key is ignored, the port-in-use error prints twice with a stack trace, and backend-only runtime_services lists a frontend",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17949",
        "created_at": "2026-10-05T01:58:18Z",
        "updated_at": "2026-10-05T02:07:01Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/18162",
          "https://github.com/OpenHands/OpenHands/pull/17961"
        ]
      },
      {
        "number": 17948,
        "author": "enyst",
        "title": "[Bug]: Automation detail and edit: schedule edit silently dropped, wrong run label, slow not-found page, tarball saved as .tar",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17948",
        "created_at": "2026-10-05T01:57:23Z",
        "updated_at": "2026-10-10T23:24:08Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/17961"
        ]
      },
      {
        "number": 17946,
        "author": "enyst",
        "title": "[Bug]: Launcher never creates TMUX_TMPDIR, so local Agent Canvas instances share one tmux server and reset each other's terminals",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17946",
        "created_at": "2026-10-05T01:37:16Z",
        "updated_at": "2026-10-06T22:12:26Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/17961"
        ]
      },
      {
        "number": 17941,
        "author": "enyst",
        "title": "[Bug]: Skill and MCP card toggles can swallow the first click, and keep the new state after a failed save",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17941",
        "created_at": "2026-10-05T01:18:48Z",
        "updated_at": "2026-10-09T01:28:26Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/17961"
        ]
      },
      {
        "number": 17932,
        "author": "enyst",
        "title": "[Bug]: Settings save retries a 422 validation error three times before showing it",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17932",
        "created_at": "2026-10-05T01:14:54Z",
        "updated_at": "2026-10-10T08:42:28Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/17961"
        ]
      },
      {
        "number": 17928,
        "author": "enyst",
        "title": "[Bug]: Confirmation Continue/Cancel shortcuts are ⌘-only; Ctrl+Enter does nothing on Linux and Windows",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17928",
        "created_at": "2026-10-05T01:13:57Z",
        "updated_at": "2026-10-06T05:08:19Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/17961"
        ]
      },
      {
        "number": 17927,
        "author": "enyst",
        "title": "[Bug]: A failed Save on Settings > Application discards the user's unsaved edits",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17927",
        "created_at": "2026-10-05T01:13:43Z",
        "updated_at": "2026-10-09T01:02:53Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/17961"
        ]
      },
      {
        "number": 17922,
        "author": "enyst",
        "title": "[Bug]: MCP library lists entries that cannot be installed on a local backend; their install dialog is empty and Install does nothing",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17922",
        "created_at": "2026-10-05T01:12:33Z",
        "updated_at": "2026-10-08T22:58:58Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/17961"
        ]
      },
      {
        "number": 17920,
        "author": "enyst",
        "title": "[Bug]: A rejected (Cancel) action leaves its event group spinning as \"k/N actions completed\" after the conversation is idle",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17920",
        "created_at": "2026-10-05T01:12:00Z",
        "updated_at": "2026-10-05T01:19:03Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/17961"
        ]
      },
      {
        "number": 17919,
        "author": "enyst",
        "title": "[Bug]: \"Delete all\" conversations deletes only the loaded first page and states a smaller count",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17919",
        "created_at": "2026-10-05T01:11:44Z",
        "updated_at": "2026-10-09T02:00:25Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/17961"
        ]
      },
      {
        "number": 17900,
        "author": "enyst",
        "title": "[Bug]: Settings switches are skipped by Tab and invisible to screen readers (SettingsSwitch renders <input hidden>)",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17900",
        "created_at": "2026-10-04T23:26:33Z",
        "updated_at": "2026-10-08T23:29:13Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/17961"
        ]
      },
      {
        "number": 17899,
        "author": "enyst",
        "title": "[Bug]: Git user name and email from Settings > Application are never applied to agent commits",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17899",
        "created_at": "2026-10-04T23:26:16Z",
        "updated_at": "2026-10-04T23:38:20Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/17961"
        ]
      },
      {
        "number": 17898,
        "author": "enyst",
        "title": "[Bug]: VITE_DO_NOT_TRACK=1 still initializes PostHog and loads remote scripts from the telemetry host",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17898",
        "created_at": "2026-10-04T23:25:57Z",
        "updated_at": "2026-10-04T23:28:03Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/17961"
        ]
      },
      {
        "number": 17635,
        "author": "enyst",
        "title": "Proposal: Login with GitHub for local and remote agent-servers",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17635",
        "created_at": "2026-09-22T21:46:05Z",
        "updated_at": "2026-10-09T21:41:34Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 17567,
        "author": "enyst",
        "title": "[Bug]: Switching from expanded Git diff to Planner raises a Monaco disposed-model exception",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17567",
        "created_at": "2026-09-20T10:50:40Z",
        "updated_at": "2026-09-21T15:51:32Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/18033",
          "https://github.com/OpenHands/OpenHands/pull/17569"
        ]
      },
      {
        "number": 17566,
        "author": "enyst",
        "title": "[Bug]: Terminal tab loses command history after page reload while chat retains it",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17566",
        "created_at": "2026-09-20T10:50:39Z",
        "updated_at": "2026-09-21T15:45:36Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/17569"
        ]
      },
      {
        "number": 17564,
        "author": "enyst",
        "title": "[Bug]: Mobile automation dashboard actions squeeze the heading to about 52px",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17564",
        "created_at": "2026-09-20T10:50:37Z",
        "updated_at": "2026-09-21T15:45:44Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/17569"
        ]
      },
      {
        "number": 17563,
        "author": "enyst",
        "title": "[Bug]: Mobile automation edit dialog clips its header and footer",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17563",
        "created_at": "2026-09-20T10:50:36Z",
        "updated_at": "2026-10-09T00:06:40Z",
        "reference_status": "Only incidental references found; no corresponding implementation PR identified",
        "incidental_prs": [
          "https://github.com/OpenHands/OpenHands/pull/18011",
          "https://github.com/OpenHands/OpenHands/pull/17569"
        ]
      },
      {
        "number": 17217,
        "author": "smolpaws",
        "title": "Surface ask_oracle in the Profiles tab: a disabled 'oracle' entry that explains what filling it in unlocks",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17217",
        "created_at": "2026-09-09T05:40:37Z",
        "updated_at": "2026-09-19T18:33:02Z",
        "reference_status": "No corresponding implementation PR identified; other-author PR #17376 by Oscar-Williams",
        "incidental_prs": []
      },
      {
        "number": 17215,
        "author": "enyst",
        "title": "[Feature]: Give each embedded Canvas root an isolated modal portal host",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/17215",
        "created_at": "2026-09-09T04:55:01Z",
        "updated_at": "2026-09-09T04:55:26Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 16954,
        "author": "enyst",
        "title": "[Bug]: Scope MCP server health by backend and connection revision",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/16954",
        "created_at": "2026-08-27T02:37:16Z",
        "updated_at": "2026-09-17T15:40:37Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 16953,
        "author": "enyst",
        "title": "[Feature]: Make embedded Canvas runtime dependencies instance-scoped",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/16953",
        "created_at": "2026-08-27T02:36:55Z",
        "updated_at": "2026-09-09T04:55:54Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 16952,
        "author": "enyst",
        "title": "[Tech debt]: Replace Canvas event wire redeclarations with typescript-client contracts",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/16952",
        "created_at": "2026-08-27T02:36:28Z",
        "updated_at": "2026-08-28T07:14:47Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 16951,
        "author": "enyst",
        "title": "[Bug]: Centralize effective configuration for the next Home conversation",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/16951",
        "created_at": "2026-08-27T02:35:54Z",
        "updated_at": "2026-09-24T18:11:31Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 16950,
        "author": "enyst",
        "title": "[Bug]: Scope Home launch targets and recent repositories by backend and organization",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/16950",
        "created_at": "2026-08-27T02:35:29Z",
        "updated_at": "2026-09-24T18:11:32Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 16949,
        "author": "enyst",
        "title": "[Bug]: Keep Files and Changes views source-driven after refresh",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/16949",
        "created_at": "2026-08-27T02:35:06Z",
        "updated_at": "2026-09-09T04:55:53Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 16948,
        "author": "enyst",
        "title": "[Bug]: Preserve unsaved SDK settings edits across background refetches",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/16948",
        "created_at": "2026-08-27T02:34:08Z",
        "updated_at": "2026-09-09T04:53:04Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 16947,
        "author": "enyst",
        "title": "[Bug]: Make UI event projection order-independent across history pages",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/16947",
        "created_at": "2026-08-27T02:33:48Z",
        "updated_at": "2026-09-09T04:53:01Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 16691,
        "author": "smolpaws",
        "title": "[Feature] Agent UI tool to request setup (secret / MCP) via an in-conversation modal",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/16691",
        "created_at": "2026-08-18T21:59:08Z",
        "updated_at": "2026-10-10T10:49:06Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 16492,
        "author": "smolpaws",
        "title": "Backend API keys live in origin-readable localStorage — any same-origin script can read all of them",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/16492",
        "created_at": "2026-08-10T18:12:16Z",
        "updated_at": "2026-09-25T15:21:33Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 16412,
        "author": "enyst",
        "title": "[Feature] Make skills & plugins scopes consistent and understandable across backends",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/16412",
        "created_at": "2026-08-07T20:56:22Z",
        "updated_at": "2026-10-06T15:00:34Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 16410,
        "author": "enyst",
        "title": "[Feature] User-friendly \"auto mode\" / \"approve for me\" option for Confirmation Mode",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/16410",
        "created_at": "2026-08-07T20:53:04Z",
        "updated_at": "2026-10-01T09:09:16Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 16257,
        "author": "enyst",
        "title": "dev launch scripts install signal handlers as import-time side effects",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/16257",
        "created_at": "2026-08-03T11:34:39Z",
        "updated_at": "2026-08-23T13:49:38Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 16195,
        "author": "smolpaws",
        "title": "Run mutation testing in a confined automation to bound supply-chain risk",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/16195",
        "created_at": "2026-07-30T08:03:45Z",
        "updated_at": "2026-08-23T13:49:37Z",
        "reference_status": "No corresponding implementation PR identified; earlier #16184 motivated this issue but does not implement confined automation",
        "incidental_prs": []
      },
      {
        "number": 16107,
        "author": "enyst",
        "title": "Show onboarding only when the active backend has no usable LLM configuration",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/16107",
        "created_at": "2026-07-27T18:52:11Z",
        "updated_at": "2026-08-23T13:49:40Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 15529,
        "author": "enyst",
        "title": "Add Agent Canvas update prompt and optional autoupdate path",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/15529",
        "created_at": "2026-06-30T17:24:52Z",
        "updated_at": "2026-08-23T13:49:28Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 15676,
        "author": "enyst",
        "title": "[Bug]: Refreshing stale Cloud conversation on Vercel fails",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/15676",
        "created_at": "2026-06-04T22:19:11Z",
        "updated_at": "2026-08-23T13:49:56Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 15677,
        "author": "enyst",
        "title": "Group conversations by workspace by default",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/15677",
        "created_at": "2026-06-04T18:48:14Z",
        "updated_at": "2026-08-23T13:49:54Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 15751,
        "author": "enyst",
        "title": "Cloud VS Code tab needs reliable in-app rendering or new-tab fallback",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/15751",
        "created_at": "2026-06-01T15:08:20Z",
        "updated_at": "2026-08-23T13:49:53Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 15752,
        "author": "enyst",
        "title": "Cloud rich file preview should use static workspace URLs instead of /download data URIs",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/15752",
        "created_at": "2026-06-01T15:08:19Z",
        "updated_at": "2026-08-23T13:50:04Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 15950,
        "author": "enyst",
        "title": "Question: Why does the OpenHands user need a Web UI for Claude Code?",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/15950",
        "created_at": "2026-05-15T20:31:05Z",
        "updated_at": "2026-08-23T13:50:06Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      },
      {
        "number": 14014,
        "author": "enyst",
        "title": "[Proposal] Pin GitHub Actions to immutable SHAs",
        "state": "open",
        "url": "https://github.com/OpenHands/OpenHands/issues/14014",
        "created_at": "2026-04-18T14:07:01Z",
        "updated_at": "2026-10-10T14:28:26Z",
        "reference_status": "No corresponding implementation PR identified",
        "incidental_prs": []
      }
    ]
  },
  "otherAuthorPRs": {
    "repository": "OpenHands/OpenHands",
    "checked_at": "2026-10-11T04:24:19Z",
    "scope": "The current 51 open issues without an identified enyst/smolpaws implementation PR",
    "issue_count": 33,
    "pr_count": 47,
    "matches": [
      {
        "issue": 18161,
        "pr": 18166,
        "title": "fix(mcp): do not classify failed Slack probe tool calls as credential failures",
        "author": "lx3133584",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/18166",
        "contexts": [
          " (e.g. `fetch failed` or timeouts) are not classified as credential errors.\n\n## Issue Number\n\nFixes #18161\n\n## How to Test\n\nRun the MCP service test suite:\n```bash\nnpx vitest run __tests__/api/mcp-service/mcp-service.api.test.ts __tests__/utils/mcp-test-error-message.test.ts\n```\n\nAll 23 tests pass cleanly.\n\n## Video/Screenshots\n\n<img width=\"800\" al"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "f500de4b326cef594d88f47be9db090402c2347e",
        "updated_at": "2026-10-08T14:50:45Z"
      },
      {
        "issue": 18160,
        "pr": 18164,
        "title": "fix(query): disable error toasts for free models hydrator and backend version probe",
        "author": "lx3133584",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/18164",
        "contexts": [
          "ming that local backend version probe failures do not trigger error toasts.\n\n## Issue Number\n\nFixes #18160\n\n## How to Test\n\nRun the relevant Vitest test suites:\n```bash\nnpx vitest run __tests__/hooks/query/use-free-models.test.tsx __tests__/components/backends/manage-backends-modal.test.tsx\n```\n\nAll 34 tests pass.\n\n## Video/Screenshots\n\n<img width="
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "c485c41b4296491870b9c4c9fd6ef387afbf9615",
        "updated_at": "2026-10-08T14:37:39Z"
      },
      {
        "issue": 18123,
        "pr": 18147,
        "title": "fix(test): bound tab wait and record diagnostics on mock-llm sidebar cmd-click",
        "author": "lx3133584",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/18147",
        "contexts": [
          "est.ts` covering both resolution and fast failure with diagnostic evidence.\n\n## Issue Number\n\nFixes #18123\n\n## How to Test\n\nRun the unit tests:\n```bash\nnpm test __tests__/utils/cmd-click-new-tab.test.ts\n```\n\nAll 2 tests pass.\n\n## Video/Screenshots\n\n<img width=\"800\" alt=\"mock-llm-cross-connect-diagnostics\" src=\"https://github.com/user-attachments/as"
        ],
        "scope": "Bounds waiting and adds flaky-test diagnostics",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "07f0bfbe0fe09767e4aba683e2eb4e43ebe3b1f1",
        "updated_at": "2026-10-08T10:08:41Z"
      },
      {
        "issue": 18063,
        "pr": 18242,
        "title": "fix(chat): fit overflow and tools submenus to viewport at narrow widths",
        "author": "lx3133584",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/18242",
        "contexts": [
          "ottom edges of the screen, rendering profile options and the \"LLM Profiles\" link unclickable (issue #18063).\n\n## Summary\n\n- Computed local offsets for absolutely-positioned submenus to ensure containment within viewport bounds.\n- Flips submenus to the left when space allows, or clamps inside viewport margins on narrow screens.\n- Clamps vertical pos",
          " of the viewport.\n- Preserved existing desktop appearance and interactions.\n\n## Issue Number\n\nFixes #18063\n\n## How to Test\n\n1. Run unit test suites:\n   ```bash\n   npm test -- __tests__/hooks/use-submenu-placement.test.ts __tests__/components/features/chat/components/chat-input-actions.test.tsx __tests__/components/context-menu/tools-context-menu.te"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "54b325b47ee4dc97d36f3dd9fb424c945bc0f4c4",
        "updated_at": "2026-10-09T14:13:05Z"
      },
      {
        "issue": 18063,
        "pr": 18115,
        "title": "fix(chat): keep the overflow menu's submenus inside the viewport",
        "author": "fengyue-xve",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/18115",
        "contexts": [
          "ement unchanged; Macros submenu left for a follow-up as noted in the issue.\n\n## Issue Number\n\nFixes #18063\n\n## How to Test\n\n1. `npm run dev` and open a conversation; shrink the window to ~320 px wide.\n2. Open the more-actions menu and its Model (or Code/Plan) submenu — it stays fully inside the viewport; the profile rows and the settings link below"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "f8890f07e433bbd55e702c73d2f0941f76484bf6",
        "updated_at": "2026-10-07T08:21:18Z"
      },
      {
        "issue": 18062,
        "pr": 18186,
        "title": "fix(automations): invalidate queries when dispatch fails with 404",
        "author": "lx3133584",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/18186",
        "contexts": [
          "ation, whereas non-404 failures retain loaded data without extra refetches.\n\n## Issue Number\n\nFixes #18062\n\n## How to Test\n\nRun unit tests:\n```bash\nnpx vitest run __tests__/routes/automations-list.test.tsx __tests__/hooks/use-home-automation-actions.test.tsx\n```\n\nAll 26 tests pass.\n\n## Video/Screenshots\n\n<img width=\"800\" alt=\"automation-card-stale-"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "d088ddec5a81284a5b05544f77d97c1d47c6b1ba",
        "updated_at": "2026-10-10T21:14:38Z"
      },
      {
        "issue": 18062,
        "pr": 18073,
        "title": "fix(automations): refetch automations when Run now finds the automation deleted",
        "author": "pucedoteth",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/18073",
        "contexts": [
          "oast. Before/after screenshots from a running Canvas are below and committed under `.pr/`.\n\n## Why\n\n#18062: after a failed **Run now** on an automation deleted elsewhere, the \"Automation not found\" toast appears but the dashboard card, the home page card and row, and the detail page keep showing the deleted automation. `useDispatchAutomation` only ",
          "bleToast` change). The `use-settings` mock keeps the real `getErrorStatus`.\n\n## Issue Number\n\nFixes #18062\n\n## How to Test\n\nUnit tests (Node 24.19.0):\n\n```sh\nnpm run make-i18n\nnpx vitest run __tests__/hooks/use-home-automation-actions.test.tsx\n```\n\nOn `main` the two new 404 cases fail (`expected false to be true` on `isInvalidated`). With this chan"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "9a831278b5fd79bfdd7646db33bb81f824beadc8",
        "updated_at": "2026-10-08T18:00:39Z"
      },
      {
        "issue": 17959,
        "pr": 18153,
        "title": "fix(automations): render empty state on template search and exclude optional integrations from connect count",
        "author": "lx3133584",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/18153",
        "contexts": [
          "n `src/i18n/translation.json`, matching the i18next pluralization contract.\n\n## Issue Number\n\nFixes #17959\n\n## How to Test\n\nRun the unit and integration tests:\n```bash\nnpx vitest run __tests__/components/automations/recommended-automations.test.tsx __tests__/components/automations/build-automation-pills.test.tsx __tests__/routes/automations-dashboa"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "3441b93aa8ebf47da89b9d11716e1d9a670a8230",
        "updated_at": "2026-10-08T12:55:10Z"
      },
      {
        "issue": 17955,
        "pr": 17965,
        "title": "fix(settings): persist displayed active llm settings when creating profile",
        "author": "Rustaman1280",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/17965",
        "contexts": [
          "creation are persisted, and that newly edited values still take precedence.\n\n## Issue Number\n\nFixes #17955\n\n## How to Test\n\n1. Run `npx vitest run __tests__/components/settings/llm-profiles/llm-settings-local-view.test.tsx`\n2. Run `npm run typecheck`\n3. Launch UI -> Settings -> LLM -> Add LLM Profile. Ensure fields shown in the All tab (e.g. Temper"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "feffce0c4a4a6e3950b9550ea66f5b770e09eb72",
        "updated_at": "2026-10-05T08:51:56Z"
      },
      {
        "issue": 17949,
        "pr": 18156,
        "title": "fix(launcher): honor --allow-lan-session-key, clean up port-in-use error, and align backend-only ingress description",
        "author": "lx3133584",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/18156",
        "contexts": [
          "st.ts`, `dev-with-automation.test.ts`, and `runtime-services-info.test.ts`.\n\n## Issue Number\n\nFixes #17949\n\n## How to Test\n\nRun the launcher test suites:\n```bash\nnpx vitest run __tests__/bin/agent-canvas.test.ts __tests__/scripts/bind-host.test.ts __tests__/scripts/dev-static.test.ts __tests__/scripts/dev-with-automation.test.ts __tests__/scripts/r"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "ccd2b2f5249cc993b2ba2a920c31642b8b66b914",
        "updated_at": "2026-10-08T12:53:44Z"
      },
      {
        "issue": 17948,
        "pr": 18260,
        "title": "fix(automations): validate a cleared time of day before saving",
        "author": "gold-beyond",
        "status": "Draft",
        "url": "https://github.com/OpenHands/OpenHands/pull/18260",
        "contexts": [
          "d \"Automation updated\", so nothing told the user the schedule edit was lost.\n\nReported as item 1 of #17948 and documented as `F23.edit-time-cleared` in `.agents/skills/verify-openhands/references/feature-map/F23-automation-detail.md` (\"Expected: an inline message and the dialog stays open\").\n\n## Summary\n\n- `handleSubmit` validates the time like the",
          "ter a time → the retry PATCHes the rebuilt schedule).\n\n## Issue Number\n\nAddresses the first item of #17948 (the issue's other three items are untouched by this PR).\n\n## How to Test\n\n1. `npm run dev:mock`, open an automation's detail page, then **Automation actions → Edit**.\n2. Clear **Time of day** and click **Save**.\n   - Before: the dialog closes",
          " chore\n\n## Notes\n\n- Draft on purpose: the `HUMAN:` note above belongs to the human contributor, and #17948 still needs `ready-for-dev` from a maintainer — the triage there asked for per-item reproduction evidence, and the item-1 screenshots are now posted in the issue thread.\n- Copy choice: the error reuses the existing, fully translated `ERROR$REQ"
        ],
        "scope": "Partial: issue item 1 only",
        "state": "open",
        "draft": true,
        "merged_at": null,
        "head_sha": "324a1127200111b4fd372cd55e9d09c8ccf3b93c",
        "updated_at": "2026-10-10T05:54:53Z"
      },
      {
        "issue": 17941,
        "pr": 17970,
        "title": "fix: preserve toggle click targets and roll back failed skill saves",
        "author": "LittleMIKUya",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/17970",
        "contexts": [
          "nd roll back failed skill saves\nHUMAN:\r\nI reviewed the before/after recordings and test results for #17941.\r\nAGENT:\r\nVerified in the real frontend against `openhands-agent-server==1.50.1`, with `VITE_MOCK_API=false` and no model execution. [Reproduction commands, measurements, and logs](https://github.com/LittleMIKUya/OpenHands/blob/19780786a2acb6f",
          "egression tests using the real settings hooks and mocked service calls.\r\n\r\n## Issue Number\r\n\r\nFixes #17941\r\n\r\n## How to Test\r\n\r\n1. Run `npm ci`, then the focused suite:\r\n   ```sh\r\n   npx vitest run --maxWorkers=2 __tests__/components/buttons/circle-plus-check-toggle.test.tsx __tests__/hooks/use-skill-enablement.test.tsx __tests__/utils/skill-enable"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "8a13bda59017f0bf8bd1c4509e2191336e65de3a",
        "updated_at": "2026-10-08T01:41:37Z"
      },
      {
        "issue": 17928,
        "pr": 18152,
        "title": "fix(confirmation): support Ctrl shortcuts and platform-aware hints",
        "author": "lx3133584",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/18152",
        "contexts": [
          "ng `Ctrl+Enter` and `Shift+Ctrl+Backspace` behavior on non-Apple platforms.\n\n## Issue Number\n\nFixes #17928\n\n## How to Test\n\nRun the unit tests:\n```bash\n./node_modules/.bin/vitest run __tests__/components/shared/action-tooltip.test.tsx __tests__/components/shared/buttons/conversation-confirmation-buttons.test.tsx\n```\n\nAll 12 tests pass.\n\n## Video/Sc"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "e4d8dffddbeebd44c50ace113765a983af1b9711",
        "updated_at": "2026-10-08T11:47:12Z"
      },
      {
        "issue": 17928,
        "pr": 18127,
        "title": "fix: accept Ctrl for confirmation shortcuts off macOS",
        "author": "errmakov",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/18127",
        "contexts": [
          "ring again once a response has been sent.\n\nIt also folds in the review notes @enyst's agent left on #17928: the already-submitted guard, evidence from a working backend, and no `.pr/` files on the branch.\n\nLive evidence (videos below): real Agent Server 1.53.0 started by `bin/agent-canvas.mjs` through `control-openhands launch`, model `deepseek/dee",
          " a new case asserts the hint text for macOS, Linux and Windows user agents.\n\n## Issue Number\n\nFixes #17928\n\n## How to Test\n\nReproduction (Linux or Windows): turn on Confirmation Mode under Settings > Verification with Security Analyzer `None`, ask the agent to run `echo qa-confirm-ok`, and when \"Do you want to continue with this action?\" appears pr"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "8032aa21bcb0418a8be7eb3b7c6af9330a147aba",
        "updated_at": "2026-10-07T16:28:29Z"
      },
      {
        "issue": 17927,
        "pr": 18201,
        "title": "fix: preserve App Settings edits after save errors",
        "author": "Rohithmatham12",
        "status": "Draft",
        "url": "https://github.com/OpenHands/OpenHands/pull/18201",
        "contexts": [
          "dited switch checked, leaves Save enabled, and still raises the error toast\n\n## Issue Number\n\nFixes #17927\n\n## How to Test\n\nRun:\n\n```bash\nnpx vitest run __tests__/routes/app-settings.test.tsx\nnpx eslint src/routes/app-settings.tsx __tests__/routes/app-settings.test.tsx\nnpx prettier --check src/routes/app-settings.tsx __tests__/routes/app-settings.t"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": true,
        "merged_at": null,
        "head_sha": "317e6e12b1a5172b343c195e059166c21e33a0ec",
        "updated_at": "2026-10-08T23:39:29Z"
      },
      {
        "issue": 17927,
        "pr": 17945,
        "title": "fix(settings): preserve unsaved edits and keep save enabled on failed save",
        "author": "lx3133584",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/17945",
        "contexts": [
          "ave keeps user edits intact and leaves the submit button enabled for retry.\n\n## Issue Number\n\nFixes #17927\n\n## How to Test\n\nRun the unit tests:\n```bash\nnpm test __tests__/routes/app-settings.test.tsx\n```\n\nAll 6 tests pass.\n\n## Video/Screenshots\n\n<img width=\"800\" alt=\"app-settings-failed-save-keeps-edits\" src=\"https://github.com/user-attachments/ass"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "3226edb27dc052c133697c17eeb6cc2c29fdafa4",
        "updated_at": "2026-10-05T08:11:27Z"
      },
      {
        "issue": 17920,
        "pr": 18247,
        "title": "fix(chat): resolve event group status for rejected and errored actions",
        "author": "lx3133584",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/18247",
        "contexts": [
          "s failed with `AgentErrorEvent`, leaving actions counted as uncompleted in the group summary (issue #17920).\n\n## Summary\n\n- **Type Guards**:\n  - Exported `isUserRejectObservation` in `src/types/agent-server/type-guards.ts` checking `source === \"environment\"`, `action_id`, and `rejection_reason`.\n- **UI Event Processing**:\n  - Updated `handleEventFo",
          "ts`.\n    - Distinct rejected marker rendering inside expanded event groups.\n\n## Issue Number\n\nFixes #17920\n\n## How to Test\n\nRun the new and updated test suites:\n```bash\nnpm test -- __tests__/components/conversation-events/chat/rejected-grouped-action.test.tsx __tests__/utils/handle-event-for-ui.test.ts __tests__/components/conversation-events/chat/"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "545da063406da7e90a41a360149f7f31430b9f93",
        "updated_at": "2026-10-09T17:32:35Z"
      },
      {
        "issue": 17920,
        "pr": 17995,
        "title": "fix: resolve rejected and errored actions in event groups",
        "author": "errmakov",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/17995",
        "contexts": [
          "unt would need new plural copy in 15 locales; happy to add it if preferred.\n\n## Issue Number\n\nFixes #17920\n\n## How to Test\n\nAutomated (all run locally on this branch):\n\n- `npm run lint` — 0 errors (pre-existing warnings only)\n- `node scripts/check-translation-completeness.cjs` — passes\n- `npm run build` — passes\n- `npm test` — the full run had one "
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "e501b48c5bb489c624e52798f91dcc78d74f805b",
        "updated_at": "2026-10-09T10:01:25Z"
      },
      {
        "issue": 17900,
        "pr": 18154,
        "title": "fix: make settings switches keyboard accessible",
        "author": "Rohithmatham12",
        "status": "Draft",
        "url": "https://github.com/OpenHands/OpenHands/pull/18154",
        "contexts": [
          "ace-key toggling, accessible naming/state, and disabled-switch tab behavior\n\n## Issue Number\n\nFixes #17900\n\n## How to Test\n\nRun:\n\n```bash\nnpx vitest run __tests__/components/settings/settings-switch.test.tsx\nnpx eslint src/components/features/settings/settings-switch.tsx __tests__/components/settings/settings-switch.test.tsx\nnpx prettier --check sr"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": true,
        "merged_at": null,
        "head_sha": "f160a34f47742198db31cb9a059c89fca370fd4c",
        "updated_at": "2026-10-08T12:42:06Z"
      },
      {
        "issue": 17900,
        "pr": 17963,
        "title": "fix: restore keyboard access to settings switches",
        "author": "Minghan2005",
        "status": "Draft",
        "url": "https://github.com/OpenHands/OpenHands/pull/17963",
        "contexts": [
          "ation, controlled state and disabled semantics; add behavioral regressions.\n\n## Issue Number\n\nFixes #17900\n\n## How to Test\n\n```sh\nnpm test -- __tests__/components/settings/settings-switch.test.tsx --maxWorkers=1\nnpm run build\n```\n\nRecorded: 7 primitive tests, 14 relevant consumer tests and 2 selected SDK boolean-setting cases pass, alongside change"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": true,
        "merged_at": null,
        "head_sha": "cb43883c4a0aec10958ae37c3847ffbc5cbb4357",
        "updated_at": "2026-10-06T01:06:36Z"
      },
      {
        "issue": 17898,
        "pr": 17962,
        "title": "fix: honor Do Not Track before telemetry initialization",
        "author": "Minghan2005",
        "status": "Draft",
        "url": "https://github.com/OpenHands/OpenHands/pull/17962",
        "contexts": [
          "nputs, cancellation/retry, cached access and locked Cloud consent/identity.\n\n## Issue Number\n\nFixes #17898\n\n## How to Test\n\n```sh\nnpm test -- __tests__/services/telemetry.test.ts __tests__/services/telemetry-bootstrap.test.ts --maxWorkers=1\nnpm run lint\nnpm run build:lib\n```\n\nRecorded: 58 scoped tests pass; lint, production app build and ESM/CJS/ty"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": true,
        "merged_at": null,
        "head_sha": "0cf65d442003f7ecd52971d266903bc746f99130",
        "updated_at": "2026-10-06T01:06:35Z"
      },
      {
        "issue": 17567,
        "pr": 17570,
        "title": "fix(diff-viewer): dispose Monaco models after editor teardown",
        "author": "Hasnaathussain",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/17570",
        "contexts": [
          "xtModel got disposed before DiffEditorWidget model got reset` during the transition to Planner (see #17567).\n\n## Summary\n\n- Keep diff and single-editor models alive through Monaco widget disposal, then release them from the widget's `onDidDispose` turn.\n- Add lifecycle regression coverage for both the diff and single-file views.\n\n## Issue Number\n\nF",
          " Add lifecycle regression coverage for both the diff and single-file views.\n\n## Issue Number\n\nFixes #17567\n\n## How to Test\n\n- `npx vitest run __tests__/components/features/diff-viewer` — 3 files, 23 tests passed.\n- `npm run build:app` — production build passed.\n- `npm run typecheck` reaches unrelated existing baseline errors in webview test mocks; ",
          "st mocks; no error is reported for the changed files.\n- The full live reproduction is documented in #17567. This checkout has no configured Agent Server/workspace session for a browser before/after capture, so I have not claimed live UI evidence here.\n\n## Video/Screenshots\n\nThe issue's original Chromium audit shows the two views involved in the fai"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "d7d4d01dea9419d0fd40cc344a88d2d4c6077f4c",
        "updated_at": "2026-10-04T07:26:00Z"
      },
      {
        "issue": 17566,
        "pr": 17573,
        "title": "fix(terminal): restore history after reload",
        "author": "Hasnaathussain",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/17573",
        "contexts": [
          "entity reset so cached history is not cleared during a conversation switch.\n\n## Issue Number\n\nFixes #17566\n\n## How to Test\n\n- Focused provider regression: `hydrates terminal history from the REST event page` passes, including replaying the same action and observation without duplicate terminal entries.\n- Conversation identity coverage passes for cl"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "148f8ce66610fbb3eed828715f5e2a08ed0629a9",
        "updated_at": "2026-10-04T07:15:12Z"
      },
      {
        "issue": 17564,
        "pr": 17694,
        "title": "fix(automations): make dashboard header responsive on mobile viewports",
        "author": "PranavSharma124",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/17694",
        "contexts": [
          " responsive layout test in `__tests__/routes/automations-list.test.tsx`\r\n\r\n## Issue Number\r\n\r\nFixes #17564\r\n\r\n## How to Test\r\n\r\n1. Run `npx vitest run __tests__/routes/automations-list.test.tsx`\r\n2. Start the development server (`npm run dev`) and navigate to `/automations`.\r\n3. In browser devtools, set the viewport width to 390px and 320px.\r\n4. Ve",
          " Automation action buttons remain reachable.\r\n\r\n## Video/Screenshots\r\n\r\n**Before (reproduction from #17564):**\r\n<img width=\"390\" alt=\"Mobile header squeezed before fix\" src=\"https://enyst.github.io/assets/openhands-pr-17435-ui-audit/automations-mobile.png\" />\r\n\r\n## Type\r\n\r\n- [x] Bug fix\r\n- [ ] Feature\r\n- [ ] Refactor\r\n- [ ] Breaking change\r\n- [ ] D"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "2562990c8604f3f90bed90ee7c9a4c1c8d9cc165",
        "updated_at": "2026-09-30T12:46:12Z"
      },
      {
        "issue": 17563,
        "pr": 17575,
        "title": "fix(automations): keep edit dialog usable on mobile",
        "author": "Hasnaathussain",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/17575",
        "contexts": [
          "able.\n- Add dialog labeling and a regression test for the layout structure.\n\n## Issue Number\n\nFixes #17563\n\n## How to Test\n\nFrom the repository root:\n\n```sh\nnpm ci --ignore-scripts\nnpx vitest run __tests__/components/automations/detail/edit-automation-modal.test.tsx --reporter=dot\nnpx eslint src/components/features/automations/detail/edit-automatio"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "f6457ec3a49ea242c18a5409293659cb40c189a5",
        "updated_at": "2026-09-27T17:40:18Z"
      },
      {
        "issue": 17215,
        "pr": 17654,
        "title": "fix: isolate embedded modal portal hosts",
        "author": "zyz619963502zyz",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/17654",
        "contexts": [
          "ict Mode cleanup, SSR, and existing Escape, backdrop, and stacking behavior\n\n## Issue Number\n\nFixes #17215\n\n## How to Test\n\n```bash\nnpm run make-i18n\nnpm exec -- vitest run __tests__/agent-server-ui-providers.test.tsx __tests__/components/shared/modals/modal-backdrop.test.tsx\nnpm run typecheck\nnpm run build:app\nnpm run build:lib\n```\n\nThe focused su"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "f0474d5411281e1ec422832df7e7d0fb77ac7095",
        "updated_at": "2026-10-01T20:45:42Z"
      },
      {
        "issue": 16954,
        "pr": 16992,
        "title": "fix(mcp-health): scope health keys by active backend and connection revision",
        "author": "PranshulSoni",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/16992",
        "contexts": [
          "tial rotation.\n- Capture active scope during probe and mutation lifecycles.\n\n## Issue Number\n\nFixes #16954\n\n## How to Test\n\n- `npx vitest run --fileParallelism=false __tests__/utils/mcp-server-health-key.test.ts __tests__/api/mcp-health/probe-mcp-server-health.test.ts __tests__/hooks/mutation/use-delete-mcp-server.test.ts __tests__/hooks/mutation/u"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "ef301c4ec476a03aaf045c20f21e3e923cd2a3a1",
        "updated_at": "2026-09-29T05:29:37Z"
      },
      {
        "issue": 16953,
        "pr": 17428,
        "title": "fix: keep embedded provider instances stable across Strict Mode and sibling roots",
        "author": "kuldeepsinh19",
        "status": "Draft",
        "url": "https://github.com/OpenHands/OpenHands/pull/17428",
        "contexts": [
          "captured pair in its\neffect cleanup. Two concrete consequences fall out of that, both called out in\n#16953:\n\n1. **Strict Mode replay drops the custom instances.** React runs\n   setup → cleanup → setup with no render in between. The cleanup hands the\n   globals back to the previous/default pair, and because the render-phase\n   assignment does not ru",
          "s before. No new i18n keys,\nno new dependencies, one source file touched.\n\n## Issue Number\n\nPart of #16953\n\n<!-- Scoped deliberately: this covers the first two acceptance criteria (Strict\nMode stability and sibling-root independence). It does not attempt the public\nAPI redesign — capturing an originating runtime for async/imperative consumers,\nthe "
        ],
        "scope": "Partial: Strict Mode and sibling-root isolation",
        "state": "open",
        "draft": true,
        "merged_at": null,
        "head_sha": "607971c0def84d28b09949f535f6af2eb95f465a",
        "updated_at": "2026-09-14T18:45:18Z"
      },
      {
        "issue": 16952,
        "pr": 17017,
        "title": "refactor: source canvas event source/status contracts from typescript-client (#16952)",
        "author": "Asthenia0412",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/17017",
        "contexts": [
          "refactor: source canvas event source/status contracts from typescript-client (#16952)\n<!-- Keep this PR as draft until it is ready for review. -->\n\nHUMAN:\n\nNote from Yancy Asthenia0412: This is an AI-authored, type-only refactor (no user-facing UI change), so no manual interaction on a local Mac setup was required. It is verif",
          "was required. It is verified below with the same commands CI runs.\n\n---\n\nAGENT:\n\nThis is Stage 1 of #16952: stop redeclaring the canonical event source/status contracts. `SourceType` and `ExecutionStatus` were local copies that had drifted from `@openhands/typescript-client` (the source set was missing `system`, the status set was missing `deleting",
          "rver event wire model even though `@openhands/typescript-client` is the canonical browser contract (#16952). The local copy of the event *source* and *execution status* has already drifted from the pinned client: `EventSource` includes `system`, `ConversationExecutionStatus` includes `deleting`, but Canvas's `SourceType`/`ExecutionStatus` omit both",
          "re Request template\nand wait for it to be labeled `ready-for-dev` before opening this PR. -->\nFixes #16952\n\n## How to Test\n\nThis is a type-only refactor; the app's rendered output is unchanged.\n\n1. `npm ci`\n2. `npm run make-i18n && npx react-router typegen`\n3. `npx tsc --noEmit` — must produce no errors.\n4. `npx vitest run src/types/agent-server/co",
          "- [ ] Feature\n- [x] Refactor\n- [ ] Breaking change\n- [ ] Docs / chore\n\n## Notes\n\nThis is Stage 1 of #16952 (base/common source/status contracts and the runtime source guard). Later stages migrate the base event envelope, the local event union, and the `event-service`/`use-event-store` consumers as the issue's staged plan describes.\n"
        ],
        "scope": "Partial: stage 1 contracts migration",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "381f65b23c38d1399e479c098d8406540d67268b",
        "updated_at": "2026-09-24T04:12:04Z"
      },
      {
        "issue": 16950,
        "pr": 17880,
        "title": "fix(home): scope launch targets by backend",
        "author": "kr1shna-exe",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/17880",
        "contexts": [
          "s.\n- Migrate legacy recents without assigning them to an arbitrary backend.\n\n## Issue Number\n\nFixes #16950\n\n## How to Test\n\n- `LANG=en_US.UTF-8 npm test`: 767 files; 8,109 passed; seven todo.\n- `npm run lint`, `npm run build` and `npm run build:lib`: passed.\n- Select a workspace on Local A, switch to Local B and submit. The target clears and the ne"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "a80d41e08b6e81e78af35269fa55a549b7ab1179",
        "updated_at": "2026-10-08T00:12:08Z"
      },
      {
        "issue": 16949,
        "pr": 17244,
        "title": "fix: keep Files and Changes views source-driven after refresh (#16949)",
        "author": "lesbass",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/17244",
        "contexts": [
          "fix: keep Files and Changes views source-driven after refresh (#16949)\nHUMAN:\n\nNote from Stefano Maffeis: AI-authored frontend bug fix, verified locally with the same unit tests + typecheck + eslint CI runs; no GPU or browser E2E involved.\n\n---\n\nAGENT:\n\n## Why\n\nTwo stale-data bugs in the workspace UI:\n\n1. **File",
          "workspace-files.test.tsx` (cloud listing refetched on family invalidation).\n\n## Issue Number\n\nFixes #16949\n\n## How to Test\n\nRun the targeted unit tests, the TypeScript type check, and ESLint on the changed hooks:\n\n```bash\nnpx vitest run __tests__/hooks/query/use-unified-get-git-changes.test.tsx __tests__/hooks/query/use-workspace-files.test.tsx\n# 1"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "034a003ed04200c06dd4a272e3000020f638f575",
        "updated_at": "2026-09-24T06:23:29Z"
      },
      {
        "issue": 16948,
        "pr": 17005,
        "title": "fix(settings): keep unsaved SDK settings edits across background refetches",
        "author": "ameyypawar",
        "status": "Draft",
        "url": "https://github.com/OpenHands/OpenHands/pull/17005",
        "contexts": [
          "rive values outside the schema and read them back off `saveControl.values`.\n\n## Issue Number\n\nFixes #16948\n\n## How to Test\n\n```\nnvm use 24.15\nnpx vitest run __tests__/components/features/settings/sdk-settings/sdk-section-page.test.tsx\n```\n\nExpected result: `38 passed`.\n\nTo see the bug, restore the component from `main` and re-run — nine of them fai"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": true,
        "merged_at": null,
        "head_sha": "a1a22037da90833d3e40519c7304eb4a73bede07",
        "updated_at": "2026-09-01T18:21:01Z"
      },
      {
        "issue": 16947,
        "pr": 17560,
        "title": "fix: rebuild chat UI projection when older history pages arrive",
        "author": "Endokelp",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/17560",
        "contexts": [
          ", then all 14 passed after rebuilding uiEvents from the sorted events log.\n\n---\n\nAGENT:\n\nReproduced #16947 / #17559 with the deterministic store seed (newest page = observation, older page = matching action). `sortEventState` used to sort `uiEvents` by timestamp, which cannot replay action→observation replacement. It now rebuilds the projection fro",
          "px vitest run __tests__/stores/use-event-store.test.ts\n```\n\nExpected: 14 passed. On `main` the two `#16947` cases fail as in the before screenshot.\n\nOptional UI check with `npm run dev` / `npm run`: open a conversation whose history spans more than one event page, scroll up, and confirm a tool call split across the page boundary still renders as a ",
          "g fix\n- [ ] Feature\n- [ ] Refactor\n- [ ] Breaking change\n- [ ] Docs / chore\n\n## Notes\n\nCompanion to #16947 (the original report is not `ready-for-dev` because Actual Behavior had no screenshot). No migration or config change.\n\n<!-- jev-fast-audit:start -->\n## Jev-Fast-Audit\n\n⚡ **Jev fast audit** · estimates · 0.33s · commit 543cd5a  \n**Strongest si"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "543cd5afdf58e7a0c151534bdc876a21201768ea",
        "updated_at": "2026-09-24T15:30:36Z"
      },
      {
        "issue": 16257,
        "pr": 16262,
        "title": "fix: avoid import-time signal handlers",
        "author": "Sakshamm-Goyal",
        "status": "Draft",
        "url": "https://github.com/OpenHands/OpenHands/pull/16262",
        "contexts": [
          " signal listener counts unchanged while preserving SIGHUP cleanup coverage.\n\n## Issue Number\nCloses #16257\n\n## How to Test\n- npx vitest run __tests__/scripts/dev-with-automation.test.ts (48 passed)\n- npm run lint (passed: typecheck, ESLint, Prettier)\n- npm run build (passed: production client and server build; existing Vite chunk/future-flag warnin"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": true,
        "merged_at": null,
        "head_sha": "ff38ad9c2b4fea247f5f8508a3de5b27d42f1ac7",
        "updated_at": "2026-08-23T14:01:52Z"
      },
      {
        "issue": 16107,
        "pr": 16639,
        "title": "fix(agent-canvas): gate onboarding on active backend readiness",
        "author": "shenjiu9",
        "status": "Draft",
        "url": "https://github.com/OpenHands/OpenHands/pull/16639",
        "contexts": [
          "ch/close step; prevent dismissed flows from re-latching.\r\n\r\n## Coordination\n\nPR #16527 also targets #16107 with the same backend-readiness direction. The main behavior difference is dismissal lifetime: #16527 keeps \"Skip for now\" only in React memory, while this draft uses backend-scoped `sessionStorage` so a reload in the same tab remains dismisse",
          " intended behavior and are happy to coordinate rather than duplicate work.\n## Issue Number\r\n\r\nFixes #16107\r\n\r\n## How to Test\r\n\r\n1. Configure a usable LLM on a Local backend, then open the app in a fresh browser profile. Onboarding should not appear.\r\n2. Remove the usable LLM configuration and reload. Onboarding should appear after readiness resolve",
          "directly with Node 24 before committing. This pre-existing hook issue was intentionally kept out of #16107.\r\n\r\n\r\n\r\n"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": true,
        "merged_at": null,
        "head_sha": "fa05e8b1c94993c12c4df9b68e696703ebc0600b",
        "updated_at": "2026-08-23T14:01:30Z"
      },
      {
        "issue": 15677,
        "pr": 16390,
        "title": "feat(conversation-panel): group conversations by workspace by default",
        "author": "iroiro147",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/16390",
        "contexts": [
          "feat(conversation-panel): group conversations by workspace by default\nResolves #15677\n\nConversations are now grouped by workspace by default in the sidebar. Previously the default was chronological ordering across all workspaces.\n\n### Changes\n- `organizeMode` default changed from `\"chronological\"` to `\"grouped\"` in `src/stores/"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "d3e6b0ba744ebf9d12035825e9081b7f441c2ed5",
        "updated_at": "2026-09-29T03:13:02Z"
      },
      {
        "issue": 18263,
        "pr": 18265,
        "title": "fix(automations): poll in-flight draft test runs until terminal status is reached",
        "author": "lx3133584",
        "status": "Closed, unmerged",
        "url": "https://github.com/OpenHands/OpenHands/pull/18265",
        "contexts": [
          "est runs view remained stuck showing `Pending` for completed runs until a manual page reload (issue #18263).\n\n## Summary\n\n- **Active In-Flight Polling**:\n  - Added a 3-second polling interval in `AutomationSetupPanel` that activates whenever `draftAutomationId` exists and `draftRuns` contains at least one non-terminal run (`PENDING` or `RUNNING`).\n",
          "LETED` -> `Successful` and `FAILED`), and that polling stops once terminal.\n\n## Issue Number\n\nFixes #18263\n\n## How to Test\n\nRun the automation setup panel test suite:\n```bash\nnpm test -- __tests__/components/automations/automation-setup-panel.test.tsx\nnpm test -- __tests__/components/automations/ __tests__/routes/automation\n```\n\nVerify TypeScript t"
        ],
        "scope": "Addresses issue",
        "state": "closed",
        "draft": false,
        "merged_at": null,
        "head_sha": "ee41c2f14d7840fe6d67b3f2e006870e2efa8702",
        "updated_at": "2026-10-10T11:46:57Z"
      },
      {
        "issue": 17217,
        "pr": 17376,
        "title": "feat: surface ask_oracle as an Oracle profile",
        "author": "Oscar-Williams",
        "status": "Open",
        "url": "https://github.com/OpenHands/OpenHands/pull/17376",
        "contexts": [
          "and keep the reserved-name guards covered across the current profile flows.\n\n## Issue Number\n\nFixes #17217\n\n## How to Test\n\nInstall dependencies with `npm ci`, then run:\n\n```bash\nnpm run lint\nnpm test -- --run \\\n  __tests__/components/settings/llm-profiles/llm-profiles-manager.test.tsx \\\n  __tests__/components/settings/llm-profiles/llm-settings-loc"
        ],
        "scope": "Addresses issue",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "head_sha": "5934d9ce1f72b9c42d85395743024ebb628e30b9",
        "updated_at": "2026-09-29T16:25:31Z"
      },
      {
        "issue": 17949,
        "pr": 17964,
        "title": "fix(agent-canvas): honor launcher runtime flags",
        "author": "FanouZeng-TT",
        "status": "Closed, unmerged",
        "url": "https://github.com/OpenHands/OpenHands/pull/17964",
        "contexts": [
          "ssage. Finally, backend-only runtime metadata described a frontend route that did not exist.\n\nFixes #17949\n\n## Summary\n\n- Parse and forward `--allow-lan-session-key` through the npm, Vite, and static launcher paths while preserving the key-free off-loopback default and rejecting the option in `--public` mode.\n- Render busy-port failures once, witho",
          "er, and runtime-metadata regressions covering the three reported behaviors.\n\n## Issue Number\n\nFixes #17949\n\n## How to Test\n\nEnvironment: Node 24.21.0, installed dependencies from the lockfile with `npm ci`.\n\n1. Focused launcher regression suite:\n\n   ```bash\n   npm test -- --run \\\n     __tests__/bin/agent-canvas.test.ts \\\n     __tests__/scripts/bind"
        ],
        "scope": "Addresses issue",
        "state": "closed",
        "draft": true,
        "merged_at": null,
        "head_sha": "378889f6a5746fdb45d0fc87a260a02971787315",
        "updated_at": "2026-10-08T02:55:51Z"
      },
      {
        "issue": 17564,
        "pr": 17739,
        "title": "fix(automations): keep mobile dashboard heading readable",
        "author": "harshitethic",
        "status": "Closed, unmerged",
        "url": "https://github.com/OpenHands/OpenHands/pull/17739",
        "contexts": [
          "eserve the existing desktop layout\n- add focused route coverage for the responsive structure\n\nFixes #17564.\n\n## Scope\n\nThis is limited to the automations list header/layout. It does not change automation behavior or API calls."
        ],
        "scope": "Addresses issue",
        "state": "closed",
        "draft": false,
        "merged_at": null,
        "head_sha": "72d16e536fe1ad28487ac11a210c942a1db49989",
        "updated_at": "2026-09-27T20:13:20Z"
      },
      {
        "issue": 17215,
        "pr": 17255,
        "title": "fix: isolate embedded modal portal hosts",
        "author": "zyz619963502zyz",
        "status": "Closed, unmerged",
        "url": "https://github.com/OpenHands/OpenHands/pull/17255",
        "contexts": [
          "StrictMode cleanup, SSR, and the existing Escape/backdrop/stacking behavior\n\n## Issue Number\n\nFixes #17215\n\n## How to Test\n\n1. Run `npm ci` from `frontend`.\n2. Run `npx vitest run __tests__/agent-server-ui-providers.test.tsx __tests__/components/shared/modals/modal-backdrop.test.tsx` (13/13 tests pass).\n3. Run `npm run typecheck`, `npm run lint`, `"
        ],
        "scope": "Addresses issue",
        "state": "closed",
        "draft": false,
        "merged_at": null,
        "head_sha": "2b74344b2fed36f47b30ce0f3d27dfc19387cdc5",
        "updated_at": "2026-09-23T16:41:52Z"
      },
      {
        "issue": 16949,
        "pr": 17023,
        "title": "fix: keep git changes fresh and unify workspace-files query keys (#16949)",
        "author": "Asthenia0412",
        "status": "Closed, unmerged",
        "url": "https://github.com/OpenHands/OpenHands/pull/17023",
        "contexts": [
          "fix: keep git changes fresh and unify workspace-files query keys (#16949)\n<!-- Keep this PR as draft until it is ready for review. -->\n\nHUMAN:\n\nNote from Yancy Asthenia0412: This is an AI-authored frontend bug fix verified with the same commands CI runs (unit tests + typecheck + eslint); no GPU/E2E verification is ",
          "CI runs (unit tests + typecheck + eslint); no GPU/E2E verification is involved.\n\n---\n\nAGENT:\n\nFixes #16949.\n\n## Why\n\nTwo stale-data bugs in the workspace UI:\n\n1. **Files tab refresh didn't reach the cloud backend.** The cloud file listing used a separate query key (`workspace-files-cloud`), so the manual refresh button and file-edit observations — ",
          "workspace-files.test.tsx` (cloud listing refetched on family invalidation).\n\n## Issue Number\n\nFixes #16949\n\n## How to Test\n\nRun the targeted unit tests, the TypeScript type check, and ESLint on the changed hooks:\n\n```bash\nnpx vitest run __tests__/hooks/query/use-unified-get-git-changes.test.tsx __tests__/hooks/query/use-workspace-files.test.tsx\n# 1"
        ],
        "scope": "Addresses issue",
        "state": "closed",
        "draft": false,
        "merged_at": null,
        "head_sha": "6509f0d584ea7702346e6b13599539df1711f305",
        "updated_at": "2026-08-31T01:35:34Z"
      },
      {
        "issue": 16257,
        "pr": 16294,
        "title": "fix: install dev launcher signal handlers only when a process owns the lifecycle",
        "author": "georgeglarson",
        "status": "Closed, unmerged",
        "url": "https://github.com/OpenHands/OpenHands/pull/16294",
        "contexts": [
          "he change it guards.\n\nAfter: `0 / 0 / 0` on import for all four launchers.\n\n## Issue Number\n\nCloses #16257\n\n## How to Test\n\n```\nnpx vitest run __tests__/scripts/dev-with-automation.test.ts __tests__/scripts/dev-static.test.ts\n```\n\nTo confirm each test guards something real:\n\n1. Delete the `installSignalHandlers();` call from `main()` in `dev-with-a"
        ],
        "scope": "Addresses issue",
        "state": "closed",
        "draft": true,
        "merged_at": null,
        "head_sha": "557781ceb35f5d0ae9c3629ee6f167a26ddfda39",
        "updated_at": "2026-08-04T16:02:53Z"
      },
      {
        "issue": 16107,
        "pr": 16527,
        "title": "fix(agent-canvas): Show onboarding only when the active backend has no usable LLM configuration  #16107",
        "author": "Alessandra005",
        "status": "Closed, unmerged",
        "url": "https://github.com/OpenHands/OpenHands/pull/16527",
        "contexts": [
          "fix(agent-canvas): Show onboarding only when the active backend has no usable LLM configuration  #16107\n## Overview\r\n\r\nThis PR replaces the browser-local onboarding marker with backend‑driven LLM readiness. Onboarding now appears only when the active backend truly has no usable LLM configuration, making behavior consistent across browsers, profi"
        ],
        "scope": "Addresses issue",
        "state": "closed",
        "draft": false,
        "merged_at": null,
        "head_sha": "c3c3bb6a2612b6ede72a560aa7a479b2e0d0f4c2",
        "updated_at": "2026-10-01T20:03:28Z"
      },
      {
        "issue": 16107,
        "pr": 16518,
        "title": "fix(agent-canvas): gate onboarding on active backend readiness",
        "author": "shenjiu9",
        "status": "Closed, unmerged",
        "url": "https://github.com/OpenHands/OpenHands/pull/16518",
        "contexts": [
          " its final launch/close step; prevent dismissed flows from re-latching.\r\n\r\n## Issue Number\r\n\r\nFixes #16107\r\n\r\n## How to Test\r\n\r\n1. Configure a usable LLM on a Local backend, then open the app in a fresh browser profile. Onboarding should not appear.\r\n2. Remove the usable LLM configuration and reload. Onboarding should appear after readiness resolve",
          "directly with Node 24 before committing. This pre-existing hook issue was intentionally kept out of #16107.\r\n\r\n"
        ],
        "scope": "Superseded by #16639",
        "state": "closed",
        "draft": false,
        "merged_at": null,
        "head_sha": "626dd60c2d0bbc09bc601ca82c41f6da66e4b9c4",
        "updated_at": "2026-08-11T16:42:15Z"
      },
      {
        "issue": 14014,
        "pr": 14918,
        "title": "test: enforce GitHub Actions pinning policy",
        "author": "maxpetrusenkoagent",
        "status": "Closed, unmerged",
        "url": "https://github.com/OpenHands/OpenHands/pull/14918",
        "contexts": [
          "k the box below. -->\n\nHUMAN:\n\n\n- [ ] A human has tested these changes.\n\nAGENT:\n\n---\n\n## Why\n\nCloses #14014.\n\nThe main repo now has third-party GitHub Actions pinned to immutable SHAs, while GitHub-authored and first-party OpenHands refs intentionally remain mutable. This PR turns that policy into a regression test so future workflow edits cannot si",
          "rce full 40-character SHA pins for non-GitHub, non-OpenHands third-party actions.\n\n## Issue Number\n\n#14014\n\n## How to Test\n\n- `uv run --python 3.13 pytest tests/unit/test_github_actions_pinning.py -q`\n- `uv run --python 3.13 pre-commit run --config ./dev_config/python/.pre-commit-config.yaml --files tests/unit/test_github_actions_pinning.py .github"
        ],
        "scope": "Regression guard for SHA-pinning policy; closed unmerged",
        "state": "closed",
        "draft": false,
        "merged_at": null,
        "head_sha": "a890159f52dd45d048f3116bb6b89cd3d966dbd6",
        "updated_at": "2026-07-27T15:19:26Z"
      },
      {
        "issue": 14014,
        "pr": 14488,
        "title": "ci: pin external third-party actions to commit SHAs + scope Dependabot to composite actions",
        "author": "Fieldnote-Echo",
        "status": "Merged",
        "url": "https://github.com/OpenHands/OpenHands/pull/14488",
        "contexts": [
          "Issue discussion identifies this as original merged implementation; issue later reopened after regression."
        ],
        "scope": "Historical merged fix; issue reopened after regression",
        "state": "closed",
        "draft": false,
        "merged_at": "2026-05-22T16:38:00Z",
        "head_sha": "525b8397b4e1ce7151ee9237cce77bc8c9ad7ef9",
        "updated_at": "2026-05-26T13:50:15Z"
      }
    ],
    "no_match_count": 18,
    "no_match_issues": [
      17953,
      17946,
      17932,
      17922,
      17919,
      17899,
      17635,
      16951,
      16691,
      16492,
      16412,
      16410,
      16195,
      15529,
      15676,
      15751,
      15752,
      15950
    ],
    "statusCounts": {
      "Open": 28,
      "Draft": 9,
      "Closed, unmerged": 9,
      "Merged": 1
    }
  },
  "weeklyClosures": {
    "repository": "OpenHands/OpenHands",
    "scope": "Issues authored by enyst or smolpaws",
    "window": {
      "start": "2026-10-04T04:24:19.000Z",
      "end": "2026-10-11T04:24:19.000Z"
    },
    "closedIssueCount": 77,
    "counts": {
      "matched": {
        "enyst/smolpaws": 62,
        "other author": 15
      },
      "solved": {
        "enyst/smolpaws": 61,
        "other author": 15
      },
      "prAuthors": {
        "smolpaws": 3,
        "enyst": 59,
        "qingshungLI": 1,
        "awss1i": 2,
        "errmakov": 2,
        "fengyue-xve": 5,
        "lx3133584": 2,
        "pei711": 2,
        "GoldArowana": 1
      }
    },
    "rows": [
      {
        "issue": 17642,
        "issue_title": "Adopt shadcn/no-unknown-classes with verified Canvas theme loading",
        "issue_author": "smolpaws",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17642",
        "closed_at": "2026-10-04T23:59:23Z",
        "pr": 17644,
        "pr_title": "chore(lint): reject unknown Tailwind classes with verified theme loading",
        "pr_author": "smolpaws",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/17644",
        "merged_at": "2026-10-04T23:59:22Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17273,
        "issue_title": "Define design-doc expectations for deep, high-risk PRs",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17273",
        "closed_at": "2026-10-05T11:50:58Z",
        "pr": 17267,
        "pr_title": "docs(codereview): require design docs for deep, high-risk PRs",
        "pr_author": "smolpaws",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/17267",
        "merged_at": "2026-10-05T11:50:56Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17912,
        "issue_title": "Enable static class checking for Canvas UI components",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17912",
        "closed_at": "2026-10-05T12:36:17Z",
        "pr": 17916,
        "pr_title": "chore(lint): require static classes on Canvas UI components",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/17916",
        "merged_at": "2026-10-05T12:36:16Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17986,
        "issue_title": "Upgrade @shadcn/lint to 0.2.0 after supply-chain review",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17986",
        "closed_at": "2026-10-05T13:11:20Z",
        "pr": 17987,
        "pr_title": "chore(deps): upgrade shadcn lint to 0.2.0",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/17987",
        "merged_at": "2026-10-05T13:11:18Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17994,
        "issue_title": "chore: remove unused socket.io-client and @mswjs/socket.io-binding dependencies",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17994",
        "closed_at": "2026-10-05T15:45:28Z",
        "pr": 17989,
        "pr_title": "chore(deps): remove unused socket.io-client",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/17989",
        "merged_at": "2026-10-05T15:45:27Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17960,
        "issue_title": "[Bug]: Automation setup offers an Agent profile for Prompt and Plugin actions, but choosing one blocks creation with \"Extra inputs are not permitted\"",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17960",
        "closed_at": "2026-10-05T18:20:17Z",
        "pr": 17971,
        "pr_title": "fix(automations): hide agent profiles for preset actions",
        "pr_author": "qingshungLI",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/17971",
        "merged_at": "2026-10-05T18:20:15Z",
        "author_group": "other author",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17996,
        "issue_title": "[Feature]: Retire Node 22 from desktop runtime and tooling",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17996",
        "closed_at": "2026-10-05T21:34:47Z",
        "pr": 17997,
        "pr_title": "chore: replace remaining Node 22 runtime pins",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/17997",
        "merged_at": "2026-10-05T21:34:46Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17903,
        "issue_title": "[Bug]: Agent Canvas update dialog overflows a 390px viewport and its Close button is off-screen",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17903",
        "closed_at": "2026-10-05T21:36:06Z",
        "pr": 18008,
        "pr_title": "fix(settings): keep the Agent Canvas update dialog inside phone viewports",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18008",
        "merged_at": "2026-10-05T21:36:04Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17909,
        "issue_title": "[Bug]: Screen-reader semantics: nested <main> in Settings, no aria-current on Customize, <html lang> never updated",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17909",
        "closed_at": "2026-10-05T23:02:27Z",
        "pr": 18012,
        "pr_title": "fix(a11y): one Settings main landmark, Customize aria-current, synced html lang",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18012",
        "merged_at": "2026-10-05T23:02:25Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17917,
        "issue_title": "[Bug]: Model Router: choosing \"Don't create profiles\" snaps back to a provider connection, and Save creates 11 LLM profiles",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17917",
        "closed_at": "2026-10-05T23:26:55Z",
        "pr": 18020,
        "pr_title": "fix(settings): keep \"Don't create profiles\" for router templates",
        "pr_author": "awss1i",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18020",
        "merged_at": "2026-10-05T23:26:53Z",
        "author_group": "other author",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17905,
        "issue_title": "[Bug]: Opening an unknown conversation id also shows a misleading \"data this UI does not understand\" toast",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17905",
        "closed_at": "2026-10-05T23:50:58Z",
        "pr": 18009,
        "pr_title": "fix(conversations): treat a null batch entry as not found, not an invalid response",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18009",
        "merged_at": "2026-10-05T23:50:57Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17918,
        "issue_title": "[Bug]: Model Router list heading and router names are invisible in light color themes",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17918",
        "closed_at": "2026-10-05T23:54:17Z",
        "pr": 18013,
        "pr_title": "fix(settings): use theme contrast ink for Model Router list text",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18013",
        "merged_at": "2026-10-05T23:54:16Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17925,
        "issue_title": "[Bug]: Composer \"More input actions\" menu closes as soon as it opens at narrow widths, so the model cannot be switched",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17925",
        "closed_at": "2026-10-05T23:55:08Z",
        "pr": 18015,
        "pr_title": "fix(chat): keep the composer overflow menu open at narrow widths",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18015",
        "merged_at": "2026-10-05T23:55:07Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17907,
        "issue_title": "[Bug]: Automation delete confirmation ignores Escape and is not exposed as a dialog",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17907",
        "closed_at": "2026-10-05T23:55:56Z",
        "pr": 18011,
        "pr_title": "fix(automations): make the delete confirmation a modal dialog that closes on Escape",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18011",
        "merged_at": "2026-10-05T23:55:54Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17929,
        "issue_title": "[Bug]: Add LLM Profile keeps the name derived from the initial model after the user picks a different model",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17929",
        "closed_at": "2026-10-06T00:00:10Z",
        "pr": 18017,
        "pr_title": "fix(llm-profiles): keep the auto-filled profile name following the model",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18017",
        "merged_at": "2026-10-06T00:00:08Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17923,
        "issue_title": "[Bug]: Skills \"Use skill\" opens Home with an empty composer instead of pre-filling the skill command",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17923",
        "closed_at": "2026-10-06T00:00:15Z",
        "pr": 18016,
        "pr_title": "fix(skills): pre-fill the Home composer from Use skill and Create Automation",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18016",
        "merged_at": "2026-10-06T00:00:14Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17914,
        "issue_title": "[Bug]: \"Branch from here\" on a user message drops the message but leaves the new conversation's composer empty",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17914",
        "closed_at": "2026-10-06T00:05:55Z",
        "pr": 18014,
        "pr_title": "fix(chat): keep the message text in the composer after \"Branch from here\"",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18014",
        "merged_at": "2026-10-06T00:05:54Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17934,
        "issue_title": "[Bug]: LLM profile row menu is not keyboard-operable: focus stays on the trigger, and arrow keys stop at a disabled item",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17934",
        "closed_at": "2026-10-06T00:56:15Z",
        "pr": 18019,
        "pr_title": "fix(settings): make the LLM profile row menu keyboard-operable",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18019",
        "merged_at": "2026-10-06T00:56:13Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17943,
        "issue_title": "[Bug]: Sidebar conversation list: misleading download error, and the default layout matches no View preset",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17943",
        "closed_at": "2026-10-06T00:59:29Z",
        "pr": 18021,
        "pr_title": "fix(conversation-panel): report download failures once and select Recent by default",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18021",
        "merged_at": "2026-10-06T00:59:27Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17931,
        "issue_title": "[Bug]: A failed STDIO MCP connection test says \"Check the URL and server type\" and hides the real error",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17931",
        "closed_at": "2026-10-06T01:01:22Z",
        "pr": 18018,
        "pr_title": "fix(mcp): explain failed stdio connection tests without the URL hint",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18018",
        "merged_at": "2026-10-06T01:01:21Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17937,
        "issue_title": "[Bug]: Error toasts show raw \"HTTP request failed (4xx): {json}\" text for /model and profile rename",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17937",
        "closed_at": "2026-10-06T01:01:29Z",
        "pr": 18030,
        "pr_title": "fix(settings): show the server's message instead of raw HttpError text in profile error toasts",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18030",
        "merged_at": "2026-10-06T01:01:27Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17947,
        "issue_title": "[Bug]: Automation \"View logs\" shows \"(no output)\" for runs that created a conversation (local backend)",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17947",
        "closed_at": "2026-10-06T01:02:18Z",
        "pr": 18022,
        "pr_title": "fix(automations): read local run logs from the server-level bash events",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18022",
        "merged_at": "2026-10-06T01:02:17Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17904,
        "issue_title": "[Bug]: Unknown URLs show a bare \"404 Not Found\" with no way back and log a hydration error",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17904",
        "closed_at": "2026-10-06T01:13:35Z",
        "pr": 18023,
        "pr_title": "fix(routes): render unknown URLs as an in-app not-found page",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18023",
        "merged_at": "2026-10-06T01:13:33Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17908,
        "issue_title": "[Bug]: Command menu misses Model Router and Agent Context, and always shows ⌘K",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17908",
        "closed_at": "2026-10-06T01:15:42Z",
        "pr": 18027,
        "pr_title": "fix(command-menu): list Model Router and Agent Context; show Ctrl+K off Apple",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18027",
        "merged_at": "2026-10-06T01:15:41Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17913,
        "issue_title": "[Bug]: Conversation header \"⋯\" menu overflows the screen at phone width and does not close on Escape",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17913",
        "closed_at": "2026-10-06T01:16:34Z",
        "pr": 18028,
        "pr_title": "fix(conversation): keep the header \"⋯\" menu on screen and close it on Escape",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18028",
        "merged_at": "2026-10-06T01:16:32Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17951,
        "issue_title": "[Bug]: Switching backend from a Manage backends row leaves a blank conversation page instead of redirecting",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17951",
        "closed_at": "2026-10-06T01:16:44Z",
        "pr": 18024,
        "pr_title": "fix(backends): redirect off detail pages when switching from Manage backends",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18024",
        "merged_at": "2026-10-06T01:16:42Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17901,
        "issue_title": "[Bug]: First-run onboarding and the API-key screen show a \"No backend is configured.\" error toast",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17901",
        "closed_at": "2026-10-06T01:21:25Z",
        "pr": 18010,
        "pr_title": "fix(onboarding): stop the \"No backend is configured.\" toast before a backend exists",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18010",
        "merged_at": "2026-10-06T01:21:24Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17897,
        "issue_title": "[Bug]: Backend-sync helper text has insufficient contrast in Neutral/dark theme",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17897",
        "closed_at": "2026-10-06T02:13:03Z",
        "pr": 17911,
        "pr_title": "fix: improve backend settings note contrast",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/17911",
        "merged_at": "2026-10-06T02:13:02Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17896,
        "issue_title": "[Bug]: Tablet customization navigation squeezes MCP content to 152px at 768px width",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17896",
        "closed_at": "2026-10-06T02:13:24Z",
        "pr": 17910,
        "pr_title": "fix: keep settings and customization usable on tablets",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/17910",
        "merged_at": "2026-10-06T02:13:23Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17906,
        "issue_title": "[Bug]: A failed automation \"Run now\" shows two error toasts",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17906",
        "closed_at": "2026-10-06T02:43:32Z",
        "pr": 18043,
        "pr_title": "fix(automations): show one error toast when an automation action fails",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18043",
        "merged_at": "2026-10-06T02:43:31Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17902,
        "issue_title": "[Bug]: Automations Filters popover closes after every option click, so filters cannot be combined",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17902",
        "closed_at": "2026-10-06T03:35:38Z",
        "pr": 18026,
        "pr_title": "fix(automations): keep the filters popover open between choices",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18026",
        "merged_at": "2026-10-06T03:35:36Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17956,
        "issue_title": "[Bug]: Plugins and Apps UI: \"Launch Launch Plugin\" title, \"skill\" wording on plugin controls, app switch usable while busy, docs point to /extensions",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17956",
        "closed_at": "2026-10-06T04:27:46Z",
        "pr": 18040,
        "pr_title": "fix(plugins): say \"plugin\" on plugin controls and keep busy app switches inert",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18040",
        "merged_at": "2026-10-06T04:27:45Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17940,
        "issue_title": "[Bug]: Conversation drawer at phone width: agent and file-link tab opens do nothing, Planner hides the tab row, and agent-chosen tabs are not persisted",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17940",
        "closed_at": "2026-10-06T04:29:58Z",
        "pr": 18045,
        "pr_title": "fix(conversation): open the drawer at phone width for agent and file-link tab requests",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18045",
        "merged_at": "2026-10-06T04:29:57Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17933,
        "issue_title": "[Bug]: Escape does not close several menus and popovers (sidebar card ⋮ menu, context-window popover, Overview ⋯ menu, command menu with an option focused)",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17933",
        "closed_at": "2026-10-06T04:31:35Z",
        "pr": 18044,
        "pr_title": "fix(a11y): close menus and popovers on Escape and return focus",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18044",
        "merged_at": "2026-10-06T04:31:34Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17944,
        "issue_title": "[Bug]: Workspace picker: folder names are invisible at phone width, and the empty state never shows",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17944",
        "closed_at": "2026-10-06T04:43:16Z",
        "pr": 18037,
        "pr_title": "fix(home): show folder names at phone width and the workspace empty state",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18037",
        "merged_at": "2026-10-06T04:43:14Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18005,
        "issue_title": "Enable no-raw-colors warnings with verified token exceptions",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18005",
        "closed_at": "2026-10-06T04:53:33Z",
        "pr": 18006,
        "pr_title": "chore(lint): stage raw color warnings",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18006",
        "merged_at": "2026-10-06T04:53:32Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17942,
        "issue_title": "[Bug]: Slash command feedback: bare /btw is silently discarded, and superseded /goal rows keep offering Resume",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17942",
        "closed_at": "2026-10-06T05:14:20Z",
        "pr": 18036,
        "pr_title": "fix(chat): toast on bare /btw and offer Resume only on the latest goal status",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18036",
        "merged_at": "2026-10-06T05:14:18Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17935,
        "issue_title": "[Bug]: Icon-only buttons in the composer and conversation drawer have no accessible name",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17935",
        "closed_at": "2026-10-06T05:17:14Z",
        "pr": 18033,
        "pr_title": "fix(a11y): name the icon-only composer and diff viewer buttons",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18033",
        "merged_at": "2026-10-06T05:17:12Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17930,
        "issue_title": "[Bug]: Installing a catalog STDIO MCP server twice leaves the second copy without its catalog identity",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17930",
        "closed_at": "2026-10-06T05:19:12Z",
        "pr": 18034,
        "pr_title": "fix(mcp): keep catalog identity for repeated STDIO installs",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18034",
        "merged_at": "2026-10-06T05:19:11Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17939,
        "issue_title": "[Bug]: UI copy errors: raw schema text and reStructuredText, untranslated labels, a literal \\n, wrong labels and a dead example link",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17939",
        "closed_at": "2026-10-06T05:23:09Z",
        "pr": 18035,
        "pr_title": "fix(settings): correct UI copy on settings, MCP and skills pages",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18035",
        "merged_at": "2026-10-06T05:23:07Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17921,
        "issue_title": "[Bug]: Files tab keeps showing stale file content after Refresh (and even after a reload)",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17921",
        "closed_at": "2026-10-06T05:26:17Z",
        "pr": 18032,
        "pr_title": "fix(files): show the current file body after Refresh and reload",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18032",
        "merged_at": "2026-10-06T05:26:15Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 16573,
        "issue_title": "Remove low-value mirror tests and test-only production seams",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/16573",
        "closed_at": "2026-10-06T05:28:09Z",
        "pr": 16574,
        "pr_title": "test: Weekly test sweep: remove low-value tests + simplify",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/16574",
        "merged_at": "2026-10-06T05:28:08Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 16815,
        "issue_title": "Show empty-response corrective nudge as an italic informational message with an info icon",
        "issue_author": "smolpaws",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/16815",
        "closed_at": "2026-10-06T12:39:09Z",
        "pr": 17864,
        "pr_title": "feat(chat): render empty-response corrective nudge as an informational note",
        "pr_author": "errmakov",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/17864",
        "merged_at": "2026-10-06T12:39:07Z",
        "author_group": "other author",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17952,
        "issue_title": "[Bug]: Automation detail page never shows Repositories, Plugins or Notification for automations that have them",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17952",
        "closed_at": "2026-10-06T20:27:00Z",
        "pr": 18041,
        "pr_title": "fix(automations): show repositories and plugins stored in preset_metadata",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18041",
        "merged_at": "2026-10-06T20:26:59Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17950,
        "issue_title": "[Bug]: Git Sync page shows credentials embedded in the repository URL, and its Enable help text is outdated",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17950",
        "closed_at": "2026-10-06T20:29:35Z",
        "pr": 18039,
        "pr_title": "fix(automations): hide repository credentials on the Git Sync status card",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18039",
        "merged_at": "2026-10-06T20:29:34Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17924,
        "issue_title": "[Bug]: \"Show Available Hooks\" always says \"No hooks configured\" on local backends, even when workspace hooks are active",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17924",
        "closed_at": "2026-10-06T20:32:43Z",
        "pr": 18031,
        "pr_title": "fix(hooks): list workspace hooks in the Available Hooks dialog on local backends",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18031",
        "merged_at": "2026-10-06T20:32:41Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17954,
        "issue_title": "[Bug]: Plugins and Apps: install/update errors say \"Disconnected (check URL or network)\" instead of the server's reason, and plugin errors toast twice",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17954",
        "closed_at": "2026-10-06T20:36:09Z",
        "pr": 18025,
        "pr_title": "fix(plugins,apps): show the server's reason once for failed installs and updates",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18025",
        "merged_at": "2026-10-06T20:36:08Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17568,
        "issue_title": "[Feature]: Repository-local feature map and weekly main verification skills",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17568",
        "closed_at": "2026-10-06T20:43:02Z",
        "pr": 17961,
        "pr_title": "feat: verify-openhands skill with control-openhands CLI and the full feature map",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/17961",
        "merged_at": "2026-10-06T20:43:00Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18050,
        "issue_title": "[Bug]: Generic error toasts still show raw \"HTTP request failed (<status>): {json}\" text (settings save, MCP delete, shared links)",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18050",
        "closed_at": "2026-10-06T21:53:30Z",
        "pr": 18051,
        "pr_title": "fix(errors): show the server's message instead of raw HttpError text in generic error toasts",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18051",
        "merged_at": "2026-10-06T21:53:28Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18083,
        "issue_title": "[Bug]: Mock-LLM preset automation spec fails since #18034: its Slack stand-in no longer counts as installed",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18083",
        "closed_at": "2026-10-07T00:14:50Z",
        "pr": 18087,
        "pr_title": "test(e2e): give the preset automation's Slack stand-in the catalog identity",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18087",
        "merged_at": "2026-10-07T00:14:48Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18094,
        "issue_title": "[Bug]: Escape does not close the composer \"+\" menu, the status-dot menu or the drawer tabs menu",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18094",
        "closed_at": "2026-10-07T01:05:49Z",
        "pr": 18095,
        "pr_title": "fix(a11y): close the tools, status and tabs menus on Escape",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18095",
        "merged_at": "2026-10-07T01:05:48Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18091,
        "issue_title": "[Feature]: verify-openhands: daily-pass support (map affected, E2E lines, evidence baseline) and CLI fixes",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18091",
        "closed_at": "2026-10-07T02:24:43Z",
        "pr": 18093,
        "pr_title": "feat(verify-openhands): daily pass support and CLI fixes",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18093",
        "merged_at": "2026-10-07T02:24:41Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18078,
        "issue_title": "[Bug]: Flaky delete-profile-modal test asserts the success toast before the delete mutation settles",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18078",
        "closed_at": "2026-10-07T11:28:17Z",
        "pr": 18079,
        "pr_title": "test(settings): wait for the delete toast and close in DeleteProfileModal test",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18079",
        "merged_at": "2026-10-07T11:28:15Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18082,
        "issue_title": "[Bug]: Live E2E (CI › live-e2e) never passes on main: tmux socket path too long, critic endpoint 404, teardown hang",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18082",
        "closed_at": "2026-10-07T14:22:32Z",
        "pr": 18084,
        "pr_title": "fix(e2e): let the live Agent Server E2E job run and finish",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18084",
        "merged_at": "2026-10-07T14:22:30Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18081,
        "issue_title": "[Bug]: Do Not Track still initializes PostHog and requests z.openhands.dev",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18081",
        "closed_at": "2026-10-08T03:13:51Z",
        "pr": 18086,
        "pr_title": "fix(telemetry): never initialize PostHog under Do Not Track",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18086",
        "merged_at": "2026-10-08T03:13:50Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17936,
        "issue_title": "[Bug]: A failed conversation launch from Home shows duplicated error toasts and clears the typed prompt",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17936",
        "closed_at": "2026-10-08T10:57:36Z",
        "pr": 17985,
        "pr_title": "fix(home): show one error toast and keep the prompt when a launch fails",
        "pr_author": "errmakov",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/17985",
        "merged_at": "2026-10-08T10:57:34Z",
        "author_group": "other author",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18089,
        "issue_title": "[Bug]: Available Hooks dialog shows an empty Commands box for prompt and agent hooks",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18089",
        "closed_at": "2026-10-09T00:30:30Z",
        "pr": 18107,
        "pr_title": "fix(hooks): show prompt and agent hook text in the Available Hooks dialog",
        "pr_author": "fengyue-xve",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18107",
        "merged_at": "2026-10-09T00:30:29Z",
        "author_group": "other author",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18172,
        "issue_title": "[Bug]: Escape does not close the composer \"More input actions\" overflow menu at narrow widths",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18172",
        "closed_at": "2026-10-09T00:44:05Z",
        "pr": 18174,
        "pr_title": "fix(a11y): close the composer's More input actions menu on Escape",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18174",
        "merged_at": "2026-10-09T00:44:04Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18090,
        "issue_title": "[Bug]: Duplicate plugin install shows the API hint \"Use force=true to overwrite.\" instead of pointing to Update or Uninstall",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18090",
        "closed_at": "2026-10-09T04:11:59Z",
        "pr": 18110,
        "pr_title": "fix(plugins): point duplicate-install toast at Update or Uninstall",
        "pr_author": "fengyue-xve",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18110",
        "merged_at": "2026-10-09T04:11:58Z",
        "author_group": "other author",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18088,
        "issue_title": "[Bug]: Available Hooks dialog says \"Failed to fetch skills\" when the Agent Server is unreachable",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18088",
        "closed_at": "2026-10-09T04:17:52Z",
        "pr": 18177,
        "pr_title": "fix(hooks): use dedicated hooks fetch error message in available hooks dialog",
        "pr_author": "lx3133584",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18177",
        "merged_at": "2026-10-09T04:17:51Z",
        "author_group": "other author",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18092,
        "issue_title": "[Feature]: verify-openhands feature map: drift candidates and unmapped behaviors surfaced by the e2e suites",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18092",
        "closed_at": "2026-10-09T04:25:24Z",
        "pr": 18183,
        "pr_title": "docs(verify-openhands): map maintenance 2026-10-08",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18183",
        "merged_at": "2026-10-09T04:25:22Z",
        "author_group": "enyst/smolpaws",
        "outcome": "partial tracker match; completion unproven",
        "evidence": "PR references tracker and merged immediately before closure; description explicitly says partial and does not close tracker"
      },
      {
        "issue": 18195,
        "issue_title": "[Bug]: Edit backend dialog clips its controls at phone width",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18195",
        "closed_at": "2026-10-09T12:49:01Z",
        "pr": 18219,
        "pr_title": "fix: fit Edit backend dialog to small viewports",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18219",
        "merged_at": "2026-10-09T12:48:59Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18173,
        "issue_title": "[Bug]: Automation run Logs dialog overflows its panel with a long task summary; tabs and output unreachable at phone width",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18173",
        "closed_at": "2026-10-09T19:43:51Z",
        "pr": 18175,
        "pr_title": "fix(automations): keep a long run's Logs dialog inside its panel",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18175",
        "merged_at": "2026-10-09T19:43:49Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18192,
        "issue_title": "Protect divider and toggle appearance with scoped no-restyle lint contracts",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18192",
        "closed_at": "2026-10-10T10:19:36Z",
        "pr": 18194,
        "pr_title": "chore(lint): protect divider and toggle appearance contracts",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18194",
        "merged_at": "2026-10-10T10:19:34Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18181,
        "issue_title": "[Bug]: A failed MCP server save, toggle or delete shows two identical error toasts",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18181",
        "closed_at": "2026-10-10T10:21:21Z",
        "pr": 18182,
        "pr_title": "fix(mcp): show one error toast when an MCP server change fails",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18182",
        "merged_at": "2026-10-10T10:21:20Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18178,
        "issue_title": "[Bug]: Docker image exits on hosts without IPv6: static server binds \"::\" and fails with EAFNOSUPPORT",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18178",
        "closed_at": "2026-10-10T10:25:30Z",
        "pr": 18180,
        "pr_title": "fix(docker): bind the frontend to 0.0.0.0 when the kernel has no IPv6",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18180",
        "merged_at": "2026-10-10T10:25:29Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18255,
        "issue_title": "[Bug]: Settings content column is not full height below 1024 px, so the tablet section selector (#18200) is cut off on short pages",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18255",
        "closed_at": "2026-10-10T10:29:45Z",
        "pr": 18256,
        "pr_title": "fix(settings): give the settings screen a definite height",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18256",
        "merged_at": "2026-10-10T10:29:43Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18266,
        "issue_title": "[Bug]: Custom MCP Save still shows duplicate connection-test errors",
        "issue_author": "smolpaws",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18266",
        "closed_at": "2026-10-10T11:04:22Z",
        "pr": 18267,
        "pr_title": "fix(mcp): show one toast when the pre-save connection test fails",
        "pr_author": "smolpaws",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18267",
        "merged_at": "2026-10-10T11:04:20Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18193,
        "issue_title": "Keep sibling Settings and Customize pages reachable on tablets",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18193",
        "closed_at": "2026-10-11T00:05:16Z",
        "pr": 18200,
        "pr_title": "feat: add compact section navigation on tablets",
        "pr_author": "enyst",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18200",
        "merged_at": "2026-10-11T00:05:15Z",
        "author_group": "enyst/smolpaws",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18206,
        "issue_title": "[Bug]: Available Hooks dialog shows an agent hook's prompt instead of its system_prompt",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18206",
        "closed_at": "2026-10-11T02:36:49Z",
        "pr": 18215,
        "pr_title": "fix(hooks): pick the Available Hooks text by hook type",
        "pr_author": "fengyue-xve",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18215",
        "merged_at": "2026-10-11T02:36:48Z",
        "author_group": "other author",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17915,
        "issue_title": "[Bug]: Stop/Delete conversation confirmation buttons render without their data-testid (BrandButton expects testId)",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17915",
        "closed_at": "2026-10-11T02:43:01Z",
        "pr": 18151,
        "pr_title": "fix(conversation-panel): pass testId to BrandButton in confirm modals",
        "pr_author": "lx3133584",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18151",
        "merged_at": "2026-10-11T02:42:59Z",
        "author_group": "other author",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17938,
        "issue_title": "[Bug]: LLM and agent profile editors silently disable Save for a duplicate name, with no message",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17938",
        "closed_at": "2026-10-11T03:01:47Z",
        "pr": 18144,
        "pr_title": "fix(settings): flag taken names in the LLM and agent profile editors",
        "pr_author": "awss1i",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18144",
        "merged_at": "2026-10-11T03:01:46Z",
        "author_group": "other author",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18060,
        "issue_title": "[Bug]: Agent profile row menu is not keyboard-operable: focus stays on the trigger, and arrow keys stop at the disabled \"Set as active\"",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18060",
        "closed_at": "2026-10-11T03:44:10Z",
        "pr": 18112,
        "pr_title": "fix(a11y): make the agent profile row menu keyboard-operable",
        "pr_author": "fengyue-xve",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18112",
        "merged_at": "2026-10-11T03:44:09Z",
        "author_group": "other author",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 18061,
        "issue_title": "[Bug]: Automation setup: Agent profile field goes blank after switching the action through Prompt/Plugin or choosing \"Default\"",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18061",
        "closed_at": "2026-10-11T03:47:02Z",
        "pr": 18111,
        "pr_title": "fix(automations): show Default when the agent profile field is empty",
        "pr_author": "fengyue-xve",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/18111",
        "merged_at": "2026-10-11T03:47:01Z",
        "author_group": "other author",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17957,
        "issue_title": "[Bug]: Skill detail modal ignores Escape while its '+N' tag popover trigger has focus",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17957",
        "closed_at": "2026-10-11T04:02:42Z",
        "pr": 17967,
        "pr_title": "fix: close skill tag popover before modal on Escape",
        "pr_author": "pei711",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/17967",
        "merged_at": "2026-10-11T04:02:41Z",
        "author_group": "other author",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17958,
        "issue_title": "[Bug]: Custom MCP server editor reports a malformed header as an environment-variable error",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17958",
        "closed_at": "2026-10-11T04:07:54Z",
        "pr": 17966,
        "pr_title": "fix: show header-specific MCP validation errors",
        "pr_author": "pei711",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/17966",
        "merged_at": "2026-10-11T04:07:52Z",
        "author_group": "other author",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      },
      {
        "issue": 17926,
        "issue_title": "[Bug]: Conversation draft typed within 500 ms of navigating away is lost; the older draft comes back",
        "issue_author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17926",
        "closed_at": "2026-10-11T04:23:38Z",
        "pr": 17968,
        "pr_title": "fix(chat): flush conversation drafts before navigation",
        "pr_author": "GoldArowana",
        "pr_url": "https://github.com/OpenHands/OpenHands/pull/17968",
        "merged_at": "2026-10-11T04:23:36Z",
        "author_group": "other author",
        "outcome": "solving PR",
        "evidence": "Merged PR explicitly fixes/closes issue and merge immediately precedes closure"
      }
    ]
  },
  "refresh": {
    "anchor": "2026-10-11T04:24:19Z",
    "observed_at": "2026-10-11 04:29:46 UTC",
    "current_open_author_issue_count": 67,
    "current_open_author_counts": {
      "enyst": 55,
      "smolpaws": 12
    },
    "own_pr_index_counts": {
      "enyst": 588,
      "smolpaws": 25,
      "total": 613
    },
    "all_open_repository_prs_indexed": 457,
    "recent_closed_repository_prs_indexed": 200,
    "removed_closed_issue_numbers": [
      18206,
      18061,
      18060,
      17958,
      17957,
      17938,
      17926,
      17915
    ],
    "removed_closed_issue_count": 8,
    "added_eligible_issues": [],
    "new_issues_excluded_by_own_pr": [
      {
        "issue": 18269,
        "author": "smolpaws",
        "pr": 18270,
        "pr_author": "enyst"
      },
      {
        "issue": 18271,
        "author": "enyst",
        "pr": 18274,
        "pr_author": "enyst"
      },
      {
        "issue": 18272,
        "author": "enyst",
        "pr": 18275,
        "pr_author": "enyst"
      }
    ],
    "other_author_new_matches": [],
    "excluded_new_other_author_references": [
      {
        "issue": 17948,
        "pr": 18073,
        "title": "fix(automations): refetch automations when Run now finds the automation deleted",
        "author": "pucedoteth",
        "state": "open",
        "draft": false,
        "merged_at": null,
        "created_at": "2026-10-06T13:20:42Z",
        "updated_at": "2026-10-08T18:00:39Z",
        "context": "he home page and detail page separately. They read the same invalidated queries, and the detail page reaches its existing not-found state once its refetch 404s (the slow 404 retries are out of scope, #17948).\n\n## Video/Screenshots\n\nBefore (`main`): after the failed Run now, **PR Triage Digest** is still on the dashboard and the tile says 7 automations / 5 active.\n\n![Dashboard on main after the failed Run now](https://raw.githubusercontent.com/pucedoteth/OpenHands/7f56bbf540501babaf79dccf552867e18a308695/.pr/18062-before-main.png)\n\nAfter (this branch)",
        "reason": "PR body explicitly calls the slow-404 retries in #17948 out of scope. It implements #18062 only."
      }
    ],
    "own_pr_exclusion_evidence": [
      {
        "issue": 18272,
        "author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18272",
        "pr_references": [
          {
            "pr": 18275,
            "author": "enyst",
            "title": "chore(lint): stage inline-style warnings",
            "contexts": [
              "-variable support and warnings for literal colors injected into variables. Add real-config regression probes and contributor guidance.\n\n## Issue Number\n\nCloses #18272.\n\n## How to Test\n\nBase: `fd3a76f48327ac142473026a874dd917977b745c`. Policy commit: `f931b462c4da0a994877c70428900efe8b0b20c0`.\n\n1. Run `node node_modules/vitest/vitest.mjs run __tests__/scripts/inline-styles-lint.test.ts __tests__/scripts/restyle-lint.test.ts"
            ]
          }
        ]
      },
      {
        "issue": 18271,
        "author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18271",
        "pr_references": [
          {
            "pr": 18274,
            "author": "enyst",
            "title": "chore(lint): protect caret appearance and state rotation",
            "contexts": [
              "e agent guidance and real-config probes for aliases, namespaces, negative/variant rotation, accepted classes, and primitive internals.\n\n## Issue Number\n\nCloses #18271.\n\n## How to Test\n\nBase: `fd3a76f48327ac142473026a874dd917977b745c`. Policy commit: `fdf2d1c19ce04c8c373004573b3a59ab2b1ac169`. No product source, CSS, component API or dependency changed.\n\n- `node node_modules/vitest/vitest.mjs run __tests__/scripts/restyle-l"
            ]
          }
        ]
      },
      {
        "issue": 18234,
        "author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18234",
        "pr_references": [
          {
            "pr": 18236,
            "author": "enyst",
            "title": "fix(automations): keep a pinned card's task summary visible next to its conversation title",
            "contexts": [
              "'s verify-openhands map maintenance pass.\n\n## Why\n\nA pinned automation card on Home never showed the latest run's task summary when the run had a conversation (#18234). The summary was `min-w-0 flex-1` (flex basis 0) beside the conversation link (basis auto), so a title wider than the strip took all the room and the summary rendered 0 px wide.\n\n## Summary\n\n- `pinned-automation-card.tsx`: the summary uses `flex-auto` (basis",
              " the summary out of zero-basis flex and caps the title (jsdom has no layout, so the test checks the flex contract; it fails on `main`).\n\n## Issue Number\n\nFixes #18234\n\n## How to Test\n\n- `npx vitest run __tests__/components/features/home/`: 18 files, 192 tests passed.\n- `npm run typecheck`, `npx eslint` on the card (0 errors; 2 pre-existing warnings) and Prettier pass.\n- Live, verify-openhands harness on a stack built from "
            ]
          },
          {
            "pr": 18237,
            "author": "enyst",
            "title": "docs(verify-openhands): map maintenance 2026-10-09",
            "contexts": [
              "ependent re-run of settings edits | 8 | 8 | 0 | 0 | 0 |\n| R4 | independent re-run of the new F03 row | 5 | 4 | 1 | 0 | 0 |\n| R5 | second reproduction of #18233/#18234 | 5 | 1 | 4 | 0 | 0 |\n| C | coordinator: F10.rename, F13.name-validation | 2 | 2 | 0 | 0 | 0 |\n| **Total** | | **214** | **181** | **19** | **14** | **0** |\n\nEvery fail is a known or newly filed defect, each kept as Expected + Known failure. #18063 is the ove",
              "Logs dialog. automation#551 is the encryption re-export, on 1.19.0. #18178 is the Docker IPv6 bind, reproduced on an image built from this checkout. #18233 and #18234 are new and filed below. The other fail was F13 drift, row rewritten.\n\n### Changed rows and their live result\n\n| Row | Change | Live result |\n|---|---|---|\n| F05.overflow-menu + Escape gotcha | Escape closes the More input actions menu and returns focus (#181",
              "|\n| **new** F03.home-run-outcome-health | Home rows/tooltip/pinned strip show Blocked / Needs review (#17682) | list + tooltip pass; pinned strip Known failure #18234 |\n| **new** F02.super-admin-setup-tour | guided tour, `?setup_tour=` (#18138); Local ignores it | Local negative pass; positive blocked |\n| F24.encryption | Known failure re-dated 2026-10-09 on automation 1.19.0; automation#551 closed, fix automation#563 not ",
              "ears it. Downshift's default `InputKeyDownEscape` reducer is the cause. Not a regression in range; the behaviour dates from #145. Fix: #18235, verified live.\n- #18234 [Bug]: the pinned automation card hides the run's task summary when the run has a conversation. A `flex-1` summary sits beside an auto-basis title link. Not a regression in range; introduced by #16937. Fix: #18236, verified live.\n\nBoth were reproduced a secon",
              "s/OpenHands/1199344c10ece6acfad563a559bcc96f4208d3f9/.pr/map-maintenance/2026-10-09/F03.home-run-outcome-health-list.png)''```\n- F03 pinned card, Known failure #18234 (summary hidden): [F03 pinned fail](```''https://raw.githubusercontent.com/OpenHands/OpenHands/1199344c10ece6acfad563a559bcc96f4208d3f9/.pr/bugs/2026-10-09/pinned-card-summary/desktop-pinned-card.png)''```\n- F02.super-admin-setup-tour on Local, `/?setup_tour=",
              "er-cori-tsitrj` holds the same tree as intermediate commits. This branch carries it as one commit so the author is consistent. The issue screenshots for #18233/#18234 are pinned to commit e6e91fe on that branch.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nhttps://claude.ai/code/session_0158EAXpUTegZZfh62cSX2io\n\n---\n_Generated by [Claude Code](https://claude.ai/code/session_0158EAXpUTegZZfh62cSX2io)_\n\n"
            ]
          }
        ]
      },
      {
        "issue": 18233,
        "author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18233",
        "pr_references": [
          {
            "pr": 18235,
            "author": "enyst",
            "title": "fix(backends): keep the backend selector's value when Escape is pressed on its closed menu",
            "contexts": [
              "fter the one that closes its menu) blanked it: the active backend's name became an italic placeholder and the connection status dot disappeared until a reload (#18233). The shared `Dropdown` uses downshift 9's `useCombobox`, whose default `InputKeyDownEscape` reducer clears `selectedItem` and `inputValue` when the menu is already closed.\n\n## Summary\n\n- `src/ui/dropdown/dropdown.tsx`: the `stateReducer` keeps `selectedItem`",
              "opdown.test.tsx`: the selection survives Escape on a closed menu (fails on `main`, passes here), and a clearable dropdown still clears.\n\n## Issue Number\n\nFixes #18233\n\n## How to Test\n\n- `npx vitest run __tests__/components/ui/dropdown.test.tsx __tests__/components/backends/`: 9 files, 173 tests passed (the new \"keeps the selection\" test fails on `main`).\n- `npm run typecheck`, `npx eslint src/ui/dropdown/dropdown.tsx` and "
            ]
          },
          {
            "pr": 18237,
            "author": "enyst",
            "title": "docs(verify-openhands): map maintenance 2026-10-09",
            "contexts": [
              "3 | independent re-run of settings edits | 8 | 8 | 0 | 0 | 0 |\n| R4 | independent re-run of the new F03 row | 5 | 4 | 1 | 0 | 0 |\n| R5 | second reproduction of #18233/#18234 | 5 | 1 | 4 | 0 | 0 |\n| C | coordinator: F10.rename, F13.name-validation | 2 | 2 | 0 | 0 | 0 |\n| **Total** | | **214** | **181** | **19** | **14** | **0** |\n\nEvery fail is a known or newly filed defect, each kept as Expected + Known failure. #18063 is ",
              " the phone Logs dialog. automation#551 is the encryption re-export, on 1.19.0. #18178 is the Docker IPv6 bind, reproduced on an image built from this checkout. #18233 and #18234 are new and filed below. The other fail was F13 drift, row rewritten.\n\n### Changed rows and their live result\n\n| Row | Change | Live result |\n|---|---|---|\n| F05.overflow-menu + Escape gotcha | Escape closes the More input actions menu and returns ",
              "), pass on main |\n| F24.save-and-sync | Save and sync now needs Enable Git Sync on | pass, independently re-run |\n| F25 gotchas | selector-Escape Known failure #18233; probe cadence observation | fail reproduced twice |\n| F26.docker-image | re-dated with an image built from this checkout; concrete build steps | fail #18178 (unpatched), pass with the bind workaround |\n| README | tooltip-reuse note, counts 745, baseline | n/",
              " fail #18178 (unpatched), pass with the bind workaround |\n| README | tooltip-reuse note, counts 745, baseline | n/a |\n\n### New defects (filed, with fix PRs)\n\n- #18233 [Bug]: Escape on the closed backend selector clears it. Downshift's default `InputKeyDownEscape` reducer is the cause. Not a regression in range; the behaviour dates from #145. Fix: #18235, verified live.\n- #18234 [Bug]: the pinned automation card hides the r",
              "44c10ece6acfad563a559bcc96f4208d3f9/.pr/map-maintenance/2026-10-09/F24.encryption-automation-main.png)''```\n- F25 selector after a second Escape, Known failure #18233: [F25 fail](```''https://raw.githubusercontent.com/OpenHands/OpenHands/1199344c10ece6acfad563a559bcc96f4208d3f9/.pr/bugs/2026-10-09/backend-selector-escape/desktop-after-second-escape.png)''```\n- Known failures still reproducing: F05 overflow Model submenu of",
              "de/clever-cori-tsitrj` holds the same tree as intermediate commits. This branch carries it as one commit so the author is consistent. The issue screenshots for #18233/#18234 are pinned to commit e6e91fe on that branch.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nhttps://claude.ai/code/session_0158EAXpUTegZZfh62cSX2io\n\n---\n_Generated by [Claude Code](https://claude.ai/code/session_0158EAXpUTegZZfh62cSX"
            ]
          }
        ]
      },
      {
        "issue": 18214,
        "author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18214",
        "pr_references": [
          {
            "pr": 18218,
            "author": "enyst",
            "title": "refactor(onboarding): edit the active LLM profile instead of raw LLM settings",
            "contexts": [
              "t based on Opus 5.5, helping Engel Nyst (@enyst) with project maintenance. This PR follows #17889 and makes onboarding's LLM step profile-first, as proposed in #18214.\n\n**This PR is stacked on #17889.** The branch merges #17889's head (`7a589aa3`) into `main`. Until #17889 lands, the diff also shows its two commits. After it lands, only this PR's changes remain.\n\n## Why\n\nOn a local backend, onboarding's LLM step treated th",
              "/`. The API-contracts guide and the verify-openhands map (F01) describe the new behavior. The new subtitle string has all 15 languages.\n\n## Issue Number\n\nFixes #18214\n\n## How to Test\n\n**Unit, lint, types**\n- `npx vitest run __tests__/components/onboarding __tests__/components/settings/llm-profiles __tests__/routes/llm-settings.test.tsx`: 331 passed.\n  - The 6 new tests fail on the previous head, `d0b8f7be8`: the model, kee",
              "ds/blob/dfcda87691138c7d0ca4016dca96378a1e0e9ab4/.pr/profile-first-onboarding/08-legacy-after-conversation.png?raw=true\">\n\n## Design Doc\n\nN/A. The design is in #18214, and the Summary above covers the before and after.\n\n## Type\n\n- [ ] Bug fix\n- [ ] Feature\n- [x] Refactor\n- [ ] Breaking change\n- [ ] Docs / chore\n\n## Notes\n\n- **Behavior changes for returning local users:**\n  - The form shows their current profile with its ow"
            ]
          }
        ]
      },
      {
        "issue": 18004,
        "author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18004",
        "pr_references": [
          {
            "pr": 18270,
            "author": "enyst",
            "title": "refactor(theme): use readable MCP feedback text tokens",
            "contexts": [
              "and layout remain unchanged.\n- Cover palette contrast and preservation of host overrides, and record the contract as MCP-004. This is a partial migration under #18004; `no-raw-colors` remains a warning.\n\n## Issue Number\n\nCloses #18269.\nRefs #18004; the broader migration remains open.\n\n## How to Test\n\nBase: `fd3a76f48327ac142473026a874dd917977b745c`. Product proposal: `0c3523ed038772e9f4e6d7160b9ade4227f9032c`.\n\nReal verifi",
              "errides, and record the contract as MCP-004. This is a partial migration under #18004; `no-raw-colors` remains a warning.\n\n## Issue Number\n\nCloses #18269.\nRefs #18004; the broader migration remains open.\n\n## How to Test\n\nBase: `fd3a76f48327ac142473026a874dd917977b745c`. Product proposal: `0c3523ed038772e9f4e6d7160b9ade4227f9032c`.\n\nReal verification used two isolated production stacks through `control-openhands`, Agent Ser"
            ]
          },
          {
            "pr": 18194,
            "author": "enyst",
            "title": "chore(lint): protect divider and toggle appearance contracts",
            "contexts": [
              "\nUpstream behavior: [no-restyle documentation](https://github.com/shadcn-ui/lint/blob/main/docs/rules/no-restyle.md). Color-token migration remains separate in #18004.\r\n\r\n"
            ]
          },
          {
            "pr": 18199,
            "author": "enyst",
            "title": "fix: use theme colors for form validation",
            "contexts": [
              "now checks visible rejection and blocked creation instead of a palette class.\n\nFive raw-color warnings are removed (148 to 143). This is a small first slice of #18004; the rule remains a warning.\n\n## Issue Number\n\nRefs #18004 (partial migration; the tracking issue stays open).\n\n## How to Test\n\n`verify-openhands` launched isolated real local stacks at base `3500d9e5c7` and head `091d6e62de`: Agent Canvas 1.26.0, Agent Serve",
              "f a palette class.\n\nFive raw-color warnings are removed (148 to 143). This is a small first slice of #18004; the rule remains a warning.\n\n## Issue Number\n\nRefs #18004 (partial migration; the tracking issue stays open).\n\n## How to Test\n\n`verify-openhands` launched isolated real local stacks at base `3500d9e5c7` and head `091d6e62de`: Agent Canvas 1.26.0, Agent Server 1.53.0, Chrome, no LLM needed. `doctor` passed on both an",
              "s/theme-validation-2026-10-09/solarized-profile-after.png)). Choosing a darker shared danger token or a separate error-text token remains a design follow-up in #18004. No palette values are changed.\n\nThe phone pass found an existing layout bug: Edit backend keeps a 520px width at a 390px viewport, clipping controls. Tracked separately at https://github.com/OpenHands/OpenHands/issues/18195. This change does not alter dialog"
            ]
          },
          {
            "pr": 18006,
            "author": "enyst",
            "title": "chore(lint): stage raw color warnings",
            "contexts": [
              "out roadmap. No component, stylesheet, dependency, or rendered-color changes.\r\n\r\n## Issue Number\r\n\r\nCloses #18005. Remaining migration is tracked separately in #18004, including the full per-file inventory.\r\n\r\n## How to Test\r\n\r\nOn Node 22.23.2, after synchronizing dependencies to the current-main lockfile with lifecycle scripts disabled:\r\n\r\n| Command | Result |\r\n| --- | --- |\r\n| `npx vitest run __tests__/scripts/raw-colors",
              "|\r\n\r\nThe legacy named tokens are valid existing declarations, not a claim that they already adapt to every theme. Their eventual theme migration is included in #18004. The remaining `bg-opacity-50` finding is deliberately not exempted; it needs investigation as a legacy utility.\r\n\r\n## Video/Screenshots\r\n\r\nNo rendered UI changes. Evidence is the actual lint/test/build output and compiled CSS inspection above; visual before/"
            ]
          }
        ]
      },
      {
        "issue": 17557,
        "author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17557",
        "pr_references": [
          {
            "pr": 17558,
            "author": "enyst",
            "title": "feat: preserve Insider Cat context across Canvas views",
            "contexts": [
              "d Agent Server continue to own audio, provider credentials, and execution; the host owns placement, navigation, and activation cleanup.\n\n## Issue Number\n\nFixes #17557.\n\n## Related PRs\n\nThe shared integration and acceptance criteria are tracked in [SDK issue #5515](https://github.com/OpenHands/software-agent-sdk/issues/5515). Paired PRs: [Agent Server #5180](https://github.com/OpenHands/software-agent-sdk/pull/5180), [Insid"
            ]
          }
        ]
      },
      {
        "issue": 16946,
        "author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/16946",
        "pr_references": [
          {
            "pr": 16959,
            "author": "enyst",
            "title": "fix(telemetry): retry automation consent sync",
            "contexts": [
              "hanges by `connectionRevision` instead of retaining API keys in an in-memory string, and cover Strict Mode plus privacy-clear behavior.\n\n## Issue Number\n\nFixes #16946\n\n## How to Test\n\nUsing Node 24.19.0 after merging current `main`:\n\n- Focused telemetry verification — 75/75 passed across three test files.\n- `npm test` — 5,276 passed; 4 skipped; 7 todo.\n- `npm run lint` — passed with three pre-existing warnings and no error"
            ]
          }
        ]
      },
      {
        "issue": 16945,
        "author": "enyst",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/16945",
        "pr_references": [
          {
            "pr": 16958,
            "author": "enyst",
            "title": "fix(settings): scope local settings cache by backend",
            "contexts": [
              "d.\n- Prune obsolete connection revisions and add regression coverage for backend, revision, TTL, encrypted-payload, and retry behavior.\n\n## Issue Number\n\nFixes #16945\n\n## How to Test\n\nAfter merging main at `95dcdcdf12bd78f02c52b80cccf2f5f4f35242a4`:\n\n- Settings service and direct-call guard: 49 tests passed across two files, including main's in-flight cache-scoping cases.\n- `npm run lint` passed with 0 errors and 524 exist"
            ]
          }
        ]
      },
      {
        "issue": 18269,
        "author": "smolpaws",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18269",
        "pr_references": [
          {
            "pr": 18270,
            "author": "enyst",
            "title": "refactor(theme): use readable MCP feedback text tokens",
            "contexts": [
              "on of host overrides, and record the contract as MCP-004. This is a partial migration under #18004; `no-raw-colors` remains a warning.\n\n## Issue Number\n\nCloses #18269.\nRefs #18004; the broader migration remains open.\n\n## How to Test\n\nBase: `fd3a76f48327ac142473026a874dd917977b745c`. Product proposal: `0c3523ed038772e9f4e6d7160b9ade4227f9032c`.\n\nReal verification used two isolated production stacks through `control-openhand"
            ]
          }
        ]
      },
      {
        "issue": 18210,
        "author": "smolpaws",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18210",
        "pr_references": [
          {
            "pr": 18212,
            "author": "smolpaws",
            "title": "fix(home): hide automation surfaces without interface manifest",
            "contexts": [
              "till showed a **Schedule a task** link to the `/automations` 404 and emitted two internal manifest-error toasts. This is the fault-injected state documented in #18210; the normal pinned package currently provides the manifest.\n\n## Summary\n\n- Gate Home automation sections and the onboarding checklist task on `hasAutomationInterface()`.\n- Disable the checklist's automation health and list queries in the no-manifest state, pr",
              "eventing the internal error toasts while leaving other Home content usable.\n- Add focused regression tests and `AIA-001` spec coverage.\n\n## Issue Number\n\nFixes #18210\n\n## How to Test\n\nFor the live proof, I used the frozen baseline `3500d9e5c7cbdfb5a2cbfe9499ce4448eb10c0a2` and the fix source at `36dd858ada7e2100e951cb94be84ac7ed81655fe`, with Agent Server 1.53.0 on a healthy Local loopback backend. In each isolated build, "
            ]
          }
        ]
      },
      {
        "issue": 18204,
        "author": "smolpaws",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18204",
        "pr_references": [
          {
            "pr": 18205,
            "author": "smolpaws",
            "title": "fix: focus provider connection menu actions after portal mount",
            "contexts": [
              "xisting arrow-key and Escape behavior.\n- Extend the existing manager test to exercise initial focus and immediate ArrowDown navigation.\n\n## Issue Number\n\nFixes #18204\n\n## How to Test\n\n1. Start Agent Canvas with a local Agent Server, open Settings → LLM, and create a disposable provider connection.\n2. Open its `…` row menu. Before this fix, `document.activeElement` remains the menu trigger and ArrowDown does not select an a"
            ]
          }
        ]
      },
      {
        "issue": 18202,
        "author": "smolpaws",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18202",
        "pr_references": [
          {
            "pr": 18237,
            "author": "enyst",
            "title": "docs(verify-openhands): map maintenance 2026-10-09",
            "contexts": [
              "s focus (#18174); #18172 failure wording removed | pass, narrow + phone, independently re-run |\n| F05/F06/F07 Send-disabled gotchas | \"not filed yet\" now links #18202; suggestion/macro prefill added as Known failure | fail reproduced (W1); #18202 open, fix PR #18203 open |\n| F07 Hooks fetch-error gotcha | expects `Failed to fetch hooks. Please try again later.` (#18177); #18088 removed | pass, desktop + phone, independentl",
              "dently re-run |\n| F05/F06/F07 Send-disabled gotchas | \"not filed yet\" now links #18202; suggestion/macro prefill added as Known failure | fail reproduced (W1); #18202 open, fix PR #18203 open |\n| F07 Hooks fetch-error gotcha | expects `Failed to fetch hooks. Please try again later.` (#18177); #18088 removed | pass, desktop + phone, independently re-run |\n| F19 duplicate-install gotcha, F19.add-plugin-error, F19.page wait; ",
              "range; introduced by #16937. Fix: #18236, verified live.\n\nBoth were reproduced a second time by an independent agent on a fresh stack. One more entry point for #18202 (the `+` > Macros items) was added as a comment there.\n\n### Blocked checks and prerequisites\n\n- F02.super-admin-setup-guide / setup-tour positive paths (#17969, #18138): OpenHands Enterprise backend with `ENABLE_SUPER_ADMIN`, first Super Admin.\n- F25.cloud-or"
            ]
          },
          {
            "pr": 18203,
            "author": "smolpaws",
            "title": "fix: enable Send after composer prefill",
            "contexts": [
              " and submission without extra typing.\n- Include reviewed before/after screenshots from isolated real Canvas runs for both entry points.\n\n## Issue Number\n\nFixes #18202\n\n## How to Test\n\n1. In a local Canvas conversation, send a user message. Hover it and choose **Branch from here**. **Before:** the new branch shows the original text, but Send is disabled until another character is typed. **After:** Send is enabled immediatel",
              "ull the latest code from the repository.` fills the composer, no user message is sent yet, and Send remains disabled until the user types ([sweep reproduction](https://github.com/OpenHands/OpenHands/issues/18202#issuecomment-6072193111)). This menu uses the same queued composer prefill path; the below-composer Git control bar is a separate direct-send action. This entry point was reproduced before the fix but has not yet been live-tested after it.\n4. The branch after"
            ]
          }
        ]
      },
      {
        "issue": 18196,
        "author": "smolpaws",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/18196",
        "pr_references": [
          {
            "pr": 18197,
            "author": "smolpaws",
            "title": "fix(a11y): contain focus in Canvas App trust confirmation",
            "contexts": [
              "ent still exists.\n- Add route-level regression tests and commit authentic before/after videos of the same Space → Tab → Enter sequence.\n\n## Issue Number\n\nFixes #18196\n\n## How to Test\n\n1. Start Canvas and install the repository's `tests/fixtures/canvas-extensions/demo-page` app disabled. On `/apps`, focus its Enable switch.\n2. Press Space. **Before:** the trust dialog opens but focus stays on the switch; Tab reaches the bac"
            ]
          }
        ]
      },
      {
        "issue": 17643,
        "author": "smolpaws",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/17643",
        "pr_references": [
          {
            "pr": 17646,
            "author": "smolpaws",
            "title": "refactor(theme): separate base color from text-base typography",
            "contexts": [
              "ding/custom CSS consumers. Temporary review artifacts are removed from the final tree and remain available through commit-pinned links.\n\n## Issue Number\n\nFixes #17643\n\n## How to Test\n\nThe refreshed product commit is `0fa7236e773b18327788cf2b0bbe821ed783f633`, merging main `fd3a76f48327ac142473026a874dd917977b745c` into the original fork branch. Subsequent evidence/cleanup commits have an identical final tree.\n\n| Verificati"
            ]
          }
        ]
      },
      {
        "issue": 16277,
        "author": "smolpaws",
        "issue_url": "https://github.com/OpenHands/OpenHands/issues/16277",
        "pr_references": [
          {
            "pr": 16278,
            "author": "smolpaws",
            "title": "fix: guard Automate tab against catalog entry with missing `requires`",
            "contexts": [
              "ensions`; a version skew or hand-authored entry can produce an item without `requires`, and one bad entry should not brick the tab for every automation.\n\nFixes #16277\n\n## Summary\n\n- Guard `getIntegrationIds` and `getRequiredIntegrationIds` with optional chaining + empty-object fallback (`automation.requires?.integrations ?? {}`), so a malformed entry contributes no integrations instead of throwing.\n- Add two unit tests cov"
            ]
          }
        ]
      }
    ],
    "selected_timelines_checked": [
      18263,
      17948,
      16691,
      14014
    ],
    "status_changes": [
      {
        "issue": 18263,
        "pr": 18265,
        "previous": "Open",
        "current": "Closed, unmerged",
        "evidence": "https://github.com/OpenHands/OpenHands/pull/18265",
        "closed_at": "2026-10-10T11:46:56Z"
      }
    ],
    "historical_merged_open_issue": {
      "issue": 14014,
      "pr": 14488,
      "scope": "Historical merged fix; issue reopened after regression. Fresh timeline confirms current maintenance gap; no new Canvas implementing PR was identified."
    },
    "source_caches": [
      "/workspace/openhands-refresh-author-index.json",
      "/workspace/openhands-refresh-pr-index.json"
    ],
    "known_reference_metadata": [
      {
        "issue": 18206,
        "pr": 18231,
        "issue_currently_open": false,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "baa5f65698189e5434404dd84f2278501df8425d",
        "url": "https://github.com/OpenHands/OpenHands/pull/18231",
        "updated_at": "2026-10-09T07:26:53Z"
      },
      {
        "issue": 18206,
        "pr": 18215,
        "issue_currently_open": false,
        "state": "closed",
        "draft": false,
        "merged_at": "2026-10-11T02:36:48Z",
        "closed_at": "2026-10-11T02:36:48Z",
        "head_sha": "32d5f442ed3e1e007fa76482bf125ca1c71609b3",
        "url": "https://github.com/OpenHands/OpenHands/pull/18215",
        "updated_at": "2026-10-11T02:37:20Z"
      },
      {
        "issue": 18161,
        "pr": 18166,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "f500de4b326cef594d88f47be9db090402c2347e",
        "url": "https://github.com/OpenHands/OpenHands/pull/18166",
        "updated_at": "2026-10-08T14:50:45Z"
      },
      {
        "issue": 18160,
        "pr": 18164,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "c485c41b4296491870b9c4c9fd6ef387afbf9615",
        "url": "https://github.com/OpenHands/OpenHands/pull/18164",
        "updated_at": "2026-10-08T14:37:39Z"
      },
      {
        "issue": 18123,
        "pr": 18147,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "07f0bfbe0fe09767e4aba683e2eb4e43ebe3b1f1",
        "url": "https://github.com/OpenHands/OpenHands/pull/18147",
        "updated_at": "2026-10-08T10:08:41Z"
      },
      {
        "issue": 18063,
        "pr": 18242,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "54b325b47ee4dc97d36f3dd9fb424c945bc0f4c4",
        "url": "https://github.com/OpenHands/OpenHands/pull/18242",
        "updated_at": "2026-10-09T14:13:05Z"
      },
      {
        "issue": 18063,
        "pr": 18115,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "f8890f07e433bbd55e702c73d2f0941f76484bf6",
        "url": "https://github.com/OpenHands/OpenHands/pull/18115",
        "updated_at": "2026-10-07T08:21:18Z"
      },
      {
        "issue": 18062,
        "pr": 18186,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "d088ddec5a81284a5b05544f77d97c1d47c6b1ba",
        "url": "https://github.com/OpenHands/OpenHands/pull/18186",
        "updated_at": "2026-10-10T21:14:38Z"
      },
      {
        "issue": 18062,
        "pr": 18073,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "9a831278b5fd79bfdd7646db33bb81f824beadc8",
        "url": "https://github.com/OpenHands/OpenHands/pull/18073",
        "updated_at": "2026-10-08T18:00:39Z"
      },
      {
        "issue": 18061,
        "pr": 18187,
        "issue_currently_open": false,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "436d015f8663c3e152f63f776421757cfc42a1ce",
        "url": "https://github.com/OpenHands/OpenHands/pull/18187",
        "updated_at": "2026-10-10T21:09:45Z"
      },
      {
        "issue": 18061,
        "pr": 18111,
        "issue_currently_open": false,
        "state": "closed",
        "draft": false,
        "merged_at": "2026-10-11T03:47:01Z",
        "closed_at": "2026-10-11T03:47:01Z",
        "head_sha": "8e559c2c4c41ee8b65ee0ee868703199e3d6d184",
        "url": "https://github.com/OpenHands/OpenHands/pull/18111",
        "updated_at": "2026-10-11T03:47:31Z"
      },
      {
        "issue": 18060,
        "pr": 18248,
        "issue_currently_open": false,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "7e1229101cd9ebcd3b1495c62a36e6a8891338e4",
        "url": "https://github.com/OpenHands/OpenHands/pull/18248",
        "updated_at": "2026-10-11T00:09:32Z"
      },
      {
        "issue": 18060,
        "pr": 18112,
        "issue_currently_open": false,
        "state": "closed",
        "draft": false,
        "merged_at": "2026-10-11T03:44:09Z",
        "closed_at": "2026-10-11T03:44:09Z",
        "head_sha": "f5ddec1cd40ea58a12c51b94d1bad8beb9d27d41",
        "url": "https://github.com/OpenHands/OpenHands/pull/18112",
        "updated_at": "2026-10-11T03:44:40Z"
      },
      {
        "issue": 17959,
        "pr": 18153,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "3441b93aa8ebf47da89b9d11716e1d9a670a8230",
        "url": "https://github.com/OpenHands/OpenHands/pull/18153",
        "updated_at": "2026-10-08T12:55:10Z"
      },
      {
        "issue": 17958,
        "pr": 17966,
        "issue_currently_open": false,
        "state": "closed",
        "draft": false,
        "merged_at": "2026-10-11T04:07:52Z",
        "closed_at": "2026-10-11T04:07:52Z",
        "head_sha": "07b762b6e9b74efaaadb04ebc544e4e3cf31088f",
        "url": "https://github.com/OpenHands/OpenHands/pull/17966",
        "updated_at": "2026-10-11T04:08:19Z"
      },
      {
        "issue": 17957,
        "pr": 18249,
        "issue_currently_open": false,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "e0c264261b7e66e3942fd91e024773a3549bb5e3",
        "url": "https://github.com/OpenHands/OpenHands/pull/18249",
        "updated_at": "2026-10-09T18:35:17Z"
      },
      {
        "issue": 17957,
        "pr": 17967,
        "issue_currently_open": false,
        "state": "closed",
        "draft": false,
        "merged_at": "2026-10-11T04:02:41Z",
        "closed_at": "2026-10-11T04:02:41Z",
        "head_sha": "78a77d4e6629f4e0dc933027cbae7eca48d9d09e",
        "url": "https://github.com/OpenHands/OpenHands/pull/17967",
        "updated_at": "2026-10-11T04:03:06Z"
      },
      {
        "issue": 17955,
        "pr": 17965,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "feffce0c4a4a6e3950b9550ea66f5b770e09eb72",
        "url": "https://github.com/OpenHands/OpenHands/pull/17965",
        "updated_at": "2026-10-05T08:51:56Z"
      },
      {
        "issue": 17949,
        "pr": 18156,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "ccd2b2f5249cc993b2ba2a920c31642b8b66b914",
        "url": "https://github.com/OpenHands/OpenHands/pull/18156",
        "updated_at": "2026-10-08T12:53:44Z"
      },
      {
        "issue": 17948,
        "pr": 18260,
        "issue_currently_open": true,
        "state": "open",
        "draft": true,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "324a1127200111b4fd372cd55e9d09c8ccf3b93c",
        "url": "https://github.com/OpenHands/OpenHands/pull/18260",
        "updated_at": "2026-10-10T05:54:53Z"
      },
      {
        "issue": 17941,
        "pr": 17970,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "8a13bda59017f0bf8bd1c4509e2191336e65de3a",
        "url": "https://github.com/OpenHands/OpenHands/pull/17970",
        "updated_at": "2026-10-08T01:41:37Z"
      },
      {
        "issue": 17938,
        "pr": 18245,
        "issue_currently_open": false,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "e74028337aa994657d44ae9de6e761ed0b872a9a",
        "url": "https://github.com/OpenHands/OpenHands/pull/18245",
        "updated_at": "2026-10-09T15:33:46Z"
      },
      {
        "issue": 17938,
        "pr": 18144,
        "issue_currently_open": false,
        "state": "closed",
        "draft": false,
        "merged_at": "2026-10-11T03:01:46Z",
        "closed_at": "2026-10-11T03:01:46Z",
        "head_sha": "cd9b0044458b8164c5ba038d3e3d0e37bf27cd37",
        "url": "https://github.com/OpenHands/OpenHands/pull/18144",
        "updated_at": "2026-10-11T03:02:26Z"
      },
      {
        "issue": 17928,
        "pr": 18152,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "e4d8dffddbeebd44c50ace113765a983af1b9711",
        "url": "https://github.com/OpenHands/OpenHands/pull/18152",
        "updated_at": "2026-10-08T11:47:12Z"
      },
      {
        "issue": 17928,
        "pr": 18127,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "8032aa21bcb0418a8be7eb3b7c6af9330a147aba",
        "url": "https://github.com/OpenHands/OpenHands/pull/18127",
        "updated_at": "2026-10-07T16:28:29Z"
      },
      {
        "issue": 17927,
        "pr": 18201,
        "issue_currently_open": true,
        "state": "open",
        "draft": true,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "317e6e12b1a5172b343c195e059166c21e33a0ec",
        "url": "https://github.com/OpenHands/OpenHands/pull/18201",
        "updated_at": "2026-10-08T23:39:29Z"
      },
      {
        "issue": 17927,
        "pr": 17945,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "3226edb27dc052c133697c17eeb6cc2c29fdafa4",
        "url": "https://github.com/OpenHands/OpenHands/pull/17945",
        "updated_at": "2026-10-05T08:11:27Z"
      },
      {
        "issue": 17926,
        "pr": 18096,
        "issue_currently_open": false,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "027972203b67280f9395306518486142e6285ae4",
        "url": "https://github.com/OpenHands/OpenHands/pull/18096",
        "updated_at": "2026-10-09T04:13:03Z"
      },
      {
        "issue": 17926,
        "pr": 17968,
        "issue_currently_open": false,
        "state": "closed",
        "draft": false,
        "merged_at": "2026-10-11T04:23:36Z",
        "closed_at": "2026-10-11T04:23:36Z",
        "head_sha": "9b2ebe2e962f5aa35e89952dd98abc4a9e9c2eaf",
        "url": "https://github.com/OpenHands/OpenHands/pull/17968",
        "updated_at": "2026-10-11T04:24:02Z"
      },
      {
        "issue": 17920,
        "pr": 18247,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "545da063406da7e90a41a360149f7f31430b9f93",
        "url": "https://github.com/OpenHands/OpenHands/pull/18247",
        "updated_at": "2026-10-09T17:32:35Z"
      },
      {
        "issue": 17920,
        "pr": 17995,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "e501b48c5bb489c624e52798f91dcc78d74f805b",
        "url": "https://github.com/OpenHands/OpenHands/pull/17995",
        "updated_at": "2026-10-09T10:01:25Z"
      },
      {
        "issue": 17915,
        "pr": 18151,
        "issue_currently_open": false,
        "state": "closed",
        "draft": false,
        "merged_at": "2026-10-11T02:42:59Z",
        "closed_at": "2026-10-11T02:43:00Z",
        "head_sha": "2cf8cbd891cd9f7939ffbaa462f7e5a804dfa6e0",
        "url": "https://github.com/OpenHands/OpenHands/pull/18151",
        "updated_at": "2026-10-11T02:43:31Z"
      },
      {
        "issue": 17915,
        "pr": 18140,
        "issue_currently_open": false,
        "state": "open",
        "draft": true,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "d9d3823bf1213411959877c7757183d6fa606569",
        "url": "https://github.com/OpenHands/OpenHands/pull/18140",
        "updated_at": "2026-10-08T06:40:13Z"
      },
      {
        "issue": 17900,
        "pr": 18154,
        "issue_currently_open": true,
        "state": "open",
        "draft": true,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "f160a34f47742198db31cb9a059c89fca370fd4c",
        "url": "https://github.com/OpenHands/OpenHands/pull/18154",
        "updated_at": "2026-10-08T12:42:06Z"
      },
      {
        "issue": 17900,
        "pr": 17963,
        "issue_currently_open": true,
        "state": "open",
        "draft": true,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "cb43883c4a0aec10958ae37c3847ffbc5cbb4357",
        "url": "https://github.com/OpenHands/OpenHands/pull/17963",
        "updated_at": "2026-10-06T01:06:36Z"
      },
      {
        "issue": 17898,
        "pr": 17962,
        "issue_currently_open": true,
        "state": "open",
        "draft": true,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "0cf65d442003f7ecd52971d266903bc746f99130",
        "url": "https://github.com/OpenHands/OpenHands/pull/17962",
        "updated_at": "2026-10-06T01:06:35Z"
      },
      {
        "issue": 17567,
        "pr": 17570,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "d7d4d01dea9419d0fd40cc344a88d2d4c6077f4c",
        "url": "https://github.com/OpenHands/OpenHands/pull/17570",
        "updated_at": "2026-10-04T07:26:00Z"
      },
      {
        "issue": 17566,
        "pr": 17573,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "148f8ce66610fbb3eed828715f5e2a08ed0629a9",
        "url": "https://github.com/OpenHands/OpenHands/pull/17573",
        "updated_at": "2026-10-04T07:15:12Z"
      },
      {
        "issue": 17564,
        "pr": 17694,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "2562990c8604f3f90bed90ee7c9a4c1c8d9cc165",
        "url": "https://github.com/OpenHands/OpenHands/pull/17694",
        "updated_at": "2026-09-30T12:46:12Z"
      },
      {
        "issue": 17563,
        "pr": 17575,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "f6457ec3a49ea242c18a5409293659cb40c189a5",
        "url": "https://github.com/OpenHands/OpenHands/pull/17575",
        "updated_at": "2026-09-27T17:40:18Z"
      },
      {
        "issue": 17215,
        "pr": 17654,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "f0474d5411281e1ec422832df7e7d0fb77ac7095",
        "url": "https://github.com/OpenHands/OpenHands/pull/17654",
        "updated_at": "2026-10-01T20:45:42Z"
      },
      {
        "issue": 16954,
        "pr": 16992,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "ef301c4ec476a03aaf045c20f21e3e923cd2a3a1",
        "url": "https://github.com/OpenHands/OpenHands/pull/16992",
        "updated_at": "2026-09-29T05:29:37Z"
      },
      {
        "issue": 16953,
        "pr": 17428,
        "issue_currently_open": true,
        "state": "open",
        "draft": true,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "607971c0def84d28b09949f535f6af2eb95f465a",
        "url": "https://github.com/OpenHands/OpenHands/pull/17428",
        "updated_at": "2026-09-14T18:45:18Z"
      },
      {
        "issue": 16952,
        "pr": 17017,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "381f65b23c38d1399e479c098d8406540d67268b",
        "url": "https://github.com/OpenHands/OpenHands/pull/17017",
        "updated_at": "2026-09-24T04:12:04Z"
      },
      {
        "issue": 16950,
        "pr": 17880,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "a80d41e08b6e81e78af35269fa55a549b7ab1179",
        "url": "https://github.com/OpenHands/OpenHands/pull/17880",
        "updated_at": "2026-10-08T00:12:08Z"
      },
      {
        "issue": 16949,
        "pr": 17244,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "034a003ed04200c06dd4a272e3000020f638f575",
        "url": "https://github.com/OpenHands/OpenHands/pull/17244",
        "updated_at": "2026-09-24T06:23:29Z"
      },
      {
        "issue": 16948,
        "pr": 17005,
        "issue_currently_open": true,
        "state": "open",
        "draft": true,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "a1a22037da90833d3e40519c7304eb4a73bede07",
        "url": "https://github.com/OpenHands/OpenHands/pull/17005",
        "updated_at": "2026-09-01T18:21:01Z"
      },
      {
        "issue": 16947,
        "pr": 17560,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "543cd5afdf58e7a0c151534bdc876a21201768ea",
        "url": "https://github.com/OpenHands/OpenHands/pull/17560",
        "updated_at": "2026-09-24T15:30:36Z"
      },
      {
        "issue": 16257,
        "pr": 16262,
        "issue_currently_open": true,
        "state": "open",
        "draft": true,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "ff38ad9c2b4fea247f5f8508a3de5b27d42f1ac7",
        "url": "https://github.com/OpenHands/OpenHands/pull/16262",
        "updated_at": "2026-08-23T14:01:52Z"
      },
      {
        "issue": 16107,
        "pr": 16639,
        "issue_currently_open": true,
        "state": "open",
        "draft": true,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "fa05e8b1c94993c12c4df9b68e696703ebc0600b",
        "url": "https://github.com/OpenHands/OpenHands/pull/16639",
        "updated_at": "2026-08-23T14:01:30Z"
      },
      {
        "issue": 15677,
        "pr": 16390,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "d3e6b0ba744ebf9d12035825e9081b7f441c2ed5",
        "url": "https://github.com/OpenHands/OpenHands/pull/16390",
        "updated_at": "2026-09-29T03:13:02Z"
      },
      {
        "issue": 18263,
        "pr": 18265,
        "issue_currently_open": true,
        "state": "closed",
        "draft": false,
        "merged_at": null,
        "closed_at": "2026-10-10T11:46:56Z",
        "head_sha": "ee41c2f14d7840fe6d67b3f2e006870e2efa8702",
        "url": "https://github.com/OpenHands/OpenHands/pull/18265",
        "updated_at": "2026-10-10T11:46:57Z"
      },
      {
        "issue": 17217,
        "pr": 17376,
        "issue_currently_open": true,
        "state": "open",
        "draft": false,
        "merged_at": null,
        "closed_at": null,
        "head_sha": "5934d9ce1f72b9c42d85395743024ebb628e30b9",
        "url": "https://github.com/OpenHands/OpenHands/pull/17376",
        "updated_at": "2026-09-29T16:25:31Z"
      },
      {
        "issue": 17949,
        "pr": 17964,
        "issue_currently_open": true,
        "state": "closed",
        "draft": true,
        "merged_at": null,
        "closed_at": "2026-10-08T02:55:51Z",
        "head_sha": "378889f6a5746fdb45d0fc87a260a02971787315",
        "url": "https://github.com/OpenHands/OpenHands/pull/17964",
        "updated_at": "2026-10-08T02:55:51Z"
      },
      {
        "issue": 17915,
        "pr": 17983,
        "issue_currently_open": false,
        "state": "closed",
        "draft": false,
        "merged_at": null,
        "closed_at": "2026-10-08T23:36:36Z",
        "head_sha": "bc6565b3e33ead4e541c20259a444b7080352e08",
        "url": "https://github.com/OpenHands/OpenHands/pull/17983",
        "updated_at": "2026-10-08T23:36:36Z"
      },
      {
        "issue": 17564,
        "pr": 17739,
        "issue_currently_open": true,
        "state": "closed",
        "draft": false,
        "merged_at": null,
        "closed_at": "2026-09-27T20:13:20Z",
        "head_sha": "72d16e536fe1ad28487ac11a210c942a1db49989",
        "url": "https://github.com/OpenHands/OpenHands/pull/17739",
        "updated_at": "2026-09-27T20:13:20Z"
      },
      {
        "issue": 17215,
        "pr": 17255,
        "issue_currently_open": true,
        "state": "closed",
        "draft": false,
        "merged_at": null,
        "closed_at": "2026-09-23T16:41:52Z",
        "head_sha": "2b74344b2fed36f47b30ce0f3d27dfc19387cdc5",
        "url": "https://github.com/OpenHands/OpenHands/pull/17255",
        "updated_at": "2026-09-23T16:41:52Z"
      },
      {
        "issue": 16949,
        "pr": 17023,
        "issue_currently_open": true,
        "state": "closed",
        "draft": false,
        "merged_at": null,
        "closed_at": "2026-08-31T01:35:34Z",
        "head_sha": "6509f0d584ea7702346e6b13599539df1711f305",
        "url": "https://github.com/OpenHands/OpenHands/pull/17023",
        "updated_at": "2026-08-31T01:35:34Z"
      },
      {
        "issue": 16257,
        "pr": 16294,
        "issue_currently_open": true,
        "state": "closed",
        "draft": true,
        "merged_at": null,
        "closed_at": "2026-08-04T16:02:53Z",
        "head_sha": "557781ceb35f5d0ae9c3629ee6f167a26ddfda39",
        "url": "https://github.com/OpenHands/OpenHands/pull/16294",
        "updated_at": "2026-08-04T16:02:53Z"
      },
      {
        "issue": 16107,
        "pr": 16527,
        "issue_currently_open": true,
        "state": "closed",
        "draft": false,
        "merged_at": null,
        "closed_at": "2026-10-01T20:03:28Z",
        "head_sha": "c3c3bb6a2612b6ede72a560aa7a479b2e0d0f4c2",
        "url": "https://github.com/OpenHands/OpenHands/pull/16527",
        "updated_at": "2026-10-01T20:03:28Z"
      },
      {
        "issue": 16107,
        "pr": 16518,
        "issue_currently_open": true,
        "state": "closed",
        "draft": false,
        "merged_at": null,
        "closed_at": "2026-08-11T16:42:15Z",
        "head_sha": "626dd60c2d0bbc09bc601ca82c41f6da66e4b9c4",
        "url": "https://github.com/OpenHands/OpenHands/pull/16518",
        "updated_at": "2026-08-11T16:42:15Z"
      },
      {
        "issue": 14014,
        "pr": 14918,
        "issue_currently_open": true,
        "state": "closed",
        "draft": false,
        "merged_at": null,
        "closed_at": "2026-07-27T15:19:26Z",
        "head_sha": "a890159f52dd45d048f3116bb6b89cd3d966dbd6",
        "url": "https://github.com/OpenHands/OpenHands/pull/14918",
        "updated_at": "2026-07-27T15:19:26Z"
      },
      {
        "issue": 14014,
        "pr": 14488,
        "issue_currently_open": true,
        "state": "closed",
        "draft": false,
        "merged_at": "2026-05-22T16:38:00Z",
        "closed_at": "2026-05-22T16:38:00Z",
        "head_sha": "525b8397b4e1ce7151ee9237cce77bc8c9ad7ef9",
        "url": "https://github.com/OpenHands/OpenHands/pull/14488",
        "updated_at": "2026-05-26T13:50:15Z"
      }
    ]
  }
}
