From a50303ac44c294624a0f2c2a0965e66903e8342a Mon Sep 17 00:00:00 2001 From: Will Lo Date: Tue, 15 Apr 2025 12:23:12 -0700 Subject: [PATCH 1/7] fix /help does nothing in welcome page --- .../amazonq/mynah-ui/src/mynah-ui/ui/quickActions/handler.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/quickActions/handler.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/quickActions/handler.ts index aa7e389652b..447b7668be3 100644 --- a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/quickActions/handler.ts +++ b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/quickActions/handler.ts @@ -57,6 +57,7 @@ export class QuickActionHandler { this.handleFeatureDevCommand(chatPrompt, tabID, 'Q - Dev') break case '/help': + console.log('123') this.handleHelpCommand(tabID) break case '/transform': @@ -134,7 +135,7 @@ export class QuickActionHandler { private handleHelpCommand(tabID: string) { // User entered help action, so change the tab type to 'cwc' if it's an unknown tab - if (this.tabsStorage.getTab(tabID)?.type === 'unknown') { + if (this.tabsStorage.getTab(tabID)?.type === 'unknown' || this.tabsStorage.getTab(tabID)?.type === 'welcome') { this.tabsStorage.updateTabTypeFromUnknown(tabID, 'cwc') } From b86208a6c9b7df48def0243b20edce3dd740e18d Mon Sep 17 00:00:00 2001 From: Will Lo Date: Tue, 15 Apr 2025 12:23:45 -0700 Subject: [PATCH 2/7] a --- plugins/amazonq/mynah-ui/src/mynah-ui/ui/quickActions/handler.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/quickActions/handler.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/quickActions/handler.ts index 447b7668be3..2a75ba040ef 100644 --- a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/quickActions/handler.ts +++ b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/quickActions/handler.ts @@ -57,7 +57,6 @@ export class QuickActionHandler { this.handleFeatureDevCommand(chatPrompt, tabID, 'Q - Dev') break case '/help': - console.log('123') this.handleHelpCommand(tabID) break case '/transform': From 067ba9b190569695b2900bfe01f2353e03352087 Mon Sep 17 00:00:00 2001 From: Will Lo Date: Wed, 16 Apr 2025 11:53:12 -0700 Subject: [PATCH 3/7] p --- plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts | 3 +++ .../amazonq/mynah-ui/src/mynah-ui/ui/quickActions/handler.ts | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts index 6ceb88108c4..7eac22c7bcb 100644 --- a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts +++ b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts @@ -224,6 +224,9 @@ export class Connector { case 'codescan': this.codeScanChatConnector.help(tabID) break + case 'welcome': + this.cwChatConnector.help(tabID) + break } } diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/quickActions/handler.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/quickActions/handler.ts index 2a75ba040ef..aa7e389652b 100644 --- a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/quickActions/handler.ts +++ b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/quickActions/handler.ts @@ -134,7 +134,7 @@ export class QuickActionHandler { private handleHelpCommand(tabID: string) { // User entered help action, so change the tab type to 'cwc' if it's an unknown tab - if (this.tabsStorage.getTab(tabID)?.type === 'unknown' || this.tabsStorage.getTab(tabID)?.type === 'welcome') { + if (this.tabsStorage.getTab(tabID)?.type === 'unknown') { this.tabsStorage.updateTabTypeFromUnknown(tabID, 'cwc') } From a87acb7f47f951f5d28ea9bdc48dda6071fcfd43 Mon Sep 17 00:00:00 2001 From: Will Lo Date: Wed, 16 Apr 2025 12:44:09 -0700 Subject: [PATCH 4/7] fix /help does nothing in welcome page --- .../services/amazonq/webview/Browser.kt | 2 +- .../src/mynah-ui/ui/apps/cwChatConnector.ts | 2 + .../mynah-ui/src/mynah-ui/ui/connector.ts | 42 ++++++++++++------- .../amazonq/mynah-ui/src/mynah-ui/ui/main.ts | 3 ++ .../src/mynah-ui/ui/storages/tabsStorage.ts | 17 +++++++- 5 files changed, 48 insertions(+), 18 deletions(-) diff --git a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/Browser.kt b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/Browser.kt index 7dd41c795f1..127d1b3fccd 100644 --- a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/Browser.kt +++ b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/Browser.kt @@ -105,7 +105,7 @@ class Browser(parent: Disposable) : Disposable { $postMessageToJavaJsCode } }, - ${MeetQSettings.getInstance().reinvent2024OnboardingCount < MAX_ONBOARDING_PAGE_COUNT}, + ${true}, ${MeetQSettings.getInstance().disclaimerAcknowledged}, $isFeatureDevAvailable, // whether /dev is available $isCodeTransformAvailable, // whether /transform is available diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/apps/cwChatConnector.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/apps/cwChatConnector.ts index 7f478f0fbe5..95120c53feb 100644 --- a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/apps/cwChatConnector.ts +++ b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/apps/cwChatConnector.ts @@ -216,6 +216,7 @@ export class Connector { } help = (tabID: string): void => { + console.log(`cwChatConnector.help ${tabID}`) this.sendMessageToExtension({ tabID: tabID, command: 'help', @@ -256,6 +257,7 @@ export class Connector { } private processChatMessage = async (messageData: any): Promise => { + console.log(`processChatMessage`) if (this.onChatAnswerReceived === undefined) { return } diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts index 7eac22c7bcb..2aa28a4f362 100644 --- a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts +++ b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts @@ -12,19 +12,19 @@ import { ProgressField, ChatPrompt, QuickActionCommand, } from '@aws/mynah-ui-chat' -import { Connector as CWChatConnector } from './apps/cwChatConnector' -import { Connector as FeatureDevChatConnector } from './apps/featureDevChatConnector' -import { Connector as DocChatConnector } from './apps/docChatConnector' -import { Connector as AmazonQCommonsConnector } from './apps/amazonqCommonsConnector' -import { ExtensionMessage } from './commands' -import { TabType, TabsStorage } from './storages/tabsStorage' -import { WelcomeFollowupType } from './apps/amazonqCommonsConnector' -import { AuthFollowUpType } from './followUps/generator' -import { CodeTransformChatConnector } from './apps/codeTransformChatConnector' -import { isFormButtonCodeTest, isFormButtonCodeScan, isFormButtonCodeTransform } from './forms/constants' -import { DiffTreeFileInfo } from './diffTree/types' -import { CodeScanChatConnector } from "./apps/codeScanChatConnector"; -import { CodeTestChatConnector } from './apps/codeTestChatConnector' +import {Connector as CWChatConnector} from './apps/cwChatConnector' +import {Connector as FeatureDevChatConnector} from './apps/featureDevChatConnector' +import {Connector as DocChatConnector} from './apps/docChatConnector' +import {Connector as AmazonQCommonsConnector} from './apps/amazonqCommonsConnector' +import {ExtensionMessage} from './commands' +import {TabType, TabsStorage} from './storages/tabsStorage' +import {WelcomeFollowupType} from './apps/amazonqCommonsConnector' +import {AuthFollowUpType} from './followUps/generator' +import {CodeTransformChatConnector} from './apps/codeTransformChatConnector' +import {isFormButtonCodeTest, isFormButtonCodeScan, isFormButtonCodeTransform} from './forms/constants' +import {DiffTreeFileInfo} from './diffTree/types' +import {CodeScanChatConnector} from "./apps/codeScanChatConnector"; +import {CodeTestChatConnector} from './apps/codeTestChatConnector' export interface CodeReference { licenseName?: string @@ -50,7 +50,7 @@ export interface ConnectorProps { sendMessageToExtension: (message: ExtensionMessage) => void onMessageReceived?: (tabID: string, messageData: any, needToShowAPIDocsTab: boolean) => void onChatAnswerReceived?: (tabID: string, message: ChatItem) => void - onChatAnswerUpdated?: (tabID: string, message:ChatItem) => void + onChatAnswerUpdated?: (tabID: string, message: ChatItem) => void onCodeTransformChatDisabled: (tabID: string) => void onCodeTransformMessageReceived: ( tabID: string, @@ -225,6 +225,16 @@ export class Connector { this.codeScanChatConnector.help(tabID) break case 'welcome': + this.tabsStorage.updateTabTypeFromUnknown(tabID, 'cwc') + this.tabsStorage.updateTabContent(tabID, { + tabHeaderDetails: void 0, + compactMode: false, + tabBackground: false, + promptInputText: '', + promptInputLabel: void 0, + chatItems: [], + tabTitle: 'Chat', + }) this.cwChatConnector.help(tabID) break } @@ -597,7 +607,7 @@ export class Connector { this.cwChatConnector.onSendFeedback(tabId, feedbackPayload) break case 'codetest': - this.codeTestChatConnector.sendFeedback(tabId,feedbackPayload) + this.codeTestChatConnector.sendFeedback(tabId, feedbackPayload) break } } @@ -611,7 +621,7 @@ export class Connector { this.featureDevChatConnector.onChatItemVoted(tabId, messageId, vote) break case 'codetest' : - this.codeTestChatConnector.onChatItemVoted(tabId,messageId,vote) + this.codeTestChatConnector.onChatItemVoted(tabId, messageId, vote) break } } diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/main.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/main.ts index 1d033f1cc65..47a9daab2b6 100644 --- a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/main.ts +++ b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/main.ts @@ -63,6 +63,9 @@ export const createMynahUI = ( promptInputPlaceholder: 'Session ended.', }) }, + tabMutator: (tabId, data) => { + mynahUI.updateStore(tabId, data) + } }) // Adding the first tab as CWC tab tabsStorage.addTab({ diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/storages/tabsStorage.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/storages/tabsStorage.ts index 6b36eae6848..da6ebf8e1fd 100644 --- a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/storages/tabsStorage.ts +++ b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/storages/tabsStorage.ts @@ -3,6 +3,8 @@ * SPDX-License-Identifier: Apache-2.0 */ +import {MynahUIDataModel} from "@aws/mynah-ui-chat"; + export type TabStatus = 'free' | 'busy' | 'dead' const TabTypes = [ 'cwc', @@ -53,9 +55,11 @@ export class TabsStorage { private lastSelectedTab: Tab | undefined = undefined private tabActivityTimers: Record> = {} private onTabTimeout?: (tabId: string) => void + private tabMutator?: (tabId: string, data: MynahUIDataModel) => void - constructor(props?: { onTabTimeout: (tabId: string) => void }) { + constructor(props?: { onTabTimeout: (tabId: string) => void, tabMutator: (tabId: string, data: MynahUIDataModel) => void }) { this.onTabTimeout = props?.onTabTimeout + this.tabMutator = props?.tabMutator } public addTab(tab: Tab) { @@ -102,6 +106,17 @@ export class TabsStorage { this.tabs.set(tabID, currentTabValue) } + public updateTabContent(tabId: string, dataModel: MynahUIDataModel) { + const currentTabValue = this.tabs.get(tabId) + if (currentTabValue === undefined || currentTabValue.status === 'dead') { + return + } + + if (this.tabMutator) { + this.tabMutator(tabId, dataModel) + } + } + public updateTabTypeFromUnknown(tabID: string, tabType: TabType) { const currentTabValue = this.tabs.get(tabID) if ( From 5894e748cefd3e30dff6edaf295fccc63caa58cf Mon Sep 17 00:00:00 2001 From: Will Lo Date: Wed, 16 Apr 2025 12:55:59 -0700 Subject: [PATCH 5/7] linter --- .../services/amazonq/webview/Browser.kt | 2 +- .../src/mynah-ui/ui/apps/cwChatConnector.ts | 2 -- .../mynah-ui/src/mynah-ui/ui/connector.ts | 24 +++++++++---------- .../src/mynah-ui/ui/storages/tabsStorage.ts | 2 +- 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/Browser.kt b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/Browser.kt index 127d1b3fccd..7dd41c795f1 100644 --- a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/Browser.kt +++ b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/Browser.kt @@ -105,7 +105,7 @@ class Browser(parent: Disposable) : Disposable { $postMessageToJavaJsCode } }, - ${true}, + ${MeetQSettings.getInstance().reinvent2024OnboardingCount < MAX_ONBOARDING_PAGE_COUNT}, ${MeetQSettings.getInstance().disclaimerAcknowledged}, $isFeatureDevAvailable, // whether /dev is available $isCodeTransformAvailable, // whether /transform is available diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/apps/cwChatConnector.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/apps/cwChatConnector.ts index 95120c53feb..7f478f0fbe5 100644 --- a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/apps/cwChatConnector.ts +++ b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/apps/cwChatConnector.ts @@ -216,7 +216,6 @@ export class Connector { } help = (tabID: string): void => { - console.log(`cwChatConnector.help ${tabID}`) this.sendMessageToExtension({ tabID: tabID, command: 'help', @@ -257,7 +256,6 @@ export class Connector { } private processChatMessage = async (messageData: any): Promise => { - console.log(`processChatMessage`) if (this.onChatAnswerReceived === undefined) { return } diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts index 2aa28a4f362..4438bdb6dd5 100644 --- a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts +++ b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts @@ -12,19 +12,19 @@ import { ProgressField, ChatPrompt, QuickActionCommand, } from '@aws/mynah-ui-chat' -import {Connector as CWChatConnector} from './apps/cwChatConnector' -import {Connector as FeatureDevChatConnector} from './apps/featureDevChatConnector' -import {Connector as DocChatConnector} from './apps/docChatConnector' -import {Connector as AmazonQCommonsConnector} from './apps/amazonqCommonsConnector' -import {ExtensionMessage} from './commands' -import {TabType, TabsStorage} from './storages/tabsStorage' -import {WelcomeFollowupType} from './apps/amazonqCommonsConnector' -import {AuthFollowUpType} from './followUps/generator' -import {CodeTransformChatConnector} from './apps/codeTransformChatConnector' +import { Connector as CWChatConnector } from './apps/cwChatConnector' +import { Connector as FeatureDevChatConnector } from './apps/featureDevChatConnector' +import { Connector as DocChatConnector } from './apps/docChatConnector' +import { Connector as AmazonQCommonsConnector } from './apps/amazonqCommonsConnector' +import { ExtensionMessage } from './commands' +import { TabType, TabsStorage } from './storages/tabsStorage' +import { WelcomeFollowupType } from './apps/amazonqCommonsConnector' +import { AuthFollowUpType } from './followUps/generator' +import { CodeTransformChatConnector } from './apps/codeTransformChatConnector' import {isFormButtonCodeTest, isFormButtonCodeScan, isFormButtonCodeTransform} from './forms/constants' -import {DiffTreeFileInfo} from './diffTree/types' -import {CodeScanChatConnector} from "./apps/codeScanChatConnector"; -import {CodeTestChatConnector} from './apps/codeTestChatConnector' +import { DiffTreeFileInfo } from './diffTree/types' +import { CodeScanChatConnector } from "./apps/codeScanChatConnector"; +import { CodeTestChatConnector } from './apps/codeTestChatConnector' export interface CodeReference { licenseName?: string diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/storages/tabsStorage.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/storages/tabsStorage.ts index da6ebf8e1fd..2fc36167104 100644 --- a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/storages/tabsStorage.ts +++ b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/storages/tabsStorage.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import {MynahUIDataModel} from "@aws/mynah-ui-chat"; +import { MynahUIDataModel } from "@aws/mynah-ui-chat"; export type TabStatus = 'free' | 'busy' | 'dead' const TabTypes = [ From 91baaf17e84c98a47657226112b74ad6372d9305 Mon Sep 17 00:00:00 2001 From: Will Lo Date: Wed, 16 Apr 2025 12:57:23 -0700 Subject: [PATCH 6/7] lint --- plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts index 4438bdb6dd5..60e38c5d118 100644 --- a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts +++ b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts @@ -21,7 +21,7 @@ import { TabType, TabsStorage } from './storages/tabsStorage' import { WelcomeFollowupType } from './apps/amazonqCommonsConnector' import { AuthFollowUpType } from './followUps/generator' import { CodeTransformChatConnector } from './apps/codeTransformChatConnector' -import {isFormButtonCodeTest, isFormButtonCodeScan, isFormButtonCodeTransform} from './forms/constants' +import { isFormButtonCodeTest, isFormButtonCodeScan, isFormButtonCodeTransform } from './forms/constants' import { DiffTreeFileInfo } from './diffTree/types' import { CodeScanChatConnector } from "./apps/codeScanChatConnector"; import { CodeTestChatConnector } from './apps/codeTestChatConnector' From 9147702850a43ddb1678f74eee587c99dd65b48a Mon Sep 17 00:00:00 2001 From: Will Lo Date: Wed, 16 Apr 2025 13:16:07 -0700 Subject: [PATCH 7/7] cl --- .../bugfix-6a500e2b-3697-486b-bdd0-9614ab45fb0a.json | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .changes/next-release/bugfix-6a500e2b-3697-486b-bdd0-9614ab45fb0a.json diff --git a/.changes/next-release/bugfix-6a500e2b-3697-486b-bdd0-9614ab45fb0a.json b/.changes/next-release/bugfix-6a500e2b-3697-486b-bdd0-9614ab45fb0a.json new file mode 100644 index 00000000000..04434867f89 --- /dev/null +++ b/.changes/next-release/bugfix-6a500e2b-3697-486b-bdd0-9614ab45fb0a.json @@ -0,0 +1,4 @@ +{ + "type" : "bugfix", + "description" : "/help does nothing in Q welcome page" +} \ No newline at end of file