Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [
"csharp",
"terminal",
"dotnet",
"curses",
"cross-platform",
"console",
"console-application",
"terminal-based",
"terminal-ui",
"tui"
],
"is_fork": false,
"size_kb": 199411,
"has_wiki": false,
"homepage": "https://tui-cs.github.io/Terminal.Gui/",
"languages": {
"C#": 12003946,
"CSS": 1469,
"Shell": 819,
"JavaScript": 371,
"PowerShell": 85214,
"Go Template": 7409
},
"pushed_at": "2026-07-28T17:38:41Z",
"created_at": "2017-12-11T03:23:45Z",
"owner_type": "Organization",
"updated_at": "2026-07-28T17:41:43Z",
"description": "Cross Platform Terminal UI toolkit for .NET",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "develop",
"license_spdx_raw": "MIT",
"primary_language": "C#",
"significant_languages": [
"C#"
]
},
"owner": {
"blog": null,
"name": "tui.cs",
"type": "Organization",
"login": "tui-cs",
"company": null,
"location": null,
"followers": 212,
"avatar_url": "https://avatars.githubusercontent.com/u/106351764?v=4",
"created_at": "2022-05-26T21:13:16Z",
"is_verified": null,
"public_repos": 16,
"account_age_days": 1523
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v2.4.17",
"kind": "patch",
"published_at": "2026-07-07T12:20:38Z"
},
{
"tag": "v2.4.16",
"kind": "patch",
"published_at": "2026-06-28T19:42:19Z"
},
{
"tag": "v2.4.15",
"kind": "patch",
"published_at": "2026-06-28T17:18:24Z"
},
{
"tag": "v2.4.14-beta.1",
"kind": "prerelease",
"published_at": "2026-06-28T16:25:03Z"
},
{
"tag": "v2.4.13",
"kind": "patch",
"published_at": "2026-06-28T01:46:08Z"
},
{
"tag": "v2.4.12",
"kind": "patch",
"published_at": "2026-06-28T00:33:52Z"
},
{
"tag": "v2.4.11",
"kind": "patch",
"published_at": "2026-06-24T22:39:26Z"
},
{
"tag": "v2.4.10",
"kind": "patch",
"published_at": "2026-06-23T18:12:07Z"
},
{
"tag": "v2.4.9",
"kind": "patch",
"published_at": "2026-06-23T16:49:46Z"
},
{
"tag": "v2.4.8",
"kind": "patch",
"published_at": "2026-06-22T18:06:24Z"
},
{
"tag": "v2.4.7",
"kind": "patch",
"published_at": "2026-06-19T23:22:24Z"
},
{
"tag": "v2.4.6",
"kind": "patch",
"published_at": "2026-06-12T15:04:10Z"
},
{
"tag": "v2.4.5",
"kind": "patch",
"published_at": "2026-06-09T23:47:36Z"
},
{
"tag": "v2.4.4",
"kind": "patch",
"published_at": "2026-06-02T01:54:05Z"
},
{
"tag": "v2.4.3",
"kind": "patch",
"published_at": "2026-05-29T14:21:14Z"
},
{
"tag": "v2.4.2",
"kind": "patch",
"published_at": "2026-05-27T13:09:23Z"
},
{
"tag": "v2.4.1",
"kind": "patch",
"published_at": "2026-05-24T21:36:05Z"
},
{
"tag": "v2.4.0",
"kind": "minor",
"published_at": "2026-05-23T19:08:00Z"
},
{
"tag": "v2.2.3",
"kind": "patch",
"published_at": "2026-05-23T18:55:09Z"
},
{
"tag": "v2.2.2",
"kind": "patch",
"published_at": "2026-05-21T02:38:01Z"
},
{
"tag": "v2.2.1",
"kind": "patch",
"published_at": "2026-05-19T13:05:37Z"
},
{
"tag": "v2.2.0",
"kind": "minor",
"published_at": "2026-05-19T12:26:50Z"
},
{
"tag": "v2.2.0-rc.4",
"kind": "prerelease",
"published_at": "2026-05-18T19:00:48Z"
},
{
"tag": "v2.2.0-rc.3",
"kind": "prerelease",
"published_at": "2026-05-18T13:14:36Z"
},
{
"tag": "v2.2.0-rc.2",
"kind": "prerelease",
"published_at": "2026-05-17T19:25:55Z"
},
{
"tag": "v2.2.0-rc.1",
"kind": "prerelease",
"published_at": "2026-05-17T13:08:21Z"
},
{
"tag": "v2.1.0",
"kind": "minor",
"published_at": "2026-05-08T04:16:25Z"
},
{
"tag": "v2.1.0-rc.5",
"kind": "prerelease",
"published_at": "2026-05-08T03:27:58Z"
},
{
"tag": "v2.1.0-rc.4",
"kind": "prerelease",
"published_at": "2026-05-08T03:01:57Z"
},
{
"tag": "v2.1.0-rc.3",
"kind": "prerelease",
"published_at": "2026-05-08T02:24:32Z"
},
{
"tag": "v2.1.0-rc.2",
"kind": "prerelease",
"published_at": "2026-05-07T22:36:03Z"
},
{
"tag": "v2.1.0-rc.1",
"kind": "prerelease",
"published_at": "2026-05-07T22:02:00Z"
},
{
"tag": "v2.1.0-beta.1",
"kind": "prerelease",
"published_at": "2026-05-07T20:08:00Z"
},
{
"tag": "v2.0.1",
"kind": "patch",
"published_at": "2026-04-29T01:08:20Z"
},
{
"tag": "v2.0.0",
"kind": "major",
"published_at": "2026-04-28T23:48:47Z"
},
{
"tag": "v2.0.0-rc.7",
"kind": "prerelease",
"published_at": "2026-04-28T20:53:20Z"
},
{
"tag": "v2.0.0-rc.6",
"kind": "prerelease",
"published_at": "2026-04-27T15:36:29Z"
},
{
"tag": "v2.0.0-rc.5",
"kind": "prerelease",
"published_at": "2026-04-27T02:13:39Z"
},
{
"tag": "v2.0.0-rc.4",
"kind": "prerelease",
"published_at": "2026-04-22T15:03:18Z"
},
{
"tag": "v2.0.0-rc.3",
"kind": "prerelease",
"published_at": "2026-04-21T01:17:16Z"
},
{
"tag": "v2.0.0-rc.2",
"kind": "prerelease",
"published_at": "2026-04-21T00:31:30Z"
},
{
"tag": "v2.0.0-rc.1",
"kind": "prerelease",
"published_at": "2026-04-20T18:51:58Z"
},
{
"tag": "v2.0.0-beta.218",
"kind": "prerelease",
"published_at": "2026-04-20T18:34:15Z"
},
{
"tag": "v2.0.0-beta.1",
"kind": "prerelease",
"published_at": "2026-03-04T20:33:46Z"
},
{
"tag": "v1.19.0",
"kind": "minor",
"published_at": "2025-06-12T19:57:54Z"
},
{
"tag": "v1.18.1",
"kind": "patch",
"published_at": "2025-04-24T12:25:19Z"
},
{
"tag": "v1.18.0",
"kind": "minor",
"published_at": "2025-03-16T19:49:21Z"
},
{
"tag": "v1.17.1",
"kind": "patch",
"published_at": "2024-07-11T22:40:43Z"
},
{
"tag": "v1.17.0",
"kind": "minor",
"published_at": "2024-05-29T17:46:46Z"
},
{
"tag": "v1.16.0",
"kind": "minor",
"published_at": "2024-03-16T15:54:20Z"
},
{
"tag": "v1.15.1",
"kind": "patch",
"published_at": "2024-01-22T14:09:45Z"
},
{
"tag": "v1.14.1",
"kind": "patch",
"published_at": "2023-08-30T14:27:32Z"
},
{
"tag": "v1.13.5",
"kind": "patch",
"published_at": "2023-07-26T12:48:36Z"
},
{
"tag": "v1.13.4",
"kind": "patch",
"published_at": "2023-07-17T23:53:09Z"
},
{
"tag": "v1.12.1",
"kind": "patch",
"published_at": "2023-05-24T13:14:55Z"
},
{
"tag": "v1.11.2",
"kind": "patch",
"published_at": "2023-05-19T15:37:50Z"
},
{
"tag": "v1.10.1",
"kind": "patch",
"published_at": "2023-04-06T15:45:15Z"
},
{
"tag": "v1.10.0",
"kind": "minor",
"published_at": "2023-03-17T15:02:32Z"
},
{
"tag": "v1.9.0",
"kind": "minor",
"published_at": "2023-01-05T00:39:39Z"
},
{
"tag": "v1.8.2",
"kind": "patch",
"published_at": "2022-09-21T22:34:28Z"
},
{
"tag": "v1.8.0",
"kind": "minor",
"published_at": "2022-09-19T13:55:41Z"
},
{
"tag": "v1.7.2",
"kind": "patch",
"published_at": "2022-08-04T21:46:54Z"
},
{
"tag": "v1.7.1",
"kind": "patch",
"published_at": "2022-08-01T23:38:35Z"
},
{
"tag": "v1.7.0",
"kind": "minor",
"published_at": "2022-07-28T18:37:11Z"
},
{
"tag": "v1.6.4",
"kind": "patch",
"published_at": "2022-05-28T23:09:50Z"
},
{
"tag": "v1.6.0",
"kind": "minor",
"published_at": "2022-05-26T21:03:00Z"
},
{
"tag": "v1.5.0",
"kind": "minor",
"published_at": "2022-04-17T23:49:34Z"
},
{
"tag": "v1.4.0",
"kind": "minor",
"published_at": "2021-12-18T16:49:04Z"
},
{
"tag": "v1.3.1",
"kind": "patch",
"published_at": "2021-10-27T23:07:07Z"
},
{
"tag": "v1.2.1",
"kind": "patch",
"published_at": "2021-08-24T16:19:14Z"
},
{
"tag": "v1.1.1",
"kind": "patch",
"published_at": "2021-05-17T00:08:00Z"
},
{
"tag": "v1.0.0",
"kind": "major",
"published_at": "2021-04-28T22:45:38Z"
},
{
"tag": "v0.90.2",
"kind": "patch",
"published_at": "2020-09-28T16:55:15Z"
}
],
"recent_commits": [
{
"oid": "342955e65a4c8a6a7c7cbdf9402c6f08386be651",
"body": "…s/setup-go-7\n\nBump actions/setup-go from 6 to 7",
"is_bot": false,
"headline": "Merge pull request #5599 from tui-cs/dependabot/github_actions/action…",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-07-28T17:38:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a35796dbd81ce71b454c57ae7804720d8f2a813c",
"body": "…sions.Options-10.0.10\n\nBump Microsoft.Extensions.Options from 10.0.9 to 10.0.10",
"is_bot": false,
"headline": "Merge pull request #5597 from tui-cs/dependabot/nuget/Microsoft.Exten…",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-07-28T17:38:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7be79d4c3c56df246c36c433dcae9d40e931f2fb",
"body": "…s/setup-dotnet-6\n\nBump actions/setup-dotnet from 5 to 6",
"is_bot": false,
"headline": "Merge pull request #5598 from tui-cs/dependabot/github_actions/action…",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-07-28T17:37:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a3abd47fc4c0da79375cdb71c05b7655e7956dba",
"body": "…em.IO.Abstractions.TestingHelpers-22.2.0\n\nBump TestableIO.System.IO.Abstractions.TestingHelpers from 22.1.1 to 22.2.0",
"is_bot": false,
"headline": "Merge pull request #5592 from tui-cs/dependabot/nuget/TestableIO.Syst…",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-07-28T17:36:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d596b81c9cead3092363b0c6c52a1fb26f0b7c02",
"body": "Bump Microsoft.Extensions.Configuration and Microsoft.Extensions.Configuration.Binder",
"is_bot": false,
"headline": "Merge pull request #5595 from tui-cs/dependabot/nuget/multi-47268eecd5",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-07-28T17:36:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5f26590f5d0f3b0ca41c6235c9aaec681014639c",
"body": "…est.Sdk-18.8.1\n\nBump Microsoft.NET.Test.Sdk from 18.7.0 to 18.8.1",
"is_bot": false,
"headline": "Merge pull request #5593 from tui-cs/dependabot/nuget/Microsoft.NET.T…",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-07-28T17:35:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b2ca8679a74eb83ebbe23f3c75250f3ee1458e30",
"body": "…actions-22.2.0\n\nBump System.IO.Abstractions from 22.1.1 to 22.2.0",
"is_bot": false,
"headline": "Merge pull request #5591 from tui-cs/dependabot/nuget/System.IO.Abstr…",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-07-28T17:34:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "944f736d6db66b01109ac81d4a34248629965658",
"body": "Bump Serilog from 4.3.1 to 4.4.0",
"is_bot": false,
"headline": "Merge pull request #5590 from tui-cs/dependabot/nuget/Serilog-4.4.0",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-07-28T17:34:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5bee7149687909ba4b9f54c10f37dcf42193c932",
"body": "…ild-6.8.2\n\nBump GitVersion.MsBuild from 6.8.1 to 6.8.2",
"is_bot": false,
"headline": "Merge pull request #5589 from tui-cs/dependabot/nuget/GitVersion.MsBu…",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-07-28T17:33:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9048af9ab79c3f71a3f84836f93e9c180d972be4",
"body": "Bumps [actions/setup-go](https://github.com/actions/setup-go) from 6 to 7.\n- [Release notes](https://github.com/actions/setup-go/releases)\n- [Commits](https://github.com/actions/setup-go/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-go\n dependency-version: '7'\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump actions/setup-go from 6 to 7",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-19T14:42:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5c999449092b82f6dfef79efd2e45789f81acd48",
"body": "Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 5 to 6.\n- [Release notes](https://github.com/actions/setup-dotnet/releases)\n- [Commits](https://github.com/actions/setup-dotnet/compare/v5...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-dotnet\n dependency-version: '6'\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump actions/setup-dotnet from 5 to 6",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-19T14:42:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "21da987b61a9b8394fe85568125d4dab2f6b01f3",
"body": "---\nupdated-dependencies:\n- dependency-name: Microsoft.Extensions.Options\n dependency-version: 10.0.10\n dependency-type: direct:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump Microsoft.Extensions.Options from 10.0.9 to 10.0.10",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-15T14:46:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "80c1259142a06cc4c992c1aaff203b04189f0bad",
"body": "…iguration.Binder\n\nBumps Microsoft.Extensions.Configuration from 10.0.7 to 10.0.10\nBumps Microsoft.Extensions.Configuration.Binder from 10.0.7 to 10.0.10\n\n---\nupdated-dependencies:\n- dependency-name: Microsoft.Extensions.Configuration\n dependency-version: 10.0.10\n dependency-type: direct:productio\n[…]\nt.Extensions.Configuration.Binder\n dependency-version: 10.0.10\n dependency-type: direct:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump Microsoft.Extensions.Configuration and Microsoft.Extensions.Conf…",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-15T14:46:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ca570a9f730932a781329edf88bdcc1031459dfb",
"body": "---\nupdated-dependencies:\n- dependency-name: Microsoft.NET.Test.Sdk\n dependency-version: 18.8.1\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump Microsoft.NET.Test.Sdk from 18.7.0 to 18.8.1",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-14T14:47:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "32b201223ce3fe1eba65fea65cb811da64236401",
"body": "…22.2.0\n\n---\nupdated-dependencies:\n- dependency-name: TestableIO.System.IO.Abstractions.TestingHelpers\n dependency-version: 22.2.0\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump TestableIO.System.IO.Abstractions.TestingHelpers from 22.1.1 to …",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-13T14:48:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7d527a8acff67bc52b8f0f9ccce4442b00ea8f93",
"body": "---\nupdated-dependencies:\n- dependency-name: System.IO.Abstractions\n dependency-version: 22.2.0\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump System.IO.Abstractions from 22.1.1 to 22.2.0",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-13T14:48:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5fdf535007905b9ed61c90447757f4b6dfef2610",
"body": "---\nupdated-dependencies:\n- dependency-name: Serilog\n dependency-version: 4.4.0\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump Serilog from 4.3.1 to 4.4.0",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-10T14:47:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fe531e6ff12d2f63809858e73069ae5151c79641",
"body": "---\nupdated-dependencies:\n- dependency-name: GitVersion.MsBuild\n dependency-version: 6.8.2\n dependency-type: direct:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump GitVersion.MsBuild from 6.8.1 to 6.8.2",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-10T14:45:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "516074203552017a7bc77a4e0ed643cd0b45b8f8",
"body": "…2 (#5588)\n\n* Fixes #5579. SynchronizationContext is not correctly implemented in v2\n\n* Enforces that apps can be crested before call Run and the Begin method guarantee set the sync context for the current running app.\n\n* Potential fix for pull request finding\n\nCo-authored-by: Copilot Autofix powere\n[…]\npilot@users.noreply.github.com>\n\n* Fix nullable warning\n\n* Reset callbackCalled before reusing it\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Fixes #5579. SynchronizationContext is not correctly implemented in v…",
"author_name": "BDisp",
"author_login": "BDisp",
"committed_at": "2026-07-09T19:18:57Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8975fec75ac468b509428146156efa58b565bd88",
"body": "…itable-text-mode",
"is_bot": false,
"headline": "Merge pull request #5587 from tui-cs/copilot/enhance-numericupdown-ed…",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-07-09T02:54:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d46b915d1a72d429d8533bff87b592278ac7a328",
"body": "Two defects in the new CanEdit mode:\n\n- UpdateNumberView appended the value view after the up button, so the\n SubViews order became [down, up, editor]. Because the focus chain is\n derived from SubViews order, Tab navigation visited the up button before\n the editor, contradicting the visual layout\n[…]\nrwriting the in-progress text; the editor still\n resyncs on Up/Down and external Value changes.\n\nTests updated/added accordingly.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix Tab order and reformat-on-keystroke in NumericUpDown editable mode",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-07-08T15:50:18Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ab592b3831cf52568f2a1f353b85770eaa4a98a4",
"body": null,
"is_bot": true,
"headline": "Add editable NumericUpDown mode",
"author_name": "copilot-swe-agent[bot]",
"author_login": "Copilot",
"committed_at": "2026-07-07T14:45:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7556d784e0e7fe80c6210e2b64ff4ddb46e97d1c",
"body": null,
"is_bot": true,
"headline": "Initial plan",
"author_name": "copilot-swe-agent[bot]",
"author_login": "Copilot",
"committed_at": "2026-07-07T14:36:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5a231b81f40de36c2b9d76c96353104b33579696",
"body": "Back-merge v2.4.17 from main into develop",
"is_bot": false,
"headline": "Merge pull request #5586 from tui-cs/backmerge/v2.4.17",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-07-07T14:19:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d0a0ed9b150d3fc8aacf4ab07b7f7d91264fe6d6",
"body": null,
"is_bot": false,
"headline": "Merge pull request #5584 from tui-cs/release/v2.4.17",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-07-07T12:19:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6d9f0963e13ed65839f3e8cc0eeee96219b0c56c",
"body": "…lision (#5583)\n\nTwo fixes flagged on release PR #5582:\n\n1. Codex CR feedback: FileSystemTreeBuilder.IsReparsePoint returned false\n when reading Attributes throws, so an unreadable symlink/junction was\n treated as safe to traverse — recreating the directory-cycle risk the\n guard exists to prev\n[…]\nhe suite.\n\nTests: fail-closed IsReparsePoint regression test; FileDialog/CharMap\nctor no-throw tests under a colliding DefaultKey.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fixes IsReparsePoint fail-open and PopoverMenu.DefaultKey binding col…",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-07-07T03:27:47Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c7030e736d5f273e7d451d8b2c7d8fd1890fbf9f",
"body": "Kh/5498 width height event contract",
"is_bot": false,
"headline": "Merge pull request #5577 from harder/kh/5498-width-height-event-contract",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-07-07T03:17:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "da4d9a2ebb8047386e38f0f6b150c88c5124a1cd",
"body": "…Inaccessible change (#5581)\n\nThe switch to EnumerateDirectories/EnumerateFileSystemInfos with\nEnumerationOptions { IgnoreInaccessible = true } (from the #5544 follow-up)\nkept the framework default AttributesToSkip = Hidden | System, so the file\ndialog silently filtered out hidden/system entries — i\n[…]\ns covering the enumeration options, the fallback, and\n hidden/system files via MockFileSystem.\n\nFlagged by Codex review on #5580.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fixes FileDialog hiding hidden/system entries (dotfiles) after Ignore…",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-07-07T02:56:06Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6099a28ed175ec8412be4c64551fee0f3dd88fb3",
"body": "…ls/actions-4.7.0\n\nBump gittools/actions from 4.5.0 to 4.7.0",
"is_bot": false,
"headline": "Merge pull request #5578 from tui-cs/dependabot/github_actions/gittoo…",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-07-07T02:38:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d5422461390b4d5157f98e73b214b8eef91c22fe",
"body": "…-0.57.2\n\nBump Spectre.Console from 0.57.1 to 0.57.2",
"is_bot": false,
"headline": "Merge pull request #5576 from tui-cs/dependabot/nuget/Spectre.Console…",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-07-07T02:38:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "78c5378ccaebed60e232aa17ee03dcafc45df055",
"body": "…ompilers.Toolset-5.6.0\n\nBump Microsoft.Net.Compilers.Toolset from 5.3.0 to 5.6.0",
"is_bot": false,
"headline": "Merge pull request #5575 from tui-cs/dependabot/nuget/Microsoft.Net.C…",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-07-07T02:38:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e097de303e049d3cd417d2adb250118747db4fb3",
"body": "…ild-6.8.1\n\nBump GitVersion.MsBuild from 6.8.0 to 6.8.1",
"is_bot": false,
"headline": "Merge pull request #5572 from tui-cs/dependabot/nuget/GitVersion.MsBu…",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-07-07T02:37:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b720fafc7e6a9fbb5aab45fd86d1a03419a07d9f",
"body": "Bumps [gittools/actions](https://github.com/gittools/actions) from 4.5.0 to 4.7.0.\n- [Release notes](https://github.com/gittools/actions/releases)\n- [Commits](https://github.com/gittools/actions/compare/v4.5.0...v4.7.0)\n\n---\nupdated-dependencies:\n- dependency-name: gittools/actions\n dependency-version: 4.7.0\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump gittools/actions from 4.5.0 to 4.7.0",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-05T14:42:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c1eb3ea4331f8d1e49ccd72288f8dbb8f8856446",
"body": null,
"is_bot": false,
"headline": "Add #5498 event hook contract coverage",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-07-04T20:24:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "62e826981105b610e62e694960d02e42e628fc9c",
"body": "#5498 (split off from #4522) flagged that Frame/layout-driven size changes\nbypass the Width/Height change events and skip the TextFormatter reset.\n\nRe-evaluated after the related layout/TextFormatter perf work landed\n(#4522, #5357, #5358/#5359, #5499, formatter-constraint fixes):\n\n- TextFormatter re\n[…]\nom the Frame setter or a layout-driven resize; FrameChanged DOES fire\n in those cases and on declarative assignment after layout.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fixes #5498. Document Width/Height vs Frame event contract",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-07-04T20:23:20Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "3c3f10875a25362edd71b396d460b9168b29705a",
"body": "---\nupdated-dependencies:\n- dependency-name: Spectre.Console\n dependency-version: 0.57.2\n dependency-type: direct:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump Spectre.Console from 0.57.1 to 0.57.2",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-03T14:47:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9f5db8f99f21ab423bcf58ceb490bcad39495b6a",
"body": "---\nupdated-dependencies:\n- dependency-name: Microsoft.Net.Compilers.Toolset\n dependency-version: 5.6.0\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump Microsoft.Net.Compilers.Toolset from 5.3.0 to 5.6.0",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-03T14:46:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fc68bbb0d0e8cfc0dabf8d29ac789a27228a62b9",
"body": "---\nupdated-dependencies:\n- dependency-name: GitVersion.MsBuild\n dependency-version: 6.8.1\n dependency-type: direct:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump GitVersion.MsBuild from 6.8.0 to 6.8.1",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-03T14:44:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "76dfb25911acae80a9ed275d99147c7cb09090ed",
"body": "…sions.Options-10.0.9\n\nBump Microsoft.Extensions.Options from 10.0.7 to 10.0.9",
"is_bot": false,
"headline": "Merge pull request #5568 from tui-cs/dependabot/nuget/Microsoft.Exten…",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-07-01T15:05:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "31636e0eb4d22b0ffd7659ed847167bb257efe7e",
"body": "…ild-6.8.0\n\nBump GitVersion.MsBuild from 6.7.0 to 6.8.0",
"is_bot": false,
"headline": "Merge pull request #5571 from tui-cs/dependabot/nuget/GitVersion.MsBu…",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-07-01T14:55:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dcc4dd7651d50f62c860b7ffb188c65efdcfb86c",
"body": "---\nupdated-dependencies:\n- dependency-name: GitVersion.MsBuild\n dependency-version: 6.8.0\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump GitVersion.MsBuild from 6.7.0 to 6.8.0",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-01T14:45:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e3f94a2963b0c2052db77eeae3247d29c7eeaade",
"body": "…… (#5569)\n\n* Fixes #5544 #issuecomment-4836836706. FileDialog/OpenDialog: one unreadable entry makes the entire directory render empty (`FileDialogState.GetChildren` swallows the exception)\n\n* Fixes #5570. FileDialog/OpenDialog tree builder crash on unreadable entries",
"is_bot": false,
"headline": "Fixes #5544 #issuecomment-4836836706. FileDialog/OpenDialog: one unre…",
"author_name": "BDisp",
"author_login": "BDisp",
"committed_at": "2026-07-01T13:46:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b88fcd5d40750cd5105bea90023f3b266d96d30c",
"body": "---\nupdated-dependencies:\n- dependency-name: Microsoft.Extensions.Options\n dependency-version: 10.0.9\n dependency-type: direct:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump Microsoft.Extensions.Options from 10.0.7 to 10.0.9",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-29T14:46:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b968e1502695eea4a6495cdab1cd3b9e0ad074c2",
"body": "Back-merge v2.4.16 from main into develop",
"is_bot": false,
"headline": "Merge pull request #5564 from tui-cs/backmerge/v2.4.16",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-28T19:46:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5e89ba95656ef0fec73af84a1637cc5b8064fa1f",
"body": "Release v2.4.16",
"is_bot": false,
"headline": "Merge pull request #5563 from tui-cs/release/v2.4.16",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-28T19:41:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "de959715ab004709a1eaf07c14391fef95e4b56f",
"body": null,
"is_bot": true,
"headline": "Set release label to 'stable' for v2.4.16",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-06-28T19:32:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5965c8373f80b42b82c4d95e686087d7da9f4822",
"body": "Fixes #5561 - Make TuiConfigurationBuilder flat-key binding trim/AOT-safe",
"is_bot": false,
"headline": "Merge pull request #5562 from tui-cs/fix/5561-convertvalue-aot",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-28T19:31:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f6eee0521bf5715099fd419d2d7980e98e5eb46b",
"body": "ConvertValue fell back to TypeDescriptor.GetConverter (RequiresUnreferencedCode\n/ RequiresDynamicCode) for non-scalar settings, breaking NativeAOT/trimmed\nconsumers (e.g. tui-cs/Editor's `ted`) with IL2026/IL3050. Regression from #5411.\n\n- ConvertValue: replace the TypeDescriptor.GetConverter fallba\n[…]\ny IL2026 + IL2090).\n\nAdds a regression test that PopoverMenu.DefaultKey (a Key-typed flat dotted key)\nbinds via the new fast path.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix #5561: make TuiConfigurationBuilder flat-key binding trim/AOT-safe",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-28T19:20:44Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ffe4944cb366af922e0c9f14a9667e5fbac7408b",
"body": "Remove legacy \"Create Release\" workflow (release.yml)",
"is_bot": false,
"headline": "Merge pull request #5560 from tui-cs/chore/remove-legacy-create-release",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-28T19:12:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f5c6f2cd61451802ca38c001bdb658db06d65da0",
"body": "Same trigger inaccuracies as the prior fixes, elsewhere in\nTerminal.Gui/README.md:\n- Prepare Release branch is `release/<tag>` including the pre-release\n suffix (e.g. release/v2.0.0-beta.1)\n- NuGet auto-publish is on push to `develop` + `v*` tag pushes, not on\n pushes to `main`\n- API docs deploy on push to `develop`, not `main`\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Correct remaining publish/api-docs trigger docs in maintainer README",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-28T19:07:20Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1fdc72f4d92711f81383745f95b3c93e0345d5ca",
"body": "Fixes 3 doc accuracy issues flagged in review:\n- .github/workflows/README.md: api-docs.yml triggers on push to `develop`\n + workflow_dispatch, not `main`\n- Terminal.Gui/README.md: publish.yml triggers on push to `develop` and\n `v*` tags, not `main`\n- CONTRIBUTING.md: clarify Prepare Release creates `release/<tag>` where\n the tag includes the pre-release suffix (e.g. release/v2.0.0-beta.1)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Address review: correct workflow trigger docs",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-28T18:33:07Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "76606e7f36bc65ac9153610c3eb15093e9028539",
"body": "release.yml (\"Create Release\") is broken and redundant:\n\n- Broken: it pins GitVersion `versionSpec: '6.0.x'`, but\n gittools/actions/gitversion/setup@v4.5.0 requires >=6.1.0, so the\n \"Install GitVersion\" step fails immediately (every run since Jan 2026\n has failed at this step). Its siblings publi\n[…]\nsection,\n renumber, and fix the publish trigger description\n- CONTRIBUTING.md: document the Prepare/Finalize release flow instead\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Remove legacy \"Create Release\" workflow (release.yml)",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-28T17:26:47Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "9a78c6a443e7a656dbc7ee97a446ec46e81a8df1",
"body": "…-dim-auto-unchanged",
"is_bot": false,
"headline": "Merge pull request #5549 from harder/copilot/skip-setneedslayout-when…",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-06-28T16:50:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7ca26a14262b6886c325b08712111e11990c66bd",
"body": "Back-merge v2.4.14-beta.1 from main into develop",
"is_bot": false,
"headline": "Merge pull request #5558 from tui-cs/backmerge/v2.4.14-beta.1",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-28T16:37:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7f04ed82831461cd4fc51b86cac9afb321537928",
"body": "Release v2.4.14-beta.1",
"is_bot": false,
"headline": "Merge pull request #5557 from tui-cs/release/v2.4.14-beta.1",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-28T16:23:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "12aca25f1e9ad742a34e80eb1d1e8a24b7c3a87b",
"body": null,
"is_bot": true,
"headline": "Set release label to 'beta' for v2.4.14-beta.1",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-06-28T16:14:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3d0d11727aa139cf5558fe2f6ddcccff87e9efa6",
"body": "Prepares for Fixing #4943 - Refactors `ConfigurationManager` to be based on `MEC`",
"is_bot": false,
"headline": "Merge pull request #5411 from tui-cs/copilot/replace-cm-with-mec",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-28T16:12:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "416c873f6151d9951b7381ce34b85e619640284e",
"body": "PR #5411 marks ConfigurationManager [Obsolete], and the Validate Doc\nSnippets CI job elevates CS0618 to an error. Update the \"set theme at\nstartup\" snippet to the MEC replacement (TuiConfigurationBuilder +\nRuntimeConfig + ApplyToStaticFacades), which the flat/scalar binding fix\nnow makes functional for the \"Theme\" scalar key.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix obsolete ConfigurationManager usage in build-app.md snippet",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-28T16:04:10Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "349db3c3bd8ae4a1d95b0b3012c9baab72902d3a",
"body": "Two issues surfaced by code review on #5411:\n\n1. MEC binding was inert against the shipped config.json format. The real\n config uses flat dotted keys (e.g. \"Driver.Force16Colors\", \"Key.Separator\")\n and a scalar \"Theme\" key, but ApplyToStaticFacades bound nested sections via\n GetSection(name).B\n[…]\nes\nthe pre-existing MEC tests that mutate static Defaults into the shared\n\"StaticSettingsTests\" collection to keep them race-free.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Address PR #5411 CR feedback: flat-key MEC binding + theme-event leak",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-28T15:59:18Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a953411bb6e4cbebca00a9deab60a249888e256f",
"body": "Reassigning a copied explicit role to the same value must not make it implicit.\n\nFixes #5555",
"is_bot": false,
"headline": "fix(scheme): preserve explicit role assignment (#5556)",
"author_name": "YourRobotOverlord",
"author_login": "YourRobotOverlord",
"committed_at": "2026-06-28T15:56:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "da3a262977c7daa4753bd621b7b2e063124de5d8",
"body": null,
"is_bot": true,
"headline": "Merge origin/develop into copilot/replace-cm-with-mec",
"author_name": "copilot-swe-agent[bot]",
"author_login": "Copilot",
"committed_at": "2026-06-28T15:51:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "934467c5b400374ea488adc1f0ff287f2786677b",
"body": "Back-merge v2.4.13 from main into develop",
"is_bot": false,
"headline": "Merge pull request #5554 from tui-cs/backmerge/v2.4.13",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-28T01:48:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e5b00f6a4fb9c6dfe7488283d499fc956eb19c97",
"body": "Release v2.4.13",
"is_bot": false,
"headline": "Merge pull request #5553 from tui-cs/release/v2.4.13",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-28T01:45:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "837f9f12c4255793233e7747664ba8fdcf7e3376",
"body": "Fixes #5544. FileDialog/OpenDialog: one unreadable entry makes the entire directory render empty (`FileDialogState.GetChildren` swallows the exception)",
"is_bot": false,
"headline": "Merge pull request #5548 from BDisp/issue/filedialog-unreadable-entry",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-28T01:23:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0b3a3efb2d3ed154b8ef06d6cde833644a1570a9",
"body": null,
"is_bot": false,
"headline": "Addressed @Copilot's recommendation change",
"author_name": "BDisp",
"author_login": "BDisp",
"committed_at": "2026-06-28T01:17:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "80ba244c2f53a32e8ee7ddeacb56aff9dfe5afb0",
"body": "Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Addressed @Copilot's suggested change",
"author_name": "BDisp",
"author_login": "BDisp",
"committed_at": "2026-06-28T01:11:16Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ae2047abec598989a10bea28d858e01e6b6b2f5f",
"body": "A new review found the widened same-frame fast path could leave TextFormatter\nunconstrained. UpdateTextFormatterText() clears ConstrainToWidth/Height, and the\nfast path then skipped SetRelativeLayout() — including its post-resolve cleanup\nthat restores constraints from GetContentWidth()/GetContentHe\n[…]\nstrained auto wrapping.\n\nFull UnitTestsParallelizable: 17467 passed / 0 failed; UnitTests.NonParallelizable:\n72 passed / 0 failed.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix formatter constraints lost on widened Text fast path (review P1)",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-06-28T00:44:57Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f3d8be102d54062b2aa78d17a020ec1a4a68383b",
"body": "Back-merge v2.4.12 from main into develop",
"is_bot": false,
"headline": "Merge pull request #5551 from tui-cs/backmerge/v2.4.12",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-28T00:38:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7cecb5a36ee0f65df9a40c553b0558e17820b06a",
"body": "Release v2.4.12",
"is_bot": false,
"headline": "Merge pull request #5550 from tui-cs/release/v2.4.12",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-28T00:33:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1f7b091f783b48cd13203ccc5e7645f6104e7c85",
"body": "… fixed/one-axis\n\nCode review of #5549 found two correctness gaps and one scope limitation in the\nText-change layout-skip optimization:\n\n1. Position changes were ignored. The predictor compared only size to Frame, but\n a Pos can depend on Text (e.g. Pos.Func reading view.Text), so a same-size\n t\n[…]\nedraw skips layout (#3). Full UnitTestsParallelizable: 17458 passed / 0 failed;\nUnitTests.NonParallelizable: 72 passed / 0 failed.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Address Codex review: predict full Frame, exact dim guard, broaden to…",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-06-27T23:56:02Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5fd918d316fd661e7ac396b4cabcf3a441ece975",
"body": null,
"is_bot": false,
"headline": "Merge pull request #5547 from tui-cs/fix/5543-raster-graphics-linger",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-27T23:09:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "125947959663def8d825bdc4dc89a58527e8e8ac",
"body": "…tire directory render empty (`FileDialogState.GetChildren` swallows the exception)",
"is_bot": false,
"headline": "Fixes #5544. FileDialog/OpenDialog: one unreadable entry makes the en…",
"author_name": "BDisp",
"author_login": "BDisp",
"committed_at": "2026-06-27T22:30:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3c5f8fdf513ff4e4e78d5720742d0e114eb22c34",
"body": "…unchanged size\n\nThe View.Text setter unconditionally called SetNeedsLayout(), which propagates\nlayout work up the entire ancestor chain and forces a redraw on every text\nchange - even when the recomputed Dim.Auto(DimAutoStyle.Text) size is identical\nto the current Frame (e.g. a once-per-second cloc\n[…]\nt request survives. DimAutoStyle.Auto, fixed dims,\nand not-yet-laid-out views all fall back to the original SetNeedsLayout() path.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fixes #5499. Skip SetNeedsLayout when Dim.Auto text recompute yields …",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-06-27T22:04:13Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c6a3e0457cfd52fd13566e80c0785ff00c3dc09b",
"body": "A view hosting a raster ImageView (UseRasterGraphics, Sixel/Kitty) left its\nout-of-band graphic on screen after it stopped being rendered — closing a modal\nDialog, hiding the ImageView, or removing it (or its container) from the\nhierarchy. The cells were repainted, but the Sixel DCS / Kitty placemen\n[…]\nreleased when removed, hidden,\nits container removed, and when a modal runnable ends; plus direct\nRetainRasterImages buffer tests.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Fix #5543: release raster graphics when their view stops being rendered",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-27T21:03:57Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0b11290894ec85ece5d0dd539c6e14c8a0dece8d",
"body": "…background (#5545)",
"is_bot": false,
"headline": "Fixes #5517. DropDownList dropped list uses Menu scheme for distinct …",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-27T20:45:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "46a23872d0bd0dbc9f7266d327fdd0bdb729aa3d",
"body": null,
"is_bot": true,
"headline": "Initial plan",
"author_name": "copilot-swe-agent[bot]",
"author_login": "Copilot",
"committed_at": "2026-06-27T19:21:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0f51956c926bf4cb4ce8a120ccac20b28e1b33b6",
"body": null,
"is_bot": false,
"headline": "Merge pull request #5500 from harder/kh/4522-needslayout-lifecycle",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-06-27T17:05:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cc605e6bedcce6a409f61d938bb667897be0ceec",
"body": "Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Apply suggestions from code review",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-06-26T22:43:35Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "125d3aec1d5674477c31aa65e18a984bc4fe06e8",
"body": null,
"is_bot": false,
"headline": "Delete plans/4522-needslayout-lifecycle.md",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-06-26T22:31:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "354a9bc18f97fc297770b6897b426d065c4e7834",
"body": null,
"is_bot": false,
"headline": "#4522: Fix render fingerprint review follow-up",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-06-26T22:22:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "52d2c785553cd831562bac7ddfb2c2456b50cff6",
"body": "AllViewsRenderFingerprintTests:\n- Fix resource leak: catch block now disposes view and driver before\n returning |EX:, matching all other exit paths\n- Track 'successful' (laid out + drawn without exception) separately\n from 'rendered' (total processed); assert successful > 30 so the\n smoke check i\n[…]\nm. Reconcile with §57.\n- Fix stale line references: :862/:864-865 -> :866/:868-869 for the\n NeedsLayout clear and SubViewsLaidOut fire sites\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "#4522: Address workflow review findings",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-06-26T22:06:00Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "eb52d01aec8d2bda7fd87b16dc402c50c24ecee4",
"body": "P1 (bug): AllViewsRenderFingerprintTests now separates filesystem\nenvironment exceptions (UnauthorizedAccessException / IOException from\nFileDialog EnableForDesign) from real layout/draw exceptions. ENV:\nexceptions are logged but do not count as test failures.\n\nP2a (weak test): StaleContentSizeCaptu\n[…]\nsynthetic\ntests don't exercise that path (child.Width= already marks ancestors);\nthe ad-hoc guard is still not recommended for other reasons.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "#4522: Address Codex review findings — fix three test quality issues",
"author_name": "Kevin Harder",
"author_login": "harder",
"committed_at": "2026-06-26T21:45:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "753872588f0d57e300968e04f150790d3bad3af8",
"body": "… develop",
"is_bot": false,
"headline": "Merge branch 'develop' of https://github.com/tui-cs/Terminal.Gui into…",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-25T19:05:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b6c17ed088776d90f67d03b6e67091d8a0c7defd",
"body": "…-0.57.1\n\nBump Spectre.Console from 0.57.0 to 0.57.1",
"is_bot": false,
"headline": "Merge pull request #5542 from tui-cs/dependabot/nuget/Spectre.Console…",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-25T16:39:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f9beeb65dc1577410f8069a52f8b61555cc404e9",
"body": "---\nupdated-dependencies:\n- dependency-name: Spectre.Console\n dependency-version: 0.57.1\n dependency-type: direct:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump Spectre.Console from 0.57.0 to 0.57.1",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-25T14:45:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f731911e50c2988a4b273c4f468edbed5f455d4a",
"body": "…otchas\n\nFixes #5525. Document v2 agent gotchas",
"is_bot": false,
"headline": "Merge pull request #5539 from tui-cs/copilot/document-high-value-v2-g…",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-24T23:32:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5085b354f5f59c29b5856c27c5eecd1ad6a4e7bc",
"body": "Back-merge v2.4.11 from main into develop",
"is_bot": false,
"headline": "Merge pull request #5541 from tui-cs/backmerge/v2.4.11",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-24T23:31:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d090f5064d876d4f358492c18f9f8cb3a50fd78f",
"body": null,
"is_bot": false,
"headline": "Merge pull request #5540 from tui-cs/release/v2.4.11",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-24T22:39:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d7cc5798522d666bacab8815c4112ed0b9c6a7fb",
"body": "…-test",
"is_bot": false,
"headline": "Merge pull request #5519 from tui-cs/tig/imageview-x-minus-1-overdraw…",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-24T21:02:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "675f7271e413eb252e586662d5cc47f690a57601",
"body": null,
"is_bot": true,
"headline": "Address review feedback on examples",
"author_name": "copilot-swe-agent[bot]",
"author_login": "Copilot",
"committed_at": "2026-06-24T13:33:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8bb96f94f50f66e0d6698e25b6f947ce43de8115",
"body": null,
"is_bot": true,
"headline": "Document v2 agent gotchas",
"author_name": "copilot-swe-agent[bot]",
"author_login": "Copilot",
"committed_at": "2026-06-24T04:25:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ba1e0c2d32a901aba8ea2ef8f97735f387c0ce01",
"body": "Bound UICatalog in-memory log capture to stop long-run memory growth",
"is_bot": false,
"headline": "Merge pull request #5465 from tui-cs/copilot/fix-memory-leak",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-24T04:18:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e0a2657ec9e61a89d2cf7978ff192f247a7df982",
"body": null,
"is_bot": true,
"headline": "Initial plan",
"author_name": "copilot-swe-agent[bot]",
"author_login": "Copilot",
"committed_at": "2026-06-24T04:18:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f3fbd45a462af337eba6b1ba867859cf0fc37669",
"body": "readme tweak",
"is_bot": false,
"headline": "Merge pull request #5538 from tui-cs/tig-patch-1",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-24T03:40:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "36ae7ef0d3d031b7ccacf408b547f0cb1effa21e",
"body": "Removed version announcement and added section header for Terminal.Gui.",
"is_bot": false,
"headline": "Update README to enhance description of Terminal.Gui",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-24T03:40:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0c8f194f934a4549a11b88fbcd9c25a5d35a1b0d",
"body": "back merge main->develop",
"is_bot": false,
"headline": "Merge pull request #5537 from tui-cs/main",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-24T03:39:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1b67540a2da4faa0c14bc95d1dc4a9672896805f",
"body": "tui-cs cleanup",
"is_bot": false,
"headline": "Merge pull request #5536 from tui-cs/tig-patch-1",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-24T03:38:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "842c085fd18e3edb2b966ed3a98392c90822cb89",
"body": "Removed license badge from README.md",
"is_bot": false,
"headline": "Remove license badge from README",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-24T03:37:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b017eb0867206e58f5a8dafb3d4266355ec0c2be",
"body": "docs(getting-started): use Accepted for side effects (canonical rule)",
"is_bot": false,
"headline": "Merge pull request #5534 from tui-cs/docs/getting-started-accepted",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-23T20:39:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c44737cee22fbb1926c716adc71bd90ea049a6c7",
"body": "Maintainer ruling: Accepted is canonical for side effects; Accepting only to cancel.\ngetting-started.md said 'event handling uses the Accepting event', contradicting that.\nReword to: use Accepted for side effects (button presses); use Accepting only to\ninspect/cancel (e.Handled = true). Both are public events on View; xrefs resolve.\n\nPart of #5525.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(getting-started): use Accepted for side effects (canonical rule)",
"author_name": "Tig",
"author_login": "tig",
"committed_at": "2026-06-23T20:35:14Z",
"body_truncated": false,
"is_coding_agent": true
}
],
"releases_count": 73,
"commits_last_year": 1587,
"latest_release_at": "2026-07-07T12:20:38Z",
"latest_release_tag": "v2.4.17",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 44,
"days_since_latest_release": 21,
"mean_days_between_releases": 1.6
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 87,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "Terminal.Gui.Interop.Spectre",
"exists": true,
"license": null,
"keywords": [
"terminal",
"gui",
"console",
"spectre",
"interop"
],
"ecosystem": "nuget",
"matches_repo": true,
"registry_url": "https://www.nuget.org/packages/Terminal.Gui.Interop.Spectre",
"is_deprecated": false,
"latest_version": "2.4.17",
"repository_url": "https://github.com/tui-cs/Terminal.Gui",
"versions_count": 14,
"total_downloads": 4734,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-07-07T12:22:04.890000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 21
}
]
},
"popularity": {
"forks": 783,
"stars": 11139,
"watchers": 142,
"fork_history": {
"days": [
{
"date": "2018-01-27",
"count": 1
},
{
"date": "2018-01-28",
"count": 2
},
{
"date": "2018-01-30",
"count": 2
},
{
"date": "2018-02-02",
"count": 1
},
{
"date": "2018-02-03",
"count": 1
},
{
"date": "2018-02-04",
"count": 2
},
{
"date": "2018-02-05",
"count": 3
},
{
"date": "2018-02-12",
"count": 1
},
{
"date": "2018-02-16",
"count": 10
},
{
"date": "2018-02-17",
"count": 5
},
{
"date": "2018-02-18",
"count": 3
},
{
"date": "2018-02-19",
"count": 1
},
{
"date": "2018-02-20",
"count": 1
},
{
"date": "2018-02-22",
"count": 1
},
{
"date": "2018-02-23",
"count": 1
},
{
"date": "2018-02-24",
"count": 1
},
{
"date": "2018-02-25",
"count": 1
},
{
"date": "2018-02-26",
"count": 1
},
{
"date": "2018-02-27",
"count": 1
},
{
"date": "2018-03-01",
"count": 2
},
{
"date": "2018-03-02",
"count": 2
},
{
"date": "2018-03-03",
"count": 1
},
{
"date": "2018-03-06",
"count": 1
},
{
"date": "2018-03-08",
"count": 2
},
{
"date": "2018-03-13",
"count": 1
},
{
"date": "2018-03-26",
"count": 1
},
{
"date": "2018-03-27",
"count": 1
},
{
"date": "2018-03-31",
"count": 1
},
{
"date": "2018-04-03",
"count": 1
},
{
"date": "2018-04-09",
"count": 2
},
{
"date": "2018-04-11",
"count": 1
},
{
"date": "2018-04-12",
"count": 1
},
{
"date": "2018-04-16",
"count": 1
},
{
"date": "2018-04-24",
"count": 1
},
{
"date": "2018-05-03",
"count": 2
},
{
"date": "2018-05-05",
"count": 1
},
{
"date": "2018-05-06",
"count": 1
},
{
"date": "2018-05-08",
"count": 1
},
{
"date": "2018-05-09",
"count": 1
},
{
"date": "2018-05-13",
"count": 1
},
{
"date": "2018-05-14",
"count": 2
},
{
"date": "2018-05-15",
"count": 1
},
{
"date": "2018-05-17",
"count": 2
},
{
"date": "2018-05-21",
"count": 2
},
{
"date": "2018-05-24",
"count": 2
},
{
"date": "2018-05-27",
"count": 1
},
{
"date": "2018-06-02",
"count": 2
},
{
"date": "2018-06-04",
"count": 1
},
{
"date": "2018-06-09",
"count": 1
},
{
"date": "2018-06-11",
"count": 1
},
{
"date": "2018-06-12",
"count": 1
},
{
"date": "2018-06-13",
"count": 1
},
{
"date": "2018-06-19",
"count": 1
},
{
"date": "2018-06-25",
"count": 1
},
{
"date": "2018-07-05",
"count": 1
},
{
"date": "2018-07-07",
"count": 1
},
{
"date": "2018-07-10",
"count": 1
},
{
"date": "2018-07-12",
"count": 1
},
{
"date": "2018-07-13",
"count": 1
},
{
"date": "2018-07-16",
"count": 1
},
{
"date": "2018-07-20",
"count": 1
},
{
"date": "2018-07-24",
"count": 1
},
{
"date": "2018-08-01",
"count": 1
},
{
"date": "2018-08-10",
"count": 1
},
{
"date": "2018-08-12",
"count": 1
},
{
"date": "2018-08-13",
"count": 1
},
{
"date": "2018-08-24",
"count": 1
},
{
"date": "2018-09-11",
"count": 1
},
{
"date": "2018-09-14",
"count": 1
},
{
"date": "2018-09-24",
"count": 1
},
{
"date": "2018-09-25",
"count": 1
},
{
"date": "2018-09-26",
"count": 2
},
{
"date": "2018-10-09",
"count": 1
},
{
"date": "2018-10-10",
"count": 1
},
{
"date": "2018-10-16",
"count": 1
},
{
"date": "2018-10-25",
"count": 1
},
{
"date": "2018-10-26",
"count": 1
},
{
"date": "2018-10-30",
"count": 1
},
{
"date": "2018-11-03",
"count": 1
},
{
"date": "2018-11-26",
"count": 1
},
{
"date": "2018-12-22",
"count": 1
},
{
"date": "2019-01-10",
"count": 1
},
{
"date": "2019-01-16",
"count": 1
},
{
"date": "2019-01-30",
"count": 1
},
{
"date": "2019-02-04",
"count": 1
},
{
"date": "2019-02-05",
"count": 1
},
{
"date": "2019-02-07",
"count": 1
},
{
"date": "2019-02-11",
"count": 1
},
{
"date": "2019-02-25",
"count": 1
},
{
"date": "2019-03-17",
"count": 1
},
{
"date": "2019-03-21",
"count": 1
},
{
"date": "2019-04-05",
"count": 1
},
{
"date": "2019-04-16",
"count": 1
},
{
"date": "2019-04-24",
"count": 4
},
{
"date": "2019-04-25",
"count": 3
},
{
"date": "2019-04-26",
"count": 1
},
{
"date": "2019-04-29",
"count": 1
},
{
"date": "2019-04-30",
"count": 1
},
{
"date": "2019-05-01",
"count": 1
},
{
"date": "2019-05-02",
"count": 1
},
{
"date": "2019-05-08",
"count": 1
},
{
"date": "2019-05-09",
"count": 1
},
{
"date": "2019-05-14",
"count": 1
},
{
"date": "2019-05-18",
"count": 1
},
{
"date": "2019-06-09",
"count": 1
},
{
"date": "2019-06-13",
"count": 1
},
{
"date": "2019-06-14",
"count": 1
},
{
"date": "2019-06-20",
"count": 1
},
{
"date": "2019-07-01",
"count": 1
},
{
"date": "2019-07-03",
"count": 1
},
{
"date": "2019-08-03",
"count": 1
},
{
"date": "2019-08-06",
"count": 3
},
{
"date": "2019-08-07",
"count": 1
},
{
"date": "2019-08-09",
"count": 1
},
{
"date": "2019-08-12",
"count": 1
},
{
"date": "2019-08-14",
"count": 1
},
{
"date": "2019-08-20",
"count": 1
},
{
"date": "2019-08-27",
"count": 1
},
{
"date": "2019-08-30",
"count": 1
},
{
"date": "2019-09-02",
"count": 2
},
{
"date": "2019-09-03",
"count": 1
},
{
"date": "2019-09-16",
"count": 2
},
{
"date": "2019-09-17",
"count": 1
},
{
"date": "2019-09-25",
"count": 1
},
{
"date": "2019-10-07",
"count": 1
},
{
"date": "2019-10-16",
"count": 1
},
{
"date": "2019-10-22",
"count": 1
},
{
"date": "2019-10-23",
"count": 1
},
{
"date": "2019-10-29",
"count": 1
},
{
"date": "2019-11-02",
"count": 1
},
{
"date": "2019-11-04",
"count": 1
},
{
"date": "2019-11-05",
"count": 1
},
{
"date": "2019-11-13",
"count": 1
},
{
"date": "2019-11-14",
"count": 1
},
{
"date": "2019-11-17",
"count": 2
},
{
"date": "2019-11-26",
"count": 1
},
{
"date": "2019-12-01",
"count": 1
},
{
"date": "2019-12-10",
"count": 1
},
{
"date": "2019-12-27",
"count": 1
},
{
"date": "2019-12-29",
"count": 1
},
{
"date": "2019-12-31",
"count": 1
},
{
"date": "2020-01-03",
"count": 1
},
{
"date": "2020-01-05",
"count": 1
},
{
"date": "2020-01-10",
"count": 1
},
{
"date": "2020-01-11",
"count": 1
},
{
"date": "2020-01-13",
"count": 1
},
{
"date": "2020-01-14",
"count": 1
},
{
"date": "2020-01-16",
"count": 1
},
{
"date": "2020-01-20",
"count": 1
},
{
"date": "2020-01-23",
"count": 1
},
{
"date": "2020-01-25",
"count": 1
},
{
"date": "2020-02-03",
"count": 1
},
{
"date": "2020-02-06",
"count": 1
},
{
"date": "2020-02-09",
"count": 2
},
{
"date": "2020-02-10",
"count": 1
},
{
"date": "2020-02-16",
"count": 1
},
{
"date": "2020-02-17",
"count": 1
},
{
"date": "2020-02-24",
"count": 3
},
{
"date": "2020-02-25",
"count": 1
},
{
"date": "2020-02-26",
"count": 1
},
{
"date": "2020-02-27",
"count": 1
},
{
"date": "2020-02-28",
"count": 2
},
{
"date": "2020-03-01",
"count": 1
},
{
"date": "2020-03-02",
"count": 1
},
{
"date": "2020-03-03",
"count": 1
},
{
"date": "2020-03-11",
"count": 1
},
{
"date": "2020-03-12",
"count": 1
},
{
"date": "2020-03-13",
"count": 1
},
{
"date": "2020-03-15",
"count": 1
},
{
"date": "2020-03-19",
"count": 1
},
{
"date": "2020-03-24",
"count": 1
},
{
"date": "2020-04-01",
"count": 1
},
{
"date": "2020-04-02",
"count": 2
},
{
"date": "2020-04-13",
"count": 1
},
{
"date": "2020-04-14",
"count": 1
},
{
"date": "2020-04-20",
"count": 1
},
{
"date": "2020-04-23",
"count": 1
},
{
"date": "2020-04-25",
"count": 1
},
{
"date": "2020-05-04",
"count": 1
},
{
"date": "2020-05-08",
"count": 2
},
{
"date": "2020-05-14",
"count": 1
},
{
"date": "2020-05-15",
"count": 1
},
{
"date": "2020-05-16",
"count": 1
},
{
"date": "2020-05-18",
"count": 2
},
{
"date": "2020-05-20",
"count": 1
},
{
"date": "2020-05-21",
"count": 2
},
{
"date": "2020-05-25",
"count": 1
},
{
"date": "2020-05-27",
"count": 1
},
{
"date": "2020-06-02",
"count": 1
},
{
"date": "2020-06-04",
"count": 1
},
{
"date": "2020-06-05",
"count": 2
},
{
"date": "2020-06-06",
"count": 1
},
{
"date": "2020-06-07",
"count": 1
},
{
"date": "2020-06-08",
"count": 1
},
{
"date": "2020-06-12",
"count": 1
},
{
"date": "2020-06-14",
"count": 1
},
{
"date": "2020-06-15",
"count": 1
},
{
"date": "2020-06-16",
"count": 2
},
{
"date": "2020-06-17",
"count": 1
},
{
"date": "2020-06-24",
"count": 1
},
{
"date": "2020-06-28",
"count": 1
},
{
"date": "2020-06-29",
"count": 2
},
{
"date": "2020-07-02",
"count": 1
},
{
"date": "2020-07-04",
"count": 1
},
{
"date": "2020-07-09",
"count": 1
},
{
"date": "2020-07-15",
"count": 1
},
{
"date": "2020-07-18",
"count": 1
},
{
"date": "2020-07-21",
"count": 3
},
{
"date": "2020-07-24",
"count": 1
},
{
"date": "2020-07-26",
"count": 1
},
{
"date": "2020-08-01",
"count": 1
},
{
"date": "2020-08-06",
"count": 1
},
{
"date": "2020-08-07",
"count": 1
},
{
"date": "2020-08-08",
"count": 1
},
{
"date": "2020-08-16",
"count": 1
},
{
"date": "2020-08-17",
"count": 2
},
{
"date": "2020-08-18",
"count": 1
},
{
"date": "2020-08-26",
"count": 1
},
{
"date": "2020-08-27",
"count": 1
},
{
"date": "2020-08-28",
"count": 1
},
{
"date": "2020-08-31",
"count": 1
},
{
"date": "2020-09-02",
"count": 1
},
{
"date": "2020-09-03",
"count": 1
},
{
"date": "2020-09-04",
"count": 2
},
{
"date": "2020-09-05",
"count": 1
},
{
"date": "2020-09-06",
"count": 1
},
{
"date": "2020-09-12",
"count": 2
},
{
"date": "2020-09-16",
"count": 1
},
{
"date": "2020-09-17",
"count": 2
},
{
"date": "2020-09-18",
"count": 2
},
{
"date": "2020-09-23",
"count": 1
},
{
"date": "2020-09-27",
"count": 1
},
{
"date": "2020-09-29",
"count": 1
},
{
"date": "2020-10-01",
"count": 1
},
{
"date": "2020-10-03",
"count": 1
},
{
"date": "2020-10-07",
"count": 1
},
{
"date": "2020-10-10",
"count": 1
},
{
"date": "2020-10-27",
"count": 1
},
{
"date": "2020-11-03",
"count": 1
},
{
"date": "2020-11-09",
"count": 1
},
{
"date": "2020-11-12",
"count": 1
},
{
"date": "2020-11-15",
"count": 1
},
{
"date": "2020-11-19",
"count": 1
},
{
"date": "2020-11-21",
"count": 1
},
{
"date": "2020-11-30",
"count": 1
},
{
"date": "2020-12-07",
"count": 1
},
{
"date": "2020-12-09",
"count": 1
},
{
"date": "2020-12-10",
"count": 4
},
{
"date": "2020-12-12",
"count": 1
},
{
"date": "2020-12-16",
"count": 1
},
{
"date": "2021-01-02",
"count": 1
},
{
"date": "2021-01-06",
"count": 1
},
{
"date": "2021-01-13",
"count": 1
},
{
"date": "2021-01-15",
"count": 1
},
{
"date": "2021-01-16",
"count": 1
},
{
"date": "2021-01-17",
"count": 1
},
{
"date": "2021-01-18",
"count": 1
},
{
"date": "2021-01-21",
"count": 1
},
{
"date": "2021-01-23",
"count": 2
},
{
"date": "2021-01-26",
"count": 1
},
{
"date": "2021-01-27",
"count": 1
},
{
"date": "2021-01-30",
"count": 1
},
{
"date": "2021-02-05",
"count": 1
},
{
"date": "2021-02-09",
"count": 2
},
{
"date": "2021-02-11",
"count": 1
},
{
"date": "2021-02-14",
"count": 1
},
{
"date": "2021-02-16",
"count": 1
},
{
"date": "2021-02-25",
"count": 1
},
{
"date": "2021-02-26",
"count": 1
},
{
"date": "2021-02-27",
"count": 2
},
{
"date": "2021-03-04",
"count": 2
},
{
"date": "2021-03-07",
"count": 2
},
{
"date": "2021-03-10",
"count": 1
},
{
"date": "2021-03-12",
"count": 1
},
{
"date": "2021-03-17",
"count": 1
},
{
"date": "2021-03-22",
"count": 1
},
{
"date": "2021-03-27",
"count": 1
},
{
"date": "2021-03-29",
"count": 1
},
{
"date": "2021-03-30",
"count": 1
},
{
"date": "2021-04-01",
"count": 1
},
{
"date": "2021-04-12",
"count": 1
},
{
"date": "2021-04-19",
"count": 1
},
{
"date": "2021-04-20",
"count": 1
},
{
"date": "2021-04-21",
"count": 1
},
{
"date": "2021-04-23",
"count": 1
},
{
"date": "2021-04-25",
"count": 1
},
{
"date": "2021-04-26",
"count": 1
},
{
"date": "2021-04-28",
"count": 4
},
{
"date": "2021-04-29",
"count": 1
},
{
"date": "2021-05-02",
"count": 1
},
{
"date": "2021-05-09",
"count": 1
},
{
"date": "2021-05-14",
"count": 1
},
{
"date": "2021-05-16",
"count": 1
},
{
"date": "2021-05-21",
"count": 2
},
{
"date": "2021-05-24",
"count": 1
},
{
"date": "2021-05-25",
"count": 1
},
{
"date": "2021-06-22",
"count": 1
},
{
"date": "2021-07-04",
"count": 2
},
{
"date": "2021-07-21",
"count": 1
},
{
"date": "2021-07-24",
"count": 1
},
{
"date": "2021-07-27",
"count": 2
},
{
"date": "2021-07-28",
"count": 1
},
{
"date": "2021-08-06",
"count": 1
},
{
"date": "2021-08-08",
"count": 1
},
{
"date": "2021-08-09",
"count": 1
},
{
"date": "2021-08-11",
"count": 1
},
{
"date": "2021-08-12",
"count": 1
},
{
"date": "2021-08-18",
"count": 1
},
{
"date": "2021-08-19",
"count": 1
},
{
"date": "2021-08-20",
"count": 1
},
{
"date": "2021-08-24",
"count": 1
},
{
"date": "2021-08-25",
"count": 1
},
{
"date": "2021-08-26",
"count": 1
},
{
"date": "2021-08-31",
"count": 1
},
{
"date": "2021-09-03",
"count": 1
},
{
"date": "2021-09-07",
"count": 1
},
{
"date": "2021-09-11",
"count": 1
},
{
"date": "2021-09-25",
"count": 1
},
{
"date": "2021-10-09",
"count": 1
},
{
"date": "2021-10-19",
"count": 1
},
{
"date": "2021-11-05",
"count": 1
},
{
"date": "2021-11-12",
"count": 1
},
{
"date": "2021-11-15",
"count": 1
},
{
"date": "2021-11-17",
"count": 1
},
{
"date": "2021-11-19",
"count": 1
},
{
"date": "2021-11-20",
"count": 1
},
{
"date": "2021-11-21",
"count": 1
},
{
"date": "2021-11-23",
"count": 1
},
{
"date": "2021-11-25",
"count": 1
},
{
"date": "2021-12-05",
"count": 1
},
{
"date": "2021-12-13",
"count": 2
},
{
"date": "2021-12-14",
"count": 2
},
{
"date": "2021-12-16",
"count": 1
},
{
"date": "2021-12-28",
"count": 1
},
{
"date": "2022-01-08",
"count": 1
},
{
"date": "2022-01-09",
"count": 1
},
{
"date": "2022-01-10",
"count": 1
},
{
"date": "2022-01-13",
"count": 1
},
{
"date": "2022-01-14",
"count": 1
},
{
"date": "2022-01-20",
"count": 1
},
{
"date": "2022-01-21",
"count": 1
},
{
"date": "2022-01-22",
"count": 1
},
{
"date": "2022-01-25",
"count": 1
},
{
"date": "2022-01-26",
"count": 2
},
{
"date": "2022-02-05",
"count": 2
},
{
"date": "2022-02-09",
"count": 1
},
{
"date": "2022-02-19",
"count": 1
},
{
"date": "2022-02-21",
"count": 1
},
{
"date": "2022-02-22",
"count": 1
},
{
"date": "2022-02-26",
"count": 1
},
{
"date": "2022-02-28",
"count": 1
},
{
"date": "2022-03-12",
"count": 1
},
{
"date": "2022-03-14",
"count": 1
},
{
"date": "2022-03-16",
"count": 2
},
{
"date": "2022-03-22",
"count": 1
},
{
"date": "2022-03-24",
"count": 1
},
{
"date": "2022-03-25",
"count": 1
},
{
"date": "2022-03-26",
"count": 1
},
{
"date": "2022-03-29",
"count": 1
},
{
"date": "2022-04-05",
"count": 2
},
{
"date": "2022-04-12",
"count": 1
},
{
"date": "2022-04-17",
"count": 1
},
{
"date": "2022-04-18",
"count": 1
},
{
"date": "2022-04-22",
"count": 1
},
{
"date": "2022-04-25",
"count": 1
},
{
"date": "2022-05-01",
"count": 1
},
{
"date": "2022-05-03",
"count": 1
},
{
"date": "2022-05-08",
"count": 1
},
{
"date": "2022-05-14",
"count": 1
},
{
"date": "2022-05-15",
"count": 1
},
{
"date": "2022-05-16",
"count": 1
},
{
"date": "2022-05-17",
"count": 1
},
{
"date": "2022-05-20",
"count": 1
},
{
"date": "2022-05-22",
"count": 1
},
{
"date": "2022-05-23",
"count": 1
},
{
"date": "2022-05-25",
"count": 1
},
{
"date": "2022-05-27",
"count": 2
},
{
"date": "2022-05-28",
"count": 2
},
{
"date": "2022-06-02",
"count": 3
},
{
"date": "2022-06-04",
"count": 2
},
{
"date": "2022-06-09",
"count": 2
},
{
"date": "2022-06-22",
"count": 1
},
{
"date": "2022-06-24",
"count": 3
},
{
"date": "2022-06-25",
"count": 1
},
{
"date": "2022-06-26",
"count": 1
},
{
"date": "2022-07-21",
"count": 1
},
{
"date": "2022-07-25",
"count": 1
},
{
"date": "2022-07-29",
"count": 1
},
{
"date": "2022-08-20",
"count": 2
},
{
"date": "2022-08-23",
"count": 1
},
{
"date": "2022-08-25",
"count": 1
},
{
"date": "2022-08-27",
"count": 1
},
{
"date": "2022-09-02",
"count": 1
},
{
"date": "2022-09-04",
"count": 1
},
{
"date": "2022-09-05",
"count": 1
},
{
"date": "2022-09-06",
"count": 1
},
{
"date": "2022-09-07",
"count": 1
},
{
"date": "2022-09-08",
"count": 1
},
{
"date": "2022-09-16",
"count": 2
},
{
"date": "2022-09-18",
"count": 1
},
{
"date": "2022-09-20",
"count": 1
},
{
"date": "2022-09-21",
"count": 3
},
{
"date": "2022-09-26",
"count": 2
},
{
"date": "2022-09-27",
"count": 1
},
{
"date": "2022-09-29",
"count": 1
},
{
"date": "2022-10-07",
"count": 1
},
{
"date": "2022-10-08",
"count": 1
},
{
"date": "2022-10-12",
"count": 1
},
{
"date": "2022-10-13",
"count": 2
},
{
"date": "2022-10-14",
"count": 2
},
{
"date": "2022-10-15",
"count": 1
},
{
"date": "2022-10-24",
"count": 1
},
{
"date": "2022-10-30",
"count": 1
},
{
"date": "2022-11-05",
"count": 1
},
{
"date": "2022-11-19",
"count": 1
},
{
"date": "2022-11-23",
"count": 1
},
{
"date": "2022-11-24",
"count": 1
},
{
"date": "2022-11-29",
"count": 1
},
{
"date": "2022-12-01",
"count": 1
},
{
"date": "2022-12-17",
"count": 1
},
{
"date": "2022-12-24",
"count": 1
},
{
"date": "2022-12-31",
"count": 1
},
{
"date": "2023-01-01",
"count": 1
},
{
"date": "2023-01-05",
"count": 1
},
{
"date": "2023-01-09",
"count": 1
},
{
"date": "2023-01-29",
"count": 1
},
{
"date": "2023-02-03",
"count": 1
},
{
"date": "2023-02-05",
"count": 1
},
{
"date": "2023-02-08",
"count": 1
},
{
"date": "2023-03-08",
"count": 1
},
{
"date": "2023-03-11",
"count": 2
},
{
"date": "2023-03-12",
"count": 1
},
{
"date": "2023-03-17",
"count": 3
},
{
"date": "2023-03-24",
"count": 1
},
{
"date": "2023-04-01",
"count": 1
},
{
"date": "2023-04-02",
"count": 1
},
{
"date": "2023-04-13",
"count": 1
},
{
"date": "2023-04-18",
"count": 1
},
{
"date": "2023-04-19",
"count": 1
},
{
"date": "2023-04-23",
"count": 1
},
{
"date": "2023-04-25",
"count": 1
},
{
"date": "2023-05-06",
"count": 1
},
{
"date": "2023-05-11",
"count": 1
},
{
"date": "2023-05-15",
"count": 1
},
{
"date": "2023-05-19",
"count": 1
},
{
"date": "2023-05-31",
"count": 2
},
{
"date": "2023-06-07",
"count": 1
},
{
"date": "2023-06-11",
"count": 1
},
{
"date": "2023-06-16",
"count": 1
},
{
"date": "2023-06-20",
"count": 1
},
{
"date": "2023-06-23",
"count": 1
},
{
"date": "2023-06-24",
"count": 1
},
{
"date": "2023-06-26",
"count": 1
},
{
"date": "2023-06-27",
"count": 1
},
{
"date": "2023-07-11",
"count": 1
},
{
"date": "2023-07-14",
"count": 1
},
{
"date": "2023-07-19",
"count": 1
},
{
"date": "2023-07-25",
"count": 1
},
{
"date": "2023-07-31",
"count": 1
},
{
"date": "2023-08-03",
"count": 1
},
{
"date": "2023-08-04",
"count": 1
},
{
"date": "2023-08-08",
"count": 1
},
{
"date": "2023-08-11",
"count": 1
},
{
"date": "2023-08-18",
"count": 1
},
{
"date": "2023-08-23",
"count": 1
},
{
"date": "2023-08-31",
"count": 1
},
{
"date": "2023-09-06",
"count": 1
},
{
"date": "2023-09-11",
"count": 1
},
{
"date": "2023-09-22",
"count": 1
},
{
"date": "2023-10-07",
"count": 1
},
{
"date": "2023-10-21",
"count": 1
},
{
"date": "2023-10-22",
"count": 1
},
{
"date": "2023-10-23",
"count": 1
},
{
"date": "2023-10-26",
"count": 2
},
{
"date": "2023-10-27",
"count": 1
},
{
"date": "2023-11-08",
"count": 1
},
{
"date": "2023-11-13",
"count": 1
},
{
"date": "2023-11-24",
"count": 1
},
{
"date": "2023-11-29",
"count": 1
},
{
"date": "2023-11-30",
"count": 1
},
{
"date": "2023-12-05",
"count": 2
},
{
"date": "2023-12-09",
"count": 1
},
{
"date": "2024-01-08",
"count": 1
},
{
"date": "2024-01-14",
"count": 1
},
{
"date": "2024-01-15",
"count": 2
},
{
"date": "2024-01-16",
"count": 4
},
{
"date": "2024-01-19",
"count": 1
},
{
"date": "2024-01-28",
"count": 1
},
{
"date": "2024-02-03",
"count": 1
},
{
"date": "2024-02-11",
"count": 1
},
{
"date": "2024-02-23",
"count": 1
},
{
"date": "2024-03-26",
"count": 1
},
{
"date": "2024-04-02",
"count": 1
},
{
"date": "2024-04-06",
"count": 1
},
{
"date": "2024-04-23",
"count": 1
},
{
"date": "2024-04-27",
"count": 1
},
{
"date": "2024-04-28",
"count": 1
},
{
"date": "2024-05-01",
"count": 1
},
{
"date": "2024-05-05",
"count": 1
},
{
"date": "2024-05-06",
"count": 3
},
{
"date": "2024-05-08",
"count": 2
},
{
"date": "2024-05-17",
"count": 1
},
{
"date": "2024-05-18",
"count": 1
},
{
"date": "2024-05-20",
"count": 1
},
{
"date": "2024-05-28",
"count": 1
},
{
"date": "2024-06-01",
"count": 1
},
{
"date": "2024-06-10",
"count": 1
},
{
"date": "2024-06-13",
"count": 1
},
{
"date": "2024-06-27",
"count": 1
},
{
"date": "2024-07-06",
"count": 1
},
{
"date": "2024-07-08",
"count": 2
},
{
"date": "2024-07-21",
"count": 1
},
{
"date": "2024-07-25",
"count": 2
},
{
"date": "2024-07-28",
"count": 1
},
{
"date": "2024-08-07",
"count": 1
},
{
"date": "2024-08-13",
"count": 1
},
{
"date": "2024-08-18",
"count": 1
},
{
"date": "2024-08-23",
"count": 1
},
{
"date": "2024-08-27",
"count": 1
},
{
"date": "2024-08-28",
"count": 1
},
{
"date": "2024-09-02",
"count": 1
},
{
"date": "2024-09-13",
"count": 1
},
{
"date": "2024-09-15",
"count": 1
},
{
"date": "2024-09-17",
"count": 1
},
{
"date": "2024-09-28",
"count": 1
},
{
"date": "2024-09-29",
"count": 1
},
{
"date": "2024-10-07",
"count": 1
},
{
"date": "2024-10-16",
"count": 1
},
{
"date": "2024-10-23",
"count": 1
},
{
"date": "2024-10-30",
"count": 1
},
{
"date": "2024-11-08",
"count": 1
},
{
"date": "2024-11-16",
"count": 1
},
{
"date": "2024-11-17",
"count": 1
},
{
"date": "2024-11-19",
"count": 2
},
{
"date": "2024-11-22",
"count": 2
},
{
"date": "2024-11-24",
"count": 1
},
{
"date": "2024-11-29",
"count": 1
},
{
"date": "2024-12-26",
"count": 1
},
{
"date": "2025-01-17",
"count": 1
},
{
"date": "2025-01-18",
"count": 1
},
{
"date": "2025-01-20",
"count": 1
},
{
"date": "2025-01-23",
"count": 1
},
{
"date": "2025-01-29",
"count": 1
},
{
"date": "2025-02-13",
"count": 3
},
{
"date": "2025-02-15",
"count": 1
},
{
"date": "2025-02-23",
"count": 1
},
{
"date": "2025-02-25",
"count": 1
},
{
"date": "2025-03-10",
"count": 1
},
{
"date": "2025-03-12",
"count": 1
},
{
"date": "2025-03-20",
"count": 1
},
{
"date": "2025-03-29",
"count": 1
},
{
"date": "2025-04-01",
"count": 1
},
{
"date": "2025-04-05",
"count": 1
},
{
"date": "2025-04-12",
"count": 1
},
{
"date": "2025-04-28",
"count": 1
},
{
"date": "2025-05-04",
"count": 1
},
{
"date": "2025-05-07",
"count": 2
},
{
"date": "2025-05-19",
"count": 2
},
{
"date": "2025-05-27",
"count": 2
},
{
"date": "2025-05-28",
"count": 2
},
{
"date": "2025-06-25",
"count": 1
},
{
"date": "2025-06-28",
"count": 1
},
{
"date": "2025-06-29",
"count": 1
},
{
"date": "2025-07-06",
"count": 1
},
{
"date": "2025-07-07",
"count": 1
},
{
"date": "2025-07-17",
"count": 1
},
{
"date": "2025-07-23",
"count": 1
},
{
"date": "2025-08-17",
"count": 1
},
{
"date": "2025-08-22",
"count": 1
},
{
"date": "2025-09-08",
"count": 1
},
{
"date": "2025-09-11",
"count": 1
},
{
"date": "2025-09-22",
"count": 1
},
{
"date": "2025-10-06",
"count": 1
},
{
"date": "2025-10-10",
"count": 1
},
{
"date": "2025-10-13",
"count": 1
},
{
"date": "2025-10-21",
"count": 1
},
{
"date": "2025-10-25",
"count": 1
},
{
"date": "2025-11-10",
"count": 1
},
{
"date": "2025-11-11",
"count": 1
},
{
"date": "2025-11-12",
"count": 1
},
{
"date": "2025-11-15",
"count": 1
},
{
"date": "2025-11-19",
"count": 1
},
{
"date": "2025-11-21",
"count": 1
},
{
"date": "2025-11-27",
"count": 2
},
{
"date": "2025-11-28",
"count": 2
},
{
"date": "2025-12-09",
"count": 1
},
{
"date": "2025-12-12",
"count": 2
},
{
"date": "2025-12-14",
"count": 1
},
{
"date": "2025-12-18",
"count": 1
},
{
"date": "2025-12-20",
"count": 1
},
{
"date": "2025-12-21",
"count": 1
},
{
"date": "2025-12-26",
"count": 1
},
{
"date": "2025-12-27",
"count": 1
},
{
"date": "2026-01-01",
"count": 1
},
{
"date": "2026-01-12",
"count": 2
},
{
"date": "2026-01-16",
"count": 1
},
{
"date": "2026-01-24",
"count": 1
},
{
"date": "2026-01-25",
"count": 2
},
{
"date": "2026-01-26",
"count": 1
},
{
"date": "2026-02-01",
"count": 1
},
{
"date": "2026-02-02",
"count": 1
},
{
"date": "2026-02-05",
"count": 1
},
{
"date": "2026-02-06",
"count": 1
},
{
"date": "2026-02-11",
"count": 1
},
{
"date": "2026-02-20",
"count": 2
},
{
"date": "2026-02-21",
"count": 2
},
{
"date": "2026-02-22",
"count": 1
},
{
"date": "2026-03-01",
"count": 1
},
{
"date": "2026-03-02",
"count": 3
},
{
"date": "2026-03-04",
"count": 1
},
{
"date": "2026-03-11",
"count": 1
},
{
"date": "2026-03-21",
"count": 1
},
{
"date": "2026-03-22",
"count": 1
},
{
"date": "2026-03-24",
"count": 1
},
{
"date": "2026-03-27",
"count": 2
},
{
"date": "2026-04-01",
"count": 1
},
{
"date": "2026-04-08",
"count": 1
},
{
"date": "2026-04-16",
"count": 1
},
{
"date": "2026-04-18",
"count": 1
},
{
"date": "2026-04-21",
"count": 1
},
{
"date": "2026-04-22",
"count": 1
},
{
"date": "2026-04-24",
"count": 1
},
{
"date": "2026-04-29",
"count": 2
},
{
"date": "2026-04-30",
"count": 1
},
{
"date": "2026-05-01",
"count": 1
},
{
"date": "2026-05-03",
"count": 1
},
{
"date": "2026-05-09",
"count": 1
},
{
"date": "2026-05-25",
"count": 1
},
{
"date": "2026-05-26",
"count": 1
},
{
"date": "2026-05-28",
"count": 1
},
{
"date": "2026-06-02",
"count": 1
},
{
"date": "2026-06-09",
"count": 1
},
{
"date": "2026-06-12",
"count": 1
},
{
"date": "2026-06-16",
"count": 2
},
{
"date": "2026-06-17",
"count": 1
},
{
"date": "2026-06-23",
"count": 1
},
{
"date": "2026-06-24",
"count": 1
},
{
"date": "2026-07-05",
"count": 1
},
{
"date": "2026-07-07",
"count": 1
},
{
"date": "2026-07-10",
"count": 1
},
{
"date": "2026-07-24",
"count": 1
},
{
"date": "2026-07-28",
"count": 1
}
],
"complete": true,
"collected": 771,
"total_forks": 783
},
"star_history": null,
"open_issues_and_prs": 49
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"cookbook",
"examples"
],
"has_llms_txt": true,
"has_dockerfile": true,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": true,
"typecheck_configs": [],
"toolchain_manifests": [
"Examples/ScenarioRunner/ScenarioRunner.csproj",
"Examples/UICatalog/UICatalog.csproj",
"Scripts/BackingFieldReorderer/BackingFieldReorderer.csproj",
"Scripts/DocSnippetValidator/DocSnippetValidator.csproj",
"Scripts/PartialSplitter/PartialSplitter.csproj",
"Terminal.Gui.Analyzers.Internal/Terminal.Gui.Analyzers.Internal.csproj",
"Terminal.Gui.Interop.Spectre/Terminal.Gui.Interop.Spectre.csproj",
"Terminal.Gui/Terminal.Gui.csproj",
"Tests/AppTestHelpers.XunitHelpers.Generator/AppTestHelpers.XunitHelpers.Generator.csproj",
"Tests/AppTestHelpers.XunitHelpers/AppTestHelpers.XunitHelpers.csproj",
"Tests/AppTestHelpers/AppTestHelpers.csproj",
"Tests/Benchmarks/Benchmarks.csproj",
"Tests/IntegrationTests/IntegrationTests.csproj",
"Tests/NativeAotSmoke/NativeAotSmoke.csproj",
"Tests/PerformanceTests/PerformanceTests.csproj",
"Tests/StressTests/StressTests.csproj",
"Tests/TestAssets/ConfigPropertyTypeLoad/AttrProviderFull/AttrProviderFull.csproj",
"Tests/TestAssets/ConfigPropertyTypeLoad/AttrProviderMissing/AttrProviderMissing.csproj",
"Tests/TestAssets/ConfigPropertyTypeLoad/ConsumerLib/ConsumerLib.csproj",
"Tests/UnitTests.Legacy/UnitTests.Legacy.csproj",
"Tests/UnitTests.NonParallelizable/UnitTests.NonParallelizable.csproj",
"Tests/UnitTestsParallelizable/UnitTests.Parallelizable.csproj",
"docfx/EditorRef/EditorRef.csproj",
"docfx/scripts/OutputView/OutputView.csproj"
],
"largest_source_bytes": 2268243,
"source_files_sampled": 1485,
"oversized_source_files": 30,
"agent_instruction_files": [
".cursorrules",
".github/copilot-instructions.md",
".windsurfrules",
"AGENTS.md",
"CLAUDE.md"
],
"agent_instruction_max_bytes": 31280
},
"dependencies": {
"manifests": [
"Terminal.Gui.Analyzers.Internal/Terminal.Gui.Analyzers.Internal.csproj",
"Terminal.Gui.Interop.Spectre/Terminal.Gui.Interop.Spectre.csproj",
"Terminal.Gui/Terminal.Gui.csproj"
],
"advisories": {
"error": "No resolved dependencies carried a version and a supported ecosystem",
"scope": "repository_graph",
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 39,
"direct_affected_count": 0
},
"ecosystems": [
"nuget"
],
"dependencies": [
{
"name": "Microsoft.CodeAnalysis.Analyzers",
"manifest": "Terminal.Gui.Analyzers.Internal/Terminal.Gui.Analyzers.Internal.csproj",
"ecosystem": "nuget",
"version_constraint": null
},
{
"name": "Microsoft.CodeAnalysis.CSharp",
"manifest": "Terminal.Gui.Analyzers.Internal/Terminal.Gui.Analyzers.Internal.csproj",
"ecosystem": "nuget",
"version_constraint": null
},
{
"name": "Spectre.Console",
"manifest": "Terminal.Gui.Interop.Spectre/Terminal.Gui.Interop.Spectre.csproj",
"ecosystem": "nuget",
"version_constraint": null
},
{
"name": "GitVersion.MsBuild",
"manifest": "Terminal.Gui.Interop.Spectre/Terminal.Gui.Interop.Spectre.csproj",
"ecosystem": "nuget",
"version_constraint": null
},
{
"name": "ColorHelper",
"manifest": "Terminal.Gui/Terminal.Gui.csproj",
"ecosystem": "nuget",
"version_constraint": null
},
{
"name": "JetBrains.Annotations",
"manifest": "Terminal.Gui/Terminal.Gui.csproj",
"ecosystem": "nuget",
"version_constraint": null
},
{
"name": "Markdig",
"manifest": "Terminal.Gui/Terminal.Gui.csproj",
"ecosystem": "nuget",
"version_constraint": null
},
{
"name": "Microsoft.Extensions.Configuration",
"manifest": "Terminal.Gui/Terminal.Gui.csproj",
"ecosystem": "nuget",
"version_constraint": null
},
{
"name": "Microsoft.Extensions.Configuration.Binder",
"manifest": "Terminal.Gui/Terminal.Gui.csproj",
"ecosystem": "nuget",
"version_constraint": null
},
{
"name": "Microsoft.Extensions.Configuration.Json",
"manifest": "Terminal.Gui/Terminal.Gui.csproj",
"ecosystem": "nuget",
"version_constraint": null
},
{
"name": "Microsoft.Extensions.Logging.Abstractions ",
"manifest": "Terminal.Gui/Terminal.Gui.csproj",
"ecosystem": "nuget",
"version_constraint": null
},
{
"name": "Microsoft.Extensions.Options",
"manifest": "Terminal.Gui/Terminal.Gui.csproj",
"ecosystem": "nuget",
"version_constraint": null
},
{
"name": "System.IO.Abstractions",
"manifest": "Terminal.Gui/Terminal.Gui.csproj",
"ecosystem": "nuget",
"version_constraint": null
},
{
"name": "TextMateSharp",
"manifest": "Terminal.Gui/Terminal.Gui.csproj",
"ecosystem": "nuget",
"version_constraint": null
},
{
"name": "TextMateSharp.Grammars",
"manifest": "Terminal.Gui/Terminal.Gui.csproj",
"ecosystem": "nuget",
"version_constraint": null
},
{
"name": "Wcwidth",
"manifest": "Terminal.Gui/Terminal.Gui.csproj",
"ecosystem": "nuget",
"version_constraint": null
},
{
"name": "Microsoft.Net.Compilers.Toolset",
"manifest": "Terminal.Gui/Terminal.Gui.csproj",
"ecosystem": "nuget",
"version_constraint": null
},
{
"name": "Microsoft.SourceLink.GitHub",
"manifest": "Terminal.Gui/Terminal.Gui.csproj",
"ecosystem": "nuget",
"version_constraint": null
},
{
"name": "GitVersion.MsBuild",
"manifest": "Terminal.Gui/Terminal.Gui.csproj",
"ecosystem": "nuget",
"version_constraint": null
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "ColorHelper",
"direct": true,
"version": null,
"ecosystem": "nuget"
},
{
"name": "GitVersion.MsBuild",
"direct": true,
"version": null,
"ecosystem": "nuget"
},
{
"name": "JetBrains.Annotations",
"direct": true,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Markdig",
"direct": true,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Microsoft.CodeAnalysis.Analyzers",
"direct": true,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Microsoft.CodeAnalysis.CSharp",
"direct": true,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Microsoft.Extensions.Configuration",
"direct": true,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Microsoft.Extensions.Configuration.Binder",
"direct": true,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Microsoft.Extensions.Configuration.Json",
"direct": true,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Microsoft.Extensions.Options",
"direct": true,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Microsoft.Net.Compilers.Toolset",
"direct": true,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Microsoft.SourceLink.GitHub",
"direct": true,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Spectre.Console",
"direct": true,
"version": null,
"ecosystem": "nuget"
},
{
"name": "System.IO.Abstractions",
"direct": true,
"version": null,
"ecosystem": "nuget"
},
{
"name": "TextMateSharp",
"direct": true,
"version": null,
"ecosystem": "nuget"
},
{
"name": "TextMateSharp.Grammars",
"direct": true,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Wcwidth",
"direct": true,
"version": null,
"ecosystem": "nuget"
},
{
"name": "AnsiConsoleToHtml",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "BenchmarkDotNet",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "coverlet.collector",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "CsvHelper",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Microsoft.CodeAnalysis.CSharp.Workspaces",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Microsoft.DotNet.PlatformAbstractions",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Microsoft.Extensions.Logging",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Microsoft.NET.Test.Sdk",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Microsoft.VisualStudio.Azure.Containers.Tools.Targets",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Moq",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "ReportGenerator",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Serilog",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Serilog.Extensions.Logging",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Serilog.Sinks.Debug",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Serilog.Sinks.File",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "SixLabors.ImageSharp",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "System.CommandLine",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Terminal.Gui.Editor",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "TestableIO.System.IO.Abstractions.TestingHelpers",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "Xunit.Combinatorial",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "xunit.runner.visualstudio",
"direct": false,
"version": null,
"ecosystem": "nuget"
},
{
"name": "xunit.v3",
"direct": false,
"version": null,
"ecosystem": "nuget"
}
],
"collected": true,
"truncated": false,
"total_count": 39,
"direct_count": 17,
"indirect_count": 22
}
},
"maintainership": {
"issues": {
"open_prs": 9,
"merged_prs": 2319,
"open_issues": 40,
"closed_ratio": 0.983,
"closed_issues": 2371,
"closed_unmerged_prs": 580
},
"bus_factor": 1,
"bot_contributors": 3,
"top_contributors": [
{
"type": "User",
"login": "tig",
"commits": 5351,
"avatar_url": "https://avatars.githubusercontent.com/u/585482?v=4"
},
{
"type": "User",
"login": "BDisp",
"commits": 1816,
"avatar_url": "https://avatars.githubusercontent.com/u/13117724?v=4"
},
{
"type": "User",
"login": "dodexahedron",
"commits": 285,
"avatar_url": "https://avatars.githubusercontent.com/u/8242181?v=4"
},
{
"type": "User",
"login": "migueldeicaza",
"commits": 280,
"avatar_url": "https://avatars.githubusercontent.com/u/36863?v=4"
},
{
"type": "User",
"login": "tznind",
"commits": 158,
"avatar_url": "https://avatars.githubusercontent.com/u/31306100?v=4"
},
{
"type": "User",
"login": "fergusonr",
"commits": 100,
"avatar_url": "https://avatars.githubusercontent.com/u/17233550?v=4"
},
{
"type": "User",
"login": "harder",
"commits": 98,
"avatar_url": "https://avatars.githubusercontent.com/u/125549?v=4"
},
{
"type": "User",
"login": "YourRobotOverlord",
"commits": 25,
"avatar_url": "https://avatars.githubusercontent.com/u/47068588?v=4"
},
{
"type": "User",
"login": "TheTonttu",
"commits": 21,
"avatar_url": "https://avatars.githubusercontent.com/u/15074459?v=4"
},
{
"type": "User",
"login": "worldbeater",
"commits": 21,
"avatar_url": "https://avatars.githubusercontent.com/u/6759207?v=4"
}
],
"contributors_sampled": 97,
"top_contributor_share": 0.637
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"analyze-hang-dump.yml",
"api-docs.yml",
"build-validation.yml",
"codeql-analysis.yml",
"finalize-release.yml",
"integration-tests.yml",
"lint-agent-docs.yml",
"notify-clet.yml",
"perf-gate.yml",
"prepare-release.yml",
"publish.yml",
"quick-build.yml",
"stress-tests.yml",
"unit-tests.yml",
"validate-doc-snippets.yml"
],
"has_docs_dir": false,
"linter_configs": [],
"has_editorconfig": true,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": null,
"reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "18 out of 18 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 3,
"reason": "Found 2/6 approved changesets -- score normalized to 3",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 30 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 0,
"reason": "dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 10,
"reason": "update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": 10,
"reason": "packaging workflow detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 7,
"reason": "SAST tool detected but not run on all commits",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 4,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "342955e65a4c8a6a7c7cbdf9402c6f08386be651",
"ran_at": "2026-07-28T17:48:12Z",
"aggregate_score": 5.6,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": true,
"has_security_policy": true,
"has_dependabot_config": true
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-28T17:46:58Z",
"oldest_open_prs": [
{
"number": 5371,
"created_at": "2026-05-22T16:34:56Z",
"last_comment_at": "2026-06-28T15:53:21Z",
"last_comment_author": "tig"
},
{
"number": 5395,
"created_at": "2026-05-24T00:19:16Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 5416,
"created_at": "2026-05-26T16:01:08Z",
"last_comment_at": "2026-06-28T16:19:45Z",
"last_comment_author": "tig"
},
{
"number": 5456,
"created_at": "2026-05-31T14:15:29Z",
"last_comment_at": "2026-05-31T17:48:43Z",
"last_comment_author": "copilot-swe-agent"
},
{
"number": 5458,
"created_at": "2026-05-31T23:29:05Z",
"last_comment_at": "2026-06-01T19:14:37Z",
"last_comment_author": "YourRobotOverlord"
},
{
"number": 5596,
"created_at": "2026-07-15T14:46:40Z",
"last_comment_at": "2026-07-28T17:39:02Z",
"last_comment_author": "harder"
},
{
"number": 5600,
"created_at": "2026-07-25T16:17:02Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 5602,
"created_at": "2026-07-25T21:07:36Z",
"last_comment_at": "2026-07-28T17:07:16Z",
"last_comment_author": "harder"
},
{
"number": 5603,
"created_at": "2026-07-28T15:34:29Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-07-28T17:38:40Z",
"ci_last_conclusion": null,
"oldest_open_issues": [
{
"number": 1642,
"created_at": "2022-03-13T19:56:29Z",
"last_comment_at": "2025-03-11T08:06:42Z",
"last_comment_author": "tig"
},
{
"number": 2747,
"created_at": "2023-07-14T19:13:22Z",
"last_comment_at": "2023-07-14T19:20:52Z",
"last_comment_author": "tig"
},
{
"number": 2871,
"created_at": "2023-10-02T02:10:59Z",
"last_comment_at": "2025-05-16T19:54:48Z",
"last_comment_author": "tig"
},
{
"number": 2938,
"created_at": "2023-10-28T03:43:02Z",
"last_comment_at": "2023-11-12T10:35:46Z",
"last_comment_author": "tznind"
},
{
"number": 2952,
"created_at": "2023-11-02T16:13:19Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 3014,
"created_at": "2023-11-26T23:55:30Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 3018,
"created_at": "2023-11-28T23:31:08Z",
"last_comment_at": "2025-11-20T00:55:57Z",
"last_comment_author": "tig"
},
{
"number": 3322,
"created_at": "2024-03-14T08:45:14Z",
"last_comment_at": "2026-03-30T16:26:19Z",
"last_comment_author": "tig"
},
{
"number": 3554,
"created_at": "2024-06-20T21:39:37Z",
"last_comment_at": "2024-06-25T11:11:16Z",
"last_comment_author": "dodexahedron"
},
{
"number": 3617,
"created_at": "2024-07-17T16:41:09Z",
"last_comment_at": "2025-03-17T15:22:17Z",
"last_comment_author": "tig"
},
{
"number": 3752,
"created_at": "2024-09-22T17:08:33Z",
"last_comment_at": "2024-11-06T16:26:07Z",
"last_comment_author": "BDisp"
},
{
"number": 3826,
"created_at": "2024-11-18T18:58:03Z",
"last_comment_at": "2026-03-30T16:27:30Z",
"last_comment_author": "tig"
},
{
"number": 3914,
"created_at": "2025-02-19T17:51:46Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 3917,
"created_at": "2025-02-20T15:02:55Z",
"last_comment_at": "2026-03-30T16:27:55Z",
"last_comment_author": "tig"
},
{
"number": 4257,
"created_at": "2025-09-27T15:32:21Z",
"last_comment_at": "2026-01-20T22:57:19Z",
"last_comment_author": "j4james"
},
{
"number": 4397,
"created_at": "2025-11-19T20:38:49Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 4588,
"created_at": "2026-01-19T21:54:11Z",
"last_comment_at": "2026-01-20T16:34:56Z",
"last_comment_author": "BerndK-Str"
},
{
"number": 4618,
"created_at": "2026-01-22T22:56:14Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 4749,
"created_at": "2026-02-24T14:33:45Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 4796,
"created_at": "2026-03-05T21:07:10Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/tui-cs/Terminal.Gui",
"host": "github.com",
"name": "Terminal.Gui",
"owner": "tui-cs"
},
"metrics": {
"overall": {
"key": "overall",
"band": "excellent",
"name": "Overall health",
"note": "The weighted overall 75 is calibrated to 89 on the published index scale (record calibration 2026-08-02).",
"notes": [
{
"code": "overall_calibration",
"params": {
"raw": 75,
"calibrated": 89,
"calibration": "2026-08-02"
}
}
],
"value": 89,
"inputs": {
"security": 56,
"vitality": 96,
"community": 83,
"governance": 68,
"calibration": "2026-08-02",
"engineering": 70,
"ai_readiness": 80,
"weighted_overall_raw": 75
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "exceptional",
"name": "Vitality",
"value": 96,
"weight": 0.21,
"metrics": [
{
"key": "development_activity",
"band": "exceptional",
"name": "Development activity",
"note": null,
"notes": [],
"value": 94,
"inputs": {
"commits_last_year": 1587,
"human_commit_share": 0.75,
"days_since_last_push": 0,
"active_weeks_last_year": 44
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "44/52 weeks with commits",
"points": 30.5,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 44
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "1587 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 1587
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "exceptional",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"releases_count": 73,
"latest_release_tag": "v2.4.17",
"releases_from_tags": false,
"days_since_latest_release": 21,
"mean_days_between_releases": 1.6
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "73 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 73
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 21 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 21
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~1.6 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 1.6
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "exceptional",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 5,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 5 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 5
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "excellent",
"name": "Community & Adoption",
"value": 83,
"weight": 0.17,
"metrics": [
{
"key": "popularity",
"band": "exceptional",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 96,
"inputs": {
"forks": 783,
"stars": 11139,
"watchers": 142,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "11,139 stars",
"points": 60,
"status": "met",
"details": [
{
"code": "stars",
"params": {
"count": 11139
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "783 forks",
"points": 24.1,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 783
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "142 watchers",
"points": 11.9,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 142
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "excellent",
"name": "Community health",
"note": null,
"notes": [],
"value": 92,
"inputs": {
"has_readme": true,
"has_license": true,
"readme_badges": null,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": true,
"readme_badge_services": [],
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "weak",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 48,
"inputs": {
"packages": [
"Terminal.Gui.Interop.Spectre"
],
"dependents": null,
"ecosystems": "nuget",
"total_downloads": 4734,
"monthly_downloads": null
},
"components": [
{
"key": "total_downloads",
"name": "Total downloads",
"detail": "4,734 downloads all-time across nuget",
"points": 38.2,
"status": "partial",
"details": [
{
"code": "downloads_total",
"params": {
"count": 4734,
"ecosystems": "nuget"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "good",
"name": "Sustainability & Governance",
"value": 68,
"weight": 0.23,
"metrics": [
{
"key": "maintainer_resilience",
"band": "weak",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 41,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 97,
"top_contributor_share": 0.637
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 64% of commits",
"points": 8.2,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 64
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "97 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 97
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 30 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "excellent",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"newcomer_pr_acceptance"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 80,
"inputs": {
"merged_prs": 2319,
"open_issues": 40,
"closed_issues": 2371,
"prs_merged_7d": null,
"prs_decided_7d": null,
"prs_merged_30d": null,
"prs_decided_30d": null,
"issue_closed_ratio": 0.983,
"closed_unmerged_prs": 580,
"first_time_authors_30d": null,
"first_time_prs_merged_30d": null,
"first_time_prs_decided_30d": null
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "98% of issues closed",
"points": 41.3,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 98
}
}
],
"max_points": 42
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "2319/2899 decided PRs merged",
"points": 24,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 2319,
"decided": 2899
}
}
],
"max_points": 30
},
{
"key": "newcomer_pr_acceptance",
"name": "Newcomer PR acceptance",
"detail": "no first-time contributor's PR decided in 30d",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_newcomer_prs",
"params": {
"days": 30
}
}
],
"max_points": 13
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 2/6 approved changesets -- score normalized to 3",
"points": 4.5,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 64,
"inputs": {
"followers": 212,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "tui-cs",
"public_repos": 16,
"account_age_days": 1523
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "212 followers of tui-cs",
"points": 16.7,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 212,
"login": "tui-cs"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "16 public repos, account ~4 yr old",
"points": 17.3,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 16
}
},
{
"code": "account_age_years",
"params": {
"years": 4
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "exceptional",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"Terminal.Gui.Interop.Spectre"
],
"ecosystems": "nuget",
"any_deprecated": false,
"min_days_since_publish": 21
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on nuget",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "nuget"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 21 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 21
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "14 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 14
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 70,
"weight": 0.19,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 74,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": true,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "15 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 15
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 6.4,
"status": "met",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "18 out of 18 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "good",
"name": "Documentation",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"topics": [
"csharp",
"terminal",
"dotnet",
"curses",
"cross-platform",
"console",
"console-application",
"terminal-based",
"terminal-ui",
"tui"
],
"has_wiki": false,
"homepage": "https://tui-cs.github.io/Terminal.Gui/",
"has_readme": true,
"has_docs_dir": false,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://tui-cs.github.io/Terminal.Gui/",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "10 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 10
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 56,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "moderate",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 56,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 5.6
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "18 out of 18 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 2/6 approved changesets -- score normalized to 3",
"points": 2.2,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 30 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "dangerous workflow patterns detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "update tool detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool detected but not run on all commits",
"points": 3.5,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 2,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "exceptional",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status. 1 match(es) from contributors below the commit-weight threshold (fewer than 50 commits and under 10% of sampled commits) are recorded for review and do not affect the score.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
},
{
"code": "jurisdiction_below_threshold",
"params": {
"count": 1
}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"commit_weight_rule": {
"min_commits": 50,
"min_commit_share": 0.1
},
"review_only_matches": 0,
"below_threshold_exposures": [
{
"role": "top_contributor",
"count": 1,
"country": "Russia"
}
],
"assessed_self_published_locations": 11
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match; 1 match(es) below the commit-weight threshold (<50 commits and <10% of commits), review-only",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
},
{
"code": "jurisdiction_below_threshold",
"params": {
"count": 1,
"share": 10,
"commits": 50
}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "excellent",
"name": "AI Readiness",
"value": 80,
"weight": 0.04,
"metrics": [
{
"key": "ai_agent_context",
"band": "exceptional",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"has_llms_txt": true,
"legible_history_share": 0.933,
"agent_instruction_files": [
".cursorrules",
".github/copilot-instructions.md",
".windsurfrules",
"AGENTS.md",
"CLAUDE.md"
],
"agent_instruction_max_bytes": 31280
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": ".cursorrules, .github/copilot-instructions.md, .windsurfrules, AGENTS.md, CLAUDE.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".cursorrules, .github/copilot-instructions.md, .windsurfrules, AGENTS.md, CLAUDE.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": "llms.txt present",
"points": 15,
"status": "met",
"details": [
{
"code": "llms_txt_present",
"params": {}
}
],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "70 of 75 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 70,
"sampled": 75
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 74,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": true,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": true,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0.2,
"toolchain_manifests": [
"Examples/ScenarioRunner/ScenarioRunner.csproj",
"Examples/UICatalog/UICatalog.csproj",
"Scripts/BackingFieldReorderer/BackingFieldReorderer.csproj",
"Scripts/DocSnippetValidator/DocSnippetValidator.csproj",
"Scripts/PartialSplitter/PartialSplitter.csproj",
"Terminal.Gui.Analyzers.Internal/Terminal.Gui.Analyzers.Internal.csproj",
"Terminal.Gui.Interop.Spectre/Terminal.Gui.Interop.Spectre.csproj",
"Terminal.Gui/Terminal.Gui.csproj",
"Tests/AppTestHelpers.XunitHelpers.Generator/AppTestHelpers.XunitHelpers.Generator.csproj",
"Tests/AppTestHelpers.XunitHelpers/AppTestHelpers.XunitHelpers.csproj",
"Tests/AppTestHelpers/AppTestHelpers.csproj",
"Tests/Benchmarks/Benchmarks.csproj",
"Tests/IntegrationTests/IntegrationTests.csproj",
"Tests/NativeAotSmoke/NativeAotSmoke.csproj",
"Tests/PerformanceTests/PerformanceTests.csproj",
"Tests/StressTests/StressTests.csproj",
"Tests/TestAssets/ConfigPropertyTypeLoad/AttrProviderFull/AttrProviderFull.csproj",
"Tests/TestAssets/ConfigPropertyTypeLoad/AttrProviderMissing/AttrProviderMissing.csproj",
"Tests/TestAssets/ConfigPropertyTypeLoad/ConsumerLib/ConsumerLib.csproj",
"Tests/UnitTests.Legacy/UnitTests.Legacy.csproj",
"Tests/UnitTests.NonParallelizable/UnitTests.NonParallelizable.csproj",
"Tests/UnitTestsParallelizable/UnitTests.Parallelizable.csproj",
"docfx/EditorRef/EditorRef.csproj",
"docfx/scripts/OutputView/OutputView.csproj"
],
"dependency_bot_commit_share": 0.16
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Examples/ScenarioRunner/ScenarioRunner.csproj, Examples/UICatalog/UICatalog.csproj, Scripts/BackingFieldReorderer/BackingFieldReorderer.csproj (toolchain convention, no task runner)",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "toolchain_convention",
"params": {
"files": "Examples/ScenarioRunner/ScenarioRunner.csproj, Examples/UICatalog/UICatalog.csproj, Scripts/BackingFieldReorderer/BackingFieldReorderer.csproj"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "C# (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "C#"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "devcontainer, Dockerfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "devcontainer, Dockerfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "20 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 20,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "16 of the last 100 commits are automated dependency updates",
"points": 8,
"status": "met",
"details": [
{
"code": "dependency_bot_commits",
"params": {
"count": 16,
"sampled": 100
}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "exceptional",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 99,
"inputs": {
"primary_language": "C#",
"largest_source_bytes": 2268243,
"source_files_sampled": 1485,
"oversized_source_files": 30
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "C# (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "C#"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "30/1485 source files over 60KB",
"points": 53.9,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 1485,
"oversized": 30
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "weak",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"cookbook",
"examples"
],
"has_mcp_signal": false,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "cookbook, examples",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "cookbook, examples"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
}
],
"classification": {
"labels": [
"tui",
"library"
],
"scores": {
"tui": 6,
"library": 6
},
"primary": "tui",
"evidence": [
{
"tier": "distribution",
"label": "library",
"source": "registry:nuget",
"weight": 6
},
{
"tier": "description",
"label": "tui",
"source": "description:tui",
"weight": 2
},
{
"tier": "tags",
"label": "tui",
"source": "tag:terminal-ui",
"weight": 2
},
{
"tier": "tags",
"label": "tui",
"source": "tag:tui",
"weight": 2
}
],
"artifacts": [],
"confidence": "medium",
"host_extension": false,
"runs_as_process": true,
"consumed_by_code": true
},
"metrics_version": "2.3.1"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"No resolved dependencies carried a version and a supported ecosystem"
],
"report_type": "repository",
"generated_at": "2026-07-28T17:48:46.580549Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/t/tui-cs/Terminal.Gui.svg",
"full_name": "tui-cs/Terminal.Gui",
"license_state": "standard",
"license_spdx": "MIT"
}