Skip to content

feat!: remove ldcli setup interactive wizard#704

Open
nieblara wants to merge 2 commits intomainfrom
remove-setup-wizard
Open

feat!: remove ldcli setup interactive wizard#704
nieblara wants to merge 2 commits intomainfrom
remove-setup-wizard

Conversation

@nieblara
Copy link
Copy Markdown
Contributor

@nieblara nieblara commented May 1, 2026

https://launchdarkly.atlassian.net/browse/REL-13478

Summary

Hard-removes the ldcli setup interactive onboarding wizard that hasn't been meaningfully touched in ~21 months and ships ~2-year-old pinned SDK versions in its embedded snippets. Along with the wizard goes the bubbletea TUI package, the 23 embedded SDK markdown snippets, the analytics tracker methods only it consumed, and the six direct go.mod requires it was the sole importer of.

Net diff: -3,965 LOC across 45 files in two commits.

What changes for users

  • ldcli setup no longer exists; running it returns cobra's unknown command "setup" for "ldcli" error.
  • README and --help output no longer mention setup.
  • A new bullet under ## [Unreleased]### ⚠ BREAKING CHANGES in CHANGELOG.md points users to the LaunchDarkly docs for SDK install guidance and to ldcli flags create / ldcli flags toggle-on / ldcli flags toggle-off for the operations the wizard wrapped.

Why now

  • The wizard hasn't had a meaningful commit since August 2024. The embedded snippets pin e.g. Python launchdarkly-server-sdk==9.4.0, React launchdarkly-react-client-sdk@3.1.0, and the React example still uses the deprecated npx create-react-app.
  • The original plan (visible in internal/quickstart/choose_sdk.go) was to migrate the embedded examples to the shared sdk-meta package; that never happened.
  • Hard-removal is cheaper than a refresh and matches the broader direction of the CLI (resource commands, dev-server, sourcemaps).

How it's split

Two commits, single PR:

  1. feat!: remove ldcli setup interactive wizard — 39 files, -3,869 LOC. Deletes cmd/quickstart.go, all of internal/quickstart/ and internal/sdks/, removes the cmd.AddCommand registration in cmd/root.go, removes the setup line from the usage template in cmd/templates.go, drops the two README mentions, adds the [Unreleased] CHANGELOG bullet, and runs go mod tidy. Repo is buildable and shippable at this commit.
  2. refactor(analytics): drop wizard-only tracker methods — 6 files, -96 LOC. Shrinks the Tracker interface (removes SendSetupStepStartedEvent, SendSetupSDKSelectedEvent, SendSetupFlagToggledEvent) and removes the methods from all four implementations (Client, NoopClient, LogClient, MockTracker) plus the corresponding subtest in client_test.go.

Dependency cleanup

Of the six predicted direct-require drops, three left go.mod entirely (bubbletea, bubbles, sdk-meta/api); three were demoted to // indirect because they are still pulled in transitively by glamour (lipgloss, muesli/reflow, golang.org/x/exp). Six previously-indirect deps disappeared completely: atotto/clipboard, erikgeiser/coninput, mattn/go-localereader, muesli/ansi, muesli/cancelreader, sahilm/fuzzy. Net: go.mod -16 lines, go.sum -21 lines.

glamour stays — it's also imported by cmd/resources/.

Release-please / versioning

Commit 1 uses feat!: with a BREAKING CHANGE: footer so release-please bumps the major version (3.x → 4.0.0) on the next release and surfaces this in the auto-generated changelog under ### ⚠ BREAKING CHANGES.

Test plan

  • make build — clean
  • make test — 569 passed in 38 packages (was 570; one less due to the removed SendSetupStepStartedEvent subtest in internal/analytics/client_test.go)
  • go mod tidy is idempotent (re-running produces no further go.mod/go.sum diff)
  • ./ldcli --help no longer lists setup; surrounding column alignment is preserved (cobra's rpad pads each line independently)
  • ./ldcli setup returns unknown command "setup" for "ldcli"
  • No new lint errors on touched analytics files; gofmt clean

Out of scope (explicitly)

These were considered and deferred to keep the diff focused:

  • Removing the unused, already-broken MockedTracker helper in internal/analytics/events.go (zero callers in the repo, and its mock setup passes 4 args to a 2-arg Called). Already dead, not made dead by this PR.
  • Fixing AGENTS.md / CLAUDE.md / CONTRIBUTING.md staleness (they claim getUsageTemplate() lives in cmd/root.go, and reference pre-commit hooks that are not actually wired up).
  • Removing the now-stale make vendor Makefile target (the repo doesn't vendor; the target predates the deliberate vendor/ removal).

Made with Cursor


Note

Medium Risk
Removes a user-facing command and associated analytics/interface surface; risk is mostly around breaking existing scripts/docs expectations and potential leftover references, but core API/resource commands are untouched.

Overview
Removes the interactive onboarding wizard by deleting the ldcli setup command and all supporting TUI/quickstart code (including embedded SDK instruction markdown). CLI help/usage output and the README no longer reference setup, and the changelog adds a breaking change note pointing users to docs and flags create/flags toggle-*.

Cleans up analytics and dependencies by dropping wizard-only tracker methods/events and removing/demoting the Go module dependencies that were only needed for the TUI flow (with corresponding go.mod/go.sum tidy).

Reviewed by Cursor Bugbot for commit fa6d683. Bugbot is set up for automated code reviews on this repo. Configure here.

nieblara and others added 2 commits May 1, 2026 10:04
The interactive setup wizard hasn't been touched in ~21 months and ships
~2-year-old pinned SDK versions in its embedded snippets. Removing it
along with the bubbletea TUI package, the embedded SDK markdown, and the
go.mod entries it was the sole consumer of.

BREAKING CHANGE: `ldcli setup` is no longer available. See the README
and LaunchDarkly docs for the recommended onboarding path.

Co-authored-by: Cursor <cursoragent@cursor.com>
The setup wizard was the sole consumer of SendSetupStepStartedEvent,
SendSetupSDKSelectedEvent, and SendSetupFlagToggledEvent. With the
wizard gone, shrink the Tracker interface and remove the methods from
all four implementations and the corresponding test.

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant