diff --git a/.changes/3.81.json b/.changes/3.81.json new file mode 100644 index 00000000000..dd2daf832d2 --- /dev/null +++ b/.changes/3.81.json @@ -0,0 +1,5 @@ +{ + "date" : "2025-06-27", + "version" : "3.81", + "entries" : [ ] +} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a7f672ec89..4f7b7b11a96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +# _3.81_ (2025-06-27) + # _3.80_ (2025-06-26) - **(Feature)** Amazon Q inline: now display completions much more consistently at the user's current caret position - **(Feature)** Amazon Q inline: now Q completions can co-exist with JetBrains' native IntelliSense completions, when both are showing, press Tab or your customized key shortcuts to accept Q completions and press Enter to accept IntelliSense completions. diff --git a/gradle.properties b/gradle.properties index 3ad178e3951..b905783ae75 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 # Toolkit Version -toolkitVersion=3.81-SNAPSHOT +toolkitVersion=3.82-SNAPSHOT # Publish Settings publishToken= diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/controller/CodeTransformChatController.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/controller/CodeTransformChatController.kt index 0bb237c9bda..7e1989528a8 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/controller/CodeTransformChatController.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/controller/CodeTransformChatController.kt @@ -102,6 +102,7 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.model.CustomerSel import software.aws.toolkits.jetbrains.services.codemodernizer.model.DownloadArtifactResult import software.aws.toolkits.jetbrains.services.codemodernizer.model.DownloadFailureReason import software.aws.toolkits.jetbrains.services.codemodernizer.model.EXPLAINABILITY_V1 +import software.aws.toolkits.jetbrains.services.codemodernizer.model.IDE import software.aws.toolkits.jetbrains.services.codemodernizer.model.InvalidTelemetryReason import software.aws.toolkits.jetbrains.services.codemodernizer.model.JobId import software.aws.toolkits.jetbrains.services.codemodernizer.model.MAVEN_BUILD_RUN_UNIT_TESTS @@ -418,7 +419,7 @@ class CodeTransformChatController( codeModernizerManager.codeTransformationSession?.let { it.sessionContext.customBuildCommand = customBuildCommand } - val transformCapabilities = listOf(EXPLAINABILITY_V1, CLIENT_SIDE_BUILD, SELECTIVE_TRANSFORMATION_V2) + val transformCapabilities = listOf(EXPLAINABILITY_V1, CLIENT_SIDE_BUILD, SELECTIVE_TRANSFORMATION_V2, IDE) codeModernizerManager.codeTransformationSession?.let { it.sessionContext.transformCapabilities = transformCapabilities } diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/ZipManifest.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/ZipManifest.kt index eb7cbe54812..4ad61c8476b 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/ZipManifest.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/ZipManifest.kt @@ -8,7 +8,7 @@ data class ZipManifest( val dependenciesRoot: String = ZIP_DEPENDENCIES_PATH, val version: String = UPLOAD_ZIP_MANIFEST_VERSION, val hilCapabilities: List = listOf(HIL_1P_UPGRADE_CAPABILITY), - val transformCapabilities: List = listOf(EXPLAINABILITY_V1, CLIENT_SIDE_BUILD, SELECTIVE_TRANSFORMATION_V2), + val transformCapabilities: List = listOf(EXPLAINABILITY_V1, CLIENT_SIDE_BUILD, SELECTIVE_TRANSFORMATION_V2, IDE), val customBuildCommand: String = MAVEN_BUILD_RUN_UNIT_TESTS, val requestedConversions: RequestedConversions? = null, // only used for SQL conversions for now var dependencyUpgradeConfigFile: String? = null, diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/state/CodeModernizerState.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/state/CodeModernizerState.kt index 2c8f30975e6..d509d944aeb 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/state/CodeModernizerState.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/state/CodeModernizerState.kt @@ -10,6 +10,7 @@ import com.intellij.util.xmlb.annotations.Property import software.aws.toolkits.jetbrains.services.codemodernizer.model.CLIENT_SIDE_BUILD import software.aws.toolkits.jetbrains.services.codemodernizer.model.CodeModernizerSessionContext import software.aws.toolkits.jetbrains.services.codemodernizer.model.EXPLAINABILITY_V1 +import software.aws.toolkits.jetbrains.services.codemodernizer.model.IDE import software.aws.toolkits.jetbrains.services.codemodernizer.model.JobId import software.aws.toolkits.jetbrains.services.codemodernizer.model.MAVEN_BUILD_RUN_UNIT_TESTS import software.aws.toolkits.jetbrains.services.codemodernizer.model.SELECTIVE_TRANSFORMATION_V2 @@ -69,7 +70,7 @@ class CodeModernizerState : BaseState() { configurationFile, sourceJavaSdkVersion, targetJavaSdkVersion, - listOf(EXPLAINABILITY_V1, SELECTIVE_TRANSFORMATION_V2, CLIENT_SIDE_BUILD), + listOf(EXPLAINABILITY_V1, SELECTIVE_TRANSFORMATION_V2, CLIENT_SIDE_BUILD, IDE), lastJobContext[JobDetails.CUSTOM_BUILD_COMMAND] ?: MAVEN_BUILD_RUN_UNIT_TESTS // default to running unit tests ) } diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/tabs/generator.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/tabs/generator.ts index 22ae12e5433..3ea71cec291 100644 --- a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/tabs/generator.ts +++ b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/tabs/generator.ts @@ -67,7 +67,7 @@ What would you like to work on?`, ], [ 'codetransform', - `Welcome to Code Transformation! You can also run transformations from the command line. To install the tool, see the [documentation](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/run-CLI-transformations.html).`, + `Welcome to Code Transformation! **You can also run transformations from the command line. To install the tool, see the [documentation](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/run-CLI-transformations.html).**`, ], [ 'doc', diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt index aa89026ee8a..31eaa4d86b4 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt @@ -149,6 +149,7 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC MessageType.Error -> Level.ERROR MessageType.Warning -> Level.WARN MessageType.Info, MessageType.Log -> Level.INFO + else -> Level.WARN } if (type == Level.ERROR && diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt index 6c56a6d6868..9f115b05776 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt @@ -73,7 +73,6 @@ import software.aws.toolkits.core.utils.writeText import software.aws.toolkits.jetbrains.core.coroutines.ioDispatcher import software.aws.toolkits.jetbrains.services.amazonq.lsp.artifacts.ArtifactManager import software.aws.toolkits.jetbrains.services.amazonq.lsp.auth.DefaultAuthCredentialsService -import software.aws.toolkits.jetbrains.services.amazonq.lsp.dependencies.DefaultModuleDependenciesService import software.aws.toolkits.jetbrains.services.amazonq.lsp.encryption.JwtEncryptionManager import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AmazonQLspTypeAdapterFactory import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AwsExtendedInitializeResult @@ -120,10 +119,13 @@ internal class LSPProcessListener : ProcessListener { } } else if (ProcessOutputType.isStderr(outputType)) { LOG.warn { "LSP process stderr: ${event.text}" } + } else if (outputType == ProcessOutputType.SYSTEM) { + LOG.info { "LSP system events: ${event.text}" } } } override fun processTerminated(event: ProcessEvent) { + LOG.info { "LSP process terminated with exit code ${event.exitCode}" } try { this.outputStreamWriter.close() this.outputStream.close() @@ -590,9 +592,9 @@ private class AmazonQServerInstance(private val project: Project, private val cs WorkspaceServiceHandler(project, cs, lspInitResult).also { Disposer.register(this, it) } - DefaultModuleDependenciesService(project, cs).also { - Disposer.register(this, it) - } + // DefaultModuleDependenciesService(project, cs).also { + // Disposer.register(this, it) + // } } } } diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ManifestFetcher.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ManifestFetcher.kt index d10a22985db..35cd327a559 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ManifestFetcher.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/artifacts/ManifestFetcher.kt @@ -7,6 +7,7 @@ import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.databind.DeserializationFeature import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.readValue +import com.intellij.openapi.util.registry.Registry import org.jetbrains.annotations.VisibleForTesting import software.aws.toolkits.core.utils.deleteIfExists import software.aws.toolkits.core.utils.error @@ -21,15 +22,17 @@ import software.aws.toolkits.jetbrains.core.saveFileFromUrl import java.nio.file.Path class ManifestFetcher( - private val lspManifestUrl: String = DEFAULT_MANIFEST_URL, + private val lspManifestUrl: String = getManifestEndpoint(), private val manifestPath: Path = DEFAULT_MANIFEST_PATH, ) { companion object { private val mapper = jacksonObjectMapper().apply { configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) } private val logger = getLogger() - private const val DEFAULT_MANIFEST_URL = - "https://d3akiidp1wvqyg.cloudfront.net/qAgenticChatServer/0/manifest.json" + private fun getManifestEndpoint(): String { + val endpoint = Registry.get("amazon.q.flare.endpoint").asString() + return endpoint.ifBlank { "https://d3akiidp1wvqyg.cloudfront.net/qAgenticChatServer/0/manifest.json" } + } private val DEFAULT_MANIFEST_PATH: Path = getToolkitsCommonCacheRoot() .resolve("aws") diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/textdocument/TextDocumentServiceHandler.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/textdocument/TextDocumentServiceHandler.kt index 1bf868fde88..3f0d3854cba 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/textdocument/TextDocumentServiceHandler.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/textdocument/TextDocumentServiceHandler.kt @@ -23,6 +23,7 @@ import com.intellij.openapi.vfs.newvfs.BulkFileListener import com.intellij.openapi.vfs.newvfs.events.VFileContentChangeEvent import com.intellij.openapi.vfs.newvfs.events.VFileEvent import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.delay import kotlinx.coroutines.launch import org.eclipse.lsp4j.DidChangeTextDocumentParams import org.eclipse.lsp4j.DidCloseTextDocumentParams @@ -65,9 +66,12 @@ class TextDocumentServiceHandler( ) // open files on startup - val fileEditorManager = FileEditorManager.getInstance(project) - fileEditorManager.openFiles.forEach { file -> - handleFileOpened(file) + cs.launch { + val fileEditorManager = FileEditorManager.getInstance(project) + fileEditorManager.openFiles.forEach { file -> + handleFileOpened(file) + delay(100) + } } } diff --git a/plugins/amazonq/src/main/resources/META-INF/plugin.xml b/plugins/amazonq/src/main/resources/META-INF/plugin.xml index fa53216c64e..c5ab511b4fc 100644 --- a/plugins/amazonq/src/main/resources/META-INF/plugin.xml +++ b/plugins/amazonq/src/main/resources/META-INF/plugin.xml @@ -74,6 +74,9 @@ restartRequired="true"/> + diff --git a/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties b/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties index 7eaa9e89585..46236427ae9 100644 --- a/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties +++ b/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties @@ -707,7 +707,7 @@ codemodernizer.chat.message.upload_failed_other=Sorry, I was unable to upload yo codemodernizer.chat.message.upload_failed_ssl_error=Sorry, I was unable to upload your project. This might have been caused by your IDE not trusting the certificate of your HTTP proxy. Ensure all certificates for your proxy client have been configured in your IDE, and then retry transformation. codemodernizer.chat.message.upload_failed_url_expired=Sorry, I couldn't upload your project to begin the transformation. The Amazon S3 pre-signed URL used to upload your code expired after 30 minutes. This might have been caused by delays introduced by intermediate services in your network infrastructure.\n\nCheck your network configuration for services that might be causing delays. If the issue persists, you might need to allow list the following Amazon S3 bucket: 'amazonq-code-transformation-us-east-1-c6160f047e0.s3.amazonaws.com'. codemodernizer.chat.message.validation.check_eligible_modules=Checking for eligible modules... -codemodernizer.chat.message.validation.check_passed=I can upgrade your Java module. To start the transformation, I need some information from you. Choose the module you want to upgrade and the target code version to upgrade to. Then, choose **Confirm**.\n\nIf you do not see the module you want to transform, you might need to configure your project so that I can find it. Go to File and choose Project Structure. In the Projects tab, set the correct project JDK and language level. In the Modules tab, set the correct module JDK and language level.\n\nAfter successfully transforming to Java 17 or 21, an additional transformation is required to upgrade your libraries and dependencies. Choose the same source code version and target code version (for example, 17 to 17) to do this.\n\nI will perform the transformation based on your project's requests, descriptions, and content. To maintain security, avoid including external, unvetted artifacts in your project repository prior to starting the transformation and always validate transformed code for both functionality and security. +codemodernizer.chat.message.validation.check_passed=I can upgrade your Java module. To start the transformation, I need some information from you. Choose the module you want to upgrade and the target code version to upgrade to. Then, choose **Confirm**.\n\nIf you do not see the module you want to transform, you might need to configure your project so that I can find it. Go to File and choose Project Structure. In the Projects tab, set the correct project JDK and language level. In the Modules tab, set the correct module JDK and language level.\n\nAfter successfully transforming to Java 17 or 21, an additional transformation is required to upgrade your libraries and dependencies. Choose the same source code version and target code version (for example, 17 to 17) to do this.\n\nI will perform the transformation based on your project's requests, descriptions, and content. To maintain security, avoid including external, unvetted artifacts in your project repository prior to starting the transformation and always validate transformed code for both functionality and security. Do not turn off or close your machine during the transformation because a stable network connection is required. codemodernizer.chat.message.validation.error.downgrade_attempt=I can't transform a project from Java 21 to Java 17, but I can upgrade Java 21 code with up-to-date libraries and other dependencies. Try again with a supported language upgrade. codemodernizer.chat.message.validation.error.invalid_sct=It looks like the .sct file you provided isn't valid. Make sure that you've uploaded the .zip file you retrieved from your schema conversion in AWS DMS. codemodernizer.chat.message.validation.error.invalid_source_db=I can only convert SQL for migrations from an Oracle source database. The provided .sct file indicates another source database for this migration. @@ -831,7 +831,7 @@ codemodernizer.toolwindow.label=Transformation Hub - {0} codemodernizer.toolwindow.label_no_job=Transformation Hub codemodernizer.toolwindow.problems_mvn_window_not_found=Unable to display Code Transform results as the Maven window cannot be fetched. codemodernizer.toolwindow.problems_window_not_found=Unable to display Code Transform results as the Problems View tool window cannot be fetched. -codemodernizer.toolwindow.progress.building=Build uploaded code in secure build environment +codemodernizer.toolwindow.progress.building=Analyze uploaded code in secure environment codemodernizer.toolwindow.progress.parent=Transformation progress codemodernizer.toolwindow.progress.planning=Generate transformation plan codemodernizer.toolwindow.progress.transforming=Transform your code