{
  "issues": [],
  "pulls": [
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/587",
      "id": 3285634002,
      "node_id": "PR_kwDONUSJ787D1svS",
      "number": 587,
      "state": "open",
      "locked": false,
      "title": "feat: Add OSC 52 clipboard support for tmux/SSH clipboard sync",
      "user": {
        "login": "skyam25",
        "id": 1623428,
        "node_id": "MDQ6VXNlcjE2MjM0Mjg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1623428?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/skyam25",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "# Overview\n\nAdd robust OSC 52 clipboard support via `@xterm/addon-clipboard`, enabling clipboard sync from tmux, vim/neovim, and other terminal programs over SSH.\n\n- [x] Added: `RobustClipboardProvider` with deferred writes for browser focus handling\n- [x] Updated: `@xterm/addon-clipboard` from `^0.1.0` to `^0.2.0` (custom provider support)\n- [x] Updated: All 3 terminal components (desktop, mobile, docker console)\n- [x] Updated: Electron preload/main for native clipboard access\n\n# Changes Made\n\n- Created `src/lib/clipboard-provider.ts` — write-only provider that handles browser Clipboard API focus restrictions by deferring writes until the window regains focus, with Electron native clipboard fallback\n- Updated desktop `Terminal.tsx`, mobile `Terminal.tsx`, and docker `ConsoleTerminal.tsx` to use the new provider with proper cleanup on unmount\n- Added `electronClipboard` bridge in Electron preload for reliable clipboard access without browser API restrictions\n- Added clipboard permission handler in Electron main process\n- Bumped `@xterm/addon-clipboard` from `^0.1.0` to `^0.2.0` (required for custom provider support)\n\n# Related Issues\n\n- Closes Termix-SSH/Support#483\n\n# Screenshots / Demos\n\nTested in Chrome (web) with SSH connection through tmux:\n- `printf \"\\033]52;c;$(printf \"%s\" \"hello from osc52\" | base64)\\a\"` → clipboard contains \"hello from osc52\" ✅\n- Same command inside tmux session → clipboard contains \"hello from tmux\" ✅\n- Zero console errors, all CI checks pass (eslint, prettier, tsc, build)\n\n# Checklist\n\n- [x] Code follows project style guidelines\n- [x] Supports mobile and desktop UI/app (if applicable)\n- [x] I have read [Contributing.md](https://github.com/Termix-SSH/Termix/blob/main/CONTRIBUTING.md)\n- [x] This is not a translation request. See [docs](https://docs.termix.site/translations)",
      "created_at": "2026-02-15T00:02:53Z",
      "updated_at": "2026-02-15T00:02:53Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "52a140b63a3ba1e1dce142bc669ec993ab3680ac",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "skyam25:feature/osc52-clipboard",
        "ref": "feature/osc52-clipboard",
        "sha": "2e7184d99009f72d294c9604706ef8b27c72e29a",
        "user": {
          "login": "skyam25",
          "id": 1623428,
          "node_id": "MDQ6VXNlcjE2MjM0Mjg=",
          "avatar_url": "https://avatars.githubusercontent.com/u/1623428?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/skyam25",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1158191497,
          "node_id": "R_kgDORQiZiQ",
          "name": "Termix",
          "full_name": "skyam25/Termix",
          "private": false,
          "owner": {
            "login": "skyam25",
            "id": 1623428,
            "node_id": "MDQ6VXNlcjE2MjM0Mjg=",
            "avatar_url": "https://avatars.githubusercontent.com/u/1623428?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/skyam25",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/skyam25/Termix",
          "created_at": "2026-02-15T00:01:50Z",
          "updated_at": "2026-02-15T00:01:50Z",
          "pushed_at": "2026-02-15T00:02:29Z",
          "homepage": "https://termix.site/",
          "size": 38438,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:main",
        "ref": "main",
        "sha": "ffec17201dad2c2c2889930f35dddd0cdbcd12da",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/587"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/587"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/587"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/587/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/587/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/587/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/2e7184d99009f72d294c9604706ef8b27c72e29a"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        4
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/586",
      "id": 3284259945,
      "node_id": "PR_kwDONUSJ787DwdRp",
      "number": 586,
      "state": "open",
      "locked": false,
      "title": "New Crowdin updates",
      "user": {
        "login": "LukeGus",
        "id": 88517757,
        "node_id": "MDQ6VXNlcjg4NTE3NzU3",
        "avatar_url": "https://avatars.githubusercontent.com/u/88517757?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/LukeGus",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2026-02-14T10:14:02Z",
      "updated_at": "2026-02-14T11:21:37Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "bee31ef1109f6d0e7761df9873e112c82797df65",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "Termix-SSH:i18n_translate",
        "ref": "i18n_translate",
        "sha": "229743dfc13a32a2f18e33551ba53c589a1ee435",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:main",
        "ref": "main",
        "sha": "ffec17201dad2c2c2889930f35dddd0cdbcd12da",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/586"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/586"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/586"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/586/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/586/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/586/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/229743dfc13a32a2f18e33551ba53c589a1ee435"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/585",
      "id": 3284158748,
      "node_id": "PR_kwDONUSJ787DwEkc",
      "number": 585,
      "state": "open",
      "locked": false,
      "title": "feat: add Remember Me option to login page",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\n- Add a \"Remember Me\" checkbox to the login form\n- When checked, browser session expiry extends from 7 days to 30 days (matching desktop/mobile behavior)\n- The `rememberMe` flag flows through the full auth chain: login endpoint → JWT generation → cookie maxAge\n- TOTP flow is also covered: login returns `rememberMe` in response, frontend forwards it to `/totp/verify-login`\n\n## Test plan\n\n- [ ] Login without \"Remember Me\" → session expires in 7 days (default browser behavior)\n- [ ] Login with \"Remember Me\" checked → session expires in 30 days\n- [ ] Login with TOTP + \"Remember Me\" → after TOTP verification, session is 30 days\n- [ ] Checkbox only appears on login tab, not signup or reset\n- [ ] Desktop/mobile apps unaffected (already 30 days)\n- [ ] Close browser and reopen within 30 days → still logged in\n\nFixes Termix-SSH/Support#428",
      "created_at": "2026-02-14T09:17:45Z",
      "updated_at": "2026-02-14T09:17:45Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "8f6174eba33bbc0e2de42522fdea4223b36b5605",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:feat/remember-me",
        "ref": "feat/remember-me",
        "sha": "21abad7380070ba72c47afa3e1df30be3fadedb8",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "9d45211b31226998cfdc1ce32e19c5a6c3ba2417",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/585"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/585"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/585"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/585/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/585/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/585/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/21abad7380070ba72c47afa3e1df30be3fadedb8"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        4
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/584",
      "id": 3284112800,
      "node_id": "PR_kwDONUSJ787Dv5Wg",
      "number": 584,
      "state": "open",
      "locked": false,
      "title": "feat: add 5-panel and 6-panel split screen layouts",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\n- Refactor `renderSplitOverlays` from a hardcoded if-case chain (~280 lines) to a config-driven recursive renderer (~80 lines) using a `SPLIT_LAYOUTS` tree structure\n- Add 5-panel layout (2 top + 3 bottom) and 6-panel layout (3 columns x 2 rows)\n- Raise split tab limit from 4 to 6 in `TabContext.tsx`\n- Extend sidebar split mode UI with 5-Way and 6-Way options\n- Net reduction of 127 lines while adding new functionality\n\n## Test plan\n\n- [ ] 2-panel split: horizontal left/right, ResetButton on right panel — same as before\n- [ ] 3-panel split: 2 top + 1 bottom, ResetButton on top-right — same as before\n- [ ] 4-panel split: 2x2 grid, ResetButton on top-right — same as before\n- [ ] 5-panel split: select 5-Way in sidebar → drag 5 tabs → Apply → 2 top + 3 bottom layout\n- [ ] 6-panel split: select 6-Way in sidebar → drag 6 tabs → Apply → 3x2 grid layout\n- [ ] All panels resizable via drag handles\n- [ ] Terminal fit/resize works correctly in all layouts\n- [ ] ResetButton resets all panel sizes to defaults\n\nFixes Termix-SSH/Support#328",
      "created_at": "2026-02-14T08:53:01Z",
      "updated_at": "2026-02-14T08:53:01Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "8b5b9f9862163b9581af4cc1df4af4f9fcaacbea",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:feat/split-screen-6-panel",
        "ref": "feat/split-screen-6-panel",
        "sha": "3a0aed0a8bc8895567bc12c8217c877a4f8a8366",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "9d45211b31226998cfdc1ce32e19c5a6c3ba2417",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/584"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/584"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/584"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/584/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/584/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/584/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/3a0aed0a8bc8895567bc12c8217c877a4f8a8366"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        3
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/583",
      "id": 3284078690,
      "node_id": "PR_kwDONUSJ787DvxBi",
      "number": 583,
      "state": "open",
      "locked": false,
      "title": "feat: expand environment variables in file manager path bar",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\n- Add a new `/ssh/resolvePath` backend endpoint that expands `$VAR` and `~` via SSH `echo` before directory navigation\n- Add `resolveSSHPath` API function in `main-axios.ts` with silent fallback on failure\n- Intercept paths containing `$` or starting with `~` inside `loadDirectory()`, resolve them, and update the path bar to show the real absolute path\n- Fix `confirmEditingPath` in `FileManagerGrid` to not prefix `~` or `$` paths with `/`\n\n## Test plan\n\n- [ ] Type `$HOME` in path bar → navigates to user home directory, path bar shows `/home/username`\n- [ ] Type `~/projects` → navigates to `$HOME/projects`\n- [ ] Type `/etc` → normal absolute path, no expansion triggered\n- [ ] Type a custom env var like `$GOPATH` → resolves if defined in user's shell\n- [ ] Breadcrumb and sidebar navigation → already absolute paths, expansion not triggered\n- [ ] SSH disconnected → `resolveSSHPath` falls back to raw path, existing error handling takes over\n\nFixes Termix-SSH/Support#362",
      "created_at": "2026-02-14T08:32:34Z",
      "updated_at": "2026-02-14T08:32:34Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "34fa1eba67cfcf7c18b2227fcce06bddbd2a6f39",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:feat/file-manager-env-path",
        "ref": "feat/file-manager-env-path",
        "sha": "f3c275129790c3c864f21fb690599a4c183669b0",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "9d45211b31226998cfdc1ce32e19c5a6c3ba2417",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/583"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/583"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/583"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/583/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/583/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/583/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/f3c275129790c3c864f21fb690599a4c183669b0"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        3
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/582",
      "id": 3283889387,
      "node_id": "PR_kwDONUSJ787DvCzr",
      "number": 582,
      "state": "open",
      "locked": false,
      "title": "feat: add file manager sorting by name, date, and size",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\n- Add a toolbar dropdown button (ArrowUpDown icon) next to the Grid/List toggle for selecting sort field (Name / Date Modified / Size) and order (Ascending / Descending)\n- Add clickable column headers in list view (Name, Modified, Size, Permissions) with arrow indicators for current sort direction\n- Sort preference (field + order) persists to localStorage across sessions\n- Directories-first rule is always preserved regardless of sort selection\n- Extracted `modified` column from the name cell into its own fixed-width column for proper alignment with headers\n\n## Test plan\n\n- [ ] Grid view: click sort button → dropdown shows Name/Date/Size radio + Asc/Desc radio\n- [ ] List view: column headers are visible and clickable, clicking toggles sort\n- [ ] Arrow indicator shows on the currently active sort column with correct direction\n- [ ] Switching between sort fields resets order to ascending\n- [ ] Clicking the same sort field toggles ascending ↔ descending\n- [ ] Directories always appear before files regardless of sort\n- [ ] Refresh page → sort preference is restored from localStorage\n- [ ] Search filter + sort combination works correctly\n\nFixes Termix-SSH/Support#447",
      "created_at": "2026-02-14T06:16:34Z",
      "updated_at": "2026-02-14T06:16:34Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "cfb8718020e0239035b1c0a079352054a35a5590",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:feat/file-manager-sorting",
        "ref": "feat/file-manager-sorting",
        "sha": "4085cb90ff4c3cbdc6138c65a59226531f29ad40",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "9d45211b31226998cfdc1ce32e19c5a6c3ba2417",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/582"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/582"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/582"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/582/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/582/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/582/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/4085cb90ff4c3cbdc6138c65a59226531f29ad40"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        4
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/581",
      "id": 3283851022,
      "node_id": "PR_kwDONUSJ787Du5cO",
      "number": 581,
      "state": "open",
      "locked": false,
      "title": "fix: add Ctrl+Shift+C copy shortcut in terminal",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\n- `Ctrl+Shift+C` was not handled in the terminal's custom key event handler, so users had no keyboard shortcut to copy selected text\n- Add `Ctrl+Shift+C` (Windows/Linux) and `Cmd+C` (macOS) copy support — copies current terminal selection to clipboard\n- Only triggers when text is selected; otherwise falls through to normal terminal input (preserving Ctrl+C for SIGINT)\n\n## Test plan\n\n- [ ] Select text in terminal, press `Ctrl+Shift+C` → text copied to clipboard\n- [ ] No text selected, press `Ctrl+C` → sends SIGINT as before\n- [ ] `Ctrl+V` paste still works\n- [ ] Right-click copy/paste still works\n- [ ] macOS `Cmd+C` copies selected text\n\nFixes Termix-SSH/Support#477",
      "created_at": "2026-02-14T05:45:02Z",
      "updated_at": "2026-02-14T05:45:02Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "d0e1519e615eb7ec3640c3ff8caab219076be52a",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:fix/ctrl-shift-c-copy",
        "ref": "fix/ctrl-shift-c-copy",
        "sha": "9c6b428411327734a5c46ebfb2f3d06318f7411f",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "9d45211b31226998cfdc1ce32e19c5a6c3ba2417",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/581"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/581"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/581"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/581/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/581/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/581/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/9c6b428411327734a5c46ebfb2f3d06318f7411f"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        4
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/580",
      "id": 3283766063,
      "node_id": "PR_kwDONUSJ787Duksv",
      "number": 580,
      "state": "open",
      "locked": false,
      "title": "feat: OIDC user allowlist for registration control",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\n- Add `allowed_users` field to OIDC configuration for restricting which users can register via OIDC providers\n- Support comma-separated patterns: exact emails (`user@example.com`), domain suffixes (`@example.com`), wildcard (`*`), or empty for unrestricted access\n- Check is case-insensitive and matches against both OIDC identifier and userInfo email\n- Existing users and first-user (instance init) bypass the allowlist\n- Blocked users see a \"not authorized\" error on both desktop and mobile\n\n## Test plan\n\n- [ ] `allowed_users` empty → all OIDC users can register (backward compatible)\n- [ ] `allowed_users = \"@company.com\"` → only company.com emails can register\n- [ ] `allowed_users = \"user@gmail.com\"` → only that exact email can register\n- [ ] `allowed_users = \"user@a.com, @b.com\"` → both patterns work together\n- [ ] Already registered OIDC users log in regardless of allowlist\n- [ ] First user (fresh instance) is not blocked by allowlist\n- [ ] Blocked user sees \"not authorized\" toast on desktop\n- [ ] Blocked user sees \"not authorized\" error on mobile\n- [ ] `OIDC_ALLOWED_USERS` env var works for env-based config\n- [ ] Admin UI Textarea saves and loads `allowed_users` correctly\n\nFixes Termix-SSH/Support#23",
      "created_at": "2026-02-14T04:54:49Z",
      "updated_at": "2026-02-14T04:54:49Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "cd2c2a32593ddf74541d8b76c83395f43771428f",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:feat/oidc-user-allowlist",
        "ref": "feat/oidc-user-allowlist",
        "sha": "139e4e7ebe7ee1a1af44f0e17df82a2f8453b3e2",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "9d45211b31226998cfdc1ce32e19c5a6c3ba2417",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/580"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/580"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/580"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/580/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/580/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/580/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/139e4e7ebe7ee1a1af44f0e17df82a2f8453b3e2"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        2
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/579",
      "id": 3283724492,
      "node_id": "PR_kwDONUSJ787DuajM",
      "number": 579,
      "state": "open",
      "locked": false,
      "title": "feat: show terminal title in tab name",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\n- Terminal applications (vim, htop, ssh, etc.) can set the terminal title via OSC escape sequences, but Termix ignored this — tabs always showed the static host name\n- Listen to xterm.js `onTitleChange` event in the Terminal component and propagate the title to the tab via `updateTab()`\n- The tab name now dynamically reflects the running application or shell prompt title (e.g. `vim - file.txt`, `user@host: ~/projects`)\n- When the application exits, the shell resets the title automatically\n\nFixes Termix-SSH/Support#256\n\n## Test plan\n\n- [ ] Open a terminal tab → tab shows host name as before\n- [ ] Run `vim` with `:set title` → tab name changes to vim's title\n- [ ] Exit vim → tab name reverts to shell's title\n- [ ] Run `htop` → tab name updates\n- [ ] Run `echo -ne \"\\033]0;Custom Title\\007\"` → tab name changes to \"Custom Title\"\n- [ ] Multiple terminal tabs → each updates independently\n- [ ] `npx tsc --noEmit` passes",
      "created_at": "2026-02-14T04:30:28Z",
      "updated_at": "2026-02-14T04:30:28Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "f89066db4af1cbec69bcec0a6918152f36f8b4ab",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:feat/terminal-title-in-tab",
        "ref": "feat/terminal-title-in-tab",
        "sha": "ce8d2edb61550517ed7764194fd1f1be7423a80a",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "9d45211b31226998cfdc1ce32e19c5a6c3ba2417",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/579"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/579"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/579"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/579/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/579/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/579/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/ce8d2edb61550517ed7764194fd1f1be7423a80a"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        2
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/578",
      "id": 3283694330,
      "node_id": "PR_kwDONUSJ787DuTL6",
      "number": 578,
      "state": "open",
      "locked": false,
      "title": "fix: allow OIDC JIT user creation when registration is disabled",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\n- The `allow_registration` setting blocked both password sign-ups and OIDC first-login (JIT provisioning), forcing admins to keep public registration open just to onboard SSO users\n- OIDC users are already authenticated by a trusted IdP explicitly configured by the admin — they should not be subject to the local registration toggle\n- Removed the `allow_registration` check from the OIDC callback handler; the setting now only controls password-based public sign-ups\n- This aligns with industry standard behavior (Authentik, Keycloak, Okta all expect JIT provisioning independent of local registration)\n\nFixes Termix-SSH/Support#492\n\n## Test plan\n\n- [ ] Disable \"Allow new account registration\" in admin settings\n- [ ] Attempt password-based sign-up → blocked (unchanged)\n- [ ] Authenticate via configured OIDC provider as a new user → account created successfully\n- [ ] Existing OIDC users can still log in normally\n- [ ] First-ever user via OIDC still gets admin privileges\n- [ ] `npx tsc --noEmit` passes",
      "created_at": "2026-02-14T04:15:37Z",
      "updated_at": "2026-02-14T11:09:50Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "17446c022f1627f8adbd10edd9c0cf0c0c3853d1",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:fix/oidc-jit-bypass-registration",
        "ref": "fix/oidc-jit-bypass-registration",
        "sha": "d48b7d1bc6b7b368110ef67e93f6897d4aab902a",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "9d45211b31226998cfdc1ce32e19c5a6c3ba2417",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/578"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/578"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/578"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/578/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/578/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/578/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/d48b7d1bc6b7b368110ef67e93f6897d4aab902a"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        4
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/577",
      "id": 3283634201,
      "node_id": "PR_kwDONUSJ787DuEgZ",
      "number": 577,
      "state": "open",
      "locked": false,
      "title": "fix: OIDC redirect_uri incorrectly resolves to localhost",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\n- OIDC login from desktop/mobile apps failed because the `redirect_uri` was hardcoded to `http://localhost:30001` when the request `Origin` header contained \"localhost\"\n- Desktop/mobile apps connect to a remote server but their `Origin` header is their local address (e.g. `http://localhost:5173`), triggering the localhost override\n- Replaced `Origin`/`Referer`-based origin detection with `req.protocol` + `req.get(\"Host\")`, which correctly resolves to the server's own address\n- `trust proxy` is already enabled, so this works behind reverse proxies (X-Forwarded-Proto/Host)\n\nFixes Termix-SSH/Support#308\n\n## Test plan\n\n- [ ] OIDC login from web browser (direct) → redirect_uri uses correct domain\n- [ ] OIDC login from web browser (behind reverse proxy) → redirect_uri uses proxy domain\n- [ ] OIDC login from desktop app (Electron) connecting to remote server → redirect_uri uses server domain, not localhost\n- [ ] OIDC login in local dev mode → redirect_uri is `http://localhost:30001/users/oidc/callback`\n- [ ] Google OAuth, Authentik, PocketID (one-time code) all redirect correctly\n- [ ] `npx tsc --noEmit` passes",
      "created_at": "2026-02-14T03:52:04Z",
      "updated_at": "2026-02-14T03:52:04Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "d3b3be91f83efa992d005f3b102706ce524f5b5a",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:fix/oidc-redirect-uri",
        "ref": "fix/oidc-redirect-uri",
        "sha": "6808cc6cfde6a5c2575de13757d9021dc3ada148",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "9d45211b31226998cfdc1ce32e19c5a6c3ba2417",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/577"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/577"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/577"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/577/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/577/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/577/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/6808cc6cfde6a5c2575de13757d9021dc3ada148"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        3
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/576",
      "id": 3283605944,
      "node_id": "PR_kwDONUSJ787Dt9m4",
      "number": 576,
      "state": "open",
      "locked": false,
      "title": "fix: unable to delete OIDC user account",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\n- Deleting an OIDC user via admin panel failed with \"User has associated data that cannot be removed\" (`SQLITE_CONSTRAINT_FOREIGNKEY`)\n- Root cause: `deleteUserAndRelatedData()` was missing cleanup for 3 tables that have userId foreign keys: `networkTopology`, `dashboardPreferences`, `opksshTokens`\n- Added explicit DELETE statements for these tables before deleting the user row\n\nFixes Termix-SSH/Support#347\n\n## Test plan\n\n- [ ] Register a new OIDC account, log out, then delete it as admin → succeeds\n- [ ] Delete a regular (password) user as admin → still works\n- [ ] Delete an OIDC user who has dashboard preferences / network topology data → succeeds\n- [ ] `npx tsc --noEmit` passes",
      "created_at": "2026-02-14T03:44:50Z",
      "updated_at": "2026-02-14T03:44:50Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "bc29542589dc7dc35a6173ca9c24f491a8deec08",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:fix/delete-oidc-user",
        "ref": "fix/delete-oidc-user",
        "sha": "d17be1fa1c8ca5034817c46c2f75ebd96bfb6d47",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "9d45211b31226998cfdc1ce32e19c5a6c3ba2417",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/576"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/576"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/576"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/576/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/576/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/576/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/d17be1fa1c8ca5034817c46c2f75ebd96bfb6d47"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        3
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/575",
      "id": 3283567374,
      "node_id": "PR_kwDONUSJ787Dt0MO",
      "number": 575,
      "state": "open",
      "locked": false,
      "title": "fix: allow OIDC users to export database",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\n- OIDC users have no password, but the database export endpoint unconditionally required password authentication, blocking all OIDC-only users from exporting\n- Backend: reuse the same OIDC authentication branch pattern from the import endpoint — skip password for OIDC users, call `authenticateOIDCUser` instead\n- Frontend: add `requiresExportPassword` flag to skip password input UI for OIDC users, matching existing import behavior\n\nFixes Termix-SSH/Support#294\n\n## Test plan\n\n- [ ] OIDC-only user → Admin → Database export → no password prompt, export succeeds\n- [ ] Password user → Database export → password prompt shown, existing flow unchanged\n- [ ] Dual-auth user (password + OIDC) → Database export → no password prompt (consistent with import)\n- [ ] Exported `.sqlite` file contains complete data (SSH hosts, credentials, etc.)\n- [ ] `npx tsc --noEmit` passes",
      "created_at": "2026-02-14T03:31:49Z",
      "updated_at": "2026-02-14T03:31:49Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "4dbf31b58496aac06b09b8975df4583f5dec923c",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:fix/oidc-database-export",
        "ref": "fix/oidc-database-export",
        "sha": "1d9727b9bf8bb345e9225a8a1d0dec98c2cf4d9b",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "9d45211b31226998cfdc1ce32e19c5a6c3ba2417",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/575"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/575"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/575"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/575/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/575/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/575/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/1d9727b9bf8bb345e9225a8a1d0dec98c2cf4d9b"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        2
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/574",
      "id": 3283535908,
      "node_id": "PR_kwDONUSJ787Dtsgk",
      "number": 574,
      "state": "open",
      "locked": false,
      "title": "fix: keep terminal tab open when connection fails",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\n- Terminal tab auto-closes immediately when SSH connection fails, leaving no error message visible to the user\n- Root cause: the `disconnected` message handler calls `onClose()` when `connectionErrorRef` is null, which happens when the backend SSH `close` event fires without a prior `error` event (e.g., server cleanly rejects the connection)\n- Added `wasConnectedRef` to track whether the SSH connection was ever established\n- Now only auto-closes tab on disconnect if session was previously connected\n- If connection was never established and no error was set, shows an error message in the ConnectionLog instead of closing the tab\n\n## Test plan\n\n- [ ] Add a host with an unreachable IP (e.g., `127.0.1.1`) and open terminal → tab stays open, error message shown\n- [ ] Add a host with wrong port and open terminal → tab stays open with error\n- [ ] Add a host with wrong credentials and open terminal → tab stays open with auth error\n- [ ] Connect to a valid host, then stop the SSH server → tab auto-closes normally (existing behavior preserved)\n- [ ] Verify reconnection logic still works after a previously successful connection\n\nFixes Termix-SSH/Support#454",
      "created_at": "2026-02-14T03:15:19Z",
      "updated_at": "2026-02-14T03:15:19Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "3c8fb1d455c15e2c312ddc853aed5cb2cba05f35",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:fix/terminal-tab-close-on-error",
        "ref": "fix/terminal-tab-close-on-error",
        "sha": "d8d0c89b8a5dff347c025c1892935582bdefa46b",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "9d45211b31226998cfdc1ce32e19c5a6c3ba2417",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/574"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/574"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/574"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/574/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/574/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/574/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/d8d0c89b8a5dff347c025c1892935582bdefa46b"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        4
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/573",
      "id": 3283515115,
      "node_id": "PR_kwDONUSJ787Dtnbr",
      "number": 573,
      "state": "open",
      "locked": false,
      "title": "fix: add missing clipboard shortcuts for terminal",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\n- Add `Ctrl+Shift+C` and `Ctrl+Insert` shortcuts to copy terminal selection to clipboard\n- Add `Shift+Insert` shortcut to paste from clipboard\n- Add `Ctrl+V` / `Cmd+V` paste support to Docker Console (was completely missing)\n- Both SSH Terminal and Docker Console now have consistent clipboard shortcuts\n\n## Test plan\n\n- [ ] Open SSH terminal, select text, press `Ctrl+Shift+C` → text copied to clipboard\n- [ ] Open SSH terminal, press `Shift+Insert` → clipboard content pasted\n- [ ] Open SSH terminal, select text, press `Ctrl+Insert` → text copied\n- [ ] Open Docker Console, press `Ctrl+V` → clipboard content pasted\n- [ ] Open Docker Console, verify same `Ctrl+Shift+C` / `Ctrl+Insert` / `Shift+Insert` shortcuts work\n- [ ] Verify `Ctrl+C` without selection still sends SIGINT (not intercepted)\n- [ ] Verify `Ctrl+Shift+C` without selection does nothing (falls through to xterm.js)\n\nFixes Termix-SSH/Support#243",
      "created_at": "2026-02-14T03:03:20Z",
      "updated_at": "2026-02-14T03:12:15Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "7eb00a0e4e6cec67c6c2d6cd931a9938054f8f00",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:fix/terminal-clipboard",
        "ref": "fix/terminal-clipboard",
        "sha": "c8de647f3a83c14654462a16c846de04b47ec9f0",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "9d45211b31226998cfdc1ce32e19c5a6c3ba2417",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/573"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/573"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/573"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/573/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/573/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/573/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/c8de647f3a83c14654462a16c846de04b47ec9f0"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        2
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/572",
      "id": 3283471173,
      "node_id": "PR_kwDONUSJ787DtctF",
      "number": 572,
      "state": "open",
      "locked": false,
      "title": "fix: add server-side WebSocket ping to prevent proxy timeouts",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n- Users behind reverse proxies (Cloudflare, Nginx Proxy Manager) experience random page reloads and terminal disconnects when the browser tab is backgrounded\n- Root cause: the existing keepalive uses application-level JSON ping via `setInterval(30s)`, which gets **throttled by browsers when the tab is in the background** (Chrome throttles to 1min+, sometimes pauses entirely)\n- When pings stop, the proxy chain drops the idle WebSocket: Cloudflare at 100s, Nginx Proxy Manager at 60s\n- Fix: add **WebSocket protocol-level ping** (`ws.ping()`) every 30s on the server side for both terminal and Docker console WebSocket servers\n- Protocol-level pings are handled by the browser's native WebSocket implementation, completely unaffected by JavaScript timer throttling\n\n## Changed files\n- `src/backend/ssh/terminal.ts` — add `ws.ping()` interval + cleanup on close\n- `src/backend/ssh/docker-console.ts` — same\n\n## Test plan\n- [ ] Open a terminal session behind a reverse proxy\n- [ ] Switch to another tab/app for 2+ minutes\n- [ ] Switch back — terminal should still be connected\n- [ ] Docker console should also remain connected when backgrounded\n\nFixes Termix-SSH/Support#490",
      "created_at": "2026-02-14T02:38:12Z",
      "updated_at": "2026-02-14T02:38:12Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "87fc78e995a2a95be02691796fc5d8ff2fae1fb7",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:fix/ws-keepalive",
        "ref": "fix/ws-keepalive",
        "sha": "e9c8d066bc434d9543f672f43299f5d72b0ecc9b",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "9d45211b31226998cfdc1ce32e19c5a6c3ba2417",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/572"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/572"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/572"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/572/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/572/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/572/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/e9c8d066bc434d9543f672f43299f5d72b0ecc9b"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        4
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/571",
      "id": 3283458750,
      "node_id": "PR_kwDONUSJ787DtZq-",
      "number": 571,
      "state": "open",
      "locked": false,
      "title": "fix: prevent restart loop when PUID/PGID is set to 0",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n- Container enters an infinite restart loop when `PUID=0` / `PGID=0` is set in Docker environment\n- Root cause: `usermod -o -u 0 node` sets the `node` user's UID to 0, then `exec gosu node:node \"$0\"` re-executes the entrypoint — but since `node` is now UID 0, the `id -u` check passes again → infinite loop\n- Fix: when `PUID=0`, skip the `gosu` step entirely since the process is already running as root\n\n## Test plan\n- [ ] `PUID=0 PGID=0` → container starts normally, runs as root\n- [ ] `PUID=1000 PGID=1000` → existing behavior unchanged, runs as node user\n- [ ] No PUID/PGID set → defaults to 1000:1000, runs as node user\n\nFixes Termix-SSH/Support#493",
      "created_at": "2026-02-14T02:30:31Z",
      "updated_at": "2026-02-14T02:30:31Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "5f6a40c3ae694010cb72c8fd29354730a4bbf4fe",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:fix/puid-zero-loop",
        "ref": "fix/puid-zero-loop",
        "sha": "9b7507b9d539989ba193a80b11ae3d6820963e82",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "9d45211b31226998cfdc1ce32e19c5a6c3ba2417",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/571"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/571"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/571"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/571/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/571/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/571/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/9b7507b9d539989ba193a80b11ae3d6820963e82"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        4
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/570",
      "id": 3283398499,
      "node_id": "PR_kwDONUSJ787DtK9j",
      "number": 570,
      "state": "open",
      "locked": false,
      "title": "fix: resolve all ESLint errors and CI build OOM",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\nCI has been failing on every PR due to two issues:\n\n### 1. ESLint errors (579 pre-existing violations)\n- **Config changes** (`eslint.config.js`):\n  - Downgrade mass legacy violations to warnings: `no-unused-vars` (452), `no-explicit-any` (310), `no-empty` (96), `no-unused-expressions` (1)\n  - Turn off `no-control-regex` — terminal app legitimately uses control characters\n  - Add `react-refresh/only-export-components` as warning\n  - Ignore `dist/`, `release/`, `Mobile/` directories\n- **Auto-fixed** (13 errors): `prefer-const`, `no-extra-boolean-cast`\n- **Manually fixed** (5 real bugs):\n  - `server-stats.ts`: async promise executor → extracted awaits out of executor\n  - `HostTerminalTab.tsx`: `useState` called inside render callback → moved to component body\n  - `HostManagerEditor.tsx`: duplicate else-if branch → removed dead code\n  - `DockerManager.tsx`: `true && expr` → simplified to `expr`\n  - `LeftSidebar.tsx`: lexical declarations in case block → wrapped in braces\n- **Prettier**: ran `--write` on all files with formatting drift\n\n### 2. Build OOM (exit code 134)\n- `vite build` runs out of memory bundling 4317 modules on the 2vCPU runner\n- Added `NODE_OPTIONS: \"--max-old-space-size=4096\"` to the workflow env\n\n## Result\n- **Before**: 579 ESLint errors + build OOM → CI always fails\n- **After**: 0 errors, ~620 warnings, 4GB heap → CI should pass\n\n## Test plan\n- [ ] PR Check workflow passes (ESLint, Prettier, tsc, build)\n- [ ] No behavioral changes — only lint config + formatting + minor bug fixes + CI config",
      "created_at": "2026-02-14T01:50:00Z",
      "updated_at": "2026-02-14T01:50:00Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "ca5ef8ec193eb80a4f9ce93d684a0c95bb6e7629",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:fix/eslint-ci",
        "ref": "fix/eslint-ci",
        "sha": "a746f06208d7ff49ffcac51b79cbaa6829fe9781",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "9d45211b31226998cfdc1ce32e19c5a6c3ba2417",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/570"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/570"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/570"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/570/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/570/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/570/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/a746f06208d7ff49ffcac51b79cbaa6829fe9781"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/569",
      "id": 3281017628,
      "node_id": "PR_kwDONUSJ787DkFsc",
      "number": 569,
      "state": "open",
      "locked": false,
      "title": "feat: add README translations for 12 additional languages",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n- Add translated README files for 12 languages: Japanese, Korean, French, German, Spanish, Portuguese (BR), Russian, Arabic, Hindi, Turkish, Vietnamese, and Italian\n- Update language navigation bar in all README files (including existing English and Chinese) with flag icons linking to each translation\n- Total coverage: 14 languages matching the project's i18n locale support\n\n## New files\n`README-JA.md` `README-KO.md` `README-FR.md` `README-DE.md` `README-ES.md` `README-PT.md` `README-RU.md` `README-AR.md` `README-HI.md` `README-TR.md` `README-VI.md` `README-IT.md`\n\n## Modified files\n- `README.md` — updated language navigation bar\n- `README-CN.md` — updated language navigation bar\n\n## Test plan\n- [ ] Verify all language links in navigation bar resolve correctly\n- [ ] Spot-check translations for accuracy in a few languages\n- [ ] Confirm flag icons render properly on GitHub",
      "created_at": "2026-02-13T13:57:12Z",
      "updated_at": "2026-02-13T13:57:12Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "e8ef05170510214d789b560f400d1eaaf9aa2f13",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:feat/readme-i18n",
        "ref": "feat/readme-i18n",
        "sha": "067b0df7eae9f4e7d455795820e6629f82310055",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "9d45211b31226998cfdc1ce32e19c5a6c3ba2417",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/569"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/569"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/569"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/569/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/569/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/569/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/067b0df7eae9f4e7d455795820e6629f82310055"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/564",
      "id": 3276482834,
      "node_id": "PR_kwDONUSJ787DSykS",
      "number": 564,
      "state": "open",
      "locked": false,
      "title": "fix: catch disconnected client error in listFiles fallback",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n- When SFTP `listFiles` times out (\"No response from server\"), the fallback calls `client.exec()` on an already-disconnected SSH client\n- `client.exec()` throws \"Not connected\" synchronously, which was not caught, causing an uncaught exception that crashes the entire backend process\n- Wrap both `tryFallbackMethod` and `tryWithSudo` in `listFiles` with try-catch to gracefully return a 500 error instead of crashing\n\n## Root cause\nThe SFTP channel timeout doesn't immediately update `sshConn.isConnected`, so the guard check at the top of the endpoint passes. But by the time the fallback runs `client.exec()`, the underlying socket is already destroyed.\n\n## Test plan\n- [ ] Connect to a host with high latency or restricted network\n- [ ] Open file manager → wait for SFTP timeout\n- [ ] Hit refresh → should get a 500 error response, NOT a backend crash\n- [ ] Backend process remains running after the error\n\nFixes Termix-SSH/Support#451",
      "created_at": "2026-02-12T14:19:56Z",
      "updated_at": "2026-02-12T14:19:56Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:fix/sftp-fallback-crash",
        "ref": "fix/sftp-fallback-crash",
        "sha": "1de6bfcdd3c875d3e57ecfd9ee2c4f0b7a460f02",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:main",
        "ref": "main",
        "sha": "726156a7349cf8127f4238e64cdab761d8b41d7b",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/564"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/564"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/564"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/564/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/564/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/564/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/1de6bfcdd3c875d3e57ecfd9ee2c4f0b7a460f02"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        4
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/563",
      "id": 3276412351,
      "node_id": "PR_kwDONUSJ787DShW_",
      "number": 563,
      "state": "open",
      "locked": false,
      "title": "fix: forward Shift+Tab as backtab escape sequence",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n- Explicitly handle Shift+Tab in the terminal's custom key event handler\n- Send `\\x1b[Z` (CSI Z / backtab) directly via WebSocket, with `preventDefault()` + `stopPropagation()` to prevent browser/WebView focus navigation from consuming the keystroke\n- Same pattern as existing plain Tab handling — xterm.js does generate `\\x1b[Z` internally, but in native app WebView contexts the keystroke may be intercepted before xterm.js processes it\n\nCloses Termix-SSH/Support#355",
      "created_at": "2026-02-12T14:02:44Z",
      "updated_at": "2026-02-12T14:02:44Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:fix/shift-tab-passthrough",
        "ref": "fix/shift-tab-passthrough",
        "sha": "da584a1206fd327e1192239a4320b20384d2573b",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:main",
        "ref": "main",
        "sha": "726156a7349cf8127f4238e64cdab761d8b41d7b",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/563"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/563"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/563"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/563/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/563/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/563/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/da584a1206fd327e1192239a4320b20384d2573b"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        3
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/562",
      "id": 3276384740,
      "node_id": "PR_kwDONUSJ787DSank",
      "number": 562,
      "state": "open",
      "locked": false,
      "title": "fix: handle DEC private mode sequences in syntax highlighter",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n- Extend CSI parameter byte matching in `parseAnsiSegments` and `hasIncompleteAnsiSequence` to include `?`, `>`, `=`, `!` per ECMA-48 standard\n- Previously DEC private mode sequences like `\\x1b[?1h` (application cursor mode) and `\\x1b[?25l` (hide cursor) were not recognized as ANSI segments and fell through to plain text highlighting\n\nRelates to Termix-SSH/Support#297",
      "created_at": "2026-02-12T13:55:22Z",
      "updated_at": "2026-02-13T04:24:45Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "761aa4bda692fb86eb682d1dd9badcf75f673beb",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:fix/syntax-highlighter-regex",
        "ref": "fix/syntax-highlighter-regex",
        "sha": "f088cc8b2b1a6f4f39845232a1bc6ac9ae291e23",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "9d45211b31226998cfdc1ce32e19c5a6c3ba2417",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/562"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/562"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/562"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/562/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/562/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/562/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/f088cc8b2b1a6f4f39845232a1bc6ac9ae291e23"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        2
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/561",
      "id": 3276334996,
      "node_id": "PR_kwDONUSJ787DSOeU",
      "number": 561,
      "state": "open",
      "locked": false,
      "title": "fix: disable font ligatures in terminal by default",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n- Disable font ligatures (`liga`, `calt`) and set `font-variant-ligatures: none` in both desktop and mobile terminal CSS\n- Nerd Fonts ligatures cause `!=` to render as `≠`, `<=` as `≤`, `=>` as `⇒`, etc., which is confusing in terminal context\n- Most terminal emulators (PuTTY, iTerm2, Windows Terminal) disable ligatures by default\n\nCloses Termix-SSH/Support#268",
      "created_at": "2026-02-12T13:43:38Z",
      "updated_at": "2026-02-12T15:29:45Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "599c21f2e9a98b85d4d90c8d85377283e238f28c",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:fix/disable-font-ligatures",
        "ref": "fix/disable-font-ligatures",
        "sha": "c5163269357774a7fcc4613978e0877ef0c7bd8c",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "fb1360193f008817491e59e88d5e77708db35442",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/561"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/561"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/561"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/561/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/561/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/561/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/c5163269357774a7fcc4613978e0877ef0c7bd8c"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        2
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/560",
      "id": 3276316984,
      "node_id": "PR_kwDONUSJ787DSKE4",
      "number": 560,
      "state": "open",
      "locked": false,
      "title": "fix: bypass ls alias in file manager fallback",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n- Add `--color=never` to `command ls` in SFTP fallback path to prevent color escape codes from corrupting output parsing\n- Use `/bin/ls` absolute path in sudo fallback to completely bypass alias / shell function / PATH wrapper\n\nCloses Termix-SSH/Support#235",
      "created_at": "2026-02-12T13:38:56Z",
      "updated_at": "2026-02-12T13:38:56Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:fix/ls-alias-bypass",
        "ref": "fix/ls-alias-bypass",
        "sha": "fef5bdad62129dbf75a9aa3cdc1b7926e2e54be5",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:main",
        "ref": "main",
        "sha": "726156a7349cf8127f4238e64cdab761d8b41d7b",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/560"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/560"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/560"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/560/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/560/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/560/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/fef5bdad62129dbf75a9aa3cdc1b7926e2e54be5"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        2
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/559",
      "id": 3276204670,
      "node_id": "PR_kwDONUSJ787DRup-",
      "number": 559,
      "state": "open",
      "locked": false,
      "title": "feat: add overwrite option for JSON host import",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\nFixes Termix-SSH/Support#201\n\n- JSON bulk import (`/ssh/bulk-import`) now accepts an `overwrite` boolean parameter\n- When `overwrite=true`, existing hosts matching by `ip:port:username` are updated instead of duplicated\n- \"Import JSON\" button is now a dropdown with two options: **skip existing** (original behavior) and **overwrite existing** (new)\n- Response now includes `created`, `updated`, `skipped`, `failed` counts\n\n## Changes\n\n- `src/backend/database/routes/ssh.ts`: add overwrite logic — fetch & decrypt user's existing hosts into a lookup map, update matching hosts via `SimpleDBOps.update`\n- `src/ui/main-axios.ts`: `bulkImportSSHHosts` accepts optional `overwrite` param\n- `src/ui/desktop/apps/host-manager/hosts/HostManagerViewer.tsx`: replace single import button with dropdown menu (skip / overwrite)\n- `src/locales/en.json`: add i18n keys for new UI strings\n\n## Why not match by name+folder?\n\nThe issue requested matching by name. We match by `ip:port:username` instead because that's the connection identity — two hosts can share a name but connect to different servers. This is consistent with the SQLite import dedup logic.",
      "created_at": "2026-02-12T13:13:03Z",
      "updated_at": "2026-02-12T13:13:03Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:feat/import-overwrite",
        "ref": "feat/import-overwrite",
        "sha": "bd4597bf0a6fb4e55c8e6323a19795afed4bfb9b",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:main",
        "ref": "main",
        "sha": "726156a7349cf8127f4238e64cdab761d8b41d7b",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/559"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/559"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/559"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/559/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/559/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/559/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/bd4597bf0a6fb4e55c8e6323a19795afed4bfb9b"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        2
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/558",
      "id": 3276162370,
      "node_id": "PR_kwDONUSJ787DRkVC",
      "number": 558,
      "state": "open",
      "locked": false,
      "title": "fix: use lightweight wget for Docker healthcheck",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n\nFixes Termix-SSH/Support#33\n\n- Replace `node -e` healthcheck with `wget` — avoids spawning a full Node.js process (~50MB RSS) every 30s just to check health\n- Increase `start-period` from 30s to 60s — gives slower machines enough time to complete backend initialization before Docker starts counting failures\n- Add `wget` to final stage apt-get install\n\n## Changes\n\n- `docker/Dockerfile`: add `wget` to runtime dependencies, replace HEALTHCHECK command, increase start-period\n\n## Root cause\n\nThe original healthcheck uses `node -e \"require('http').get(...)\"` which spawns an entire Node.js runtime for each check. On resource-constrained hosts, this is heavyweight and can itself cause instability. Additionally, `start-period=30s` may not be enough for the backend to fully initialize (crypto setup → DB → all service modules), causing false \"unhealthy\" status during startup.",
      "created_at": "2026-02-12T13:02:19Z",
      "updated_at": "2026-02-12T13:02:19Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:fix/docker-healthcheck",
        "ref": "fix/docker-healthcheck",
        "sha": "b3bf5428752401cfe796684b34a93cb424e50b1d",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:main",
        "ref": "main",
        "sha": "726156a7349cf8127f4238e64cdab761d8b41d7b",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/558"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/558"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/558"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/558/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/558/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/558/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/b3bf5428752401cfe796684b34a93cb424e50b1d"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        3
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/557",
      "id": 3276110941,
      "node_id": "PR_kwDONUSJ787DRXxd",
      "number": 557,
      "state": "open",
      "locked": false,
      "title": "fix: status check tcpPing causing kex_exchange_identification flood in sshd logs",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n- Fix `tcpPing` to complete SSH identification exchange before closing, preventing `kex_exchange_identification` errors in remote sshd logs\n- Increase default `statusCheckInterval` from 30s to 60s\n\nFixes: Termix-SSH/Support#136\n\n## Problem\nStatus monitoring's `tcpPing` connects a raw TCP socket to port 22, and immediately calls `socket.destroy()` on connect. The SSH daemon starts sending its version banner and expects the client to respond with its own identification string — but the socket is already destroyed. This causes sshd to log:\n\n```\nerror: kex_exchange_identification: Connection closed by remote host\n```\n\nWith the default 30-second interval and multiple hosts, this floods remote server logs. Reported as regression in v1.9.0.\n\n## Root cause\n```typescript\n// Before: connect → destroy immediately → sshd logs kex error\nsocket.once(\"connect\", () => onDone(true));  // onDone calls socket.destroy()\n```\n\nThe SSH protocol requires both sides to exchange identification strings before proceeding to key exchange. Destroying the socket before this exchange completes triggers the `kex_exchange_identification` error.\n\n## Fix\n```typescript\n// After: connect → read server banner → send our identification → close gracefully\nsocket.once(\"connect\", () => {\n  socket.once(\"data\", (data) => {\n    if (data.toString().startsWith(\"SSH-\")) {\n      socket.end(\"SSH-2.0-TermixHealthCheck\\r\\n\");\n    }\n    // ...\n  });\n});\n```\n\n1. Wait for the server's SSH banner\n2. Send a proper client identification string (`SSH-2.0-TermixHealthCheck`)\n3. Close gracefully with `socket.end()` (FIN) instead of `socket.destroy()` (RST)\n4. Fallback destroy after 200ms for cleanup\n\nThis completes the identification phase cleanly. The server sees a normal disconnect rather than a broken key exchange.\n\n## Test plan\n- [ ] `npx tsc --noEmit` passes\n- [ ] Enable Status Monitoring for a host, monitor sshd logs → no `kex_exchange_identification` errors\n- [ ] Host goes offline → status correctly shows offline\n- [ ] Non-SSH service on monitored port → still detected as online\n- [ ] Verify reduced log noise on remote servers with multiple monitored hosts",
      "created_at": "2026-02-12T12:49:28Z",
      "updated_at": "2026-02-12T12:49:28Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:fix/tcp-ping-kex-flood",
        "ref": "fix/tcp-ping-kex-flood",
        "sha": "bd400ad7daf3370643122296c84fe51feaf03a18",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:main",
        "ref": "main",
        "sha": "726156a7349cf8127f4238e64cdab761d8b41d7b",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/557"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/557"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/557"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/557/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/557/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/557/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/bd400ad7daf3370643122296c84fe51feaf03a18"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        1
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/556",
      "id": 3276070421,
      "node_id": "PR_kwDONUSJ787DRN4V",
      "number": 556,
      "state": "open",
      "locked": false,
      "title": "fix: SSH session leak — SFTP channel reuse + shared connection pool",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n- Cache SFTP channel per session in file-manager, reuse across all SFTP operations instead of opening a new channel per click\n- Extract `SSHConnectionPool` from `server-stats.ts` into shared `ssh-connection-pool.ts` module with factory-based API\n- Migrate `server-stats` and `tunnel.killRemoteTunnelByMarker` to shared pool\n- Refactor tunnel kill logic from nested callbacks to async/await\n\nFixes: Termix-SSH/Support#485\n\n## Problem\nFile manager opens a new SFTP channel (`client.sftp()`) on every directory click and closes it after each operation (`sftp.end()`). When users click rapidly, multiple channels open concurrently on the same TCP connection, hitting the SSH server's `MaxSessions` limit (default 10, often configured to 5). Additionally, each module (file-manager, server-stats, docker, tunnel) maintains independent SSH connections to the same host.\n\n## Changes\n\n### `src/backend/ssh/ssh-connection-pool.ts` (new)\n- Shared `SSHConnectionPool` with factory pattern: `getConnection(key, factory)` / `releaseConnection(key, client)`\n- `withConnection(key, factory, fn)` helper for borrow→execute→release\n- Health checks, 2min cleanup interval, 10min idle expiry, max 3 connections per host\n- Auto-remove on `end`/`close` events\n\n### `src/backend/ssh/file-manager.ts`\n- Add `sftp` field to `SSHSession`, add `getSessionSftp()` helper that caches/reuses the SFTP channel\n- Replace all 4 `client.sftp()` call sites (listFiles, writeFile, uploadFile, downloadFile) with `getSessionSftp()`\n- Remove all `sftp.end()` calls — channel lifecycle now follows session\n- SFTP channel auto-rebuilds on error/close events\n- `cleanupSession()` properly closes cached SFTP channel\n\n### `src/backend/ssh/server-stats.ts`\n- Delete inline `SSHConnectionPool` class (~350 lines) and `PooledConnection` interface\n- Import shared `connectionPool` + `withConnection`\n- Add `getPoolKey()` and `createSshFactory()` adapters\n- `withSshConnection` now delegates to shared pool\n\n### `src/backend/ssh/tunnel.ts`\n- `killRemoteTunnelByMarker`: replace `new Client()` + callback hell with `withConnection()` + async/await\n- Connection reused from shared pool when available\n\n## Test plan\n- [ ] `npx tsc --noEmit` passes (verified)\n- [ ] Set target host `MaxSessions 5`, open Terminal + File Manager + Server Stats simultaneously → no errors\n- [ ] Rapidly click directories in File Manager → all listings return correctly, no channel exhaustion\n- [ ] File Manager idle timeout → session cleanup releases SFTP channel\n- [ ] Server Stats continues polling normally after pool migration\n- [ ] Stop a remote tunnel → `killRemoteTunnelByMarker` works with pooled connection",
      "created_at": "2026-02-12T12:39:46Z",
      "updated_at": "2026-02-12T12:39:46Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:fix/ssh-session-reuse",
        "ref": "fix/ssh-session-reuse",
        "sha": "c94a8e23af07219f33b122c7b836413dde8c5b23",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:main",
        "ref": "main",
        "sha": "726156a7349cf8127f4238e64cdab761d8b41d7b",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/556"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/556"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/556"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/556/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/556/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/556/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/c94a8e23af07219f33b122c7b836413dde8c5b23"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        4
      ]
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/546",
      "id": 3258721988,
      "node_id": "PR_kwDONUSJ787CPCbE",
      "number": 546,
      "state": "open",
      "locked": false,
      "title": "Chore/vuln scanning",
      "user": {
        "login": "muchasxmaracas",
        "id": 99442216,
        "node_id": "U_kgDOBe1eKA",
        "avatar_url": "https://avatars.githubusercontent.com/u/99442216?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/muchasxmaracas",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "# Overview\r\n\r\n- [ ✅ ] Added: \r\n- Trivy dependency vulnerability scan -> `.github/workflows/sec-check.yml`\r\n\r\n- [ ✅] Updated: \r\n- `eslint.config.js` to align local linting with linting in CI job\r\n- Updated all npm dependencies and pinned two transient dependencies with HIGH + MEDIUM vulnerabilities\r\n\r\n- [ ✅] Fixed:\r\n-  PR Check job\r\n\r\n# Changes Made\r\n\r\n- Added a pipeline job to scan for vulnerabilities in npm dependencies -> it is now being executed on pull request and push to main\r\n- PR Check CI job was essentially useless (local linting was fine but CI job crashed): the logic and the inclusions/exclusions in the linter config had to be updated a bit\r\n- Linting exclusions are handled in config instead of comments in code\r\n- Linting locally is now aligned with linting in the pipeline\r\n- [State in HostTerminalTab was moved to top level](https://github.com/Termix-SSH/Termix/commit/77af329afbfb1d376dc2bfb158c2219dfd7c1cd1#diff-9b62bdf4922c91ba33f69aabd306890de3bc3f5b8b3c29c5e64e45d5d55a0a14R52) to comply with React Hook rules\r\n- General linting and formatting applied according to config\r\n\r\n# Related Issues\r\n-\r\n\r\n# Screenshots / Demos\r\n-\r\n\r\n# Checklist\r\n\r\n- [ ✅] Code follows project style guidelines\r\n- [ n/a] Supports mobile and desktop UI/app (if applicable)\r\n- [ ✅] I have read [Contributing.md](https://github.com/Termix-SSH/Termix/blob/main/CONTRIBUTING.md)\r\n- [✅ ] This is not a translation request. See [docs](https://docs.termix.site/translations)\r\n",
      "created_at": "2026-02-07T22:48:38Z",
      "updated_at": "2026-02-10T02:44:31Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "a596e3e480de3d2bd2e958baa06f6ed0688aa9df",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "muchasxmaracas:chore/vuln-scanning",
        "ref": "chore/vuln-scanning",
        "sha": "9193a52ff8ddae5165de126a090e8061dce854e9",
        "user": {
          "login": "muchasxmaracas",
          "id": 99442216,
          "node_id": "U_kgDOBe1eKA",
          "avatar_url": "https://avatars.githubusercontent.com/u/99442216?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/muchasxmaracas",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1152405796,
          "node_id": "R_kgDORLBRJA",
          "name": "Termix",
          "full_name": "muchasxmaracas/Termix",
          "private": false,
          "owner": {
            "login": "muchasxmaracas",
            "id": 99442216,
            "node_id": "U_kgDOBe1eKA",
            "avatar_url": "https://avatars.githubusercontent.com/u/99442216?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/muchasxmaracas",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/muchasxmaracas/Termix",
          "created_at": "2026-02-07T20:35:59Z",
          "updated_at": "2026-02-07T20:36:00Z",
          "pushed_at": "2026-02-07T22:49:54Z",
          "homepage": "https://termix.site/",
          "size": 33818,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:main",
        "ref": "main",
        "sha": "749be1fc6e8cb07741d0af420082b9982bb4ef2f",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/546"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/546"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/546"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/546/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/546/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/546/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/9193a52ff8ddae5165de126a090e8061dce854e9"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/539",
      "id": 3216759125,
      "node_id": "PR_kwDONUSJ786_u9lV",
      "number": 539,
      "state": "open",
      "locked": false,
      "title": "feat: embed backend server in Electron desktop app",
      "user": {
        "login": "ZacharyZcR",
        "id": 48591714,
        "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
        "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZacharyZcR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\n- Fork an embedded backend process on Electron app startup, enabling a zero-deployment desktop experience\n- Store backend data in `userData/server-data`; unpack native modules (better-sqlite3, ssh2) and dist from asar for the forked process\n- Add frontend static file serving and SPA fallback in Express backend for iframe auth flow\n- Use IPC message for graceful shutdown (SIGTERM doesn't work on Windows)\n- Wait for backend ready signal before creating the main window (15s timeout fallback)\n- Extract shared `httpFetch` utility to eliminate duplicate fetch polyfill\n\n## Files Changed\n- `electron/main.cjs` — Backend lifecycle management (start/stop/ready wait), shared httpFetch, IPC shutdown\n- `electron-builder.json` — Add better-sqlite3, ssh2, dist to asarUnpack\n- `src/backend/database/database.ts` — Add frontend static file serving and SPA fallback for embedded mode\n- `src/backend/starter.ts` — Add IPC shutdown message handler\n\n## Test Plan\n- [ ] Fresh install and launch Electron — verify backend auto-starts and listens on port\n- [ ] Register a new user on first run — verify login flow works\n- [ ] Close the app — verify backend process is cleaned up (no orphan processes)\n- [ ] Verify remote server connection functionality is unaffected\n- [ ] Test on Windows — verify graceful shutdown via IPC works correctly",
      "created_at": "2026-01-28T01:02:21Z",
      "updated_at": "2026-02-12T15:33:12Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "b7d35de351cd760247f7743b758d043137659e23",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ZacharyZcR:feat/electron-embedded-server",
        "ref": "feat/electron-embedded-server",
        "sha": "a62abad32983752bb586ea730d61921f1932f7e7",
        "user": {
          "login": "ZacharyZcR",
          "id": 48591714,
          "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
          "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ZacharyZcR",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049000022,
          "node_id": "R_kgDOPoZ4Vg",
          "name": "Termix",
          "full_name": "ZacharyZcR/Termix",
          "private": false,
          "owner": {
            "login": "ZacharyZcR",
            "id": 48591714,
            "node_id": "MDQ6VXNlcjQ4NTkxNzE0",
            "avatar_url": "https://avatars.githubusercontent.com/u/48591714?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ZacharyZcR",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/ZacharyZcR/Termix",
          "created_at": "2025-09-02T10:41:23Z",
          "updated_at": "2026-02-13T13:22:01Z",
          "pushed_at": "2026-02-14T09:17:27Z",
          "homepage": "https://docs.termix.site/",
          "size": 35863,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:dev-1.11.1",
        "ref": "dev-1.11.1",
        "sha": "fb1360193f008817491e59e88d5e77708db35442",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/539"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/539"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/539"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/539/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/539/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/539/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/a62abad32983752bb586ea730d61921f1932f7e7"
        }
      },
      "author_association": "MEMBER",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/Termix-SSH/Termix/pulls/475",
      "id": 3141554037,
      "node_id": "PR_kwDONUSJ7867QE91",
      "number": 475,
      "state": "open",
      "locked": false,
      "title": "Guacd, Docker-Compose, RDP",
      "user": {
        "login": "starhound",
        "id": 14285597,
        "node_id": "MDQ6VXNlcjE0Mjg1NTk3",
        "avatar_url": "https://avatars.githubusercontent.com/u/14285597?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/starhound",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "https://github.com/Termix-SSH/Termix/pull/451#issue-3740909471",
      "created_at": "2026-01-02T06:18:16Z",
      "updated_at": "2026-01-31T06:10:21Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": true,
      "head": {
        "label": "starhound:starhound/guacd-docker-compose",
        "ref": "starhound/guacd-docker-compose",
        "sha": "247c1b5c0abb66956b9f07c980f2368aa4bfc617",
        "user": {
          "login": "starhound",
          "id": 14285597,
          "node_id": "MDQ6VXNlcjE0Mjg1NTk3",
          "avatar_url": "https://avatars.githubusercontent.com/u/14285597?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/starhound",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1117836496,
          "node_id": "R_kgDOQqDU0A",
          "name": "Termix",
          "full_name": "starhound/Termix",
          "private": false,
          "owner": {
            "login": "starhound",
            "id": 14285597,
            "node_id": "MDQ6VXNlcjE0Mjg1NTk3",
            "avatar_url": "https://avatars.githubusercontent.com/u/14285597?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/starhound",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": true,
          "url": "https://api.github.com/repos/starhound/Termix",
          "created_at": "2025-12-16T22:16:21Z",
          "updated_at": "2025-12-16T22:16:22Z",
          "pushed_at": "2025-12-20T14:59:33Z",
          "homepage": "https://docs.termix.site/",
          "size": 31231,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "Termix-SSH:main",
        "ref": "main",
        "sha": "749be1fc6e8cb07741d0af420082b9982bb4ef2f",
        "user": {
          "login": "Termix-SSH",
          "id": 236961563,
          "node_id": "O_kgDODh-_Gw",
          "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Termix-SSH",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 893684207,
          "node_id": "R_kgDONUSJ7w",
          "name": "Termix",
          "full_name": "Termix-SSH/Termix",
          "private": false,
          "owner": {
            "login": "Termix-SSH",
            "id": 236961563,
            "node_id": "O_kgDODh-_Gw",
            "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Termix-SSH",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
          "fork": false,
          "url": "https://api.github.com/repos/Termix-SSH/Termix",
          "created_at": "2024-11-25T02:46:36Z",
          "updated_at": "2026-02-15T21:14:44Z",
          "pushed_at": "2026-02-14T11:21:36Z",
          "homepage": "https://termix.site/",
          "size": 38434,
          "stargazers_count": 10818,
          "watchers_count": 10818,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": false,
          "forks_count": 437,
          "archived": false,
          "disabled": false,
          "open_issues_count": 31,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "docker",
            "1": "file-management",
            "2": "self-hosted",
            "3": "ssh",
            "4": "ssh-tunnel",
            "5": "termix"
          },
          "visibility": "public",
          "forks": 437,
          "open_issues": 31,
          "watchers": 10818,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/475"
        },
        "html": {
          "href": "https://github.com/Termix-SSH/Termix/pull/475"
        },
        "issue": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/475"
        },
        "comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/issues/475/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/475/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/pulls/475/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/Termix-SSH/Termix/statuses/247c1b5c0abb66956b9f07c980f2368aa4bfc617"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    }
  ],
  "discussions": [],
  "details": {
    "id": 893684207,
    "node_id": "R_kgDONUSJ7w",
    "name": "Termix",
    "full_name": "Termix-SSH/Termix",
    "private": false,
    "owner": {
      "login": "Termix-SSH",
      "id": 236961563,
      "node_id": "O_kgDODh-_Gw",
      "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/Termix-SSH",
      "type": "Organization",
      "user_view_type": "public",
      "site_admin": false
    },
    "description": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities.",
    "fork": false,
    "url": "https://api.github.com/repos/Termix-SSH/Termix",
    "created_at": "2024-11-25T02:46:36Z",
    "updated_at": "2026-02-15T21:14:44Z",
    "pushed_at": "2026-02-14T11:21:36Z",
    "homepage": "https://termix.site/",
    "size": 38434,
    "stargazers_count": 10818,
    "watchers_count": 10818,
    "language": "TypeScript",
    "has_issues": true,
    "has_projects": true,
    "has_downloads": true,
    "has_wiki": false,
    "has_pages": true,
    "has_discussions": false,
    "forks_count": 437,
    "archived": false,
    "disabled": false,
    "open_issues_count": 31,
    "license": {
      "key": "other",
      "name": "Other",
      "spdx_id": "NOASSERTION",
      "url": null,
      "node_id": "MDc6TGljZW5zZTA="
    },
    "allow_forking": true,
    "is_template": false,
    "web_commit_signoff_required": false,
    "has_pull_requests": true,
    "pull_request_creation_policy": "all",
    "topics": {
      "0": "docker",
      "1": "file-management",
      "2": "self-hosted",
      "3": "ssh",
      "4": "ssh-tunnel",
      "5": "termix"
    },
    "visibility": "public",
    "forks": 437,
    "open_issues": 31,
    "watchers": 10818,
    "default_branch": "main",
    "permissions": {
      "admin": false,
      "maintain": false,
      "push": false,
      "triage": false,
      "pull": true
    },
    "temp_clone_token": "",
    "custom_properties": {},
    "organization": {
      "login": "Termix-SSH",
      "id": 236961563,
      "node_id": "O_kgDODh-_Gw",
      "avatar_url": "https://avatars.githubusercontent.com/u/236961563?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/Termix-SSH",
      "type": "Organization",
      "user_view_type": "public",
      "site_admin": false
    },
    "network_count": 437,
    "subscribers_count": 43
  },
  "lastFetched": 1771203961492
}