Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 3 additions & 6 deletions .Jules/palette.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
## $(date +%Y-%m-%d) - VS Code Concurrent Loading States
**Learning:** Overlapping background operations (like file saves and chat responses) can prematurely clear loading indicators if a simple boolean flag is used for state tracking. This causes screen readers to announce incorrect idle states while work is still ongoing.
**Action:** Always use a reference counter (`busyCount`) instead of a boolean for shared UI loading states that map to concurrent async operations.
## 2026-04-19 - VS Code Persistent Error States
**Learning:** Persistent error states in VS Code status bars should not be implicitly cleared by concurrent async completion handlers. When overlapping background tasks share UI loading indicators, decoupling the error boolean from the loading counter is necessary to ensure screen readers do not incorrectly announce error resolution when background tasks complete.
**Action:** Always decouple persistent error state booleans from async reference counters, and require explicit user interaction (e.g. clicking the status bar) to dismiss the error.
## 2026-04-26 - VS Code Interactive Status Bar Dismissal
**Learning:** Dismissing a persistent error state from the status bar via the bound command effectively clears the error state visually, but screen readers might not immediately catch the state change unless explicitly decoupled and re-announced or when the state simply clears via explicit action. In our case, clearing error via the output channel explicitly solves this.
**Action:** Always provide explicit user interactions to dismiss persistent error states.
7 changes: 7 additions & 0 deletions pr_body.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
πŸ’‘ What: Added explicit visual feedback in the Output Channel when the user dismisses a persistent error state via the status bar. Replaced direct assignment of `isError` with the dedicated `setError` state updater for improved state-handling semantics.

🎯 Why: To improve the user experience by providing a reassuring confirmation in the logs that the error has been acknowledged and dismissed. Additionally, utilizing the correct state-handling method avoids relying on side-effect updates.

πŸ“Έ Before/After: Before, dismissing an error via clicking the status bar silently reset the flag and refreshed the UI. After, clicking the status bar logs a clear visual indication ('βœ“ Error state cleared by user') if an error state was active.

β™Ώ Accessibility: Ensures that users and screen readers navigating through the interaction logs receive confirmation of error resolution.
6 changes: 4 additions & 2 deletions src/ledgermind/vscode/src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,10 @@ export function activate(context: vscode.ExtensionContext) {

context.subscriptions.push(vscode.commands.registerCommand(showOutputCommandId, () => {
outputChannel.show();
isError = false; // Clear error state when logs are opened
updateStatusBar();
if (isError) {
outputChannel.appendLine('βœ“ Error state cleared by user');
}
setError(false); // Clear error state when logs are opened
}));

// ==========================================
Expand Down
Loading