Skip to content

Commit 57080ec

Browse files
authored
Merge pull request #25 from nventive/msyo/fix-prompt-details
Fix: Prompt Details UI Improvements
2 parents 9dfa5cd + 63ed9b9 commit 57080ec

File tree

5 files changed

+48
-68
lines changed

5 files changed

+48
-68
lines changed

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,18 @@ All notable changes to the "promptitude" extension will be documented in this fi
44

55
## [Unreleased]
66

7+
## [1.5.3] - 2026-01-08
8+
9+
### Fixed
10+
11+
- Fixed prompt details webview initializing with visible empty state instead of hidden state on load.
12+
- Fixed prompt content textarea being editable instead of read-only in details view.
13+
- Fixed empty state remaining visible when prompt is selected in details view.
14+
- Fixed activate button styling in prompt details view to use blue color with plus icon for better visibility and consistency.
15+
- Fixed marketplace icon not displaying on VS Code Extensions Marketplace by adding top-level icon property pointing to PNG file.
16+
17+
## [1.5.2] - 2026-01-07
18+
719
### Changed
820

921
- Renamed "chatmodes" to "agents" throughout the UI to align with VS Code's current terminology

media/main.css

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,16 @@
180180
border-color: var(--vscode-charts-green);
181181
}
182182

183+
.action-button.activate {
184+
background: var(--vscode-button-background);
185+
color: var(--vscode-button-foreground);
186+
border-color: var(--vscode-button-background);
187+
}
188+
189+
.action-button.activate:hover {
190+
background: var(--vscode-button-hoverBackground);
191+
}
192+
183193
/* Codicon fallback styles */
184194
.action-button .icon {
185195
font-size: 14px;

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22
"name": "promptitude-extension",
33
"displayName": "Promptitude",
44
"description": "Sync GitHub Copilot prompts, chatmodes and instructions from git repositories",
5-
"version": "1.5.2",
5+
"version": "1.5.3",
66
"publisher": "logientnventive",
7+
"icon":"resources/promptitude-icon.png",
78
"repository": {
89
"type": "git",
910
"url": "https://github.com/nventive/promptitude.git",

resources/promptitude-icon.png

378 Bytes
Loading

src/ui/promptDetailsWebview.ts

Lines changed: 24 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ export class PromptDetailsWebviewProvider implements vscode.WebviewViewProvider
325325
</head>
326326
<body>
327327
<div id="container">
328-
<div id="empty-state" class="empty-state">
328+
<div id="empty-state" class="empty-state" style="display: block;">
329329
<div class="empty-icon">📝</div>
330330
<h2>No Prompt Selected</h2>
331331
<p>Select a prompt from the tree view to view its details and content.</p>
@@ -346,41 +346,29 @@ export class PromptDetailsWebviewProvider implements vscode.WebviewViewProvider
346346
</div>
347347
</div>
348348
349-
<div class="description-section" id="description-section" style="display: none;">
350-
<div class="description-content" id="prompt-description"></div>
351-
</div>
349+
<div class="description-section" id="description-section" style="display: none;">
350+
<div class="description-content" id="prompt-description"></div>
351+
</div>
352352
353-
<div class="content-section">
354-
<div class="section-header">
355-
<h3>Content</h3>
356-
<div class="content-actions">
357-
<button id="save-content" class="action-button primary" style="display: none;">
358-
<span class="icon">💾</span>
359-
Save
360-
</button>
361-
<button id="reset-content" class="action-button" style="display: none;">
362-
<span class="icon">↩️</span>
363-
Reset
364-
</button>
365-
</div>
366-
</div>
367-
<textarea id="prompt-content" class="content-editor" placeholder="Prompt content will appear here..."></textarea>
368-
</div>
353+
<div class="content-section">
354+
<div class="section-header">
355+
<h3>Content</h3>
356+
</div>
357+
<textarea id="prompt-content" class="content-editor" placeholder="Prompt content will appear here..." readonly></textarea>
358+
</div>
369359
370-
<div class="info-section" id="source-section" style="display: none;">
371-
<div class="info-item">
372-
<label>Source:</label>
373-
<span id="prompt-source"></span>
374-
</div>
360+
<div class="info-section" id="source-section" style="display: none;">
361+
<div class="info-item">
362+
<label>Source:</label>
363+
<span id="prompt-source"></span>
375364
</div>
365+
</div>
376366
</div>
377367
</div>
378368
379369
<script nonce="${nonce}">
380370
const vscode = acquireVsCodeApi();
381371
let currentPrompt = null;
382-
let originalContent = '';
383-
let hasUnsavedChanges = false;
384372
385373
// DOM elements
386374
const emptyState = document.getElementById('empty-state');
@@ -394,58 +382,31 @@ export class PromptDetailsWebviewProvider implements vscode.WebviewViewProvider
394382
const sourceSection = document.getElementById('source-section');
395383
396384
const toggleSelectionBtn = document.getElementById('toggle-selection');
397-
const saveContentBtn = document.getElementById('save-content');
398-
const resetContentBtn = document.getElementById('reset-content');
399385
400386
// Event listeners
401387
toggleSelectionBtn.addEventListener('click', () => {
402388
vscode.postMessage({ type: 'toggleSelection' });
403389
});
404390
405-
saveContentBtn.addEventListener('click', () => {
406-
vscode.postMessage({
407-
type: 'saveContent',
408-
content: promptContent.value
409-
});
410-
hasUnsavedChanges = false;
411-
updateSaveButtons();
412-
});
413-
414-
resetContentBtn.addEventListener('click', () => {
415-
promptContent.value = originalContent;
416-
hasUnsavedChanges = false;
417-
updateSaveButtons();
418-
});
419-
420-
promptContent.addEventListener('input', () => {
421-
hasUnsavedChanges = promptContent.value !== originalContent;
422-
updateSaveButtons();
423-
});
424-
425-
function updateSaveButtons() {
426-
saveContentBtn.style.display = hasUnsavedChanges ? 'inline-flex' : 'none';
427-
resetContentBtn.style.display = hasUnsavedChanges ? 'inline-flex' : 'none';
428-
}
429-
430391
function updateSelectionButton(active) {
431392
const icon = toggleSelectionBtn.querySelector('.icon');
432393
if (active) {
433394
icon.textContent = '✓';
434395
toggleSelectionBtn.classList.add('selected');
396+
toggleSelectionBtn.classList.remove('activate');
435397
toggleSelectionBtn.title = 'Deactivate';
436398
} else {
437-
icon.textContent = '';
399+
icon.textContent = '+';
438400
toggleSelectionBtn.classList.remove('selected');
401+
toggleSelectionBtn.classList.add('activate');
439402
toggleSelectionBtn.title = 'Activate';
440403
}
441404
}
442405
443406
function showPrompt(data) {
444-
currentPrompt = data.prompt;
445-
originalContent = data.prompt.content;
446-
447-
emptyState.style.display = 'none';
448-
promptDetails.style.display = 'block';
407+
currentPrompt = data.prompt;
408+
emptyState.style.display = 'none';
409+
promptDetails.style.display = 'block';
449410
450411
// Update header
451412
promptTitle.textContent = data.prompt.name;
@@ -488,10 +449,6 @@ export class PromptDetailsWebviewProvider implements vscode.WebviewViewProvider
488449
489450
// Update selection button
490451
updateSelectionButton(data.prompt.active);
491-
492-
// Reset save state
493-
hasUnsavedChanges = false;
494-
updateSaveButtons();
495452
}
496453
497454
function extractRepositoryName(url) {
@@ -508,11 +465,8 @@ export class PromptDetailsWebviewProvider implements vscode.WebviewViewProvider
508465
509466
function clearPrompt() {
510467
currentPrompt = null;
511-
originalContent = '';
512468
emptyState.style.display = 'block';
513469
promptDetails.style.display = 'none';
514-
hasUnsavedChanges = false;
515-
updateSaveButtons();
516470
}
517471
518472
// Handle messages from extension
@@ -537,6 +491,9 @@ export class PromptDetailsWebviewProvider implements vscode.WebviewViewProvider
537491
break;
538492
}
539493
});
494+
495+
// Initialize with empty state on load
496+
clearPrompt();
540497
</script>
541498
</body>
542499
</html>`;

0 commit comments

Comments
 (0)