diff --git a/src/LightQueryProfiler.WinFormsApp/LightQueryProfiler.WinFormsApp.csproj b/src/LightQueryProfiler.WinFormsApp/LightQueryProfiler.WinFormsApp.csproj
index fe80668..e4d2fcd 100644
--- a/src/LightQueryProfiler.WinFormsApp/LightQueryProfiler.WinFormsApp.csproj
+++ b/src/LightQueryProfiler.WinFormsApp/LightQueryProfiler.WinFormsApp.csproj
@@ -8,7 +8,7 @@
enable
true
LightQueryProfiler
- 1.2.0-dev.5
+ 1.2.0
1.2.0
1.2.0
Icons\light-query-profiler.ico
diff --git a/vscode-extension/CHANGELOG.md b/vscode-extension/CHANGELOG.md
index 83133bf..06c4da9 100644
--- a/vscode-extension/CHANGELOG.md
+++ b/vscode-extension/CHANGELOG.md
@@ -5,6 +5,15 @@ All notable changes to the Light Query Profiler extension will be documented in
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [1.0.1] - 2026-03-24
+
+### Changed
+- Welcome message now only appears on first activation after installation
+- Improved user experience by preventing repetitive notification on every VS Code startup
+
+### Technical
+- Implemented `globalState` persistence for welcome message display tracking
+
## [1.0.0] - 2026-03-21
### Added
diff --git a/vscode-extension/package.json b/vscode-extension/package.json
index 78a520a..1159371 100644
--- a/vscode-extension/package.json
+++ b/vscode-extension/package.json
@@ -2,7 +2,7 @@
"name": "light-query-profiler",
"displayName": "Light Query Profiler",
"description": "SQL Server and Azure SQL Database query profiler for VS Code",
- "version": "1.0.0",
+ "version": "1.0.1",
"publisher": "brandochn",
"author": {
"name": "Hildebrando Chávez",
diff --git a/vscode-extension/src/extension.ts b/vscode-extension/src/extension.ts
index dc7835d..33d52b0 100644
--- a/vscode-extension/src/extension.ts
+++ b/vscode-extension/src/extension.ts
@@ -149,10 +149,16 @@ export async function activate(
activationReady = true;
log.info('Light Query Profiler extension activated successfully');
- // Show welcome message (fire-and-forget — do not await so activate() returns immediately)
- void vscode.window.showInformationMessage(
- "Light Query Profiler is ready! Run 'Show SQL Profiler' command to open the profiler.",
- );
+ // Show welcome message only on first activation
+ const hasShownWelcomeMessage = context.globalState.get('hasShownWelcomeMessage', false);
+ if (!hasShownWelcomeMessage) {
+ void vscode.window.showInformationMessage(
+ "Light Query Profiler is ready! Run 'Show SQL Profiler' command to open the profiler.",
+ ).then(() => {
+ // Mark as shown after user dismisses or acknowledges the message
+ void context.globalState.update('hasShownWelcomeMessage', true);
+ });
+ }
} catch (error) {
activationReady = true; // Stop the deferred-panel polling
const errorMessage = error instanceof Error ? error.message : String(error);