Scan timing: clone 3.68s · analysis 4.93s · 3.5 MB · GitHub API rate-limit (preflight)
https://github.com/lasswellt/govee-homeassistant
· scanned 2026-06-05 15:05 UTC (5 days, 2 hours ago)
· 10 languages
225 raw signals (93 security + 132 graph) 70th percentile · Python · medium (20-100K LoC) System graph score 80 (lower by 4)
Last scanned 5 days, 2 hours ago · v2 · 92 actionable findings from 2 signal sources. 42 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
| Component | Sub-score | Weight | Contribution |
|---|---|---|---|
structure_score |
75.0 | 0.15 | 11.25 |
security_score |
55.9 | 0.25 | 13.97 |
testing_score |
100.0 | 0.20 | 20.00 |
documentation_score |
99.6 | 0.15 | 14.94 |
practices_score |
73.0 | 0.15 | 10.95 |
code_quality |
49.7 | 0.10 | 4.97 |
| Overall | 1.00 | 76.1 |
All 1840 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
_get_keys |
software | healthy | tests/test_translations.py:7 |
test_strings_and_en_json_have_identical_keys |
software | healthy | tests/test_translations.py:18 |
test_strings_json_is_valid |
software | healthy | tests/test_translations.py:48 |
test_en_json_is_valid |
software | healthy | tests/test_translations.py:63 |
_make_segment_entity |
software | healthy | tests/test_segment.py:24 |
test_turn_off_sends_command_when_device_on |
software | healthy | tests/test_segment.py:73 |
test_turn_off_skipped_when_power_off_pending |
software | healthy | tests/test_segment.py:88 |
test_turn_off_skipped_when_device_already_off |
software | healthy | tests/test_segment.py:97 |
test_turn_off_skipped_when_both_conditions |
software | healthy | tests/test_segment.py:106 |
test_local_state_updated_when_command_sent |
software | healthy | tests/test_segment.py:115 |
test_local_state_updated_when_command_skipped |
software | healthy | tests/test_segment.py:125 |
test_turn_off_when_no_state_exists |
software | healthy | tests/test_segment.py:135 |
test_turn_off_yields_before_flag_check |
software | healthy | tests/test_segment.py:145 |
tracking_sleep |
software | healthy | tests/test_segment.py:152 |
test_concurrent_turn_off_with_main_entity |
software | healthy | tests/test_segment.py:167 |
mock_control |
software | healthy | tests/test_segment.py:189 |
main_turn_off |
software | healthy | tests/test_segment.py:214 |
run_both |
software | healthy | tests/test_segment.py:220 |
test_govee_api_error |
software | healthy | tests/test_api_client.py:28 |
test_govee_api_error_no_code |
software | healthy | tests/test_api_client.py:34 |
test_govee_auth_error |
software | healthy | tests/test_api_client.py:39 |
test_govee_auth_error_custom_message |
software | healthy | tests/test_api_client.py:45 |
test_govee_rate_limit_error |
software | healthy | tests/test_api_client.py:51 |
test_govee_rate_limit_error_with_retry |
software | healthy | tests/test_api_client.py:58 |
test_govee_connection_error |
software | healthy | tests/test_api_client.py:63 |
test_govee_device_not_found_error |
software | healthy | tests/test_api_client.py:69 |
test_govee_device_not_found_error_default |
software | healthy | tests/test_api_client.py:75 |
mock_session |
software | healthy | tests/test_api_client.py:91 |
client |
software | healthy | tests/test_api_client.py:98 |
test_client_creation |
software | healthy | tests/test_api_client.py:102 |
test_get_headers |
software | healthy | tests/test_api_client.py:107 |
test_rate_limit_tracking |
software | healthy | tests/test_api_client.py:115 |
test_rate_limit_tracking_invalid |
software | healthy | tests/test_api_client.py:128 |
test_rate_limit_initial_values |
software | healthy | tests/test_api_client.py:140 |
test_close_does_not_close_external_session |
software | healthy | tests/test_api_client.py:148 |
test_close_closes_owned_session |
software | healthy | tests/test_api_client.py:171 |
test_device_response_structure |
software | healthy | tests/test_api_client.py:198 |
test_state_response_structure |
software | healthy | tests/test_api_client.py:217 |
test_scenes_response_structure |
software | healthy | tests/test_api_client.py:240 |
test_power_command_payload |
software | healthy | tests/test_api_client.py:273 |
test_power_off_command_payload |
software | healthy | tests/test_api_client.py:282 |
test_power_on_command_payload |
software | healthy | tests/test_api_client.py:287 |
test_auth_error_response |
software | healthy | tests/test_api_client.py:301 |
test_rate_limit_response |
software | healthy | tests/test_api_client.py:310 |
test_device_not_found_response |
software | healthy | tests/test_api_client.py:318 |
test_server_error_response |
software | healthy | tests/test_api_client.py:329 |
mock_api_client |
software | healthy | tests/conftest.py:49 |
mock_iot_credentials |
software | healthy | tests/conftest.py:64 |
light_capabilities |
software | healthy | tests/conftest.py:79 |
rgbic_capabilities |
software | healthy | tests/conftest.py:111 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
TestSegmentTurnOffLogic |
software | healthy | tests/test_segment.py:69 |
TestExceptions |
software | healthy | tests/test_api_client.py:25 |
TestGoveeApiClient |
software | healthy | tests/test_api_client.py:87 |
TestResponseHandling |
software | healthy | tests/test_api_client.py:195 |
TestCommandPayloads |
software | healthy | tests/test_api_client.py:270 |
TestErrorResponses |
software | healthy | tests/test_api_client.py:298 |
TestRGBColor |
software | healthy | tests/test_models.py:47 |
TestGoveeCapability |
software | healthy | tests/test_models.py:99 |
TestGoveeDevice |
software | healthy | tests/test_models.py:203 |
TestGoveeDeviceState |
software | healthy | tests/test_models.py:414 |
TestCommands |
software | healthy | tests/test_models.py:983 |
TestKettleDetection |
software | healthy | tests/test_kettle.py:53 |
TestCredsRoundtrip |
software | healthy | tests/test_init.py:37 |
TestMigrateEntry |
software | healthy | tests/test_init.py:79 |
TestPersistIotCredentials |
software | healthy | tests/test_init.py:204 |
TestCoordinatorLogic |
software | healthy | tests/test_coordinator.py:100 |
TestCommandGeneration |
software | healthy | tests/test_coordinator.py:146 |
TestDeviceFiltering |
software | healthy | tests/test_coordinator.py:182 |
TestSceneCaching |
software | healthy | tests/test_coordinator.py:205 |
TestStateManagement |
software | healthy | tests/test_coordinator.py:253 |
TestErrorHandling |
software | healthy | tests/test_coordinator.py:321 |
TestMqttIntegration |
software | healthy | tests/test_coordinator.py:359 |
TestParallelStateFetching |
software | healthy | tests/test_coordinator.py:408 |
TestOptimisticUpdates |
software | healthy | tests/test_coordinator.py:452 |
TestDeviceStateCreation |
software | healthy | tests/test_coordinator.py:496 |
TestCoordinatorDeviceRegistry |
software | healthy | tests/test_coordinator.py:532 |
TestCoordinatorSceneManagement |
software | healthy | tests/test_coordinator.py:559 |
TestPowerOffPendingFlag |
software | healthy | tests/test_coordinator.py:596 |
TestCleanupDeviceIdExtraction |
software | healthy | tests/test_coordinator.py:684 |
TestCleanupSegmentModeLogic |
software | healthy | tests/test_coordinator.py:774 |
TestClearSceneLogic |
software | healthy | tests/test_coordinator.py:865 |
TestStatePreservationAcrossApiPoll |
software | healthy | tests/test_coordinator.py:999 |
TestSkuFromBleName |
software | healthy | tests/test_coordinator.py:1202 |
TestBleAdvertisementHandling |
software | healthy | tests/test_coordinator.py:1247 |
TestTryBleCommand |
software | healthy | tests/test_coordinator.py:1545 |
TestClearSceneOnHdmiSyncBox |
software | healthy | tests/test_coordinator.py:1639 |
TestSensorReadingChangeTracking |
software | healthy | tests/test_coordinator.py:1781 |
TestCoordinatorAlwaysUpdate |
software | healthy | tests/test_coordinator.py:1856 |
TestThermometerDetection |
software | healthy | tests/test_thermometer.py:63 |
TestThermometerStateParsing |
software | healthy | tests/test_thermometer.py:103 |
TestTemperatureSensorFahrenheitConversion |
software | healthy | tests/test_thermometer.py:175 |
TestGoveeFanEntity |
software | healthy | tests/test_fan.py:27 |
TestGoveeFanEntityControls |
software | healthy | tests/test_fan.py:136 |
TestGoveeFanEntity8Speed |
software | healthy | tests/test_fan.py:301 |
TestGoveeCeilingFanEntity |
software | healthy | tests/test_fan.py:406 |
TestCalculateChecksum |
software | healthy | tests/test_ble_packet.py:29 |
TestBuildPacket |
software | healthy | tests/test_ble_packet.py:77 |
TestEncodePacketBase64 |
software | healthy | tests/test_ble_packet.py:146 |
TestBuildMusicModePacket |
software | healthy | tests/test_ble_packet.py:200 |
TestMusicModePacketIntegration |
software | healthy | tests/test_ble_packet.py:303 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
TESTING.md |
software | healthy | TESTING.md |
ARCHITECTURE.md |
software | healthy | ARCHITECTURE.md |
README.md |
software | healthy | README.md |
CLAUDE.md |
software | healthy | CLAUDE.md |
CONTRIBUTING.md |
software | healthy | CONTRIBUTING.md |
hacs.json |
software | healthy | hacs.json |
.pre-commit-config.yaml |
software | healthy | .pre-commit-config.yaml |
test_translations.py |
software | healthy | tests/test_translations.py |
test_segment.py |
software | healthy | tests/test_segment.py |
test_api_client.py |
software | healthy | tests/test_api_client.py |
__init__.py |
software | healthy | tests/__init__.py |
conftest.py |
software | healthy | tests/conftest.py |
test_models.py |
software | healthy | tests/test_models.py |
test_kettle.py |
software | healthy | tests/test_kettle.py |
test_init.py |
software | healthy | tests/test_init.py |
test_coordinator.py |
software | healthy | tests/test_coordinator.py |
test_thermometer.py |
software | healthy | tests/test_thermometer.py |
test_fan.py |
software | healthy | tests/test_fan.py |
test_ble_packet.py |
software | healthy | tests/test_ble_packet.py |
test_diagnostics.py |
software | healthy | tests/test_diagnostics.py |
test_heater_autostop.py |
software | healthy | tests/test_heater_autostop.py |
test_config_flow.py |
software | healthy | tests/test_config_flow.py |
test_light.py |
software | healthy | tests/test_light.py |
test_scene_cache.py |
software | healthy | tests/test_scene_cache.py |
test_diagnostic_entities.py |
software | healthy | tests/test_diagnostic_entities.py |
test_auth.py |
software | healthy | tests/test_auth.py |
test_mqtt_control.py |
software | healthy | tests/test_mqtt_control.py |
test_mqtt_multisync.py |
software | healthy | tests/test_mqtt_multisync.py |
test_api_ble.py |
software | healthy | tests/test_api_ble.py |
test_grouped_segment.py |
software | healthy | tests/test_grouped_segment.py |
test_transport_health.py |
software | healthy | tests/test_transport_health.py |
test_humidifier.py |
software | healthy | tests/test_humidifier.py |
test_heater.py |
software | healthy | tests/test_heater.py |
test_purifier.py |
software | healthy | tests/test_purifier.py |
govee-protocol-reference.md |
software | healthy | docs/govee-protocol-reference.md |
2026-05-30_mqtt-last-received-status-fields.md |
software | healthy | docs/_research/2026-05-30_mqtt-last-received-status-fields.… |
2026-04-25_ble-adapter-demotion.md |
software | healthy | docs/_research/2026-04-25_ble-adapter-demotion.md |
2026-06-04_diagnostic-data-sensors.md |
software | healthy | docs/_research/2026-06-04_diagnostic-data-sensors.md |
2026-06-04_govee-ha-integration-landscape.md |
software | healthy | docs/_research/2026-06-04_govee-ha-integration-landscape.md |
2026-06-04_h5109-thermometer-stale-update.md |
software | healthy | docs/_research/2026-06-04_h5109-thermometer-stale-update.md |
2026-05-28_custom-device-grouping.md |
software | healthy | docs/_research/2026-05-28_custom-device-grouping.md |
2026-06-04_h5059-h5044-leak-sensor-support.md |
software | healthy | docs/_research/2026-06-04_h5059-h5044-leak-sensor-support.md |
2026-04-09_multi-transport-single-entity.md |
software | healthy | docs/_research/2026-04-09_multi-transport-single-entity.md |
2026-03-30_govee-aws-iot.md |
software | healthy | docs/_research/2026-03-30_govee-aws-iot.md |
2026-04-08_pr-37-validation.md |
software | healthy | docs/_research/2026-04-08_pr-37-validation.md |
2026-04-13_open-bugs-triage.md |
software | healthy | docs/_research/2026-04-13_open-bugs-triage.md |
2026-06-04_mqtt-push-control-latency.md |
software | healthy | docs/_research/2026-06-04_mqtt-push-control-latency.md |
2026-04-08_ha-ble-integration-patterns.md |
software | healthy | docs/_research/2026-04-08_ha-ble-integration-patterns.md |
2026-06-04_seo-discoverability-best-option.md |
software | healthy | docs/_research/2026-06-04_seo-discoverability-best-option.md |
2026-04-06_client-id-fix-validation.md |
software | healthy | docs/_research/2026-04-06_client-id-fix-validation.md |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
generic_api_key::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
generic_api_key::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
generic_api_key::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
generic_api_key::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
generic_api_key::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
generic_api_key::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
generic_api_key::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
password_literal::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
password_literal::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
password_literal::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
password_literal::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
password_literal::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
password_literal::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
password_literal::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
password_literal::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
password_literal::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
password_literal::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
password_literal::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
password_literal::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
password_literal::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
password_literal::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
password_literal::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
password_literal::tests/test_config_flow.py |
security | healthy | tests/test_config_flow.py |
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
software | healthy | tests |
docs |
software | healthy | docs |
_research |
software | healthy | docs/_research |
scripts |
software | healthy | scripts |
custom_components |
software | healthy | custom_components |
govee |
software | healthy | custom_components/govee |
platforms |
software | healthy | custom_components/govee/platforms |
models |
software | healthy | custom_components/govee/models |
api |
software | healthy | custom_components/govee/api |
translations |
software | healthy | custom_components/govee/translations |
protocols |
software | healthy | custom_components/govee/protocols |
.github |
software | healthy | .github |
ISSUE_TEMPLATE |
software | healthy | .github/ISSUE_TEMPLATE |
workflows |
software | healthy | .github/workflows |
| Label | Layer | Status | Path |
|---|---|---|---|
mypy |
cicd | healthy | .github/workflows/type-check.yaml |
check-branch |
cicd | healthy | .github/workflows/rebase_dependencies.yml |
rebase |
cicd | healthy | .github/workflows/rebase_dependencies.yml |
uptime |
cicd | healthy | .github/workflows/uptime.yml |
install-stats |
cicd | healthy | .github/workflows/install-stats.yml |
style |
cicd | healthy | .github/workflows/style.yml |
hacs |
cicd | healthy | .github/workflows/hacs-hass.yaml |
hassfest |
cicd | healthy | .github/workflows/hacs-hass.yaml |
test |
cicd | healthy | .github/workflows/tox.yaml |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::type-check |
cicd | healthy | .github/workflows/type-check.yaml |
gha::rebase_dependencies |
cicd | healthy | .github/workflows/rebase_dependencies.yml |
gha::uptime |
cicd | healthy | .github/workflows/uptime.yml |
gha::install-stats |
cicd | healthy | .github/workflows/install-stats.yml |
gha::style |
cicd | healthy | .github/workflows/style.yml |
gha::hacs-hass |
cicd | healthy | .github/workflows/hacs-hass.yaml |
gha::tox |
cicd | healthy | .github/workflows/tox.yaml |
| Label | Layer | Status | Path |
|---|---|---|---|
port:11 |
network | healthy | custom_components/govee/services.yaml |
port:06 |
network | healthy | .github/workflows/install-stats.yml |
port:25 |
network | healthy | .github/workflows/install-stats.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
CODECOV_TOKEN |
cicd | healthy | — |
GITHUB_TOKEN |
cicd | healthy | — |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-w_x_tqpy |
software | healthy | /tmp/repobility-clone-w_x_tqpy |
| Label | Layer | Status | Path |
|---|---|---|---|
vps::aws |
hardware | healthy | tests/test_models.py |
This page is publicly accessible at:
https://repobility.com/scan/1ad88394-4a6a-41d3-9167-9b887fb4efa2/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/1ad88394-4a6a-41d3-9167-9b887fb4efa2/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.