Commit Graph
460 Commits
Author SHA1 Message Date
Saoud Rizwan 32d4750532 docs: update CLI publish skill tag lookup 2026-05-15 12:52:38 -07:00
Saoud Rizwan 3e66a49c53 ci: scope release git tags by product 2026-05-15 12:14:39 -07:00
Saoud Rizwan e65e5d5900 chore: rename GitHub Actions workflows (#10793) 2026-05-15 11:58:45 -07:00
Renee Huang f70725dd57 nit: small improvements to readme (#10779) 2026-05-14 23:04:09 -07:00
Saoud Rizwan 8bbd1ea0f1 chore(cli): release v3.0.3 2026-05-14 16:03:27 -07:00
Saoud Rizwan 9739e4d11f fix(cli): restore OpenAI compatible provider (#10761)
* fix(cli): restore OpenAI compatible provider

* fix(cli): canonicalize OpenAI compatible provider id

* fix(core): preserve migrated OpenAI compatible model metadata

* fix(core): keep OpenAI compatible migration scoped

* fix(cli): allow OpenAI compatible auth base URL

* fix(core): preserve stored model metadata
2026-05-14 15:57:38 -07:00
Robin NewhouseandSaoud Rizwan 8688678ea7 fix(cli): resolve macOS screenshot paths with narrow no-break space (#10691)
* fix(cli): resolve macOS screenshot paths with narrow no-break space

macOS Sonoma+ embeds U+202F (NARROW NO-BREAK SPACE) before AM/PM in
screenshot filenames like "Screenshot 2026-05-12 at 4.42.48\u202FPM.png".
When the path travels through clipboards, terminals, or anything that
normalizes whitespace, U+202F collapses to a regular space (U+0020) --
but the on-disk filename still contains U+202F, so readFileSync fails
with ENOENT and the paste handler silently drops the image.

Add resolveExistingImagePath() with a tiered Unicode-variant lookup
(narrow no-break space before AM/PM, NFD normalization, curly
apostrophe for localized names, and a parent-directory canonical-
whitespace scan as a last-resort fallback). Wire it into the TUI image
paste handler so dragged/pasted screenshots resolve correctly.

Tests added in image-paste.test.ts cover both the targeted AM/PM
variant and the generic NBSP-in-filename fallback path.

* fix(core): resolve macOS U+202F screenshot paths in read_files tool

The first commit on this branch fixed the CLI image-paste handler only.
A live repro from session 1778635423953_jac9b showed the same U+202F bug
on a different surface: the agent`s read_files tool. When the LLM was
asked about a macOS screenshot, it called read_files with the path text
from the user message -- which had a regular space where the on-disk
filename has U+202F -- and fs.stat returned ENOENT.

Extract the tiered Unicode-variant resolver into @cline/shared as
resolveExistingFilePath (the algorithm is generic, not image-specific).
Wire it into:

  - packages/core/src/extensions/tools/executors/file-read.ts (the
    new fix; read_files now tolerates U+202F / NFD / curly apostrophe
    variants before falling back to a parent-dir scan).
  - apps/cli/src/utils/image-attachments.ts (refactor to use the
    shared helper instead of duplicating the algorithm).

Regression tests in packages/shared/src/path-resolution.test.ts and
packages/core/src/extensions/tools/executors/file-read.test.ts; the
CLI tests from the first commit continue to pass via the shared helper.

Live verification against the real screenshot from the bug repro
(/Users/robin/Desktop/Screenshots/Screenshot 2026-05-12 at 6.18.40 PM.png,
on-disk name uses U+202F): direct invocation of the executor with a
regular-space path now returns an image block (42,296 bytes) instead
of throwing ENOENT.

* fix(shared): tighten unicode path variant probes

* fix(shared): move path resolver to storage exports

---------

Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com>
2026-05-14 12:03:58 -07:00
Robin NewhouseandSaoud Rizwan 59e5eac3e0 feat(cli): add --worktree flag to auto-create and run in a new git worktree ENG-2028 (#10730)
* feat(cli): add --worktree flag to auto-create and run in a new git worktree

Adds a --worktree flag to the CLI root command and 'cline task' that detects the git repo root for the current directory, creates a detached-HEAD worktree at ~/.cline/worktrees/<uuid>/<repoName>/ (matching Kanban's convention), and runs the task with cwd set to the new worktree.

The core implementation lives in src/utils/git-worktree.ts as createTaskWorktree() so any surface (CLI, VS Code, JetBrains, future tools) can use the same helper.

Works with --taskId and --continue so the legitimate workflow of 'resume this task in a fresh clean worktree to try a different approach' is supported. For --continue, the most-recent-task lookup uses the original cwd before the worktree rewrite so history resolves correctly.

Refs: ENG-2028

* address greptile review

- Distinguish 'git not installed' from 'not a git repo' so the error message points at the actual problem instead of misleading the user.

- Reject taskIds containing a null byte; would otherwise sneak past the '..' substring check on some kernels (e.g. 'safe\\0../escape').

- Reject `--worktree` without a prompt / --taskId / --continue before kanban auto-launches, so 'cline --worktree' no longer creates an orphan worktree that's abandoned if the user exits the welcome TUI without submitting a task.

* feat(cli): move worktree flag to sdk cli

* fix(cli): match kanban worktree ids

* fix(cli): handle piped worktree input

* chore: remove legacy worktree diff

---------

Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com>
2026-05-13 21:38:13 -07:00
alex-lum fd2c5e1a73 feat(sdk): add auth and provider-configured telemetry to SDK TUI onboarding (#10686)
* feat(core): add user.provider_configured event and captureProviderConfigured helper

Adds a new standardized telemetry event for when a user successfully
saves a BYO (bring-your-own) provider API key, separate from the
existing user.auth_* OAuth events.

- Add USER.PROVIDER_CONFIGURED = 'user.provider_configured' to the
  core event registry.
- Add captureProviderConfigured(telemetry, provider) helper that
  mirrors the { provider } payload shape of captureAuthSucceeded and
  routes through capture() (so it respects telemetry opt-out).
- Export captureProviderConfigured from @cline/core.
- Add focused tests for payload shape, provider=undefined fallback,
  and telemetry=undefined no-op.

* feat(core): thread optional telemetry through loginLocalProvider

Adds an optional telemetry parameter to loginLocalProvider so callers
can opt into standardized auth event emission without changing
existing behavior when no telemetry is passed.

- loginLocalProvider() accepts optional telemetry service.
- Forwards telemetry to loginClineOAuth, loginOcaOAuth, and
  loginOpenAICodex for the start/success/failure auth events.
- For Cline device-code login, passes telemetry into
  completeClineDeviceAuth().
- Telemetry remains optional throughout; existing callers continue to
  compile and run unchanged.

* feat(sdk-tui): emit auth and provider_configured telemetry in onboarding flows

Wires the SDK TUI onboarding login page into the standardized
telemetry events introduced in earlier commits.

- runOAuthAuthFlow() and runDeviceCodeAuthFlow() accept an optional
  telemetry service and forward it into loginLocalProvider so the
  start/success/failure auth events fire from the underlying core
  auth helpers.
- useOnboardingController() passes getCliTelemetryService() into the
  OAuth and device-code login paths so events use existing CLI
  metadata and respect telemetry opt-out.
- saveByoConfig() fires captureProviderConfigured for the BYO
  (bring-your-own API key) onboarding path right after the
  credential save. Invalid credentials still surface later as the
  existing task.provider_api_error on the first API call.
- Esc/cancel remains a local abort and does not synthesize extra
  failure telemetry unless the underlying auth helper itself emits
  an error.
- Adds a focused test confirming the SDK TUI auth path passes
  telemetry into the underlying auth helpers.

ENG-2018

* test(core): lock in telemetry opt-out policy for captureProviderConfigured

Adds captureProviderConfigured to the existing telemetry-policy
regression suite (`describe("telemetry policy: helpers respect
telemetry opt-out")`) so a disabled adapter is verified to drop the
event end-to-end through a real TelemetryService instance, matching
the coverage the other capture* helpers already have.

Addresses PR #10686 review feedback.

* test(core): include captureProviderConfigured in disabled-adapter policy test

The policy regression test that asserts a correctly-policed disabled
adapter drops all non-required events was missing a call to
captureProviderConfigured. Add it alongside the other captures and
include the expected dropped event in the assertion.
2026-05-13 18:05:27 -07:00
Renee Huang 1acb2b428c add skills to example readme as well (#10733) 2026-05-13 14:57:44 -07:00
Bee be55c3ac5d feat(cli): show session status in history view (#10685)
Display session status labels in CLI history output and refresh the
standalone history TUI so running sessions can update in place.

Merge refreshed status rows with existing hydrated metadata to preserve
titles and cost details while keeping status current.
2026-05-13 14:30:38 -07:00
Robin Newhouse d62077d59a feat(sdk): emit telemetry for compaction lifecycle events (#10694)
* feat(sdk): emit telemetry for compaction lifecycle events

Adds two SDK telemetry events to give us observability into the
compaction pipeline, which previously only fired a generic
`agent.status-notice` pass-through that carried no result data.

- `task.compaction_executed` fires after a successful compaction with
  strategy, mode, before/after message counts, before/after token
  counts, threshold, durationMs, provider, modelId, and agent identity.
- `task.compaction_skipped` fires when the configured strategy returns
  `undefined` (reason: "no_result"). Strategy exceptions still propagate.

`createContextCompactionPrepareTurn` is extended to accept `telemetry`
and `sessionId` from `CoreSessionConfig`; the CLI manual `/compact`
path forwards both so manual compactions emit events alongside auto.

Known gap (documented inline): plugin `registerMessageBuilder()` and
runtime hook `beforeModel` compactions bypass this wrapper and emit no
telemetry today.

Field names follow the existing `TASK.*` capture-function convention
(`provider`, `modelId`, `ulid`, `Partial<TelemetryAgentIdentityProperties>`)
so downstream PostHog joins remain consistent.

Fixes CLINE-2174

* test(sdk): cover compaction telemetry opt-out policy

* fix(cli): wire telemetry service into run config so compaction events fire
2026-05-13 10:22:38 -07:00
Robin Newhouse 99b65b421a test(cli): cover streaming token display update (#10726) 2026-05-13 10:02:08 -07:00
Saoud Rizwan c7f836bcd7 chore(cli): release v3.0.2 2026-05-13 09:22:51 -07:00
Saoud Rizwan 9e64e8966a fix(cli): prevent inflated TUI token count (#10725) 2026-05-13 09:16:53 -07:00
Ara 6b9f2c0803 chore(cli): prepare 3.0.1 release (#10717) 2026-05-13 07:43:27 -07:00
Tomás Barreiro 95db8638ad Fix Windows clean script (#10683)
* Replace rm -rf with rimraf

* Use a script instead

* Remove rimraf references
2026-05-12 21:53:13 -03:00
Saoud Rizwan 1f0246655c Fix typo in notice-dialog.tsx terminal message 2026-05-12 15:36:13 -07:00
Saoud Rizwan 4494a29541 Revise changelog for Cline CLI 3.0.0 release
Updated the changelog to reflect the new Cline CLI features and improvements.
2026-05-12 15:32:57 -07:00
Saoud Rizwan c91bafc73d ci(cli): wire CHANGELOG, README, and metadata into the publish flow (#10670)
Prepare cli-v3.0.0 as the first proper CLI release cut from cline/cline.

Workflow (.github/workflows/publish-cli.yaml):
- Add Get Previous CLI Tag step (git describe --match 'cli-v*' so the
  lookup ignores the VS Code extension's v* tags)
- Add Get Changelog Entry step (awk extraction from
  apps/cli/CHANGELOG.md, mirroring the extension's publish.yml)
- Switch to softprops/action-gh-release@v1 for the release step and
  paste the changelog content into the body
- Slack payload now includes the changelog body via toJSON plus an npm
  link, mirroring the extension's pattern
- Both the GitHub release compare link and the Slack compare suffix
  are guarded on prev_tag != '' so the first cli-v* release ships
  without a broken compare URL
- Drop bold formatting (**Full Changelog**, *Cline *) per the
  repo's no-bold rule

Publish script (sdk/apps/cli/script/publish-npm.ts):
- Copy apps/cli/README.md into the generated wrapper package so the
  npm registry listing has a real landing page
- Forward keywords, author, homepage, and bugs from the source
  package.json into the wrapper (the script previously only forwarded
  name/version/description/license/repository/bin/scripts/optionalDeps,
  so the metadata polish would have been invisible on the npm page)

Package metadata (sdk/apps/cli/package.json):
- Drop [EXPERIMENTAL] from description, align wording with the VS Code
  extension
- Add keywords, author, homepage, bugs

Changelog (sdk/apps/cli/CHANGELOG.md):
- Strip publication dates from all entries so the awk regex is just
  '^## [0-9]'
- Replace the bare 3.0.0 placeholder entry with a proper section
  framing this as the first release from the cline/cline monorepo

README and dev docs (sdk/apps/cli/README.md, DEVELOPMENT.md):
- Rewrite README as a user-facing npm landing page with header image
  and links table, aligned with the new cline/cline monorepo voice
  (Run Cline in your terminal — interactive chat or fully headless
  for CI/CD and scripting)
- Add Headless mode for CI/CD section with concrete pipe / JSON
  examples
- Cover all five registered connectors (Telegram, Slack, Google Chat,
  WhatsApp, Linear) with correct flag names
- Move dev-only sections (Publishing, Runtime Ownership, Connector
  runtime behavior, Logging Adapter) into DEVELOPMENT.md

Skill doc (sdk/apps/cli/.cline/skills/publish-cli/SKILL.md):
- Document the no-date header format and the workflow's awk-based
  changelog extraction
2026-05-12 15:19:34 -07:00
09885cb889 docs: rewrite README for monorepo structure (#10461)
* docs: rewrite README as product showcase and remove locales

Replaces the VS Code-only README with a product line overview
covering CLI, VS Code extension, JetBrains plugin, and SDK.
Adds dedicated feature sections for code editing, terminal
commands, Plan/Act mode, MCP and plugin extensibility,
multi-agent teams, messaging platform connectors, scheduled
agents, headless CI/CD mode, rules, and model provider support.

Removes the outdated locales/ directory with translated
README, CONTRIBUTING, and CODE_OF_CONDUCT files for 8 languages
that were no longer maintained.

* docs: add Kanban to product grid and reorganize as 2x2 layout

* docs: add line breaks at end of each product table cell

* docs: add line breaks at end of each product table cell

* docs: add more bottom padding to product table cells

* small updates to readme

* first attempt

* docs: fix README product links and examples

* docs: address Greptile README followups

* docs: add Vercel AI Gateway provider

* nit

* one more small change

* Update VS Code Extension link and status in README

* Fix link formatting for VS Code Extension in README

---------

Co-authored-by: Renee Huang <renee@cline.bot>
Co-authored-by: Arafatkatze <arafat.da.khan@gmail.com>
2026-05-12 14:29:17 -07:00
Bee f84893b8c4 fix(core): hide teammate sessions from history by default (#10662)
Filter teammate/subagent sessions out of session history unless explicitly
requested. Increase the backend scan limit to compensate for filtered rows so
root session listings can still satisfy the requested limit.
2026-05-12 12:10:51 -07:00
Ara 5a4e63f31f fix sdk app examples (#10660) 2026-05-12 11:32:20 -07:00
Tomás BarreiroandSaoud Rizwan 03f47045f3 Fix bun run lint (#10652)
* Fix bun run lint

* Fix lint issues

* revert

* fix(cli): avoid unstable TUI effect dependencies

* fix(cli): remove stale effect suppression

---------

Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com>
2026-05-11 19:47:50 -07:00
Saoud Rizwan 9b6fba6214 ci: move SDK publishing into cline/cline and retire legacy CLI infra (#10648)
* ci: migrate SDK publish workflows to repo root

Move publish-cli.yaml, publish-sdk.yaml, and test.yml (renamed to
sdk-test.yml) from sdk/.github/workflows/ to the repo root so GitHub
Actions actually picks them up. Adapt them to run with cwd sdk/ via
workflow-level defaults.run.working-directory, repoint repo guards
from cline/sdk to cline/cline, switch publish-sdk's nested test call
to sdk-test.yml, add path filters on sdk-test.yml so it doesn't fire
on extension-only PRs, and re-enable NPM_CONFIG_PROVENANCE now that
cline/cline is public.

Update the publish-cli skill with a cwd note so the documented
release commands keep working from sdk/.

* ci: remove legacy CLI publish workflows

The legacy publish chain (publish-cli-trusted.yaml dispatching into
npm-main.yaml + npm-nightly.yaml) publishes the old cli/ folder to
the same cline npm package the new SDK CLI is taking over. Leave
both wired up and a maintainer could accidentally publish an old
build over the handoff. Remove the dispatcher, the two callees, the
PR-preview tarball workflow (pack-cli.yml + build-cli-artifact.sh),
the TUI test workflow that only fed into them, and the npm packaging
script those workflows shared.

The cli/ source itself is left in place for a separate removal PR.

* chore: remove legacy CLI dev and eval helpers

With the legacy CLI publish workflows gone, the surrounding dev and
eval glue that only existed to feed those workflows is also dead.
Delete tests/e2e/cli/ (TUI tests), evals/smoke-tests/ (CLI smoke
evals), and the cline-evals-regression.yml workflow that drove them.

Trim the root package.json scripts that pointed at this infra:
- cli:link, cli:build, cli:run, cli:build:production, cli:watch,
  cli:test, cli:dev, cli:unlink (all delegated into cli/)
- compile-standalone-npm and postcompile-standalone-npm (only the
  removed npm-main/npm-nightly workflows called them)
- test:e2e:cli:tui (only the removed cli-tui-tests.yml called it)
- eval:smoke:*, which chained through cli:build + cli:link

Drop the trailing `cd ../cli && npx tsc --noEmit` segment from
check-types so the root typecheck stops walking into cli/.

The cli/ source itself stays in place for a separate removal PR.

* docs(evals): note removed smoke-tests layer

The evals/README.md and evals/ARCHITECTURE.md were structured around
smoke-tests as Layer 2 of the pyramid. With evals/smoke-tests/ and
the eval:smoke scripts gone, those references are stale. Add a top-
of-doc banner pointing at the removal rather than gutting both files
in this PR; a follow-up can scrub the structure when the framework
is updated for the new SDK CLI.

* chore(evals): restore smoke-tests, disable workflow pending rewire

The smoke-test scenarios in evals/smoke-tests/ are CLI-agnostic — each
scenario is just a config.json prompt plus optional template files —
so they're worth preserving across the legacy CLI sunset. Restore the
directory and the cline-evals-regression.yml workflow, but reduce the
workflow's triggers to workflow_dispatch only so it doesn't auto-run
in its current legacy-CLI-coupled form. Add a header comment pointing
at the rewire work.

Update the evals/README.md and evals/ARCHITECTURE.md banners from
"removed" to "temporarily disabled" to match reality.

Wiring the workflow at the new SDK CLI (and restoring the eval:smoke
root scripts) is left for whoever picks up the eval framework refresh.

* chore(evals): restore eval:smoke:run for ad-hoc smoke checks

The runner (`evals/smoke-tests/run-smoke-tests.ts`) shells out to
whichever `cline` is on $PATH, so it already works against the new
SDK CLI once `npm i -g cline` installs it. Add back just the single
`eval:smoke:run` script so docs and manual validation have a working
entrypoint. The build-and-link chain (`eval:smoke:build`, `eval:smoke`,
`eval:smoke:ci`) stays out — those need rewiring before they function.

Update the README/ARCHITECTURE banners accordingly.

* fix(ci): update SDK npm repository metadata

* fix(ci): tighten SDK publish workflows
2026-05-11 19:13:25 -07:00
Saoud Rizwan bff7bf1c49 feat(cli): add kanban command and notice dialog (#97)
* feat(cli): add kanban migration flow

* refactor(cli): clean up kanban update flow

* fix(cli): match legacy kanban process handling

* test(cli): suppress migration notice in e2e

* fix(cli): address kanban notice review

* fix(cli): refine kanban notice copy
2026-05-11 16:53:08 -07:00
Robin Newhouse cf9fbaf64a ENG-1970 Preserve provider auth for CLI manual /compact (#23)
* Fix CLI manual compaction provider auth

* Fix CLI compaction reasoning settings
2026-05-11 16:22:15 -07:00
Robin Newhouse 991fb5ca69 Add CLI compaction mode setting (#61)
* Add CLI compaction mode setting

* Address CLI compaction review feedback

* Limit CLI compaction mode aliases

* Simplify config panel navigation state

* Use session callback props directly
2026-05-11 23:12:20 +00:00
Saoud Rizwan 79f61bfde6 feat(cli): publish as cline instead of @cline/cli (#96)
* feat(cli): publish wrapper as cline

* chore(cli): publish only cline wrapper

* docs(cli): assume cline package handoff

* docs(cli): clarify cline wrapper publishing
2026-05-11 16:04:50 -07:00
Robin NewhouseandClaude Opus 4.7 9018513051 compaction: correctness pass for basic and agentic strategies (CLINE-2136) (#66)
* Truncate text block tool results in compaction

* Log context sizing diagnostics

* Use default reserve for compaction trigger

* Cap default compaction trigger at ninety percent

* Use provider-sized estimates for compaction

* Update manual compaction test for conservative estimates

* Truncate retained tool results during compaction

* Add live Codex compaction coverage

* Make basic compaction tool-pair atomic

Basic compaction's predicate-based removal could split a tool_use from its matching tool_result, leaving the assistant message with an orphaned tool_use. MessageBuilder then synthesized "Tool execution was interrupted before a result was produced." which the model echoed back to the user.

Make removal expand to all candidates linked by tool_use_id so tool_use and tool_result share a fate.

* Protect latest turn from basic compaction

* Extract token estimator to @cline/shared

agent-runtime had a local /4 estimator while compaction-shared had
a /3 estimator. Both compute the same concept (char-to-token rough
estimate) but with different bias. Reviewer noticed the discrepancy.

Centralize on /3 (slightly conservative, fires compaction trigger
earlier rather than later). Diagnostic logging in agent-runtime now
uses the same estimator, eliminating divergence.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Snap agentic compaction cut to a turn-start boundary

findCutIndex previously walked back by token budget and could land
between an assistant tool_use and its matching user tool_result.
The tool_use ended up folded into the summary while the tool_result
was preserved in the tail, producing an orphaned tool_result that
the provider rejects with:

  No tool call found for function call output with call_id ...

The same failure mode can occur in the inverse direction (orphaned
tool_use). Both leave the session unrecoverable.

Snap the cut to the nearest turn-start boundary at or before the
budget candidate. This keeps each turn — its typed user message
plus any tool_use/tool_result/assistant follow-ups — together,
either fully summarized or fully preserved.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-11 16:03:52 -07:00
Saoud Rizwan 069135f8b4 feat(cli): rename command alias to cline (#95) 2026-05-11 14:52:25 -07:00
BeeandSaoud Rizwan b65585c978 fix: propagate turn mode through session input ENG-1951 (#59)
* fix: propagate turn mode through session input

Forward the selected agent mode from interactive submissions through the
hub client/server boundary into runtime hosts. Validate supported modes so
queued or steered turns honor the user's chosen execution mode.

* mode switching promise

* docs: note hub turn mode fallback

---------

Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com>
2026-05-11 14:52:08 -07:00
dependabot[bot] 8224a82440 chore(deps): bump next (#69)
Bumps the npm_and_yarn group with 1 update in the /apps/examples/desktop-app directory: [next](https://github.com/vercel/next.js).


Updates `next` from 16.1.6 to 16.2.6
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v16.1.6...v16.2.6)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 16.2.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-11 23:45:18 +02:00
dependabot[bot] 6c189111c5 chore(deps): bump the cargo group across 2 directories with 2 updates (#70)
Bumps the cargo group with 1 update in the /apps/examples/desktop-app/src-tauri directory: [tauri](https://github.com/tauri-apps/tauri).
Bumps the cargo group with 1 update in the /apps/examples/menubar/src-tauri directory: [tauri](https://github.com/tauri-apps/tauri).


Updates `tauri` from 2.10.2 to 2.11.1
- [Release notes](https://github.com/tauri-apps/tauri/releases)
- [Commits](https://github.com/tauri-apps/tauri/compare/tauri-v2.10.2...tauri-v2.11.1)

Updates `rand` from 0.7.3 to 0.9.2
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/rand/compare/0.7.3...rand_core-0.9.2)

Updates `tauri` from 2.10.3 to 2.11.1
- [Release notes](https://github.com/tauri-apps/tauri/releases)
- [Commits](https://github.com/tauri-apps/tauri/compare/tauri-v2.10.2...tauri-v2.11.1)

---
updated-dependencies:
- dependency-name: tauri
  dependency-version: 2.11.1
  dependency-type: direct:production
  dependency-group: cargo
- dependency-name: rand
  dependency-version: 0.9.2
  dependency-type: indirect
  dependency-group: cargo
- dependency-name: tauri
  dependency-version: 2.11.1
  dependency-type: direct:production
  dependency-group: cargo
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-11 23:36:08 +02:00
Saoud Rizwan 9bef7613fa feat: add SDK cookbook examples with difficulty progression (#90)
* feat: add SDK cookbook examples with difficulty progression

Add three new example apps to apps/examples/ organized as a
difficulty ladder from beginner to advanced, similar to Cursor's
SDK cookbook. Includes a top-level README linking all examples.

- quickstart: minimal ~15 line agent, send a prompt, stream response
- cli-agent: interactive terminal chat with a shell tool
- code-review-bot: structured code review with custom tools and
  completion lifecycle

* feat: add multi-agent fan-out example with streaming web UI

Spawns three specialist agents in parallel, streams their responses
to the browser via SSE, then a synthesizer agent combines their
findings into a unified answer. Single-file server with inline HTML.

* chore: replace pnpm with bun in example docs and source

* fix: use claude-sonnet-4-6 model ID in examples

* fix(examples): use Cline keys in cookbook

* docs(examples): add SDK build step
2026-05-11 14:31:55 -07:00
Saoud Rizwan 9aac7f903d fix(cli): improve steering ux (#87)
* Improve queued prompt steering UX

* fix(cli): refine queued prompt steering

* fix(core): clear queued prompts on abort

* test(cli): isolate root keyboard routing helper
2026-05-11 14:20:13 -07:00
Robin Newhouse 4c5519af38 fix headless thinking stats stdout (#92) 2026-05-11 14:16:39 -07:00
Saoud Rizwan 025bdb0ef4 feat: add MCP OAuth support (#72)
* feat: add MCP OAuth support

* feat: add MCP OAuth to CLI wizard

* chore: remove desktop sidecar MCP OAuth change

* chore: remove architecture MCP OAuth note

* fix: validate MCP OAuth callback state

* fix: address MCP OAuth review feedback
2026-05-11 23:05:58 +02:00
Saoud Rizwan 92cb86d784 feat(cli): group providers by popularity (#64)
* feat(cli): group providers by popularity

* refactor(llms): expose popular providers as capability

* refactor(cli): preserve provider catalog order
2026-05-11 13:47:38 -07:00
Bee 2c455d9ca0 feat: gitignore read file plugin example (#54) 2026-05-11 13:22:21 -07:00
Robin NewhouseandClaude Opus 4.7 278d37b72a fix(llms): use limit.input as contextWindow when present (CLINE-2136) (#84)
* Use input limits for model context windows

* Fix maxTokens discount when input becomes contextWindow

The existing "if contextWindow === outputToken, discount to 5%" heuristic was a safety net for models.dev returning bogus context==output data. After switching contextWindow resolution to min(input, context), the equality check started misfiring on legitimate input==output configurations like gpt-5-pro, o3-pro, and codex-mini.\n\nPin the discount to the raw context limit so the original safety net behavior is preserved.

* Rename ModelInfo.contextWindow to maxInputTokens

The field has been used as an input-token budget throughout the
codebase (compaction trigger, status-bar utilization, gateway
passthroughs) but the name suggested combined input+output context.
After the catalog change to read limit.input from models.dev, the
field's semantics now match its actual use: a prompt ceiling.

Renames:
- ModelInfo.contextWindow -> ModelInfo.maxInputTokens
- GatewayModelDefinition.contextWindow -> maxInputTokens
- CoreCompactionConfig.contextWindowTokens -> maxInputTokens
- CoreCompactionContext.contextWindowTokens -> maxInputTokens

Internal consumers updated. User-facing settings schemas
(provider-settings, remote-config, RPC settings, test fixtures)
intentionally keep their existing names to avoid breaking user
configs and the API server contract.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Rename internal helpers and constants to match maxInputTokens

Naming-only refactor to complete the field rename. No behavior change.

- DEFAULT_CONTEXT_WINDOW_TOKENS -> DEFAULT_MAX_INPUT_TOKENS
- DEFAULT_CONTEXT_WINDOW -> DEFAULT_MAX_INPUT_TOKENS
- FALLBACK_MANUAL_COMPACTION_CONTEXT_WINDOW_TOKENS -> FALLBACK_MANUAL_COMPACTION_MAX_INPUT_TOKENS
- resolveContextWindowLimit -> resolveMaxInputTokens
- getContextWindowTokens -> getMaxInputTokens
- resolveModelContextWindow -> resolveModelMaxInputTokens
- hasContextWindow -> hasMaxInputTokens
- formatContextWindow -> formatTokenCount

Also drops the legacy snake_case context_window fallback in
resolveModelMaxInputTokens, since this PR is a hard break and
no downstream data path emits that shape any longer.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Rename TokenConfig.maxContextTokens to maxInputTokens

Last consumer of the 'context tokens' naming, used internally to
override a model's input ceiling. Renaming for consistency with
ModelInfo.maxInputTokens.

User-facing settings.contextWindow stays as-is and now maps to
TokenConfig.maxInputTokens at the boundary.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Keep context window alongside input limits

* Fallback to contextWindow for interactive compaction

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-11 20:02:18 +00:00
Saoud Rizwan dadf57a029 feat: add MCP server settings toggles (#82)
* feat: add MCP server settings toggles

* fix: address MCP manager review feedback
2026-05-11 12:39:51 -07:00
Saoud Rizwan e107f6eea9 fix(cli): skip API key prompt for Codex CLI provider (#83)
* fix(cli): skip API key prompt for Codex CLI provider

* fix(cli): address Codex CLI review feedback
2026-05-10 12:11:33 -07:00
Ara ab2a791e84 Separate aggregate team usage (#4)
* fix: aggregate agent team usage

* fix: separate aggregate team usage

* fix: address usage aggregation review feedback

* fix: consolidate session usage summary

* fix: project and persist aggregate usage
2026-05-08 16:05:56 -07:00
Tomás Barreiro 7ab12dbde8 Replace the DEFAULT_API_BASE_URL with a dynamic one derived from the env (#80)
* Introduce Cline environments to the SDK

* Add partial to the process env

* Replace the default cline api url with a dynamic one

* Make the default base url dynamic

* add tests
2026-05-08 23:45:56 +02:00
BeeandBarreiroT a91e9f1caf refactor: promote remote-config primitives from enterprise (#65)
* feat: promote remote-config primitives from enterprise

Move remote-config schemas, managed instruction materialization, blob upload metadata, and OpenTelemetry config normalization into @cline/shared so managed configuration can be reused without an enterprise package dependency. Update architecture guidance and runtime coverage for rule/workflow materialization.

* patches

---------

Co-authored-by: BarreiroT <tomasmbarreiroi@gmail.com>
2026-05-08 23:19:57 +02:00
Tomás Barreiro 0e9d36bb54 Centralize the API url (#77)
* Centralize the API url

* Export constant in the index.browser
2026-05-08 22:12:00 +02:00
Saoud Rizwan edf5ec52ba fix(cli): abort active turn before mode switch (#71) 2026-05-07 23:02:40 -07:00
Renee Huangandabeatrix e215d3d91c chore: rename example folders; fix references (#60)
* rename folders

* fix examples reorg references

* move over files

* having agent fixing and validating all examples are still working

* fix sidecar paths

---------

Co-authored-by: abeatrix <beatrix@cline.bot>
2026-05-07 20:38:04 -07:00
Robin Newhouse 2b2ff9667d Fix Codex OAuth model list (#63) 2026-05-07 20:27:25 -07:00