diff --git a/.changes/next-release/feature-38facbaf-0a30-40f0-9946-630c1248401f.json b/.changes/next-release/feature-38facbaf-0a30-40f0-9946-630c1248401f.json new file mode 100644 index 00000000000..9f252d50ed4 --- /dev/null +++ b/.changes/next-release/feature-38facbaf-0a30-40f0-9946-630c1248401f.json @@ -0,0 +1,4 @@ +{ + "type" : "feature", + "description" : "Removed dependency on the AWS Core plugin. AWS Toolkit no longer requires AWS Core to be installed." +} \ No newline at end of file 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 23a8fb6cd0d..f7ab0a1ef79 100644 --- a/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties +++ b/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties @@ -346,6 +346,9 @@ aws.toolkit.experimental.title=Experimental Features aws.toolkit_deprecation.message=Support for {0} {1} is being deprecated - an upcoming release will require a version based on {2} or newer. aws.toolkit_deprecation.message.gateway=Upgrade JetBrains Gateway to version {2} or newer to use the next release of the toolkit. Support for {0} {1} is being deprecated. aws.toolkit_deprecation.title=AWS Toolkit deprecation notice +aws.toolkit_core_notice.title=AWS Core plugin is no longer required +aws.toolkit_core_notice.message=Starting with AWS Toolkit 4.0, the AWS Core plugin is no longer needed and can be safely uninstalled. +aws.toolkit_core_notice.manage_plugins=Manage Plugins aws_builder_id.service_name=AWS Builder ID aws_builder_id.sign_out=Sign out of AWS Builder ID aws_connection.credentials.label=Credentials: diff --git a/plugins/toolkit/jetbrains-core/resources/META-INF/plugin.xml b/plugins/toolkit/jetbrains-core/resources/META-INF/plugin.xml index 545f50cddb4..169a92f8226 100644 --- a/plugins/toolkit/jetbrains-core/resources/META-INF/plugin.xml +++ b/plugins/toolkit/jetbrains-core/resources/META-INF/plugin.xml @@ -370,6 +370,10 @@ + + + + diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/notification/AwsCorePluginNotice.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/notification/AwsCorePluginNotice.kt new file mode 100644 index 00000000000..cacd40ca9d1 --- /dev/null +++ b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/notification/AwsCorePluginNotice.kt @@ -0,0 +1,54 @@ +// Copyright 2026 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package software.aws.toolkits.jetbrains.core.notification + +import com.intellij.ide.plugins.PluginManagerConfigurable +import com.intellij.ide.plugins.PluginManagerCore +import com.intellij.ide.util.PropertiesComponent +import com.intellij.notification.NotificationAction +import com.intellij.notification.NotificationGroupManager +import com.intellij.notification.NotificationType +import com.intellij.openapi.application.ApplicationManager +import com.intellij.openapi.extensions.PluginId +import com.intellij.openapi.options.ShowSettingsUtil +import com.intellij.openapi.project.Project +import com.intellij.openapi.startup.ProjectActivity +import software.aws.toolkits.resources.message + +class AwsCorePluginNotice : ProjectActivity { + override suspend fun execute(project: Project) { + if (ApplicationManager.getApplication().isUnitTestMode) return + if (PropertiesComponent.getInstance().getBoolean(IGNORE_PROMPT)) return + if (!PluginManagerCore.isPluginInstalled(PluginId.getId(CORE_PLUGIN_ID))) return + + val notificationGroup = NotificationGroupManager.getInstance().getNotificationGroup("aws.toolkit_core_notice") + notificationGroup.createNotification( + message("aws.toolkit_core_notice.title"), + message("aws.toolkit_core_notice.message"), + NotificationType.INFORMATION + ) + .addAction( + NotificationAction.createSimpleExpiring(message("aws.toolkit_core_notice.manage_plugins")) { + ShowSettingsUtil.getInstance().showSettingsDialog( + project, + PluginManagerConfigurable::class.java + ) { configurable: PluginManagerConfigurable -> + configurable.openInstalledTab(CORE_PLUGIN_NAME) + } + } + ) + .addAction( + NotificationAction.createSimpleExpiring(message("general.notification.action.hide_forever")) { + PropertiesComponent.getInstance().setValue(IGNORE_PROMPT, true) + } + ) + .notify(project) + } + + companion object { + const val CORE_PLUGIN_ID = "aws.toolkit.core" + const val CORE_PLUGIN_NAME = "AWS Core" + const val IGNORE_PROMPT = "aws.toolkit_core_notice.dismissed" + } +}