Звіт у форматі JSON машиночитний
{
"data": {
"repo": {
"topics": [
"adguardhome",
"dns",
"dns-over-https",
"dns-over-quic",
"dns-over-tls",
"ppv2",
"proxy-protocol",
"adguard-home"
],
"is_fork": true,
"size_kb": 25402,
"has_wiki": true,
"homepage": null,
"languages": {
"Go": 2394597,
"CSS": 573519,
"HTML": 10165,
"Shell": 67153,
"Makefile": 5413,
"Dockerfile": 13661,
"JavaScript": 20114,
"TypeScript": 2509235
},
"pushed_at": "2026-07-18T18:12:22Z",
"created_at": "2026-02-21T04:55:57Z",
"owner_type": "User",
"updated_at": "2026-07-18T17:49:52Z",
"description": "AdGuard Home fork with Proxy Protocol v2 (PPv2) support for real client IP preservation behind load balancers (DoT / TCP)",
"is_archived": false,
"is_disabled": false,
"license_spdx": "GPL-3.0",
"default_branch": "master",
"license_spdx_raw": "GPL-3.0",
"primary_language": "TypeScript",
"significant_languages": [
"TypeScript",
"Go",
"CSS"
]
},
"owner": {
"blog": null,
"name": null,
"type": "User",
"login": "fcchbjm",
"company": null,
"location": null,
"followers": 0,
"avatar_url": "https://avatars.githubusercontent.com/u/148618370?v=4",
"created_at": "2023-10-21T08:44:57Z",
"is_verified": null,
"public_repos": 14,
"account_age_days": 1010
},
"license": {
"state": "standard",
"spdx_id": "GPL-3.0",
"raw_spdx": "GPL-3.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": false
},
"activity": {
"releases": [
{
"tag": "v0.0.8",
"kind": "patch",
"published_at": "2026-07-18T18:31:07Z"
},
{
"tag": "v0.0.7",
"kind": "patch",
"published_at": "2026-05-26T14:17:49Z"
},
{
"tag": "v0.0.6",
"kind": "patch",
"published_at": "2026-05-06T04:10:13Z"
},
{
"tag": "v0.0.5",
"kind": "patch",
"published_at": "2026-05-02T12:07:22Z"
},
{
"tag": "v0.0.4",
"kind": "patch",
"published_at": "2026-04-23T11:13:37Z"
},
{
"tag": "v0.0.3",
"kind": "patch",
"published_at": "2026-04-13T03:22:08Z"
},
{
"tag": "v0.0.2",
"kind": "patch",
"published_at": "2026-04-12T14:19:02Z"
},
{
"tag": "v0.0.1",
"kind": "patch",
"published_at": "2026-04-07T12:39:55Z"
}
],
"recent_commits": [
{
"oid": "7982e9ae8c2f3f3a1a411d644da20d46f4bb4bf8",
"body": "… client_v2",
"is_bot": false,
"headline": "ci(release): use CLIENT_DIR=client for fork releases until PPv2 is in…",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-07-18T17:49:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c97deaaae85a40d6a098c30d1dd29f7bdab6c3b4",
"body": null,
"is_bot": false,
"headline": "Merge upstream/master (2961664c); bamboo CI explicit revision checkout",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-07-18T17:33:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2961664cbec08529d6e37e7ac4548eca8340e56c",
"body": "Squashed commit of the following:\n\ncommit c4383a8d156bfa49c229473d42b3a6e3eb6c4e3c\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Fri Jul 17 15:45:25 2026 +0300\n\n bamboo-specs: explicitly checkout the revision;",
"is_bot": false,
"headline": "Pull request 2722: AGDNS-4274-explicitly-checkout-the-revision-in-ci",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-07-17T14:30:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dce5d10dcfd557a189b38dc59665002a01977002",
"body": null,
"is_bot": false,
"headline": "chore: apply gofumpt formatting after upstream merge",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-07-16T15:21:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e9de05e6c0ff9397017b78f73cd6e857c76cde27",
"body": null,
"is_bot": false,
"headline": "Merge upstream/master (ef585d45); bump fcchbjm/dnsproxy to v0.82.0",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-07-16T15:01:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ef585d45cd1d133758bf89754729da8ce46e0383",
"body": "Added comments highlight for all upstream fields and custom rules\n\nSquashed commit of the following:\n\ncommit 2feb4d4dc199474199a234e39157b85c37fa6fd6\nMerge: b5bfdc81c 7729d8c57\nAuthor: Ildar Kamalov <ik@adguard.com>\nDate: Thu Jul 16 15:27:54 2026 +0300\n\n Merge branch 'master' into AGDNS-4229\n\nc\n[…]\nxtarea comments highlight\n\ncommit 4923b3645bb9ea1410cbf09ec59efecf358b1baa\nAuthor: Ildar Kamalov <ik@adguard.com>\nDate: Tue Jul 14 17:13:31 2026 +0300\n\n AGDNS-4229 add textarea comments highlight",
"is_bot": false,
"headline": "Pull request 2712: AGDNS-4229 add textarea comments highlight",
"author_name": "Ildar Kamalov",
"author_login": "IldarKamalov",
"committed_at": "2026-07-16T13:02:59Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7729d8c57dcde705d3e8b7194fd4b00e4461c829",
"body": "Squashed commit of the following:\n\ncommit f31de6ff45bdb744f616be9c3ae2648b79494d7e\nMerge: bebd1a053 d9a7219d4\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Wed Jul 15 16:09:13 2026 +0300\n\n Merge branch 'master' into ADG-12585-fix-kardianos-dep\n\ncommit bebd1a05393f6391cd51ee4af66a879e41f46a1f\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Wed Jul 15 14:16:48 2026 +0300\n\n all: revert service dep",
"is_bot": false,
"headline": "Pull request 2717: ADG-12585-fix-kardianos-dep",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-07-15T14:42:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d9a7219d4d0da23c1f1ed0cec785a87c23556380",
"body": "Squashed commit of the following:\n\ncommit 91560d825973aa384806c8bf28487213e1a9feb7\nAuthor: Ainar Garipov <a.garipov@adguard.com>\nDate: Wed Jul 15 13:47:44 2026 +0300\n\n .github: fix windows build",
"is_bot": false,
"headline": "Pull request 2716: AGDNS-3549-fix-github",
"author_name": "Ainar Garipov",
"author_login": "ainar-g",
"committed_at": "2026-07-15T11:14:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "09ae3ccddbba57d11c351cbae4946274c7389d87",
"body": "Squashed commit of the following:\n\ncommit fab8b1067d134146b9980741ba2b181174dd353c\nAuthor: Ainar Garipov <a.garipov@adguard.com>\nDate: Wed Jul 15 13:37:23 2026 +0300\n\n all: upd chlog\n\ncommit 3f9d510699d5434dd3466d1df76066784922bb90\nMerge: 4079ad35b 5b864cefc\nAuthor: Ainar Garipov <a.garipov@adg\n[…]\nmboo-specs: return to dev\n\ncommit 49f74ae115c12c80d8b5a368e35b315328d6b8bf\nAuthor: Ainar Garipov <a.garipov@adguard.com>\nDate: Wed Jul 15 12:54:59 2026 +0300\n\n all: use new ui on the edge channel",
"is_bot": false,
"headline": "Pull request 2715: AGDNS-3549-new-ui-edge",
"author_name": "Ainar Garipov",
"author_login": "ainar-g",
"committed_at": "2026-07-15T10:43:57Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5b864cefc21f36083c752f2a73e16d813f315052",
"body": "Squashed commit of the following:\n\ncommit 1baf3ec81abb8f90cc2e9789945d1c10fcc23225\nMerge: f8eaf24cb 4d0ae0d87\nAuthor: Ainar Garipov <a.garipov@adguard.com>\nDate: Wed Jul 15 13:18:02 2026 +0300\n\n Merge branch 'master' into AGDNS-4240-install-lang\n\ncommit f8eaf24cbe91bdf825b58be6b0b565310767c001\n\n[…]\n: rm unnecessary validation\n\ncommit 407ef86aa9dc4520ad9791ca72302639ccf68dea\nAuthor: Ainar Garipov <a.garipov@adguard.com>\nDate: Tue Jul 14 17:53:23 2026 +0300\n\n home: add language to install api",
"is_bot": false,
"headline": "Pull request 2713: AGDNS-4240-install-lang",
"author_name": "Ainar Garipov",
"author_login": "ainar-g",
"committed_at": "2026-07-15T10:34:17Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4d0ae0d87bbbdb260671c59348113bfaf6242599",
"body": "…ases\n\nSquashed commit of the following:\n\ncommit a5f75312023ce3f90f17a6833add37902e7d670a\nMerge: 05724001c 4da215221\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Wed Jul 15 12:21:15 2026 +0300\n\n Merge branch 'master' into AGDNS-4231-dont-allow-empty-hostnames-in-static-leases\n\ncommi\n[…]\nts;\n\ncommit 554615617fe24940ca589a8e8082da9b03b65642\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Mon Jul 13 17:42:37 2026 +0300\n\n dhcpd: don't allow empty hostnames in static leases;",
"is_bot": false,
"headline": "Pull request 2707: AGDNS-4231-dont-allow-empty-hostnames-in-static-le…",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-07-15T09:32:42Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4da215221ae8a27341681d2bb4fa4b91c0b6a8d6",
"body": "Updates #8183.\n\nSquashed commit of the following:\n\ncommit b6ada16f9121fd2ed3fae5de2446c8c2c42ef183\nAuthor: f.setrakov <f.setrakov@adguard.com>\nDate: Wed Jul 15 12:03:19 2026 +0300\n\n all: fix changelog\n\ncommit c920b48346174d56a83ef69dc02c96ea05a60df3\nMerge: 70a703c31 c1f208ef6\nAuthor: f.setrakov\n[…]\n +0300\n\n all: imp docs\n\ncommit 941bdabebe8a7368abfeac96a6cf33d39b8d20b4\nAuthor: f.setrakov <f.setrakov@adguard.com>\nDate: Thu Jul 9 14:36:41 2026 +0300\n\n all: include edns opt for filtered req",
"is_bot": false,
"headline": "Pull request 2700: 8183-include-edns",
"author_name": "Fedor Setrakov",
"author_login": "masterkusok",
"committed_at": "2026-07-15T09:15:56Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c1f208ef659d8ded195fcaf9bd1facfab7fd29be",
"body": "Squashed commit of the following:\n\ncommit 40dcae233137095452b49a283e81cfa4ac26c442\nAuthor: Ainar Garipov <a.garipov@adguard.com>\nDate: Tue Jul 14 21:17:00 2026 +0300\n\n bamboo-specs: fix e2e\n\ncommit 6fa4a7f5fec1f141ddb7826692e3d6da0e7a4388\nAuthor: Ainar Garipov <a.garipov@adguard.com>\nDate: Tue Jul 14 21:03:25 2026 +0300\n\n all: support new client in ci",
"is_bot": false,
"headline": "Pull request 2714: AGDNS-3548-new-client-ci",
"author_name": "Ainar Garipov",
"author_login": "ainar-g",
"committed_at": "2026-07-15T08:44:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1dd7b48e6876dcb7a6eee832b4dabfc1b3ae1e77",
"body": "Squashed commit of the following:\n\ncommit 2ff31c69199b06a39bb5c1facd6471da824e752c\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Tue Jul 14 15:32:35 2026 +0300\n\n filtering: use constant;",
"is_bot": false,
"headline": "Pull request 2711: ADG-12585-use-constant",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-07-14T12:42:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a8a958a77b5175f72a61d1bb65dca967e475f005",
"body": "Squashed commit of the following:\n\ncommit 35e16b8de54046a0ca5cfcc4157afbb9f09f62c6\nMerge: 710580701 ae4bfe947\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Tue Jul 14 15:04:07 2026 +0300\n\n Merge branch 'master' into AGDNS-4222-imp-domain-name-validation\n\ncommit 7105807012b55e8b7ed86f\n[…]\nm outdated docs;\n\ncommit c6c19ae3d43e356374869f2839afb1ddfbb0d53d\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Mon Jul 13 11:58:14 2026 +0300\n\n filtering: imp answer field validation;",
"is_bot": false,
"headline": "Pull request 2703: AGDNS-4222-imp-domain-name-validation",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-07-14T12:19:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ae4bfe947c9a72ceac1d01b3d9aa27d933085155",
"body": "Squashed commit of the following:\n\ncommit f35dfe5487a97338ab62c0c41ce00196987e1c69\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Tue Jul 14 14:35:04 2026 +0300\n\n client: udp i18n",
"is_bot": false,
"headline": "Pull request 2709: upd-i18n",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-07-14T11:55:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6da9aec3b54d59fa7f2dad2027e26fae820c9700",
"body": "Replace the legacy React-based client with a new SolidJS + TypeScript frontend (client_v2). Includes full UI rewrite - new component system, stores, controls, pages.\n\nCo-authored-by: Igor Lobanov <i.lobanov@adguard.com>\nCo-authored-by: Eugene Miroshkin <e.miroshkin@adguard.com>\nCo-authored-by: Eliza\n[…]\n738295be9339f52b1f\n Author: Ildar Kamalov <ik@adguard.com>\n Date: Tue Jun 9 18:29:18 2026 +0300\n \n reset filter update modal\n \n ... and 53 more commits\n\n... and 69 more commits",
"is_bot": false,
"headline": "Pull request 2439: ADG-10291 Migrate frontend to SolidJS (client_v2)",
"author_name": "Ildar Kamalov",
"author_login": "IldarKamalov",
"committed_at": "2026-07-14T10:42:36Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2b05944feaaaa947e94447760dd3201f9b825970",
"body": "Squashed commit of the following:\n\ncommit 802dbbf45b85703ab13b4f6546fa9f48beea14be\nMerge: 1c56701c0 aad4d49ac\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Tue Jul 14 13:09:37 2026 +0300\n\n Merge branch 'master' into ADG-12585-upd-deps\n\ncommit 1c56701c0778329b047fa323f631df229c7192bc\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Mon Jul 13 15:34:20 2026 +0300\n\n all: upd deps;",
"is_bot": false,
"headline": "Pull request 2705: ADG-12585-upd-deps",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-07-14T10:21:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aad4d49ac0928450836c5524336cd46c9cc18040",
"body": "Squashed commit of the following:\n\ncommit 957a19c84a5afc4643552d7c4ef9f26e6ffe77d1\nMerge: 269d3e5c3 01315e674\nAuthor: Dimitry Kolyshev <dkolyshev@adguard.com>\nDate: Tue Jul 14 10:51:09 2026 +0700\n\n Merge remote-tracking branch 'origin/master' into AGDNS-4189-imp-code\n\ncommit 269d3e5c3b60c06af3c\n[…]\n 12:22:32 2026 +0700\n\n home: imp code\n\ncommit 4efe2671f839c72e18b6ca77943d9cc6e97530f1\nAuthor: Dimitry Kolyshev <dkolyshev@adguard.com>\nDate: Thu Jul 2 13:17:56 2026 +0700\n\n home: rm sync.Cond",
"is_bot": false,
"headline": "Pull request: AGDNS-4189-imp-code",
"author_name": "Dimitry Kolyshev",
"author_login": "Mizzick",
"committed_at": "2026-07-14T03:58:17Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "01315e6742080d4228f54450933518648b4d8a6b",
"body": "Squashed commit of the following:\n\ncommit 13528004e011251a2f6e83562d784a81bdcee40d\nAuthor: Ainar Garipov <a.garipov@adguard.com>\nDate: Mon Jul 13 19:32:42 2026 +0300\n\n all: upd chlog",
"is_bot": false,
"headline": "Pull request 2708: ADG-12585-upd-chlog",
"author_name": "Ainar Garipov",
"author_login": "ainar-g",
"committed_at": "2026-07-13T16:38:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3adfbb9f3dc10aea909c2d963a9250fbefc96ee1",
"body": "Squashed commit of the following:\n\ncommit b4b41149e56fc657b7452ddc05feeeb9bc3fe913\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Fri Jul 10 19:08:47 2026 +0300\n\n scripts: imp note;\n\ncommit 1e3b636fd288832f67fea509ebea46269d6e07c2\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDat\n[…]\nscripts: move note to readme;\n\ncommit 23ba9336933ebb43e698e1f9da047ab5a87b7cd5\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Fri Jul 10 17:55:10 2026 +0300\n\n translations: fix scripts;",
"is_bot": false,
"headline": "Pull request 2702: AGDNS-4218-fix-translation-scripts",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-07-10T16:21:47Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "206e77edb5c8c5b32e95cfbc8821206e693dc10c",
"body": "Updates #4923.\n\nSquashed commit of the following:\n\ncommit b24577d9d9e59c77af9487eaa9f5b054835970cf\nMerge: 42d9d203a c4ba8b28e\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Thu Jul 9 20:15:28 2026 +0300\n\n Merge branch 'master' into AGDNS-3863-gopacket-dhcp-vol.28\n\ncommit 42d9d203a0112dbe9b7\n[…]\ndhcpsvc: imp code, add cases\n\ncommit b13f13f5f7b60b8bab28891f34f671c6ff295280\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Thu Jun 25 16:29:05 2026 +0300\n\n dhcpsvc: implement dhcpv6 request",
"is_bot": false,
"headline": "Pull request 2685: AGDNS-3863-gopacket-dhcp-vol.28",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-07-09T17:25:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c4ba8b28efacb4f274b0a24bec70ebf7e2a1eefb",
"body": "Squashed commit of the following:\n\ncommit f91172481efec79baee24adcb84a0c6201b5a14f\nAuthor: Ainar Garipov <a.garipov@adguard.com>\nDate: Thu Jul 9 17:37:02 2026 +0300\n\n all: upd go",
"is_bot": false,
"headline": "Pull request 2701: ADG-12585-upd-go",
"author_name": "Ainar Garipov",
"author_login": "ainar-g",
"committed_at": "2026-07-09T15:02:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6910d6e14021f071947bbacaa18cf02fa01414cd",
"body": "Squashed commit of the following:\n\ncommit 8fa40394a07405e1f3870e51b413c8118b3756ea\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Wed Jul 8 12:56:38 2026 +0300\n\n internal: imp code;",
"is_bot": false,
"headline": "Pull request 2698: imp-all",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-07-08T11:38:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "315648f9421f95810aa4207624b1e611ebdf1feb",
"body": "Squashed commit of the following:\n\ncommit 513b2c70fc2a1240090e35f7463cbad374c7394d\nMerge: 65c86fddb cf15e1759\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Mon Jul 6 18:24:13 2026 +0300\n\n Merge branch 'master' into AGDNS-4202-use-golibs-mw\n\ncommit 65c86fddba91ac7687bf1d94372f109c0e0c008a\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Mon Jul 6 12:58:04 2026 +0300\n\n home: use middleware helpers from golibs;",
"is_bot": false,
"headline": "Pull request 2693: AGDNS-4202-use-golibs-mw",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-07-06T15:31:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf15e1759a00d27fad5cb812281e11537a7bc6b4",
"body": "Squashed commit of the following:\n\ncommit c74688547c75b7dddf61f9eb3187cf09fb43f30f\nAuthor: Ainar Garipov <a.garipov@adguard.com>\nDate: Mon Jul 6 16:47:09 2026 +0300\n\n all: upd deps, i18n",
"is_bot": false,
"headline": "Pull request 2695: upd-deps",
"author_name": "Ainar Garipov",
"author_login": "ainar-g",
"committed_at": "2026-07-06T14:37:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d28907c7e8d2de171769c602f75034adee63a6ea",
"body": "Squashed commit of the following:\n\ncommit fa04f13272da5a292fce33b8a3970f9efef05aaa\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Mon Jul 6 13:33:48 2026 +0300\n\n readme: fix docs;",
"is_bot": false,
"headline": "Pull request 2694: 8137-fix-docs",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-07-06T13:15:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1feb484ab47f85ecafd4721f9ac29c83d84c8b48",
"body": "Updates #7955.\n\nSquashed commit of the following:\n\ncommit 05c64ca900b161fb1ec64a006b8d0be1d234a76f\nAuthor: f.setrakov <f.setrakov@adguard.com>\nDate: Thu Jul 2 16:07:05 2026 +0300\n\n all: upd dnsproxy\n\ncommit 7e7d6058712ec7370487348da92d5009c031c48f\nMerge: 77c954779 97789906a\nAuthor: f.setrakov <\n[…]\n Wed Jul 1 18:03:28 2026 +0300\n\n all: chlog\n\ncommit adf3f963f943ac34ac201f557b0855da3b6d08ed\nAuthor: f.setrakov <f.setrakov@adguard.com>\nDate: Wed Jul 1 11:25:57 2026 +0300\n\n all: upd dnsproxy",
"is_bot": false,
"headline": "Pull request 2689: 7955-fix-resp-flags",
"author_name": "Fedor Setrakov",
"author_login": "masterkusok",
"committed_at": "2026-07-02T14:39:10Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "97789906acd9f3315a9da38af5d994f580063a27",
"body": "Squashed commit of the following:\n\ncommit 820913315395112b47627e64afa760ce661e12a1\nAuthor: f.setrakov <f.setrakov@adguard.com>\nDate: Thu Jul 2 14:47:33 2026 +0300\n\n all: upg chlog\n\ncommit e176169442149529a91def20e06770bf596cacef\nAuthor: f.setrakov <f.setrakov@adguard.com>\nDate: Thu Jul 2 13:4\n[…]\nimp docs, dry handler construction\n\ncommit 52823b892ec5950a50cc35c7d9216c069019c365\nAuthor: f.setrakov <f.setrakov@adguard.com>\nDate: Mon Jun 29 12:40:53 2026 +0300\n\n home: fix h2c unlimited read",
"is_bot": false,
"headline": "Pull request 2686: AGDNS-4111-fix-dos-vol.2",
"author_name": "Fedor Setrakov",
"author_login": "masterkusok",
"committed_at": "2026-07-02T12:39:22Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8b135ca1b55cc1d044f89d4fd728f8638db66e34",
"body": "Squashed commit of the following:\n\ncommit 8a79a364cf0614a3c7ccef6efcfaae546a6087c2\nMerge: 70bb94848 5c4af121d\nAuthor: Dimitry Kolyshev <dkolyshev@adguard.com>\nDate: Mon Jun 29 09:17:02 2026 +0700\n\n Merge remote-tracking branch 'origin/master' into AGDNS-4161-imp-translation-scripts\n\ncommit 70bb\n[…]\n:16:08 2026 +0700\n\n scripts: imp code\n\ncommit ad2cbc31285dba5a870098945cded8a22ee1418c\nAuthor: Dimitry Kolyshev <dkolyshev@adguard.com>\nDate: Wed Jun 24 10:46:53 2026 +0700\n\n scripts: imp code",
"is_bot": false,
"headline": "Pull request: AGDNS-4161-imp-translation-scripts",
"author_name": "Dimitry Kolyshev",
"author_login": "Mizzick",
"committed_at": "2026-06-29T03:15:13Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5c4af121d144333cc05762af359e385d92bf0c2d",
"body": "Squashed commit of the following:\n\ncommit 45d3fdba32b4c39c7588221267d99100322b8f97\nMerge: 83e7c754f 07d8d77a5\nAuthor: f.setrakov <f.setrakov@adguard.com>\nDate: Fri Jun 26 10:24:01 2026 +0300\n\n Merge branch 'master' into AGDNS-4111-fix-dos\n\ncommit 83e7c754ffec01c118f369913f5245026ab552d1\nAuthor:\n[…]\n Mon Jun 15 15:29:52 2026 +0300\n\n home: fix doc\n\ncommit 8c6d997d624190a7f37ff4c02535e805f2cf8747\nAuthor: f.setrakov <f.setrakov@adguard.com>\nDate: Thu Jun 11 13:21:10 2026 +0300\n\n all: fix dos",
"is_bot": false,
"headline": "Pull request 2678: AGDNS-4111-fix-dos",
"author_name": "Fedor Setrakov",
"author_login": "masterkusok",
"committed_at": "2026-06-26T09:07:38Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "07d8d77a53ec4c556f6c669fe52012e354d5cd1c",
"body": "Squashed commit of the following:\n\ncommit 0e52f80ffc635991b019f402e5cb9ba866dcf128\nAuthor: Dimitry Kolyshev <dkolyshev@adguard.com>\nDate: Thu Jun 25 10:43:39 2026 +0700\n\n all: upd dnsproxy\n\ncommit 61c04a949d908b26c8dff98f3b803d97970c6966\nAuthor: Dimitry Kolyshev <dkolyshev@adguard.com>\nDate: \n[…]\n'origin/master' into AGDNS-4107-upd-dnsproxy\n\ncommit bd4b6aa139e78244480ccca04639d828f8d8855c\nAuthor: Dimitry Kolyshev <dkolyshev@adguard.com>\nDate: Thu Jun 11 15:19:00 2026 +0700\n\n all: upd deps",
"is_bot": false,
"headline": "Pull request: AGDNS-4107-upd-dnsproxy",
"author_name": "Dimitry Kolyshev",
"author_login": "Mizzick",
"committed_at": "2026-06-26T01:44:13Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3a182fec42bcf9923971c69bcd82d547b62c5691",
"body": "Updates #4923.\n\nSquashed commit of the following:\n\ncommit dac51753718c1076986a2257e3b4f8099057a4ce\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Fri Jun 19 15:37:05 2026 +0300\n\n dhcpsvc: imp test code\n\ncommit cf89ea542d3a1f6e50039120fbd691949ccb839a\nAuthor: Eugene Burkov <e.burkov@adguard.\n[…]\n0\n\n dhcpsvc: use gopacket fork\n\ncommit 99df3f3973a3d3bd47ed4986a398263ce8201ee5\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Fri Jun 19 00:38:24 2026 +0300\n\n dhcpsvc: imp test assertions",
"is_bot": false,
"headline": "Pull request 2683: AGDNS-3863-gopacket-dhcp-vol.27",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-06-22T09:29:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "922a7aaf02e15099c347aca4e0f18ea5d6a7f690",
"body": "Squashed commit of the following:\n\ncommit 9dfeb2cbb6a107a66518a432b33edb1343fd70b7\nMerge: cc748c030 5d3859bd3\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Wed Jun 17 17:52:41 2026 +0300\n\n Merge branch 'master' into AGDNS-4104-fix-tls-endpoints-do-not-register\n\ncommit cc748c03049be48\n[…]\n home: add todo;\n\ncommit d7d94b48200993ffd1d5ded7a8f7c954b1be6ee2\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Wed Jun 17 16:07:16 2026 +0300\n\n home: fix tls endpoints do not register",
"is_bot": false,
"headline": "Pull request 2682: AGDNS-4104-fix-tls-endpoints-do-not-register",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-06-17T14:57:08Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5d3859bd36e3eef84abfcf4ebc1185379c7bfd4e",
"body": "Updates #8276.\n\nSquashed commit of the following:\n\ncommit d92a630ba1c01a1a516f723c95421a9f4a9c53d3\nMerge: b6fcfbb40 af9142e98\nAuthor: Ainar Garipov <a.garipov@adguard.com>\nDate: Wed Jun 17 16:07:38 2026 +0300\n\n Merge branch 'master' into 8276-fix-ech-base64\n\ncommit b6fcfbb40683105807fd1a37cc023\n[…]\nfix chlog\n\ncommit 1f3ded96fd375ff5210d105d88383fac514faa45\nAuthor: Ainar Garipov <a.garipov@adguard.com>\nDate: Tue Jun 16 21:17:52 2026 +0300\n\n dnsforward: do not require padding when parsing ech",
"is_bot": false,
"headline": "Pull request 2681: 8276-fix-ech-base64",
"author_name": "Ainar Garipov",
"author_login": "ainar-g",
"committed_at": "2026-06-17T13:18:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "af9142e98e1c49783c610f3c5383843cc5b58e53",
"body": "Squashed commit of the following:\n\ncommit 926a3fd13bdbb74ef9a253e61f403a9a63ebd9b2\nMerge: 13e3b38d8 798cd4d2f\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Wed Jun 17 14:59:10 2026 +0300\n\n Merge branch 'master' into AGDNS-4104-move-tls-http-api-from-tls-manager\n\ncommit 13e3b38d823277\n[…]\nt set in tls settings;\n\ncommit 4109d46b789c45bb99fb415636af8690d31e5a36\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Tue Jun 9 19:19:09 2026 +0300\n\n home: mv tls endpoints to web api;",
"is_bot": false,
"headline": "Pull request 2675: AGDNS-4104-move-tls-http-api-from-tls-manager",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-06-17T12:08:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "798cd4d2fd759a22329f0473f06ea21269692625",
"body": "Updates #4923.\n\nSquashed commit of the following:\n\ncommit 072006739bf2efaef83689f1a2b2c706a31d29e1\nMerge: 763b23a37 54e6e3002\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Wed Jun 17 14:40:42 2026 +0300\n\n Merge branch 'master' into AGDNS-3863-gopacket-dhcp-vol.26\n\ncommit 763b23a37bc3c5c379\n[…]\n:13:42 2026 +0300\n\n dhcpsvc: imp tests\n\ncommit cbe23b49f21218d02c56cb7f8b965663834e9457\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Tue Jun 9 20:45:59 2026 +0300\n\n dhcpsvc: add v6 tests",
"is_bot": false,
"headline": "Pull request 2676: AGDNS-3863-gopacket-dhcp-vol.26",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-06-17T11:50:34Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "54e6e300228b731efb9fa4a7428300bc33816fec",
"body": "Squashed commit of the following:\n\ncommit 37db2dd9d38299c70b114197b6da6968e49c7702\nAuthor: Ainar Garipov <a.garipov@adguard.com>\nDate: Tue Jun 9 20:37:36 2026 +0300\n\n filtering: imp docs\n\ncommit 1ebd8f30c6810bb5e8b14246816c46c193a1e3de\nAuthor: Ainar Garipov <a.garipov@adguard.com>\nDate: Tue Jun 9 17:55:40 2026 +0300\n\n all: allow custom filter update intervals",
"is_bot": false,
"headline": "Pull request 2674: custom-flt-upd-ivl",
"author_name": "Ainar Garipov",
"author_login": "ainar-g",
"committed_at": "2026-06-10T10:32:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "36600da54921e2e9441e0304e6eaa8850764754c",
"body": "Squashed commit of the following:\n\ncommit 1ec1589130190478d867ae4d683fa8cae139bb07\nMerge: 997f81cf8 abc48584d\nAuthor: f.setrakov <f.setrakov@adguard.com>\nDate: Tue Jun 9 14:11:45 2026 +0300\n\n Merge branch 'master' into AGDNS-4038-rm-h2c-pkg\n\ncommit 997f81cf833f612a8319cab0c44c6bf5799248ce\nMerge\n[…]\nMerge branch 'master' into AGDNS-4038-rm-h2c-pkg\n\ncommit 4948ea0047463d1cc3cdebde2c95f38bbe32c1b0\nAuthor: f.setrakov <f.setrakov@adguard.com>\nDate: Mon Jun 1 23:21:54 2026 +0300\n\n all: rm h2c pkg",
"is_bot": false,
"headline": "Pull request 2668: AGDNS-4038-rm-h2c-pkg",
"author_name": "Fedor Setrakov",
"author_login": "masterkusok",
"committed_at": "2026-06-09T11:16:57Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "abc48584d7ca95b2fc8aa5c4dc981e0b051d8501",
"body": "Squashed commit of the following:\n\ncommit 2730536faa012017e3d27f838824f9266dd170f7\nMerge: ff3253bd4 8d4fd14b2\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Mon Jun 8 18:10:03 2026 +0300\n\n Merge branch 'master' into AGDNS-4085-imp-updater-logs-and-errors\n\ncommit ff3253bd4c4197737f4b0d\n[…]\npd docs; imp code; upd chlog;\n\ncommit 8a88930c5c3eaef43eb9e6a4ef253f68cea65402\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Wed Jun 3 17:45:08 2026 +0300\n\n updater: imp logs and errs;",
"is_bot": false,
"headline": "Pull request 2672: AGDNS-4085-imp-updater-logs-and-errors",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-06-09T10:44:30Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8d4fd14b2204ce0fc2369fabbcb2772f9a87fb94",
"body": "Squashed commit of the following:\n\ncommit ef1249082eb3f75fdf96bde1c29ca16301b9b4e6\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Fri Jun 5 13:12:25 2026 +0300\n\n upd chlog;\n\ncommit 137921f6e3c5e64928ef337a241aacd7fb29b497\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Thu \n[…]\nll: imp code; imp docs;\n\ncommit 180ebe2dfc3b26d8e598bfbc99fa02cd1a87b76f\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Tue Jun 2 19:55:47 2026 +0300\n\n filtering: add limit filter size;",
"is_bot": false,
"headline": "Pull request 2671: AGDNS-4081-limit-filter-size",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-06-08T10:34:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c7b89c77d47371bf4f43623e043cab2d1eb980d6",
"body": "Squashed commit of the following:\n\ncommit 2e803728cb9a5e830bf7fda461592f2df0a88369\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Tue Jun 2 19:35:52 2026 +0300\n\n client: upd i18n",
"is_bot": false,
"headline": "Pull request 2670: upd-all",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-06-02T16:46:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3250bf155cffb9909eaa09d0e7a37095c2deb2cd",
"body": "Squashed commit of the following:\n\ncommit 8d4779adcef5463c823fd04e9cbd04bd75d10707\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Tue Jun 2 19:17:34 2026 +0300\n\n all: upd chlog",
"is_bot": false,
"headline": "Pull request 2669: upd-chlog",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-06-02T16:26:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cada9c7543961bd3c08dcc25ecd0bc3608525ad4",
"body": "Squashed commit of the following:\n\ncommit 9f008f0c181b9e76c8a50a0995f4b770b3110fdf\nMerge: a7d2558e7 d4dbf9ce9\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Tue Jun 2 15:07:04 2026 +0300\n\n Merge branch 'master' into AG-54599-fix-blocked-domains-check\n\ncommit a7d2558e7ce35080ec7fec5bfa\n[…]\n all: upd chlog;\n\ncommit ee75d9378f0705e28d4eb9fc1e073f77f2bc2e1e\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Mon May 25 15:50:48 2026 +0300\n\n filtering: fix blocked domains check;",
"is_bot": false,
"headline": "Pull request 2663: AG-54599-fix-blocked-domains-check",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-06-02T12:11:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d4dbf9ce9df2d8ec197bcbfbfaf8ee31c0bdc916",
"body": "Updates #4923.\n\nSquashed commit of the following:\n\ncommit b1647cbe59860c18518f78da0dbc6154a4aef4d1\nMerge: be73f9ae1 e3adf9d46\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Thu May 28 15:42:24 2026 +0300\n\n Merge branch 'master' into AGDNS-3863-gopacket-dhcp-vol.25\n\ncommit be73f9ae15ebed8d59\n[…]\n dhcpsvc: fix logic, imp code, docs\n\ncommit 32fc9f4db0ca36bd9ce2f5886cf846b191fbe565\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Wed May 20 14:27:09 2026 +0300\n\n dhcpsvc: handle solicit",
"is_bot": false,
"headline": "Pull request 2659: AGDNS-3863-gopacket-dhcp-vol.25",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-05-28T13:00:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e3adf9d468ce0e9d7a4c1364b05182e48132800f",
"body": "Squashed commit of the following:\n\ncommit 49df1909321bca1315d94b3530279e106ab269a4\nMerge: 2a16ea73f 328551582\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Thu May 28 13:50:54 2026 +0300\n\n Merge branch 'master' into upd-fsnotify\n\ncommit 2a16ea73fe77b2a57affff3a78012dde01e865bb\nAuthor: Euge\n[…]\nWed May 27 14:39:50 2026 +0300\n\n all: rm todo\n\ncommit c4599d67f458061647466778c5082c4f6d7e7466\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Tue May 26 18:39:47 2026 +0300\n\n all: upd deps",
"is_bot": false,
"headline": "Pull request 2664: upd-fsnotify",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-05-28T10:56:06Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3285515828d7903aa22769e78a9a9aa7bc2412d6",
"body": "Squashed commit of the following:\n\ncommit e42fdc074796197bd740dee8a1626dff9e18ed6a\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Wed May 27 18:11:16 2026 +0300\n\n client: upd i18n",
"is_bot": false,
"headline": "Pull request 2665: upd-all",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-05-27T15:35:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bed991cbd63576d0bfaf3a6469e69bd6a08b01ce",
"body": "Use evalErr to avoid go-lint shadow on err from os.Symlink. Aligns workDir/otherDir with filepath.EvalSymlinks paths (/var vs /private/var).",
"is_bot": false,
"headline": "fix(home): canonicalize temp dirs in TestConfigFilePath for macOS CI",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-05-26T13:53:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dc7791039a44f5f2e715f385d215c03fc3ee3bae",
"body": "Upstream: GLiNET path traversal fix (AG-54304), DNSSEC DO caching (#8384), changelog v0.107.76. Keep fcchbjm module path and dnsproxy fork; golibs v0.35.13.",
"is_bot": false,
"headline": "Merge upstream/master (249a3a16); bump fcchbjm/dnsproxy to v0.81.10",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-05-26T13:40:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "249a3a16150891989685f8ca4b23e83a0bfe41f2",
"body": "Squashed commit of the following:\n\ncommit 33991debf6893bbfef320be5363bc83e11859039\nMerge: 3f88261a5 83d8d6595\nAuthor: f.setrakov <f.setrakov@adguard.com>\nDate: Fri May 22 16:10:53 2026 +0300\n\n Merge branch 'master' into AG-54304-path-traversal-vuln\n\ncommit 3f88261a5bba60243c8fd25fcf898789765e80\n[…]\n+0300\n\n all: fix race, imp code\n\ncommit 762f073facc451e6bc160a21e068352b14806620\nAuthor: f.setrakov <f.setrakov@adguard.com>\nDate: Tue May 19 18:13:24 2026 +0300\n\n all: fix path-traversal vuln",
"is_bot": false,
"headline": "Pull request 2656: AG-54304-path-traversal-vuln",
"author_name": "Fedor Setrakov",
"author_login": "masterkusok",
"committed_at": "2026-05-22T13:22:59Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "83d8d65950d78ecb83639c6468aeececc9417316",
"body": "Squashed commit of the following:\n\ncommit fd4c31b21bcee0db6d1211ebcddb11ed522f09b1\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Fri May 22 11:06:00 2026 +0300\n\n all: upd chlog",
"is_bot": false,
"headline": "Pull request 2662: upd-chlog",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-05-22T10:53:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fe22dc0207d80aa8b07c57c365f56e27ca996830",
"body": "Updates #8384.\nUpdates #7046.\n\nSquashed commit of the following:\n\ncommit 62b9aece3464a3b38e3b54fb12438dfd34330418\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Thu May 21 19:51:09 2026 +0300\n\n all: log duration changes\n\ncommit 6dc85b11a6d72e4da288b7b6dcd20de8620274e1\nAuthor: Eugene Burkov \n[…]\nay 21 12:10:39 2026 +0300\n\n all: log changes\n\ncommit 1de93b2800e34bcc0472dcb65ea0b6ace85937d8\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Wed May 20 21:12:12 2026 +0300\n\n all: upd proxy",
"is_bot": false,
"headline": "Pull request 2660: 8384-fix-do-caching",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-05-21T17:02:09Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "569ebd9af7ffe31a4b3ce5d61fd35761671fc35e",
"body": "…I docs\n\nIntegrate AdguardTeam commits 3144e185 and 006d83d1 while keeping fcchbjm module paths and fork-specific settings.",
"is_bot": false,
"headline": "Merge upstream/master (006d83d1): TLS config provider and querylog AP…",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-05-21T07:13:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "006d83d179e37d4c98e8d9ffc95ff899576e1fd6",
"body": "Squashed commit of the following:\n\ncommit 485a706e5473e86e4e999f5b3dc64e3e8b2b6fce\nMerge: 0648cd6a0 3144e1856\nAuthor: f.setrakov <f.setrakov@adguard.com>\nDate: Wed May 20 15:09:50 2026 +0300\n\n Merge branch 'master' into AGDNS-3951-imp-querylog-docs\n\ncommit 0648cd6a0d6db860f153d3b70515b25d351ab1\n[…]\n20 14:53:32 2026 +0300\n\n openapi: changelog\n\ncommit 740d4eb46e738c5bf0c9cffd8f21dff37260f279\nAuthor: f.setrakov <f.setrakov@adguard.com>\nDate: Wed May 20 14:29:05 2026 +0300\n\n openapi: imp doc",
"is_bot": false,
"headline": "Pull request 2658: AGDNS-3951-imp-querylog-docs",
"author_name": "Fedor Setrakov",
"author_login": "masterkusok",
"committed_at": "2026-05-20T12:15:51Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3144e1856a627bf0658bf9f3acfbb003aade3746",
"body": "Squashed commit of the following:\n\ncommit 1748706d70718ae68d64cb0b26d30be5c3635a8d\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Wed May 20 12:21:56 2026 +0300\n\n all: imp docs;\n\ncommit 90f314adeadd167765a0a86493877f042f4b9805\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: \n[…]\nhome: imp code;\n\ncommit 76265a91fd138ee344acc644bc3a8cfbb0c458f9\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Tue May 19 19:39:35 2026 +0300\n\n all: add tls config provider; imp tests;",
"is_bot": false,
"headline": "Pull request 2657: AGDNS-3720-add-tls-config-provider",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-05-20T11:34:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a632d8153a82f74d45020a20acddd120aecb3d75",
"body": null,
"is_bot": false,
"headline": "style(querylog): gofumpt test imports after upstream merge",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-05-20T09:05:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1867acbb4686eba87443a06a8d06f9b50583677f",
"body": "…-all)",
"is_bot": false,
"headline": "Merge upstream/master (4 commits: querylog, go 1.26.3, changelog, upd…",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-05-20T07:20:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1bad93f61abe9a520ca4e05f749b9e20931ce8a5",
"body": null,
"is_bot": false,
"headline": "Update codecov to v5",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-05-20T07:17:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6c5e88e29e900040a69dee75ea3bc74b78da48d3",
"body": "Squashed commit of the following:\n\ncommit ff87d71ff211f5847c661ff47e9a8602538cb184\nAuthor: Eugene Burkov <e.burkov@adguard.com>\nDate: Tue May 19 17:42:41 2026 +0300\n\n client: upd i18n",
"is_bot": false,
"headline": "Pull request 2655: upd-all",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-05-19T14:47:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2d32b7e63c183fcb47b4657f47a9adbc54e914f5",
"body": "Squashed commit of the following:\n\ncommit e2f29bb0259f86924769cc22ae90b08d8e185c66\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Tue May 19 16:10:19 2026 +0300\n\n all: revert new changes\n\ncommit e7ceeba073b2a318108c5ec4890589ed18c56488\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Tue May 19 16:00:09 2026 +0300\n\n all: upd chlog",
"is_bot": false,
"headline": "Pull request 2654: upd-chlog",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-05-19T14:38:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "36f77b499d8e48da52ba882318a52dfc63f6ae95",
"body": "Squashed commit of the following:\n\ncommit 91bca21184b5bcc06f91c1b30c3eb684cad6e742\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Wed May 13 21:07:00 2026 +0300\n\n fix spacing;\n\ncommit a8871572757b8ede5bd6d4c7548bcb64cc3792d7\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: W\n[…]\n rollback redundant changes;\n\ncommit 71db72bac6bcccfbce57d18096ee50d6bedc665a\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Wed May 13 21:01:14 2026 +0300\n\n upd go version to 1.26.3",
"is_bot": false,
"headline": "Pull request 2651: upd-go",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-05-14T14:13:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9d1110d289e8bab2e982aeb6756278ac24e4a508",
"body": "Squashed commit of the following:\n\ncommit 8606668738add53456063aa8f68ded3812170df3\nMerge: 9aff68363 b60af4bf3\nAuthor: f.setrakov <f.setrakov@adguard.com>\nDate: Wed May 13 11:45:39 2026 +0300\n\n Merge branch 'master' into AGDNS-3951-querylog-search-criterion\n\ncommit 9aff6836320a8313900101311adaa2\n[…]\n:51:45 2026 +0300\n\n all: add tests\n\ncommit 2a33db2182811dbeb24311a72734d9be46d155c6\nAuthor: f.setrakov <f.setrakov@adguard.com>\nDate: Wed Apr 29 19:10:02 2026 +0300\n\n all: add reason criterion",
"is_bot": false,
"headline": "Pull request 2645: AGDNS-3951-querylog-search-criterion",
"author_name": "Fedor Setrakov",
"author_login": "masterkusok",
"committed_at": "2026-05-13T09:49:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "57950cdee636901ebe1cddebf27d18ab4265d956",
"body": null,
"is_bot": false,
"headline": "chore: rename Go module to github.com/fcchbjm/AdGuardHome",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-05-08T11:54:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "17f55c5ace242fa19828eb055d56025801f6116b",
"body": null,
"is_bot": false,
"headline": "Merge branch 'AdguardTeam:master' into master",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-05-07T03:07:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b60af4bf312873c31146abb00535eb841050e0c1",
"body": "Updates #4923.\n\nSquashed commit of the following:\n\ncommit 32b3580ed051c4d0b021fd0b141b2e25cd36b584\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Tue May 5 18:37:03 2026 +0300\n\n dhcpsvc: fix docs\n\ncommit cce786e4591d94373b6e2bcbeb51ee5ca1fa1764\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Tue May 5 15:44:53 2026 +0300\n\n dhcpsvc: validate v6 messages",
"is_bot": false,
"headline": "Pull request 2650: AGDNS-3863-gopacket-dhcp-vol.24",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-05-06T15:42:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4aad0d315e6d659e58c4de7d64417cc6e2f1732c",
"body": "Restructure README.md and README_zh.md for first-time readers: short upstream\ncontext, bullet list of fork changes, three-step quick start, and a change-notes\nsection covering PPv2 (strict semantics, trust boundary, topology diagrams),\nthe fcchbjm/dnsproxy stack pointer, and release/version.json plus CI env vars.\nRemove the stray heading before the embedded upstream README and keep both\nlanguage files structurally parallel.",
"is_bot": false,
"headline": "docs(readme): align fork README with dnsproxy-style layout (EN/ZH)",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-05-06T03:21:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fcb7d7ae941a2ac6f7d6cf1d8b21e390d8b497bb",
"body": "# Conflicts:\n#\tgo.mod\n#\tgo.sum",
"is_bot": false,
"headline": "Merge upstream/master (3 commits): retain fork release/update URLs",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-05-06T02:34:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "713178e02e8e08e0e1ef522dc08c8ef180de107c",
"body": "发布产物与 release 二进制默认从本 fork 的 GitHub Release 拉索引与包,\n不设环境变量时与上游 static.adtidy.org 行为一致。\n\n- build-release.sh: VERSION_DOWNLOAD_URL / ANNOUNCEMENT_URL 可选覆盖\n- go-build.sh: UPDATE_INDEX_URL 通过 -ldflags 写入 defaultVersionURLOverride\n- updater: DefaultVersionURL 支持编译期覆盖,校验失败回退官方 CDN\n- release-fcchbjm.yml: Build release archives 注入三变量\n- updater_internal_test: TestDefaultVersionURL_override(无 Parallel + Cleanup)\n- AGENTS.md: §2.1 与 §4 说明(若该文件纳入提交)",
"is_bot": false,
"headline": "use GitHub Release URLs for version.json and update index",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-05-06T02:30:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3eb42df776eebab44fc3af6166daabe9dd0422ba",
"body": "Squashed commit of the following:\n\ncommit a2d683320542638ea767918eb546fa0706e22bbd\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Mon May 4 20:22:04 2026 +0300\n\n client: upd i18n",
"is_bot": false,
"headline": "Pull request 2648: upd-all",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-05-05T11:01:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e5c79502f183d631dcd6d4a519b46de2a1e0d119",
"body": "Squashed commit of the following:\n\ncommit c5c13036947bdc16a75906d8618b7b641e595f58\nMerge: 2e445364b 95b242131\nAuthor: Ainar Garipov <a.garipov@adguard.com>\nDate: Mon May 4 18:00:18 2026 +0300\n\n Merge branch 'master' into AGDNS-3952-udp-id\n\ncommit 2e445364b5044c98eafe1171793e772f09b2dd1b\nAuthor:\n[…]\n 30 14:31:39 2026 +0300\n\n all: upd chlog\n\ncommit 1fe4ac4353ee0f72c1e207d3b129d94a42e01e76\nAuthor: Ainar Garipov <a.garipov@adguard.com>\nDate: Tue Apr 28 21:36:12 2026 +0300\n\n all: upd dnsproxy",
"is_bot": false,
"headline": "Pull request 2643: AGDNS-3952-udp-id",
"author_name": "Ainar Garipov",
"author_login": "ainar-g",
"committed_at": "2026-05-04T15:12:29Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "95b24213147f442b63ed2adf76c1b705c001101d",
"body": "Updates #8359.\n\nSquashed commit of the following:\n\ncommit 3242b00261ddcf37632999a992e2b81eae5a7f95\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Thu Apr 30 14:10:13 2026 +0300\n\n stats: imp code\n\ncommit b7bf300f8744b53f6cd49ce37ebd36c970da5630\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Wed Apr 29 22:28:59 2026 +0300\n\n all: fix deadlock",
"is_bot": false,
"headline": "Pull request 2646: 8359-fix-deadlock",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-05-04T13:00:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7f4fd4df9b39667edccc85b01d176ade3278e138",
"body": "…rdHome\n\nCo-authored-by: Cursor <cursoragent@cursor.com>\n\n# Conflicts:\n#\tclient/src/components/Settings/Dns/Config/Form.tsx\n#\tgo.sum",
"is_bot": false,
"headline": "Merge branch 'master' of https://github.com/fcchbjm/AdguardTeam-AdGua…",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-05-02T11:24:41Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "344f6c4437ec0da92d896c0a33217c054257de66",
"body": null,
"is_bot": false,
"headline": "更新dnsproxy版本",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-05-02T11:22:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a1e810c01e5dc076bb7a690fba95d169d6be550b",
"body": "Use a lowercase GHCR repository name for DOCKER_IMAGE_NAME so docker buildx push passes tag validation in release workflow.\n\nMade-with: Cursor",
"is_bot": false,
"headline": "fix ghcr image name casing in release workflow",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-05-02T11:21:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "814674e9377b04f81d1f11860c54f4d35ceab251",
"body": "Apply gofumpt formatting to all files reported by CI go-lint so formatting checks pass without changing runtime behavior.\n\nMade-with: Cursor",
"is_bot": false,
"headline": "fix gofumpt violations after dnsproxy path switch",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-05-02T11:21:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3d9709db56c59d2133b28f8fedc5ca69f7089c60",
"body": "Switch dnsproxy references from AdguardTeam to fcchbjm across runtime and tests, and update go.mod/go.sum to depend directly on github.com/fcchbjm/dnsproxy v0.81.7 so the branch builds cleanly against the fork.\n\nMade-with: Cursor",
"is_bot": false,
"headline": "align dnsproxy imports with forked module path",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-05-02T11:21:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a4c215643406918b45ad6744aad55aeca3ac8fd3",
"body": null,
"is_bot": false,
"headline": "适配dnsproxy对Proxy Protocol v2的支持",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-05-02T11:21:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "815e2d0b1b8f3c662da119ee8f9be5fa4f956a2b",
"body": null,
"is_bot": false,
"headline": "更新dnsproxy版本",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-05-02T11:02:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9e3d913e72aa167ca8494b61ef841042bb709171",
"body": "…ith recharts\n\nUpdates #6823\n\nSquashed commit of the following:\n\ncommit c4309d3015ede9a7631e91afe96f9a2091c6c429\nAuthor: Ildar Kamalov <ik@adguard.com>\nDate: Mon Apr 27 14:32:09 2026 +0300\n\n fix lint\n\ncommit d290420191d83c4d2dcbabd04eea2fb921d94f4b\nAuthor: Ildar Kamalov <ik@adguard.com>\nDate: \n[…]\n0300\n\n changelog\n\ncommit 5e43688eed2e97501610fd4c000df2c85beed169\nAuthor: Ildar Kamalov <ik@adguard.com>\nDate: Thu Apr 23 17:49:32 2026 +0300\n\n ADG-8560 remove axios and replace charts library",
"is_bot": false,
"headline": "Pull request 2641: ADG-8560 remove axios and replace charts library w…",
"author_name": "Ildar Kamalov",
"author_login": "IldarKamalov",
"committed_at": "2026-04-27T13:15:14Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c22183c6f082897be053d06f913326f5cc830e74",
"body": "Squashed commit of the following:\n\ncommit 9ca94b03ee255cf8810c72ffcf967ae348d796fd\nMerge: 5516a95d0 44dfffc83\nAuthor: Ainar Garipov <a.garipov@adguard.com>\nDate: Fri Apr 24 15:44:56 2026 +0300\n\n Merge branch 'master' into AGDNS-3945-imp-querylog\n\ncommit 5516a95d082dbe8acc85efb0833c63f7a7bde220\n\n[…]\n: imp go.mod, names, errors\n\ncommit 20f5e335c1f3c21d7cc6ec6dd57389507627ba3d\nAuthor: Ainar Garipov <a.garipov@adguard.com>\nDate: Wed Apr 22 21:02:13 2026 +0300\n\n all: modernize code; imp querylog",
"is_bot": false,
"headline": "Pull request 2638: AGDNS-3945-imp-querylog",
"author_name": "Ainar Garipov",
"author_login": "ainar-g",
"committed_at": "2026-04-24T13:04:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "44dfffc832e071bdd88c2544f87c852b493ed9a9",
"body": "Updates #8348.\n\nSquashed commit of the following:\n\ncommit efc0f41d1948f899396f97daf0567d6e55a4c62c\nMerge: 86fa74426 313135d74\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Thu Apr 23 18:21:20 2026 +0300\n\n Merge branch 'master' into 8348-improve-dhcpd-error-handling\n\ncommit 86fa744261347345e494df5aaa2267f403c3f052\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Thu Apr 23 15:09:40 2026 +0300\n\n dhcpd: change log level",
"is_bot": false,
"headline": "Pull request 2640: 8348-improve-dhcpd-error-handling",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-04-24T10:53:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "313135d74f40004b966b887babd4b83bca152e85",
"body": "Squashed commit of the following:\n\ncommit 43c0748600f8d69ffd126991c17c9cb972a7961c\nMerge: 1a9c78d8b 35f910186\nAuthor: f.setrakov <f.setrakov@adguard.com>\nDate: Thu Apr 23 17:21:12 2026 +0300\n\n Merge branch 'master' into AGDNS-3799-h2c-vuln-test\n\ncommit 1a9c78d8bfc219b54305d13e9d5abe6e8f5a6517\nA\n[…]\n0300\n\n home: impl upgrade requests\n\ncommit 483ed1ff149e489f9b0a8ac3f1a438e04c1087fb\nAuthor: f.setrakov <f.setrakov@adguard.com>\nDate: Fri Mar 27 13:07:07 2026 +0300\n\n home: h2c vuln test draft",
"is_bot": false,
"headline": "Pull request 2614: AGDNS-3799-h2c-vuln-test",
"author_name": "Fedor Setrakov",
"author_login": "masterkusok",
"committed_at": "2026-04-23T14:28:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "35f91018633f6e979db05e5a326b452bb83c3cda",
"body": "Squashed commit of the following:\n\ncommit 0a639315fab426a0bcc3e8164009abd661194cff\nMerge: 33fbca6b6 f7c907878\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Thu Apr 23 15:32:37 2026 +0300\n\n Merge branch 'master' into ADG-12124-use-globs-properly-in-scripts\n\ncommit 33fbca6b665251e8ba9e0ac8eeac366dcd03ae0f\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Thu Apr 23 14:48:54 2026 +0300\n\n make: use globs properly;",
"is_bot": false,
"headline": "Pull request 2639: ADG-12124-use-globs-properly-in-scripts",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-04-23T12:40:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f7c9078781ed3a25181b804e0e9397148ebdbf1c",
"body": "Squashed commit of the following:\n\ncommit 0daffc441eec484e534bf7067185418ef0da57d4\nMerge: b75c3829c b08e58766\nAuthor: Dimitry Kolyshev <dkolyshev@adguard.com>\nDate: Thu Apr 23 17:04:08 2026 +0700\n\n Merge remote-tracking branch 'origin/master' into AGDNS-3870-imp-dnssec\n\ncommit b75c3829cd8d2a17c\n[…]\nrigin/master' into AGDNS-3870-imp-dnssec\n\ncommit c8eb8145b4fbb340f0d84b8981445b24665b5a99\nAuthor: Dimitry Kolyshev <dkolyshev@adguard.com>\nDate: Wed Apr 15 11:41:11 2026 +0700\n\n all: upd dnsproxy",
"is_bot": false,
"headline": "Pull request: AGDNS-3870-imp-dnssec",
"author_name": "Dimitry Kolyshev",
"author_login": "Mizzick",
"committed_at": "2026-04-23T12:30:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2d11de5ba696b460e4ffcb75d557a304b2dce11a",
"body": "Use a lowercase GHCR repository name for DOCKER_IMAGE_NAME so docker buildx push passes tag validation in release workflow.\n\nMade-with: Cursor",
"is_bot": false,
"headline": "fix ghcr image name casing in release workflow",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-04-23T10:52:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ced0b5fbde5655477194256d1cba746ea5e21bfe",
"body": "Apply gofumpt formatting to all files reported by CI go-lint so formatting checks pass without changing runtime behavior.\n\nMade-with: Cursor",
"is_bot": false,
"headline": "fix gofumpt violations after dnsproxy path switch",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-04-23T05:47:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "239d812d533d2d3cbf1b3526ae4b808d4ee90be0",
"body": "Switch dnsproxy references from AdguardTeam to fcchbjm across runtime and tests, and update go.mod/go.sum to depend directly on github.com/fcchbjm/dnsproxy v0.81.7 so the branch builds cleanly against the fork.\n\nMade-with: Cursor",
"is_bot": false,
"headline": "align dnsproxy imports with forked module path",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-04-23T04:41:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4f88da83305a619a244ca941087c8dd21352b3bc",
"body": null,
"is_bot": false,
"headline": "适配dnsproxy对Proxy Protocol v2的支持",
"author_name": "fcchbjm",
"author_login": "fcchbjm",
"committed_at": "2026-04-23T04:27:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b08e587660891bef937c626d76a23ed957707c0d",
"body": "Updates #4923.\n\nSquashed commit of the following:\n\ncommit 305d3ba116a6abcdb23805af8a5a7dfb82bdc580\nMerge: c7512c829 9e153fbd9\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Tue Apr 21 19:30:31 2026 +0300\n\n Merge branch 'master' into AGDNS-3863-gopacket-dhcp-vol.23\n\ncommit c7512c82921b2dbf05\n[…]\n dhcpsvc: add dhcpv6 handle, imp code\n\ncommit e94cb9e1da8c117bc4c16634270230125f97677c\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Wed Apr 15 15:56:38 2026 +0300\n\n dhcpsvc: add ipv6 consts",
"is_bot": false,
"headline": "Pull request 2634: AGDNS-3863-gopacket-dhcp-vol.23",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-04-21T16:53:45Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9e153fbd990db8ab2afd8f6eec694b0ebea30fe4",
"body": "Squashed commit of the following:\n\ncommit 8cb31a510bc3983032337c513df8859bd6e89333\nMerge: 3a3ff8e40 3f153ea7c\nAuthor: Dimitry Kolyshev <dkolyshev@adguard.com>\nDate: Mon Apr 20 10:41:36 2026 +0700\n\n Merge remote-tracking branch 'origin/master' into ADG-12053-imp-gh-workflow-permissions\n\ncommit 3\n[…]\n+0700\n\n gh workflows: fmt\n\ncommit 1cd766f351d98af2d183d1795ecb30891a1c997c\nAuthor: Dimitry Kolyshev <dkolyshev@adguard.com>\nDate: Tue Apr 14 11:43:03 2026 +0700\n\n gh workflows: imp permissions",
"is_bot": false,
"headline": "Pull request: ADG-12053-imp-gh-workflow-permissions",
"author_name": "Dimitry Kolyshev",
"author_login": "Mizzick",
"committed_at": "2026-04-20T03:50:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3f153ea7cbcbad9c5eaf96fb274eedf88481b842",
"body": "Squashed commit of the following:\n\ncommit 689c4bdc8bb1639572e25e630d1cbfbd6f807f7f\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Fri Apr 17 15:33:43 2026 +0300\n\n snap: imp download.sh\n\ncommit 0dec7e32d3888a04042e1e7390921a1b64048ac5\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\n\n[…]\n\n snap: fix script;\n\ncommit ff439b787122e9082472e56b1ca32b0ba632e5b9\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Thu Apr 16 19:46:49 2026 +0300\n\n snap: add cache buster url param;",
"is_bot": false,
"headline": "Pull request 2636: AGDNS-3914-increase-snapcraft-build-stability",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-04-17T14:33:32Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "30e770f64b75a9fb98a45920db77db1d27d11f11",
"body": "Squashed commit of the following:\n\ncommit 6f535673668f7d191e38d810171c85a030ceb2c6\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Thu Apr 16 15:12:11 2026 +0300\n\n all: upd chlog",
"is_bot": false,
"headline": "Pull request 2635: upd-chlog",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-04-16T13:42:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a3b73ef42f2be8379ca7a15c47d15c8b9c537583",
"body": "…rol settings translations\n\nSquashed commit of the following:\n\ncommit 8a12d4f528698b28df3ca3b5a1c0cc1e3d5b5c15\nAuthor: Ildar Kamalov <ik@adguard.com>\nDate: Tue Apr 14 17:15:22 2026 +0300\n\n changelog\n\ncommit 6443155739f19a268ec92e84614e9a2883bd3f41\nAuthor: Ildar Kamalov <ik@adguard.com>\nDate: Tue Apr 14 17:13:38 2026 +0300\n\n AGDNS-3866 fix browsing security and parental control translations",
"is_bot": false,
"headline": "Pull request 2632: AGDNS-3866 fix browsing security and parental cont…",
"author_name": "Ildar Kamalov",
"author_login": "IldarKamalov",
"committed_at": "2026-04-14T16:02:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1241dea97c62b2d5d72189e6454e66891a838fca",
"body": "Squashed commit of the following:\n\ncommit 2e560760b1f541bdc8a487fb985363e7dc00bf89\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Tue Apr 14 14:43:41 2026 +0300\n\n all: upd yaml\n\ncommit 36cc48366da22347bbb7e132f810042cebbb6b47\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Tue Apr 14 1\n[…]\n:55 2026 +0300\n\n client: upd i18n\n\ncommit 918a67a95097088d1d154769bbd037242bc6bf75\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Mon Apr 13 19:16:29 2026 +0300\n\n all: upd blocked services",
"is_bot": false,
"headline": "Pull request 2629: upd-all",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-04-14T12:20:36Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "be704e7fef324af6aa83d0dfe74727efad254b1b",
"body": "Squashed commit of the following:\n\ncommit 85f02d0d9b5fcca959ad7366c1f6749ffad0f7c3\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Tue Apr 14 13:55:06 2026 +0300\n\n all: log changes\n\ncommit 184ca18731c3d9c6822188ba55eb9a29df872b9c\nAuthor: Ildar Kamalov <ik@adguard.com>\nDate: Tue Apr 14 12:24:08 2026 +0300\n\n ADG-12066 update axios",
"is_bot": false,
"headline": "Pull request 2631: ADG-12066 update axios",
"author_name": "Ildar Kamalov",
"author_login": "IldarKamalov",
"committed_at": "2026-04-14T11:09:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8b4ce596d3fe7408f233d68059486d6538cd0686",
"body": "Squashed commit of the following:\n\ncommit eb9af7926792d5d051721c08255a57f31cff7348\nMerge: ce7208031 53f269be4\nAuthor: Dimitry Kolyshev <dkolyshev@adguard.com>\nDate: Tue Apr 14 10:36:00 2026 +0700\n\n Merge remote-tracking branch 'origin/master' into AGDNS-3826-add-platform-tests\n\ncommit ce7208031\n[…]\n026 +0700\n\n ossvc: add tests sysmd\n\ncommit 4cad7837723528376b3d8b3f5cf5d2d60c44b3d1\nAuthor: Dimitry Kolyshev <dkolyshev@adguard.com>\nDate: Wed Apr 8 13:46:03 2026 +0700\n\n ossvc: add tests sysv",
"is_bot": false,
"headline": "Pull request: AGDNS-3826-add-platform-tests",
"author_name": "Dimitry Kolyshev",
"author_login": "Mizzick",
"committed_at": "2026-04-14T03:45:02Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "53f269be40ccfe01d71ce7eab02a0a570b2bfe2b",
"body": "Updates #7058.\n\nSquashed commit of the following:\n\ncommit 99f0dbd38c22b6e0fffb3eae144f280a42d0334e\nMerge: 9cd78d2b1 d28f33afc\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Mon Apr 13 17:39:32 2026 +0300\n\n Merge branch 'master' into 7058-refactor-upstream-routing\n\ncommit 9cd78d2b10f37984a80\n[…]\n Apr 13 17:30:16 2026 +0300\n\n all: upd to tag\n\ncommit 7f53e9f4b79756066580965020cf848dd1e380cf\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Wed Apr 8 21:32:43 2026 +0300\n\n all: upd proxy",
"is_bot": false,
"headline": "Pull request 2626: 7058-refactor-upstream-routing",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-04-13T15:50:56Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d28f33afca6b196f97eab54095e41a3ecd452494",
"body": "Squashed commit of the following:\n\ncommit dc9d1f9448e0213e2484e9ad767c3015619a382a\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Fri Apr 10 12:39:28 2026 +0300\n\n home: upd var name;\n\ncommit ef34751d24f94e63376da13c0e0214011c29e213\nMerge: 1a2cfce7e 397ed060d\nAuthor: Ainar Garipov <a.g\n[…]\nhome: imp code; add docs, contracts;\n\ncommit 334a75e58e514e0554a8a18963537ef03ce6b9de\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Wed Apr 8 13:36:04 2026 +0300\n\n home: rm old logger;",
"is_bot": false,
"headline": "Pull request 2624: AGDNS-3869-rm-the-old-logger-from-some-entities",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-04-10T09:48:40Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "397ed060d992759dd5e918e7a2e66df38120e924",
"body": "Squashed commit of the following:\n\ncommit 4135405a402ab40f4ab133543312e99851b35454\nMerge: 2b5761949 f8a72754e\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Fri Apr 10 12:01:09 2026 +0300\n\n Merge branch 'master' into AGDNS-3868-imp-openbsd-in-ossvc\n\ncommit 2b57619493ebc83e2833e9c651bb\n[…]\n ossvc: imp code;\n\ncommit 3096404aef6b3bd19f702d4f1dbe6f7b7d3265c6\nAuthor: Maksim Kazantsev <m.kazantsev@adguard.com>\nDate: Wed Apr 8 12:19:00 2026 +0300\n\n ossvc: imp code in service_openbsd.go;",
"is_bot": false,
"headline": "Pull request 2623: AGDNS-3868-imp-openbsd-in-ossvc",
"author_name": "Maksim Kazantsev",
"author_login": "makazantsev",
"committed_at": "2026-04-10T09:11:36Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f8a72754ecc63904cabb22ca2679cd4a5ac0dc4d",
"body": "Squashed commit of the following:\n\ncommit 43b5e287afd79edcd30d577c47c9b759696813d7\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Thu Apr 9 21:34:32 2026 +0300\n\n dhcpsvc: fix test\n\ncommit 4e1e04130a0460cee82db916d5eac55a78b4f061\nAuthor: Eugene Burkov <E.Burkov@AdGuard.COM>\nDate: Thu Apr 9 21:02:45 2026 +0300\n\n all: upd go & tools",
"is_bot": false,
"headline": "Pull request 2627: upd-go",
"author_name": "Eugene Burkov",
"author_login": "EugeneOne1",
"committed_at": "2026-04-09T18:44:03Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 8,
"commits_last_year": 252,
"latest_release_at": "2026-07-18T18:31:07Z",
"latest_release_tag": "v0.0.8",
"releases_from_tags": false,
"days_since_last_push": 8,
"active_weeks_last_year": 48,
"days_since_latest_release": 8,
"mean_days_between_releases": 14.6
},
"community": {
"has_readme": false,
"has_license": false,
"has_description": false,
"has_contributing": false,
"health_percentage": null,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "github.com/fcchbjm/AdGuardHome",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/fcchbjm/AdGuardHome",
"is_deprecated": false,
"latest_version": "v0.0.8",
"repository_url": "https://github.com/fcchbjm/AdGuardHome",
"versions_count": 8,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-07-18T17:49:04Z",
"latest_version_yanked": null,
"days_since_latest_publish": 8
}
]
},
"popularity": {
"forks": 0,
"stars": 0,
"watchers": 0,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": {
"days": [],
"complete": true,
"collected": 0,
"total_stars": 0,
"collected_at": null
},
"open_issues_and_prs": 0
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"examples"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"Makefile"
],
"api_schema_files": [
"openapi/openapi.yaml"
],
"has_devcontainer": false,
"typecheck_configs": [
"client/tsconfig.json",
"client_v2/tsconfig.json"
],
"toolchain_manifests": [
"go.mod"
],
"largest_source_bytes": 239910,
"source_files_sampled": 1129,
"oversized_source_files": 1,
"agent_instruction_files": [
"client_v2/AGENTS.md"
],
"agent_instruction_max_bytes": 24966
},
"dependencies": {
"manifests": [
"client/package.json",
"client_v2/package.json",
"go.mod"
],
"advisories": {
"error": null,
"scope": null,
"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": 0,
"direct_affected_count": 0
},
"ecosystems": [
"go",
"npm"
],
"dependencies": [
{
"name": "classnames",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^2.5.1"
},
{
"name": "clsx",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^2.1.1"
},
{
"name": "countries-and-timezones",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^3.6.0"
},
{
"name": "date-fns",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^1.29.0"
},
{
"name": "i18next",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^19.6.2"
},
{
"name": "i18next-browser-languagedetector",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^4.2.0"
},
{
"name": "ipaddr.js",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^1.9.1"
},
{
"name": "js-yaml",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^3.14.0"
},
{
"name": "lodash",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^4.17.19"
},
{
"name": "nanoid",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^3.1.9"
},
{
"name": "popper.js",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^1.16.1"
},
{
"name": "prop-types",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^15.8.1"
},
{
"name": "query-string",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^6.13.1"
},
{
"name": "react",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^16.13.1"
},
{
"name": "react-click-outside",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^3.0.1"
},
{
"name": "react-dom",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^16.13.1"
},
{
"name": "react-hook-form",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^7.54.0"
},
{
"name": "react-i18next",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^11.7.2"
},
{
"name": "react-modal",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^3.11.2"
},
{
"name": "react-popper-tooltip",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^2.11.1"
},
{
"name": "react-redux",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^7.2.0"
},
{
"name": "react-redux-loading-bar",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^4.6.0"
},
{
"name": "react-router-dom",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^5.2.0"
},
{
"name": "react-router-hash-link",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^1.2.2"
},
{
"name": "react-select",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^3.1.0"
},
{
"name": "react-table",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^6.11.4"
},
{
"name": "react-transition-group",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^4.4.5"
},
{
"name": "recharts",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "2.15.4"
},
{
"name": "redux",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^4.0.5"
},
{
"name": "redux-actions",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^2.6.5"
},
{
"name": "redux-thunk",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^2.3.0"
},
{
"name": "url-polyfill",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "^1.1.12"
},
{
"name": "yaml",
"manifest": "client/package.json",
"ecosystem": "npm",
"version_constraint": "2.8.3"
},
{
"name": "@adguard/translate",
"manifest": "client_v2/package.json",
"ecosystem": "npm",
"version_constraint": "^1.0.2"
},
{
"name": "@ark-ui/solid",
"manifest": "client_v2/package.json",
"ecosystem": "npm",
"version_constraint": "^5.37.1"
},
{
"name": "@modular-forms/solid",
"manifest": "client_v2/package.json",
"ecosystem": "npm",
"version_constraint": "^0.25.0"
},
{
"name": "@solidjs/router",
"manifest": "client_v2/package.json",
"ecosystem": "npm",
"version_constraint": "^0.15.0"
},
{
"name": "chart.js",
"manifest": "client_v2/package.json",
"ecosystem": "npm",
"version_constraint": "^4.4.0"
},
{
"name": "clsx",
"manifest": "client_v2/package.json",
"ecosystem": "npm",
"version_constraint": "^2.1.1"
},
{
"name": "copy-to-clipboard",
"manifest": "client_v2/package.json",
"ecosystem": "npm",
"version_constraint": "^3.3.3"
},
{
"name": "countries-and-timezones",
"manifest": "client_v2/package.json",
"ecosystem": "npm",
"version_constraint": "^3.6.0"
},
{
"name": "date-fns",
"manifest": "client_v2/package.json",
"ecosystem": "npm",
"version_constraint": "^4.1.0"
},
{
"name": "ipaddr.js",
"manifest": "client_v2/package.json",
"ecosystem": "npm",
"version_constraint": "^2.2.0"
},
{
"name": "js-yaml",
"manifest": "client_v2/package.json",
"ecosystem": "npm",
"version_constraint": "^4.1.0"
},
{
"name": "lodash",
"manifest": "client_v2/package.json",
"ecosystem": "npm",
"version_constraint": "^4.17.19"
},
{
"name": "nanoid",
"manifest": "client_v2/package.json",
"ecosystem": "npm",
"version_constraint": "^5.1.0"
},
{
"name": "qs",
"manifest": "client_v2/package.json",
"ecosystem": "npm",
"version_constraint": "^6.14.0"
},
{
"name": "solid-js",
"manifest": "client_v2/package.json",
"ecosystem": "npm",
"version_constraint": "^1.9.0"
},
{
"name": "solid-transition-group",
"manifest": "client_v2/package.json",
"ecosystem": "npm",
"version_constraint": "^0.3.0"
},
{
"name": "github.com/AdguardTeam/dnscrypt",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.0.2"
},
{
"name": "github.com/AdguardTeam/golibs",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.35.14"
},
{
"name": "github.com/AdguardTeam/urlfilter",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.23.4"
},
{
"name": "github.com/NYTimes/gziphandler",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.1.1"
},
{
"name": "github.com/bluele/gcache",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.0.2"
},
{
"name": "github.com/c2h5oh/datasize",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.0.0-20231215233829-aa82cc1e6500"
},
{
"name": "github.com/digineo/go-ipset/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.2.1"
},
{
"name": "github.com/fcchbjm/dnsproxy",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.82.0"
},
{
"name": "github.com/fsnotify/fsnotify",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.10.1"
},
{
"name": "github.com/go-ping/ping",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.2.0"
},
{
"name": "github.com/google/go-cmp",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.7.0"
},
{
"name": "github.com/google/gopacket",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.1.19"
},
{
"name": "github.com/google/renameio/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.0.2"
},
{
"name": "github.com/google/uuid",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.6.0"
},
{
"name": "github.com/gopacket/gopacket",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.7.0"
},
{
"name": "github.com/insomniacslk/dhcp",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.0.0-20260603135910-a415979eb11e"
},
{
"name": "github.com/kardianos/service",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.2.4"
},
{
"name": "github.com/mdlayher/ethernet",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.0.0-20220221185849-529eae5b6118"
},
{
"name": "github.com/mdlayher/netlink",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.11.2"
},
{
"name": "github.com/mdlayher/packet",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.1.2"
},
{
"name": "github.com/mdlayher/raw",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.1.0"
},
{
"name": "github.com/miekg/dns",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.1.72"
},
{
"name": "github.com/quic-go/quic-go",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.60.0"
},
{
"name": "github.com/stretchr/testify",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.11.1"
},
{
"name": "github.com/ti-mo/netfilter",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.5.3"
},
{
"name": "go.etcd.io/bbolt",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.5.0"
},
{
"name": "go.yaml.in/yaml/v4",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v4.0.0-rc.6"
},
{
"name": "golang.org/x/crypto",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.54.0"
},
{
"name": "golang.org/x/net",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.57.0"
},
{
"name": "golang.org/x/sys",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.47.0"
},
{
"name": "gopkg.in/natefinch/lumberjack.v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.2.1"
},
{
"name": "howett.net/plist",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.0.1"
}
],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 0,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 0
},
"bus_factor": 3,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "ainar-g",
"commits": 923,
"avatar_url": "https://avatars.githubusercontent.com/u/4964986?v=4"
},
{
"type": "User",
"login": "szolin",
"commits": 847,
"avatar_url": "https://avatars.githubusercontent.com/u/38690158?v=4"
},
{
"type": "User",
"login": "IldarKamalov",
"commits": 527,
"avatar_url": "https://avatars.githubusercontent.com/u/2804667?v=4"
},
{
"type": "User",
"login": "ameshkov",
"commits": 508,
"avatar_url": "https://avatars.githubusercontent.com/u/5947035?v=4"
},
{
"type": "User",
"login": "EugeneOne1",
"commits": 452,
"avatar_url": "https://avatars.githubusercontent.com/u/38542664?v=4"
},
{
"type": "User",
"login": "hmage",
"commits": 409,
"avatar_url": "https://avatars.githubusercontent.com/u/739119?v=4"
},
{
"type": "User",
"login": "ArtemBaskal",
"commits": 206,
"avatar_url": "https://avatars.githubusercontent.com/u/45331104?v=4"
},
{
"type": "User",
"login": "schzhn",
"commits": 188,
"avatar_url": "https://avatars.githubusercontent.com/u/121440673?v=4"
},
{
"type": "User",
"login": "Mizzick",
"commits": 94,
"avatar_url": "https://avatars.githubusercontent.com/u/13855288?v=4"
},
{
"type": "User",
"login": "aadmitrevskiy",
"commits": 69,
"avatar_url": "https://avatars.githubusercontent.com/u/204723740?v=4"
}
],
"contributors_sampled": 94,
"top_contributor_share": 0.205
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"build.yml",
"lint.yml",
"release-fcchbjm.yml"
],
"has_docs_dir": true,
"linter_configs": [
".eslintrc.cjs",
".eslintrc.json"
],
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"go.sum",
"package-lock.json"
],
"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": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": null,
"reason": "no pull request found",
"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": 0,
"reason": "Found 0/30 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 7 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 10,
"reason": "project is 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 0 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": null,
"reason": "packaging workflow not 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": 0,
"reason": "no SAST tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 10,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 0,
"reason": "Project has not signed or included provenance with any releases.",
"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": 0,
"reason": "34 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "7982e9ae8c2f3f3a1a411d644da20d46f4bb4bf8",
"ran_at": "2026-07-27T16:12:56Z",
"aggregate_score": 4.1,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-18T18:17:30Z",
"oldest_open_prs": [],
"last_merged_pr_at": null,
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/fcchbjm/AdGuardHome",
"host": "github.com",
"name": "AdGuardHome",
"owner": "fcchbjm"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 55,
"inputs": {
"security": 41,
"vitality": 90,
"community": 12,
"governance": 51,
"engineering": 71
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "excellent",
"name": "Vitality",
"value": 90,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "excellent",
"name": "Development activity",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"commits_last_year": 252,
"human_commit_share": 1,
"days_since_last_push": 8,
"active_weeks_last_year": 48
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 8 days ago",
"points": 28.8,
"status": "partial",
"details": [
{
"code": "push_recency",
"params": {
"days": 8
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "48/52 weeks with commits",
"points": 33.2,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 48
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "252 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 252
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"releases_count": 8,
"latest_release_tag": "v0.0.8",
"releases_from_tags": false,
"days_since_latest_release": 8,
"mean_days_between_releases": 14.6
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "8 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 8
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 8 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 8
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~14.6 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 14.6
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "unverified",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": "repository_too_young",
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": null,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "maintenance record not established from the collected data",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_unverified",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "critical",
"name": "Community & Adoption",
"value": 12,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"forks": 0,
"stars": 0,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "0 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 0
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "0 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 0
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "critical",
"name": "Community health",
"note": null,
"notes": [],
"value": 25,
"inputs": {
"has_readme": false,
"has_license": false,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (GPL-3.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "GPL-3.0"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"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": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 51,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "good",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 77,
"inputs": {
"bus_factor": 3,
"contributors_sampled": 94,
"top_contributor_share": 0.205
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "3 contributor(s) cover half of all commits",
"points": 36,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 3
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 20% of commits",
"points": 17.9,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 20
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "94 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 94
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 7 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "critical",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Issue resolution, PR acceptance. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"issue_resolution",
"pr_acceptance"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 1,
"inputs": {
"merged_prs": 0,
"open_issues": 0,
"closed_issues": 0,
"issue_closed_ratio": null,
"closed_unmerged_prs": 0
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "no issues or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_issues_or_data",
"params": {}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "no decided pull requests or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_decided_prs_or_data",
"params": {}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "at_risk",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 30,
"inputs": {
"followers": 0,
"owner_type": "User",
"is_verified": null,
"owner_login": "fcchbjm",
"public_repos": 14,
"account_age_days": 1010
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "0 followers of fcchbjm",
"points": 0,
"status": "missed",
"details": [
{
"code": "owner_followers",
"params": {
"count": 0,
"login": "fcchbjm"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "14 public repos, account ~2 yr old",
"points": 14.1,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 14
}
},
{
"code": "account_age_years",
"params": {
"years": 2
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"github.com/fcchbjm/AdGuardHome"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 8
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on go",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "go"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 8 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 8
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "8 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 8
}
}
],
"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": 71,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "excellent",
"name": "Engineering practices",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_ci_tests"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 88,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "3 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 3
}
}
],
"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": ".eslintrc.cjs, .eslintrc.json",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".eslintrc.cjs, .eslintrc.json"
}
}
],
"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": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "at_risk",
"name": "Documentation",
"note": null,
"notes": [],
"value": 45,
"inputs": {
"topics": [
"adguardhome",
"dns",
"dns-over-https",
"dns-over-quic",
"dns-over-tls",
"ppv2",
"proxy-protocol",
"adguard-home"
],
"has_wiki": true,
"homepage": null,
"has_readme": false,
"has_docs_dir": true,
"has_description": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "8 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 8
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "at_risk",
"name": "Security",
"value": 41,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): CI-Tests, Packaging. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"ci_tests",
"packaging"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 41,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 4.1
},
"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": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"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 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 7 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is fuzzed",
"points": 5,
"status": "met",
"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 0 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 not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"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": "no SAST tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"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": "34 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"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.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 5
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"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": "good",
"name": "AI Readiness",
"value": 82,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.9,
"agent_instruction_files": [
"client_v2/AGENTS.md"
],
"agent_instruction_max_bytes": 24966
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "client_v2/AGENTS.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "client_v2/AGENTS.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "90 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 90,
"sampled": 100
}
}
],
"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": [
"go.sum",
"package-lock.json"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [
"Makefile"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"client/tsconfig.json",
"client_v2/tsconfig.json"
],
"agent_commit_share": 0.01,
"toolchain_manifests": [
"go.mod"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Makefile"
}
}
],
"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": ".eslintrc.cjs, .eslintrc.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".eslintrc.cjs, .eslintrc.json"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "client/tsconfig.json, client_v2/tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "client/tsconfig.json, client_v2/tsconfig.json"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "1 of the last 100 commits agent-authored or agent-credited",
"points": 2,
"status": "partial",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 1,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"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": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "TypeScript",
"largest_source_bytes": 239910,
"source_files_sampled": 1129,
"oversized_source_files": 1
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "TypeScript (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "TypeScript"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "1/1129 source files over 60KB",
"points": 55,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 1129,
"oversized": 1
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "good",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 80,
"inputs": {
"example_dirs": [
"examples"
],
"has_mcp_signal": false,
"api_schema_files": [
"openapi/openapi.yaml"
]
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": "openapi/openapi.yaml",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "openapi/openapi.yaml"
}
}
],
"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": "examples",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "examples"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Community profile unavailable",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-27T16:13:13.036798Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/f/fcchbjm/AdGuardHome.svg",
"full_name": "fcchbjm/AdGuardHome",
"license_state": "standard",
"license_spdx": "GPL-3.0"
}