Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-27 02:29 UTC

appium / dotnet-client

Extension to the official Selenium dotnet webdriver

C#Apache-2.0★ 399 estrellas⑂ 185 forksdesde abr 2014Ver en GitHub ↗

appium/dotnet-client tiene un índice de salud de 37 sobre 100, lo que lo sitúa en la banda En riesgo. Su puntuación más alta es Vitality (86/100) y la más baja, Security (47/100). Se actualizó por última vez hoy. 2 personas concentran la mayor parte del trabajo reciente.

37
global / 100
En riesgo

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

37
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

La Política de Jurisdicciones de Alto Riesgo aplica un multiplicador del 50% a la salud global ponderada y le da un límite «En riesgo» de 49.

Titularidad

AppiumOrganización
1305 seguidores111 repositorios públicosdesde ene 2013

Este repositorio está respaldado por una organización: una custodia compartida y responsable que puede sobrevivir a cualquier mantenedor individual.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
NuGetAppium.WebDriver8.3.2-45hace 8 díasappiumwebdriverdeviceautomation

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

86Excelente · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
18.7/36Cadencia de commits — 27/52 semanas con commits
17.7/18Volumen de commits — 93 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year93
human_commit_share0,59
days_since_last_push0
active_weeks_last_year27
Cómo se puntúa
27/27Publica versiones — 48 versiones publicadas
36/36Recencia de las versiones — última versión hace 8 días
19.8/27Cadencia de publicación — una versión cada ~63,1 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count48
latest_release_tagv8.3.2
releases_from_tagsno
days_since_latest_release8
mean_days_between_releases63,1
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

84Bueno · 18% del índice global
Cómo se puntúa
42.2/60Estrellas — 399 estrellas
18.9/25Forks — 185 forks
9.1/15Observadores — 45 observadores
Datos de entrada utilizados
forks185
stars399
watchers45
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (Apache-2.0)
18/18Guía CONTRIBUTING
13.5/13.5Código de conducta
0/7.2Plantilla de issues
6.3/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributing
has_issue_templateno
has_code_of_conduct
has_pull_request_template
Cómo se puntúa
77.4/80Descargas totales — 27.811.387 descargas históricas en nuget
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packagesAppium.WebDriver
dependents
ecosystemsnuget
total_downloads27.811.387
monthly_downloads
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

82Bueno · 24% del índice global
Cómo se puntúa
25.2/54Factor bus — la mitad de los commits recae en 2 contribuyente(s)
16.5/22.5Distribución de commits — el principal contribuyente firma el 27% de los commits
13.5/13.5Amplitud de contribuyentes — 50 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 13 contributing companies or organizations
Datos de entrada utilizados
bus_factor2
contributors_sampled50
top_contributor_share0,267
Cómo se puntúa
46/46.8Resolución de issues — 98% de issues cerradas
30.5/38.3Aceptación de PR — 534/670 PR decididos fusionados
15/15OpenSSF Scorecard: Code-Review — all changesets reviewed
Datos de entrada utilizados
merged_prs534
open_issues7
closed_issues400
issue_closed_ratio0,983
closed_unmerged_prs136
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
22.4/25Alcance del propietario — 1305 seguidores de appium
25/25Trayectoria — 111 repos públicos, cuenta de ~13 años
Datos de entrada utilizados
followers1305
owner_typeOrganization
is_verified
owner_loginappium
public_repos111
account_age_days4947
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en nuget
35/35Recencia de publicación — última publicación hace 8 días
20/20Historial de versiones — 45 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesAppium.WebDriver
ecosystemsnuget
any_deprecatedno
min_days_since_publish8

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

64Moderado · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 6 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
6.4/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
Datos de entrada utilizados
has_ci
has_tests
has_editorconfig
has_linter_configno
has_precommit_configno

Documentación

50Moderado
Cómo se puntúa
30/30README
0/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
10/10Descripción del repositorio
0/10Topics
10/10Wiki
Datos de entrada utilizados
topics
has_wiki
homepage
has_readme
has_docs_dirno
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

47En riesgo · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
2.2/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
7.5/7.5Code-Review — all changesets reviewed
2.5/2.5Contributors — project has 13 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
7.5/7.5Maintained — 30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate6,9
high_risk_jurisdiction_cap49
high_risk_jurisdiction_multiplier50
security_posture_after_multiplier34
security_posture_before_jurisdiction69
Excluidos de la puntuación (sin datos o no aplicable): signed_releases. Los pesos restantes se han renormalizado. La Política de Jurisdicciones de Alto Riesgo aplica un multiplicador del 50% y da a la postura de seguridad un límite «En riesgo» de 49.
Cómo se puntúa
35/35Dependencias directas libres de avisos conocidos — ninguna dependencia directa tiene un aviso conocido
0/25Dependencias indirectas libres de avisos conocidos — el conjunto transitivo no es separable de las dependencias de desarrollo y prueba en este alcance
0/40Sin avisos pendientes — ningún aviso tiene fecha de publicación
Datos de entrada utilizados
sourceosv
advisories2
affected_packages2
assessed_packages29
unassessed_packages0
affected_by_severityhigh 2
direct_affected_packages0
Excluidos de la puntuación (sin datos o no aplicable): Dependencias indirectas libres de avisos conocidos, Sin avisos pendientes. Los pesos restantes se han renormalizado. Se cotejaron 29 dependencias resueltas con OSV. Este repositorio no publica ningún paquete que el índice resuelva, por lo que se evaluó en su lugar el grafo de dependencias del repositorio. Ese grafo mezcla fijaciones de desarrollo y prueba con las dependencias distribuidas, de modo que solo se puntúan las dependencias declaradas en tiempo de ejecución; los hallazgos transitivos se informan como contexto y quedan excluidos de la puntuación. No se analiza la alcanzabilidad.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

62Moderado · 0% del índice global
Cómo se puntúa
0/45Instrucciones para agentes — sin CLAUDE.md / AGENTS.md / reglas de editor
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 59 de 59 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share1
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
12.6/18Arranque con un solo comando — src/Appium.Net/Appium.Net.csproj, test/integration/Appium.Net.Integration.Tests.csproj (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — C# (tipado estático)
0/10Entorno reproducible
10/10Práctica demostrada con agentes — 18 de los últimos 100 commits con autoría o crédito de agente
8/8Mantenimiento automatizado — 41 de los últimos 100 commits son actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfiles
has_dockerfileno
typed_language
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0,18
toolchain_manifestssrc/Appium.Net/Appium.Net.csproj, test/integration/Appium.Net.Integration.Tests.csproj
dependency_bot_commit_share0,41
Cómo se puntúa
45/45Código verificable por tipos — C# (tipado estático)
54.7/55Tamaños de archivo manejables — 1/208 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageC#
largest_source_bytes66.751
source_files_sampled208
oversized_source_files1

Datos clave

399estrellas de GitHub
50contribuidores
93commits en los últimos 12 meses
0días desde el último push
48versiones publicadas
2factor bus
7issues abiertas
ecosistemas de paquetes

Advertencias de recopilación de datos

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token

Más detalle

Historial de estrellas y forks 0 ★ / 185 ⇿
0Estrellas
185Forks
47Versiones

Cuándo se añadió cada estrella y fork, recopilado de GitHub y agrupado por día. El crecimiento acumulado se sitúa justo encima de las adiciones diarias que lo componen, de modo que ambos se leen en conjunto: la acumulación orgánica sostenida no se parece en nada a un pico abrupto y efímero. Cuando esa diferencia es medible, se informa como autenticidad del crecimiento.

0408012016020017342014-042020-062026-07
Mayor 4Menor 11Parche 8

Cada punto abarca 12 días.

OpenSSF Scorecard 6.9 / 10
6.9agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-27 02:28 UTC

10Binary-Artifactsno binaries found in the repo
3Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
10Code-Reviewall changesets reviewed
10Contributorsproject has 13 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Dependencias directas 3
RegistroPaqueteRestricción de versiónManifiesto
NuGetMicrosoft.SourceLink.GitHub10.0.301src/Appium.Net/Appium.Net.csproj
NuGetSelenium.WebDriver4.46.0src/Appium.Net/Appium.Net.csproj
NuGetSystem.Drawing.Common10.0.9src/Appium.Net/Appium.Net.csproj
Todas las dependencias 29

Conjunto completo de dependencias resueltas según el grafo de dependencias de GitHub: 6 paquetes directos y 23 indirectos (transitivos). El cierre transitivo es completo cuando el repositorio incluye un lockfile.

RegistroPaqueteVersiónRelación
NuGetMicrosoft.SourceLink.GitHub10.0.301directa
NuGetSelenium.WebDriver3.13.0directa
NuGetSelenium.WebDriver3.14.0directa
NuGetSelenium.WebDriver3.8.0directa
NuGetSelenium.WebDriver4.46.0directa
NuGetSystem.Drawing.Common10.0.9directa
NuGetCastle.Core4.2.1indirecta
NuGetCastle.Core4.3.1indirecta
NuGetDotNetSeleniumExtras.PageObjects3.11.0indirecta
NuGetMicrosoft.CodeAnalysis.FxCopAnalyzers2.6.2-beta2indirecta
NuGetMicrosoft.CodeQuality.Analyzers2.6.2-beta2indirecta
NuGetMicrosoft.NET.Test.Sdk15.9.0indirecta
NuGetMicrosoft.NET.Test.Sdk18.7.0indirecta
NuGetMicrosoft.NetCore.Analyzers2.6.2-beta2indirecta
NuGetMicrosoft.NetFramework.Analyzers2.6.2-beta2indirecta
NuGetNewtonsoft.Json10.0.3indirecta
NuGetNewtonsoft.Json11.0.2indirecta
NuGetNUnit3.10.1indirecta
NuGetNUnit3.11.0indirecta
NuGetNUnit4.6.1indirecta
NuGetNUnit.Analyzers4.14.0indirecta
NuGetNUnit3TestAdapter3.11.0indirecta
NuGetNUnit3TestAdapter6.2.0indirecta
NuGetSelenium.Support3.13.0indirecta
NuGetSelenium.Support3.14.0indirecta
NuGetSelenium.Support3.8.0indirecta
NuGetSystem.Net.Http4.3.4indirecta
NuGetSystem.Text.Json10.0.10indirecta
NuGetText.Analyzers2.6.2-beta2indirecta
Avisos de dependencias 2

Este repositorio no publica ningún paquete que el índice resuelva, así que se evaluó su propio grafo de dependencias — 29 paquetes, que incluyen también fijaciones de desarrollo y prueba que nunca se distribuyen: 2 tienen avisos conocidos, de los cuales 0 son directas.

PaqueteVersiónRelaciónGravedadAvisosCorregido en
Newtonsoft.Json10.0.3indirectaalta113.0.1
Newtonsoft.Json11.0.2indirectaalta113.0.1

Un aviso significa que la versión registrada en el grafo de dependencias cae dentro del rango afectado de un aviso. No se analiza la alcanzabilidad, y el grafo incluye fijaciones de desarrollo y prueba: un hallazgo puede referirse al utillaje y no al software distribuido.

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 54439,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "C#": 877206
      },
      "pushed_at": "2026-07-26T17:34:01Z",
      "created_at": "2014-04-14T15:56:33Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-26T17:34:07Z",
      "description": "Extension to the official Selenium dotnet webdriver ",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "C#",
      "significant_languages": [
        "C#"
      ]
    },
    "owner": {
      "blog": "http://appium.io",
      "name": "Appium",
      "type": "Organization",
      "login": "appium",
      "company": null,
      "location": "worldwide",
      "followers": 1305,
      "avatar_url": "https://avatars.githubusercontent.com/u/3221291?v=4",
      "created_at": "2013-01-09T01:48:37Z",
      "is_verified": null,
      "public_repos": 111,
      "account_age_days": 4947
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v8.3.2",
          "kind": "patch",
          "published_at": "2026-07-18T20:25:53Z"
        },
        {
          "tag": "v8.3.1",
          "kind": "patch",
          "published_at": "2026-07-05T20:07:02Z"
        },
        {
          "tag": "v8.3.0",
          "kind": "minor",
          "published_at": "2026-06-18T14:08:43Z"
        },
        {
          "tag": "v8.2.0",
          "kind": "minor",
          "published_at": "2026-03-29T20:55:26Z"
        },
        {
          "tag": "v8.1.0",
          "kind": "minor",
          "published_at": "2026-02-13T20:43:41Z"
        },
        {
          "tag": "v8.0.1",
          "kind": "patch",
          "published_at": "2025-10-06T20:41:47Z"
        },
        {
          "tag": "v8.0.0",
          "kind": "major",
          "published_at": "2025-05-31T21:02:11Z"
        },
        {
          "tag": "v7.2.0",
          "kind": "minor",
          "published_at": "2025-03-16T21:58:25Z"
        },
        {
          "tag": "v7.1.0",
          "kind": "minor",
          "published_at": "2025-02-15T20:56:51Z"
        },
        {
          "tag": "v7.0.0",
          "kind": "major",
          "published_at": "2024-12-27T21:26:26Z"
        },
        {
          "tag": "v6.0.1",
          "kind": "patch",
          "published_at": "2024-11-15T22:03:11Z"
        },
        {
          "tag": "v6.0.0",
          "kind": "major",
          "published_at": "2024-10-19T20:03:13Z"
        },
        {
          "tag": "v5.2.0",
          "kind": "minor",
          "published_at": "2024-09-15T04:25:18Z"
        },
        {
          "tag": "v5.1.0",
          "kind": "minor",
          "published_at": "2024-07-28T20:02:27Z"
        },
        {
          "tag": "v5.0.0",
          "kind": "major",
          "published_at": "2024-06-15T21:03:52Z"
        },
        {
          "tag": "v5.0.0-rc.8",
          "kind": "prerelease",
          "published_at": "2024-04-26T21:21:22Z"
        },
        {
          "tag": "v5.0.0-rc.7",
          "kind": "prerelease",
          "published_at": "2024-03-29T20:58:22Z"
        },
        {
          "tag": "v5.0.0-rc.6",
          "kind": "prerelease",
          "published_at": "2024-03-03T21:23:50Z"
        },
        {
          "tag": "v5.0.0-rc.5",
          "kind": "prerelease",
          "published_at": "2024-01-26T23:00:43Z"
        },
        {
          "tag": "v5.0.0-rc.4",
          "kind": "prerelease",
          "published_at": "2023-12-29T22:22:54Z"
        },
        {
          "tag": "v5.0.0-rc.3",
          "kind": "prerelease",
          "published_at": "2023-12-24T04:39:11Z"
        },
        {
          "tag": "v5.0.0-rc.2",
          "kind": "prerelease",
          "published_at": "2023-11-16T23:08:46Z"
        },
        {
          "tag": "v5.0.0-rc.1",
          "kind": "prerelease",
          "published_at": "2023-09-06T13:01:27Z"
        },
        {
          "tag": "v4.4.5",
          "kind": "patch",
          "published_at": "2023-05-05T18:01:26Z"
        },
        {
          "tag": "v5.0.0-beta04",
          "kind": "prerelease",
          "published_at": "2023-04-29T20:02:34Z"
        },
        {
          "tag": "v5.0.0-beta03",
          "kind": "prerelease",
          "published_at": "2023-01-06T15:08:56Z"
        },
        {
          "tag": "v4.4.0",
          "kind": "minor",
          "published_at": "2022-10-26T23:04:59Z"
        },
        {
          "tag": "v5.0.0-beta02",
          "kind": "prerelease",
          "published_at": "2022-10-26T23:37:52Z"
        },
        {
          "tag": "v4.3.2",
          "kind": "patch",
          "published_at": "2022-07-01T16:33:51Z"
        },
        {
          "tag": "v5.0.0-beta01",
          "kind": "prerelease",
          "published_at": "2021-10-21T15:41:54Z"
        },
        {
          "tag": "v5.0.0-alpha2",
          "kind": "prerelease",
          "published_at": "2021-10-19T17:12:24Z"
        },
        {
          "tag": "v5.0.0alpha",
          "kind": "other",
          "published_at": "2021-10-17T04:25:31Z"
        },
        {
          "tag": "v4.3.1",
          "kind": "patch",
          "published_at": "2021-01-14T16:49:11Z"
        },
        {
          "tag": "v4.3.0",
          "kind": "minor",
          "published_at": "2021-01-14T12:29:37Z"
        },
        {
          "tag": "v4.2.1",
          "kind": "patch",
          "published_at": "2020-09-19T13:24:06Z"
        },
        {
          "tag": "v4.2.0",
          "kind": "minor",
          "published_at": "2020-09-13T16:15:17Z"
        },
        {
          "tag": "4.1.1",
          "kind": "patch",
          "published_at": "2019-11-19T12:27:31Z"
        },
        {
          "tag": "4.1.0",
          "kind": "minor",
          "published_at": "2019-11-14T03:23:20Z"
        },
        {
          "tag": "4.0",
          "kind": "other",
          "published_at": "2019-09-02T18:59:53Z"
        },
        {
          "tag": "v4.0.0.6-beta",
          "kind": "other",
          "published_at": "2019-04-15T16:03:16Z"
        },
        {
          "tag": "v4.0.0.5-beta",
          "kind": "other",
          "published_at": "2019-01-26T01:32:33Z"
        },
        {
          "tag": "v4.0.0.4-beta",
          "kind": "other",
          "published_at": "2018-10-15T08:51:06Z"
        },
        {
          "tag": "v4.0.0.3-beta",
          "kind": "other",
          "published_at": "2018-10-01T10:16:56Z"
        },
        {
          "tag": "v4.0.0.2-beta",
          "kind": "other",
          "published_at": "2018-09-22T20:43:10Z"
        },
        {
          "tag": "4.0.0.1-beta",
          "kind": "other",
          "published_at": "2018-01-15T22:00:38Z"
        },
        {
          "tag": "1.2.0.8",
          "kind": "other",
          "published_at": "2015-01-13T18:08:00Z"
        },
        {
          "tag": "1.2.0.5",
          "kind": "other",
          "published_at": "2014-09-25T17:17:17Z"
        },
        {
          "tag": "1.2.0.4x",
          "kind": "other",
          "published_at": "2014-09-17T01:43:00Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "43f90016761502816c5c12b19ed24afa785a3693",
          "body": "…098)",
          "is_bot": false,
          "headline": "docs: replace appiumpro.com references with HeadSpin blog mirrors (#1…",
          "author_name": "ian zhang",
          "author_login": "alaahong",
          "committed_at": "2026-07-26T17:34:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b48a01adb21adf2dcf739cf40151aa7d54b32f0",
          "body": "* feat(ios): implement syslog broadcast support in IOSDriver\n\nWire the existing IListensToSyslogMessages interface into IOSDriver,\nmirroring the Android logcat broadcast implementation. Adds WebSocket-based\nreal-time iOS syslog streaming via the Appium\nws://<host>:<port>/ws/session/<id>/appium/devic\n[…]\ned.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Lqd5nmE69tYMpCVYZ8ySrT\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Add WebSocket-based syslog broadcast support for iOS (#1096)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-07-21T06:32:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2737765a537001c44cd33ff2248925a89a7eede5",
          "body": "* chore: Bump Selenium.WebDriver from 4.44.0 to 4.46.0\n\n---\nupdated-dependencies:\n- dependency-name: Selenium.WebDriver\n  dependency-version: 4.46.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\n\n* docs: updat\n[…]\neplace Unreleased with 8.3.2 in compatibility matrix\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore: Bump Selenium.WebDriver from 4.45.0 to 4.46.0 (#1085)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-07-18T20:04:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "daf0f814f20aed905b0c24287410d3129ab70a8d",
          "body": "---\nupdated-dependencies:\n- dependency-name: NUnit3TestAdapter\n  dependency-version: 6.2.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "test: Bump NUnit3TestAdapter from 6.1.0 to 6.2.0 (#1030)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-18T19:30:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b02240511904930400ac4462448482fafe7e1579",
          "body": "…090)\n\n---\nupdated-dependencies:\n- dependency-name: Microsoft.SourceLink.GitHub\n  dependency-version: 10.0.301\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Dor-bl <dblayzer@gmail.com>",
          "is_bot": true,
          "headline": "chore: Bump Microsoft.SourceLink.GitHub from 10.0.300 to 10.0.301 (#1…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-18T19:29:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c62c058753fe6612ef2234c1159048e721f7878",
          "body": "Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6 to 7.\n- [Release notes](https://github.com/actions/setup-node/releases)\n- [Commits](https://github.com/actions/setup-node/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-node\n  dependency-version: '\n[…]\nte:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Dor-bl <dblayzer@gmail.com>",
          "is_bot": true,
          "headline": "ci(deps): Bump actions/setup-node from 6 to 7 (#1089)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-18T18:42:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9cbdd1ef87be534f3d66464ed5e899ff015f252b",
          "body": "---\nupdated-dependencies:\n- dependency-name: System.Text.Json\n  dependency-version: 10.0.10\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Dor-bl <dblayzer@gmail.com>",
          "is_bot": true,
          "headline": "test: Bump System.Text.Json from 10.0.9 to 10.0.10 (#1094)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-18T18:41:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "292fd7c0e7d505e17efa9f9dcd14d074b10a1ed7",
          "body": "…DriverWait (#1095)",
          "is_bot": false,
          "headline": "test: Fix IndexOutOfRange in ActionsChainsTest by adding explicit Web…",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-07-18T06:31:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f0554d3879671fa77d4140095d2dfe41b6b57920",
          "body": "* test(ios): fix flaky CanBackgroundAppToDeactivation test using WebDriverWait\n\n* test(ios): temporarily disable implicit wait around explicit wait\n\n* test(ios): refactor to use WaitForElement for all explicit checks\n\n* test(ios): capture and restore previous implicit wait\n\n* test(ios): use captured implicit wait for explicit wait timeout",
          "is_bot": false,
          "headline": "test(ios): fix flaky CanBackgroundAppToDeactivation test (#1088)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-07-16T06:59:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f4f5d64a6b5cd31356813be1d3fe9cb0dd9041c1",
          "body": "…rkflow (#1087)\n\n* chore(ci): correct release-drafter configuration and add validation workflow\n\n* chore(ci): use dry-run instead of disable-autolabeler in validation workflow\n\n* chore(ci): update validate-release-drafter per PR comments\n\n* chore(ci): migrate release-drafter config to v7 schema\n\n* chore(ci): explicitly set commitish to default branch to fix fallback warning\n\n* chore(ci): remove trailing whitespace in release-drafter.yml",
          "is_bot": false,
          "headline": "chore(ci): migrate release-drafter config to v7 and add validation wo…",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-07-15T04:45:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "37edd4ffa78925b119d8ebda6a73c29f6ace93a4",
          "body": "* ci: improve android emulator stability with ATD and more RAM\n\n* ci: fix cache key and revert to google_apis",
          "is_bot": false,
          "headline": "chore: improve android emulator stability in CI (#1086)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-07-14T06:40:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b40c704ebedee5454cc22c3d8745f83583112a4",
          "body": "Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 6 to 7.\n- [Release notes](https://github.com/release-drafter/release-drafter/releases)\n- [Commits](https://github.com/release-drafter/release-drafter/compare/v6...v7)\n\n---\nupdated-dependencies:\n- depende\n[…]\n>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Dor Blayzer <59066376+Dor-bl@users.noreply.github.com>\nCo-authored-by: Dor-bl <dblayzer@gmail.com>",
          "is_bot": true,
          "headline": "ci(deps): Bump release-drafter/release-drafter from 6 to 7 (#1022)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-14T05:09:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1daae5cf5c90165ba07957f6a86cd945f19dc097",
          "body": null,
          "is_bot": false,
          "headline": "chore: remove prerelease identifier from release-drafter (#1083)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-07-12T14:22:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c8976d3e2644af3530885f4605931055e5e836d4",
          "body": "…n (#1081)\n\n* Refactor complex conditional in DirectConnect.GetUri\n\n- Extracted complex null and protocol checks into a private 'IsValid' property.\n- Improved 'GetUri' readability by using the 'IsValid' property and string interpolation.\n- Added XML documentation for the new 'IsValid' property.\n\n* Address PR comments: Use UriBuilder and validate port\n\n* Address PR comments: add port range check and update XML doc",
          "is_bot": false,
          "headline": "refactor: DirectConnect.GetUri for improved readability and validatio…",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-07-12T06:59:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c776a447004c881661247254fbb282f80171ef74",
          "body": null,
          "is_bot": false,
          "headline": "chore: add Chore/Maintenance to PR template (#1084)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-07-12T01:49:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49aa6f490ecc111b79eb75b90fc3fe5b813fa045",
          "body": null,
          "is_bot": false,
          "headline": "docs: remove obsolete CI badges (#1082)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-07-12T01:49:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "da7be5c10bd4c4f3e0b26b2f353e3fc231918714",
          "body": "---\nupdated-dependencies:\n- dependency-name: Selenium.WebDriver\n  dependency-version: 4.45.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.norepl\n[…]\n>\nCo-authored-by: Dor Blayzer <59066376+Dor-bl@users.noreply.github.com>\nCo-authored-by: Dor-bl <dblayzer@gmail.com>\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: Bump Selenium.WebDriver from 4.44.0 to 4.45.0 (#1063)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-11T21:25:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0620c956a6f11128a28a09088df1f7ffd613ae1e",
          "body": "---\nupdated-dependencies:\n- dependency-name: Microsoft.NET.Test.Sdk\n  dependency-version: 18.7.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "test: Bump Microsoft.NET.Test.Sdk from 18.0.1 to 18.7.0 (#1071)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-11T09:41:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c18737b1394bcf3733cdebebc067df6f9b9edeb9",
          "body": "Bumps [microsoft/setup-msbuild](https://github.com/microsoft/setup-msbuild) from 2 to 3.\n- [Release notes](https://github.com/microsoft/setup-msbuild/releases)\n- [Commits](https://github.com/microsoft/setup-msbuild/compare/v2...v3)\n\n---\nupdated-dependencies:\n- dependency-name: microsoft/setup-msbuil\n[…]\n>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Dor Blayzer <59066376+Dor-bl@users.noreply.github.com>\nCo-authored-by: Dor-bl <dblayzer@gmail.com>",
          "is_bot": true,
          "headline": "ci(deps): Bump microsoft/setup-msbuild from 2 to 3 (#1027)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-11T09:40:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ed4f62d619e3555f32de375591e9c554dad0c351",
          "body": "---\nupdated-dependencies:\n- dependency-name: System.Drawing.Common\n  dependency-version: 10.0.9\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Dor Blayzer <59066376+Dor-bl@users.noreply.github.com>\nCo-authored-by: Dor-bl <dblayzer@gmail.com>",
          "is_bot": true,
          "headline": "chore: Bump System.Drawing.Common from 10.0.8 to 10.0.9 (#1062)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-11T09:40:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d3a733411011d7c1c7ab5a6f270a39496aa5614",
          "body": null,
          "is_bot": false,
          "headline": "test: stabilize CanActivateAppFromBackgroundTest (#1080)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-07-11T06:08:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50ed05f29534c6f76fdd0451589a0c4c25291d1c",
          "body": "---\nupdated-dependencies:\n- dependency-name: NUnit.Analyzers\n  dependency-version: 4.14.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Dor Blayzer <59066376+Dor-bl@users.noreply.github.com>\nCo-authored-by: Dor-bl <dblayzer@gmail.com>",
          "is_bot": true,
          "headline": "test: Bump NUnit.Analyzers from 4.11.2 to 4.14.0 (#1072)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-10T22:11:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "19522e53043c9b8a5d7ee6b742d64f2c16717312",
          "body": "… (#1075)\n\n* 🔒 Fix path traversal and arbitrary file overwrite vulnerability\n\n* Added path validation to SaveVisualizationAsFile\n* Ensured file path stays within the allowed executing directory\n* Prevented relative path traversal (..) and absolute path manipulation\n\n* Address review comments on Save\n[…]\ne names\n\n* Address follow-up review comment: cache reserved device names as static readonly field\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "security: Fix path traversal vulnerability in SaveVisualizationAsFile…",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-07-10T22:08:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "56b6a021a2a0d462d552b10bb71b511892a9acd6",
          "body": "* fix: increase adbExecTimeout in Android ClipboardTest to 60s\n\n* fix: remove redundant appium: prefix from adbExecTimeout capability",
          "is_bot": false,
          "headline": "test(android): increase adbExecTimeout in ClipboardTest (#1079)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-07-10T07:11:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc64d5eaa791f026bf51594baf10af8b0a416f8d",
          "body": "… (#1077)\n\n* test: Bump NUnit from 4.5.1 to 4.6.1\n\n---\nupdated-dependencies:\n- dependency-name: NUnit\n  dependency-version: 4.6.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\n\n* fix: Resolve NUnit 4.6.1 compi\n[…]\ncalls\n\n* Address review comments on GeolocationTests\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "test: Bump NUnit from 4.5.1 to 4.6.1 and resolve compiler ambiguities…",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-07-09T05:33:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "aa0a7714052e76cb2603f28193db187b23345813",
          "body": "…1061)\n\n* ⚡ Optimize ToDictionary() in PointerInputDevice\n\nReplace LINQ ToList().ForEach() with a standard foreach loop when appending extra attributes.\nThis avoids an unnecessary O(N) memory allocation and improves execution speed for dictionary translation.\n\n* ⚡ Optimize ToDictionary() in PointerI\n[…]\nnding\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "perf: Optimize ToDictionary() performance and clean up unused code (#…",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-07-07T20:33:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ef9c465b76f6cc66ce04a41fc144b14c1ff1aaf1",
          "body": "… (#1038)\n\n* Add integration and unit tests for AppiumElement.GetProperty\n\n- Implement GetProperty and GetDomProperty in TestableAppiumElement helper\n- Add unit tests for GetProperty caching in AppiumElementCacheTest.cs\n- Add integration test for GetProperty in Android ElementTest.cs\n- Remove TODO c\n[…]\nndroid/ElementTest.cs\n\n* Address remaining Copilot review comments regarding cache assertions, naming and region labels\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "test: Add integration and unit tests for GetProperty in AppiumElement…",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-07-07T05:24:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "09706a6c0a9eecdfb9a981ee744fe3b2d60e845f",
          "body": "---\nupdated-dependencies:\n- dependency-name: System.Text.Json\n  dependency-version: 10.0.9\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "test: Bump System.Text.Json from 10.0.7 to 10.0.9 (#1073)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-06T19:15:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e5f9d64d2e91190aac1fd8bf881ef60564ac6618",
          "body": "…ulator (#1060)\n\n* Fix android BrowserTests: switch emulator target to google_apis_playstore\n\n* Fix android tests: revert to google_apis, skip BrowserTests (Chrome unavailable)\n\n* Skip BrowserTests only in CI, keep local Chrome coverage\n\nUse the Env.IsCiEnvironment() + Assert.Ignore() pattern alread\n[…]\nso the\ntest still runs locally where Chrome is available.\n\n---------\n\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>\nCo-authored-by: Dor-bl <dor.blayzer@cropx.com>",
          "is_bot": false,
          "headline": "Fix BrowserTests timeout: skip BrowserTests fixture on google_apis em…",
          "author_name": "Copilot",
          "author_login": "Copilot",
          "committed_at": "2026-07-05T20:43:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "72d8747ff6a611d07660fd92b5d70cc61966ece5",
          "body": "Bumps [actions/cache](https://github.com/actions/cache) from 5 to 6.\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github.com/actions/cache/compare/v5...v6)\n\n---\nupdated-dependencies:\n- dependenc\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "ci(deps): Bump actions/cache from 5 to 6 (#1069)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-25T02:02:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "96e64775ce533ec62c01a9d919507d2f908262b7",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v6...v7)\n\n---\nupdated-dependenc\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "ci(deps): Bump actions/checkout from 6 to 7 (#1070)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-25T02:02:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fa2b0722ba7b462c8426f9643b56f76a377b8f6e",
          "body": "…lApp\" (#1068)",
          "is_bot": false,
          "headline": "fix: Use correct parameter for appium-xcuitest-driver \"mobile: instal…",
          "author_name": "broetchenrackete36",
          "author_login": "broetchenrackete36",
          "committed_at": "2026-06-24T07:35:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1d89bae902ba8b30720bb038aea19456f19b807a",
          "body": "…(#1049)\n\n* perf: Optimize WebSocket handler invocation in StringWebSocketClient\n\nRefactored StringWebSocketClient to use standard C# events instead of\nList<Action<...>> for internal handler management. This eliminates\nredundant array allocations via .ToArray() during every message, error,\nconnectio\n[…]\naude Sonnet 4.6 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf: Optimize WebSocket handler invocation in StringWebSocketClient …",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-06-19T05:13:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "25ab227ac9f00f3bd882523e265f540a8f91cc2d",
          "body": "* docs: add missing 8.2.0 entry to compatibility matrix\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\n\n* docs: fill in missing versions in compatibility matrix\n\nAdd 8.1.0, 8.0.0, 7.2.0, 7.1.0, 6.0.1, and 5.2.0 entries that were\nmissing from the Selenium compatibility matrix.\n\nCo-Authore\n[…]\nium binding\n\nKeep only the latest version per Selenium binding version.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: update compatibility matrix (#1067)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-06-19T05:13:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1b4bb545433a9a3a5f01feedf4256d0ab4b2b4cb",
          "body": "---\nupdated-dependencies:\n- dependency-name: System.Text.Json\n  dependency-version: 10.0.7\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "test: Bump System.Text.Json from 10.0.2 to 10.0.7 (#1047)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-18T22:05:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f27e35224b342d0b74b2209dfd104a6218d78b80",
          "body": "Bumps [NuGet/setup-nuget](https://github.com/nuget/setup-nuget) from 2 to 4.\n- [Release notes](https://github.com/nuget/setup-nuget/releases)\n- [Commits](https://github.com/nuget/setup-nuget/compare/v2...v4)\n\n---\nupdated-dependencies:\n- dependency-name: NuGet/setup-nuget\n  dependency-version: '4'\n  \n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "ci(deps): bump NuGet/setup-nuget from 2 to 4 (#1044)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-18T21:41:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1c1c9b2a2983451602e3511efbb4d4002b8c2371",
          "body": "* docs: update README for v8.3.0 release\n\nUpdate compatibility matrix from 8.2.1 to 8.3.0 and update the signed\nassembly note to reflect that strong-signing is now supported, following\nSelenium 4.44.0's introduction of strong-signing for Selenium.WebDriver.dll.\n\nCo-Authored-By: Claude Sonnet 4.6 <no\n[…]\n.\nRemoving the note until proper strong-signing support is implemented.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: update README for v8.3.0 release (#1065)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-06-18T21:24:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f3c3defc9c8c33934b1d9ef1d2c1137ea4791b11",
          "body": "…053)\n\n* Update dependencies, refactor tests, and modernize code\n\n- Bump and fix Selenium 4.44.0 breaking changes\n- Bump package versions in main and test projects\n- Update copyright year to 2026\n- Remove ICommandExecutor from AppiumLocalService\n- Modernize code with target-typed new and object init\n[…]\nusers.noreply.github.com>\n\n* cleanup\n\n* revert test project package versions\n\n* fixes from review\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat: support selenium 4.44.0, refactor tests, and modernize code (#1…",
          "author_name": "Jonathan Dean",
          "author_login": "kelmelzer",
          "committed_at": "2026-06-04T04:51:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f5f016fd02bd17d9b232b9a1021439fadf7b3eaf",
          "body": "* feat: add integration tests for AppiumElement.GetProperty\n\n- Added GetProperty method to TestableAppiumElement helper.\n- Added unit tests for GetProperty caching in AppiumElementCacheTest.\n- Added Android integration test for GetProperty in ElementTest.\n- Removed TODO comment for integration tests\n[…]\nnding\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "test: add integration tests for AppiumElement.GetProperty (#1050)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-05-03T22:05:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "37634edc9715bb2d9cdabb58c0823245ade53bf2",
          "body": "…035)\n\n* perf: optimize OptionCollector by reducing redundant ToDictionary() calls\n\n- Refactored `ParseCapabilitiesIfWindows` and `ParseCapabilitiesIfUNIX` to accept a pre-computed dictionary instead of calling `ToDictionary()` internally.\n- Updated `Arguments` property getter to call `ToDictionary(\n[…]\nerations and memory pressure.\n\n* fix: initialize result list with an empty array instead of List<string>\n\n* test: add AddCapabilities_MergesCapabilitiesWhenCalledMultipleTimes test for OptionCollector",
          "is_bot": false,
          "headline": "feat: Optimize OptionCollector by reducing dictionary allocations (#1…",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-03-30T05:01:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "523bfa5a8dc0d9398646764fb9c9f1f92cffb316",
          "body": "Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifac\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "ci(deps): Bump actions/upload-artifact from 6 to 7 (#1015)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-29T20:48:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e5976b10746961d387ef7fa152cb2ef13eb82efd",
          "body": "* test: add iOS category attribute to multiple test classes\n\n* Update test/integration/IOS/OrientationTest.cs\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>\n\n* Update test/integration/IOS/ClipboardTest.cs\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "test: add iOS category attribute to multiple test classes (#1033)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-03-28T12:07:35Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "34df403615417082ea4010e6eacb86950e46214e",
          "body": "* feat: add iOS launchAppWithArguments\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>\n\n* fix: correct script formatting in launchApp command\n\n---------\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat: add iOS launchAppWithArguments (#1031)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-03-28T12:06:56Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4bd21d15a47892dc97b7f95287b335ab595648a3",
          "body": "…e (#1026)\n\n* ⚡ Optimize ToDictionary() in PointerInputDevice\n\nReplace LINQ ToList().ForEach() with a standard foreach loop when appending extra attributes.\nThis avoids an unnecessary O(N) memory allocation and improves execution speed for dictionary translation.\n\n* ⚡ Optimize ToDictionary() in Poin\n[…]\nwhen appending extra attributes.\nThis avoids an unnecessary O(N) memory allocation and improves execution speed for dictionary translation.\n\n* chore: remove unused Linq namespace in PointerInputDevice",
          "is_bot": false,
          "headline": "Optimize ToDictionary() for improved performance in PointerInputDevic…",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-03-28T12:06:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "65cda30d763659910eb89667cbf853ac1bb541cd",
          "body": "Added functional and unit test badges to README.",
          "is_bot": false,
          "headline": "Update README with test status badges (#1034)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-03-28T05:26:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a419a6a984ff46c142c523eb98ebabc04301379",
          "body": "Bumps [android-actions/setup-android](https://github.com/android-actions/setup-android) from 3 to 4.\n- [Release notes](https://github.com/android-actions/setup-android/releases)\n- [Commits](https://github.com/android-actions/setup-android/compare/v3...v4)\n\n---\nupdated-dependencies:\n- dependency-name\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "ci(deps): bump android-actions/setup-android from 3 to 4 (#1028)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-27T21:01:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "eeb57cceaae65ac3102a9ff1374cd22369d59996",
          "body": "---\nupdated-dependencies:\n- dependency-name: NUnit\n  dependency-version: 4.5.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "test: Bump NUnit from 4.4.0 to 4.5.1 (#1019)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-27T10:57:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1fd04ce88cb7e07368eeb1518a1cf71c2b9735ae",
          "body": "Bumps [dorny/test-reporter](https://github.com/dorny/test-reporter) from 2 to 3.\n- [Release notes](https://github.com/dorny/test-reporter/releases)\n- [Changelog](https://github.com/dorny/test-reporter/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/dorny/test-reporter/compare/v2...v3)\n\n---\nup\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "ci(deps): bump dorny/test-reporter from 2 to 3 (#1029)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-27T10:41:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "130b634d88f76e84cc10d5628c1b85fa8510cc28",
          "body": "The manual loop and `Trim()` call for command-line arguments has been replaced with `string.Join(\" \", argList)`, which is more efficient as it reduces intermediate string allocations and copy operations.\n\nChanges:\n- Replaced string concatenation in a loop with `string.Join` in `src/Appium.Net/Appium/Service/AppiumServiceBuilder.cs`.\n- Removed unnecessary `Trim()` call as `string.Join` only inserts separators between elements.",
          "is_bot": false,
          "headline": "perf: optimize string concatenation in AppiumServiceBuilder (#1025)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-03-23T06:07:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67a336d35fc9310f9a6d640093df73b42f3448f4",
          "body": "Bumps [futureware-tech/simulator-action](https://github.com/futureware-tech/simulator-action) from 4 to 5.\n- [Release notes](https://github.com/futureware-tech/simulator-action/releases)\n- [Changelog](https://github.com/futureware-tech/simulator-action/blob/main/CHANGELOG.md)\n- [Commits](https://git\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "ci(deps): Bump futureware-tech/simulator-action from 4 to 5 (#1016)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-22T21:05:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b92cb9b7084376840f7f83f144d8ad91590831f6",
          "body": "Added a 250ms delay in the PingAsync wait loop to significantly reduce CPU usage when waiting for the Appium server to start.\n\nAlso updated the loop condition from bitwise AND (&) to logical AND (&&) for better short-circuiting behavior.\n\nBaseline (without delay): ~1600 iterations/sec\nOptimized (with delay): ~4 iterations/sec (near-zero CPU usage)",
          "is_bot": false,
          "headline": "⚡ [performance] Optimize busy wait in PingAsync with Task.Delay (#1017)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-03-22T21:03:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d41a40e31ad660c3cdd44b74f9328ef1a09b0568",
          "body": "* test: add app uninstall\n\n* use before/teardown",
          "is_bot": false,
          "headline": "test: add app uninstall to improve the test stability (#1012)",
          "author_name": "Kazuaki Matsuo",
          "author_login": "KazuCocoa",
          "committed_at": "2026-02-24T06:57:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b2b901fba7139c1d84f240ad653ab71ecce9f3e",
          "body": "* Initial plan\n\n* Implement graceful shutdown for AppiumLocalService on Windows\n\nCo-authored-by: Dor-bl <59066376+Dor-bl@users.noreply.github.com>\n\n* Address code review feedback: improve error handling and comments\n\nCo-authored-by: Dor-bl <59066376+Dor-bl@users.noreply.github.com>\n\n* Further improv\n[…]\nmization. The timeout value is utilized in the `DestroyProcess` method for graceful shutdown on Windows.\n\n---------\n\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: Stop local appium process with SIGTERM (#1006)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-02-13T20:37:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e706a8507e0d7bf9220bbeb76290e32b61eaff5e",
          "body": null,
          "is_bot": false,
          "headline": "docs: set note about deps version (#1005)",
          "author_name": "Kazuaki Matsuo",
          "author_login": "KazuCocoa",
          "committed_at": "2026-02-06T05:53:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6c84ea08f5cbf9db4ef28d102cf7dd2e5ac9025e",
          "body": "---\nupdated-dependencies:\n- dependency-name: System.Text.Json\n  dependency-version: 10.0.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: Bump System.Text.Json from 10.0.1 to 10.0.2 (#1003)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-02-06T05:45:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "73a9af7086f21c54b9aad443e7c7f53d05a3be3a",
          "body": "---\nupdated-dependencies:\n- dependency-name: NUnit3TestAdapter\n  dependency-version: 6.1.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "test: Bump NUnit3TestAdapter from 6.0.1 to 6.1.0 (#1002)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-02-05T08:59:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5fac61491f176efc301109f33539d55b442c6016",
          "body": null,
          "is_bot": false,
          "headline": "ci: set prefix for bot",
          "author_name": "Kazuaki Matsuo",
          "author_login": "KazuCocoa",
          "committed_at": "2026-02-05T08:44:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f2ce4239d390488509543e7c38efb3dd93883f3f",
          "body": "---\nupdated-dependencies:\n- dependency-name: System.Text.Json\n  dependency-version: 10.0.1\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Kazuaki Matsuo <fly.49.89.over@gmail.com>",
          "is_bot": true,
          "headline": "test: Bump System.Text.Json from 9.0.0 to 10.0.1 (#983)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-10T22:12:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "53d64040469581c50438f91bde6a2ad89cd1315a",
          "body": "---\nupdated-dependencies:\n- dependency-name: NUnit3TestAdapter\n  dependency-version: 6.0.1\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Kazuaki Matsuo <fly.49.89.over@gmail.com>\nCo-authored-by: Dor Blayzer <59066376+Dor-bl@users.noreply.github.com>",
          "is_bot": true,
          "headline": "test: Bump NUnit3TestAdapter from 4.6.0 to 6.0.1 (#984)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-10T03:12:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc93546c2a67c767c3aa150d165f31b9ab7aafdc",
          "body": "---\nupdated-dependencies:\n- dependency-name: NUnit.Analyzers\n  dependency-version: 4.11.2\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Kazuaki Matsuo <fly.49.89.over@gmail.com>\nCo-authored-by: Dor Blayzer <59066376+Dor-bl@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: Bump NUnit.Analyzers from 4.7.0 to 4.11.2 (#972)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-09T07:25:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "69d75c6b970a84ad455d0a4ce67e2720d4c7ac35",
          "body": "---\nupdated-dependencies:\n- dependency-name: Microsoft.NET.Test.Sdk\n  dependency-version: 18.0.1\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Dor Blayzer <59066376+Dor-bl@users.noreply.github.com>\nCo-authored-by: Kazuaki Matsuo <fly.49.89.over@gmail.com>",
          "is_bot": true,
          "headline": "chore: Bump Microsoft.NET.Test.Sdk from 17.14.1 to 18.0.1 (#971)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-08T06:40:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "77d67ee77b8ae34f929ae70dfb3f200092f94f05",
          "body": "Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github.com/actions/cache/compare/v4...v5)\n\n---\nupdated-dependencies:\n- dependenc\n[…]\nr\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Kazuaki Matsuo <fly.49.89.over@gmail.com>",
          "is_bot": true,
          "headline": "ci: [github-actions] Bump actions/cache from 4 to 5 (#998)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-07T06:55:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b5af1e530a2a7d2cf1cc5232bd62796798c9a976",
          "body": "Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 6.\n- [Release notes](https://github.com/actions/setup-node/releases)\n- [Commits](https://github.com/actions/setup-node/compare/v4...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-node\n  dependency-version: '\n[…]\nr\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Kazuaki Matsuo <fly.49.89.over@gmail.com>",
          "is_bot": true,
          "headline": "ci(deps): bump actions/setup-node from 4 to 6 (#1001)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-07T06:55:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a0f128064d658c1e66bd27ee1c4216598b2a9df1",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v4...v6)\n\n---\nupdated-dependenc\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "ci: [github-actions] Bump actions/checkout from 4 to 6 (#996)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-06T05:30:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7106ef2e20b34bddb0052733e0c8bfb2831ac2bf",
          "body": "Bumps [dorny/test-reporter](https://github.com/dorny/test-reporter) from 1 to 2.\n- [Release notes](https://github.com/dorny/test-reporter/releases)\n- [Changelog](https://github.com/dorny/test-reporter/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/dorny/test-reporter/compare/v1...v2)\n\n---\nup\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "ci: [github-actions] Bump dorny/test-reporter from 1 to 2 (#997)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-06T05:29:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d441f7aca3c754a163fb8667c9fae34d2e878ae4",
          "body": null,
          "is_bot": false,
          "headline": "ci: update prefix for github actions update",
          "author_name": "Kazuaki Matsuo",
          "author_login": "KazuCocoa",
          "committed_at": "2026-01-06T03:09:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70181de8eab2ef3fd214ce3acf8e65e5c780a991",
          "body": "Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 6.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v4...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifac\n[…]\nr\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Kazuaki Matsuo <fly.49.89.over@gmail.com>",
          "is_bot": true,
          "headline": "ci: [github-actions] Bump actions/upload-artifact from 4 to 6 (#1000)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-06T03:08:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bd9b3a949f95c0a34167fa73870357c260c3d286",
          "body": "Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 4 to 5.\n- [Release notes](https://github.com/actions/setup-dotnet/releases)\n- [Commits](https://github.com/actions/setup-dotnet/compare/v4...v5)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-dotnet\n  dependency-\n[…]\nr\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Kazuaki Matsuo <fly.49.89.over@gmail.com>",
          "is_bot": true,
          "headline": "[github-actions] Bump actions/setup-dotnet from 4 to 5 (#999)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-06T03:07:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "94fc335571294aa5c7d135a40c8de6ecda5a6f10",
          "body": "* ci: run custom commands as android\n\n* do not use \\ for android execution",
          "is_bot": false,
          "headline": "ci: run custom commands as android (#995)",
          "author_name": "Kazuaki Matsuo",
          "author_login": "KazuCocoa",
          "committed_at": "2026-01-06T02:45:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d3d957d704b795dc7789fbb10c672e32985f9270",
          "body": "---\nupdated-dependencies:\n- dependency-name: NUnit\n  dependency-version: 4.4.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Dor Blayzer <59066376+Dor-bl@users.noreply.github.com>\nCo-authored-by: Kazuaki Matsuo <fly.49.89.over@gmail.com>",
          "is_bot": true,
          "headline": "test: Bump NUnit from 4.3.2 to 4.4.0 (#975)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-05T06:04:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9efe516bf8ad494648e5132ab425370cd851a453",
          "body": "* ci: rename yml file\n\n* ci: add for ios\n\n* fix ios version\n\n* add options to launch simulator\n\n* use prebuilt wda\n\n* use 32 instead\n\n* add skip for unstable test case\n\n* use old iphone os\n\n* use lts/*",
          "is_bot": false,
          "headline": "ci: add func test for ios (#994)",
          "author_name": "Kazuaki Matsuo",
          "author_login": "KazuCocoa",
          "committed_at": "2026-01-05T02:17:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "edd968d25087b4c880af752fd987ee9777705f50",
          "body": "* ci: add functional-test\n\n* modify the order\n\n* run one line\n\n* skip failed tests on CI for now\n\n* fix a couple of errors\n\n* add espresso driver and relaxed-security\n\n* add wait for\n\n* format\n\n* skip some tests\n\n* skip tests more because of slow CI\n\n* add log\n\n* modify a bit\n\n* keep old logs\n\n* add enforceAppInstall to run espresso properly\n\n* add skip",
          "is_bot": false,
          "headline": "ci: add functional-test for android (#993)",
          "author_name": "Kazuaki Matsuo",
          "author_login": "KazuCocoa",
          "committed_at": "2026-01-04T06:12:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a38b863e375437e8cfbc9f545e6d9c966046fa31",
          "body": null,
          "is_bot": false,
          "headline": "fix: remove iosWebviewApp from app sources and constants (#992)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2026-01-01T20:25:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "01b2749bc75388b4b789b601628ed92a0274a82b",
          "body": "…A (#991)",
          "is_bot": false,
          "headline": "fix: Fix ParseCapabilitiesIfUNIX for macOS/Linux and convert CI to GH…",
          "author_name": "Kazuaki Matsuo",
          "author_login": "KazuCocoa",
          "committed_at": "2026-01-01T20:21:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf9bb938611fc1515c16727d7dc4b8c479979123",
          "body": "* feat: implement StartActivity method for Android activities\n\n* feat: validate intent parameter in activity launch method\n\n* feat: simplify CurrentActivityTest by using StartActivity method directly\n\n* feat: add optional arguments parameter to StartActivity method for enhanced flexibility\n\n* feat: add StartActivityWithDictionaryTest to validate activity launch with arguments\n\n---------\n\nCo-authored-by: Kazuaki Matsuo <fly.49.89.over@gmail.com>",
          "is_bot": false,
          "headline": "feat: implement StartActivity method for Android activities (#986)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2025-12-31T18:08:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f94f2fdf7cbd9cf7bf336d6130b3acff39713b1",
          "body": "…(#987)\n\n* download test app instead of getting them from local\n\n* add package reference\n\n* remove no reference apps\n\n* chore: update tests\n\n* remove no longer used app\n\n* add error handling\n\n* fix CancelationToken usage with .net 4.8\n\n* remove no reference apks",
          "is_bot": false,
          "headline": "test: download test apps from our repos and remove removal test apps …",
          "author_name": "Kazuaki Matsuo",
          "author_login": "KazuCocoa",
          "committed_at": "2025-12-31T17:59:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "71447da0f0671ad0daa0df2bf6f0187bdeb7162d",
          "body": "* fix: Rename LaunchTimeout capability to wdaLaunchTimeout",
          "is_bot": false,
          "headline": "fix: capability name behind LaunchTimeout for xcuitest (#989)",
          "author_name": "Kazuaki Matsuo",
          "author_login": "KazuCocoa",
          "committed_at": "2025-12-31T17:58:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5d60d3388dc1f16d8cef6ec61ec6183234eb5907",
          "body": "* feat: implement AppiumElementCacheTest with caching behavior for tag names\n\n* refactor: simplify capability retrieval in AppiumElementCacheTest\n\n* test: add TestableAppiumElement class for unit testing caching behavior",
          "is_bot": false,
          "headline": "test: add AppiumElementCacheTest (#985)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2025-12-27T09:13:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f567f28fe42f4966d55bf755451772132bb92eb4",
          "body": null,
          "is_bot": false,
          "headline": "Fix compatibility matrix in readme (#978)",
          "author_name": "Nikolay Borisenko",
          "author_login": "nvborisenko",
          "committed_at": "2025-12-14T21:44:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5657846aa3b6a6c0e8939ee01ee63b5767ba0da1",
          "body": "* feat: add InstallApp method for Android and iOS, including tests for installation scenarios\n\n* fix: improve error handling in Dispose method of InstallAppTest\n\n* fix: remove unused AppiumOptions instantiation in InstallAppTest\n\n* fix: correct typo in region name from 'Device Kesys' to 'Device Keys'\n\n* fix: update documentation link for mobile: installApp in AndroidCommandExecutionHelper",
          "is_bot": false,
          "headline": "feat: add InstallApp method for Android and iOS (#974)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2025-11-25T19:57:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f16c474f35b0d7c52229a263aa8d4ca3c6d7488",
          "body": "* feat: Implement logcat message broadcasting via WebSocket in AndroidDriver\n\n* test: Add integration tests for logcat message broadcasting in AndroidDriver\n\n* test: Enhance logcat broadcast error handling in LogcatBroadcastTests\n\n* test: Add LogcatBroadcastTests for logcat message broadcasting func\n[…]\naddress\n\n* fix: Enhance WebDriverException message with timestamp for WebSocket connection failures\n\n* fix: Update host variable in CanStartLogcatBroadcastWithCustomHost test to use a fixed IP address",
          "is_bot": false,
          "headline": "feat: Add WebSocket-based log broadcast support for Android (#969)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2025-11-25T19:53:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a777b426ab8faf5594c9a6a30eb6933f07c105b6",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v5...v6)\n\n---\nupdated-dependenc\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "[github-actions] Bump actions/checkout from 5 to 6 (#976)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-11-25T16:01:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e94fbe3fa3e499c766ae5d8aeb0b32985fee702f",
          "body": "… and Selenium Binding 4.36.0 (#973)",
          "is_bot": false,
          "headline": "docs: update compatibility matrix to include Appium .NET Client 8.0.1…",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2025-11-18T03:50:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fdc94cbec512860f0371963a39a3954128c12a14",
          "body": "Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 4 to 5.\n- [Release notes](https://github.com/actions/setup-dotnet/releases)\n- [Commits](https://github.com/actions/setup-dotnet/compare/v4...v5)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-dotnet\n  dependency-\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "[github-actions] Bump actions/setup-dotnet from 4 to 5 (#962)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-11-15T21:28:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "52d62029f0a9dac0c8cacb9d69f2a01bc8a3fe2a",
          "body": "* Reuse an Selenium ICustomDriverCommandExecutor in Appium dotnet client with custom commands\n\nImplement #567.\nNow Appium dotnet has an interface ICustomDriverCommandExecutor for registering/executing custom commands.\nAppiumDriver implements this interface, reusing Selenium’s extensibility.\nUsers ca\n[…]\nored-by: Copilot <175728472+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>\nCo-authored-by: Kazuaki Matsuo <fly.49.89.over@gmail.com>",
          "is_bot": false,
          "headline": "feat: Custom commands execution with ICustomDriverCommandExecutor (#965)",
          "author_name": "Alena T. (Vasilionak)",
          "author_login": "seriousQA",
          "committed_at": "2025-10-18T10:36:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b3ebc07b50a63a5a06b3a0bf77f84d2609775747",
          "body": "---\nupdated-dependencies:\n- dependency-name: Selenium.WebDriver\n  dependency-version: 4.36.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump Selenium.WebDriver from 4.35.0 to 4.36.0 (#964)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-10-07T02:31:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "07c4d7b9d798bc68c7e8738bd355a71fd6b933c0",
          "body": "* test: add bidi test\n\n* use newer webdriver deps\n\n* simplify the test code\n\n* Update Appium.Net.csproj\n\n* add redundant spaces to reduce diff\n\n* Use newer selenium webdriver\n\n* Use Task.Delay\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>\n\n* Use ?\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>\n\n* Update BiDiTests.cs\n\n* add try/catch to ignore exceptions here\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore: add bidi test with newser selenium webdriver dependency (#955)",
          "author_name": "Kazuaki Matsuo",
          "author_login": "KazuCocoa",
          "committed_at": "2025-08-27T23:09:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4e7ac27ef11898463fa1822b5bf73204b2e06796",
          "body": "---\nupdated-dependencies:\n- dependency-name: Microsoft.NET.Test.Sdk\n  dependency-version: 17.14.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore: Bump Microsoft.NET.Test.Sdk from 17.13.0 to 17.14.1 (#956)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-08-19T08:07:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3aec6af44601cd6ea5474b2b9022ccf5987e4fe3",
          "body": "…eAssemblies (#930)\n\nBumps [NUnit.Analyzers](https://github.com/nunit/nunit.analyzers) and [Microsoft.NETFramework.ReferenceAssemblies](https://github.com/Microsoft/dotnet). These dependencies needed to be updated together.\n\nUpdates `NUnit.Analyzers` from 4.6.0 to 4.7.0\n- [Release notes](https://git\n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "build(deps): bump NUnit.Analyzers and Microsoft.NETFramework.Referenc…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-08-17T00:17:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b9dee8be1182283710a58e0578bbe691529dc1e3",
          "body": "Bumps [Selenium.WebDriver](https://github.com/SeleniumHQ/selenium) from 4.29.0 to 4.32.0.\n- [Release notes](https://github.com/SeleniumHQ/selenium/releases)\n- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.29.0...selenium-4.32.0)\n\n---\nupdated-dependencies:\n- dependency-name: Sel\n[…]\nr\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Kazuaki Matsuo <fly.49.89.over@gmail.com>",
          "is_bot": true,
          "headline": "build(deps): bump Selenium.WebDriver in /src/Appium.Net (#940)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-08-15T13:54:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "439f9901c01a4d6c680fc91ffb09257e1a3f5b10",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v4...v5)\n\n---\nupdated-dependenc\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "[github-actions] bump actions/checkout from 4 to 5 (#954)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-08-12T10:58:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c0b4fb14c38bdfbd3545f820bb1cd7e2887c9bec",
          "body": "* XML comments fixes\n\nInspired by appium#733.\n\n* Update src/Appium.Net/Appium/iOS/IOSStartScreenRecordingOptions.cs\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>\n\n* Update src/Appium.Net/Appium/ScreenOrientationExtensions.cs\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore: XML comments fixes (#951)",
          "author_name": "Alena T. (Vasilionak)",
          "author_login": "seriousQA",
          "committed_at": "2025-08-03T14:49:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "28415f8378acd86cf59c6bd5b12a6435d1d997a6",
          "body": "* XML comments fixes\n\nIn AppiumCommandExecutionHelper.cs\nInspired by #733.\n\n* Improve XML documentation for clipboard interface\n\nUpdated parameter descriptions in IHasClipboard interface methods to provide clearer information about expected arguments. Also enabled nullable context in AndroidDriver for improved code safety.\n\n* Update IHasClipboard.cs\n\n---------\n\nCo-authored-by: Kazuaki Matsuo <fly.49.89.over@gmail.com>",
          "is_bot": false,
          "headline": "chore: Fix XML comments in AppiumCommandExecutionHelper.cs (#950)",
          "author_name": "Alena T. (Vasilionak)",
          "author_login": "seriousQA",
          "committed_at": "2025-07-28T21:27:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d7e6af76f0a821941f9f4ae0773b4d9e43319450",
          "body": "* feat: use mobile:background\n\n* pdate clipboard stuff\n\n* simplify a bit\n\n* turn\n\n* query app state\n\n* add /se\n\n* update for device time\n\n* update for system bar\n\n* device density command\n\n* gps\n\n* replace android smulator stuff\n\n* activities\n\n* pressKeys\n\n* long press\n\n* keyboards\n\n* touch id etc\n\n\n[…]\ns.noreply.github.com>\n\n* update readme\n\n* modify the readme format\n\n* add xml doc\n\n* extract to private methods for press key code stuff\n\n* fix table format\n\n* add xml doc\n\n* update readme\n\n* fix typo",
          "is_bot": false,
          "headline": "BREAKING CHANGE: use extension commands for deprecated endpoints (#939)",
          "author_name": "Kazuaki Matsuo",
          "author_login": "KazuCocoa",
          "committed_at": "2025-05-28T16:01:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "47224dcb29aae00fb6f3a166b784943e054fbacb",
          "body": "* chore: add todo comments in AppiumCommand.cs for future reference\n\n* update todo for win",
          "is_bot": false,
          "headline": "chore: add todo comments in AppiumCommand.cs for future reference (#938)",
          "author_name": "Kazuaki Matsuo",
          "author_login": "KazuCocoa",
          "committed_at": "2025-05-04T07:16:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3674f95b451b7b6de1952d683698c7e95d2f4423",
          "body": "* Add RelaxSslValidation property and IsModified method\n\nAdded a new property `RelaxSslValidation` to the `AppiumClientConfig` class to allow users to specify whether SSL validation should be relaxed. Introduced a new method `IsModified` that checks if the current configuration has been modified fro\n[…]\nsion-specific tests\n\n* Directly setting callback when enabling the relax SSL Validation.\n\n* Consolidate cleanup logic in RelaxSslValidationTest\n\n* Simplify exception handling in RelaxSslValidationTest",
          "is_bot": false,
          "headline": "feat: Add support for Relax SSL validation (#922)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2025-03-16T21:56:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "05e24048ff2d9f585bc1d229844ddadbec11d26a",
          "body": "* Add AppiumClientConfigTest to pipeline\n\n* Change unit tests from .NET 6 to .NET 8",
          "is_bot": false,
          "headline": "ci: Fix .NET Core run and add AppiumClientConfigTest to pipeline (#923)",
          "author_name": "Dor Blayzer",
          "author_login": "Dor-bl",
          "committed_at": "2025-03-16T21:19:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b7f116481182838f12e8092d32709bc3cb7f298",
          "body": "Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest).\n\nUpdates `Microsoft.NET.Test.Sdk` from 17.12.0 to 17.13.0\n- [Release notes](https://github.com/microsoft/vstest/releases)\n- [Changelog](https://github.com/microsoft/vstest/blob/main/docs/releases.md)\n- [Commits](https://github.com/\n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "build(deps): bump Microsoft.NET.Test.Sdk from 17.12.0 to 17.13.0(#903)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-03-15T21:48:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e3d55d0aa0e85886e791edab8c8de915d1b5b8dd",
          "body": "* fix: ToLower/ToUpper to ToLowerInvariant/ToUpperInvariant\n\n* keep extra spaces\n\n* remove automatic new line by GH\n\n* remove new line by GitHub editor\n\n* keep extra tab\n\n* keep extra space\n\n* keep extra spaces/tabs more\n\n* last extra space",
          "is_bot": false,
          "headline": "fix: ToLower/ToUpper to ToLowerInvariant/ToUpperInvariant (#921)",
          "author_name": "Kazuaki Matsuo",
          "author_login": "KazuCocoa",
          "committed_at": "2025-03-13T23:04:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "12647aacc97547583cb8f134131bb24bb7aa9120",
          "body": "…920)\n\n* fix: use ToUpper in clipboard\n\n* Update AppiumCommandExecutionHelper.cs",
          "is_bot": false,
          "headline": "fix: use ToLowerInvariant in clipboard to follow invariant culture (#…",
          "author_name": "Kazuaki Matsuo",
          "author_login": "KazuCocoa",
          "committed_at": "2025-03-13T23:04:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 48,
      "commits_last_year": 93,
      "latest_release_at": "2026-07-18T20:25:53Z",
      "latest_release_tag": "v8.3.2",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 27,
      "days_since_latest_release": 8,
      "mean_days_between_releases": 63.1
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 100,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "Appium.WebDriver",
          "exists": true,
          "license": null,
          "keywords": [
            "Appium",
            "Webdriver",
            "device",
            "automation"
          ],
          "ecosystem": "nuget",
          "matches_repo": null,
          "registry_url": "https://www.nuget.org/packages/Appium.WebDriver",
          "is_deprecated": false,
          "latest_version": "8.3.2",
          "repository_url": null,
          "versions_count": 45,
          "total_downloads": 27811387,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-18T20:27:44.550000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        }
      ]
    },
    "popularity": {
      "forks": 185,
      "stars": 399,
      "watchers": 45,
      "fork_history": {
        "days": [
          {
            "date": "2014-04-27",
            "count": 1
          },
          {
            "date": "2014-09-08",
            "count": 1
          },
          {
            "date": "2014-09-23",
            "count": 1
          },
          {
            "date": "2014-09-24",
            "count": 1
          },
          {
            "date": "2014-10-13",
            "count": 1
          },
          {
            "date": "2014-10-14",
            "count": 1
          },
          {
            "date": "2014-11-03",
            "count": 1
          },
          {
            "date": "2015-02-04",
            "count": 1
          },
          {
            "date": "2015-04-01",
            "count": 1
          },
          {
            "date": "2015-04-13",
            "count": 1
          },
          {
            "date": "2015-05-06",
            "count": 1
          },
          {
            "date": "2015-05-14",
            "count": 1
          },
          {
            "date": "2015-06-17",
            "count": 1
          },
          {
            "date": "2015-06-18",
            "count": 1
          },
          {
            "date": "2015-06-22",
            "count": 1
          },
          {
            "date": "2015-06-29",
            "count": 2
          },
          {
            "date": "2015-07-02",
            "count": 1
          },
          {
            "date": "2015-07-18",
            "count": 1
          },
          {
            "date": "2015-08-26",
            "count": 1
          },
          {
            "date": "2015-09-26",
            "count": 1
          },
          {
            "date": "2015-10-20",
            "count": 1
          },
          {
            "date": "2015-10-21",
            "count": 1
          },
          {
            "date": "2015-10-26",
            "count": 1
          },
          {
            "date": "2015-11-17",
            "count": 1
          },
          {
            "date": "2015-12-16",
            "count": 1
          },
          {
            "date": "2015-12-21",
            "count": 1
          },
          {
            "date": "2016-01-13",
            "count": 1
          },
          {
            "date": "2016-04-06",
            "count": 1
          },
          {
            "date": "2016-04-08",
            "count": 1
          },
          {
            "date": "2016-04-14",
            "count": 1
          },
          {
            "date": "2016-06-30",
            "count": 2
          },
          {
            "date": "2016-07-05",
            "count": 1
          },
          {
            "date": "2016-07-10",
            "count": 1
          },
          {
            "date": "2016-07-25",
            "count": 1
          },
          {
            "date": "2016-09-06",
            "count": 1
          },
          {
            "date": "2016-09-20",
            "count": 1
          },
          {
            "date": "2016-09-29",
            "count": 1
          },
          {
            "date": "2016-11-20",
            "count": 1
          },
          {
            "date": "2017-01-06",
            "count": 1
          },
          {
            "date": "2017-01-23",
            "count": 1
          },
          {
            "date": "2017-02-03",
            "count": 1
          },
          {
            "date": "2017-04-17",
            "count": 2
          },
          {
            "date": "2017-05-22",
            "count": 1
          },
          {
            "date": "2017-06-17",
            "count": 1
          },
          {
            "date": "2017-07-07",
            "count": 2
          },
          {
            "date": "2017-07-10",
            "count": 1
          },
          {
            "date": "2017-07-28",
            "count": 1
          },
          {
            "date": "2017-09-01",
            "count": 1
          },
          {
            "date": "2017-09-06",
            "count": 1
          },
          {
            "date": "2017-09-20",
            "count": 1
          },
          {
            "date": "2017-10-05",
            "count": 1
          },
          {
            "date": "2017-10-16",
            "count": 1
          },
          {
            "date": "2017-10-20",
            "count": 1
          },
          {
            "date": "2017-10-24",
            "count": 1
          },
          {
            "date": "2017-11-20",
            "count": 1
          },
          {
            "date": "2017-12-09",
            "count": 1
          },
          {
            "date": "2017-12-31",
            "count": 1
          },
          {
            "date": "2018-01-03",
            "count": 1
          },
          {
            "date": "2018-01-25",
            "count": 1
          },
          {
            "date": "2018-02-20",
            "count": 1
          },
          {
            "date": "2018-02-23",
            "count": 1
          },
          {
            "date": "2018-03-13",
            "count": 1
          },
          {
            "date": "2018-03-22",
            "count": 1
          },
          {
            "date": "2018-03-23",
            "count": 1
          },
          {
            "date": "2018-03-30",
            "count": 1
          },
          {
            "date": "2018-04-04",
            "count": 1
          },
          {
            "date": "2018-04-12",
            "count": 1
          },
          {
            "date": "2018-04-24",
            "count": 2
          },
          {
            "date": "2018-06-26",
            "count": 1
          },
          {
            "date": "2018-08-05",
            "count": 1
          },
          {
            "date": "2018-08-06",
            "count": 1
          },
          {
            "date": "2018-08-10",
            "count": 1
          },
          {
            "date": "2018-08-23",
            "count": 1
          },
          {
            "date": "2018-09-12",
            "count": 1
          },
          {
            "date": "2018-09-20",
            "count": 1
          },
          {
            "date": "2018-10-13",
            "count": 1
          },
          {
            "date": "2018-10-18",
            "count": 1
          },
          {
            "date": "2018-10-21",
            "count": 1
          },
          {
            "date": "2018-10-23",
            "count": 1
          },
          {
            "date": "2018-10-27",
            "count": 1
          },
          {
            "date": "2018-11-18",
            "count": 1
          },
          {
            "date": "2018-11-19",
            "count": 1
          },
          {
            "date": "2018-11-27",
            "count": 1
          },
          {
            "date": "2018-12-04",
            "count": 1
          },
          {
            "date": "2018-12-18",
            "count": 1
          },
          {
            "date": "2019-01-18",
            "count": 1
          },
          {
            "date": "2019-01-28",
            "count": 1
          },
          {
            "date": "2019-02-26",
            "count": 1
          },
          {
            "date": "2019-03-07",
            "count": 1
          },
          {
            "date": "2019-03-11",
            "count": 1
          },
          {
            "date": "2019-04-18",
            "count": 1
          },
          {
            "date": "2019-04-20",
            "count": 1
          },
          {
            "date": "2019-06-04",
            "count": 1
          },
          {
            "date": "2019-06-14",
            "count": 1
          },
          {
            "date": "2019-08-23",
            "count": 1
          },
          {
            "date": "2019-09-02",
            "count": 1
          },
          {
            "date": "2019-09-03",
            "count": 1
          },
          {
            "date": "2019-09-06",
            "count": 1
          },
          {
            "date": "2019-09-12",
            "count": 1
          },
          {
            "date": "2019-10-28",
            "count": 1
          },
          {
            "date": "2019-11-04",
            "count": 1
          },
          {
            "date": "2019-11-07",
            "count": 1
          },
          {
            "date": "2019-12-02",
            "count": 1
          },
          {
            "date": "2019-12-06",
            "count": 1
          },
          {
            "date": "2020-01-09",
            "count": 1
          },
          {
            "date": "2020-01-16",
            "count": 1
          },
          {
            "date": "2020-02-26",
            "count": 1
          },
          {
            "date": "2020-03-22",
            "count": 1
          },
          {
            "date": "2020-03-27",
            "count": 1
          },
          {
            "date": "2020-07-16",
            "count": 1
          },
          {
            "date": "2020-07-31",
            "count": 1
          },
          {
            "date": "2020-08-07",
            "count": 1
          },
          {
            "date": "2020-08-17",
            "count": 1
          },
          {
            "date": "2020-08-31",
            "count": 1
          },
          {
            "date": "2020-09-04",
            "count": 1
          },
          {
            "date": "2020-10-30",
            "count": 1
          },
          {
            "date": "2020-11-20",
            "count": 1
          },
          {
            "date": "2020-12-19",
            "count": 1
          },
          {
            "date": "2020-12-21",
            "count": 1
          },
          {
            "date": "2021-01-08",
            "count": 1
          },
          {
            "date": "2021-01-14",
            "count": 1
          },
          {
            "date": "2021-01-27",
            "count": 1
          },
          {
            "date": "2021-04-20",
            "count": 1
          },
          {
            "date": "2021-07-02",
            "count": 1
          },
          {
            "date": "2021-07-04",
            "count": 1
          },
          {
            "date": "2021-07-10",
            "count": 1
          },
          {
            "date": "2021-09-10",
            "count": 1
          },
          {
            "date": "2021-09-13",
            "count": 2
          },
          {
            "date": "2021-11-08",
            "count": 1
          },
          {
            "date": "2021-12-20",
            "count": 1
          },
          {
            "date": "2022-01-21",
            "count": 1
          },
          {
            "date": "2022-01-22",
            "count": 1
          },
          {
            "date": "2022-03-01",
            "count": 1
          },
          {
            "date": "2022-03-16",
            "count": 1
          },
          {
            "date": "2022-03-26",
            "count": 1
          },
          {
            "date": "2022-04-14",
            "count": 1
          },
          {
            "date": "2022-05-04",
            "count": 1
          },
          {
            "date": "2022-06-01",
            "count": 1
          },
          {
            "date": "2022-06-21",
            "count": 1
          },
          {
            "date": "2022-07-01",
            "count": 1
          },
          {
            "date": "2022-07-18",
            "count": 1
          },
          {
            "date": "2022-07-29",
            "count": 1
          },
          {
            "date": "2022-08-28",
            "count": 1
          },
          {
            "date": "2022-09-14",
            "count": 1
          },
          {
            "date": "2022-11-09",
            "count": 1
          },
          {
            "date": "2023-01-08",
            "count": 1
          },
          {
            "date": "2023-01-12",
            "count": 1
          },
          {
            "date": "2023-01-14",
            "count": 1
          },
          {
            "date": "2023-02-09",
            "count": 1
          },
          {
            "date": "2023-02-23",
            "count": 1
          },
          {
            "date": "2023-03-26",
            "count": 1
          },
          {
            "date": "2023-06-20",
            "count": 1
          },
          {
            "date": "2023-07-02",
            "count": 1
          },
          {
            "date": "2023-10-12",
            "count": 1
          },
          {
            "date": "2024-02-09",
            "count": 1
          },
          {
            "date": "2024-02-14",
            "count": 1
          },
          {
            "date": "2024-02-29",
            "count": 1
          },
          {
            "date": "2024-06-04",
            "count": 1
          },
          {
            "date": "2024-06-16",
            "count": 1
          },
          {
            "date": "2024-06-20",
            "count": 1
          },
          {
            "date": "2024-07-02",
            "count": 1
          },
          {
            "date": "2024-07-25",
            "count": 1
          },
          {
            "date": "2024-10-06",
            "count": 1
          },
          {
            "date": "2024-10-17",
            "count": 1
          },
          {
            "date": "2024-11-28",
            "count": 1
          },
          {
            "date": "2025-07-20",
            "count": 1
          },
          {
            "date": "2026-07-26",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 173,
        "total_forks": 185
      },
      "star_history": null,
      "open_issues_and_prs": 10
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "src/Appium.Net/Appium.Net.csproj",
        "test/integration/Appium.Net.Integration.Tests.csproj"
      ],
      "largest_source_bytes": 66751,
      "source_files_sampled": 208,
      "oversized_source_files": 1,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "Newtonsoft.Json",
            "direct": false,
            "version": "10.0.3",
            "severity": "high",
            "ecosystem": "nuget",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-5crp-9r3c-p9vr"
            ],
            "fixed_version": "13.0.1",
            "advisory_count": 1,
            "oldest_advisory_days": 1495
          },
          {
            "name": "Newtonsoft.Json",
            "direct": false,
            "version": "11.0.2",
            "severity": "high",
            "ecosystem": "nuget",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-5crp-9r3c-p9vr"
            ],
            "fixed_version": "13.0.1",
            "advisory_count": 1,
            "oldest_advisory_days": 1495
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 2
        },
        "advisory_count": 2,
        "affected_count": 2,
        "assessed_count": 29,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [],
      "dependencies": [
        {
          "name": "Microsoft.SourceLink.GitHub",
          "manifest": "src/Appium.Net/Appium.Net.csproj",
          "ecosystem": "nuget",
          "version_constraint": "10.0.301"
        },
        {
          "name": "Selenium.WebDriver",
          "manifest": "src/Appium.Net/Appium.Net.csproj",
          "ecosystem": "nuget",
          "version_constraint": "4.46.0"
        },
        {
          "name": "System.Drawing.Common",
          "manifest": "src/Appium.Net/Appium.Net.csproj",
          "ecosystem": "nuget",
          "version_constraint": "10.0.9"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "Microsoft.SourceLink.GitHub",
            "direct": true,
            "version": "10.0.301",
            "ecosystem": "nuget"
          },
          {
            "name": "Selenium.WebDriver",
            "direct": true,
            "version": "3.13.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Selenium.WebDriver",
            "direct": true,
            "version": "3.14.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Selenium.WebDriver",
            "direct": true,
            "version": "3.8.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Selenium.WebDriver",
            "direct": true,
            "version": "4.46.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Drawing.Common",
            "direct": true,
            "version": "10.0.9",
            "ecosystem": "nuget"
          },
          {
            "name": "Castle.Core",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "nuget"
          },
          {
            "name": "Castle.Core",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "nuget"
          },
          {
            "name": "DotNetSeleniumExtras.PageObjects",
            "direct": false,
            "version": "3.11.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeAnalysis.FxCopAnalyzers",
            "direct": false,
            "version": "2.6.2-beta2",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.CodeQuality.Analyzers",
            "direct": false,
            "version": "2.6.2-beta2",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.NET.Test.Sdk",
            "direct": false,
            "version": "15.9.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.NET.Test.Sdk",
            "direct": false,
            "version": "18.7.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.NetCore.Analyzers",
            "direct": false,
            "version": "2.6.2-beta2",
            "ecosystem": "nuget"
          },
          {
            "name": "Microsoft.NetFramework.Analyzers",
            "direct": false,
            "version": "2.6.2-beta2",
            "ecosystem": "nuget"
          },
          {
            "name": "Newtonsoft.Json",
            "direct": false,
            "version": "10.0.3",
            "ecosystem": "nuget"
          },
          {
            "name": "Newtonsoft.Json",
            "direct": false,
            "version": "11.0.2",
            "ecosystem": "nuget"
          },
          {
            "name": "NUnit",
            "direct": false,
            "version": "3.10.1",
            "ecosystem": "nuget"
          },
          {
            "name": "NUnit",
            "direct": false,
            "version": "3.11.0",
            "ecosystem": "nuget"
          },
          {
            "name": "NUnit",
            "direct": false,
            "version": "4.6.1",
            "ecosystem": "nuget"
          },
          {
            "name": "NUnit.Analyzers",
            "direct": false,
            "version": "4.14.0",
            "ecosystem": "nuget"
          },
          {
            "name": "NUnit3TestAdapter",
            "direct": false,
            "version": "3.11.0",
            "ecosystem": "nuget"
          },
          {
            "name": "NUnit3TestAdapter",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Selenium.Support",
            "direct": false,
            "version": "3.13.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Selenium.Support",
            "direct": false,
            "version": "3.14.0",
            "ecosystem": "nuget"
          },
          {
            "name": "Selenium.Support",
            "direct": false,
            "version": "3.8.0",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Net.Http",
            "direct": false,
            "version": "4.3.4",
            "ecosystem": "nuget"
          },
          {
            "name": "System.Text.Json",
            "direct": false,
            "version": "10.0.10",
            "ecosystem": "nuget"
          },
          {
            "name": "Text.Analyzers",
            "direct": false,
            "version": "2.6.2-beta2",
            "ecosystem": "nuget"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 29,
        "direct_count": 6,
        "indirect_count": 23
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 3,
        "merged_prs": 534,
        "open_issues": 7,
        "closed_ratio": 0.983,
        "closed_issues": 400,
        "closed_unmerged_prs": 136
      },
      "bus_factor": 2,
      "bot_contributors": 3,
      "top_contributors": [
        {
          "type": "User",
          "login": "TikhomirovSergey",
          "commits": 223,
          "avatar_url": "https://avatars.githubusercontent.com/u/4927589?v=4"
        },
        {
          "type": "User",
          "login": "Dor-bl",
          "commits": 212,
          "avatar_url": "https://avatars.githubusercontent.com/u/59066376?v=4"
        },
        {
          "type": "User",
          "login": "Astro03",
          "commits": 108,
          "avatar_url": "https://avatars.githubusercontent.com/u/5010872?v=4"
        },
        {
          "type": "User",
          "login": "sebv",
          "commits": 82,
          "avatar_url": "https://avatars.githubusercontent.com/u/418288?v=4"
        },
        {
          "type": "User",
          "login": "laolubenson",
          "commits": 81,
          "avatar_url": "https://avatars.githubusercontent.com/u/14160265?v=4"
        },
        {
          "type": "User",
          "login": "KazuCocoa",
          "commits": 19,
          "avatar_url": "https://avatars.githubusercontent.com/u/5511591?v=4"
        },
        {
          "type": "User",
          "login": "TroyWalshProf",
          "commits": 12,
          "avatar_url": "https://avatars.githubusercontent.com/u/2066107?v=4"
        },
        {
          "type": "User",
          "login": "stoneman",
          "commits": 11,
          "avatar_url": "https://avatars.githubusercontent.com/u/741710?v=4"
        },
        {
          "type": "User",
          "login": "manoj9788",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/1823178?v=4"
        },
        {
          "type": "User",
          "login": "rajfidel",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/577594?v=4"
        }
      ],
      "contributors_sampled": 50,
      "top_contributor_share": 0.267
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "functional-test.yml",
        "main.yml",
        "release-drafter.yml",
        "release-nuget.yml",
        "unit-test.yml",
        "validate-release-drafter.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": true,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 3,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 10,
            "reason": "all changesets reviewed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 13 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": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "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": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "43f90016761502816c5c12b19ed24afa785a3693",
        "ran_at": "2026-07-27T02:28:26Z",
        "aggregate_score": 6.9,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-26T17:34:13Z",
      "oldest_open_prs": [
        {
          "number": 1092,
          "created_at": "2026-07-15T20:23:55Z",
          "last_comment_at": "2026-07-17T07:20:24Z",
          "last_comment_author": "Dor-bl"
        },
        {
          "number": 1093,
          "created_at": "2026-07-15T20:23:58Z",
          "last_comment_at": "2026-07-17T07:20:23Z",
          "last_comment_author": "Dor-bl"
        },
        {
          "number": 1097,
          "created_at": "2026-07-22T20:22:43Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-26T17:34:02Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 255,
          "created_at": "2018-08-10T12:10:53Z",
          "last_comment_at": "2023-04-28T12:42:03Z",
          "last_comment_author": "Dor-bl"
        },
        {
          "number": 944,
          "created_at": "2025-06-24T20:04:35Z",
          "last_comment_at": "2026-01-14T23:20:17Z",
          "last_comment_author": "jrod567"
        },
        {
          "number": 952,
          "created_at": "2025-08-02T22:10:07Z",
          "last_comment_at": "2026-03-27T09:44:30Z",
          "last_comment_author": "nvborisenko"
        },
        {
          "number": 981,
          "created_at": "2025-12-15T06:06:21Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1032,
          "created_at": "2026-03-27T13:35:28Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1058,
          "created_at": "2026-05-31T21:28:52Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1066,
          "created_at": "2026-06-18T14:32:30Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/appium/dotnet-client",
    "host": "github.com",
    "name": "dotnet-client",
    "owner": "appium"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": "High-Risk Jurisdiction Policy applies a 50% multiplier to weighted overall health and gives it an At risk ceiling of 49.",
      "notes": [
        {
          "code": "jurisdiction_overall_adjustment",
          "params": {
            "cap": 49,
            "pct": 50
          }
        }
      ],
      "value": 37,
      "inputs": {
        "security": 47,
        "vitality": 86,
        "community": 84,
        "governance": 82,
        "engineering": 64,
        "high_risk_jurisdiction_cap": 49,
        "high_risk_jurisdiction_multiplier": 50,
        "weighted_overall_before_jurisdiction": 74,
        "overall_after_jurisdiction_multiplier": 37
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 86,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "commits_last_year": 93,
              "human_commit_share": 0.59,
              "days_since_last_push": 0,
              "active_weeks_last_year": 27
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "27/52 weeks with commits",
                "points": 18.7,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 27
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "93 commits in the last year",
                "points": 17.7,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 93
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 4 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": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 92,
            "inputs": {
              "releases_count": 48,
              "latest_release_tag": "v8.3.2",
              "releases_from_tags": false,
              "days_since_latest_release": 8,
              "mean_days_between_releases": 63.1
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "48 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 48
                    }
                  }
                ],
                "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 ~63.1 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 63.1
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 84,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "forks": 185,
              "stars": 399,
              "watchers": 45,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "399 stars",
                "points": 42.2,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 399
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "185 forks",
                "points": 18.9,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 185
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "45 watchers",
                "points": 9.1,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 45
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "excellent",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 13.5,
                "status": "met",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "excellent",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 97,
            "inputs": {
              "packages": [
                "Appium.WebDriver"
              ],
              "dependents": null,
              "ecosystems": "nuget",
              "total_downloads": 27811387,
              "monthly_downloads": null
            },
            "components": [
              {
                "key": "total_downloads",
                "name": "Total downloads",
                "detail": "27,811,387 downloads all-time across nuget",
                "points": 77.4,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_total",
                    "params": {
                      "count": 27811387,
                      "ecosystems": "nuget"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "good",
        "name": "Sustainability & Governance",
        "value": 82,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "moderate",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "bus_factor": 2,
              "contributors_sampled": 50,
              "top_contributor_share": 0.267
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "2 contributor(s) cover half of all commits",
                "points": 25.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 27% of commits",
                "points": 16.5,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 27
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "50 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 50
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 13 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "excellent",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "merged_prs": 534,
              "open_issues": 7,
              "closed_issues": 400,
              "issue_closed_ratio": 0.983,
              "closed_unmerged_prs": 136
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "98% of issues closed",
                "points": 46,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 98
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "534/670 decided PRs merged",
                "points": 30.5,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 534,
                      "decided": 670
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "all changesets reviewed",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "followers": 1305,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "appium",
              "public_repos": 111,
              "account_age_days": 4947
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "1,305 followers of appium",
                "points": 22.4,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 1305,
                      "login": "appium"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "111 public repos, account ~13 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 111
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 13
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "Appium.WebDriver"
              ],
              "ecosystems": "nuget",
              "any_deprecated": false,
              "min_days_since_publish": 8
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on nuget",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "nuget"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 8 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "45 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 45
                    }
                  }
                ],
                "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": "moderate",
        "name": "Engineering Quality",
        "value": 64,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "6 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": 47,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized. High-Risk Jurisdiction Policy applies a 50% multiplier to Security posture and gives it an At risk ceiling of 49.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "jurisdiction_posture_adjustment",
                "params": {
                  "cap": 49,
                  "pct": 50
                }
              }
            ],
            "value": 34,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 6.9,
              "high_risk_jurisdiction_cap": 49,
              "high_risk_jurisdiction_multiplier": 50,
              "security_posture_after_multiplier": 34,
              "security_posture_before_jurisdiction": 69
            },
            "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 is not maximal on development and all release branches",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "all changesets reviewed",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 13 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": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "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": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 29 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories",
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 29
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 2,
              "affected_packages": 2,
              "assessed_packages": 29,
              "unassessed_packages": 0,
              "affected_by_severity": "high 2",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 29,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "moderate",
            "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": 50,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": true,
              "exposures": [
                {
                  "role": "top_contributor",
                  "count": 1,
                  "country": "Russia"
                }
              ],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 17
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "Russia: top_contributor (1)",
                "points": 50,
                "status": "partial",
                "details": [
                  {
                    "code": "jurisdiction_exposure",
                    "params": {
                      "role": "top_contributor",
                      "count": 1,
                      "country": "Russia"
                    }
                  }
                ],
                "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": "moderate",
        "name": "AI Readiness",
        "value": 62,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "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": "59 of 59 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 59,
                      "sampled": 59
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 64,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.18,
              "toolchain_manifests": [
                "src/Appium.Net/Appium.Net.csproj",
                "test/integration/Appium.Net.Integration.Tests.csproj"
              ],
              "dependency_bot_commit_share": 0.41
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "src/Appium.Net/Appium.Net.csproj, test/integration/Appium.Net.Integration.Tests.csproj (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "src/Appium.Net/Appium.Net.csproj, test/integration/Appium.Net.Integration.Tests.csproj"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "C# (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "C#"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "18 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 18,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "41 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 41,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "C#",
              "largest_source_bytes": 66751,
              "source_files_sampled": 208,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "C# (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "C#"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/208 source files over 60KB",
                "points": 54.7,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 208,
                      "oversized": 1
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "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": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-27T02:29:02.037576Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/a/appium/dotnet-client.svg",
  "full_name": "appium/dotnet-client",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadasNuGet.