feat(scanner): enable scanner via bundled/organization config - #957
Merged
Conversation
Add support for enabling the AppMap scanner through the bundled site-config.json and organization configuration, using the same `appMap.scannerEnabled` key as the VS Code plugin. The user setting becomes a nullable override; the effective state resolves as user override -> deployment config -> disabled, mirroring the existing autoUpdateTools pattern. Applying an organization config supersedes a conflicting user override, and the settings UI becomes a tri-state combo (Yes / No / deployment default). Changes to the effective scanner state now restart the scanner CLI process and rebuild the AppMap tool window in place, so enabling it via org config takes effect without a project reload. The org-config apply path fires the change only when the effective value actually changes. The Problems View findings tab still relies on the reload notification, which now also fires for the org-config path. Assisted-by: Claude:claude-opus-4-8
There was a problem hiding this comment.
Pull request overview
Adds centralized control of the AppMap scanner enablement via bundled site-config.json and organization configuration, aligning with the VS Code plugin’s appMap.scannerEnabled key. This updates both settings resolution (tri-state user override vs deployment default) and runtime behavior so scanner enablement changes can take effect live without requiring a project reload.
Changes:
- Introduces
appMap.scannerEnabledinto deployment settings and merges enterprise/bundled values into the effective deployment config. - Converts the scanner user setting into a nullable override and updates the Settings UI to a tri-state combo (Yes / No / deployment default).
- Ensures scanner enablement changes trigger live restarts/rebuilds of scanner-dependent processes/UI, and adds/updates tests + documentation accordingly.
Reviewed changes
Copilot reviewed 17 out of 17 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| README.md | Documents centralized scanner enablement via appMap.scannerEnabled. |
| plugin-core/src/test/java/appland/enterpriseConfig/EnterpriseConfigServiceTest.java | Adds coverage for org-config-driven scanner enablement and change firing. |
| plugin-core/src/test/java/appland/deployment/AppMapDeploymentSettingsTest.java | Tests parsing/defaulting behavior for appMap.scannerEnabled. |
| plugin-core/src/test/java/appland/cli/DefaultCommandLineServiceTest.java | Updates assertions to use effective scanner state (isScannerEnabled()). |
| plugin-core/src/test/java/appland/cli/DefaultAppLandDownloadServiceTest.java | Updates deployment settings constructor usage after adding scannerEnabled field. |
| plugin-core/src/main/resources/messages/appland.properties | Adds strings for tri-state scanner enablement UI. |
| plugin-core/src/main/kotlin/appland/settings/AppMapProjectSettingsPanel.kt | Replaces scanner checkbox with tri-state ComboBox and applies nullable override logic. |
| plugin-core/src/main/java/appland/toolwindow/AppMapToolWindowFactory.java | Rebuilds tool window content when scanner enablement (or API key) changes. |
| plugin-core/src/main/java/appland/toolwindow/appmap/AppMapWindowPanel.java | Gates runtime analysis UI on effective scanner enablement. |
| plugin-core/src/main/java/appland/settings/AppMapSettingsReloadProjectListener.java | Restarts CLI processes on scanner enablement changes (plus reload notification fallback). |
| plugin-core/src/main/java/appland/settings/AppMapApplicationSettings.java | Makes scanner setting nullable and adds isScannerEnabled() effective-resolution method. |
| plugin-core/src/main/java/appland/problemsView/FindingsPanelProvider.java | Enables/disables Problems View findings tab based on effective scanner state. |
| plugin-core/src/main/java/appland/enterpriseConfig/EnterpriseConfigService.java | Clears conflicting user overrides for scannerEnabled and only fires scanner change when effective state changes. |
| plugin-core/src/main/java/appland/deployment/AppMapDeploymentSettingsService.java | Merges scannerEnabled across enterprise and bundled deployment settings. |
| plugin-core/src/main/java/appland/deployment/AppMapDeploymentSettings.java | Adds @SerializedName("appMap.scannerEnabled") field and includes it in isEmpty(). |
| plugin-core/src/main/java/appland/cli/DefaultCommandLineService.java | Gates scanner process creation on effective scanner enablement. |
| ORGANIZATION_CONFIGURATION.md | Documents appMap.scannerEnabled key and updates example config. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
🎉 This PR is included in version 0.86.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add support for enabling the AppMap scanner through the bundled site-config.json and organization configuration, using the same
appMap.scannerEnabledkey as the VS Code plugin.The user setting becomes a nullable override; the effective state resolves as user override -> deployment config -> disabled, mirroring the existing autoUpdateTools pattern. Applying an organization config supersedes a conflicting user override, and the settings UI becomes a tri-state combo (Yes / No / deployment default).
Changes to the effective scanner state now restart the scanner CLI process and rebuild the AppMap tool window in place, so enabling it via org config takes effect without a project reload. The org-config apply path fires the change only when the effective value actually changes. The Problems View findings tab still relies on the reload notification, which now also fires for the org-config path.
Assisted-by: Claude:claude-opus-4-8