Skip to content

Commit ab7f8b0

Browse files
committed
Reduce notification popups in Roopik extension
Replaces several user-facing notification popups with logger calls or removes them entirely in the Roopik extension. This change aims to reduce notification noise by logging info and warning messages instead of showing popups, and by omitting non-essential notifications for actions like import 'coming soon', canvas deletion, renaming, and project removal. Error notifications remain to inform users of failures.
1 parent 75f8293 commit ab7f8b0

5 files changed

Lines changed: 9 additions & 19 deletions

File tree

extensions/roopik/src/canvasPanel.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -518,12 +518,14 @@ export class CanvasPanel implements vscode.Disposable {
518518
level: 'info' | 'warning' | 'error';
519519
message: string;
520520
}): void {
521+
// Log to output channel instead of showing notification popup
521522
switch (payload.level) {
522523
case 'info':
523-
vscode.window.showInformationMessage(payload.message);
524+
this.logger.info(payload.message);
524525
break;
525526
case 'warning':
526-
vscode.window.showWarningMessage(payload.message);
527+
// vscode.window.showWarningMessage(payload.message);
528+
this.logger.warn(payload.message);
527529
break;
528530
case 'error':
529531
vscode.window.showErrorMessage(payload.message);

extensions/roopik/src/config.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import * as fs from 'fs';
77
import * as path from 'path';
8-
import * as vscode from 'vscode';
98
import { Logger } from './logger';
109

1110
/**
@@ -205,10 +204,7 @@ export class ConfigManager {
205204
return this.mergeWithDefaults(userConfig);
206205
}
207206
} catch (error) {
208-
this.logger.error('Failed to load config', error);
209-
vscode.window.showWarningMessage(
210-
'Failed to load Roopik config. Using defaults.'
211-
);
207+
this.logger.error('Failed to load config, using defaults', error);
212208
}
213209

214210
// Return default config if file doesn't exist or failed to load
@@ -274,7 +270,7 @@ export class ConfigManager {
274270
this.logger.info('Configuration updated successfully');
275271
} catch (error) {
276272
this.logger.error('Failed to save config', error);
277-
vscode.window.showErrorMessage('Failed to save Roopik configuration.');
273+
throw error;
278274
}
279275
}
280276

src/vs/workbench/contrib/roopik/browser/commands/browserCommands.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -212,10 +212,6 @@ export function registerBrowserCommands(): void {
212212
}
213213

214214
const projectPath = args.projectPath;
215-
const projectName = projectPath.split(/[\\/]/).pop() || 'Project';
216-
217-
// Show starting notification
218-
notificationService.info(`Starting project: ${projectName}...`);
219215

220216
try {
221217
// ============================================

src/vs/workbench/contrib/roopik/browser/commands/importCommands.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,7 @@ export function registerImportCommands(): void {
139139
case 'github':
140140
case 'figma':
141141
case 'third-party':
142-
notificationService.info(
143-
localize('roopik.import.comingSoon', '{0} import is coming soon!', selectedSource.label.replace(/\$\([^)]+\)\s*/, ''))
144-
);
142+
// Coming soon - no notification needed
145143
break;
146144
}
147145
}

src/vs/workbench/contrib/roopik/browser/roopikViewPane.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import { localize, localize2 } from '../../../../nls.js';
77
import { Disposable } from '../../../../base/common/lifecycle.js';
8+
import { mainWindow } from '../../../../base/browser/window.js';
89
import { IWorkbenchContribution } from '../../../common/contributions.js';
910
import { Registry } from '../../../../platform/registry/common/platform.js';
1011
import { IViewsRegistry, IViewDescriptor, Extensions, ViewContainer, IViewContainersRegistry, ViewContainerLocation, IViewDescriptorService } from '../../../common/views.js';
@@ -429,7 +430,6 @@ export class RoopikDashboardView extends ViewPane {
429430
if (confirmed === canvasName) {
430431
try {
431432
await this.canvasService.deleteCanvas(canvasId);
432-
this.notificationService.info(localize('roopik.deleteCanvas.success', 'Canvas "{0}" deleted', canvasName));
433433
} catch (err) {
434434
const errorMsg = err instanceof Error ? err.message : String(err);
435435
this.notificationService.error(localize('roopik.deleteCanvas.error', 'Failed to delete canvas: {0}', errorMsg));
@@ -456,7 +456,6 @@ export class RoopikDashboardView extends ViewPane {
456456
if (newName && newName !== currentName) {
457457
try {
458458
await this.canvasService.updateCanvas(canvasId, { name: newName });
459-
this.notificationService.info(localize('roopik.renameCanvas.success', 'Canvas renamed to "{0}"', newName));
460459
} catch (err) {
461460
const errorMsg = err instanceof Error ? err.message : String(err);
462461
this.notificationService.error(localize('roopik.renameCanvas.error', 'Failed to rename canvas: {0}', errorMsg));
@@ -602,7 +601,6 @@ export class RoopikDashboardView extends ViewPane {
602601
private async deleteProject(projectId: string, projectName: string): Promise<void> {
603602
try {
604603
await this.projectStorageService.deleteProject(projectId);
605-
this.notificationService.info(localize('roopik.deleteProject.success', 'Removed "{0}" from recent projects', projectName));
606604
} catch (err) {
607605
const errorMsg = err instanceof Error ? err.message : String(err);
608606
this.notificationService.error(localize('roopik.deleteProject.error', 'Failed to remove project: {0}', errorMsg));
@@ -835,7 +833,7 @@ export class RoopikDashboardView extends ViewPane {
835833
50% { transform: scale(1.15); }
836834
}
837835
`;
838-
document.head.appendChild(style);
836+
mainWindow.document.head.appendChild(style);
839837
RoopikDashboardView.animationsInjected = true;
840838
}
841839

0 commit comments

Comments
 (0)