Skip to content

chore(main): release 3.0.0#648

Merged
nieblara merged 1 commit intomainfrom
release-please--branches--main
Apr 15, 2026
Merged

chore(main): release 3.0.0#648
nieblara merged 1 commit intomainfrom
release-please--branches--main

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions bot commented Feb 23, 2026

🤖 I have created a release beep boop

3.0.0 (2026-04-15)

⚠ BREAKING CHANGES

  • agent-forward CLI — TTY-aware output, structured errors, --fields, table formatting REL-12752 (#660)

Features

  • add --dry-run flag to toggle-on, toggle-off, and archive commands (#677) (ad4ab2d)
  • add --json flag as shorthand for --output json (#656) (65d1bc3)
  • add --output markdown format (#678) (9872c28)
  • add hand-rolled get-sdk-active command for environments (#671) (b3c447b)
  • add import project API endpoint (#643) (8623f37)
  • agent-forward CLI — TTY-aware output, structured errors, --fields, table formatting REL-12752 (#660) (ecf7705)
  • REL-12753: adding agent flag for agent telemetry (#659) (a7206fd)
  • REL-12779: Add a command to sign up that directs the user to the sign up page (#665) (2f0042f)

Bug Fixes

  • add permissions for release-please job (#680) (0f2645d)

This PR was generated with Release Please. See documentation.


Note

Low Risk
This is a release-only PR that bumps version metadata and updates release docs; no runtime code changes are included, so risk is low beyond packaging/versioning correctness.

Overview
Bumps ldcli from 2.2.0 to 3.0.0 in package.json and .release-please-manifest.json.

Updates release documentation by adding the 3.0.0 section to CHANGELOG.md (including breaking-change notes and feature list) and refreshing PROVENANCE.md examples/asset names to reference 3.0.0.

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

Additional info

ldcli 3.0

ldcli 3.0 is revising the LaunchDarkly CLI for an agent-forward world. The CLI now defaults to structured JSON output when called outside a terminal, ships actionable error messages, and gives agents and scripts fine-grained control over response shape, while giving humans richer, table-formatted output when they're working interactively.

Migrating from v2.x

The only change that can break existing usage is the new TTY-aware default output. If you pipe or redirect ldcli output in scripts or CI and were relying on the plaintext format without an explicit --output flag, the output is now JSON.

Quick fixes (pick one):

# Option 1: be explicit in your command
ldcli flags list --project my-proj --output plaintext

# Option 2: set an environment variable
export LD_OUTPUT=plaintext

# Option 3: force TTY default globally
export FORCE_TTY=1

If you already pass --output, --json, set LD_OUTPUT, or have output in your config file, nothing changes. The full resolution order is:

--json > --output > LD_OUTPUT > config file > TTY-based default

Plaintext list output for flags, projects, environments, members, and segments also changed from * name (key) bullets to aligned tables. If you parse plaintext output programmatically, switch to --json and use jq.

Breaking Changes

Default output is now JSON when stdout is not a TTY

When ldcli detects a non-interactive context (piped, CI, agent), the default --output switches from plaintext to json. Set FORCE_TTY=1 or LD_FORCE_TTY=1 to restore the previous default. Explicit --output and --json flags always take precedence. (#660)

Plaintext list output renders as tables

List responses for flags, projects, environments, members, and segments now display as aligned tables with typed columns instead of bullet points. Singular resources render as key-value blocks. JSON output is unchanged. (#663)

Features

--json flag

Shorthand for --output json, matching the convention used by gh, kubectl, and glab. (#656)

--fields flag

Filter JSON output to specific top-level fields. A single flag response can be large with per-environment targeting; --fields key,name,kind returns only what you need. Works on both singular and collection responses, preserves totalCount and _links, and never filters error responses. (#662)

ldcli flags list --project my-proj --json --fields key,name,kind

--dry-run flag for flag commands

The toggle-on, toggle-off, and archive commands now support --dry-run, which validates the change without persisting it and returns a preview of the result. Useful as a safety rail for agents operating with broad permissions. (#677)

ldcli flags toggle-on --project my-proj --flag my-flag --environment prod --dry-run

Actionable error messages

Errors now preserve the HTTP status code and include a Suggestion: line with guidance for common failures (401, 403, 404, 409, 429). Empty or non-JSON error bodies from the API are normalized into structured JSON with code, message, and statusCode. (#661)

Agent telemetry

Analytics events now include an agent_context property indicating whether the CLI was invoked by an AI agent or a human. Detects Cursor, Claude Code, Codex, Devin, Windsurf, Cline, and Aider via environment variables. Set LD_CLI_AGENT to self-identify from custom agents. Telemetry only — no behavioral change. (#659)

ldcli signup command

Opens the LaunchDarkly signup page in the browser. Useful for agent-guided onboarding flows. (#665)

ldcli environments get-sdk-active command

Checks whether an SDK has connected to a given environment. Supports --sdk-name and --sdk-wrapper-name filters. (#671)

ldcli environments get-sdk-active --project my-proj --environment production
# SDK active: true

-o markdown output format

A new --output markdown option produces GitHub-flavored markdown. flags get renders a heading, per-environment status table, and metadata bullets; list commands render markdown tables; other resources use column-registry-aware bullet lists. Designed for LLM/AI workflows where tools consume CLI output and markdown is natively understood. (#644)

ldcli flags get --project default --flag my-flag -o markdown

@github-actions github-actions bot force-pushed the release-please--branches--main branch 3 times, most recently from 630eb62 to 6161600 Compare March 11, 2026 19:49
@github-actions github-actions bot force-pushed the release-please--branches--main branch 4 times, most recently from 64bf8c9 to cbcc32f Compare March 25, 2026 12:32
@github-actions github-actions bot changed the title chore(main): release 2.3.0 chore(main): release 3.0.0 Apr 15, 2026
@github-actions github-actions bot force-pushed the release-please--branches--main branch from cbcc32f to 3a5bece Compare April 15, 2026 15:21
@nieblara nieblara merged commit caa1fd2 into main Apr 15, 2026
8 checks passed
@nieblara nieblara deleted the release-please--branches--main branch April 15, 2026 18:52
@github-actions
Copy link
Copy Markdown
Contributor Author

🤖 Created releases:

🌻

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant