From 0742e54f986b7a3b6b4996c520f2b1fbb1f8ab8d Mon Sep 17 00:00:00 2001 From: "bobo.yang" Date: Tue, 16 May 2023 22:06:43 +0800 Subject: [PATCH] Add welcome.html for displaying when no Git repo is open This commit adds a new welcome.html file to display a message to the user when no Git repository is open. The message informs the user that DevChat is designed for answering questions about Git repositories and asks them to open a Git repository folder to start using DevChat. --- package.json | 2 +- src/handler/historyMessages.ts | 18 ++++++++++++++++- src/panel/devchatView.ts | 35 +++++++++++++++++++++++----------- src/welcome.html | 22 ++++++++++++++++++++- webpack.config.js | 5 +++++ 5 files changed, 68 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 9fed06b..b482904 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "devchat", "displayName": "DevChat", "description": "Write prompts, not code", - "version": "0.0.33", + "version": "0.0.34", "icon": "assets/devchat.png", "publisher": "merico", "engines": { diff --git a/src/handler/historyMessages.ts b/src/handler/historyMessages.ts index eae954a..b852343 100644 --- a/src/handler/historyMessages.ts +++ b/src/handler/historyMessages.ts @@ -10,6 +10,22 @@ interface LoadHistoryMessages { entries: Array; } +function welcomeMessage(): LogEntry { + // create default logEntry to show welcome message + return { + hash: 'message', + user: 'system', + date: '', + request: 'How to use DevChat?', + response: ` +DevChat provides an editing operation method through problem driven development. You can start the journey of using DevChat from the following aspects. +1. Right click to select a file or a piece of code to add to DevChat and try asking AI about the file/code. +2. Use the+button in DevChat to select a git diff message and try using "/commit_message" command to generate a commit message. + `, + context: [] + } as LogEntry; +} + regInMessage({command: 'historyMessages', options: { skip: 0, maxCount: 0 }}); regOutMessage({command: 'loadHistoryMessages', entries: [{hash: '',user: '',date: '',request: '',response: '',context: [{content: '',role: ''}]}]}); export async function historyMessages(message: any, panel: vscode.WebviewPanel|vscode.WebviewView): Promise { @@ -50,7 +66,7 @@ export async function historyMessages(message: any, panel: vscode.WebviewPanel|v const loadHistoryMessages: LoadHistoryMessages = { command: 'loadHistoryMessages', - entries: logEntriesFlat, + entries: logEntries.length>0? logEntriesFlat : [welcomeMessage()], }; MessageHandler.sendMessage(panel, loadHistoryMessages); diff --git a/src/panel/devchatView.ts b/src/panel/devchatView.ts index 2e8ead6..a1ba218 100644 --- a/src/panel/devchatView.ts +++ b/src/panel/devchatView.ts @@ -1,13 +1,17 @@ import * as vscode from 'vscode'; +import * as path from 'path'; import WebviewManager from './webviewManager'; import '../handler/loadHandlers'; import handleMessage from '../handler/messageHandler'; +import { createChatDirectoryAndCopyInstructionsSync } from '../init/chatConfig'; +import ExtensionContextHolder from '../util/extensionContext'; +import CustomCommands from '../command/customCommand'; export class DevChatViewProvider implements vscode.WebviewViewProvider { private _view?: vscode.WebviewView; - private _webviewManager: WebviewManager|undefined; + private _webviewManager: WebviewManager | undefined; constructor(private readonly _context: vscode.ExtensionContext) { // Subscribe to the onDidChangeWorkspaceFolders event @@ -17,13 +21,22 @@ export class DevChatViewProvider implements vscode.WebviewViewProvider { public view() { return this._view; } - + resolveWebviewView(webviewView: vscode.WebviewView, context: vscode.WebviewViewResolveContext, _token: vscode.CancellationToken): void { - this._view = webviewView; - - this._webviewManager = new WebviewManager(webviewView.webview, this._context.extensionUri); - - this.registerEventListeners(); + // 创建 .chat 目录并复制 workflows + createChatDirectoryAndCopyInstructionsSync(ExtensionContextHolder.context?.extensionUri!); + + const workspaceDir = vscode.workspace.workspaceFolders?.[0].uri.fsPath; + if (workspaceDir) { + const workflowsDir = path.join(workspaceDir!, '.chat', 'workflows'); + CustomCommands.getInstance().parseCommands(workflowsDir); + } + + this._view = webviewView; + + this._webviewManager = new WebviewManager(webviewView.webview, this._context.extensionUri); + + this.registerEventListeners(); } private registerEventListeners() { @@ -41,9 +54,9 @@ export class DevChatViewProvider implements vscode.WebviewViewProvider { private onDidChangeWorkspaceFolders(event: vscode.WorkspaceFoldersChangeEvent): void { // Check if any folder was added or removed if (event.added.length > 0 || event.removed.length > 0) { - // Update the webviewView content - vscode.window.showInformationMessage(`onDidChangeWorkspaceFolders`); - // this.updateWebviewContent(); + // Update the webviewView content + vscode.window.showInformationMessage(`onDidChangeWorkspaceFolders`); + // this.updateWebviewContent(); } } @@ -58,4 +71,4 @@ export class DevChatViewProvider implements vscode.WebviewViewProvider { // } // } - } \ No newline at end of file +} \ No newline at end of file diff --git a/src/welcome.html b/src/welcome.html index 8ef32c3..fb712ff 100644 --- a/src/welcome.html +++ b/src/welcome.html @@ -1 +1,21 @@ -

You need open a folder before DevChat!

\ No newline at end of file + + + + + + + Welcome to DevChat + + + +

Welcome to DevChat

+

DevChat is designed for prompts drive development about your Git repository.

+

Please open a Git repository folder to start using DevChat.

+ + \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index 2c690e3..f73cd5c 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -159,6 +159,11 @@ const webviewConfig = { filename: 'index.html', chunks: ['index'] }), + new HtmlWebpackPlugin({ + template: path.resolve(__dirname, 'src', 'welcome.html'), + filename: 'welcome.html', + chunks: ['welcome'] + }), new CopyWebpackPlugin({ patterns: [ { from: 'assets', to: 'assets' },