diff --git a/docs/reference/experiments.md b/docs/reference/experiments.md index 869ebcdb..3fddd3e9 100644 --- a/docs/reference/experiments.md +++ b/docs/reference/experiments.md @@ -9,12 +9,14 @@ The following is a list of currently available experiments. We'll remove experim * `bolt-install`: enables creating, installing, and running Bolt projects that manage their app manifest on app settings (remote manifest). * `slack create` and `slack init` now set manifest source to "app settings" (remote) for Bolt JS & Bolt Python projects ([PR#96](https://github.com/slackapi/slack-cli/pull/96)). * `slack run` supports creating and installing Bolt Framework apps that have the manifest source set to "app settings (remote)" ([PR#111](https://github.com/slackapi/slack-cli/pull/111)). + * `--experiment bolt-install` is now enabled by default ([PR#112](https://github.com/slackapi/slack-cli/pull/112)). * `read-only-collaborators`: enables creating and modifying collaborator permissions via the `slack collaborator` commands. ## Experiments changelog Below is a list of updates related to experiments. +* **June 2025**: Enabled the `bolt-install` experiment by default to support using `slack run` with apps that have a manifest source set to "app settings" (remote). * **May 2025**: Added the experiment `bolt-install` to enable creating, installing, and running Bolt projects that manage their app manifest on app settings (remote manifest). * **February 2025**: Added full Bolt framework support to the Slack CLI and removed the features from behind the experiment flag. See the changelog announcement [here](https://docs.slack.dev/changelog/2025/02/27/slack-cli-release). * **August 2024**: Added the `bolt` experiment for the `slack create` command. diff --git a/internal/experiment/experiment.go b/internal/experiment/experiment.go index 1f8708ad..65878654 100644 --- a/internal/experiment/experiment.go +++ b/internal/experiment/experiment.go @@ -59,6 +59,7 @@ var AllExperiments = []Experiment{ // EnabledExperiments is a list of experiments that are permanently enabled var EnabledExperiments = []Experiment{ BoltFrameworks, + BoltInstall, } // Includes checks that a supplied experiment is included within AllExperiments diff --git a/internal/pkg/apps/install_test.go b/internal/pkg/apps/install_test.go index 2acc46e2..1eedbc2b 100644 --- a/internal/pkg/apps/install_test.go +++ b/internal/pkg/apps/install_test.go @@ -885,11 +885,11 @@ func TestInstallLocalApp(t *testing.T) { TeamName: &mockTeamDomain, UserID: &mockUserID, }, - mockAPICreateError: slackerror.New(slackerror.ErrAppCreate), - mockAPIUpdateError: slackerror.New(slackerror.ErrAppAdd), - mockAPIInstallError: slackerror.New(slackerror.ErrAppInstall), - mockBoltExperiment: true, - mockManifestSource: config.ManifestSourceRemote, + mockAPICreateError: slackerror.New(slackerror.ErrAppCreate), + mockAPIUpdateError: slackerror.New(slackerror.ErrAppAdd), + mockBoltExperiment: true, + mockBoltInstallExperiment: false, + mockManifestSource: config.ManifestSourceRemote, expectedApp: types.App{ AppID: "A004", IsDev: true, diff --git a/internal/pkg/create/create.go b/internal/pkg/create/create.go index ec10801b..bde5121d 100644 --- a/internal/pkg/create/create.go +++ b/internal/pkg/create/create.go @@ -467,9 +467,11 @@ func InstallProjectDependencies( // When the BoltInstall experiment is enabled, set non-ROSI projects to ManifestSourceRemote. if clients.Config.WithExperimentOn(experiment.BoltInstall) { // TODO: should check if Slack hosted project, but the SDKConfig has not been initialized yet. - isDenoProject := strings.Contains(strings.ToLower(clients.Runtime.Name()), "deno") - if !isDenoProject { - manifestSource = config.ManifestSourceRemote + if clients.Runtime != nil { + isDenoProject := strings.Contains(strings.ToLower(clients.Runtime.Name()), "deno") + if !isDenoProject { + manifestSource = config.ManifestSourceRemote + } } }