@@ -2499,9 +2499,10 @@ export class UiProvider implements vscode.WebviewViewProvider {
24992499 </div>
25002500 </div>
25012501
2502- <div class="section">
2503- <h3>🔍 Scan Configuration</h3>
2504- <div class="form-group">
2502+ <div class="section" id="scan-configuration">
2503+ <h3 class="collapsible-header collapsed" onclick="toggleScanConfigSection()">🔍 Scan Configuration <span class="toggle-icon">▼</span></h3>
2504+ <div id="scan-config-content" class="collapsible-content collapsed">
2505+ <div class="form-group">
25052506 <label for="suites">Query Suite:</label>
25062507 <div id="suitesContainer">
25072508 <div class="suite-radio">
@@ -2550,10 +2551,12 @@ export class UiProvider implements vscode.WebviewViewProvider {
25502551 </div>
25512552 <div class="help-text">Select the threat model to focus the analysis on specific security scenarios</div>
25522553 </div>
2554+ </div>
25532555 </div>
2554- <div class="section scan-section">
2555- <h3>🔤 Language Selection</h3>
2556- <div class="form-group">
2556+ <div class="section" id="languages-selection">
2557+ <h3 class="collapsible-header collapsed" onclick="toggleLanguageSection()">🔤 Language Selection <span class="toggle-icon">▼</span></h3>
2558+ <div id="language-content" class="collapsible-content collapsed">
2559+ <div class="form-group">
25572560 <label for="languages">Programming Languages:</label>
25582561 <div id="languagesContainer">
25592562 <div id="languagesList" style="display: none;">
@@ -2567,6 +2570,7 @@ export class UiProvider implements vscode.WebviewViewProvider {
25672570 </div>
25682571 </div>
25692572 <div class="help-text">Select the programming languages to analyze. Languages are auto-detected from your CodeQL CLI installation.</div>
2573+ </div>
25702574 </div>
25712575 </div>
25722576 </div>
@@ -2855,10 +2859,17 @@ export class UiProvider implements vscode.WebviewViewProvider {
28552859
28562860 // Get references to the sections we need to show/hide
28572861 const scanSettings = document.getElementById('scanSettings');
2862+ const securityDashboard = document.getElementById('summarySection');
2863+ const scanConfiguration = document.getElementById('scan-configuration');
2864+ const scanConfigContent = document.getElementById('scan-config-content');
2865+ const scanConfigHeader = document.querySelector('#scan-configuration h3');
2866+ const languageSection = document.getElementById('languages-selection');
2867+ const languageContent = document.getElementById('language-content');
2868+ const languageHeader = document.querySelector('#languages-selection h3');
28582869
28592870 if (success) {
28602871 if (enabled) {
2861- // CodeQL is enabled - collapse the repository section
2872+ // CodeQL is enabled
28622873 statusMessage.style.backgroundColor = 'rgba(40, 167, 69, 0.1)';
28632874 statusMessage.style.border = '1px solid #28a745';
28642875 statusMessage.style.color = '#28a745';
@@ -2870,19 +2881,27 @@ export class UiProvider implements vscode.WebviewViewProvider {
28702881
28712882 // Show all CodeQL-dependent sections
28722883 if (scanSettings) scanSettings.style.display = 'block';
2884+ if (securityDashboard) securityDashboard.style.display = 'block';
2885+ if (scanConfiguration) scanConfiguration.style.display = 'block';
2886+ if (languageSection) languageSection.style.display = 'block';
2887+
2888+ // Keep sections collapsed by default, but make them visible
2889+ if (scanConfigHeader) scanConfigHeader.classList.add('collapsed');
2890+ if (scanConfigContent) scanConfigContent.classList.add('collapsed');
2891+ if (languageHeader) languageHeader.classList.add('collapsed');
2892+ if (languageContent) languageContent.classList.add('collapsed');
28732893 } else {
2874- // CodeQL is not enabled - expand the repository section
2894+ // CodeQL is not enabled
28752895 statusMessage.style.backgroundColor = 'rgba(255, 193, 7, 0.1)';
28762896 statusMessage.style.border = '1px solid #ffc107';
28772897 statusMessage.style.color = '#ffc107';
28782898 statusMessage.innerHTML = '⚠️ ' + message + '<br><small>You must enable CodeQL in repository settings before scanning.</small>';
28792899
2880- // Expand the repository section to allow user to fix configuration
2881- if (repoHeader) repoHeader.classList.remove('collapsed');
2882- if (repoContent) repoContent.classList.remove('collapsed');
2883-
28842900 // Hide CodeQL-dependent sections
28852901 if (scanSettings) scanSettings.style.display = 'none';
2902+ if (securityDashboard) securityDashboard.style.display = 'none';
2903+ if (scanConfiguration) scanConfiguration.style.display = 'none';
2904+ if (languageSection) languageSection.style.display = 'none';
28862905 }
28872906 } else {
28882907 // Error checking CodeQL status
@@ -2891,6 +2910,12 @@ export class UiProvider implements vscode.WebviewViewProvider {
28912910 statusMessage.style.color = '#dc3545';
28922911 statusMessage.innerHTML = '❌ ' + message;
28932912
2913+ // Hide CodeQL-dependent sections on error
2914+ if (scanSettings) scanSettings.style.display = 'none';
2915+ if (securityDashboard) securityDashboard.style.display = 'none';
2916+ if (scanConfiguration) scanConfiguration.style.display = 'none';
2917+ if (languageSection) languageSection.style.display = 'none';
2918+
28942919 // Expand the repository section to allow user to fix configuration
28952920 if (repoHeader) repoHeader.classList.remove('collapsed');
28962921 if (repoContent) repoContent.classList.remove('collapsed');
@@ -2931,6 +2956,26 @@ export class UiProvider implements vscode.WebviewViewProvider {
29312956 }
29322957 }
29332958
2959+ function toggleScanConfigSection() {
2960+ const configHeader = document.querySelector('#scan-configuration h3');
2961+ const configContent = document.getElementById('scan-config-content');
2962+
2963+ if (configHeader && configContent) {
2964+ configHeader.classList.toggle('collapsed');
2965+ configContent.classList.toggle('collapsed');
2966+ }
2967+ }
2968+
2969+ function toggleLanguageSection() {
2970+ const langHeader = document.querySelector('#languages-selection h3');
2971+ const langContent = document.getElementById('language-content');
2972+
2973+ if (langHeader && langContent) {
2974+ langHeader.classList.toggle('collapsed');
2975+ langContent.classList.toggle('collapsed');
2976+ }
2977+ }
2978+
29342979 function runLocalScan() {
29352980 const scanButton = document.getElementById('scanButton');
29362981 scanButton.disabled = true;
0 commit comments