Skip to content

Verification Request: homebridge-nextdns #871

Closed

Description

@jtokoph

Plugin Name

homebridge-nextdns

Link To GitHub Repo

https://github.com/jtokoph/homebridge-nextdns

Plugin Icon (Optional)

Image

The plugin does not offer the same nor less functionality than that of any existing verified plugin.

🟢 Yes

The plugin successfully installs and does not start unless it is configured.

🟢 Yes

The plugin does not require the user to run Homebridge in a TTY or with non-standard startup parameters, even for initial configuration.

🟢 Yes

The plugin does not contain any analytics or calls that enable you to track the user.

🟢 Yes

If the plugin needs to write files to disk (cache, keys, etc.), it stores them inside the Homebridge storage directory.

🟢 Yes

The plugin does not throw unhandled exceptions, the plugin must catch and log its own errors.

🟢 Yes

More Information

No response

Activity

  1. github-actions commented on Sep 15, 2025

    @github-actions
    Contributor

    🔴 The following checks failed:

    • Config Schema JSON: schema is invalid - required should not be a boolean property on individual fields. In JSON Schema, required must be an array at the object level listing required property names. Remove "required": true/false from individual properties and use "required": ["property1", "property2"] at the object level instead.
    • Config Schema JSON: does not contain a name schema property
    • Runtime: skipped due to prior test failures

    🟢 The following checks passed:

    • Installation: successfully installed
    • Package JSON: homepage exists
    • Package JSON: bugs.url exists and seems a valid URL
    • Package JSON: keywords exist and contain 'homebridge-plugin'
    • Package JSON: 'preinstall' in scripts is not present
    • Package JSON: 'install' in scripts is not present
    • Package JSON: 'postinstall' in scripts is not present
    • Package JSON: engines.node property is compatible with Node 20
    • Package JSON: engines.node property is compatible with Node 22
    • Package JSON: engines.homebridge property is compatible with Homebridge 1.11.0
    • Package JSON: initializer function found
    • NPM Package: has not been deprecated
    • GitHub Repo: version in package.json (v1.0.0) matches NPM version (v1.0.0)
    • Config Schema JSON: exists and is valid JSON
    • Config Schema JSON: contains a valid pluginAlias
    • Config Schema JSON: the pluginType is set to 'platform'
    • Dependencies: homebridge was not installed as a dependency
    • Dependencies: hap-nodejs was not installed as a dependency
    • GitHub Repo: repository is public
    • GitHub Repo: repository is not archived
    • GitHub Repo: issues are enabled
    • GitHub Repo: contains releases

    ⚠️ Please action these failures and then comment /check to run the checks again. Let us know if you need any help.

    If updating your package.json and config.schema.json files, don't forget to publish a new version to NPM.

    These checks were run against v1.0.0 of the plugin.

    Workflow →

  2. added
    awaiting-changesuse after review has started - awaiting user to make changes to plugin
    and removed
    pendingthe label given to a new verification/icon request
    on Sep 15, 2025
  3. jtokoph commented on Sep 15, 2025

    @jtokoph
    Author

    /check

  4. added
    pendingthe label given to a new verification/icon request
    and removed
    awaiting-changesuse after review has started - awaiting user to make changes to plugin
    on Sep 15, 2025
  5. github-actions commented on Sep 15, 2025

    @github-actions
    Contributor

    🔴 The following checks failed:

    • GitHub Repo: could not check package.json version as The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object. Received undefined
    • Runtime: skipped due to prior test failures
    • GitHub Repo: should have issues enabled
    • GitHub Repo: should contain releases

    🟢 The following checks passed:

    • Installation: successfully installed
    • Package JSON: homepage exists
    • Package JSON: bugs.url exists and seems a valid URL
    • Package JSON: keywords exist and contain 'homebridge-plugin'
    • Package JSON: 'preinstall' in scripts is not present
    • Package JSON: 'install' in scripts is not present
    • Package JSON: 'postinstall' in scripts is not present
    • Package JSON: engines.node property is compatible with Node 20
    • Package JSON: engines.node property is compatible with Node 22
    • Package JSON: engines.homebridge property is compatible with Homebridge 1.11.0
    • Package JSON: initializer function found
    • NPM Package: has not been deprecated
    • Config Schema JSON: exists and is valid JSON
    • Config Schema JSON: contains valid JSON Schema
    • Config Schema JSON: schema has valid type property
    • Config Schema JSON: schema has valid properties for object type
    • Config Schema JSON: contains a valid pluginAlias
    • Config Schema JSON: the pluginType is set to 'platform'
    • Config Schema JSON: contains a name schema property
    • Dependencies: homebridge was not installed as a dependency
    • Dependencies: hap-nodejs was not installed as a dependency
    • GitHub Repo: repository is public
    • GitHub Repo: repository is not archived

    ⚠️ Please action these failures and then comment /check to run the checks again. Let us know if you need any help.

    If updating your package.json and config.schema.json files, don't forget to publish a new version to NPM.

    These checks were run against v1.0.2 of the plugin.

    Workflow →

  6. added
    awaiting-changesuse after review has started - awaiting user to make changes to plugin
    and removed
    pendingthe label given to a new verification/icon request
    on Sep 15, 2025
  7. jtokoph commented on Sep 15, 2025

    @jtokoph
    Author

    /check

  8. added
    pendingthe label given to a new verification/icon request
    and removed
    awaiting-changesuse after review has started - awaiting user to make changes to plugin
    on Sep 15, 2025
  9. github-actions commented on Sep 15, 2025

    @github-actions
    Contributor

    🔴 The following checks failed:

    Runtime Issues:

    • ⚠️ Plugin crashes when started with the following configuration:

      {
        "platform": "HomebridgeNextDNS",
        "name": "NextDNS",
        "apiKey": "testvalue",
        "profileId": "testvalue"
      }

      Error:

      expected startup but failed - [9/15/2025, 11:50:57 PM] TypeError: Cannot read properties of undefined (reading 'denylist')
      at NextDNSPlatform.discoverDevices (file:///workspace/test-area/node_modules/homebridge-nextdns/src/platform.ts:99:45)
      at processTicksAndRejections (node:internal/process/task_queues:105:5)
      

      This needs to be fixed so that the plugin does not send Homebridge into a crash-restart loop. The plugin could:
      - Handle missing required configuration gracefully with proper error messages
      - Provide sensible defaults for missing values
      - Validate configuration during startup and log helpful warnings

    • ⚠️ Plugin crashes when started with the following configuration:

      {
        "platform": "HomebridgeNextDNS",
        "name": "NextDNS",
        "apiKey": "test-api-key-12345",
        "profileId": "test-value",
        "blockedDomains": []
      }

      Error:

      expected startup but failed - [9/15/2025, 11:51:03 PM] TypeError: Cannot read properties of undefined (reading 'denylist')
      at NextDNSPlatform.discoverDevices (file:///workspace/test-area/node_modules/homebridge-nextdns/src/platform.ts:99:45)
      at processTicksAndRejections (node:internal/process/task_queues:105:5)
      

      This needs to be fixed so that the plugin does not send Homebridge into a crash-restart loop. The plugin could:
      - Handle missing required configuration gracefully with proper error messages
      - Provide sensible defaults for missing values
      - Validate configuration during startup and log helpful warnings

    • ⚠️ Plugin crashes when started with the following configuration:

      {
        "platform": "HomebridgeNextDNS",
        "name": "NextDNS",
        "apiKey": "test-api-key-12345",
        "profileId": "test-value",
        "blockedDomains": []
      }

      Error:

      expected startup but failed - [9/15/2025, 11:51:09 PM] FetchError: request to https://api.nextdns.io/profiles/test-value failed, reason: ENOTFOUND: Mock network failure - https://api.nextdns.io/profiles/test-value
      at Object._errorCallback (file:///workspace/test-area/node_modules/node-fetch/src/index.js:108:11)
      at Timeout._onTimeout (/workspace/test-area/homebridge-test-1757980268620/http-monitor.js:72:22)
      at listOnTimeout (node:internal/timers:588:17)
      at processTimers (node:internal/timers:523:7)
      

      This needs to be fixed so that the plugin does not send Homebridge into a crash-restart loop. The plugin could:
      - Handle missing required configuration gracefully with proper error messages
      - Provide sensible defaults for missing values
      - Validate configuration during startup and log helpful warnings


    🟢 The following checks passed:

    • Installation: successfully installed
    • Package JSON: homepage exists
    • Package JSON: bugs.url exists and seems a valid URL
    • Package JSON: keywords exist and contain 'homebridge-plugin'
    • Package JSON: 'preinstall' in scripts is not present
    • Package JSON: 'install' in scripts is not present
    • Package JSON: 'postinstall' in scripts is not present
    • Package JSON: engines.node property is compatible with Node 20
    • Package JSON: engines.node property is compatible with Node 22
    • Package JSON: engines.homebridge property is compatible with Homebridge 1.11.0
    • Package JSON: initializer function found
    • NPM Package: has not been deprecated
    • GitHub Repo: version in package.json (v1.0.2) matches NPM version (v1.0.2)
    • Config Schema JSON: exists and is valid JSON
    • Config Schema JSON: contains valid JSON Schema
    • Config Schema JSON: schema has valid type property
    • Config Schema JSON: schema has valid properties for object type
    • Config Schema JSON: contains a valid pluginAlias
    • Config Schema JSON: the pluginType is set to 'platform'
    • Config Schema JSON: contains a name schema property
    • Dependencies: homebridge was not installed as a dependency
    • Dependencies: hap-nodejs was not installed as a dependency
    • Runtime: homebridge installed successfully
    • Runtime: no config - homebridge should start without plugin configuration and plugin should not load
    • Runtime: platform only - plugin should start with just platform property
    • GitHub Repo: repository is public
    • GitHub Repo: repository is not archived
    • GitHub Repo: issues are enabled
    • GitHub Repo: contains releases

    ⚠️ Please action these failures and then comment /check to run the checks again. Let us know if you need any help.

    If updating your package.json and config.schema.json files, don't forget to publish a new version to NPM.

    These checks were run against v1.0.2 of the plugin.

    Workflow →

  10. 60 remaining items

  11. removed
    pendingthe label given to a new verification/icon request
    on Sep 16, 2025
  12. bwp91 commented on Sep 16, 2025

    @bwp91
    Contributor

    @jtokoph i left a comment above which i think would be worth a try.

    if that doesn't work, not to worry.

    that scenario we test is pretty new and so might have some unexpected issues (like here!). we can easily skip that check for the verification

  13. jtokoph commented on Sep 16, 2025

    @jtokoph
    Author

    /check

  14. added
    pendingthe label given to a new verification/icon request
    and removed
    awaiting-changesuse after review has started - awaiting user to make changes to plugin
    on Sep 16, 2025
  15. github-actions commented on Sep 16, 2025

    @github-actions
    Contributor

    🟢 Passed Checks

    • Installation: successfully installed
    • Package JSON: homepage exists
    • Package JSON: bugs.url exists and seems a valid URL
    • Package JSON: keywords exist and contain 'homebridge-plugin'
    • Package JSON: 'preinstall' in scripts is not present
    • Package JSON: 'install' in scripts is not present
    • Package JSON: 'postinstall' in scripts is not present
    • Package JSON: engines.node property is compatible with Node 20
    • Package JSON: engines.node property is compatible with Node 22
    • Package JSON: engines.homebridge property is compatible with Homebridge 1.11.0
    • Package JSON: initializer function found
    • NPM Package: has not been deprecated
    • GitHub Repo: version in package.json (v1.0.7) matches NPM version (v1.0.7)
    • Config Schema JSON: exists and is valid JSON
    • Config Schema JSON: contains valid JSON Schema
    • Config Schema JSON: schema has valid type property
    • Config Schema JSON: schema has valid properties for object type
    • Config Schema JSON: contains a valid pluginAlias
    • Config Schema JSON: the pluginType is set to 'platform'
    • Config Schema JSON: contains a name schema property
    • Dependencies: homebridge was not installed as a dependency
    • Dependencies: hap-nodejs was not installed as a dependency
    • Security: no known vulnerabilities in dependencies
    • Security: no unsafe code patterns detected
    • Security: no privilege escalation attempts detected
    • Runtime: homebridge installed successfully
    • Runtime: no config - homebridge should start without plugin configuration and plugin should not load
    • Runtime: platform only - plugin should start with just platform property
    • Runtime: minimal required - plugin should start with minimal required configuration
    • Runtime: full config - plugin should start with comprehensive configuration
    • Runtime: network resilience - plugin should handle network failures without crashing
    • GitHub Repo: repository is public
    • GitHub Repo: repository is not archived
    • GitHub Repo: issues are enabled
    • GitHub Repo: contains releases

    ℹ️ Check Details

    • These checks were run against v1.0.7 of the plugin.
    • Link to the run workflow: visit →.
    • External HTTP requests detected:
      • 📡 https://api.nextdns.io/profiles/test-value
        Methods: GET | Count: 4 | Scenarios: full config, network resilience
      • 📡 https://api.nextdns.io/profiles/testvalue
        Methods: GET | Count: 2 | Scenarios: minimal required

    📋 Next Steps

    All checks passed successfully, nice work! Your plugin and/or icon will now be manually reviewed by the Homebridge team.

  16. jtokoph commented on Sep 16, 2025

    @jtokoph
    Author

    @bwp91 I've resolved the 2 issues I ran into with the validation script.

    1. This code is checking the output for error strings. Even though I was catching the error, I was printing it out verbatim in order to help in debugging config issues. This still caused failure. Once I logged a more generic message instead, the test was able to continue. (It might be helpful to add a note to the failure output to ensure you don't log the failure message verbatim.)

    2. The second error here was because the node-fetch code here was attempting to call the abort function which didn't seem to exist on the mocked request object. I didn't really dig into the code path causing this because I simply removed the dependency on node-fetch since I didn't realize that node has had native fetch support since v18.

  17. bwp91 commented on Sep 16, 2025

    @bwp91
    Contributor

    Thanks for looking into this yes it makes sense now that the testing would complain even when logging an error. I'll get this fixed.

    If you want to add the error logging back to your plugin that's totally okay 👌

  18. added
    verifieduse when a plugin meets the criteria - adds the verified badge text
    and removed on Sep 16, 2025
  19. github-actions commented on Sep 16, 2025

    @github-actions
    Contributor

    Congratulations! Your plugin has been verified!

    You can now add one of the Verified by Homebridge badges to your plugin's README:

    verified-by-homebridge

    [![verified-by-homebridge](https://badgen.net/badge/homebridge/verified/purple)](https://github.com/homebridge/homebridge/wiki/Verified-Plugins)
    

    verified-by-homebridge

    [![verified-by-homebridge](https://img.shields.io/badge/homebridge-verified-blueviolet?color=%23491F59&style=for-the-badge&logoColor=%23FFFFFF&logo=homebridge)](https://github.com/homebridge/homebridge/wiki/Verified-Plugins)
    

    Your plugin is now also eligible to display a ❤️ Donate button on its tile in the Homebridge UI. See https://github.com/homebridge/homebridge/wiki/Donation-Links for instructions.

    Interested in getting a @homebridge-plugins/ scope for your plugin? See our Homebridge Scoped Plugins program.

    If for any reason in the future you can no longer maintain your plugin, please consider transferring it to our Homebridge Plugins organization.

    Don't forget to join the official Homebridge Discord server, where plugin developers can get tips and advice from other developers and the Homebridge project team in the #plugin-development channel!

    As a verified plugin, you can request a channel in the Discord server to discuss your plugin with users and other developers. Just ask in the #plugin-development channel.

    Thank you for your contribution to the Homebridge community.

    • The Homebridge Team
  20. added a commit that references this issue on Sep 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    request-verificationverifieduse when a plugin meets the criteria - adds the verified badge text

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions